
Перелічені типи.
Визначувані типи, повний набір значень яких явно перелічують в опису типу, називаються перелічуваними (enumeration type).
Значення в опису типу називається літералом перелічуваного типу. Кожний літерал у перелічуваному типі виробляє відмінне від інших літералів значення.
Наперед визначені операції відношення впорядкованості між літералами слідують порядку, що відповідає номерам їхніх позицій у переліку. Номер позиції першого літерала, а часто і його значення дорівнюють нулю, наступного – на одиницю більше і так далі.
У мовах Pascal і С значення літералів перелічуваного типу належать значенням цілого типу. Як позначення літерала перелічуваного типу в обох мовах використовується ідентифікатор.
У мові С можна встановлювати значення для літерала перелічуваного типу за допомогою R-виразу. Тоді значення наступного літерала в уточненні за замовчуванням дорівнюватиме значенню R-виразу, збільшеному на одиницю. Для різних літералів в мові С може бути призначено однакові значення, які можуть бути й від’ємними.
Об’єднані типи.
Тип, значення якого в будь-який момент часу є значенням одного з типів, оголошених в опису, називається об'єднаним (united type) або об'єднанням.
При створенні об'єкта цього типу пам'ять для його значення відводиться під більше (за розміром) значення типу, оголошеного в об'єднанні, тому, що всі значення об’єкту об’єднаного типу розміщуються на єдиній ділянці пам’яті. Тип є лише в мові С.
Доступ до значень об'єднаного типу відбувається шляхом зазначення позначення об'єкту цього типу та позначення відповідного компонента типу, що ввійшов в опис типу.
Строкові типи.
Цей тип можна було б віднести до наперед визначених типів,коли б не змінна довжина його мультизначна.
Мультизначення рядкового типу утворюється зі значень символьного типу і тому є гомогенним.
Мультизначення можна подати ланцюжком символів довжина якого зазначається при описі. Самовиражене мультизначення рядкового типу є рядковий літерал або рядок.
Представлення рядків
Існує три види представлення значень рядків.
1.із статичною довжиною(довжина рядка зазначена в ньому ж кількістю символі заданих при описі )
2.з обмеженою динамічною довжиною(довжина рядка зазначається в ньому ж спеціальним символом)
3.із динамічною довжиною
Операції над рядковими значеннями в мові Паскаль
Основні операції із мультизначеннями рядкового типу реалізується за допомогою стандартних підпрограм або методів. У мові Паскаль для значень цього типу передбачено стандартну операцію конкатенацію яка позначається символом + і означає операцію сполучення двох рядків одного за одним. Доступ до оператора за номером за допомогою ІНДЕКСАТОРОМ.
Операції над рядковими значеннями в мові Сі
У мові СІ для значень рядкового типу використовується вказівні типізовані змінні типу Чар (Char*).
Мультизначення в цьому разі подається ланцюжком символів але воно не зберігає довжини ланцюжка а закінчується автоматично подаваним нулем (“\0”).
Типи, що індексуються.
Індексовані типи кожне значення яких складається з компонентів одного і того ж самого типу називається індексованим. Значення цього типу може бути одновимірним та багато вимірним.
Об’єкт, що має значення індексованого типу , називатиметься об’єктами індексованого типу , а його значення масивом.
Для того щоб описати індексований тип необхідно описати тип компонентів і спосіб утворення мультизначеннь із компонентів:
- Тип компонентів мультизначення зазвичай описується індикатором наперед визначеного або раніше визначеного типу.
- Спосіб утворення мультизначення подається в в частині опису дескрипторі.
Індексатор
Для вибору під значення використовують індексатори.
Індексатор - це конструкція що складається з індексних позицій які у свою чергу є зображення ми значень індексу. Індексатор записується в символах () або [].
Індексація – це спосіб вказати під значення за індексом шляхом опису індексатора
Основні властивості індексованого типу
- Кількістю індексів мережевих пар .
- Типом і позицією кожного індексу.
- Верхніми та нижніми значеннями мережевих пар.
- Типом компонентів (тип однаковий).
Ініціалізація об’єктів індексованого типу
У мовах програмування ініціалізувати об’єкти можна трьома способами:
- за умовчанням (у контексті механізму розподілу пам’яті)
- при створенні об’єкту
- за допомогою оператора присвоювання