Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 7-1.doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
142.34 Кб
Скачать

7.7. Перечисляемый тип

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

type

nm = (word1, word2, …, wordN);

var

w: nm;

здесь nm – идентификатор типа (произвольный), word1, word2… - конкретные значения, которые может принимать переменная w, принадлежащая типу nm. Значения данного типа считаются упорядоченными, т.е. описание типа одновременно вводит упорядочение word1 < word2 < wordN. Порядковые значения отсчитываются с 0.

К переменным типа перечисления можно применять функции ord, pred, succ и процедуры inc и dec.

Ко всем переменным одного и того же скалярного типа применимы операции отношения: =, <>, <=, >=, <, >.

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

Пример 1. type color = (red, yellow, green, blue); Здесь определено, что red < yellow < green < blue. Переменная типа color может принимать одно из перечисленных значений.

Функция succ(X)

По элементу x определяется та упорядоченная последовательность, которой принадлежит x, и выдается элемент, следующий за x в этой последовательности.

Пример 2. Пусть задана последовательность букв в алфавитном порядке. Тогда succ(A) есть B; succ(L) есть M и т.д.

Для примера 1 succ(red) есть yellow.

Функция pred(X)

По элементу x определяется последовательность, которой принадлежит x, и выдается предыдущий элемент этой последовательности.

Пример 3. pred(F) есть E; pred(Z) есть Y и т.д.

Функция ord(X)

Выдается номер элемента x в последовательности.

Пример 4. ord(red) равен 0, а ord(green) равен 2.

7.8. Интервальный тип

Для переменной скалярного (перечисляемого) типа можно указать некоторое подмножество значений, которые может принимать данная переменная.

Общий вид:

a: min..max;

здесь a – интервальная переменная, min – левая граница, max – правая граница подмножества (диапазона). Границы диапазона разделяются двумя точками; граница min всегда должна быть меньшеmax.

Константы min и max должны принадлежать одному и тому же типу. Они определяют базовый тип переменной a. Так, если границы являются целыми числами типа integer, то под переменную a будет выделен такой же объем памяти, что и под тип integer. Однако переменная a сможет принимать только те значения, которые определены границами ее диапазона.

Примеры

Пусть переменная k должна принимать значения из множества -1000..1000. Тогда ее следует объявить как k: -1000..1000. При этом базовым типом переменной k является тип integer, т.к. границами диапазона являются целые константы -1000 и 1000.

Если переменная b может принимать одно из значений red, yellow, green, то эту переменную можно описать так: b: red..green; базовым типом для b является тип color:

type color=(red,yellow,green,blue);

var b:red..green;

begin

b:=red;

writeln(b);

b:=yellow;

writeln(b);

b:=green;

writeln(b);

readln

end.

Пусть i – переменная, принимающая значения года рождения сотрудника какого-либо учреждения. Имеет смысл ограничить диапазон значений i подмножеством, т.е. описать примерно так: i: 1930…2000.

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