Программирование в среде Турбо Паскаль (Поляков, Круглов) - страница 69

Процедура Halt, или более полно Halt(n), действует более грубо и менее разборчиво. Независимо от того, где она находится, ее выполнение завершает работу программы с кодом завершения n. Этот код впоследствии может быть проанализирован, в частности, командой IF ERRORLEVEL в среде MS-DOS. Значение ERRORLEVEL после остановки программы будет равно значению n. Значение n=0 соответствует нормальному коду завершения. Вызов процедуры Halt без параметра эквивалентен вызову Halt(0).

- 106 -


На основе процедуры Halt можно легко построить программу, например ASK.PAS, для организации диалога в ВАТ-файлах MS-DOS (рис. 6.4).


| VAR i : Word; { ======ПРОГРАММА ASK.PAS ======== }

| BEGIN

| >{ ...вывод на экран текста альтернатив выбора... }

| > Write( 'Введите Ваш выбор: ');

| > ReadLn(i); { ввод номера альтернативы с экрана)

| > Halt(i) { остановка программы и назначение }

| END. { ERRORLEVEL в MS-DOS номера i }


Рис. 6.4

Теперь в ВАТ-файле надо запускать откомпилированную программу ASK.EXE и сразу после нее анализировать, что будет находиться в переменной MS-DOS ERRORLEVEL.

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

6.9. Процедуры и функции


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

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

PROCEDURE ИмяПроцедуры;

становится процедурой, и вместо этого составного оператора в основном блоке может подставляться одно лишь ИмяПроцедуры.

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

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

ИмяПроцедуры(Параметр1, Параметр2,);

- 107 -


PROCEDURE ИмяПроцедуры (ПарамЗнач1 : ТипЗнач1;

> ПарамЗнач2 : ТипЗнач2;

>VAR ПарамПерем1 : ТипПерем1;

>VAR ПарамПерем2 : ТипПерем2; ... );

LABEL

> Перечисление меток внутри тела процедуры

CONST

> Описание локальных констант процедуры

TYPE

> Описание локальных типов

VAR

> Описание локальных переменных

> Описание вложенных процедур и (или) функций

BEGIN

> Тело процедуры

END;