Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4 основи програмування книга.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.77 Mб
Скачать

11. Складні типи даних: записи і файли

11.1. Складні типи даних у мові Pascal

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

Стандартні типи Типи, що визначаються програмістом

Integer; Тип, що перераховується;

Real; Скалярний тип.

Char:

Boolean.

З поняттям простого типу пов’язані:

  • ім’я типу;

  • множина допустимих значень типу;

  • набір операцій, що визначені на типі;

  • набір відношень, що визначені на типі;

  • набір функцій, що визначені або набувають значення на типі.

З даних простих типів можна конструювати дані складних типів. Єдиним (поки) прикладом складних типів є регулярні типи (значення - масиви). З поняттям складного типу пов’язані:

  • ім’я типу;

  • спосіб об’єднання даних у дане складного типу;

  • спосіб доступу до даних, що утворюють складне дане типу;

Так, визначення

Type

Vector = array [1..N] of Integer;

Var

X : Vector;

задає N цілих чисел, що об’єднані в єдине ціле - масив з іменем Х. Доступ до компоненти масиву здійснюється за його іменем Х і значенням індексного виразу: X[i].

Крім регулярних типів, у мові визначені ще деякі складні типи. Кожне таке визначення задає свій, характерний механізм об’єднання даних у єдине ціле і механізм доступу до даних – компонент складного даного.

Це - комбінований тип (записи), файловий тип (файли), множинний тип (множини) і посилальний тип (посилання).

11.2. Записи

Значеннями так званого комбінованого типу даних є записи. Комбінований тип задає образ структури об’єкта – даного цього типу, кожна частина якого (поле) може мати зовсім різні характеристики.

Таким чином, запис – це набір різнотипних даних, що об’єднані спільним іменем. Більш формально, запис містить визначене число компонент, що називаються полями.

У визначенні типу запису задається ім’я і тип кожного поля запису:

<комбінований тип >::= Record

< список полів >

End

<список полів>::= <фіксов. част.> | <фіксов. част.>;

<варіант. част.> | <варіант. част.>

<фіксована частина >::= <секція запису > {,<секція запису >}

< секція запису >::= <ім’я поля >{,<ім’я поля >}:< тип > < пусто >

Синтаксис записів, що містять варіантну частину – записів з варіантами – ми визначимо нижче. Відповідні синтаксичні діаграми записів з варіантами:

Комбінований

тип

Фіксована частина

Приклади.

Приклад 11.1

Type

Complex = Record

Re, Im : Real

end;

Var

z1, z2 : Complex;

Приклад 11.2

Type

Name = array [1..15] of Char;

Student = Record

F1,F2,F3 : Name;

Day : 1..31;

Month : 1..12;

Year : integer;

StudDoc : integer

end;

Var

Group : array [1..25] of student;

S : Student;

При позначенні компоненти запису в програмі слідом за іменем запису ставиться крапка, а потім ім’я відповідного поля. Таким чином здійснюється доступ до цієї компоненти. Наприклад:

  1. z1.Re := 2;

z1.Im := 3;

M := sqrt(sqr(z1.Re) + sqr(z1.Im));

2) S.F1 := Group[i].F1;

S.Year := Group[i + 1].Year;

writeln( Group[i].StudDoc);

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

Приклад 11.3

Type

Name = array[1..20] of Char;

FullName = Record

Name1, Name2, Name3 : Name

end;

Date = Record

Day : 1..31;

Month : 1..12;

Year : integer

end;

Student = Record

StudName: FullName;

BirthDay: Date;

StudDoc: integer

end;

Var

StudGroup : Array [1..30] of Stugent;

A, B : Student;

Наприклад, доступ до поля day змінної A можливий по імені A.BirthDay.Day, а до першої букви поля Name2 імені студента з номером 13 змінної StudGroup - по імені StudGroup[13].StudName.Name2[1]