Основы алгоритмизации и программирования. Часть четвертая. Файловая система Turbo Pascal. Асламова В.С - 12 стр.

UptoLike

23
While not EOF(f) do Read(f, ...);
остановится только после полного истощения файла, даже если последние
1024 строк его были пустыми. Если переписать цикл в виде
While not SeekEOF(f) do Read(f, …)
он станет работать более эффективно.
Как и SeekEOLn, функция SeekEOF применима только к открытым для
чтения текстовым файлам.
Операторы ввода - вывода в текстовые файлы
Ввод и вывод числовой и текстовой информации в Турбо Паскале
осуществляется операторами:
Ввод
Read(f, X) или Read(f, x1, x2,...xn) и Readln(f, X) или Readln(f, x1, x2,...xn);
Вывод
Write(f, X) или Write(f, x1, x2,...xn) и Writeln(f, x) или Writeln(f, x1, x2,...xn).
Если в операторе ввода - вывода первым параметром стоит логическое
имя файла, то это означает, что поток данных будет приниматься (Read) или
направляться (Write) на конкретное физическое устройство компьютера, свя-
занное в данный момент с логическим именем этого файла.
Если операторы содержат один лишь список ввода - вывода, то счита-
ется, что ввод сопряжен со стандартным логическим файлом Input (под ним
подразумевается клавиатура сэхом ввода на экране), а вывод - с логиче-
ским файлом Output (что соответствует выводу на экран дисплея).
Имена Input и Output являются предопределенными в системной биб-
лиотеке (модуле System). Напомним, что в стандартном Паскале любая
программа, использующая ввод - вывод, должна начинаться со слов
PROGRAM имя (Input, Output);
что, по сути, открывает каналы ввода - вывода. В Турбо Паскале можно сме-
ло опускать описание PROGRAM и не надо описывать имена Input и Output.
Таким образом, оператор Read (x1, x2) полностью эквивалентен опера-
тору Read (Input, х1, х2), а оператор Write (xЗ, x4) - оператору Write (Output,
xЗ, x4).
24
1. Операторы ввода Read/ Readln
Рассмотрим сначала операторы ввода информации – Read и Readln. Их
аргументами должен быть список переменных, значения которых будут счи-
таны (введены). Тип переменных при вводе из текстового файла (в том числе
и с клавиатуры) может быть только целым, вещественным, символьным
(Char), строковым или совместимым с ними.
Процедура ReadLn(Read Line) считывает значения в текущей строке и
переводит позицию на начало следующей строки, даже если в текущей строке
остались непрочитанные данные. Так, при чтении в текстовом файле строки:
12.3 13.4 14.5 15.6
оператором ReadLn(f, r1, r2) вещественные переменные r1 и r2 получат зна-
чения 12.3 и 13.4, после чего произойдет переход на другую строку, и
следующие два числа (14.5 и 15.6) будут проигнорированы. Вызов
ReadLn;
без указания файла и списка ввода сделает паузу до нажатия клавиши ввода.
Символ - признак конца текста #26 также является разделителем и ог-
раничивает строку, но за ним чтение уже невозможно. Файл на нем
кончается! Конец файла может быть считан в символьную переменную, в
строчную он не войдет (как не входит символ 13), а чтение #26 вместо ожи-
даемых числовых значений эквивалентно прочтению 0.
2. Операторы вывода Write/WriteLn
Операторы Write и WriteLn выводят значение x или список значений
x1, х2, . . .,хn в текстовый файл f. Если файл не указан, то считается, что вы-
вод направлен в файл Output (на дисплей). Значения, как и при вводе, могут
иметь лишь целые, вещественные, символьные и строковые типы, а также
производные от них. Всевозможные структуры (записи, массивы) должны
выводиться по их полям или элементам. Множества, указатели (Pointer), фай-
ловые переменные также не могут быть выведены без предварительного их
преобразования в выводимые составляющие. Исключение составляет лишь
тип Boolean:
Const
tr: Boolean = True;
fa: Boolean = False;
Write(tr,,fa);
                           While not EOF(f) do Read(f, ...);                                       1. Операторы ввода Read/ Readln
остановится только после полного истощения файла, даже если последние                         Рассмотрим сначала операторы ввода информации – Read и Readln. Их
1024 строк его были пустыми. Если переписать цикл в виде                                аргументами должен быть список переменных, значения которых будут счи-
                        While not SeekEOF(f) do Read(f, )                               таны (введены). Тип переменных при вводе из текстового файла (в том числе
 он станет работать более эффективно.                                                   и с клавиатуры) может быть только целым, вещественным, символьным
       Как и SeekEOLn, функция SeekEOF применима только к открытым для                  (Char), строковым или совместимым с ними.
чтения текстовым файлам.                                                                      Процедура ReadLn(Read Line) считывает значения в текущей строке и
                                                                                        переводит позицию на начало следующей строки, даже если в текущей строке
       Операторы ввода - вывода в текстовые файлы                                       остались непрочитанные данные. Так, при чтении в текстовом файле строки:
                                                                                                                  12.3      13.4    14.5    15.6
      Ввод и вывод числовой и текстовой информации в Турбо Паскале                      оператором ReadLn(f, r1, r2) вещественные переменные r1 и r2 получат зна-
осуществляется операторами:                                                             чения 12.3 и 13.4, после чего произойдет переход на другую строку, и
                                        Ввод                                            следующие два числа (14.5 и 15.6) будут проигнорированы. Вызов
  Read(f, X) или Read(f, x1, x2,...xn) и Readln(f, X) или Readln(f, x1, x2,...xn);                                        ReadLn;
                                      Вывод                                             без указания файла и списка ввода сделает паузу до нажатия клавиши ввода.
 Write(f, X) или Write(f, x1, x2,...xn) и Writeln(f, x) или Writeln(f, x1, x2,...xn).         Символ - признак конца текста #26 также является разделителем и ог-
                                                                                        раничивает строку, но за ним чтение уже невозможно. Файл на нем
       Если в операторе ввода - вывода первым параметром стоит логическое               кончается! Конец файла может быть считан в символьную переменную, в
имя файла, то это означает, что поток данных будет приниматься (Read) или
                                                                                        строчную он не войдет (как не входит символ 13), а чтение #26 вместо ожи-
направляться (Write) на конкретное физическое устройство компьютера, свя-
                                                                                        даемых числовых значений эквивалентно прочтению 0.
занное в данный момент с логическим именем этого файла.
       Если операторы содержат один лишь список ввода - вывода, то счита-                            2. Операторы вывода Write/WriteLn
ется, что ввод сопряжен со стандартным логическим файлом Input (под ним                        Операторы Write и WriteLn выводят значение x или список значений
подразумевается клавиатура с “эхом” ввода на экране), а вывод - с логиче-               x1, х2, . . .,хn в текстовый файл f. Если файл не указан, то считается, что вы-
ским файлом Output (что соответствует выводу на экран дисплея).                         вод направлен в файл Output (на дисплей). Значения, как и при вводе, могут
       Имена Input и Output являются предопределенными в системной биб-                 иметь лишь целые, вещественные, символьные и строковые типы, а также
лиотеке (модуле System). Напомним, что в стандартном Паскале любая                      производные от них. Всевозможные структуры (записи, массивы) должны
программа, использующая ввод - вывод, должна начинаться со слов                         выводиться по их полям или элементам. Множества, указатели (Pointer), фай-
                      PROGRAM имя (Input, Output);                                      ловые переменные также не могут быть выведены без предварительного их
                                                                                        преобразования в выводимые составляющие. Исключение составляет лишь
что, по сути, открывает каналы ввода - вывода. В Турбо Паскале можно сме-
                                                                                        тип Boolean:
ло опускать описание PROGRAM и не надо описывать имена Input и Output.
                                                                                               Const
       Таким образом, оператор Read (x1, x2) полностью эквивалентен опера-
                                                                                               tr: Boolean = True;
тору Read (Input, х1, х2), а оператор Write (xЗ, x4) - оператору Write (Output,
                                                                                               fa: Boolean = False;
xЗ, x4).

                                                                                              Write(tr,′   ′,fa);


                                         23                                                                                   24