Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
622061_KL_1.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
4.45 Mб
Скачать

9.17.Синтаксис объявления и использования процедур

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

В самом общем виде заголовок процедуры можно представить так:

Procedure имя_процедуры (список_формальных аргументов);

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

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

Рассмотрим простейший пример: B массиве X присвоить максимальному элементу нуле- вое значение и определить, как изменилось при этом среднее арифметическое значение элементов массива.

Program Middle1;

Const Nmax = 1000;

Type Ar = array[1..Nmax] of real;

Var i,imax, n : integer;

xmax, S,S1,S2,dS : real;

X : Ar;

Procedure MeanAr;

Var i : integer;

Begin

S:=0;

For i:=1 to n do

S:=S+X[i];

S:=S/n;

End { MeanAr };

Begin

read(n);

for i:=1 to n do read(X[i]);

MeanAr;

S1:=S; xmax:=X[1]; imax:=1;

For i:=2 to n do

If X[i]>xmax then

Begin

xmax:=X[i]; imax:=i;

End;

X[imax]:=0;

MeanAr;

S2:=S; dS:=S2-S1;

writeln('s1=',s1:0:2, 's2=', s2:0:2, 'ds=', ds:0:2);

End.

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

9.18.Синтаксис объявления и использования функций

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

Function имя_функции (список_формальных_аргументов) : тип_результата;

Так же, как и в случае с процедурами, список формальных аргументов может отсутствовать.

Приведенный в предыдущем разделе пример можно (и целесообразно) реализовать с использованием функций. В этом случае он будет иметь вид:

Program Middle1;

Const Nmax = 1000;

Type Ar = array[1..Nmax] of real;

Var

i,imax, n : integer;

xmax, S1,S2,dS : real;

X : Ar;

function MeanAr : real;

Var

i : integer;

S : real;

Begin

S:=0;

For i:=1 to n do S:=S+X[i];

MeanAr := S/n;

End { MiddleAr1 };

Begin

read(n);

for i:=1 to n do read(X[i]);

S1 := MeanAr;

xmax:=X[1]; imax:=1;

For i:=2 to n do

If X[i]>xmax then

Begin

xmax:=X[i]; imax:=i

End;

X[imax]:=0;

S2 := MeanAr;

dS := S2-S1;

writeln('s1=',s1:0:2, 's2=', s2:0:2, 'ds=', ds:0:2);

End.

Обратите внимание на то, что результат работы функции возвращается путем присваивания искомого численного значения некой переменной, совпадающей с именем функции (в примере это строка MeanAr := S/n; ).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]