Читайте также: |
|
Это файлы последовательного доступа. Они предназначены для хранения текстовой информации.
Текстовые файлы связываются с файловыми переменными типа TEXT:
Var <ф.п.>: TEXT;
Текстовый файл в ТП трактуется как совокупность строк переменной длины. Доступ к каждой строке возможен лишь последовательно, начиная с первой строки. При создании текстового файла в конце каждой строки ставится специальный признак EOLN (End Of LiNe - конец строки), а в конце всего файла – признак EOF (End Of File - конец файла) c кодом 26. Тестируются эти признаки одноименными логическими функциями.
Для доступа к записям текстового файла применяются процедуры READ, READLN, WRITE, WRITELN. В них можно использовать переменное число параметров, в качестве которых могут быть символы, строки и числа. Первым параметром в любой из перечисленных процедур может стоять файловая переменная. В этом случае осуществляется обращение к дисковому файлу или логическому устройству, связанному с файловой переменной процедурой ASSIGN, и открытому процедурами RESET или REWRITE. Если файловая переменная не указана, происходит обращение к стандартным файлам INPUT и OUTPUT.
Процедура READ обеспечивает ввод символов, строки и чисел. Она имеет следующий формат
READ (<ф.п.>,<список_ввода> ); или READ( <список_ввода> );
где <список_ввода> - последовательность из одной или более переменных типа CHAR, STRING или любого целого или вещественного типов, например:
READ(Х); ввод переменной Х с клавиатуры
READ(f,x1,x2,x3); ввод трех переменных из файла
При вводе переменной типа CHAR выполняется чтение одного символа из файла и присваивается считанное значение переменной. Если перед чтением указатель файла достиг конца очередной строки, то считывается символ CR (код 13). Если достигнут конец файла - то символ EOF.
При вводе переменной типа STRING количество считанных символов равно максимальной длине строки, если раньше не встретились символы CR, EOF. В этом случае эти символы в строку не помещаются. Если количество символов во входной строке больше максимального размера строки, то «лишние» символы до конца строки отбрасываются, а новое обращение к READ возвращает пустую строку.
Таким образом, READ не в состоянии прочесть последовательность строк: читается только одна строка, остальные окажутся пустыми. Для ввода последовательности строк символов применяется процедура READLN.
При вводе числовых данных процедура READ сначала выделяет подстроку во входном потоке по следующему правилу: все ведущие пробелы, символы табуляции и маркеры конца строк пропускаются до первого значащего символа; и, наоборот, после первого значащего символа любой из перчисленных символов или символ EOF указывает на конец подстроки. Выделенная таким образом подстрока рассматривается как символьное представление числовой константы и присваивается переменной. Фактически весь файл рассматривается как одна длинная строка чисел.
Процедура READLN также обеспечивает ввод символов, строк и чисел: READLN(f,x); или READLN(f, x1,x2,...,xN);
Она идентична процедуре READ за исключением того, что после считывания последней переменной списка ввода оставшаяся часть строки до маркера EOLN пропускается, поэтому следующее обращение к READLN или READ начинается с первого символа новой строки.
Эту процедуру можно вызвать без параметра <список ввода>: READLN(f); READLN; что приведет к пропуску всех символов текущей строки. Таким способом можно организовать ожидание нажатия клавиши ENTER при открытом окне результатов.
При чтении с клавиатуры курсор помещается в начало следующей строки, в то время как в процедуре READ остается в текущей строке.
Процедура WRITE обеспечивает вывод информации в текстовый файл или передачу ее на логическое устройство. Формат обращения:
WRITE(<ф.п.>,<список_вывода>]); или WRITE(<список_вывода>]);
где <список вывода> - это последовательность из одного или более выражений (переменных) символьного, строкового, логического, а также любого целого или вещественного типа, например:
WRITE(x); WRITE(f,x1,x2,xN);
Файловая переменная, если она указана, должна быть предварительно описана типом TEXT и связана с именем файла или логического устройства процедурой ASSIGN. Если файловая переменная отсутствует, подразумевается вывод в стандартный файл OUTPUT (на экран дисплея).
Любой элемент списка вывода X может быть представлен в следующей форме: X[:w[:d]], причем элементы, заключенные в квадратные скобки могут отсутствовать. Здесь X - имя переменной или выражение, w, d - выражения целого типа WORD (0..65535). Если параметр w присутствует, то он указывает минимальную ширину поля для записи значения X. При длине переменной X меньше w слева производится дополнение поля вывода пробелами, если Х больше w, то w игнорируется и выводится необходимое число символов (по умолчанию w=23); если параметр w не указан, то значение соответствующей переменной выводится вслед за предыдущим без какого-либо разделения.
Параметр d задает количество десятичных знаков в дробной части числа вещественного числа. Используется только для вывода значений выражений вещественных типов. Если параметр d не указан, то число выводится в экспоненциальной форме, в противном случае в формате представления с фиксированной точкой. Если d=0, выводится только целая часть числа. Например: результаты вывода для числа Х=3.22 будут следующие:
WRITE(X:6:2); {3.22}
WRITE(X:6:0); {3}
WRITE(X:4:2); {3.22}.
При выводе логических выражений в зависимости от значения выводятся подстроки TRUE и FALSE. Ввод логических констант процедурами READ и READLN не предусмотрен.
Вывод процедурой WRITELN отличается от WRITE тем, что выводимая строка завершается кодами CR (возврат каретки) и LT (перевод строки), т. е. добавляет маркер конца строки.
При вызове WRITELN можно опускать <список_вывода>. В этом случае в файл передается признак конца строки EOLN, что при выводе на экран приводит к переводу курсора в начало следующей строки:
WRITELN(f); WRITELN;
Для текстовых файлов также применимы процедуры и функции (табл. 8).
Пример программы, которая вводит с клавиатуры три вещественных числа и в файл FXD.DAT записывает эти числа и их сумму.
Дата добавления: 2015-09-05; просмотров: 52 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Общие процедуры и функции для работы с файлами | | | Типизированные файлы |