Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Labs7-12.doc
Скачиваний:
10
Добавлен:
10.05.2015
Размер:
131.58 Кб
Скачать

Лабораторная работа n 7.

Подпрограмма-процедура.

Цель и задача работы: изучить работу с подпрограммами-процедурами. Реализовать программу лабораторной работы номер 5 с подпрограммой-процедурой, например ввод в одной подпрограмме-процедуре, вывод в другой подпрограмме-процедуре, а обработка в третьей подпрограмме-процедуре. Обрабатываемые данные передаются в подпрограмму-процедуру и возвращаются оттуда через параметры.

Теоретические положения.

Идея подпрограмм состоит в том, что решение любой задачи можно разбить на последовательность решений подзадач и т.д., например, упорядочение компонент вектора по убыванию, решение систем линейных алгебраических уравнений, ввод/вывод данных (что часто используется при написании больших программ со сложным вводом/выводом), то имеет смысл выделить его в отдельный модуль называемый подпрограммой-процедурой. От этого программа становится более наглядной и компактной.

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

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

описание-процедуры = "PROCEDURE" идентификатор ";" ! "PROCEDURE" идентификатор "(" секция-формальных-параметров (* "," секция-формальных-параметров *) ")" ";"

секция-формальных-параметров = список-параметров ! "VAR"

список-параметров ! "FUNCTION" список-параметров ! "PROCEDURE" идентификатор (* ";" идентификатор *)

список-параметров = идентификатор (* "," идентификатор *) ":" идентификатор-типа.

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

PROCEDURE MAX(A, B: REAL; VAR C: REAL);

BEGIN

IF (A>=B)

THEN C:=A

ELSE C:=B;

END;

формальные параметры делятся на параметры-переменные и параметры-значения.

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

Формат обращения:

оператор-процедуры = идентификатор-процедуры [ список-фактических-параметров ]

идентификатор-процедуры = идентификатор

список-фактических-параметров = "(" фактический-параметр (* "," фактический-параметр *)

фактический-параметр = (выражение!переменная!идентификатор процедуры!идентификатор-функции).

Некоторые требования, предъявляемые к фактическим параметрам:

- число фактических параметров должно быть равно числу формальных параметров;

- соответствие между фактическими и формальными параметрами устанавливается путем их сопоставления слева направо в соответствующих списках: первый формальный параметр ставится в соответствие первому фактическому параметру и т.д.

- тип каждого фактического параметра должен соответствовать типу формального параметра;

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

Если в подпрограмме-процедуре используются параметры-значения, то в подпрограмму передаются сами значения, если же используются параметры-переменные, то в подпрограмму передаются адреса параметров-переменных. Отсюда видно, что параметры в подпрограмме-процедуре могут быть входными, выходными и входными-выходными. Параметр-значение описывается без ключевого слова VAR, а параметр-переменная с ним. В нашем примере A и B - параметры-значения (входные параметры), а C - параметр-переменная (выходной параметр).

Используемые в подпрограмме-процедуре переменные могут быть формальными, локальными или глобальными переменными. Формальные переменные - это переменные, перечисленные в списке формальных параметров. Локальные переменные - это переменные, которые описаны внутри подпрограммы-процедуры и не являются формальными переменными. Глобальныме переменные - это переменные, описанные вне тела подпрограммы-процедуры, имеют тот же смысл, который они имеют к моменту входа в подпрограмму-процедуру. Если в подпрограмме-процедуре встретилась переменная, то она считается формальным параметром, если это не так, то считается, что это локальная переменная, если это не так, то считается, что это глобальная переменная, иначе выдается сообщение, такая-то переменная не описана.

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