Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
_МЕТ№2.DOC
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
247.81 Кб
Скачать

ПРОГРАММИРОВАНИЕ

Принципы модульного программирования

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

Для того, чтобы программы было проще понимать и записывать, стараются сделать их более компактными. Это достигается двумя способами:

1) использованием циклов;

2) применением процедур и функций.

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

Процедуры и функции — это законченные программные модули, которые в программе выполняются многократно.

Достоинства модульного программирования:

1) упрощение процесса написания и отладки программ;

2) сокращение объема программ.

Недостаток — некоторое увеличение затрат времени и памяти на оформление модулей и обращение к ним.

Паскаль-программа может содержать модули двух типов:

1) процедуры;

2) функции.

Они различаются по оформлению и особенностям работы.

1. Процедуры

Процедура — это программный модуль, выполняющий решение некоторой самостоятельной подзадачи.

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

PROGRAM

CONST

VAR

Процедура 1

. . . . .

Процедура n

BEGIN

. . . . . .

END.

Сама процедура оформляется в виде:

PROCEDURE имя(параметры);

Описание локальных переменных

BEGIN

Операторы <= Тело процедуры

END;

Первый оператор — это заголовок процедуры. Если сравнить с заголовком и концом программы, то в них много общего:

PROCEDURE

и

PROGRAM

.. . . . .

END.

и

END;

Поэтому можно саму Паскаль-программу считать главной процедурой.

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

На вход процедуры (в качестве исходных данных) поступает совокупность параметров-аргументов, а на выходе формируются параметры-результаты. Причем, процедура позволяет получить один или несколько результатов, а функция — только один.

Список формальных параметров содержит имена переменных, массивов и типов, являющихся аргументами и результатами процедуры. Этот список может отсутствовать. Элементы списка параметров описываются полностью, с указанием типов.

Пример 1.

Печать горизонтальной линии длиной n символов.

PROCEDURE GORLINE(n:Integer);

VAR

I:INGTEGER;

BEGIN

WRITELN;

FOR I:=1 to n DO

WRITE(`-`);

WRITELN;

END;

Здесь n — формальный параметр,

i — локальная переменная.

Процедуры в программе выполняются не в том порядке, в каком они записаны. К ним обращаются (их вызывают) из главной программы по имени с указанием фактических параметров.

Например:

имя:

или имя(список фактических_параметров);

После выполнения процедуры происходит возврат в основную программу к оператору, стоящему после вызывающего, как показано на рис.1.

Рис.1. Механизм вызова процедуры

Пример.

PROGRAM GRAF1;

CONST

. . . . . . .

VAR

X,Y: REAL;

I,K:INTEGER;

PROCEDURE PCHLINE (N:INTEGER);

. . . . . .

END; { PchLine }

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

X:=0;

FOR I:=1 TO 60 DO

BEGIN

. . . . .

Y:=

K:=ROUND (Y);

PCHLINE (K);

. . . . . .

END;

END.

Здесь N — формальный параметр (в процедуре),

K — фактический (в основной программе).

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

Если в процедуре несколько параметров, то соответствие устанавливается по порядку.

Пример.

PROCEDURE P1(X,Y,Z:REAL;K:INTEGER);

. . . . . . .

Begin

. . . . . . .

End;

. . . . . . .

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

. . . . .

P1 (A,B,C,N); {вызов P1}

. . . . .

END.

Здесь устанавливается следующее соответствие :

ОСНОВНОЕ ПРАВИЛО:

Типы, количество и порядок следования формальных и фактических параметров должны совпадать.

Массивы должны иметь одинаковую размерность. Поэтому они описываются с помощью описателя типа. Этот описатель позволяет завести в программе новые типы данных, определяемые пользователем. Такие типы имеют тот же статус, что и стандартные Real, Integer и др.). В общем виде типы пользователя описываются так.

Type

имя1=тип1;

имя2=тип2;

. . . . . .

Пример.

Type

MasInt =Array[1..10,1..10] of Integer;

MasStr =Array[1..10] of String;

Описатель типов в программе располагается после описания констант и перед описанием переменных:

Program ...;

Const

. . .

Type

. . .

Var

. . .

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

. . . . .

END.

Параметры процедур делятся на 2 класса:

1) параметры-значения;

2) параметры-переменные.

Параметр-значение — используется в процедуре и после окончания ее работы не изменяется (для процедуры является константой). Это, – как правило, аргумент процедуры.

Так, в процедуре PCHLINE параметр – N,а в Р1 – все 4 параметра являются параметрами-значениями. При выполнении этих процедур в них передаются фактические значения переменных A,B,C,N. Сами эти значения в главной программе не меняются.

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

Пример.

PCHLINE (2*K-1);

PCHLINE (20);

и т.д.

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

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

Параметр-переменная описывается в списке формальных параметров с помощью описателя VAR.

Пример.

PROCEDURE SumXY(X,Y:REAL;VAR Z,Q:REAL);

BEGIN

Z:=X+Y;

IF Z<0 Then

Q:= -Z

Else

Q=Z;

END; { SumXY }

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

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