Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции+Pascal.doc
Скачиваний:
28
Добавлен:
02.12.2018
Размер:
647.17 Кб
Скачать

9.1 Процедуры пользователя

Формат описания процедуры:

Procedure <имя>{(формальные параметры)};

Пример описания процедуры:

Procedure Sort(A:Integer;B:Real);

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 Вариант

  1. Дан массив с оценками учащихся. Найти средний балл учащихся. Подсчитать количество 5 и 4. Заполнение массива, подсчет среднего балла и подсчет количества оценок оформить отдельными процедурами.

  2. Задана матрица W(5,6). Отрицательные элементы матрицы заменить на 0. измененный массив вывести на экран. Обработку элементов массива оформить в процедуре.

2 Вариант

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

  1. Найти произведение элементов массива R(7,5) в строках с четными номерами. Обработку элементов массива оформить в процедуре.

9.2 Функции пользователя Формат описания функции:

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. Вычислить сложное выражение, используя функцию пользователя для вычисления повторяющейся в нем части.

K=(1+m^2)/cos(1-m)–5*(c+d^2)/cos(c-d)+(x+y^2)/cos(x-y)

Var

M,C,D,X,Y:Integer;

K:Real;

Function SV(A,B:Integer):Real;

Begin

SV:=Abs((A+Sqr(B)/Cos(a-b));

End;

Begin

WriteLn(‘Введите 5 значений’);

ReadLn(M,C,D,X,Y);

K:=SV(1,M)-5*Sqrt(SV(C,D))+SV(X,Y);

WriteLn(‘K=’,K);

End.

Пример 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)

  1. Вычислить функцию: C = m!n!/(m-n)!. Для вычисления факториала использовать функцию пользователя.

В любой программе все переменные делятся на глобальные и локальные. Глобальные переменные описываются в разделе описаний основной части программы, а локальные – в разделах описаний процедур и функций. Локальные переменные существуют только в течение времени работы процедуры, определяются при ее вызове и «исчезают» после завершения работы процедуры.

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