Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
chast3.doc
Скачиваний:
7
Добавлен:
03.11.2018
Размер:
345.09 Кб
Скачать

14.1Тип запись в Turbo Pascal

14.1.1 Описание типа

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

Задача14.1:

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

Если в группе 25 человек, то для хранения одной фамилии студента требуется массив из 15 символов, тогда для хранения всех фамилий необходим двумерный массив 15*25, для хранения оценок нужен был бы еще один массив 5*25, а для хранения средних баллов нужен еще один массив 25 элементов.

Совокупность данных в данном примере можно рассматривать как запись (комбинированный тип данных). В общем случае запись представляет собой совокупность огрониченного числа логически связанных компонентов, принадлежащих к разным типам.

Определение запись включает указание ее имени, имен отдельных компонентов и соответствующих типов данных:

Type

<имя-записи>=record

<имя-компонента-1>:<тип>

<имя-компонента-2>:<тип>

<имя-компонента-n>:<тип>

End;

Данные примера, приведенного выше, можно представить следующим образом:

Type

Stud=record

Fam:string[15];

b1,b2,b3,b4,b5:2..5; sb:real;

end;

Здесь переменная sb имеет смысл среднего балла; b1,b2,b3,b4,b5 обозначают баллы по соответствующим дисциплинам; fam ото совокупность строковых символов обозначающих фамилии студента.

Если информацию по всем 25 студентам необходимо хранить в памяти ЭВМ , то вводится отдельный массив, представляющий собой массив записей.

14.1.2 Селектор типа запись и оператор присоединения

Компонент записи определяется именем записи и именем этого компонента, разделенными точками, например stud.fam, stud.b1; в программах данная конструкция называется селектором записи.

Приведем текст программы для задачи 14.1:

Program sball;

Type

Stud=record

Fam:string[15];

b1,b2,b3,b4,b5:2..5; sb:real;

end;

Var

tbl: array [1..25] of stud;

y:stud;

I,j,k,m:integer;

X:real;

Begin

{вод исходных данных}

Writeln(‘введите количество записей’);

Readln(m);

Writeln(‘введите компоненты записей’);

For I:=1 to m do

With tbl[i] do- В языке Паскаль используется оператор присоединения (with),

Readln(fam,b1,b2,b3,b4,b5); который позволяет осуществлять доступ к компонент

For I:=1 to m do записи т.о., как если бы они были простыми переменными.

With tbl[i] do синтаксис оператора with <имя записи> do

Readln(fam,b1,b2,b3,b4,b5)/5; <оператор>

For I=1 to m-1 do

Begin

K:=I;

X:=tbl[j].sb;

For j:=i+1 to m do

If tbl[j].sb>x

Then

Begin

K:=j;

X:=tbl[j].sb;

End;

Y:=tbl[k];

tbl[k]:=tbl[i];

tbl[i]:=y;

end;

for i:=1to m do

with tbl[i] do

writeln(‘fam:15,sb:6:3’);

end.

В приведенной программе приняты следующие обозначения m-число студентов в группе, y-вспомогательная запись, необходимая для промежуточного запоминания элементов массива tbl при перестановке значений его элементов; x, k-вспомогательные переменные для запоминания максимального текущего значения среднего балла и его индекса в массиве записей.

14.1.3 Вложенные записи.

Допускается использование записи в качестве элемента другой записи. В результате получается сложная запись.

Пример 14.1.2

Хранение анкетных данных в памяти ЭВМ (фрагмент описания программы):

Var

Anketa: record

Npp:integer;

Fio:record;

Fam,im,ot:string[15];

End;

Dr:record

God:1900..2100;

Mes:string[8];

Den:1..31;

End;

Pol:string[3];

End;

Элементами записи anketa являются так же и записи fio и dr. В результате получается сложная запись. Такая анкета хранит информацию об одном человеке, чтобы хранить информацию о большем количестве людей запись должна иметь тип массива с необходимым числом элементов.

14.1.4.Запись с вариантами.

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

Синтаксис записи с вариантами может быть представлен следующим образом:

Type

<имя-записи>=record

{|<имя-компонента>:<тип>;|}

Case<переменная>:<тип> of

{|<константа выбора>:(<имя-компонента>:<тип>;)|}

End.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]