Pascal. Процедура (PROCEDURE)

В Паскале подпрограммы называются процедурами и функциями и описываются в разделе с тем же названием.

Процедура имеет такую же структуру, как и программа, но с двумя отличиями:

  1. Заголовок процедуры имеет другой синтаксис и имеет служебное слово procedure;
  2. Описание процедуры заканчивается точкой с запятой.

Все имена, описанные в программе до процедуры, действуют во всей программе и в любой ее подпрограмме (если они там не описаны заново). Они называются глобальными, в отличие от локальных имен, описанных в процедуре и действующих лишь в ней.

Данные для обработки могут передаваться процедуре через глобальные имена или через аргументы процедуры. В процедуре каждый аргумент имеет свое имя – формальный параметр, описываемый в заголовке процедуры по схеме:

procedure имя (список описания формальных параметров)

Описание формальных параметров может иметь вид:

список имен:тип

или

var список имен:тип

В первом случае говорят о параметрах – значениях (как правило, их используют для передачи входных данных), во втором – о параметрах – переменных (используют для результатов работы процедуры). В простейшем случае заголовок процедуры может содержать только имя процедуры.

Оператор вызова структуры имеет вид:

имя процедуры (список выражений);

Эти выражения называются фактическими параметрами. Их список должен точно соответствовать списку описаний формальных параметров процедуры. Во время вызова процедуры параметру – значению присваивается значение фактического параметра. Фактическим параметром здесь может быть любое выражение соответствующего типа.

Фактический параметр, соответствующий параметру переменной, должен быть переменной того же типа.

Пример: составим программу, которая с помощью строки символов разделит экран на части, где напечатает таблицу квадратных корней для чисел 1, 2, ..., 10 и таблицу натуральных логарифмов для чисел 1, 2, ..., 5.

Печать строки символов оформим как процедуру. Так как никакую информацию передавать из процедуры в программу не надо, то аргументы процедуры (вид и количество символов) будут описаны как параметры – значения.

program section;
var x: integer:
procedure line (a: integer; c: char);
var j: integer;
begin
for j: =1 to a do write(c);
writeln
end;
begin
line (35, ‘-‘);
<i>writеln(‘</i>таблица квадратных корней<i>’);</i>
line (35, ‘-‘);
for x: =1 to 10 do writeln(x: 8, sqrt(x): 8: 4);
line (35, ‘-‘);
<i>writеln(‘</i>таблица натуральных логарифмов’<i>)</i>;
line (35, ‘-‘);
for x:=1 to 5 do writeln(x:8, ln(x):8:4);
line (35, ‘*‘);
end.