Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Подготовка к PROLOG.doc
Скачиваний:
1
Добавлен:
27.09.2019
Размер:
154.11 Кб
Скачать

Стандартные предикаты для работы со строками Определение длины строки

Str_len (строка, длина) (string, string) : (i, o) (i, i)

(i, o) – с параметром длина связывается количество символов в строке

(i, i) – выполняетсмя успешно, если строка имеет указанную длину.

Конкатенация строк

concat (Стр1, Стр2, Стр3) (string, string, string) : (i, i, o) (o, i, i) (i, o, i) (i, i, i)

(i, i, o) concat (“фут”, “бол”, X) X=”футбол”

(o, i, i) concat (X, “ball”, “football”) X= “foot”

(i, i, i) concat (“foot”, “ball”, “football”) True

Создание подстрок

frontstr (КопСтр, ВхСтр, ВыхСтр, Остаток) (integer, string, string, string) : (i, i, o, o)

Выходная строка получается из входной строки отрезанием начальных символов, количество которых определяется параметром КолСим. Остаток строки определяется параметром Остаток.

Разделение строки на две части

frontchar (строка, ПервСимвол, Остаток) (string, char, string) (i, o, o) (i, i, o) (i, o, i) (i, i, i)(o, i, i)

(i, o, o) frontchar (“Sad”, X, Y) X=’S’, Y=’ad’

(i, i, o) frontchar (“Sad”, ‘S’, X) X=’ad’

(i, o, i) frontchar (“Sad”, X, ‘ad’) X=’S’

(i, i, i) frontchar (“Sad”, ‘S’, ‘ad’) true

(o ,i, i) frontchar (X, ‘S’, ‘ad’) X=”Sad”

Используется для преобразования строки в список символов

convert (“ “, [ ]).

convert (Str, [H|T]):- frontchar (Str, H, Ost), convert (Ost, T).

Прверка на строку

isname (строка) (string) : (i)

Имена испоьзуются для обозначения символических констант, предикатов и переменных.

Формирование атомов из строк

fronttoken (Строка, Атом, Остаток) (string, string, string) : (i, o, o) (i, i, o) (i, o, i) (i, i, i) (o, i, i)

Атом – последовательность символов, имеющих смысл. Атомы могут быть : именем ТП, строчным представлением числа, отдельным символом (кроме пробела).

(i, i, o) fronttoken (“Go to cursor”, X, Y) X=”Go” Y=”to cursor”

Преобразование строки в список символов или атомов. Преобразование данных из одного типа в другой.

ТП для преобразования данных из одного типа в другой имеет следующие стандартные предикаты.

Преобразование прописных букв в строчные и наоборот

upper_lower (Стр1, Стр2) (string, string) : (i, i) (i, o) (o, i)

(i, i) upper_lower (“B”, “b”) True

(i, o) upper_lower (“ABC”, X) X=”abc”

(o, i) upper_lower (X, “abc”) X=”ABC”

Преобразование строки в символ

str_char (Строка, Символ) (string, char) : (i, i) (i, o) (o, i)

(i, o) str_char (“A”, X) X=’A’

(o, i) str_char (X, ‘A’) X=”A”

(i, i) str_char (“A”, ‘A’) True

Преобразование строки в целое число и наоборот

str_int (Строка, ЦелЧисло) (string, real) : (i, o) (o, i) (i, i)

(i, o) str_int (“345”, X) X=345

(o, i) str_int (X, 345) X=”345”

(i, i) str_int (“45”, 45) True

Преобразование строки в дейтсвительное число и наоборот

str_int (Строка, ДействЧисло) (string, integer) : (i, o) (o, i) (i, i)

Преобразование символа в число (код ASCII) и наоборот

char_int (Символ, Число) (char, integer) : (i, o) (o, i) (i, i)

Применение предикатов преобразования данных целесообразно, когда тип объекта встроенного предиката отличается от типа объекта предиката, определенного пользователем. Преобразование необходимы, когда значение одного типа должно быть присвоено к переменной другого типа.

Преобразование, определяемые пользователем

Пользователь может определить преобразование, не предусмотренные предикатами. Например: целые числа в действительные и наоборот.

predicates

conv_real_int (real, integer)

clauses

conv_real_int (R, N):- R=N.

Предикат ТП для работы с файлами

Удаление файлов

deletefile (ИмяФайлаДОС) (string) : (i)

Параметр ИмяФайлаДОС может создать имя накопителя, но не должен указывать путь.

deletefile (“C: progr.pro”)

Сохранение файла

save (ИмяФайлаДОС) (string) : (i)

Используется для записи на внешнйи накопитель динамической базы данных. После этого файо можно снова загрузить в ОП. Если заданный файл ИмяФайлаДОС уже существует, то его содержимое уничтожается.

Переименование файлов

renamefile (СтИмяФДОС, НовИмяФДОС) (string, string) : (i, i)

Проверка наличия файла

existfile (ИФД) (string) : (i)

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

Сброс данных из внутреннего файлового буфера в заданный файл

flash (СимвИФ) (file) : (i)

Позволяет организовывать передачу данных на стандартный интерфейс до того, как буфер будет заполнен.

Установка накопителя и пути

disc (ПутьДОС) (string) : (i) (o)

  1. – устанавливает путь и накопитель

(o) – связывает с параметром текущий накопитель и путь.

Вывод текущего каталога

dir (Путь, СпецификацияФайла, ИФД) (string, string, string) : (i, i, o)

Выдается каталог имен файлов в соответствии с заданными параметрами и присваивается 3-му параметру имя выбранного из каталога файла.

dir (“E:\PROLOG”, “a*.*”, X)

Открытие файлов

  • для чтения : openread

  • для записи: openwrite

  • для чтения/записи : openmodify

  • для заполнения (до записи) : openappend.

Формат этих предикатов одинаков: (СИФ, ИФД) (file, string) : (i, i)

Закрытие файла

closefile (СИФ) (file) : (i)

Для стандартных устройств (клава, экран, принтер) опции открытия и закрытия файла выполнять не нужно (автоматически).

Проверка на конец файла

eof (СИФ) (file) : (i)

Выполняется успешно, если указатель текущей позиции файла указывает на конец файла.

Установка или чтение типа файал

filemode (СИФ, тип) (file, integer) : (i, i) (i, o)

(i, i) – устанавливает тип файла ( 0 – текстовый, 1 – бинарный)

(i, o) – читает тип заданного файла и связывает его с параметром тип файла.

Устанвока или чтение позиции указателя файла

filepos (СИФ, Позиция, Режим) (file, real, integer) : (i, i, i) (i, o, i)

(i, i, i) – устанавливает указатель данного файла на заданню позицию (Режим=0 – относительно начала файла, =1 – текущей позиции, =2 – конца)

(i, o, i) – определяет позицию указателя относительно начала файла.

Чтение строки из файла

file_str (ИФД, Строка) (string, string) : (i, o) (i ,i)

(i, o) – читает строку из заданного файла и связывает ее с параметрм строка.

(

Максимально допустимый размер строки 64 кБайта. Признаком конца строки является символ Ctrl-Z (126).

Использование файлов на внешнем носителе

ТП позволяет переадресовывать логические устройства ввода-вывода с помощью двух встроенных предикатов

readdevice (СимвИмяФайла) (symbol) : (i) (o)

Определяет или считывает символьное имя файла для устройства ввода.

(i) – связывает текущее устройство чтения с открытым файлом. Под СимвИменемФайла понимается символьное имя клавиатуоы либо симвоьное имя файла, открытого для чтения или модификации.

(o) – связывеат символьное имя файла с именем текущего устройства чтения, которое может быть клавиатурой или файла.

readdevice (X) X=клавиатура

writedevice (СимвИмяФайла) (symbol) : (i) (o)

Определяет или считывает символьное имя файла для устройства вывода.

(i) – переназначает текущее устройство записи на открытый файл с именем СимвИмяФайла, который может быть одним из заранее определенных символьных имен (screen или printer) или имеет символьное имя, задаваемое пользоваетелем для файла, открытого для записи или модификации.

(o) – связывает параметр СимвИмяФайла с именем текущего устрйоства записи, которое может иметь имя screen, printer или символьное имя файла.