Структура основной программы с использованием подпрограмм

PROGRAM <имя_программы>;{Заголовок основной программы}

LABEL

CONST

TYPE

VAR

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

LABEL

CONST

TYPE

VAR

BEGIN

{тело процедуры}

END;

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

LABEL

CONST

TYPE

VAR

BEGIN

{тело функции}

END;

BEGIN

{тело основной программы}

END.

Область видимости идентификатора переменной

Область действия описания конкретного идентификатора и называется областью видимости.

Все переменные и другие объекты, описанные в подпрограмме, являются локальными и действуют только внутри этой программы. Никакой связи между ними и объектами вызывающей программы, имеющими такие же имена, нет.[†]

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

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

Например,

Program primer1;

Var

i: integer; {объявление глобальной переменной}

{объявление процедуры}

Procedure P; {заголовок процедуры}

Var

i: integer; {объявление локальной переменной}

Begin {начало тела процедуры}

Writeln (“Значением переменной i является цифра - ”, i);

End; {конец тела процедуры}

Begin {начало тела основной программы}

I := 1;

P; {вызов процедуры}

End. {конец тела процедуры}

В результате запуска программы Primer1 на экран монитора будет выведена строка:

Значением переменной i является цифра – 1

Подпрограммы - процедуры (PROCEDURE)

Процедура – это подпрограмма, которая решает некоторую частную задачу. Результатом работы процедуры является либо одно или более значений, либо ни одного. Например, процедура CLRSCR; ни чего не возвращает программе, которая её вызывает. А процедура READLN(a) возвращает основной программе значение переменной A, введённое пользователем с клавиатуры.

Процедура оформляется аналогично программе, то есть содержит заголовок, раздел описаний и операторов:

{заголовок процедуры}

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

{раздел описаний}

BEGIN

{раздел операторов}

END;

Здесь, <имя_процедуры> - имя процедуры удовлетворяет всем правилам идентификатора; формальные («ненастоящие») параметры – список переменных с указанием их типа.

Например (см. Задача 1).

Procedure Dlina (x1, x2, y1, y2 : real; var l : real);

Вызов процедуры:

<имя_процедуры> (<список_фактических_параметров>);

Здесь, фактические («настоящие») параметры – параметры вызывающей программы.

Например (см. Задача 1).

Dlina (q1, q2, k1, k2, d);

Наши рекомендации