Работа с текстовыми файлами. Тип запись. Алгоритмы сортировки.

Файловые типы.

Рассмотрим только работу с текстовыми файлами. Файловые переменные для текстовых файлов описываются с помощью типа Text.

Файловые переменные являются структурированными и содержат различную информацию, необходимую для работы с файлом на диске, с которым они связаны. Это имя файла, его размер, текущая позиция в файле и т.д. Если вы пишите процедуры или функции для работы с файлами, передавать в них файловые переменные можно только с модификатором VAR.

Процедуры и функции для работы с текстовыми файлами

Процедура или функция

Описание

Процедура Assign(F,<Имя>) Назначает имя файла файловой переменной F
Процедура Reset(F) Открывает файл для чтения. Если файла с назначенным именем нет, возникает ошибка ввода-вывода
Процедура Rewrite(F) Создает файл и открывает его для записи. Если файл уже есть, он перезаписывается
Процедура Close(F) Закрывает файл, открытый ранее процедурами Reset или Rewrite
Процедура
Read[Ln](F,<Список переменных>)
Читает из файла значения указанных переменных. ReadLn после чтения значений пропускает все оставшиеся данные до конца текущей строки и переходит на следующую
Процедура
Write[Ln](F,<Список значений>)
Работает, как и обычный оператор вывода, но данные записываются в текстовый файл, задаваемый переменной F
Функция Eof(F) Возвращает истину, если достигнут конец файла при чтении

Для примера рассмотрим следующую задачу: на входе дан текстовый файл, в котором в каждой строке записано по 3 вещественных числа. Необходимо считать информацию из файла и создать новый файл, в каждую строку которого записать сумму чисел в соответствующей строке входного файла, как показано на следующем рисунке.

Входной файл (Test.txt)

Двумерный массив (A)

Выходной файл (Out.txt)

1.2  5  7.3

3.3  9  4

8  6  1.1

. . .

1

2

3

13.5

16.3

15.1

. . .

1

1.2

5

7.3

2

3.3

9

4

3

8

6

1.1

Стандартные текстовые файлы.

В языке Паскаль имеется два стандартных текстовых файла: Input и Output.

Input – это файл для ввода, чтение из которого равносильно вводу данных с клавиатуры. Например, если в программе используется оператор ввода Readln(a,b), то он выполняется аналогично оператору Readln(Input,a,b).

Файл Output – стандартный текстовый файл для вывода, запись в который приводит к выводу данных на экран. Аналогично предыдущему оператор вывода Writeln(a,b) будет выполняться как Writeln(Output,a,b).

Файлы Input и Output можно использовать только в консольных приложениях.

Возвращаясь к предыдущему примеру (в котором каждая запись представляла три вещественных числа), заметим, что не всегда данные имеют такую однородную структуру. Часто каждая запись представляет собой разнотипные данные о некотором объекте. К примеру, можно представить себе список студентов института. Для каждого студента необходимо задать такие данные, как фамилия, имя, отчество, факультет, на котором он обучается, номер группы и т.д., как показано в следующей таблице.

Фамилия

Имя

Отчество

Факультет

Группа

Иванов

Петр

Николаевич

ММ

112

Петров

Иван

Алексеевич

ЭТ

2135

Каждый атрибут имеет свой тип. Как же можно описать такой список студентов в программе? Это можно сделать, например, с помощью нескольких массивов:

Такой способ во многих случаях является достаточно неудобным по целому ряду причин. Однако язык Паскаль позволяет описывать такие структуры по-другому.

Тип запись.

При описании переменной типа «запись» в памяти создается последовательность переменных различного типа (сравните с типом массив, который описывает последовательность переменных одного типа).

Обращение к элементам записи.

Осуществляется с помощью оператора « . » (точка).

Переменные одного и того же типа «запись» можно присваивать друг другу:

Таким образом, тип «запись» позволяет группировать данные различного типа в одной переменной (или, например, в одном элементе массива).

Раз уж речь зашла о списках, необходимо сказать об их сортировке (например, необходимо отсортировать вышеописанный список студентов по алфавиту). Рассмотрим кратко, какие вообще существуют алгоритмы сортировки, их характеристики.

КОММЕНТАРИИ