Работа с файлами. Одним из типов данных в PASCAL является файловый тип, Представляющий собой последовательность однотипных компонентов
Одним из типов данных в PASCAL является файловый тип, Представляющий собой последовательность однотипных компонентов, расположенных на внешнем носителе. Тип этих компонентов может быть любой, за исключением типа-файла. В PASCAL файловые переменные используются для ввода-вывода информации. Перед тем как осуществлять ввод-вывод, файловая переменная должна быть связана с конкретным внешним файлом с помощью процедуры ASSIGN. Этим файлом может быть файл на магнитном диске или ленте, а также устройство вычислительного комплекса (клавиатура, экран дисплея, принтер и т. д.). Затем файл должен быть открыт для чтения и/или записи. После этого можно осуществлять организацию ввода-вывода. В PASCAL 7.0 имеется 3 категории файлов, работа с которыми отличается друг от друга: - текстовые (тип TEXT); - типизированные (FILE OF <тип>); - файлы без типа (FILE). Обычно все файлы считаются файлами последовательного доступа. Обратите внимание: для типизированных файлов и файлов без типа с помощью процедуры SEEK можно установить режим произвольного доступа. При этом нумерация компонентов файла начинается с нуля. После работы с файлом он должен быть закрыт процедурой CLOSE. В табл. 8.1 приведены стандартные процедуры и функции для всех файлов. Таблица 8.
Текстовые файлы представляют собой совокупность символов, разделенных на строки, причем в конце каждой строки стоит признак конца строки. Особенностью работы с текстовыми файлами является то, что параметры, значения которых вводятся и выводятся с помощью процедур READ или WRITE, могут быть не только типа CHAR или STRING, но и других простых типов: - целых, вещественных типов при вводе; - целых, вещественных, логических типов при выводе. Эти процедуры могут также работать и с ASCII-строками. Имеется две стандартные файловые переменные для текстовых файлов, которые автоматически открываются при запуске программы и автоматически закрываются после работы: INPUT - по умолчанию связанная с клавиатурой; OUTPUT - по умолчанию связанная с экраном дисплея. Если при работе с файлами типа TEXT в процедуре или функции не указана файловая переменная, считается, что используется файловая переменная INPUT или OUTPUT. Текстовый файл может быть открыт либо для чтения процедурой RESET, либо для записи процедурой REWRITE или APPEND. Описание процедур и функций для работы с текстовыми файлами приведено в табл. 8.2. Таблица 8.2
При работе с типизированными файлами используются дополнительные процедуры и функции, представленные в табл. 8.3. Таблица 8.3
При работе с файлами без типа используются дополнительные процедуры и функции, представленные в табл. 8.4. Таблица 8.4
Рассмотрим несколько задач. Пусть заданы два файла, содержимое которых приведено на рис. 8.1.
Рис. 8.1. Файлы ONE и TWO Задача 8.1 Считать файл ONE, удвоив каждый его элемент через пробел. Для решения этой задачи опишем файлы ввода и вывода как текстовые. Файл ONE был создан ранее и наполнен данными, Привяжем его к файловой переменной F1 и откроем этот файл на чтение: ASSIGN(F1, 'ONE'); RESET(F1); Переменную F2 свяжем со стандартным устройством вывода - экраном дисплея с помощью пустой строки и откроем его на вывод: ASSIGN(F2, ''); REWRITE(F2); Вместо дисплея можно указать имя любого файла в формате DOS. Затем организуем цикл по считыванию элементов файла F1 и записи их через пробел в файл F2 до тех пор, пока не будет найден конец файла F1 с помощью функции EOF(Fl). После окончания работы закроем оба файла.
|