Записи

Запись - это структура данных, состоящая из фиксированного числа разнотипных компонент, называемых полями записи. Записи используются для представления разнородной, но логически связанной информации.

Каждое поле записи имеет имя, которое дается ему при объявлении записи.

В Borland Pascal определены записи двух типов: записи с фиксированными полями и вариантные записи (рис. 4.33).

Записи с фиксированными полями. Синтаксическая диаграмма записи с фиксированными полями представлена на рис. 4.34.

Как любой тип данных языка, записи можно определить двумя способами:

• при объявлении переменных, например:

Var Zapl,Zap2: record {две записи, состоящие из 5 полей}

F,S:real; {два поля вещественного типа} A,B:integer; {два поля целого типа}

C. char; {поле символьного типа}

end;

Zap3: record {запись, состоящая из 3 полей}

S: string [80];{символьная строка длиной 80 байт} A: array [1..20] of real; {одномерный массив на 20


вещественных чисел} Flag:: boolean; {поле логического типа} end;...

{тип «запись, состоящая из 5 полей»} {два поля вещественного типа}

{два поля целого типа}

{поле символьного типа}

{тип «запись, состоящая из 3 полей»} S: string [80]; {символьная строка длиной 80 байт } A: array [1..20] of real; {одномерный массив на

20 вещественных чисел} Flag: boolean; {поле логического типа} end;

Zapl, Zap2:Ztl; {две переменные типа Ztl}

Zap3:Zt2; ... {переменная типа Zt2 }

В качестве полей записи можно использовать другие записи, определенные как ранее, так и внутри записи, например:

Type Human=record {запись о сотруднике}

Fio: record {поле типа «запись из 3 полей»}

Farn, {фамилия}

Name, {имя}

Otch: string; {и отчество сотрудника»}

end; {Fio}

BirthDay: record {поле типа «запись из 3 полей»}

Day:!.. 31; {день}

Month: 1..12; {месяц}

Year: word; {год рождения}

end; {Birthday} end;... {Human}

или

Type Data - record

Day:!..31;

Month: 1..12;

Year: word;

end;

Famio = record

Fam, Name, Otch: string;

end;

Human = record {тип «запись о сотруднике»} Fio: Famio; {поле типа Famio } BirthDay: Data {поле типа Data } end;...

Рис.

4.35. Синтаксическая диаграмма

Можно объявить как отдельные переменные программы, так и массивы записей, например:

Var Sotr: Human;

Otdel: array [1..20] of Human;

Инициализация записей. Присвоить начальное значение конкретной записи можно, используя типизированные константы. Начальное значение полей записи при этом указывается в скобках через точку с запятой, причем для каждого поля указывается имя и значение через двоеточие, например:

Const

BirthDay: Data = (Year:1973; Month:6; Day:30); ...

Операции над записями. Над записями возможно выполнение следующих операций.

Доступ к полям записи. Синтаксическая диаграмма доступа к полям записи представлена на рис. 4.35.

Например, к полям переменной Sotr типа Human, объявленного выше, можно обратиться следующим образом:

Sotr. BirthDay. Day: =25;

m:=Sotr.BirthDay. Year;...

В том случае, если доступ к полям записи осуществляется многократно, целесообразно обращаться к полям записи с использованием оператора присоединения with (рис. 4.36). Например, для переменной Sotr типа Human возможны следующие варианты доступа к полю Day с применением оператора with:

Рис. 4.36. Синтаксическая диаграмма Оператор присоединения>



а) with Sotr do BirthDay.Day:=30;

б) with Sotr.BirthDay do Day: =24;

в) with Sotr.BirthDay do Daay:=31; r) with Sotr do

with BirthDay do Day:= 7;...

Присваивание записей. Операция возможна при совпадении типов записей и выполняется последовательно поле за полем. Например:

Otdel[i]:=Sotr;...

Ввод записей с клавиатуры и вывод их на экран выполняются по полям по правилам ввода переменных соответствующих типов.

Пример 4.23. Разработать программу, которая вводит в массив записей информацию о студентах учебной группы: фамилию и дату рождения. Организовать поиск информации о студенте, фамилия которого вводится с клавиатуры.

Program ex;

Type

data=record {тип запись данные о дате} у ear: word; {год} month: 1.. 12; {месяц} day:1..31; {день} end;

zap=record {тип запись о студенте} fam:string[16]; {фамилия} birthday:data; {дата рождения}

end;

Var fb:array[l,.25] of zap; { массив данных о группе студентов} fffstring; {строка для ввода фамилии} i,j,m,n:byte; key.boolean; {ключ поиска, если фамилия найдена - true} Begin

WriteLn(‘Введите данные о количестве студентов п

<< | >>
Источник: Иванова Г.С. Основы программирования. 2002

Еще по теме Записи:

  1. 10.8.1. Техника записи импровизаций
  2. ЗАВЕДИТЕ ПРИВЫЧКУ К ЗАПИСИ
  3. Глава первая Познакомьтесь с Крайоном Начало записей...
  4. Репортаж в записи
  5. Дети о взрослых из записей Д.С.
  6. Полторы дыры из записей Д.С.
  7. Стирание записи изображения и звука
  8. Упражнение ЗАПИСИ ДЛЯ ИСПРАВЛЕНИЯ КОНТРАКТА ДУШИ
  9. Прослушивание магнитофонной записи своего голоса проявляет детскую боязнь оказаться недостаточно хорошим.
  10. Врата настежь - налог на удобство из записей доктора Кстонова
  11. Очищение Старых Лемурийских Записей На рассвете Новой Эры на Земле
  12. Рассказывает потомственный мастер-кузнец Иван Николаевич Мельников, доживший до 99 лет (по моей давней записи).
  13. § 3. Средства записи и средства связи
  14. § 8 Церковная форма брака в России. – Значение договора об обручении. – Венчание и предварительные формальности. – Оглашение и обыск. – Метрические записи. – Доказательства брака и брачного состояния. – Спор о незаконности брака.
  15. Статья 453. Использование исполнения
  16. §8. АКТЫ ГРАЖДАНСКОГО СОСТОЯНИЯ
  17. Статья 964. Передача складского и заставного свидетельства
  18. 10.8. ЗАПИСЬ ИМПРОВИЗАЦИЙ
  19. Статья 577. Нотариальное удостоверение договора залога и регистрация залога
  20. Монитор