Процедуры. Procedure Имя[(формальные параметры)]

Формат процедуры:

Procedure Имя[(формальные параметры)];

[Раздел описаний]

Begin

… Раздел операторов

end;

Процедура вызывается по ее имени с указанием фактических параметров:

Имя[(фактические параметры)];

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

Пример:

Составить процедуру сложения двух целых чисел с выводом суммы на печать.

Procedure Summa(a, b:integer);

Var c: integer; {c – локальная переменная}

begin

c:= a + b;

Writeln('Сумма = ', c:7);

end;

Здесь a и b – формальные параметры. Вызвать эту процедуру для сложения чисел 5 и m можно следующим образом: Summa(5,m);

Здесь 5 и m – фактические параметры. Каждый формальный параметр принимает значение соответствующего фактического параметра, т.е. в процедуре a будет равно 5, а b будет равно m.

Среди параметров процедуры выделяют параметры-значения и параметры-переменные.

Параметры-значения выполняют функцию ВХОДНЫХ параметров процедуры. Они могут получать из вызывающей программы значения фактических параметров, но не могут передавать свои значения фактическим параметрам в вызывающую программу.

Параметры-переменные выполняют функцию как ВХОДНЫХ, так и ВЫХОДНЫХ параметров процедуры. Они могут получать (из главной программы) значения фактических параметров, изменять их в процедуре и возвращать новые значения фактическим параметрам (в главную программу). Для отличия от параметров-значений перед параметрами-переменными ставится слово Var в списке формальных параметров.

Пример:

Procedure Summa(a, b:integer; Var c:integer);

begin

c: = a+b;

end;

Эту процедуру можно вызвать следующим образом: Summa(5,m,S5m);

Допускается одинаковое обозначение соответствующих формальных и фактических параметров. Например, вызов процедуры Summa может иметь вид: Summa(а,m,С);

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

В качестве фактических параметров-переменных могут быть переменные и массивы (константы и выражения недопустимы).

Пример.

Отрезок задан координатами [a, b] на оси Х. Составить подпрограмму, определяющую, попадает ли точка на данный отрезок. Сделать проверку для трех точек l, m, n и массива Z из 4-х элементов.

program p13_1;

Const a=1; b=4.5;

Var l,m,n: real;

z:array[1..4] of real;

i:integer;

procedure otr(x:real); {Раздел описания подпрограммы}

begin

if (x>=a)and(x<=b) then writeln('Попадает')

else writeln('Не попадает');

end;

Begin

Write('Введите координаты 1-й точки:'); readln(l);

otr(l);

Write(' Введите координаты 2-й точки:'); readln(m);

otr(m);

Write(' Введите координаты 3-й точки:'); readln(n);

otr(n);

Writeln('Введите массив точек:');

for i:=1 to 4 do read(z[i]);

for i:=1 to 4 do otr(z[i]);

readln;

end.

Если в процедуру необходимо передать в качестве параметра массив, то фактическим параметром должно быть имя массива, а формальный параметр указывается в списке после слова Var вместе с типом массива. Само же описание массива делается в разделе Type основной программы.

Пример. Найти сумму элементов трех одинаковых по размеру массивов: a, b и c, состоящих из 20 элементов. Нахождение суммы элементов массива оформить в виде подпрограммы-процедуры.

Program p13_2;

Const k = 20;

Type mas = array [1..k] of real;

Var a, b, c: mas;

i: integer; Sa, Sb, Sc: real;

Procedure Sum(X:mas; Var Sx:real);

Var i:integer;

begin

for i:=1 to k do sx:= sx + x[i];

end;

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

for i:=1 to k do read(a[i]);

for i:=1 to k do read(b[i]);

for i:=1 to k do read(c[i]);

Вызов этой процедуры может быть такой:

Sum(a,Sa); Writeln('Сумма массива А=', Sa);

Sum(b,Sb); Writeln('Сумма массива B=', Sb);

Sum(c,Sc); Writeln('Сумма массива C=', Sc);

End.

Допускается использование процедур без параметров. В этом случае формальные и фактические параметры отсутствуют.

В процедуре может отсутствовать раздел описаний.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: