Процедуры (PascalABC.NET)

Материал из Информационная безопасностя
Версия от 19:50, 21 мая 2023; Безуглов Сергей (обсуждение | вклад) (Новая страница: «{{TOCRight}} Процедура состоит из заголовка процедуры, начинающегося ключевым словом procedure и...»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску

Процедура состоит из заголовка процедуры, начинающегося ключевым словом 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 – как Сред.

Если процедура вызывается без параметров, то скобки после её имени можно не указывать.