Существуют 2 вида подпрограмм: процедуры и ф-ции. Более унив-ым видом явл-ся процедура. Ф-ция м/б преобразована в процедуру. Обратное не верно. Если подпрог-ма возвращает един-ое знач простого или строкового типа, целесообразно ее оформить как ф-цию. В остальных случаях - процедура.
Структура процедуры: procedure идент-тор процедуры (список формальных параметров);
{Раздел описаний} - здесь м/б описаны const, переменные, типы, др. процедуры и ф-ции.
Begin {раздел операторов} - любые операторы Pascal; end. В таком виде она будет записана в разделе описаний. Обращение к процедуре: обращ-ся можно к ней как в осн-ой прог-ме, так и в процедурах и ф-циях, j расположены ниже. Идент-тор процедур (список фактических параметров; формальные параметры задаются с указанием типа, а фактические просто перечис-ся без указания типа). Формальные параметры — это идент-торы входных данных для подпрограммы. Если формальные параметры получают конкретные значения, то они называются фактическими.
Пример процедуры. Используем алг-м нахождения наибольшего общего делителя двух натур-ых чисел в качестве вспом-ого при решении задачи: составить прог-му вычитания дробей (a, b, c, d — натур-ые числа). Результат представить в виде обык-ой несокр-ой дроби.
Program Sub;
Var A, B, C, D, G, E, F: Integer;
Procedure Nod (M, N: Integer; Var K: Integer);
Begin
While M <> N Do
If M > N Then M: = M - N Else N: = N - M;
K:= M
End;
Begin
Write('Вв числ-ли и знам-ли дробей:');
ReadLn(A, B, C, D);
E := A * D - B * C;
F := B * D;
If E = 0 Then WriteLn(E)
Else
Begin
Nod(Abs(E), F, G);
E := E Div G;
F := F Div G;
WriteLn('Ответ: ', E, '/', F)
End
End.
Структура ф-ций:
Function идент-тор ф-ции (список формальных параметров): тип результата;
{раздел описаний};
Begin {раздел операторов}
Идент-тор ф-ции:=выражение
End.
Обращение к ф-ции может встречаться в любом месте, где может присутствовать выр-ие. Ф-ция самостоятельно вызываться не может, как отдельный оператор, она вызы-ся там, где уместно ЛВ.