Содержание
- 2. Запись - это структура данных, состоящая из фиксированного числа компонентов, называемых полями записи. В отличие от
- 3. Каждый раздел записи состоит из одного или нескольких идентификаторов полей, отделяемых друг от друга запятыми. За
- 4. К каждому из компонентов записи можно получить доступ, если использовать составное имя, т.е. указать имя переменной,
- 5. Чтобы упростить доступ к полям записи, используется оператор присоединения WITH: WITH DO где WITH, DO -
- 6. Турбо Паскаль разрешает использовать записи с так называемыми вариантными полями, например: type Forma = record Name:
- 7. Замечательной особенностью вариантной части является то обстоятельство, что все заданные в ней варианты накладываются друг на
- 8. КОНСТАНТЫ-ЗАПИСИ Определение константы-записи имеет следующий вид: : = ( ) где -- идентификатор константы; -- тип
- 9. Например: type point = record х, у: real end; vect = array [0..1] of point; month
- 10. Для записей с вариантными полями указывается только один из возможных вариантов констант. Например: type forma =
- 11. Пример: Из ведомости 3-х студентов с их оценками ( порядковый номер, Ф.И.О. и три оценки) определить
- 13. Скачать презентацию
Запись - это структура данных, состоящая из фиксированного числа компонентов,
Запись - это структура данных, состоящая из фиксированного числа компонентов,
В отличие от массива, компоненты (поля) записи могут быть различного типа. Чтобы можно было ссылаться на тот или иной компонент записи, поля именуются.
Структура объявления типа записи такова:
<имя записи> = RECORD <сп.полей> END
где
< имя записи > - правильный идентификатор; RECORD, END - зарезервированные слова (запись, конец); <сп.полей> - список полей; представляет собой последовательность разделов записи, между которыми ставится точка с запятой.
Каждый раздел записи состоит из одного или нескольких идентификаторов полей, отделяемых
Каждый раздел записи состоит из одного или нескольких идентификаторов полей, отделяемых
type
BirthDay = record
day, month: byte;
year: word
end;
var
a,b: Birthday;
. . . . .
В этом примере тип BIRTHDAY (день рождения) есть запись с полями DAY, MONTH и YEAR (день, месяц и год); переменные A и В содержат записи типа BIRTHDAY. Как и в массиве, значения переменных типа записи можно присваивать другим переменным того же типа, например
a := b;
К каждому из компонентов записи можно получить доступ, если использовать
К каждому из компонентов записи можно получить доступ, если использовать
a.day := 27;
b.year := 2012;
Для вложенных полей приходится продолжать уточнения:
type
BirthDay = record
day,month: byte;
year: word
end;
var
с = record
name: string;
bd: BirthDay
end;
begin
. . . . .
if c.bd.year = 2012 then . . .
end.
Чтобы упростить доступ к полям записи, используется оператор присоединения WITH:
Чтобы упростить доступ к полям записи, используется оператор присоединения WITH:
WITH <переменная> DO <оператор>
где
WITH, DO - ключевые слова; <переменная> - имя переменной типа запись, за которым, возможно, следует список вложенных полей; <оператор> - любой оператор Турбо Паскаля,
Например:
with c.bd do month := 9;
Это эквивалентно
with с do with bd do month := 9
или
with c,bd do month := 9;
или
с.bd.month := 9;
Турбо Паскаль разрешает использовать записи с так называемыми вариантными полями, например:
Турбо Паскаль разрешает использовать записи с так называемыми вариантными полями, например:
type
Forma = record
Name: string;
case byte of
0: (Birthplace: string [40]);
1: (Country: string [20];
EntryPort: string [20];
EntryDate: 1..31;
ExitDate: 1..31)
end;
В этом примере тип FORMA определяет запись с одним фиксированным полем NAME и вариантной частью, которая задается предложением CASE... OF. Вариантная часть состоит из нескольких вариантов (в примере - из двух вариантов: 0 и 1). Каждый вариант определяется константой выбора, за которой следует двоеточие и список полей, заключенный в круглые скобки. В любой записи может быть только одна вариантная часть, и, если она есть, она должна располагаться за всеми фиксированными полями.
Замечательной особенностью вариантной части является то обстоятельство, что все заданные в
Замечательной особенностью вариантной части является то обстоятельство, что все заданные в
var
mem4: record
case byte of
0: (by: array [0..3] of byte);
1: (wo: array [0..1] of word);
2: (lo: longint);
end;
В этом примере запись MEM4 имеет три варианта, каждый из которых занимает в памяти один и тот же участок из 4 байт. В зависимости от того, к какому полю записи мы обращаемся в программе, этот участок может рассматриваться как массив из 4 байт (поле BY), массив из двух целых типа WORD (поле WO) или, наконец, как одно целое число типа LONGINT (поле LO).
КОНСТАНТЫ-ЗАПИСИ
Определение константы-записи имеет следующий вид:
<идентификатор>: <тип> = (<сп.знач.полей>)
где
<идентификатор> --
КОНСТАНТЫ-ЗАПИСИ
Определение константы-записи имеет следующий вид:
<идентификатор>: <тип> = (<сп.знач.полей>)
где
<идентификатор> --
Список значений полей представляет собой список из последовательностей вида: имя поля, двоеточие и константа. Элементы списка отделяются друг о друга двоеточием.
Например:
type
point = record
х, у: real
end;
vect =
Например:
type
point = record
х, у: real
end;
vect =
month = (Jan, Feb, Mar, Apr, May, Jun, Jly, Aug, Sep, Oct, Nov, Dec);
date = record
d: 1..31;
m: month;
у: 1900..2099
end;
const
origon: point = (x: 0; у: -1);
line: vector = ((x: -3.1; у: 1.5), (х: 1.9; у: 3.0));
SomeDay: date = (d: 16; m: Mar; у: 2012);
Поля должны указываться в той последовательности, в какой они перечислены в объявлении типа. Если в записи используется хотя бы одно поле файлового типа, такую запись нельзя объявить типизированной константой.
Для записей с вариантными полями указывается только один из возможных вариантов
Для записей с вариантными полями указывается только один из возможных вариантов
type
forma = record
case Boolean of
true: (Birthplace: string [40]);
false: (Country: string [20];
EntryPort: string [20];
EntryDate: array [1..3] of word;
count: word)
end;
const
Percon1: forma = (Country: 'Норвегия';
EntryPort: 'Мурманск';
EntryDate: (16, 3, 89);
count: 12);
Percon2: forma = (Birthplace: 'Москва');
Пример: Из ведомости 3-х студентов с их оценками ( порядковый номер,
Пример: Из ведомости 3-х студентов с их оценками ( порядковый номер,
Program Spic; Type wed = record {Тип wed включает 3 поля: n, fio, bal} n : integer ; fio : string[40] ; bal : array [1..3] of integer {Поле bal – массив из 3 оценок } end; Var spisok : wed ; {Запись spicok типа wed} i, j, kol, s : integer; sr : real; Begin kol:=0; {kol- количество отличников} With spisok do {with присоединяет имя записи spisok ко всем } For i:=1 to 3 do { полям внутри цикла For по i } begin n:=i; Write (' Vvedite FIO # ', i ,' '); Readln (fio); s:=0; For j:= 1 to 3 do begin write ( 'Vvedite ocenky: ' ); readln ( bal [j] ); s := s+ bal [j]; end; if s=15 then kol:=kol+1; {подсчет количества отличников} sr := s/3; writeln ( fio, ', Sredniy bal = ', sr:4:1); end; writeln ( ' Kolichestvo otlichnikov = ', kol ); readln; end.