Ключевые слова, определяющие свойства фактов.
Кроме того, при описании предиката можно указать, будет он детерминированным или недетерминированным. Детерминированный предикат возвращает только одно решение, а недетерминированный предикат при помощи поиска с возвратом может давать много решений. Детерминированные предикаты менее требовательны к оперативной памяти и выполняются быстрее.Для того чтобы указать, что предикат является детерминированным (недетерминированным), нужно перед его именем поместить зарезервированное слово 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 Все права принадлежат авторам размещенных материалов.
|