Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль (ст 33).doc
Скачиваний:
3
Добавлен:
13.11.2019
Размер:
821.76 Кб
Скачать

Подпрограммы: функции

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

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

Функция может возвращать значения следующих типов: любого порядкового, любого вещественного, типа string. Тело функции имеет структуру, аналогичную структуре программы на языке Pascal. При этом в разделе операторов в теле функции должен находиться, по крайней мере, один оператор, присваивающий имени функции значение. В основную программу возвращается результат последнего присваивания.

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

Функция имеет четыре основных отличия от процедуры:

  • заголовок;

  • в теле функции хотя бы один раз (перед выходом из подпрограммы) имени функции должно быть присвоено значение;

  • Функция не имеет выходных параметров, она возвращает единственное значение (результат);

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

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

Program Primer;

Uses Crt;

Var A, B, Summa : Integer;

Function Sum(C, D:Integer):Integer; {описание функции}

Var S:Integer; {для нахождения суммы двух чисел}

Begin

S:=C+D;

Sum:=S;

End;

Begin

Clrscr;

Writeln(‘Введите первое число’);

Readln(A);

Writeln(‘Введите второе число’);

Readln(B);

Summa:=Sum(A,B); {вызов функции}

Writeln(‘Сумма равна ’,Summa);

Readkey;

End.

Задача

Сформировать матрицы А{15,13} и В{5,7}. Вывести их. Используя функцию, найти максимальные элементы матриц.

а) Схема алгоритма основной программы:

б) Схема алгоритма функции поиска максимального элемента матрицы.

Схемы алгоритмов процедур формирования и вывода матрицы см. в Занятии 5.

Program Primer;

Uses Crt;

Type Matrica=array[1..15,1..13] of Integer;

Var A, B : Matrica;

Max1, Max2 :Integer;

Procedure Input(Var D:Matrica; N,K:Integer);

Var i, j : Integer;

Begin

Randomize;

For i:=1 to N

Do For j:=1 to K

Do D[i,j]:=Random(10)-5;

End;

Procedure Output(D:Matrica; N,K:Integer);

Var i, j : Integer;

Begin

For i:=1 to N

Do Begin

For j:=1 to K

Do Write(D[i,j]:4,’ ‘);

Writeln;

End;

End;

Function Max_Elem(D:Matrica; N,K:Integer)

:Integer;

Var i, j, max : Integer;

Begin

Max:=D[1,1];

For i:=1 to N

Do For j:=1 to K

Do If D[i,j]>Max

Then Max:=D[i,j];

Max_Elem:=Max;

End;

Begin

Input(A,15,13);

Input(B,5,7);

Clrscr;

Writeln(‘Матрица А’);

Output(A,15,13);

Readkey;

Clrscr;

Writeln(‘Матрица В’);

Output(В,5,7);

Readkey;

Max1:=Max_Elem(A,15,13);

Max2:=Max_Elem(B,5,7);

Writeln(‘Макс. элемент матрицы А равен

Writeln(‘Макс. элемент матрицы B равен

Readkey;

End.

{заголовок программы}

{объявление типа - матрица}

{объявление переменных}

{процедура формирования матрицы}

{указанной размерности}

{N – число строк в матрице}

{K – число столбцов в матрице}

{формирование матрицы с помощью}

{датчика случайных чисел}

{процедура вывода матрицы заданной}

{размерности}

{N – число строк в матрице}

{K – число столбцов в матрице}

{функция поиска максимального}

{элемента в матрице указанной}

{размерности}

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

(вызов процедуры форм-я для матрицы А)

{вызов процедуры форм-я для матрицы В}

{очистка экран}

{вызов проц. вывода матр. для матр. А}

{ожидание нажатия любой клавиш}

{очистка экрана}

{вызов проц. вывода матр. для матр. В}

{ожидание нажатия любой клавиши}

{вызов ф-ии Max_Elem для матрицы А}

{вызов ф-ии Max_Elem для матрицы В}

,Max1); {вывод максимума для матрицы А}

,Max2); {вывод максимума для матрицы В}

{ожидание нажатия любой клавиш}

{конец программы}