Пример.

Файлы

Результаты работы программы

Решение

Пример.

Формат.

Пример.

Формат

Записи

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

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;