Главная страница
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.054 c
1-1134642411
IceBeerg
2005-12-15 13:26
2006.01.22
Полупрозрачная форма и текст на ней.


1-1134721882
Alex_KV
2005-12-16 11:31
2006.01.22
Перевод заголовочного файла С


3-1131524624
Mikolla
2005-11-09 11:23
2006.01.22
D7 - Oracle


1-1135074153
Andron.Ru
2005-12-20 13:22
2006.01.22
ФАЙЛЫ HELP!!


2-1136449174
JOYMAN
2006-01-05 11:19
2006.01.22
Поверх всех окон сделать