Здавалка
Главная | Обратная связь

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

Оператор выбора. Оператор безусловного перехода

 

Оператор выбора

Если у вас не два возможных варианта выполнения программы, а больше, то может использоваться оператор выбора CASE.

Полная форма оператора выбора:

Case <ключ_выбора> of

Знач 1: <оператор 1>;

Знач 2: <оператор 2>;

. . .

Знач n: <оператор n>;

Else <оператор 0>;

End;

 

Неполная форма оператора выбора:

Case <ключ_выбора> of

Знач 1: <оператор 1>;

Знач 2: <оператор 2>;

. . .

Знач n: <оператор n>;

End;

Здесь <ключ_выбора> - это имя переменной любого порядкового типа, кроме вещественного или строкового, или выражение (арифметическое с целым значением или логическое) в зависимости от значения которого принимается решение. Знач 1, Знач 2, ... , Знач n - значения, с которыми сравнивается значение <ключа>. Тип параметра Знач должен совпадать с типом ключа. При этом параметр Знач – константа (можно задавать или список, или диапазон констант). <Оператор 1>,..., <оператор n> - операторы (возможно составные), из которых выполняется тот, с константой которого происходит первое совпадение значения <ключа>. <Оператор 0> выполнится, если значение ключа не совпадает ни с одной из констант Знач 1, Знач 2, ... , Знач n.

Ветвь Else не обязательна, и в отличие от оператора if, перед ней можно ставить точку с запятой. Если для нескольких значений <ключа> действия совпадают, то эти константы можно перечислить через запятую перед двоеточием или даже задать диапазон значений (нижняя граница, верхняя граница).

 

Оператор перехода

Оператор перехода имеет вид

GOTO <метка>.

Он позволяет передать управление непосредственно на нужный оператор программы. Перед этим оператором должна располагаться метка отделенная от него двоеточием. В Турбо Паскале в качестве меток выступают либо целые числа от 0 до 9999, либо идентификаторы. Все метки должны быть описаны в разделе объявления меток следующим образом:

label <список меток через запятую> ;

Каждой меткой в программе может быть помечен только один оператор. Операторов перехода с одной и той же меткой можно писать любое количество. Необходимо, чтобы раздел описания метки, сама метка и оператор перехода с ее использованием располагались в пределах одного блока программы. Кроме того, нельзя передавать управление внутрь структурированных операторов (например, if, for, while, repeat и др.).

Перечисляемый и интервальный типы данных

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

Ord (a)- номер элемента в области значений порядкового типа.

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

Succ(а)-следующий элемент области значений порядкового типа

Стандартные типы byte, word, char и boolean также можно считать вариантами перечислимого типа.

Тип-диапазон

Тип-диапазон называют ограниченным или интервальным типом. Он является подмножеством своего базового типа, в качестве которого может выступать любой порядковый тип кроме типа-диапазона. Тип-диапазон наследует все свойства своего базового типа. Имеются две стандартные функции, работающие с этим типом: High(x)- возвращает максимальное значение типа-диапазона, к которому принадлежит переменная x; Low(x) - возвращает минимальное значение.

В тексте программы на Турбо Паскале могут встречаться директивы компилятору, которые также называют опциями. Опции {$R+} и {$R-} позволяют включать и отключать проверку соблюдения границ при работе с диапазонами. Когда проверка включена, при нарушении границ диапазонов происходит аварийное завершение работы программы.

 

Пример 1.

Написать программу, которая бы по введенному номеру времени года (1 — зима, 2 — весна, 3 — лето, 4 — осень) выдава­ла соответствующие этому времени года месяцы.

Решение.

 

Program chetnoechislo;

Var n: integer;

Begin

Write ('Введите номер месяца n');

Readln(n);

Case n of

1: Writeln(‘декабрь, январь. февраль');

2: Writeln ('март, апрель, май');

3: Writeln ('июнь, июль, август');

4: Writeln('сентябрь, октябрь, ноябрь');

end;

End.

 

Пример 2.

Вводится целое число, если оно однозначное, то определить четное оно или нет, а если нет, то определить попадает ли оно в диапазон от 10 до 100, иначе выдать соответствующее сообщение.

Program chislo;

Var i: integer;

Begin

Write('Введите целое число: ');

Readln(i);

Case i of

0, 2, 4, 6, 8: Writeln('Четная цифра');

1, 3, 5, 7, 9: Writeln('Нечетная цифра');

10...100: Writeln('Число от 10 до 100');

else Writeln('Число либо отрицательное, либо > 100');

end;

Readln

end.

 





©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.