Процедуры (PascalABC.NET)
Процедура состоит из заголовка процедуры, начинающегося ключевым словом procedure и тела процедуры. В заголовке указывается имя процедуры и перечисляются ее формальные параметры, если они есть. В теле находится код, реализующий некоторый алгоритм.
1 procedure Имя(параметр1; параметр2; …);
2 begin
3 тело процедуры
4 end;
Процедура всегда должна быть записана выше по тексту, чем основная программа, поскольку в языке Pascal описание всегда предшествует обращению.
Рассмотрим процедуру, находящую максимум, минимум и среднее значение для N случайных целых чисел, принадлежащих отрезку [-99;99].
1 procedure MyFirst(n: integer; var mn, mx: integer; var m: real);
2 begin
3 (mn, mx) := (100, -100);
4 var s := 0;
5 loop n do
6 begin
7 var k := Random(-99, 99);
8 s += k;
9 if k < mn then
10 mn := k
11 else if k > mx then
12 mx := k
13 end;
14 m := s / n
15 end;
Кроме заголовка здесь для вас нет ничего нового. Параметр n принимаем по значению, остальные – по ссылке. Поскольку параметры уже описаны в заголовке, в теле процедуры их описывать не надо (более того, это будет считаться ошибкой).
А теперь вызовем эту процедуру для различных значений n.
1 begin
2 var Макс, Мин: integer;
3 var Сред: real;
4 MyFirst(10, Мин, Макс, Сред); // вызов процедуры
5 Writeln('min = ', Мин, ', max = ', Макс, ', среднее = ', Сред);
6 MyFirst(100, Мин, Макс, Сред); // вызов процедуры
7 Writeln('min = ', Мин, ', max = ', Макс, ', среднее = ', Сред);
8 MyFirst(1000, Мин, Макс, Сред); // вызов процедуры
9 Writeln('min = ', Мин, ', max = ', Макс, ', среднее = ', Сред);
10 MyFirst(1000000, Мин, Макс, Сред); // вызов процедуры
11 Writeln('min = ', Мин, ', max = ', Макс, ', среднее = ', Сред);
12 end.
min = -89, max = 98, среднее = 13.5 min = -97, max = 99, среднее = -4.08 min = -99, max = 99, среднее = 0.506 min = -99, max = 99, среднее = 0.048458
Как видите, с ростом n минимум и максимум все ближе подбираются к границам отрезка, а среднее значение – к нулю. При вызове MyFirst значение первого параметра копируется в формальный параметр n, параметр mn понимается процедурой как Мин, mx – как Макс, а m – как Сред.
Если процедура вызывается без параметров, то скобки после её имени можно не указывать.