Здавалка
Главная | Обратная связь

Ключевые слова, определяющие свойства фактов.



Кроме того, при описании предиката можно указать, будет он детер­минированным или недетерминированным. Детерминированный преди­кат возвращает только одно решение, а недетерминированный предикат при помощи поиска с возвратом может давать много решений. Детерми­нированные предикаты менее требовательны к оперативной памяти и вы­полняются быстрее.Для того чтобы указать, что предикат является детерминированным (недетерминированным), нужно перед его именем поместить зарезерви­рованное слово determ (nondeterm). Если ни determ, ни поndeterm при опи­сании предиката не использовались, то, по умолчанию, предикат считает­ся детерминированным.В Турбо Прологе имеется директива компилятора check_determ, которая принудительно включает проверку предикатов на детерминированность.

5.1. Предикаты ввода-вывода, ввод термов.

Ввод (INPUT)

readln(StringVariable) (string) - (o) читает строку с текущего устройства и связывает ее с переменной StringVariable.

readint(IntgVariable) (integer) - (o) читает целое число с текущего устройства и связывает его с переменной IntgVariable.

readreal(RealVariable) (real) - (o) читает действительное число с текущего устройства и связывает его с переменной RealVariable.

readchar(CharVariable) (char) - (o) читает символ с текущего устройства и связывает ее с переменной CharVariable.

file_str(DosFileName,StringVariable)(string,string) - (i,o) (i,i) читает (записывает) из файла (в файл) DosFileName строку и связывает ее с переменной StringVariable.

inkey(CharVariable) (сhar) - (o) читает символ со стандартного устройства ввода. В отличие от

предиката readchar выполнение программы не прерывается. Поэтому inkey применяют главным образом для организации циклов ожидания.

keypressed проверяет нажата ли некоторая клавиша, не читая при этом введенный с клавиатуры символ.

unreadchar(CharToBePushedBack) (сhar) - (i) заносит символ в буфер клавиатуры.

readterm(Domain,Variable) (DomainName,Domain) - (i,o) читает терм, объявленный с именем Domain. С помощью readterm осуществляется доступ к фактам в файле.

Вывод (OUTPUT)

write(Variable|Constant*) Записывает заданные значения на текущее устройство вывода. В

качестве аргумента используется список переменных и/или констант.

nl перевод строки

writef(FormatString,Variable|Constant*)

Осуществляет вывод заданных значений в указанном формате.

В формате строки используются следующие опции:

%d десятичное число (char и integer);

%u беззнаковое целое (char и integer);

%R указатель на запись в базе данных (database reference

number);

%X шестнадцатиричное число (string, database reference numb);

%x шестнадцатиричное число (char и integer);

%s строка (symbol и string);

%c символ (char и integer);

%g действительное число (по умолчанию для real);

%e действительное число в экспоненциальном формате

%f действительное число с фиксированной запятой

%lf действительное число с фиксированной запятой

\n - переход на новую строку

\t - табуляция

5.2 Файловая система и работа с файлами.

Работа с файлами ( FILESYSTEM )

openread(SymbolicFileName,DosFileName) (file,string) - (i,i) Открывает файл для чтения. Здесь SymbolicFileName - логическое имя файла, определяемое в DOMAINS как относящееся к типу

file, DosFileName - имя файла в MS DOS. Например,

DOMAINS in = file

GOAL openread(in,"file.txt").

openwrite(SymbolicFileName,DosFileName) (file,string) - (i,i) Открывает файл для записи.

openappend(SymbolicFileName,DosFileName) (file,string) - (i,i) Открывает файл для дополнения.

openmodify(SymbolicFileName,DosFileName) (file,string) - (i,i) Открывает файл для чтения/записи.

readdevice(SymbolicFileName) (file) - (i) (o) Присваивает текущему устройству ввода заданное символическое имя файла или считывает заданное символическое имя файла.

writedevice(SymbolicFileName) (file) - (i) (o) Присваивает текущему устройству вывода заданное символическое имя файла или считывает заданное символическое имя файла.

filemode(SymbolicFileName,FileMode) (file,Integer) - (i,i) (i,o) Устанавливает/опрашивает тип заданного файла.

FileMode = 0 - текстовый файл,

1 - двоичный файл.

closefile(SymbolicFileName) (file) - (i) Закрывает данный файл.

filepos(SymbolicFileName,FilePosition,Mode) (file,real,integer) - (i,i,i) (i,o,i)

Устанавливает указатель данного файла на заданную позицию или считывает текущую позицию.

Mode = 0 - относительно начала файла,

1 - относительно текущей позиции,

2 - относительно конца файла.

eof(SymbolicFileName) (file) - (i) Проверка на конец файла. Выполняется успешно, если указатель

текущей позиции файла указывает на конец файла, и завершается неудачно в противном случае.

flush(SymbolicFileName) (file) - (i) Очищает содержимое буфера. Содержимое внутреннего файлового буфера пересылается в заданный файл. С помощью предиката flush можно организовать передачу данных до того, как буфер будет заполнен.

existfile(DosFileName) (string) - (i) Проверяет существует ли заданный файл в текущем каталоге.

deletefile(DosFileName) (string) - (i) Удаляет заданный файл DOS.

renamefile(OldDosFileName,NewDosFileName) (string,string) - (i,i) Переименовывает файл DOS. OldDosFileName - старое имя, NewDosFileName - новое имя файла.

disk(DosPath) (string) - (i) (o) Устанавливает или показывает накопитель и путь.

 







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.