Материал: Алгоритмический язык Turbo Pascal 7.0. Юршин Е.Д., Рог А.И

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Для более эффективного программирования (минимум строк) подобные повторения необходимо оформить в виде подпрограмм (процедур).

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

При этом из головной программы осуществляется многократное обращение (ссылка) к данной подпрограмме.

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

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

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

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

ПРОЦЕДУРЫ

Процедурой в TURBO PASCAL называют особым образом оформленный фрагмент программы, имеющей собственное имя. Упоминание особым образом этого имени в тексте основной программы приводит к «активизации» процедуры, называют ее вызовом. Сразу после обращения к процедуре (ее вызову), начинают выполняться операторы, входящие в нее, после выполнения последнего из них управление автоматически возвращается обратно в основную программу и выполняются операторы, стоящие непосредственно после оператора вызова процедуры.

Для наглядности это можно проиллюстрировать следующим рисунком:

ОСНОВНАЯ (ГОЛОВНАЯ) ПРОГРАММА

ВЫЗОВ ПРОЦЕДУРЫ

ПРОЦЕДУРА

ПРОДОЛЖЕНИЕ ПРОГРАММ

.

.

.

END

Рис. 4.2.5. Схема взаимосвязи головной программы и

процедуры.

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

Следует отметить, что с примерами процедур и функций мы уже сталкивались – это стандартные процедуры ввода и вывода данных, оформленные следующими операторами: READ, READLN, WRITE, WRITELN, а также набор стандартных функций. В этом случае стандартными они называются потому, что созданы одновременно и совместно со всеми элементами системы TURBO PASCAL и является ее неотъемлемой частью. Таким образом, в TURBO PASCAL имеется много стандартных процедур и функций. Наличие такой так называемой библиотеки готовых программных заготовок существенно облегчает разработку прикладных инженерных программ. Однако в большинстве случаев многие специфичные для данной прикладной программы действия не находят прямых аналогов в библиотеке TURBO PASCAL и тогда программисту приходится разрабатывать свои нестандартные процедуры и функции. Данные нестандартные процедуры и функции необходимо обязательно описать в начале программы, чтобы компилятор мог установить связь между оператором вызова и теми действиями, которые приводят к процедуре или функции.

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

Procedure_{имя}_(список параметров);

где Procedure – обязательное служебное слово; имя – имя процедуры через пробел, оформляется по правилу построения имени идентификатора; список параметров

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

Procedure_com (a:real; b:integer);

Как видно, параметры в списке отделяются точкой с запятой. Если имеется несколько следующих друг за другом однотипных параметров, то их можно отделить запятыми:

Procedure_com (a:real; b:real; c:real);

Можно записать проще:

Procedure_com (a, b, c:real);

Что касается следующего за заголовком блока, то он должен состоять из раздела описаний (var) и раздела операторов, заключенным в операторные скобки beginend. Заканчиваться блок должен End и точкой с запятой.

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

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

<какой-либо оператор> <имя процедуры> <список фактических параметров>;

В то же время вызов процедуры можно осуществить без оператора, указав в нужной точке программы имя процедуры, например:

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

В данном случае в качестве фактических параметров могут выступать конкретные числовые значения, переменные (последние переменные должны в головной программе получить числовые значения, например с помощью оператора read или арифметического оператора присваивания) или арифметическое выражение, которое в результате вычисления должно получить конкретное числовое значение.

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

Источник: https://studfile.net/preview/16565609/