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

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

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
4
Комбинированный тип = record {фиксированная часть записи} {; вариантная часть записи} end . |
Фиксированная часть записи =
Идентификатор {, Идентификатор} : Тип
{; Идентификатор {, Идентификатор} : Тип} .
Вариантная часть записи =
сase Селектор варианта of
Вариант записи {; вариант записи }
end .
Вариант записи = Константа {, Константа} : ( Список полей ) .
Селектор варианта = Идентификатор переменной порядкового типа.
Пример 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. |
Пример 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. |