Цитата:
Сообщение от "Программист"
Чем процедура отличается от функции? что лучше?
|
Цитата:
Сообщение от "Программист"
Я прочитал но такое ощущение как будто это одно и то же
|
Как говорится, "похоже, да не то же".
Попробую показать наглядно.
Код:
Var
T,x1,x2:Real;
n:byte;
...
Function QQQ(z1,z2:real; m:byte):Real;
begin
...
end;
Begin
T:=QQQ(x1,x2,n);
End.
В данной "программе" описана функция QQQ от трёх переменных: двух вещественных и одной целой. Значением функции является вещественная величина (одна!) QQQ, с которой следует обращаться также, как и со стандартными функциями:
Код:
Y1:=Sin(0.74);
Y2:=QQQ(x1,0.25,7);
Теперь рассмотрим процедуру:
Код:
Var
T,x1,x2:Real;
n:byte;
D:boolean;
S:String;
...
Procedure QQQ(z1,z2:real; m:byte; var b:boolean; var R:String);
begin
...
end;
Begin
QQQ(x1,x2,n,D,S);
End.
Отличия от функции:
1. На выходе процедуры могут формироваться не одна, а сразу несколько переменных, причем разных типов. При описании процедуры в перечне ее параметров входные задаются так же, как и в функции, а выходным предшествует служебное слово "var". С массивами, правда, сложнее, но этого пока трогать не будем.
2. Имя процедуры НЕ является, в отличие от функции, идентификатором переменной. При обращении к процедуре из тела программы ее имя есть команда вызова.
Сейчас сделаю вариант программы с процедурой, как Вы просите. Надеюсь, станет понятнее.
P.S. Вопрос "что лучше?" не просто бессмысленный, а АБСОЛЮТНО бессмысленный. Лучше то, что больше подходит к конкретной ситуации. Единственно - если подпрограмма вычисляет одну-единственную переменную, то целесообразнее использовать функцию. Просто удобнее.