Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОАиП_1 / Module2 / УЭ-5

.html
Скачиваний:
17
Добавлен:
25.02.2016
Размер:
14.38 Кб
Скачать

Документ без названия

Записи       Для использования в программе множество однотипных данных используются массивы. Однако, очень часто возникает необходимость использовать разнородные типы данных для описания одного и того же объекта. В этом случае в программе используется тип, называемый запись.    Записи - структурированный тип данных, позволяющий хранить вместе переменные, имеющие различные типы данных.       Запись позволяет объединить в одну связанную структуру различные по типу и смыслу элементы, т.е. поля. Для обработки в программе доступна как вся запись целиком, так и отдельные ее поля.  ЗаписьЗапись с вариантом Общий вид type   t = record   id11, id12, …: type1;   id21, id22, …: type2;   ………………. end; type   v = record(фиксированный)   a: type1   b: type2   ……   case n: typen of (вариативный)       c1:(t11: type11;           t12: type12; …);       c2:(t21: type21;           t22: type22; …);       …….. end; var   z: v; Описание type date = record   month: 1..12;   day: 1..31;   year: integer end; var   d: date;       В ряде задач удобно использовать массивы из записей: type person = record   nom_gr: byte;   fio: string [20];   sr_ball: real; end; var   m2: array [1..30] of Person;   m2[i].FIO type   kind = (married, single);   person = record       name: string;       datebirth: date;   case yesno: kind of       married: (name1: string; date1: date);       single: ()   end; var   p: person; Инициализация   d.month := 1;   d.day := 12;   d.year := 2003;       При инициализации записей удобно использовать оператор with:   with m1 do begin       nom:=500;       marka:= 'BMW';       FIO:= 'Петров'; end;   with p do   begin       yesno := married;       name := 'panin';       case yesno of           married:           begin           name1 := 'panina';           with date1 do           begin               day := 30;               month := 12;               year := 1968           end;           end;   end; Пример       Обработка массива записей: type   init = record       fam: string [20];       name: string [20];       otch: string [20]; end;   zap = record       fio: Init;       year: integer;       pris: char; end; var   i, n: integer;   grup: array [1..30] of zap; begin   write ('');   read (n);   write ('');       for i:=1 to n do       begin           write ('', i, '');           read (grup[i].fio.fam);           write ('', i, '');           read (grup[i].fio.name);           write ('', i, '');           read (grup[i].fio.otch);           write ('', i, '');           read (grup[i].year);           write ('', i, '');           read (grup[i].pris);       end;   writeln ('');       for i:=1 to n do       begin           with grup[i] do               begin                   write (year, '', pris);                   with fio do                   write (fam, '', name, '', otch);               end;       end; end.       Необходимо собрать сведения о сотрудниках колледжа: фамилию, дату рождения и, если есть семья, то фамилию и дату рождения супруги (супруга): type   kind = (married, single);   date = record       day: 1..31;       month: 1..12;       year: integer; end;   person = record       name: string;       datebirth: date;       case yesno: kind of           married: (name1: string; date1: date);           single: () end; var   p: person; begin       with p do           begin               yesno := married;               name := 'panin';               with datebirth do                   begin                       day := 14;                       month := 5;                       year := 1962                   end;                   case yesno of                       married:                       begin                           name1 := 'panina';                           with date1 do                               begin                                   day := 30;                                   month := 12;                                   year := 1968                           end;               end;           end; end; with p do       write(' ', name); with p.datebirth do       writeln(' ', day, '/', month, '/', year); with p do       write(' ', name1); with p.date1 do       write(' ', day, '/', month, '/', year); readln end.

Соседние файлы в папке Module2