ВУЗ:
Составители:
Рубрика:
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
Страницы
- « первая
- ‹ предыдущая
- …
- 11
- 12
- 13
- 14
- 15
- …
- следующая ›
- последняя »