Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.22;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.053 c
1-1134747917
злобная танька
2005-12-16 18:45
2006.01.22
сохранение картинок вместе с данными


2-1136134118
XporlnD
2006-01-01 19:48
2006.01.22
Установка компонента


3-1132758007
Vikusik
2005-11-23 18:00
2006.01.22
inser+insert + ..... +insert = 0 md free memory


1-1134717009
VEZ
2005-12-16 10:10
2006.01.22
Копирование классов


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