Процедуры в Паскале на примере

Процедуры в Паскале (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]

. примеры процедур в паскале
. процедура паскаль
Комментирование и размещение ссылок запрещено.