Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];

Вниз

КАК ТАКОЕ МОЖЕТ БЫТЬ?????   Найти похожие ветки 

 
x.pro   (2005-12-23 19:26) [0]

В общем такая штука. Есть код для вычисления интеграла от определенной функци. На форме есть три Edit"a: edLowEdge (нижняя граница интеграрования), edEPS (точность), edRes1 (ответ). Обратите внимания на использование функции integ. У меня в D7 работает. в универе в turbopascal"e тоже раюотает. что это такое? как такое объяснить? Или функция может вызываться как процедура? или может я  уже совсем ламер?

procedure TForm1.Button1Click(Sender: TObject);
var x,x1,h,W,W1,W2,Ro:real;

   function f(x:real):real;
   begin
       result:=cos(5*sin(x));
   end;

   function integ(var W1,W2:real): real;
   var n,i: integer;
   begin
   n:=10;
       h:=(pi-StrToCurr(edLowEdge.Text))/n;
       for i:= 0 to n-1 do
       begin
           x:=StrToCurr(edLowEdge.Text)+h*(i+0.5);
           W1:=(W1+f(x))
       end;

       W1:=W1*h;
       n:=n*2;
       h:=(pi-StrToCurr(edLowEdge.Text))/n;

       for i:= 0 to n-1 do
       begin
           x:=StrToCurr(edLowEdge.Text)+h*(i+0.5);
           W2:=(W2+f(x));
       end;
       W2:=W2*h;
   end;

begin
   W1:=0;
   W2:=0;
   repeat
         integ(W1,W2);
         Ro:=(W2-W1)*4/3;
         W:=W1+Ro;
   until abs(Ro/W2)<StrToCurr(edEps.Text);
edRes1.Text := CurrToStr((1/pi)*W);
end;


 
TUser ©   (2005-12-23 19:30) [1]

Может. Кажется это называется "расширенный синтаксис вызова функций". Очень часто применяется для апи.


 
x.pro   (2005-12-23 19:33) [2]

Вот чего не знаю, того не знаю. Я не такой крутой программист. Так, пока, учусь. Но как так можно вункцию вызывать? Ума не приложу. И самое главное, оно работает! Наш препод тоже диву дается.


 
Eraser ©   (2005-12-23 19:36) [3]


> x.pro   (23.12.05 19:26)


> Или функция может вызываться как процедура?

Конечно может. Но так не всегда было...


 
x.pro   (2005-12-23 19:37) [4]

> Eraser ©   (23.12.05 19:36) [3]

Т.е? что вы имеете ввиду? что значит не всегда было?


 
Eraser ©   (2005-12-23 19:43) [5]


> x.pro   (23.12.05 19:37) [4]


> что значит не всегда было?

если не ошибаюсь в TP нельзя было вызвать функцию "вникуда", т.е. не получив от неё результат в какую-либо переменную, хотя может я что-то путаю...


 
PZ   (2005-12-23 19:45) [6]

Все нормально. Параметры функции определены как var, т. е. возвращаются через ссылку. Если определить функцию как
  function integ(W1,W2:real): real;, то Ваш загадочный эффект исчезнет.


 
vvvaaa   (2005-12-23 19:48) [7]

Разница между функцией и процедурой введена только мнемоникой языков высокого уровня. После компиляции этой разницы не будет. В данном примере все правильно, а так как результат функции не используется ее можно безболезненно переименовать в процедуру.


 
TUser ©   (2005-12-23 19:56) [8]


> если не ошибаюсь в TP нельзя было

Можно. По крайней мере в 6-7 было.


 
x.pro   (2005-12-23 20:10) [9]

Действительно!

Вот спасибо!



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.045 c
6-1128587101
Pul
2005-10-06 12:25
2006.01.22
CONNECTION CLOSED GRACEFULLY


14-1135576401
vidiv
2005-12-26 08:53
2006.01.22
Иконка в трей


2-1135758308
Tomkat
2005-12-28 11:25
2006.01.22
модульное приложение


6-1129205876
Kimer
2005-10-13 16:17
2006.01.22
Отправка e-mail


5-1122534983
Fedja2003
2005-07-28 11:16
2006.01.22
Редактор компонентов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский