Перечислительный и интервальный типы данных
Содержание
- 1. Какие преимущества использования перечислительного и интервального типов в программе?
- 2. Пример описания и использования перечислительного типа в программе (в разделе type).
- 3. Какие функции и операции могут быть применимы к переменным перечислительного типа?
- 4. Пример описания и использования переменных перечислительного типа в программе (в разделе var).
- 5. Какой стандартный тип данных языка Паскаль совместим со значениями перечислительного и интервального типов данных?
- 6. Пример описания и использования интервального типа данных.
1. Какие преимущества использования перечислительного и интервального типов в программе?
Перечислительный тип представляет собой ограниченную упорядоченную последовательность скалярных констант, составляющих данный тип. Значение каждой константы задается ее именем. Имена отдельных констант отделяются одна от другой запятыми.
Преимуществом использования такого типа есть то, что программист объединяет в одну группу всю совокупность значений соответственно некоторому признаку. Эти значения составляют перечислительный тип. Это, в свою очередь, повышает читабельность программ.
Значение перечислительного типа обязательно должны принадлежать к порядковому типу.
Интервальный или ограниченный тип данных задается диапазоном от минимального к максимальному значению констант, разделенных двумя точками ‘..‘.
⇑
2. Пример описания и использования перечислительного типа в программе (в разделе type).
Перечислительный тип может быть описан в разделах описания типов (type) и переменных (var).
Пример описания перечислительного типа с использованием раздела описания типов type:
type Rainbow = (RED, ORANGE, YELLOW, GREEN, LIGHT_BLUE, BLUE, VIOLET); var r1,r2:Rainbow;
После такого описания можно использовать переменные перечислительного типа:
... r1:=YELLOW; r2:=r1; ...
⇑
3. Какие функции и операции могут быть применимы к переменным перечислительного типа?
К переменным перечислительного типа чаще всего применяются три основных функции:
- Pred – определение предшествующего элемента в множестве значений;
- Succ – определение следующего элемента в множестве значений;
- Ord – определение позиции элемента в перечислительном типе.
Пример использования функций Pred, Succ и Ord.
type Rainbow = (RED, ORANGE, YELLOW, GREEN, LIGHT_BLUE, BLUE, VIOLET); var r1,r2:Rainbow; begin r1 := GREEN; r2 := Pred(r1); // r2 = YELLOW pos := Ord(r1); // pos = 3 pos := Ord(RED); // pos = 0 end;
Как видно из примера, номера индексов перечислительного типа начинаются с 0.
Переменные перечислительного типа могут быть задействованы в логических операциях сравнения. Например:
type Rainbow = (RED, ORANGE, YELLOW, GREEN, LIGHT_BLUE, BLUE, VIOLET); var r1,r2:Rainbow; begin ... r1 := GREEN; r2 := Pred(r1); // r2 = YELLOW ... if r2>r1 then Label1.Caption := 'r2 is more than r1' else Label1.Caption := 'r2 is less of equal than r1'; ... end;
⇑
4. Пример описания и использования переменных перечислительного типа в программе (в разделе var).
var
r1,r2:(RED, ORANGE, YELLOW, GREEN, LIGHT_BLUE, BLUE, VIOLET);
После такого описания можно использовать переменные перечислительного типа:
...
r1:=BLUE;
r2:=r1; // r2 = BLUE
...
⇑
5. Какой стандартный тип данных языка Паскаль совместим со значениями перечислительного и интервального типов данных?
Со значениями перечислительного и интервального типов данных совместимы порядковые типы данных. К таким типам можно отнести стандартные типы данных integer, boolean, char.
К переменным порядковых типов есть применимыми функции Pred и Succ.
⇑
6. Пример описания и использования интервального типа данных.
Интервальный тип данных можно описывать двумя способами, которые можно объединять между собой.
Способ 1. В разделе описания типов с использованием ключевого слова type.
type TYear = 1900..2000; TCharacter = 'A'..'Z'; var y,y2:TYear; ch,ch2:TCharacter; begin ... y := 1905; // правильно y2:=Succ(y); // y2 = 1906 y2:=y+10; // y2 = 1915 // ошибка компиляции // year := 1800; ch := 'D'; ch2:=Succ(ch); // ch2 = 'E' ch2:=Pred(ch); // ch2 = 'C' ... end;
Способ 2. Описание в разделе описания переменных var.
var ch, ch2: 'a'..'z'; y:1900..2100; begin ... ch := 'h'; ch2 := Pred(ch); // ch2 = 'g' y := 1905; // ошибка - несовместимые типы // ch2 := ch + 2; ... end;