Перечислювальний та інтервальний типи даних
Зміст
- 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;