
Записи. Опис комбінованих типів. Записи з варіантами
Запис – це сукупність обмеженого числа логічно зв'язаних ком¬понентів, що належать до різ¬них типів. Компоненти запису називаються по¬лями, кожне з яких визначається ім'ям. Поле за¬пису містить ім'я поля, слідом за яким через двокрапку вказується тип цього поля. Поля за¬пису можуть відноситися до будь-якого типу, що допускається в мові Паскаль, за винятком фай¬лового типу.
Опис запису в мові ПАСКАЛЬ здійснюється за допомогою службового слова RECORD, слідом за яким описуються компоненти запису. Завершується опис запису службовим сло¬вом END.
Наприклад, записна книжка містить прізвища, ініціали і номери телефонів, тому кож-ний окремий рядок у записній книжці зручно представити у вигляді наступноого запису:
type row=record
FIO: string[20];
TEL: string[7]
end;
var str:row;
Опис записів можливий і без використання імені типу, наприклад:
var str: record
FIO: string[20];
TEL: string[7]
end;
Звертання до запису в цілому допускається тільки в операторах при¬свою¬ван¬ня, де ліво-руч і праворуч від знака присвоювання використовуються імена зବписів однакового ти¬пу. У всіх інших випадках оперують окремими полями за¬пи¬сів. Щоб звернутися до ок¬ре¬мо¬го ком-по¬нента запису, необхідно задати ім'я запису і через крапку вказати ім'я потрібного поля, на¬приклад:
str.FIO, str.TEL
Таке ім'я називається складеним. Компонентом запису може бути також запис, у такому випадку складене ім'я буде містити не два, а більшу кількість імен.
Звертання до компонентів записів можна спростити, якщо користуватися оператором приєднання with. Він дозволяє замінити складені імена, що характеризують кожне поле, на прості імена полів, а ім'я запису визначити в операторі приєднання:
with M do OP;
Тут М – ім'я запису, ОР – оператор, простий чи складений.
Оператор ОР являє собою область дії оператора приєднання, у межах якої можна не використовувати складені імена.
Ініціалізація записів здійснюється за допомогою типізованих констант:
type
RecType= Record
x,y: Word;
ch: Char;
dim: Array[1..3] of Byte
end;
const
Rec: RecType= ( x: 127; y: 255; ch: 'A'; dim: (2, 4, 8) );
ЗАВДАННЯ ДО РОЗВ’ЯЗАННЯ
1. Інформація про пісні подана у вигляді: назва, виконавець, час. Скласти програму, яка впорядковує дані за вибором користувача по полям, а також за спаданям чи зростанням.
2. Відомості про студента складаються з його імені і прізвища і та номера групи, в якому він навчається. З'ясувати, чи є студенти, що мають однакові прізвища і надукувати їх, вказуючи групу.
3. type dekart=record x,y:real end;
polar=record r,f:real end; {r.0,p<f<p}
Описати процедуру DP(d,p), що перетворює координати точки на площині з декартових d в полярні p, PD(p,d), що виконує зворотнє перетворення.
4. Скласти програму друку документу "Екзаменаційна відомість" (предмет, номер групи, дата екза¬мену, 25 рядків з полями: прізвище студента, номер залікової книжки, оцінка за екзамен).