Скачиваний:
201
Добавлен:
17.06.2016
Размер:
2.69 Mб
Скачать

Предикат readln/1

Предикат readln читает текстовую строку и использует следующий фор-

мат:

readln( Line) /* ( o ) */

Домен для переменной Line должен быть либо строкового, либо символь-

ного типа. Перед тем, как вы вызовете readln, переменная Line должна быть

свободна. readln считывает до 127 символов (плюс возврат каретки) с кла-

виатуры, до 64К с других устройств. Если во время ввода с клавиатуры на-

жата клавиша Esc , readln потерпит неудачу.

Предикаты readint/1, readreal/1 и readchar/1

Предикат readint считывает целое значение, используя формат:

readint( X) /* ( o ) */

Домен для переменной X должен быть целого типа, а X перед вызовом

должна быть свободна. readint будет считывать целое значение с текущего

входного устройства ( возможно с клавиатуры), пока не будет нажата клави-

ша Enter. Если считанная строка не соответствует синтаксису целых,

readint терпит неудачу, и Турбо Пролог вызывает механизм поиска с возвра-

том. Если во время ввода с клавиатуры нажата клавиша Esc , readint терпит

неудачу.

Предикат readreal работает в соответствии со своим названием: он

считывает вещественные (real) числа ( аналогично readint, считывающему

целые). Предикат readreal использует следующий формат:

readreal(X) /* ( o ) */

Домен для переменной X должен быть вещественного типа, а X должна

перед вызовом быть свободна. Предикат readreal будет читать вещественные

значения с текущего устройства ввода, пока не будет нажата клавиша Enter.

Если ввод не соответствует обычному синтаксису вещественых чисел,

readreal терпит неудачу. Если во время ввода нажата клавиша Esc, readreal

также терпит неудачу.

Предикат readсhar считывает один символ с текущего устройства ввода,

используя формат:

readchar(CharParam) /* ( o ) */

Перед вызовом readchar CharParam должна быть свободной переменной и

должна принадлежать домену char. Если текущим устройством ввода является

клавиатура, readchar ждет, пока будет нажат один символ, после чего возв-

ращает его. Если во время ввода нажатз клавиша Esc, readchar терпит неу-

дачу.

Предикат readterm/2

Предикат readterm считывает сложные термы и превращает их в объекты.

Он имеет следующий формат:

readterm(DomainName, Term) /* ( i,i ) */

Вы вызываете readterm с двумя аргументами: именем домена и термом.

readterm читает строку и превращает ее в объект данного домена. Если

строка не будет иметь вид объекта, сформиронного предикатом write,

readterm даст ошибку.

Предикат readterm может использоваться для обработки термов в текс-

товых файлах. Например, вы можете создать собственные версии save и

consult. Более детльно предикат readterm обсуждается в Главе 9, где опи-

сывается использование readterm для доступа к базе данных на дисковом

файле.

Предикат file_str/2

Предикат file_str читает символы из файла и переносит их в перемен-

ную, или создает файл и записывает в этот файл строку. Использует формат:

file_str(Filename, Text) /* (i,o), (i,i) */

Если перед вызовом file_str переменная Text свободна, file_str чита-

ет символы из файла Filename, пока не встретится символ конца файла (

обычно Ctrl-Z ). Содержимое файла Filename пересылается в переменную

Text. Например, вызов:

file_str("t.dat", Myext)

свяжет Myext с содержимым файла T.DAT. При этом строка может содержать

символы возврата каретки. Читаемый файл не может превышать 64 Кбайт в

длину. Если файл имеет объем более 64 Кбайт, file_str возвратит сообщение

об ошибке.

Если Myext связана с текстом из "t.dat", file_str("t.bak", Myext)

создаст файл с именем T.BAK, который содержит текст из "t. dat".

Соседние файлы в папке Документация