У вас вопросы?
У нас ответы:) SamZan.net

Лекция 9 Комбинированный тип данных Комбинированный тип record {фиксированная ча

Работа добавлена на сайт samzan.net: 2015-07-10

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 5.3.2025

4

Лекция 9

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

Комбинированный тип = record

{фиксированная часть записи}

{; вариантная часть записи}

end .

Фиксированная часть записи =

Идентификатор {, Идентификатор} : Тип

{; Идентификатор {, Идентификатор} : Тип} .

Вариантная часть записи =

сase Селектор варианта  of

Вариант записи {; вариант записи }

end .

Вариант записи = Константа {, Константа} : (  Список полей ) .

Селектор варианта = Идентификатор переменной порядкового типа.

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

Пример 1: Склад

Наименование товара

Количество (кг)

Цена

Итого

Абрикосы

200

2.5

500

Сливы

150

3

450

Персики

140

5

700

var Tovar: record

Nazv: String[30];

Kol: Real;

Cena: Real;

Itogo: Real;

end;

begin

Tovar.Nazv := “Абрикoсы”;

Tovar.Kol := 200;

Tovar.Cena := 2.5;

Tovar.Itogo := Tovar.Kol * Tovar.Cena;

End.

type TTovar: record

Nazv: String(30);

Kol, Cena, Itogo: Real;

end;

var Tovar : array [1..3] of  TTovar; i:Byte;

begin

for i:=1 to 3 do

begin

Write(“Введие название товара =>”);

Readln(Tovar[i].Nazv);

Write(“Цену товара => ”);

Readln(Tovar[i].Cena);

Write(“Вес товара=>”);

Readln(Tovar[i].Kol);

Tovar[i].Itogo := Tovar[i].Kol * Tovar[i].Cena;

end;

end.

type TTovar: record

Nazv: String[30];

Kol, Cena, Itogo: Real;

end;

var Tovar: TTovar;                  

F: file of TTovar;

procedure In;

{эта процедура создаёт файл данных на диске}

begin

Rewrite(f);

for i:=1 to 10 do

begin

Write(“Введие название товара ”);

Readln(Tovar.Nazv);

Write(“Введите цену ”);

Readln(Tovar.Cena);

Write(“Введите вес товара ”);

Readln(Tovar.Kol);

Tovar.Itogo:=Tovar.Kol*Tovar.Cena;

Write(f, Tovar);

end;

end.

procedure Out;

{эта процедура читает файл данных с диска }

begin

reset(f);

while not(eof(f)) do

begin

Write(Tovar.Nazv);

Write(Tovar.Cena);

Write(Tovar.Kol);

Writeln(Tovar.Itogo);

end;

end.

begin

Assign(f, “d:\Info\Sklad.ttt”);

In;

Out;

end.

  1.  Запись может быть элементом другой записи или массива

Пример 2: Деканат

Фамилия И.О. студента

Год рожд -я

Группа

Отметки

математика

физика

информатика

история

Иванов И.И.

1980

312

4

5

4

4

Петров П.П.

1979

322

5

3

5

5

Сидоров С.С.

1980

312

3

5

5

4

type TMarks = record

Matem,Fizika,Inf,Istor:1..5;

end;

TStudent = record

Name : String[30];

God, Gruppa : Integer;

Otmet : TMark;

end;

var Stud : TStudent;

begin

Stud.Name := ”Иванов И.И.”;

Stud.God := 1980;

Stud.Gruppa := 312;

Stud.Otmet.Matem:=4;

Stud.Otmet.Inf:=4;

end;

Записи с вариантами

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

type Sex = (Men, Women);

M = record

Name : String[30];

Date : 1900..2050;

M_W : Sex;

case Sex of

Men : (Work : String[25]);

Women : (Child : Byte; );

end;

var X : M;

begin

X.Name:=”Яблочкина А.И.”;

X.Date:=1970;

X.M_W:=Women;

X.Child:=2;

end.

type Figure = (Square, Triangle, Circle);

Param = record

X,Y : Real;

Fig : Figure;

case Fig of

Square : (Side : Real);

Triangle :

  (Side1,Side2,Angle:Real );

Circle : (Radius : Real);

end;

var MySquare, MyCircle : Param;

begin

MySquare.X:=3; MySquare.Y:=5;

MySquare.Side:=5;

MySquare.Fig:= Square;

MyCircle.X:=2; MyCircle.Y:=7;

MyCircle.Radius:=6;

end.

Оператор присоединения

Оператор присоединения = with список имен записей (полей) do оператор.

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

var Stud : TStudent;

begin

  with Stud do

begin

Name := ”Иванов И.И.”;

God := 1980;

Gruppa := 312;

with Otmet do

 begin

Matem:=4; Fizika:=5;

Inf:=4; Istor:=4;

 end;

end;

end.




1. Тема 12Кадровий облік і облік заробітної плати
2. Тема- Проектирование баз данных БД.html
3. тематическую основу модели ICM Independent Chip Model
4. Поль Сартр Экзистенциализм это гуманизм Я хотел бы выступить здесь в защиту экзистенциализма от ряда у.html
5. Статья 64 Гарантии при заключении трудового договора [Трудовой кодекс РФ] [Глава 11] [Статья 64] Запрещается
6. Контрольная работа по правоведению выполняется по вариантам согласно случайному порядку
7. тематике метафизике и физике относятся к воззрениям древнегреческих ученых
8. это тяжкая дань. которую зритель вынужден платить заказчику программы в обмен на сплошь и рядом сомнительно.html
9. Санитарногигиеническую характеристику источников загрязнения атмосферного воздуха этими веществами для
10. Проблеми розмежування функцій і завдань центральних і місцевих органів влади та їхнього партнерства у сфері надання державних і громадських послуг