Реферат: Подпрограммы (процедуры и функции)
While M <> N Do
If M > N Then M := M - N Else N := N - M;
Nod := M
End;
Итак, после списка параметров указывается тип значения функции, а в теле функции хотя бы один раз встречается присваивание переменной, имя которой совпадает с именем функции, соотответствующего значения.
Вызов функции будет следующим:
G := Nod(Abs(E), F);
Вообще, вызов функции может присутствовать в выражении, стоящем: в правой части оператора присваивания, в процедуре вывода, в качестве фактического параметра в вызове другой подпрограммы и т.д.
При решении задач целесообразно проанализировать условие, записать решение в крупных блоках (не являющихся операторами Pascal), детализировать каждый из блоков (записав в виде блоков, возможно, по-прежнему не операторов Pascal), и т.д., продолжать до тех пор, пока каждый из блоков не будет реализован с помощью операторов языка.
Пример 2. Дано натуральное число n. Переставить местами первую и последнюю цифры этого числа.
Program Integ;
Var N : Integer;
Begin
Write('Введите натуральное число: ');
ReadLn(N);
If Impossible(N)
Then WriteLn('Невозможно переставить цифры, возникнет переполнение')
Else Begin
Change(N);
WriteLn('Ответ: ', N)
End;
End.
Можно заметить, что необходимо детализировать логическую функцию Impossible, которая диагностирует, возможна ли перестановка, и процедуру Change, которая эту перестановку (в случае, если она возможна) выполняет.
Function Impossible(N : Integer) : Boolean;
Begin
If Number(N) < 5
Then Impossible := False
Else Impossible := (N Mod 10 > 3) Or
(N Mod 10 = 3) And