Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛП_Спец_Информатика_ФГОС.doc
Скачиваний:
11
Добавлен:
16.08.2019
Размер:
1.36 Mб
Скачать

Procedure имя (список параметров);

Список параметров - перечень имен для обозначения исходных данных и

результатов работы процедуры с указанием их типов. Параметры, перечисляемые в списке, называют ФОРМАЛЬНЫМИ.

Пример:

Procedure MyProg(var A:Integer, B:char);

За заголовком могут следовать такие же разделы, как и в основной программе. Процедура завершается знаком ";". Для вызова процедуры из основной программы или другой подпрограммы следует написать оператор, состоящий из имени процедуры и списка фактических параметров, которые должны совпадать по типу с формальными параметрами процедуры.

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

ОТЛИЧИЯ от процедур:

1. В описании указывается тип результата функции.

2. Результат выполнения функции - ОДНО значение.

3. Имени функции обязательно присваивается результат.

4. Результат передается в программу как значение имени этой функции.

5. Функция записывается в выражениях, а не отдельной командой как процедура.

Описание функции аналогично описанию процедуры:

FUNCTION имя ( список формальных параметров ): тип;

[var локальные переменные: тип;]

BEGIN

блок функции

END;

Допускается описание функции без параметров:

FUNCTION имя : тип;

Пример:

Function MyFunc(var A:Integer, B:char) :Integer ;

Так функция MyFunc возвращает значение типа Integer.

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

Пример 1: Ввести две матрицы. Найти сумму элементов каждой из матриц.

Program Primer;

Uses CRT;

Var {описание глобальных переменных}

a:array [1..10,1..8] of integer;

n,m,i,j,f,l: integer;

s1,s2:integer;

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

procedure vvod(x,y:integer); {x и y – формальные параметры}

begin

for i:=1 to x do

for j:=1 to y do

readln(a[i,j]);

end; {vvod}

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

procedure out (x,y:integer); {x и y – формальные парметры}

begin

for i:=1 to x do

begin

for j:=1 to y do

write (a[i,j],' ');

writeln;

end;

end {out}

{функция подсчета суммы}

function Mayf (x,y:integer):integer; {x и y – формальные параметры}

var

s:integer; {описание локальных переменных}

begin

s:=0;

for i:=1 to x do

for j:=1 to y do

s:=s+a[i,j];

mayf:=s;

end; {Mayf}

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

BEGIN

CLRSCR;

READ(N,M);

{вызов процедуры ввода, n и m – фактические параметры}

VVOD(N,M);

{вызов процедуры вывода на экран, n и m – фактические параметры }

OUT(N,M);

{вызов функции для подсчета суммы элементов первой матрицы}

S1:=MAYF(N,M);

READ(F,L);

{вызов процедуры ввода, f и l – фактические параметры}

VVOD(F,L);

{вызов процедуры вывода на экран, f и l – фактические параметры }

OUT(F,L);

{вызов функции для подсчета суммы элементов второй матрицы}

S2:=MAYF(F,L);

WRITE ('S1=',S1,' ','S2=',S2);

READKEY;

END.

Пояснения к задаче:

При составлении алгоритмов, блок, в котором происходит обращение к подпрограмме, изображается так:

Алгоритм решения этой задачи будет состоять из четырех блок-схем:

1. Блок-схема основной программы,

2. Блок-схема процедуры VVOD,

3. Блок-схема процедуры OUT,

4. Блок-схема функции Mayf

Варианты заданий для лабораторной работы

  1. Ввести две матрицы nxm. Найти сумму максимальных элементов этих матриц.

  2. Ввести две матрицы nxm. Найти суммы минимальных элементов этих матриц.

  3. Ввести две матрицы nxm. Найти суммы всех четных элементов этих матриц.

  4. Ввести две матрицы nxm. Найти сумму среднеарифметических значений этих матриц.

  5. Ввести две матрицы nxm. Найти суммы всех положительных элементов этих матриц.

  6. Ввести две матрицы nxm. Найти суммы всех отрицательных элементов этих матриц.

  7. Ввести две матрицы nxm. Найти количество положительных элементов в каждой из матриц и выдать соответствующие сообщения.

  8. Ввести две матрицы nxm. Найти общее количество элементов, кратных 5.

  9. Ввести две матрицы nxm. Найти общее количество нулевых элементов в этих матрицах.

  10. Ввести две матрицы mxm. Найти общее количество нулевых элементов на главных диагоналях этих матриц.

  11. Ввести две матрицы mxm. Найти количество положительных элементов, стоящих на главных диагоналях каждой из матриц и выдать соответствующие сообщения.

  12. Ввести две матрицы nxm. Найти количество нечетных элементов в нечетных столбцах каждой из матриц. Выдать на экран сообщение о матрице с наибольшим количеством таких элементов.

  13. Ввести две матрицы nxm. Найти сумму элементов в каждой из четных строк матриц.

  14. Ввести две матрицы nxm. Найти в каждой матрице количество элементов, равных заданному числу K.

  15. Ввести две матрицы nxm. Заменить в каждой матрице нулевые элементы на -1.

Вопросы для самоконтроля

  1. Что такое функция?

  2. Что такое процедура?

  3. Чем отличается функция от процедур?

  4. Можно ли описать функцию без параметров?

  5. Как оформляются функции и процедуры в блок-схеме?

Рекомендованная литература [1-4, 5,9]