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

UptoLike

25
Оператор Write напечатает на экране: True…False. Предостерегаем от
попыток прочитать эти значения из файла в том же виде. Из этого ничего не
выйдет. Чтобы получить из файла логическое значение, закодируйте его бай-
том: 0 = False 1 = True и считайте в байтовую
переменную, а затем преобразуйте в логическое значение:
var
By:Byte; {байтовое значение}
Boo:Boolean absolute by; {логическое значение}
Read(by); {вводится значение байт 0 или 1 }
if Boo then . . .; {и считается логическим значением}
Вернемся к выводу данных. Процедура Write выводит данные в теку-
щую строку и не закрывает ее, т.е. следующие данные запишутся в ту же
строку. Формально, во внешнем файле размер строки не ограничен. Исклю-
чение составляет вывод на дисплей. Если выводимый текступерся в
правую границу окна экрана, то он на этом месте разрывается и продолжает-
ся с началом следующей строки. Кроме того, вывод символа в нижний
правый угол окна автоматически сдвинет изображение вверх на строку, т.е.
все-таки совершит переход на следующую строку.
Процедура WriteLn (Write Line) выводит именно строку данных и за-
крывает ее: приписывает символ #13 в ее конец (точнее, символы #13 и #10,
но последний как бысливаетсяс основным кодом). Это автоматически от-
крывает следующую строку, а на экране возвращает курсор в крайнюю левую
позицию и опускает его на
строку вниз.
Оператор WriteLn или WriteLn (f) может содержать константы, пере-
менные, выражения, вызовы функций - лишь бы они имели соответствующие
типы и были разделены запятыми:
Write(RealVar,номер , intVar, #10#10,сумма= );
WriteLn (RealVar+intVar, + ,Cos(5*5) );
Все, что стоит в кавычках или является строковыми (символьными)
константами и переменными, выведется в том виде, в каком подставлено, и
лишнего места не займет. Но числовые значения будут выводиться по-
разному. Целые как пробел или знак -, а затем число, вещественные - как
пробел или знак и затем
экспоненциальная запись числа. Особенность тек-
стовых файлов при выполнении операции чтения или записи, числа
преобразуются автоматически, и при этом учитывается задание формата.
Имеется возможность управлять форматом вывода данных.
26
Форматы вывода данных.
Таблица 4. Процедура Write(f , x : n) для тестовых файлов,
где Var f: text; x – с указанием формата
Таблица 5. Процедура Read(f , x : n) для тестовых файлов,
где Var f: text; x – с указанием формата
Тип парамет-
ра
Действие
x:char x:n. После n-1 пробела записывается символ x . Если n
отсутствует, то берется n=1.
x:string[k]
или
x:array[1..R]
of char
x:n. Строка x выравнивается по правому краю и записы-
вается в поле из n символов после n – length(x) пробелов.
x:Boolean x:n. Если имеет место True или False, в поле записывает-
ся n символов, выровненных по правому краю. Если n
отсутствует, записывается True или False.
x:integer x:n. х преобразуется из десятичной системы и записыва-
ется в поле из n символов с выравниванием по правому
краю. Если n отсутствует, записывается значение x.
x:real x:n:m. х преобразуется из десятичной системы и записы-
вается в поле из n символов с m знаками после
десятичной точки. m должно принадлежать интервалу
[0,24]. Если m отсутствует, значение x после выравнива-
ния по правому краю записывается в поле из n символов в
формате с плавающей точкой.
Если нет m и n, то значение x записывается с 18 знаками в
указанном формате
Е
Тип пара-
метра
Действие
V:char Считывается только один символ и присваивается V.
V:string[n] Считывается максимум n символов и записывается в V.
Если конец строки или конец файла обнаружен ранее, чем
через n+1 символ, то считывается цепочка символов с нача-
ла строки до признака конец строки (или признака конец
файла). Сами метки конца строки или конца файла в V не
записывается.
V:integer
или
V:real
Ожидается последовательность символов, которые обра-
зуют численную константу, знаки пробела, табуляции,
перевода строки CTRL-z. Численная константа преобразу-
ется и записывается в V. Если цепочка символов не отвечает
ожидаемому формату, то выдается сообщение об ошибке.
      Оператор Write напечатает на экране: ′True False′. Предостерегаем от                                  Форматы вывода данных.
попыток прочитать эти значения из файла в том же виде. Из этого ничего не
                                                                                                 Таблица 4. Процедура Write(f , x : n) для тестовых файлов,
выйдет. Чтобы получить из файла логическое значение, закодируйте его бай-                                          где Var f: text; x – с указанием формата
том:            0 = False       1 = True       и считайте в байтовую
                                                                             Тип парамет-                                Действие
переменную, а затем преобразуйте в логическое значение:                            ра
   var                                                                        x:char           x:n. После n-1 пробела записывается символ x . Если n
       By:Byte;                 {байтовое значение}                                           отсутствует, то берется n=1.
       Boo:Boolean absolute by; {логическое значение}                        x:string[k]       x:n. Строка x выравнивается по правому краю и записы-
                                                                                  или         вается в поле из n символов после n – length(x) пробелов.
      Read(by);                {вводится значение байт 0 или 1 }             x:array[1..R]
      if Boo then . . .;       {и считается логическим значением}            of char
       Вернемся к выводу данных. Процедура Write выводит данные в теку-      x:Boolean         x:n. Если имеет место True или False, в поле записывает-
щую строку и не закрывает ее, т.е. следующие данные запишутся в ту же                         ся n символов, выровненных по правому краю. Если n
                                                                                              отсутствует, записывается True или False.
строку. Формально, во внешнем файле размер строки не ограничен. Исклю-       x:integer         x:n. х преобразуется из десятичной системы и записыва-
чение составляет вывод на дисплей. Если выводимый текст “уперся” в                            ется в поле из n символов с выравниванием по правому
правую границу окна экрана, то он на этом месте разрывается и продолжает-                     краю. Если n отсутствует, записывается значение x.
ся с началом следующей строки. Кроме того, вывод символа в нижний            x:real            x:n:m. х преобразуется из десятичной системы и записы-
правый угол окна автоматически сдвинет изображение вверх на строку, т.е.                      вается    в поле из n символов с m знаками после
                                                                                              десятичной точки. m должно принадлежать интервалу
все-таки совершит переход на следующую строку.
                                                                                              [0,24]. Если m отсутствует, значение x после выравнива-
      Процедура WriteLn (Write Line) выводит именно строку данных и за-                       ния по правому краю записывается в поле из n символов в
крывает ее: приписывает символ #13 в ее конец (точнее, символы #13 и #10,                     формате с плавающей точкой.
но последний как бы “сливается” с основным кодом). Это автоматически от-                       Если нет m и n, то значение x записывается с 18 знаками в
крывает следующую строку, а на экране возвращает курсор в крайнюю левую                       указанном формате Е
позицию и опускает его на строку вниз.
                                                                                                  Таблица 5. Процедура Read(f , x : n) для тестовых файлов,
      Оператор WriteLn или WriteLn (f) может содержать константы, пере-                                            где Var f: text; x – с указанием формата
менные, выражения, вызовы функций - лишь бы они имели соответствующие        Тип пара-                                  Действие
типы и были разделены запятыми:                                                метра
      Write(RealVar,′номер ′, intVar, #10#10,′сумма= ′);                     V:char           Считывается только один символ и присваивается V.
      WriteLn (RealVar+intVar,′ + ′,Cos(5*5) );                              V:string[n]      Считывается максимум n символов и записывается в V.
                                                                                             Если конец строки или конец файла обнаружен ранее, чем
      Все, что стоит в кавычках или является строковыми (символьными)
                                                                                             через n+1 символ, то считывается цепочка символов с нача-
константами и переменными, выведется в том виде, в каком подставлено, и                      ла строки до признака конец строки (или признака конец
лишнего места не займет. Но числовые значения будут выводиться по-                           файла). Сами метки конца строки или конца файла в V не
разному. Целые как пробел или знак ′-′, а затем число, вещественные - как                    записывается.
пробел или знак и затем экспоненциальная запись числа. Особенность тек-      V:integer        Ожидается последовательность символов, которые обра-
                                                                               или           зуют численную константу, знаки пробела, табуляции,
стовых файлов при выполнении операции чтения или записи, числа               V:real          перевода строки CTRL-z. Численная константа преобразу-
преобразуются автоматически, и при этом учитывается задание формата.                         ется и записывается в V. Если цепочка символов не отвечает
Имеется возможность управлять форматом вывода данных.                                        ожидаемому формату, то выдается сообщение об ошибке.
                                   25                                                                              26