Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Чернов Шафеева.doc
Скачиваний:
47
Добавлен:
21.05.2015
Размер:
1.39 Mб
Скачать

2.4. Процедуры прерываний

Процедура EXIT; осуществляет выход из программного модуля-под­программы или основной программы. Из подпрограммы управление передает­ся этой процедурой в вызывающую программу к следующему за ее вызовом оператору. В программе EXIT приводит к завершению ее работы.

Процедура HALT(Cod); прекращает выполнение программы, вызывает в случае необходимости подпрограмму завершения и осуществляет выход в операционную систему. Cod  необязательный параметр, определяющий код завершения программы.

В версии 7.0 Турбо Паскаля в циклах FOR, REPEAT и WHILE можно использовать две новые процедуры прерываний  BREAK и CONTINUE.

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

Пример: Найти первое отрицательное число во входном потоке из вещественных чисел (не более 100).

Var i: Integer;

a: Real;

Begin

For i:=1 To 100 do

Begin

read(a);

If a >= 0 Then сontinue; {пpи выполнении условия изменяется паpаметp цикла и цикл повторяется сначала}

WriteLn('Первое отрицательное число =', a);

Break {выход из цикла}

end

end.

2.5. Типизированные константы

Константы вида <идентификатор>=<значение> (описанные в разделе CONST) изменять в программе нельзя.

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

Задаются они в блоке объявления констант CONST следующим форматом:

<идентификатор>:<тип>=<значение>;

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

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

Примеры объявления типизированных констант для простых типов:

CONST

C1: integer = 311; {простые типы}

C2: real = 3.14;

C3: boolean = false;

C4: char = 'A';

C5: string = 'строка'; {строковый тип}

В константах-массивах список констант разделяется запятыми и зак­лючается в круглые скобки:

vector: array[0..4] of byte=(0,1,2,3,4);

массив символов может быть описан следующими эквивалентными записями:

vec:array[-1..2] of char='abcd'; или vec:array[-1..2] of char=('a','b','c','d');

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

CONST

matr: array[1..2,1..4] of byte = ((0,1,2,3),(4,5,6,7));

cub: array[0..1,1..2,1..3] of byte = (((0,1,2),(3,4,5)),

((6,7,8),(9,10,11)));

Константы-множества задаются в виде правильного конструктора мно­жества и перечисляются в квадратных скобках:

TYPE days = set of 1..31;

CONST s: days = [1..5,8..12,15..19,22..26,29..31];

Определение константы-записи имеют вид

<идентификатоp>:<тип_записи >=(<список_значений_полей>).

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

TYPE

POINT = record

x, y: real;

end;

CONST

p: POINT = (x:1; y:1);

Единственным значением типизированной константы-указателя может быть NIL (пустой), например: CONST p: ^real = NIL;