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

Тип запись

Систематизация: необычный, структурированный (непростой) тип.

Имя определяет программер.

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

Отличие записи от массива:

- компонентами являются данные различных типов;

- элементу массива соответствует(ют) индекс(ы), а элементу записи Пример использования данных типа запись (полю) - имя поля.

Таким макаром, данное типа запись есть информационная модель объекта, представляющего из себя совокупа фиксированного количества разнотипных компонент. К примеру, анкетные данные об учащемся - фамилия, год рождения, пол.

Структурная организация

По структуре тип запись - последовательность поименованных полей (рис.22.1). Размер поля определяется типом полей.

Имя первого поля Тип поля
Имя второго поля Пример использования данных типа запись Тип поля
. . .
. . .
Имя последнего поля Тип поля

Рис. 22.1. –Структура записи

Определение типа

В общем случае данное типа запись состоит из 2-ух частей – неизменной и вариантной. Пока определим только тип запись с неизменной частью (рис.22.2). Запись с вариантной частью определим позже.

К примеру, определим тип запись для анкетных данных ученика

type anketa = record

fam Пример использования данных типа запись:string[20];

gr: word;

pol:char

end;

Рис. 22.2. –Определение типа запись

Огромное количество значений

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

Огромное количество операций

Не существует операций над записью полностью (кроме унарной операции определения адреса переменной типа запись). Можно делать операции с компонентами записи - полями. Тип поля определяет набор операций, которые можно делать над полями. Элемент записи (поле) определяется синтаксической диаграммой, показанной на рис. 22.3.

Рис. 22.3. –Элемент записи

К примеру, имеется var ank:anketa Пример использования данных типа запись; {тип anketa определен ранее}, нужно занести в эту переменную анкетные данные Иванова 1965 года рождения:

ank.fam:='Иванов';

ank.gr:= 1965;

ank.pol:='м'

Можно идентифицировать поле записи короче, если использовать присоединяющий оператор, синтаксис которого показан на рис. 22.4.

Рис. 22.4. –Присоединяющий оператор

В операторе, стоящем после знака DO, поле записи можно задавать только Пример использования данных типа запись именованием поля. В этом операторе все имена проверяются на принадлежность записи, имя которой обозначено после знака WITH. Если имя совпадает с именованием поля, то деяния выполняются над полем записи. Потому нужно быть усмотрительным при совпадении имен переменных с именами полей записей. Приведенный выше пример может быть записан последующим образом:

with Пример использования данных типа запись ank do begin

fam:='Иванов';

gr:= 1965;

pol:='м'

end

Имя записи не должно содержать никаких переменных, подлежащих изменению в операторе, стоящем после WITH. К примеру, если имеется var inform:array[1..100]of anketa, то нельзя записать последующие деяния:

with inform[i] do begin

fam:='Иванов';

gr:= 1965;

pol:='м';

i:=i+1

end

потому что изменение i Пример использования данных типа запись снутри тела оператора присоединения изменяет имя записи, которая присоединяется к полям. В данном случае правильной будет последующая последовательность операторов:

with inform[i] do begin

fam:='Иванов';

gr:= 1965;

pol:='м'

end;

i:=i+1

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

О самолете имеется последующая информация:

- бортовой номер (целое число)

- тип самолета ( заглавие, состоящие Пример использования данных типа запись из знаков. К примеру,

- ТУ154, ИЛ86, ЯК42)

- дата еще одного профилактического ремонта (денек в границах 1..31, месяц в границах 1..12, год - целое число);

- бригада, проводившая последний профилактический ремонт (фамилия бригадира, последовательность знаков)

Информационная структура представляет собой фиксированный набор разнотипных компонент, потому структура - типа запись. Найти тип ТINF, как тип запись, состоящую Пример использования данных типа запись из 4-х полей:

ТINF = record

bort:longint;

tip_sam:string[5];

d_prof:data;

brigada:string[10]

end;

запись типа data имеет структуру:

data=record

den:1..31;

mes:1..12;

god:word

end;

Как объявим переменную SAM типа INF var SAM:INF;

так сразу в памяти получим структуру, изображенную на рис. 22.5.

SAM ОП
SAM.bort Longint Longint Пример использования данных типа запись
SAM.tip_sam String[5] String[5]
SAM.d_prof .den 1 ..31 1 ..31
SAM.d_prof .mes 1 .. 12 1 .. 12
SAM.d_prof .god Word Word
SAM.brigada String[10] String[10]

Рис. 22.5. –Переменная SAM в ОП

Постановка задачки

К аэропорту приписано 200 самолетов. Найти все самолеты, которым на завтрашний день предписан профилактический ремонт.

Задачка относится к информационно-поисковым системам. Методы Пример использования данных типа запись их довольно ординарны. Главным является выбор структуры данных - разработка информационной модели адекватной исследуемым объектам. Для нашего варианта, в качестве информационной модели можно избрать массив из 200 частей типа запись. Структура этой записи приведена на рис. 22.5.

Информационная модель

Обрабатываемый информационный объект можно найти последующим образом:

const n=200;{граница массива}

type Пример использования данных типа запись data=record {дата}

den:1..31;

mes:1..12;

god:word

end;

INF = record {информация об одном самолете}

bort:longint;

tip_sam:string[5];

d_prof:data;

brigada:string[10]

end;

infarray=array[1..n]of INF; {структура информационного

массива}

var samolets:infarray;

Рассредотачивание оперативки соответственное обрабатываемому информационному объекту показан на рис. 22.6.


Samolets ОП
samolets[1].bort longint
samolets Пример использования данных типа запись[1].tip_sam string[5]
samolets[1].d_prof.den 1 .. 31
samolets[1].d_prof.mes 1 .. 12
samolets[1].d_prof.god Word
samolets[1].brigada string[10]
samolets[2].bort longint
samolets[2].tip_sam string[5]
Samolets[2].d_prof.den 1 .. 31
samolets[2].d_prof.mes 1 .. 12
samolets[2].d_prof.god Word
samolets[2].brigada String[10]
. .
samolets[200].bort longint
samolets[200].tip_sam string[5]
samolets[200].d_prof Пример использования данных типа запись.den 1 .. 31
samolets[200].d_prof.mes 1 .. 12
samolets[200].d_prof.god Word
samolets[200].brigada string[10]

Рис. 22.6. –Информационный объект

Программная модель

program remont;

const n=200;

type data=record {дата}

den:1..31;

mes:1..12;

god:word

end;

INF = record {информация об одном самолете}

bort:longint;

tip_sam:string[5];

d_prof:data;

brigada:string[10]

end;

infarray=array[1..n]of Пример использования данных типа запись INF; {структура информационного

массива}

var samolets:infarray;{}

plan_data:data; {дата}

i:integer;

begin

{первоначальное наполнение инфы в картотеке}

for i:=1 to n do

with samolets[i] do begin

writeln('Вв.инф. по ',i,' карточке');

readln(bort);

readln(tip_sam);

with d_prof do readln(den, mes, god);

readln(brigada Пример использования данных типа запись)

end;

writeln('введите плановую дату');

with plan_data do readln(den,mes,god);

{поиск плановых бортов}

writeln('Запланированы на ',
plan.data.den:2,'.',plan.mes:2,'.',plan.god:4,':');

for i:=1 to n do

with samolets [i].d_prof do

if (den=plan_data.den)and

(mes=plan_data.mes)and

(god=plan_data.god) then

writeln('БОРТ Пример использования данных типа запись=',samolets[i].bort:10,

' ТИП=',samolets[i].tip_sam)

end.


primer-ispolzovaniya-dannih-tipa-zapis.html
primer-ispolzovaniya-metoda-nyutona-dlya-resheniya-uun.html
primer-ispolzuem-ryad-chisel-iz-predidushego-primera.html