Параметры

Подпрограмма-процедура

Подпрограмма-процедура предназначена для выполнения какой-либо логически законченной последовательности действий.

Описание процедуры начинается с заголовка:

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

Далее могут идти такие же разделы, что и в основной программе.

Вызов процедуры осуществляется с помощью оператора:

имя_процедуры [(список фактических параметров)];

Пример использования процедур без параметров:

Программа организует вывод на экран меню, ввод массива, вычисление суммы элементов массива, вывод массива и выход из программы.

Код программы:

Program Pp;

Uses crt;

Const n=6;

Type

TMas=array[1..n] of real;

Var

a:TMas;

i:byte;

Procedure Menu;

begin

clrscr;

writeln('Выберите пункт меню');

writeln('1. Ввод массива');

writeln('2. Вычисление суммы');

writeln('3. Вывод массива');

writeln('4. Выход');

end;

Procedure In_Mas;

begin

for i:=1 to n do

begin

write('Введите а[', i, ']=');

readln(a[i])

end;

end;

Procedure Out_Mas;

begin

for i:=1 to n do

begin

writeln('а[', i, ']=', a[i]:6:3);

end;

end;

Procedure Sum_Mas;

var

s:real;

begin

s:=0;

for i:=1 to n do

s:=s+a[i];

writeln('s=', s:6:3);

end;

begin

repeat

Menu;

case readkey of

'1':In_Mas;

'2':Sum_Mas;

'3':Out_Mas;

'4':Exit

end;

writeln('Нажмите любую клавишу...');

readkey;

until False;

end.

Результаты работы программы:

Выберите пункт меню

1. Ввод массива

2. Вычисление суммы

3. Вывод массива

4. Выход

 

Выберите пункт меню

1. Ввод массива

2. Вычисление суммы

3. Вывод массива

4. Выход

Введите а[1]=2

Введите а[2]=46.7

Введите а[3]=4.2

Введите а[4]=8.4

Введите а[5]=5.7

Введите а[6]=2.8

Нажмите любую клавишу...

 

Выберите пункт меню

1. Ввод массива

2. Вычисление суммы

3. Вывод массива

4. Выход

s=69.800

Нажмите любую клавишу...

 

Выберите пункт меню

1. Ввод массива

2. Вычисление суммы

3. Вывод массива

4. Выход

а[1]= 2.000

а[2]=46.700

а[3]= 4.200

а[4]= 8.400

а[5]= 5.700

а[6]= 2.800

Нажмите любую клавишу...

Обмен информацией между основной программой и подпрограммой осуществляется с помощью параметров.

Фактические параметры – это реальные величины, над которыми должны быть выполнены действия, описанные в подпрограмме. Фактические параметры перечисляются через «,».

Формальные параметры – это переменные, которые используются в подпрограмме для описания действий над данными.

Формальные параметры можно разбить на категории:

- параметры-значения;

- параметры-переменные;

- параметры-процедуры;

- параметры-функции.

При передаче параметров по значению подпрограмма получает копию переменной. Изменение копии внутри подпрограммы не влияет на оригинал. При вызове подпрограммы фактические параметры вычисляются и используются как начальные значения формальных параметров, т. е. осуществляется подстановка значений. Параметры-значения используются для передачи исходных данных в подпрограмму.

При передаче параметров-переменных в подпрограмму передается адрес переменной, таким образом, подпрограмма получает доступ к самой переменной и может ее изменять. Параметры-переменные могут использоваться как для передачи исходных данных, так и для сохранения результата.

Формальные параметры перечисляются через «;» и задаются в виде:

<имя параметра>:<тип> для параметров-значений;

var <имя параметра>:<тип> для параметров-переменных.

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

Формальные и фактические параметры должны соответствовать:

- по количеству;

- по порядку следования;

- по типу.

Пример использования процедур с параметрами:

Для массивов А(5) и В(6) найти разность между суммами элементов:

Сумму найти в подпрограмме-процедуре.

Код программы:

Program Pp;

Uses crt;

Const n=6;

Type

TMas=array[1..n] of real;

Var

a, b:TMas;

i:byte;

Sa, Sb, y:real;

Procedure Sum_Mas(c:Tmas; k:byte; var s:real);

begin

s:=0;

for i:=1 to k do

s:=s+c[i];

end;

begin {основная программа}

clrscr;

for i:=1 to 5 do

begin

write('Введите а[', i, ']=');

readln(a[i])

end;

for i:=1 to 6 do

begin

write('Введите b[', i, ']=');

readln(b[i])

end;

Sum_Mas(a, 5, Sa);

Sum_Mas(b, 6, Sb);

y:=Sa-Sb;

writeln('Результат=', y:6:3);

readkey

end.

Результаты работы программы:

Введите а[1]=4.5

Введите а[2]=2.7

Введите а[3]=4.6

Введите а[4]=1.2

Введите а[5]=-7.5

Введите b[1]=3.6

Введите b[2]=8.4

Введите b[3]=-5.1

Введите b[4]=-5.8

Введите b[5]=3.5

Введите b[6]=9.4

Результат=-8.500