где <список вывода> - это последовательность, состоящая из одной и более переменных (или выражений) символьного, строкового, логического или любого целого или вещественного типа, например:
WRITE(x); WRITE(f, x1, x2, xN);
Файловая переменная, если она указана, должна быть предварительно описана типом TEXT и связана с именем файла процедурой ASSIGN. Если файловая переменная отсутствует, подразумевается вывод в стандартный файл – на экран дисплея.
Вывод процедурой WRITELN отличается от WRITE тем, что выводимая строка завершается кодами CR (возврат каретки) и LT (перевод строки), т. е. добавляет маркер конца строки.
При вызове WRITELN можно опускать <список_вывода>. В этом случае в файл передается признак конца строки EOLN, что при выводе на экран приводит к переводу курсора в начало следующей строки:
WRITELN(f); WRITELN;
Любой элемент X списка вывода для процедур WRITE/ WRITELN может быть представлен в следующем формате: 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}.
Для текстовых файлов также применимы следующие процедуры и функции (табл. 10).
Таблица 10
Процедуры, функции
Выполняемые действия
Append( f);
EOLN(f);
SeekEOLN(f);
SeekEOF(f);
Процедура открывает уже существующий файл f для дозаписи в его конец (для расширения)
Функция возвращает значение TRUE, если во входном файле f достигнуты маркеры конца строки EOLN или конца файла EOF, и FALSE - в противном случае
Функция пропускает все пробелы и знаки табуляции до первого признака EOLN или первого значащего символа. Возвращает значение TRUE, если обнаружен маркер конца файла или конца строки
Функция пропускает все пробелы, знаки табуляции и маркеры конца строк до маркера конца файла или первого значащего символа. Если маркер обнаружен, возвращает значение TRUE
Тексториентированные процедуры и функции
При выводе логических выражений в зависимости от значения выводятся подстроки TRUE и FALSE. Ввод логических констант процедурами READ и READLN не предусмотрен.
Примеры и задания для работы с файлами
Пример 1.Написать программу, которая вводит с клавиатуры три вещественных числа и записывает эти числа и их сумму в файл FXD.DAT.
PROGRAM FileFD;
VAR
y, x1, x2, x3: real;
FD: TEXT;
BEGIN
ASSIGN(FD, 'FXD.DAT');
READ(x1, x2, x3); {ввод трех чисел}
REWRITE(FD); {открыть файл для записи}
y := x1 + x2 + x3;
WRITELN(FD,' x1=',x1,' x2=',x2,' x3=',x3); {вывод в файл x1,x2,x3}
WRITELN(FD,' сумма = ',y); {вывод в файл суммы}
CLOSE(FD); {закрыть файл}
END.
Пример 2. Вычислить суммы элементов в столбцах двумерного числового массива А[1..2,1..4], заданного в файле FILE1.dat. Полученные значения поместить в файл FILE2.dat.
Для решения задачи разработана СА (рис. 16) и программа: