Лекция №8.1: Процедуры и функции

страницы: 1 2 3 4 5

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

Содержание

Подпрограммы

Весьма поэтичное объяснение понятия подпрограмма дал В. Ф. Очков: «Подпрограмма — это припев песни, который поют несколько раз, а в текстах песен печатают только один раз»1.

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

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

Таким образом, подпрограмма — это в первую очередь программа. Со всеми полагающимися полноценной программе атрибутами: именем, разделами описания меток (label), констант (const), типов (type), переменных (var) и даже со своими (вложенными) функциями и процедурами.

В языке Pascal имеется два вида подпрограмм: процедуры и функции. Описывая их общие черты, мы будем употреблять обобщённый термин «подпрограмма». Если же в тексте встретятся слова «процедура» или «функция», то это будет означать, что излагаемая информация свойственна только одному конкретному виду подпрограмм: либо только процедурам, либо только функциям.

Объявление и описание

Подпрограммы объявляются и описываются в начале Pascal–программы, до ключевого слова begin, означающего начало тела программы.

Различия между процедурами и функциями начинаются уже с момента их объявления.

Объявление функции

Функции объявляются следующим образом:

function <имя_функции> [(<список_параметров>)]:<тип_результата>;

В отличие от констант и переменных, объявление подпрограммы может быть оторвано от её описания. В этом случае после объявления нужно указать ключевое слово forward:

function <имя_функции> [(<параметры>)]:<тип_результата>; forward;
Объявление процедуры

Процедуры следует объявлять так:

procedure <имя_процедуры> [(<список_параметров>)];

Если объявление процедуры оторвано от её описания, нужно поставить после него ключевое слово forward:

procedure <имя_процедуры> [(<список_параметров>)]; forward;
Описание подпрограммы

Описание подпрограммы должно идти после её объявления. Оно осуществляется по следующей схеме (единой для процедур и функций):

[ uses <имена_подключаемых_модулей>;]
[ label <список_меток>;]
[ const <имя_константы> = <значение_константы>;]
[ type <имя_типа> = <определение_типа>;]
[ var <имя_переменной> : <тип_переменной>;]

[ procedure <имя_процедуры> <описание_процедуры>]
[ function <имя_функции> <описание_функции>;]

begin  {начало тела подпрограммы}
   <операторы>
end;  (* конец тела подпрограммы *)

Если объявление подпрограммы было оторвано от её описания, то описание начинается дополнительной строкой с указанием только имени подпрограммы:

function <имя_подпрограммы>;

или

procedure <имя_подпрограммы>;

Описания двух различных подпрограмм не могут пересекаться: каждый блок должен быть логически законченным. Однако внутри любой подпрограммы (она ведь тоже является программой, помните?) могут быть описаны другие процедуры или функциивложенные. На них распространяются всё те же правила объявления и описания подпрограмм.

Пример подпрограммы–процедуры:

procedure err(c : Byte; s : String);
var zz : Byte;
begin
 if c = 0 then
   WriteLn(s)
 else
   WriteLn('Ошибка!')
end;

страницы: 1 2 3 4 5

Примечания

  1. ^ http://twt.mpei.ac.ru/ochkov/mc8Pro.book/6_text.htm
Код для вставки: :: :: :: ::
Поделиться: // //