Тип данных запись

реклама
Тип данных запись
Тип запись

- структура данных, состоящая из
фиксированного числа компонент
разного типа.

Компоненты записи - это поля
Тип запись



Тип данных Record предоставляет
возможность объединить в одну
связанную структуру различные по типу и
смыслу элементы (поля).
Причем элементами записи могут быть и
структурированные типы данных,
например массивы и другие
(подчиненные) записи.
Для обработки доступна как вся запись
целиком, так и отдельные ее поля.
Тип запись
Описание типа записи:
type <имя типа> = record
<имя поля>:<тип поля>;
…
end;

Тип запись

Пример описания типа запись.
type adress = record
town, street: string[15];
home:string[10];
flat:integer;
end;
var a,b:adress;
Тип запись
a:=b;
 Над полями разрешены все
операции, допустимые для типа
поля.
 Доступ к полям с помощью
составного имени:
a.town:=‘Саратов’;
a.flat:=14;

Тип запись
Оператор присоединения with:
with <переменная> do <операторы>;
 Пример:
with a do
begin
town:=‘Саратов’;
flat:=14;
end;

Пример 1. Дан список учащихся, включающий
фамилию, имя, пол, возраст. Вывести список
----input.txt---девушек старше 15 лет.
Данные в файле
input.txt:
Все данные - в столбик.
Фамилия – до 20 символов,
Имя – до 20 символов,
Пол – 1 символ,
Возраст – число.

4
Иванов
Игорь
м
16
Вышина
Елена
ж
12
Косарева
Анна
ж
17
Петров
Валерий
м
18
program p1;
type pupil=record
fam, nam:string[20];
pol:char;
age:integer;
end;
var n,i:integer; spisok:array[1..20] of pupil;
begin
readln (n);
for i:=1 to n do
begin
readln(spisok[i].fam); readln(spisok[i].nam);
readln(spisok[i].pol); readln(spisok[i].age);
if (spisok[i].pol=‘ж’) and (spisok[i].age>15)
then
writeln(spisok[i].fam,’ ‘, spisok[i].nam,’ ‘,spisok[i].age);
end;
end.
program p1;
type pupil=record
fam, nam:string[20];
pol:char;
age:integer;
end;
var i,n:integer; spisok:array[1..20] of pupil;
begin
readln (n);
for i:=1 to n do
with spisok[i] do
begin
readln(fam); readln(nam);
readln(pol); readln(age);
if (pol=‘ж’) and (age>15)
then
writeln(fam,’ ‘, nam,’ ‘,age);
end;
end.
Данные – в строку


В первом случае мы считываем фамилию и
имя по одному символу. Пол состоит из
одного символа, после пробела находится
число, оператор readln считыват пол, возраст
и переходит на новую строку. Понадобится
новая переменная c типа char – текущий
символ при считывании;
Во втором случае считываем всю строку,
потом разрезаем ее на части. Новая
переменная s типа string нужна для
считывания строки, переменные p (позиция
первого пробела) и code – типа integer.
Пример № 1 ввода данных. Считываем
информацию посимвольно.
readln (n);
for i:=1 to n do
begin
spisok[i].fam:='';
read(c);
while c<>' ' do
begin
spisok[i].fam:=spisok[i].fam+c;
read(c);
end;
spisok[i].nam:='';
read(c);
while c<>' ' do
begin
spisok[i].nam:=spisok[i].nam+c;
read(c);
end;
readln(spisok[i].pol,spisok[i].age);
end;
----input.txt---4
Иванов Игорь м 16
Вышина Елена ж 12
Косарева Анна ж 17
Петров Валерий м 18
Пример № 2 ввода данных. Считываем всю
строку и делим ее на части.
readln (n);
for i:=1 to n do
begin
readln(s);
p:=pos(' ',s);
spisok[i].fam:=copy(s,1,p-1);
delete(s,1,p);
p:=pos(' ',s);
spisok[i].nam:=copy(s,1,p-1);
delete(s,1,p);
spisok[i].pol:=s[1];
delete(s,1,2);
val(s,spisok[i].age,code);
end;
----input.txt---4
Иванов Игорь м 16
Вышина Елена ж 12
Косарева Анна ж 17
Петров Валерий м 18
Скачать