Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
!!!ГОСы информатика и вычислительная техника.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
3.93 Mб
Скачать
  1. Процедуры. Формальные, фактические параметры. Примеры.

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

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

Program имя программы

Label метки;

Const объявление констант;

Type определение типов данных;

Var объявление переменных;

объявления подпрограмм;

BEGIN

тело программы

END.

Наличие всех пяти составляющих объявлений - Label, Const, Type, Var, подпрограммы (procedure и function) - в вашей программе необязательно. Однако для стандартного Паскаля, если они присутствуют, порядок их следова­ния строго регламентирован, и в программе они должны присутство­вать только один раз. За секцией объявлений следуют подпрограммы и только затем тело программы.

Turbo Pascal обеспечивает более гибкую структуру программы. Главное - оператор Program должен быть первым, а тело программы последним. Порядок описания остальных составляющих жестко не регламентирован, но идентификаторы должны быть объявлены до их использования во избежание ошибок компиляции.

Общая структура процедуры будет иметь вид:

Procedure имя процедуры (параметры); {Заголовок процедуры}

Label метки;

Const объявление констант;

Type определения типов данных;

Var объявления переменных;

Процедуры, входящие в данную;

Begin

Тело главной процедуры;

End;

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

PROCEDURE < ИМЯ > (<СПИСОК ПАРАМЕТРОВ>);

где PROCEDURE - служебное слово; ИМЯ - имя процедуры, определяемое в соответствии с общими правилами построения идентификаторов; СПИСОК ПАРАМЕТРОВ (формальных) - перечень имен для обозначения исходных данных и результатов работы процедуры с указанием их типов.

Допускается описание процедуры, не содержащее <СПИСКА ПАРАМЕТРОВ>:

PROCEDURE < ИМЯ >;

в этом случае парамедры в процедуру и из нее передаются через систему глобальных параметров (см. ниже).

Сразу за заголовком подпрограммы может следовать одна из стандартных директив ASSEMBLER, EXTERNAL, FAR, FORWARD, INLINE, INTERRUPT, NEAR.

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

Procedure Sub (a:real; b:real; n:integer; k:integer; ch:char);

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

Procedure Sub (a,b:real; n,k:integer; ch:char);

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

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

Формальные и фактические параметры

Рассмотрим более подробно вопросы взаимодействия формальных и фактических параметров.

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

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

Все формальные параметры можно разбить на четыре категории:

- параметры-значения (эти параметры подпрограмма может изменить в основной подпрограмме);

- параметры-переменные (эти параметры подпрограмма может изменить в основной программе);

- параметры-константы (только в версии 7.0);

- параметры-процедуры и параметры-функции (т.е. процедурного типа).

Для каждого формального параметра следует указать имя и, как правило, тип, а в случае параметра-переменной или параметра-константы - категорию. Имена параметров могут быть любыми, в том числе и совпадать с именами объектов программы. Необходимо лишь помнить, что в этом случае параметр основной программы с таким именем становится недоступным для непосредственного использования подпрограммой. Тип формального параметра может быть практически любым, однако в заголовке подпрограммы нельзя вводить новый тип.

Например, нельзя писать

Function SUMM (A: array[1..100] of Real): Real;

Чтобы правильно записать этот заголовок, следует в основной программе ввести тип-массив, а затем использовать его в заголовке:

Type aArr = array[1..100] of real;

Function SUMM (A: aArr): Real;

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

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