- •Лекція №8-9
- •Перерахований тип даних
- •Діапазонний тип
- •Особливості роботи з користувацькими простими типами
- •Регулярний тип даних (масиви)
- •Порядок роботи з масивом:
- •Одновимірні масиви Опис одновимірних масивів
- •Використання одновимірних масивів
- •Одновимірні масиви, що складаються з констант
- •Двовимірні масиви
- •Сортування одновимірних масивів
- •Сортування вставкою (включенням).
- •Сортування вибором (виділенням).
- •Сортування обміном (метод «бульбашки»).
- •Сортування підрахунком.
Лекція №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. Переваги використання змінних перерахованого типу наступні:
-
в ряді випадків використання таких змінних робить програму більш наглядною;
-
використовуючи такі змінні легше захистити програму від небажаного введення даних.