- •Содержание:
- •Порядок выполнения лабораторных работ
- •Оператор присваивания
- •Операторы ввода-вывода
- •Условный оператор
- •Задание к лабораторной работе
- •Программирование разветвляющегося
- •Оператор цикла for
- •Нестандартные типы данных
- •Ограниченные типы данных
- •Оператор выбора варианта
- •Задание к лабораторной работе
- •Лабораторная работа 3 регулярные типы данных. Селективная обработка массивов
- •Регулярные типы данных
- •Сортировка массивов
- •Примеры выполнения задания лабораторной работы
- •Задание к лабораторной работе
- •Лабораторная работа 4 вложенные циклы. Обработка двумерных массивов
- •Общие указания
- •Задания к лабораторной работе
- •Лабораторная работа 5 процедуры и функции
- •Процедуры
- •Функции
- •Задание к лабораторной работе
- •Лабораторная работа 6 обработка символьных данных
- •Символьный тип данных
- •Строковый тип данных
- •Процедуры
- •Функции
- •'Abcdef' copy(s,2,3) 'bcd'
- •'System' length(s) 6;
- •Задание к лабораторной работе
- •Лабораторная работа 7 комбинированные типы данных
- •Задание к лабораторной работе
- •Лабораторная работа 8 файлы и файловые типы данных
- •Файловый тип данных
- •Процедуры обработки файлов
- •Файлы с типом
- •Процедуры для работы с файлами с типом
- •Функции для обработки файлов с типом
- •Задание к лабораторной работе
- •Список рекомендованной литературы
Лабораторная работа 8 файлы и файловые типы данных
Цель работы: выработать практические навыки в написании и отладке программ при работе с файловыми типами данных.
Файлы
Файл представляет собой последовательность компонентов одного типа и одной длины. Число компонентов в файле не фиксировано. В каждый момент доступен только один компонент. Говорят, что на этот компонент установлен указатель файла.
В файлах последовательного доступа (мы будем рассматривать только такие файлы) начать писать в файл можно только с самого его начала, дописывая новые компоненты последовательно один за другим. Для чтения также надо начинать просмотр файла с самого начала.
Файловый тип данных
Общий вид описания файлового типа - type T = file of Tk;
Здесь Т - идентификатор типа; Тк - тип компонента (любой кроме типа file). Каждую переменную-файл надо описать в разделе var. Например, файл F целых чисел:
type AA = file of integer;
var f:AA;
Файл может быть описан и непосредственно при описании переменной, например: var f:file of real;.
Часто компонентами файла являются записи. В этом случае файловую переменную можно описать так:
type zap = record
N : integer;
Fio : array[1..3] of string;
ok : real
end;
var fa:file of zap; ra:zap;
Процедуры обработки файлов
Работа с файлами (в дальнейшем рассмотрим файл с именем F) проводится посредством следующих стандартных процедур.
1 assign(F,ST) - присвоение имени файлу. Имя файла, которое является значением строкового выражения ST, присваивается переменной файлового типа F. Например
assign(F,’ a : fil.dat ’);
2 rewrite(F) - подготовка к записи информации в начало файла F; создание нового файла.
3 write(F,A) - запись значения переменной A в файл F.
4 reset(F) - подготовка к чтению информации с начала файла F.
5 read(F,A) - чтение компонентов файла в переменную A.
6 close(F) - закрытие файла, назначенного переменной F. Если файл был открыт, никогда не следует выходить из программы, предварительно не закрыв его.
Для того, чтобы определить готовность файла к чтению либо к записи информации, существует стандартная функция eof(F). Если указатель файла продвинулся на конец файла (готовность к записи), то эта функция принимает значение true, в остальных случаях - false. В частности, процедура rewrite очищает файл и устанавливает указатель на признак конца файла. Функции eof(F) присваивается значение true. Напротив, процедура reset устанавливает указатель файла на первую компоненту, а функции eof(F) присваивается значение false.
Функцию eof(F) можно использовать в условном операторе после if или в операторе цикла while. Если нужно после if или после while поместить не условие конца, а условие того, что файл не закончен, то применяется следующая конструкция, например:
while not eof(f) do read(f,a);.
Организация нового файла
При выполнении задания предлагается организовать запись в файл исходной информации при помощи цикла с предусловием до тех пор, пока не будет введен признак конца ввода (например, символ *).
При подготовке исходных данных необходимо учесть, что выходная информация программы обработки файла должна составлять не менее половины от входной.
Для удаления записей необходимо использовать рабочий файл, в который сначала последовательно переписать из исходного файла все оставляемые записи, затем исходный файл открыть на запись, рабочий файл - на чтение и все содержимое рабочего файла переписать в исходный файл.