Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция Pascal_mat №8_9.doc
Скачиваний:
2
Добавлен:
02.12.2018
Размер:
196.61 Кб
Скачать

Лекція №8-9

Тема: Перераховані і діапазонні типи даних. Перетворення типів. Регулярний тип даних. Одновимірні, двовимірні й багатомірні масиви.

Перерахований тип даних

Перерахування дозволяють програмістові описувати нові типи даних, значення яких визначає сам програміст.

1. Опис перерахованого типу, складається зі списку його елементів, взятих у круглі дужки. Кожний з елементів являє собою унікальний ідентифікатор.

type

Season = (Spring, Summer, Autumn, Winter);

WeekDay = (Mon, Tue, Wed, Thu, Fri, Sat, Sun);

Перераховані типи визначають упорядковані множини значень через перерахування ідентифікаторів, які позначають ці значення. Упорядкування множин виконується відповідно до послідовності, у якій перераховуються ідентифікатори.

2. У рамках блоку, де оголошений перерахований тип, ідентифікатори всіх елементів перерахованого типу, інтерпретуються як константи. Spring, Summer, Autumn і Winter являють собою константи типу Season, a Mon, Tue, Wed, Thu, Fri, Sat і Sun – константи типу WeekDay. Тут необхідно звернути увагу на те, що ці ідентифікатори не є рядковими константами й у лапки не беруться.

3. Оскільки ідентифікатори перерахованого типу, є константами для всього блоку, де вони оголошені, то опис того самого ідентифікатора в різних типах вважається помилкою. Так, при трансляції такої програми –

program DuplicateIdentifier;

type

WeekDay = (Mon, Tue, Wed, Thu, Fri, Sat, Sun);

WorkDay = (Mon, Tue, Wed, Thu, Fri);

Begin … end.

буде видане повідомлення

Error : Duplicate identifier (Mon).

4. Константи визначених типів не можуть бути значеннями перерахованого типу.

Наприклад, наступні описи некоректні.

type

Digitals = (0,1,2,3,4,5,6,7,8,9); {константи числового типу}

DigSymbols = (‘1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’) {константи символьного типу}

WeekDay = (‘Mon’,’Tue’,’Wed’,’Thu’,’Fri’,’Sat’,’Sun’); {константи рядкового типу}

5. Так як перераховані типи, є порядковими, то, відповідно, вони перерахуванням своїх елементів визначають упорядковані набори констант. Впорядкування констант у типі виконується відповідно до послідовності, у якій перераховуються ідентифікатори. Порядковий номер константи перерахованого типу, визначається її позицією в списку ідентифікаторів при оголошенні. Перша константа в списку має порядковий номер 0, друга - номер 1, і т.д.

6. Оператор присвоювання для змінної перерахованого типу допустимий, якщо праворуч стоїть значення з опису типу саме цієї змінної, наприклад:

type Day = (Mon, Tue, Wed, Thu , Fri, Sat, Sun);

Color = (White, Red, Black);

Name = (Anna, Oleg, Vova, Gala);

var WorkDay : Day; NameBoy, NameGirl : Name;

Continent : (Africa, Asia, America, Australia, Europe, Antarctica)

begin

WorkDay:=Mon;

NameBoy:=Oleg;

Continent:=Asia;

end.

Але помилково: NameBoy:=Red;

7. Змінні перехованих типів дозволено використовувати в операторах присвоювання, а також як індекси масивів і границь оператора for.

8. Відзначимо одну «неприємну» особливість перерахованих типів. До значень цих типів не можна застосовувати ні арифметичні операції, ні стандартні процедури введення-виведення Read, Readln, Write, Writeln.

9. Так само, як і до змінних інших порядкових типів, до змінних перерахованого типу, застосовуються функції Ord, Pred і Succ.

Ord(Asia)=1;

Succ(Vova)=Gala; Pred(Sat)=Fri; (але таким чином результатів не буде – див п. 7).

10. Єдиною групою операцій, які допустимо використовувати з операндами перерахованого типу, є група операцій відношення. Ні додавати, ні множити, ні віднімати, ні виконувати які-небудь інші дії зі змінними перерахованого типу, не допускаються.

11. Перерахований тип даних вживається для поліпшення читабельності програми.

Змінна перерахованого типу може використовуватись в якості змінної-селектора в умовному операторі Case..of. Переваги використання змінних перерахованого типу наступні:

  • в ряді випадків використання таких змінних робить програму більш наглядною;

  • використовуючи такі змінні легше захистити програму від небажаного введення даних.