Реферат: Подпрограммы (процедуры и функции)
End;
Здесь необходимо детализировать функцию Number, возвращающую количество цифр в записи натурального числа (т.к. функция Impossible содержит ее вызов, то в разделе описаний функция Number должна ей предшествовать).
Function Number(N : Integer) : Integer;
Var Vsp : Integer;
Begin
Vsp := 0;
While N > 0 Do
Begin
Vsp := Vsp + 1; N := N Div 10
End;
Number := Vsp
End;
Наконец, последняя процедура.
Procedure Change(Var N : Integer);
Var Kol, P, S, R : Integer;
Begin
Kol := Number(N);
P := N Mod 10; {последняяцифра}
If Kol > 1 Then
S := N Div Round(Exp((Kol - 1) * Ln(10)))
Else S := 0; {перваяцифра}
R := N Mod Round(Exp((Kol - 1) * Ln(10))) Div 10;
N := P * Round(Exp((Kol - 1) * Ln(10))) + R * 10 + S
End;
Возможны также подпрограммы, которые вызывают сами себя. Они называются рекурсивными. Создание таких подпрограмм является красивым приемом программирования, но не всегда целесообразно из-за чрезмерного расхода памяти ЭВМ.
Пример 3. Найти максимальную цифру в записи данного натурального числа.
Program MaxDigit;
Type NaturLong = 1..(High(LongInt));
Digit = 0..9;