Ввод информации из текстового файла. Вывод информации в текстовый файл. Оперирование текстовыми файлами.
Содержание
Ввод и вывод: файлы
В первой лекции мы уже рассматривали ввод информации с клавиатуры и вывод её на экран1. Однако процесс ввода с консоли весьма трудоёмок, а результат вывода на консоль — недолговечен. К счастью, существует более удобный способ записывать, хранить, пересылать и по необходимости считывать информацию из постоянной памяти компьютера. Для этого применяются файлы.
Что такое файл
В последнее время студенты всё реже задают этот вопрос, однако на него всё–таки стоит дать короткий ответ.
Файл — это самостоятельная последовательность байтов, записанная в постоянную память компьютера.
В английском языке слово «file» имеет вполне понятный смысл: «вереница», что очень хорошо отражает внутреннюю структуру любого файла. Файл — это именно вереница байтов, причём связанных в определённой последовательности: байты файла не могут по своему желанию перепрыгивать с одного места на другое.
«Самостоятельность» файлов заключается в том, что они не зависят от работы какой–либо программы. И даже если выключить компьютер, файлы будут продолжать своё существование на винчестере или на дискете.
Файлы могут хранить в себе всё, что поддаётся кодированию:
- исходные тексты программ или входные данные (тесты);
- машинные коды выполняемых программ (игры, вирусы, обучающие и сервисные программы, др.);
- информацию о текущем состоянии какого–либо процесса;
- различные документы, в том числе и Интернет–страницы;
- картинки (рисунки, фотографии, видео);
- музыку;
- и т.д. и т.п.
Когда нужно использовать файлы
Выбор между консолью и файлами вам придётся делать каждый раз, когда вы станете писать очередную программу.
Между тем, ответ на вопрос, вынесенный в заголовок этого пункта, прост.
- Файлы полезны, если объём входных данных превосходит посильный при ручном вводе. (Крайним является случай, когда входные или выходные данные заведомо не могут поместиться в оперативной памяти.)
- Файлы нужны, если приходится многократно вводить одну и ту же информацию, с минимальными изменениями или вовсе без изменений (например, при отладке программы).
- Файлы необходимы, если нужно сохранять информацию о результатах работы программы, полученных при вводе различных входных данных (то есть: при поиске ошибок в программе).
Например, если вашей программе необходимо получить два или три числа (пять — уже многовато) или строку длиной символов десять, вы вполне можете задавать такие данные с клавиатуры вручную. Если же вам (а ещё вероятнее — не вам, а некоему усреднённому и потому посредственному оператору) придётся вводить, скажем, массив чисел 10х10, то вероятность ошибки при ручном вводе возрастает многократно. Значит, возможность этой ошибки нужно исключить: записать данные в файл, который легко отредактировать в случае необходимости. Кроме того, однажды созданный файл можно использовать многократно (может быть, с незначительными изменениями).
Разновидности файлов
В языке Pascal имеется возможность работы с трёмя видами файлов:
- текстовыми;
- типизированными;
- нетипизированными.
Последние два типа объединяются под названием бинарные: информация в них записывается по байтам и потому не доступна для просмотра или редактирования в удобных для человека текстовых редакторах, зато такие файлы более компактны, чем текстовые.
В отличие от бинарных, текстовые файлы возможно создавать, просматривать и редактировать «вручную» — в любом доступном текстовом редакторе, в том числе встроенном в среду разработки. Кроме того, при считывании данных из текстового файла нет необходимости заботиться об их преобразовании: в языке Pascal имеются средства автоматического перевода содержимого текстовых файлов в нужный тип и формат, и это позволяет сэкономить немало времени и сил.
Описание файлов
В разделе var переменные, используемые для работы с файлами (файловые переменные), описываются следующим образом:
var f1, f2 : Text; {текстовые файлы} g : file of <тип_элементов_файла>; {типизированные файлы} in, out : File; {нетипизированные файлы}
Файловая переменная не может быть задана константой.
Текстовые файлы
В этой лекции мы ограничимся рассмотрением только текстовых файлов, а о типизированных расскажем позже (см. лекцию 7).
Оперирование файлами
С этого момента и до конца лекции под словом «файл» мы будем подразумевать «текстовый файл» (разумеется, если специально не оговорено обратное). Однако многие описываемые ниже команды пригодны не только для текстовых, но и для бинарных файлов.
Назначение файла
Процедура Assign(f, '<имя_файла>'); служит для установления связи между файловой переменной f и именем того файла, за действия с которым эта переменная будет отвечать.2
На разных этапах работы программы одной и той же файловой переменной можно присваивать разные значения. Например, если в начале программы мы напишем
то переменной f будет соответствовать файл, из которого производится считывание входных данных, вплоть до того момента, когда в программе встретится, скажем, команда
после которой переменной f будет уже соответствовать тот файл, куда выводятся результаты.
Строка '<имя_файла>' может содержать полный путь к файлу. Если путь не указан, файл считается расположенным в той же директории, что и исполняемый модуль программы. Именно этот вариант обычно считается наиболее удобным.
Примечания
- ^ Напомним, что эти два устройства объединяются под общим наименованием «консоль».
- ^ При использовании Turbo Pascal в сочетании с внешними текстовыми редакторами может потребоваться работать в другой кодировке. Если при чтении и записи русских букв они превращаются в другие символы, используйте AssignANSI вместо Assign.