Пример.
Файлы
Результаты работы программы
Решение
Пример.
Формат.
Пример.
Формат
Записи
Запись - это структурированный тип данных, состоящий из фиксированного числа полей разного типа. Поля записи могут иметь любой тип, в частности сами могут быть записями.
Type
<имя_типа> = record
<имя_поля > : < тип >;
. . .
<имя_поля > : < тип >;
end;
Описание типа:
type
student = record
fam: string;
gr: integer;
end;
Описание переменной:
var
s: student;
Тип-запись можно указать непосредственно при описании переменных:
Var
s: record
fam: string;
gr: integer;
end;
Обращение к значению поля осуществляется с помощью идентификатора переменной и идентификатора поля, разделенных точкой.
s.fam :='Иванов';
writeln (s.fam, s.gr);
В программе могут использоваться массивы записей:
Var
s:array[1..50] of student;
Обращение к какому-либо элементу массива записей будет задаваться с помощью индекса:
s[i].fam := 'Иванов';
Обращение к полям записи имеет громоздкий вид.
Оператор объединения with позволяет работать с полями переменной типа запись, как с простыми переменными.
with <переменная типа запись> do <оператор>;
with s do
begin
fam := 'Иванов';
gr := 1985;
writeln (fam, gr:4);
end;
Задача
Ввести сведения о студентах в виде записей, содержащих фамилию и год рождения. Вывести фамилии студентов 1992 года рождения.
/*Обработка массива записей*/
program rec;
uses crt;
const n=4;
type
student=record
fam:string;/*Фамилия*/
gr:integer;/*Год рождения*/
end;
var
s:array[1..n] of student;/*Массив записей*/
i:byte;
begin
clrscr;
/*Ввод данных о студентах*/
for i:=1 to n do
with s[i] do
begin
write('Введите фамилию-');
readln(fam);
write('Введите год рождения-');
readln(gr);
end;
writeln('Список студентов 1992 года рождения');
/*Вывод фамилий студентов 1992 года рождения*/
for i:=1 to n do
with s[i] do
begin
if gr=1992
then
writeln(fam);
end;
readkey;
end.
Введите фамилию-Иванов
Введите год рождения-1991
Введите фамилию-Сидоров
Введите год рождения-1992
Введите фамилию-Петров
Введите год рождения-1993
Введите фамилию-Котов
Введите год рождения-1992
Список студентов 1992 года рождения:
Сидоров
Котов
Домашнее задание:
Создать массив, содержащий сведения о 20 студентах (фамилия, имя, рост). Вывести сведения о самом высоком и о самом низком студентах.
Файл – это поименованная область памяти на внешнем запоминающем устройстве, предназначенная для хранения данных.
В языке Паскаль под файлом может пониматься логическое устройство (например, клавиатура, экран или принтер).
Для работы с файлами в программе должны быть определены переменные файлового типа, которые считаются представителями файлов в Паскаль-программе.
Тип-файл представляет собой последовательность компонент одного типа (за исключением типа-файла), расположенных на внешнем устройстве. Число компонент в файле не объявляется.
В Turbo Pascal имеется 3 категории файлов:
- текстовые;
- типизированные;
- без типа.
Текстовый файл представляет собой совокупность символов, разделенных на строки, причем в конце каждой строки стоит признак конца строки.
Для задания текстового файла используется стандартный тип Text.
Следует иметь в виду, что тип Text в Turbo Pascal не эквивалентен типу file of Char.
Var
F1: Text;
Для задания типизированного файла следует использовать зарезервированные слова file и of, после чего указать тип компонент файла.
Type
<имя_типа>= file of <тип_компонент>;
Type
Number = file of Integer; {тип-файл целых чисел}
Symb = file of 'A' . . 'Z'; {тип-файл прописных латинских букв}
Var
F2, F3: Number;
F4: Symb;
Тип-файл можно определять и непосредственно при введении файловых переменных:
Var
F2, F3: file of Integer;
F4: file of 'A' . . 'Z';
Для задания файла без типа не указывается тип компонент. В этом случае работа с файлом осуществляется на физическом уровне в соответствии с внутренним форматом его данных. При этом реальные компоненты файла могут иметь и различный тип.
Type
<имя_типа> = file;