Процедуры в Паскале (Pascal) используются очень часто. Основное отличие от функций состоит в том, что процедура может не возвращать несколько параметров. Функция возвратит лишь одно значение. Для примера я использовал решение квадратного уравнение при помощи процедуры.
Известно, что нужно вычислить дискриминант и сравнить его с нулем. На основании этого будет приняты шаги в последующей обработке. У меня получилась процедура:
[php]
Procedure equation(a,b,c:Real);
var d1:Real;
begin
d1:=b*b — 4*a*c;
if d1<0 then WriteLn(‘no real roots’);
if d1=0 then WriteLn(‘one root’);
if d1>0 then WriteLn(‘two roots’);
end;
[/php]
Процедура как и функция описывается перед разделом описания переменных. На входе три переменные a,b,c. Считаю дискриминант d1:=b*b — 4*a*c; . Далее простые условные операторы. Проверяю. В программе задаю: equation(1,-6,9); . Выводит — один корень (one root). Но этот метод является не правильным. Нужно отделить решение от вывода. Соответственно вместо WriteLn(‘… root..’); лучше использовать флаг. Он будет принимать некое значение, а другая процедура будет заниматься выводом. Пример полностью выглядит следующим образом:
[php]
Program proc;
Procedure equation(a,b,c:Real);
var d1:Real;
begin
d1:=b*b — 4*a*c;
if d1<0 then WriteLn(‘no real roots’);
if d1=0 then WriteLn(‘one root’);
if d1>0 then WriteLn(‘two roots’);
end;
//Var x:Real;
Begin
equation(1,-6,9);
End.
[/php]
. дискриминант с процедурой делфи процедура в паскаль примеры процедуры паскаль примеры процедура паскаль примеры процедур в паскале