Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programuv_good.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
990.21 Кб
Скачать

5.Комбіновані структури даних.

а)Записи

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

Об’єднання цих типів в одну структуру

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

В кінці запис закривається службовим словом end.

TYPE

<ім’я типу запису> = RECORD

<ідентифікатор1>: <тип поля>;

<ідентифікатор2>: <тип поля>;

...

END;

Наприклад

Type

Student = record

Name: string;

Yy, mm, dd: word;

Pol: (female, male);

Educ: (state, pay);

Usp:real;

End;

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

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

Якщо весь запис позначається деяким ідентифікатором деякої змінної, то кожне ім’я поля має вигляд

<ідентифікатор запису>.<ідентифікатор поля запису>

Наприклад

a.name , a.year, a.pol, a.educ

Враховуючи, що запис є комбінацією різних типів, можна будувати записи із записів.

Наприклад

Дату народження можна оголосити не трьома цілими числами, а записом трьох чисел.

Type

Date = record

Yy: integer;

Mm, dd: byte;

Таким чином ми отримуємо запис в записі.

Для доступу до окремих полів дати народження, в цьому випадку теж використовуються складені ідентифікатори.

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

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

WITH <ім’я запису>DO <оператор над полями>;

Наприклад

With a do

Begin

Readln(name);

With date born do

Readln(yy, mm, dd);

Readln(usp);

Операції над записами зводяться до операцій відношення до порівняння на рівність і не рівність.

Рівні – записи, в яких структура і значення всіх полів однакові.

Наприклад

Програма формування бази даних про студентів у вигляді масиву із п записів.

Type

Student = record

{}

end;

var

a: array[1..n] of student;

i, j: byte;

begin

for i:=1 to n do

with a[i] do

begin

writeln(‘введіть ім’я’);

readln(name);

with date born do

begin

writeln(‘введіть дату народження’);

readln(yy,mm,dd);

end;

writeln(‘введіть стать: 0-жін; 1-чол’);

readln(j);

if j=1 then pol:=male else pol:=female;

writeln(‘введіть форму навчання: 0-держ; 1-плат’);

readln(j);

if j=1 then educ:=pay else educ:=state;

writeln(‘введіть успішність’);

readln(usp);

end;

Формування баз даних має свої переваги і недоліки. До переваг відносять те, що масив розміщується у швидкій оперативній пам’яті, а це значно зменшує час роботи.

Крім того, розміри масивів є фіксованими, а отже збільшити кількість записів не вдасться.

Набагато зручніше реалізовувати бази даних у вигляді файлів.

б) Записи з варіантами

Часто бази даних повинні містити інформацію, структура якої залежить від значень окремих полів.

Наприклад

В базі даних про студентів для хлопців актуальним може бути відношення до військової служби (придатний, непридатний) і зріст (в танкові війська до 175 см), а для дівчат інтерес може мати колір волосся, очей, улюблена косметика.

Таким чином, якщо поле pol має значення male, то запис повинен мати два додаткових поля (армія, зріст). Якщо ж pol дорівнює female, то потрібно три додаткові поля. Решта ж полів мають бути однакові.

Для реалізації таких комбінованих типів використовуються записи із варіантними частинами. Вони будуються подібно до звичайних записів, але використовують оператор case.

Зауваження

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]