Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика Учебник НГТУ Семестр 2.docx
Скачиваний:
95
Добавлен:
27.03.2015
Размер:
4 Мб
Скачать
☆

33.6. Подпрограммы, процедуры и функции

← 33.5. Проектирование и тестирование программы

34.1. Методология объектно-ориентированного... →

Навигация по разделу:

  • 33.6.1. Основные понятия и терминология

  • 33.6.2. Локальность

  • 33.6.3. Параметры процедуры

33.6.1. Основные понятия и терминология

↑ Наверх

Часто некоторую последовательность инструкций требуется повторить в нескольких местах программы. Чтобы программисту не приходилось тратить время и усилия на копирование этих инструкций, в большинстве языков программирования предусматриваются средства для организации подпрограмм. Таким образом, программист получает возможность присвоить последовательности инструкций произвольное имя и использовать это имя в качестве сокращенной записи в тех местах, где встречается соответствующая последовательность инструкций. Такую именованную последовательность инструкций будем называть процедурой. Если процедура дает одно результирующее значение и, следовательно, может использоваться в выражениях, то такая процедура называется функцией. Определение сокращенной записи называется описанием процедуры или описанием функции. Использование этого сокращения в программе называется оператором процедуры или вызовом процедуры. Функция, если она встречается в выражении, называется указателем функции или обращением к функции [21].

Пример: Описание и оператор процедуры.

Для последовательности инструкций

t := r; r := q; q := t (33.6)

можно ввести сокращение, описав процедуру следующим образом:

procedure P;

begin t: = r; r := q; q := t end (33.7)

И теперь всякий раз, когда в программе встречается эта последовательность инструкций, ее можно заменить оператором процедуры P. Описание процедуры состоит из двух частей: заголовка процедуры и тела процедуры. Заголовок (первая строка в (33.7)) содержит идентификатор процедуры. Тело (вторая строка в (33.7)) состоит из одной или нескольких инструкций, для которых вводится сокращение.

33.6.2. Локальность

↑ Наверх

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

Пример: Описание процедуры с описанием локальной переменной

procedure P;

var t: integer; (33.8)

begin t := r; r := q; q := t end;

В теле процедуры используются объекты двух сортов: локальные (в примере — t) и нелокальные объекты. Последние определены в контексте, являющемся средой для описания процедуры. Если они определены в главной программе, то такие объекты называются глобальными; если же они определены в самом языке (т. е. в контексте, в который «погружается» программа), то они называются стандартными объектами [21]. Областью существования локального объекта является весь текст процедуры. Это означает, что после окончания процесса, описанного процедурой, пространство в памяти, занятое локальными переменными, становится снова свободным и его можно использовать для других переменных. Очевидно, при повторном вызове той же самой процедуры значения ее локальных переменных снова не определены, точно так же как они не были определены при первом вызове процедуры.

При идентификации локальных объектов существенно то, что мы можем выбирать их имена вне зависимости от среды. Главную программу удобно рассматривать как процедуру без имени. Ее средой является операционная система вычислительной машины, где предварительно определены все стандартные объекты. Таким образом, ясно, почему идентификаторы можно выбирать, не считаясь со стандартными именами. Если стандартный объект не используется в программе, то употребление (случайное или преднамеренное) его идентификатора в качестве имени локального объекта не вызовет каких-либо нежелательных эффектов [21].