Procedure Sum; {формальные параметры не требуются}
Procedure Kvadr(Al,Beta:Integer);
Имя процедуры – идентификатор, уникальный в пределах программы.
Тело процедуры по структуре аналогично программе:
Procedure <имя>{(формальные параметры)};
<раздел описания>
Begin
<раздел операторов>
End;
Для обращения к процедуре используется оператор вызова процедуры. Он состоит из имени процедуры и списка фактических параметров, отделенных друг от друга запятыми.
Формат:
<имя процедуры>{(параметр1, параметр2, …)};
Примеры вызова процедур:
Sort(A1,B1); {параметры – значения переменных}
Rvadr(14,25); {параметры – непосредственно значения }
Sum;
Между фактическими параметрами в операторе вызова процедуры и формальными параметрами в заголовке описания процедуры устанавливается взаимно–однозначное соответствие в результате их перебора слева направо. Количество и тип формальных параметров равны количеству и типу фактических параметров. При обращении к процедуре формальные параметры заменяются на соответствующие фактические параметры вызывающей программы.
Пример. В процедуре произвести очищение экрана, установку курсора в его центр и вывод слова «Справочник».
USES CRT;
Procedure Ekran;
Begin
ClrScr;
GotoXY(30,12);
WriteLn(‘Справочник’);
End;
Begin {начало программы}
…..
Ekran; {вызов процедуры Ekran}
End.
Задания для самостоятельной работы
1 вариант
Дан массив с оценками учащихся. Найти средний балл учащихся. Подсчитать количество 5 и 4. Заполнение массива, подсчет среднего балла и подсчет количества оценок оформить отдельными процедурами.
Задана матрица W(5,6). Отрицательные элементы матрицы заменить на 0. измененный массив вывести на экран. Обработку элементов массива оформить в процедуре.
2 вариант
1. Дан одномерный массив со значениями веса кур на птицефабрике. Найти средний вес кур. Найти вес самой тяжелой курицы. Заполнение массива, подсчет среднего веса и нахождение веса самой тяжелой курицы оформить отдельными процедурами.
Найти произведение элементов массива R(7,5) в строках с четными номерами. Обработку элементов массива оформить в процедуре.
Формат описания функции:
Function <имя>{(формальные параметры)}:<тип результата>;
Примеры заголовка функции:
Function Prov(X,Y,T:integer):Real;
Function ZX:Real;
Возвращаемый результат может иметь любой скалярный тип.
Тело функции аналогично по структуре программе.
Function <имя>{(формальные параметры)}:<тип результата>;
<раздел описания>
Begin
<раздел операторов>
End;
В разделе операторов должен находиться, по крайней мере один оператор, присваивающий идентификатору функции значение. Если таких присваиваний несколько, то результатом выполнения функции будет значение последнего оператора присваивания.
Пример1. С использованием функции производить возведение в степень положительного или отрицательного числа.
Var
Z:Interer;
K:Real;
Function Step(F:Real; Exp:Integer):Real; {функция возведения в степень числа}
Var
C:Integer;
T:Real;
Begin
If Exp=0 Then Step:=1
Else Begin
T:=F;
For C:=2 To Abs(Exp) Do T:=T*F
If Exp >0 Then Step:=T Else Step:=1/T;
End;
End;
Begin
Write(‘Введите значение’);
Read(Z);
WriteLn(Step(Z,3)); {вызов функции Step и возведение числа Z в степень 3}
WriteLn(Step(Z,4)); {вызов функции Step и возведение числа Z в степень 4}
K:=1.4;
WriteLn(Step(K,3));
End.
Пример 2. Вычислить сложное выражение, используя функцию пользователя для вычисления повторяющейся в нем части.
Пример 3. Вычислить сумму N членов ряда. Факториал вычислять с помощью функции пользователя.
S=1!/4!+4!/5!+9!/6!+16!/7!+…+(n^2)!/(n+3)!
Var
S:LongInt;
J:Byte;
Function Fact(M:Integer):Integer; {функция вычисления факториала}
Var
I:Byte;
P:Integer;
Begin
P:=1;
For I:=1 To M Do P=P*I;
Fact:=P;
End;
Begin
WriteLn(‘Введите N’);
RearLn(N);
S:=0;
For J:=1 To N Do S:=S+Fact(Sqr(J))/Fact(J+3);
WriteLn(‘S=’,S);
End.
Задания для самостоятельного решения.
1. Вычислить сложное выражение, используя функцию пользователя для вычисления повторяющейся в нем части.
C=Ö(d+½e½)/tg(de)+(x+½y½)/tg(xy)-(z+½t½)/tg(zt)
2. Вычислить функцию: C = m!n!/(m-n)!. Для вычисления факториала использовать функцию пользователя.
В любой программе все переменные делятся на глобальные и локальные. Глобальные переменные описываются в разделе описаний основной части программы, а локальные – в разделах описаний процедур и функций. Локальные переменные существуют только в течение времени работы процедуры, определяются при ее вызове и «исчезают» после завершения работы процедуры.