Комбинированный тип данных

СОДЕРЖАНИЕ: 

  1. Комбинированный тип. Записи
  2. Описание записей
  3. Операции с записями
  4. Оператор With
  5. Пример программы с использованием записи
  6. Работа с файлами записей*

 

Комбинированный тип. Записи

Все структурированные типы данных, с которыми мы уже познакомились, представляют собой совокупности однотипных величин. Но программирование часто используют для моделирования каких-либо объектов или явлений. Для того чтобы смоделировать объект, необходимо указать его характеристики. Так, например, 1) объект окружность имеет следующие характеристики: координаты центра, радиус; 2) объект преподаватель имеет характеристики: фамилия, имя, отчество, название предмета, который он преподает, номер группы, у которой он ведет свой предмет.

Указывать характеристики (свойства) объектов в программе гораздо удобнее, если все свойства одного объекта объединить в одну группу. Для этого в Паскале существует такой тип как записи. Запись – комбинация объектов разного типа. Составляющие запись характеристики называются полями. В записи каждое поле имеет свой идентификатор (имя). Так, например, полями для типа круг будут x, y, R.

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

 

Описание записей

Описание комбинированного типа представляет собой список описаний его элементов (полей). Описание записи выглядит следующим образом:

Type

<имя типа> = Record

<имя поля1> : <тип поля1>;

<имя поля2> : <тип поля2>;

 End;

Здесь Record и End  — служебные слова.

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

 Пример:

Type

Round = Record

 x, y : Real;

 R : Real;

 End;

Var

Circle1, Circle2 : Round;

Krugi : Array[1..5] Of  Round;

 

Операции с записями

Переменной типа запись можно присвоить только значение переменной такого же типа, т.е.

Circle1:= Circle2;

Circle2:= Krugi[1];

Krugi[5]:= Krugi[3];

 

(см. Описание записей)

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

                                    <имя переменной> . <имя поля>

Пример:

Circle1.x := 5;

Circle1.y := 8;

Circle1.R := 2;

Read(Krugi[i].R);

Writeln(Krugi[i].x);      и т.д.

 

Оператор With

Легко заметить, что постоянно указывать имя записи – не очень удобно. Чтобы облегчить работу программиста, существует оператор присоединения With. Общий вид оператора  With:

With  <имя переменной>   Do   <оператор>;

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

Пример: часть программы

Circle1.x := 5;

Circle1.y := 8;

Circle1.R := 2;

может выглядеть следующим образом:

With  Circle1  Do

Begin

      x := 5; y := 8; R := 2;

End;

 

 

Пример программы с использованием записи

Пример: сформировать список записей, содержащих информацию о десяти студентах (фамилия, номер группы, 5 оценок за последнюю сессию). Вывести фамилии студентов имеющих средний балл => 4.

Type

student = record

name: string[10];

group: integer;

ball: array[1..5] of 2..5;  {массив, содержащий оценки}

srednball: real;   {средний балл}

End;

Var

st: array[1..10] of student;

i, j, d: integer;

Begin

For i:=1 To 10 Do

Begin

WriteLln (?Введите фамилию студента?);

ReadLn (st [i].name);

WriteLln (? Введите номер его группы?);

ReadLn (st [i]. group);

WriteLln (? Введите ?);

For i:=1 To 5 Do ReadLn (st [i].ball[j]);

d:=0;

For i:=1 To 5 Do d:= d + st [i].ball[j];

st [i].srednball := d /5;

End;

For i:=1 To 10 Do

      If  st [i].srednball >= 4 Then WriteLln (st [i].name)

End.

 

Работа с файлами записей*

Чаще всего записи используются как элементы файлов, составляющих компьютерные информационные системы. Пример программы см. на стр. 132-133 учебника И.Г. Семакин, А.П. Шестаков «Основы программирования».

  • Прямой доступ к записям файла*

В стандарте языка Паскаль допустим только последовательный доступ к элементам файла. Одной из дополнительных возможностей, реализованных в Турбо Паскале, является прямой доступ к записям файла.

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

                     Seek (FV, n)

Здесь FV — имя файловой переменной, n — порядковый номер.

Пример программы см. на стр. 133-134 учебника И.Г. Семакин, А.П. Шестаков «Основы программирования».

Контрольные вопросы

  1. Понятие записи в Паскале.
  2. Что называют комбинированным типом данных?
  3. Как описывается комбинированный тип данных?
  4. Назовите основные типы операций работы с записями.
  5. С помощью какой процедуры производится прямой доступ к записям файла?