ha: Person;
Примітки
1. У межах однієї запису імена полів повинні бути унікальні. p> 2. Імена полів можуть збігатися з іншими ідентифікаторами в межах поточного блоку, а також з іменами полів у інших записах. p> Розглянемо випадок, коли у складі запису містяться поля, що мають також тип запису. Нехай для комбінованого типу Person необхідно зберігати інформацію про дату народження людини. Цю інформацію можна представити у вигляді трьох полів у складі типу Person. Однак логічніше для цього визначити окремий тип, так як в цьому випадку він може використовуватися в описі інших типів і змінних.
Приклад:
Type
Date = Record
Month: (Jan, Feb, Mar, Apr, May, June, July, Aug, Sept, Oct, Nov, Decem);
Day: 1 .. 31;
Year: 1900 .. 2000
end;
Person = Record
Name, SecondName, SurName: string [20];
Sex: (Male, Female);
Speciality: Word;
Birthday: Date
end;
Доступ до полів з елемента Birthday проводиться за загальними правилами, наприклад:
Sasha. Birthday. Year: = 1970;
Masha. Birthday. Month: = May;
3. Множинні типи
Множинні типи належать до дещо незвичним і порівняно рідко використовуваних засобів мови Паскаль. Однак у ряді випадків використання множинних типів дозволяє підвищити компактність і наочність програм.
Значення множинного типу так само, як і масиви, будуються з декількох значень одного (базового) типу. Однак на відміну від масивів і записів значення множинного типу може містити будь-яку кількість різних елементів базового типу - від нуля елементів (порожній безліч) до всіх можливих значень базового типу. Іншими словами, можливими значеннями змінних множинного типу є всі підмножини значень базового типу.
Синтаксис опису деякого множинного типу має вигляд:
Type
<ім'я типу> = set of <базовий тип>;
Тут:
<ім'я типу> - правильний ідентифікатор мови;
set, of - зарезервовані слова (безліч, з);
<базовий тип> - базовий тип елементів множини, в якості якого може використовуватися будь порядковий тип, крім WORD, INTEGER, LONGINT (тобто типи BYTE і CHAR, перечислимі типи, а також обмежені типи, утворені з них).
Приклад:
Type
digitChar = set of '0 '.. '9';
digit = set of 0 .. 9;
elemColor = (Red, Yellow, Blue);
color = set of Color;
Var
s1, s2, s3: digitChar;
s4, s5, s6: digit;
myColor: Color;
Примітки
1. Всі значення базового типу, що утворюють конкретні значення множинного типу, повинні бути різні. p> Наприклад, не може бути множини: 1, 2, 2.
2. Порядок "Розташування" елементів у множині не має значення. p> Множини:
1, 2, 3
3, 2, 1
однакові.
Це відповідає прийнятої в математиці трактуванні множини як бесповторной невпорядкованою сукупності об'єктів.
Для завдання безлічі використовується так званий конструктор безлічі: список специфікацій елементів множини, відокремлюваних один від одного комами; список обрамляється квадратними дужками. Специфікаціями елементів можуть бути константи або вираження базового типу, а також - обмежений тип з того ж базового типу.
Наприклад:
s6: = [1, 2, 3];
s4: = [0, 1, 2, 3 +4];
s5: = [0 .. 3, 6]; {Еквівалентно безлічі [0, 1, 2, 3, 6]}
s1: = ['0 '.. '5'];
s2: = []; {порожнє безліч}
myColor: = [Red];
4. Файлові типи
Будь-який файл має три характерні особливості. По-перше, у нього є ім'я, що дає можливість програмі працювати одночасно з декількома файлами. По-друге, він містить компоненти одного типу. Типом компонентів може бути будь-який тип Object Pascal, крім файлів. Іншими словами, не можна створити "файл файлів". По-третє, довжина знову створюваного файлу ніяк не обмовляється при його оголошенні і обмежується тільки ємністю пристроїв зовнішньої пам'яті.
Файловий тип можна задати одним з трьох способів:
<ім'я> = File of <тип>;
<ім'я> = TextFile;
<ім'я> = File;
Тут <ім'я> - ім'я файлового типу (правильний ідентифікатор);
File, of - зарезервовані слова (файл, з); TextFile - ім'я стандартного типу текстових файлів; <тип> - будь-який тип Object Pascal, крім файлів. p> 5. Покажчики
Object Pascal надає в розпорядження програміста гнучке засіб управління динамічною пам'яттю - так звані покажчики. Покажчик - це змінна, яка в якості свого значення містить адресу байта пам'яті. За допомогою покажчиків можна розміщувати в динамічної пам'яті будь-який з відомих у Object Pascal типів даних. Лише деякі з них (Byte, Char, ShortInt, Boolean) займають у внутрішньому поданні...