Пример 1. t_date=record {Тип для работы с датами}

Const MaxLen = 25;

type t_range=1.. MaxLen;

t_date=record {Тип для работы с датами}

day: 1..31;

month: 1..12;

year: 0..9999

end; {end записано под соответствующим record}

t_student=record {Тип для хранения информации о студенте}

name: string[20];

birthday: t_date; {Поле-запись}

group: string[5];

marks: array[1..4] of 2..5

end;

t_group= array[t_range] of t_student;

var d1, d2: t_date; {Переменные для хранения дат}

group: t_group;{Переменная для хранения информации о студентах группы}

Над записями, как едиными целыми, не определены никакие операции. Совместимость по присваиванию требует тождественности типов. Для описанных выше переменных допустимы присваивания:

d1:=d2; group[1]: =group[25].

Обращение к полю записи представляет собой составное имя:

Составное имя можно использовать везде, где допустим тип поля. Например, d1.day:=5; read(group[1].name). Имена полей записей могут совпадать с именами других переменных, при этом путаницы не возникает, так как обращение к ним иное. Например, group - массив, group[i] - элемент массива, group[i]. group - поле i-й записи.

Пример 2. Процедура для определения даты следующего дня невисокосного года:

Procedure next_date(d1: t_date; var d2: t_date);

{d1 - данная дата, d2 - результат (дата следующего дня)}

var max: 28..31; {число дней в месяце}

begin d2:=d1;

case d2.month of {Определение числа дней в заданном месяце}

2: max:=28;

4, 6, 9, 11: max:=30

else max:=31

end;

if d2.day<max then d2.day:= d2.day+1

else begin d2.day:= 1;

if d2.month<12 then d2.month:= d2.month+1

else begin d2.month:= 1; d2.year:= d2.year+1

end

end

end;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: