Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MET1.doc
Скачиваний:
34
Добавлен:
16.11.2019
Размер:
1.02 Mб
Скачать

Тема № 9 Разработка и отладка программ с использованием подпрограмм-процедур

Тема посвящена организации вычислительных процессов и программ с использованием важнейшего средства структурного и модульного программирования – подпрограмм (процедур).

При программировании с использованием языка Паскаль, как и при написании программ на других алгоритмических языках, часто возникает необходимость выделять неоднократно выполняемые вычисления при различных исходных данных в отдельные программные единицы, называемые подпрограммами. Подпрограммы имеют четко обозначенные вход и выход. В алгоритмическом языке Паскаль имеется два вида подпрограмм: процедура (PROCEDURE) и функция (FUNCTION).

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

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

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

Структура процедуры

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

Раздел описаний;

BEGIN

Последовательность операторов;

END;

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

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

при этом количество, тип и порядок следования реальных и формальных параметров должны совпадать. Каждый формальный параметр указывается со своим типом; реальный же - без типа. Список формальных и реальных параметров может быть пустым, например:

PROCEDURE PRINTT; .

В этом случае данные могут быть описаны внутри процедуры. Это так называемые ”локальные” данные. Данные, описанные предварительно, например, в разделе описаний основной программы, но используемые в подпрограмме, являются ”глобальными”. ”Локальные” данные имеют более высокий приоритет по отношению к ”глобальным”.

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

Пример.

PROCEDURE SSM(N:INTEGER;A,B,C:REAL; VAR P,F:REAL);

VAR I: INTEGER;

BEGIN FOR I:=1 TO N DO

BEGIN

P:= A*SIN(B) - EXP(C);

F:= P - SQRT(ABS(A*B-C));

WRITELN (’P=’,P,’F=’,F);

END; END;

Здесь N, A, B, C - параметры-значения; P, F - параметры переменные, I - локальная переменная.

В качестве реальных параметров могут использоваться константы, переменные, выражения, элементы массивов.

При работе с подпрограммами следует обратить внимание на способ передачи структурированных типов данных, например массивов в подпрограмму. В этом случае структурированные типы необходимо описывать в разделе типов (TYPE).

Пример

TYPE MAS=ARRAY [1..10]OF INTEGER;

VAR A,B:MAS;

I:INTEGER;

PROCEDURE SUM(D:MAS;VAR S:REAL);

BEGIN

S:=0;

FOR I:=1 TO 10 DO S:=S+D[I];

END;

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