Похожие презентации:
4_записи
1. Сложный тип данных – записи
12. Представьте себе, что нам нужно обрабатывать данные: Дата рождения: день, месяц, год Адрес: город, улица, дом, квартира,
которые имеют разный тип:город – string, дом – integer, но
логически связаны в одно целое.
Для представления данных такого вида
в Паскале используются записи.
2
3. Записи - сложный структурированный тип данных, состоящий из фиксированного числа компонент, которые могут быть разного типа.
Запись отличается от массива прежде всеготем, что массив состоит из компонент одного
типа, записи же содержат компоненты разных
типов.
Компоненты записи называются полями.
3
4. Объявление записи 1 способ – в разделе описания - в подразделе описания типов type <имя типа>=record <список полей> end;
Объявление записи1 способ – в разделе описания - в подразделе описания
типов
type
<имя типа>=record <список полей> end;
<список полей> поля отделяются друг от друга ;
<имя поля>: <тип поля>
type
anketa=record
fam:string[25];
gr:integer
end;
record end – ключевые слова
fam и gr – поля записи
var n: anketa;
запись с полями: fam и gr
4
5. Объявление записи 2 способ – в разделе описания - в подразделе описания переменных var n:record fam:string[25]; gr:integer end;
record end – ключевые словаfam и gr – поля записи
1 способ объявления используется, если переменная
типа запись является формальным параметром
подпрограммы
5
6. Поле записи рассматривается как обычная переменная некоторого типа. Чтобы обратиться к некоторому полю записи, мы должны
написать имя переменной типазапись, поставить . и имя нужного поля.
var
n:record
fam:string[25];
gr:integer
end;
begin
n.fam:=‘Иванов’;
n.gr:=2002;
6
7. Одну запись можно присваивать другой целиком, если они одного типа: type data=record day:1..31; month:1..12; year: integer;
end;var d1, d2: datа;
begin
...
d1:=d2; (оператор присваивания)
Это эквивалентно:
d1.day:=d2.day;
d1.month:= d2.month;
d1.year:= d2.year;
7
8. Над переменными типа запись могут выполняться операции отношения = и <> (не равно)
Над переменными типазапись могут выполняться
операции отношения = и <>
(не равно)
8
9. Правила использования записей: 1) поле записи не может иметь файловый тип; 2) имена компонент (полей) одной записи могут
совпадать сименами полей записей других типов;
type
wife=record
name, firstname: string;
end;
husband=record
name, firstname: string;
voz: integer;
end.
var
w: wife;
h: husband;
begin
w.name:=‘Ольга’;
h.name:=‘Олег’;
9
10. 3) записи могут быть составными: поле одной записи может в свою очередь являться записью другого типа; type datr = record day,
month, y: integerend;
anketa=record
fam: string;
dr:datr
end;
var
n: anketa;
begin
n.fam:=‘Иванов’;
n.dr.day:=31;
n.dr.month:=3;
n.dr.y:=2002;
10
11. 4) записи могут быть компонентами массива. type datr = record day, month, y: integer end; anketa=record fam: string; dr:datr
end;arr=array [1..20] of anketa;
var
n: arr;
begin
n[1].fam:=‘Иванов’;
n[1].dr.day:=31;
n[1].dr.month:=3;
n[1].dr.y:=2002;
11
12. Оператор присоединения with Так для обращения к полям записи используются составные имена, то при этом могут получаться очень
длинныеимена. Для сокращения используется
оператор присоединения with.
with <переменная> do <оператор>;
12
13. type datr = record day, month, y: integer end; anketa=record fam: string; dr:datr end; arr=array [1..20] of anketa; var n: arr;
beginwith n[1] do begin
n[1].fam:=‘Иванов’;
fam:=‘Иванов’;
n[1].dr.day:=31;
dr.day:=31;
n[1].dr.month:=3;
dr.month:=3;
n[1].dr.y:=2002;
dr.y:=2002;
end;
13
14. Оператор присоединения with Так для обращения к полям записи используются составные имена, то при этом могут получаться очень
длинныеимена. Для сокращения используется
оператор присоединения with.
with <переменная> do <оператор>;
14
15. Если задан оператор with R do S, то R не должно содержать никакой переменной, изменяемой в операторе with. with n[i] do begin
...i:=i+1;
...
end;
15
16. Пример: var Х: record A: record B: record C: real; D: integer; end; E: integer; end; F: real end; Здесь C и D - поля записи B.
B и E – поля записи A;A и F – поля записи X.
Обращение к полю С
16
17. Пример: var Х: record A: record B: record C: real; D: integer; end; E: integer; end; F: real end; Здесь C и D - поля записи B.
Пример:Обращение к полю С
var
X.A.B.C:=3.1;
Х: record
Обращение к полю D
A: record
B: record
C: real;
D: integer;
end;
E: integer;
end;
F: real
end;
Здесь C и D - поля записи B.
B и E – поля записи A;
A и F – поля записи X.
17
18. Пример: var Х: record A: record B: record C: real; D: integer; end; E: integer; end; F: real end; Здесь C и D - поля записи B.
Пример:Обращение к полю С
var
X.A.B.C:=3.1;
Х: record
Обращение к полю D
A: record
X.A.B.D:=3;
B: record
Обращение к полю E
C: real;
D: integer;
end;
E: integer;
end;
F: real
end;
Здесь C и D - поля записи B.
B и E – поля записи A;
A и F – поля записи X.
18
19. Пример: var Х: record A: record B: record C: real; D: integer; end; E: integer; end; F: real end; Здесь C и D - поля записи B.
Пример:Обращение к полю С
var
X.A.B.C:=3.1;
Х: record
Обращение к полю D
A: record
X.A.B.D:=3;
B: record
Обращение к полю E
C: real;
X.A.E:=5;
D: integer;
Обращение к полю F
end;
E: integer;
end;
F: real
end;
Здесь C и D - поля записи B.
B и E – поля записи A;
A и F – поля записи X.
19
20. Пример: var Х: record A: record B: record C: real; D: integer; end; E: integer; end; F: real end; Здесь C и D - поля записи B.
Пример:Обращение к полю С
var
X.A.B.C:=3.1;
Х: record
Обращение к полю D
A: record
X.A.B.D:=3;
B: record
Обращение к полю E
C: real;
X.A.E:=5;
D: integer;
Обращение к полю F
end;
X.F:=5.1;
E: integer;
end;
F: real
end;
Здесь C и D - поля записи B.
B и E – поля записи A;
A и F – поля записи X.
20
21. Пример: var Х: record A: record B: record C: real; D: integer; end; E: integer; end; F: real end; Здесь C и D - поля записи B.
B и E – поля записи A;A и F – поля записи X.
Обращение к полю С
X.A.B.C:=3.1;
или
with X, A, B do
C:=3.1;
Если мы хотим
оперировать с полями
двух (или более) записей
без составных имен, то
после with можно
перечислять через
запятую имена этих
разных записей.
21
Программирование