Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Pascal / Delphi / Лекции по Паскалю2 / Иллюстрации к Лекции 9 по информатике.doc
Скачиваний:
56
Добавлен:
02.05.2014
Размер:
1.05 Mб
Скачать

9.3. Записи

Формат описания типа данных:

TYPE < имя типа > = RECORD

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

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

END;

VAR

<идентификатор,…> : <имя типа>;

Например,

TYPE

STR = RECORD

FAM: STRING [35];

B1, B2, B3, B4, B5: 2..5;

sB: REAL

END;

VAR

ST1, ST2, ST3, ST4: STR;

Запись STR содержит семь компонент: фамилию студента, оценки по пяти предметам, средний балл.

Доступ к полям записи осуществляется через переменные ST1, ST2,ST3 и ST4 типа STR.

Описание переменных типа Запись в разделе описания переменных:

Например,

VAR

GRUPPA : ARRAY [1..30] OF RECORD

FAM: STRING [35];

NAME: STRING [15];

GOD_R: INTEGER;

END;

СОСТАВНОЕ ИМЯ:

ST1.FAM, ST1.B1, ST1.B2, ST1.B3, ST1.B4, ST1.B5, ST1.SB.

ST3.SB := (ST3.B1 + ST3.B2 + ST3.B3 + ST3.B4 + ST3.B5) / 5;

Использование в операторах ввода-вывода:

READ (ST1.FAM, ST1.B1, ST1.B2, ST1.B3, ST1.B4, ST1.B5);

WRITELN (ST2.FAM, ST2.SB);

Присваивание полям записи значений:

ST1.FAM := ‘Сидоров’;

ST2.FAM := ‘Петров’;

Применение присваивания к записям в целом:

ST3 : = ST2;

После выполнения этого оператора значения полей записи ST3 станут равны значениям соответствующих полей записи ST2. Т.е. оператор присваивания ST3 : = ST2 эквивалентен следующей группе операторов:

ST3.FAM : = ST2.FAM; ST3.B4 : = ST2.B4;

ST3.B1 : = ST2.B1; ST3.B5 : = ST2.B5;

ST3.B2 : = ST2.B2; ST3.SB : = ST2.SB;

ST3.B3 : = ST2.B3;

Массивы из записей:

TYPE

STR = RECORD

FAM: STRING [35];

B1, B2, B3, B4, B5: 2..5;

sB: REAL

END;

VAR

gruppa : array [1..30] of STR;

Составные имена в случае работы с массивом записей будут иметь вид:

GRUPPA[1].FAM; GRUPPA[1].B3; GRUPPA[25].FAM;

Оператор присоединения WITH

Формат оператора присоединения:

WITH < переменная типа запись > DO < оператор >;

FOR I := 1 TO 30 DO

WITH GRUPPA [I] DO

READLN (FAM, B1, B2, B3, B4, B5);

Вложение записей друг в друга:

WITH R1 DO

WITH R2 DO

WITH R3 DO

что эквивалентно записи

WITH R1R2R3 DO …

Для описания комплексных чисел могут быть использованы записи:

TYPE

COMPLEX = RECORD

DEYSTV : REAL; { действительная часть числа }

MNIM: REAL; { мнимая часть числа }

END;

VAR

A,B,C1,D2:COMPLEX;

BEGIN

A.DEYSTV := 73.8;

A.MNIM := 43.5;

Записи с вариантами

Формат объявления записи с вариантами:

TYPE

ZAP = RECORD

CASE <поле признака >: <имя типа > OF

<константа выбора 1 > : (поле, …: тип);

< константа выбора 2 >: (поле, …: тип);

END;

Компоненты каждого варианта (идентификаторы полей и их типы) заключаются в круглые скобки

TYPE

ПОЛ = (муж, жен);

ЧЕЛ = RECORD

ФАМ : SRRING [35];

ГОДРОЖД: 1970..2000;

МЖ: ПОЛ;

CASE МЖ: ПОЛ OF

МУЖ: (ВОЕН: BOOLEAN; СПЕЦ: STRING [30]);

ЖЕН: (ЗАМУЖ: BOOLEAN; ДЕТИ: BYTE)

END;

VAR

ST1, ST2, ST3, ST4: ЧЕЛ;

Поля ВОЕН и СПЕЦ используются только в том случае, если значение поля МЖ равно МУЖ, поля ЗАМУЖ и ДЕТИ – при значении поля МЖ – ЖЕН.

Замечания:

- Все имена полей должны отличаться друг от друга, даже если они встречаются в разных вариантах;

- Запись может иметь только одну вариантную часть, причем вариантная часть должна размещаться в конце записи;

- Если поле, соответствующее какой-либо метке, является пустым, то оно записывается так

< метка > : ( ) ;