
- •Лекция №7 Тема «Типы данных в Паскале»
- •7.1. Общие положения
- •7.2. Целые типы
- •7.3. Вещественные типы
- •Функции
- •7.4. Булевский тип
- •7.5. Символьный тип
- •7.7. Перечисляемый тип
- •Функция succ(X)
- •Функция pred(X)
- •Функция ord(X)
- •7.8. Интервальный тип
- •Примеры
- •7.9. Эквивалентность типов
- •7.10. Совместимость типов
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.