Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика - лекции.doc
Скачиваний:
18
Добавлен:
07.11.2018
Размер:
512.51 Кб
Скачать

Текстовые файлы.

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

Текстовый файл трактуется в Турбо Паскале как совокупность строк переменной длины. Доступ к каждой строке возможен лишь последовательно, начиная с первой.

При создании текстового файла в конце каждой записи (строки) ставится специальный признак EOLN (End OfLiNe - конец строки), а в конце всего файла - признак EOF (End Of File - конец файла). Эти признаки можно протестировать одноименными логиче­скими функциями (см. ниже). При формировании текстовых файлов используются следующие системные соглашения:

EOLN- последовательность кодов ASCII# 13 (CR) и #10 (LF);

EOF - код #26 стандарта ASCII.

Для доступа к записям применяются процедуры READ, READLN, WRITE, WRITELN. Первым параметром в любой из перечисленных процедур может стоять файловая переменная. В этом случае осуществляется обращение к дисковому файлу или логическому устройству, связанному с -переменной процедурой ASSIGN. Если файловая переменная не указана, происходит обращение к стандартным файлам INPUT и OUTPUT.

Процедура READ. Обеспечивает ввод символов, строк и чисел. Формат обращения:

READ (файловая переменная,список ввода) или

READ (список ввода)

Здесь <сп.ввода> - список ввода: последовательность из одной или более перемен­ных типа CHAR, STRING, а также любого целого или вещественного типа.

При вводе переменных типа CHAR выполняется чтение одного символа из файла и присваивание считанного значения переменной. Если перед выполнением чтения ука­затель файла достиг конца очередной строки, то результатом чтения будет символ CR (ASCII код #13), а если достигнут конец файла, то - символ EOF (код #26). При вводе с клавиатуры символ CR вводится при нажатии на клавишу Enter, а символ EOF - при одновременном нажатии клавиш CTRL и Z.

При вводе переменных типа STRING количество считанных процедурой и помещенных в строку символов равно максимальной длине строки, если только раньше не встретились сим­волы CR или EOF. В этом случае сами символы CR и EOF в строку не помещаются. Если ко­личество символов во входном потоке данных больше максимальной длины строки, «лишние» символы до конца строки отбрасываются, а новое обращение к READ возвращает пустую стро­ку. Таким образом, процедура READ не в состоянии прочесть последовательность строк: пер­вая строка будет прочитана нормально, а все последующие окажутся пустыми. Для ввода по­следовательности строк нужно использовать процедуру READLN .

Процедура READLN. Обеспечивает ввод символов, строк и чисел. Эта процедура идентична процедуре READ за исключением того, что после считывания последней переменной оставшаяся часть строки до маркера EOLN пропускается, поэтому сле­дующее обращение к READLN или READ начинается с первого символа новой строки. Кроме того, эту процедуру можно вызвать без параметра <сп.ввода> (см. процедуру READ), что приведет к пропуску всех символов текущей строки вплоть до EOLN.

Процедура WRITE. Обеспечивает вывод информации в текстовый файл или пере­дачу ее на логическое устройство. Формат обращения:

WRITE (файловая переменная, список вывода) или

WRITE (список вывода)

Здесь <сп.вывода> - список вывода: последовательность из одного или более вы­ражений типа CHAR, STRING, BOOLEAN, а также любого целого или вещественного типа.

Файловая переменная файловая переменная, если она указана, должна быть предварительно опи­сана как переменная типа TEXT и связана с именем файла или логическим устройст­вом процедурой ASSIGN. Если файловая переменная отсутствует, подразумевается вывод в стандартный файл OUTPUT, который обычно связан с экраном ПК.

Любой элемент списка вывода может иметь форму

OutExpr [ : MinWidth [ : DecPlaces ] ]

Здесь OUTEXPR - выводимое выражение;

MINWIDTH, DECPLACES - выражения типа WORD (квадратные скобки оз­начают возможность отсутствия заключенных в них параметров).

Подпараметр MINWIDTH, если он присутствует, указывает минимальную ширину поля, в которое будет записываться символьное представление значения OUTEXPR. Если символьное представление имеет меньшую длину, чем MINWIDTH, оно будет дополнено слева пробелами, если - большую длину, то подпараметр MINWIDTH игно­рируется и выводится необходимое число символов.

Подпараметр DECPLACES задает количество десятичных знаков в дробной части вещественного числа. Он может использоваться только совместно с MINWIDTH и только по отношению к выводимому выражению одного из вещественных типов.

При выводе на экран в случае, когда длина выводимой последовательности симво­лов превышает ширину экрана или созданного на нем окна, «лишние» символы пере­носятся на следующую экранную строку. При заполнении экрана или окна его содер­жимое сдвигается вверх на одну строку.

Процедура WRITELN. Эта процедура полностью идентична процедуре WRITE за исключением того, что выводимая строка символов завершается кодами CR и LF. При вызове WRITELN можно опускать параметр <сп.вывода>: в этом случае в файл пере­дается маркер EOLN, что при выводе на экран приведет к переводу курсора в начало следующей строки.

Логическая функция EOLN. Возвращает TRUE, если во входном текстовом файле достигнут маркер конца строки. Формат обращения:

EOLN (файловая переменная)