Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ к лаб. раб. Візуальне прог..doc
Скачиваний:
4
Добавлен:
07.02.2016
Размер:
198.66 Кб
Скачать

Додаток б Стандартні предикати

Всі стандартні предикати виконують основну дію і повертають істину, або повертають лжу і дію не виконують. У розділі подано у короткій формі предикати, що часто вживаються. Для детального знайомства дивись конспект лекцій та довідку Visual Prolog.

Б.1 Стандартні предикати роботи з динамічною базою даних

Всі стандартні предикати розділу Б.1 можуть мати один аргумент(ім’я файлу), якщо факти описуються в неіменованій секції Facts або два аргументи(ім’я файлу та ім’я іменованої секції), якщо факти описуються в іменованої секції Facts-ім’я.

Consult (“Ім'я_файлу”, Ім'я_Facts) - завантажує факти з файлу,

(string, symbol) що описані в іменованій секції.

Consult (“Ім'я_файлу”) - завантажує факти з файлу, що описані в неіменованій секції.

Assertz (факт, Ім'я_Facts) вставляє факт в кінець динамічної БД.

Assert (факт, Ім'я_Facts) вставляє факт в кінець динамічної БД.

Asserta (факт, Ім'я_Facts) вставляє факт в початок БД.

retract (факт) – вилучає перший факт із вказаним предикатом і вказаними значеннями його аргументів.

retractall (факт, Ім'я_Facts) – вилучає усі факти з динамічної бази даних із вказаним предикатом і значеннями його аргументів.

save(“Ім'я_файлу”, Ім'я_Facts) – зберігає факти у файлі.

Б.2 Стандартні предикати роботи з рядками

Предикат Frontchar (Рядок, Символ, Залишок)

(string, char, string)

Працює з першим символом рядку. Режими роботи предиката

залежать від конкретизації змінних(і змінну треба конкретизувати, змінна вільна для результату):

  • (і, o, o) поділяє рядок на перший символ і його залишок;

  • (o, i, i) приєднує символ до початку рядка;

  • (і, і, o) перевіряє, чи починається рядок із вказаного символу;

  • (і, o, і) перевіряє, чи дорівнює залишок рядка після відділення першого символу, зазначеному;

  • (i, i, i) перевіряє, чи складається рядок з вказаних частин.

Предикат Fronttoken (Рядок, Лексема, Залишок)

(string, string, string)

Предикат працює з першою лексемою(словом) рядку. Режими роботи предиката залежать від конкретизації змінних:

  • (і, o, o).розділяє рядок на перше слово і його залишок;

  • (o, і, і,).приєднує слово до початку рядка;

  • (і, і, o) перевіряє, чи починається рядок із зазначеної лексеми;

  • (і, o, і) перевіряє, чи дорівнює залишок рядка зазначеному;

  • (і, і, і) перевіряє, чи дорівнює рядок зазначеним частинам, де частини – перша лексема рядка і залишок.

Предикат Frontstr (Кількість символів, Рядок, Рядок1, Рядок2)

(integer, string, string, string):

( і, і, о, о) предикат відокремлює зазначену кількість символів від початку рядка.

Предикат Concat (Str1, Str2, Str)

(string, string, string):

  • (і, і, o) рядки з'єднуються за принципом Str1+Str2 = Str;

  • (і, o, і) виділяється маскою(рядком) початок іншого рядку;

  • (o, і, і) виділяється маскою кінець рядк;

  • (i, i, i,) перевіряє, чи складається рядок із зазначених частин.

Предикат Str_len (Рядок, Довжина)

(string, integer)

Предикат працює в 3х режимах:

  • (і, o) предикат знаходить довжину рядка;

  • (і, і) порівнює, чи дорівнює довжина рядка вказаній;

  • (о, і) предикат формує рядок із пропусків зазначеної довжини.

Предикат subchar (Рядок, Позиція, Символ)

(string, integer, char)

(і, і, о) одержує символ рядку за позицією, яка рахується з 1.

Предикат substring (Рядок, Позиція, Довжина, Підрядок)

(string, integer, integer, string)

(і, і, і, о) одержує з рядку підрядок за номером початку підрядку і його довжиною.

Предикат searchchar (Рядок, Символ, Позиція)

(string, char, integer)

(і, і, о) шукає символ в рядку і повертає позицію першого знайденого символу.

Предикат searchstring (Рядок, Підрядок, Позиція)

(string, string, integer)

(і, і, о) шукає підрядок в рядку і повертає позицію першого знайденого підрядку.

Предикат str_char (Рядок, Символ)

(string, char)

Предикат працює в таких режимах роботи:

  • (i, o) перетворює рядок з одного символу типу string в символ типу char;

  • (o, i) перетворює символ типу char в рядок з одного символу типу string;

  • (і, і) порівнює рядок з одного символу типу string і один символ типу char.

Предикат str_int (Рядок, Ціле число)

(string, integer)

Предикат працює в таких режимах роботи:

  • (i, o) – перетворює рядок типу string в ціле число;

  • (o, i) - перетворює ціле число в рядок типу string;

  • (i, i) - порівнює ціле число з його текстовим подаванням типу string

Предикат char_int (Символ, Код символу)

(char, integer)

Предикат працює в таких режимах роботи:

  • (i, o) – перетворює символ в код символу;

  • (o, i) - перетворює код символу в символ;

  • (і, i) - порівнює код символу з символом.

Б.3 Основна операція на списках

Основна операція на списку L=[H|T] працює залежно від конкретизації змінних в різних режимах. При конкретизації змінних, яка не вказана в таблиці компілятор виявляє помилку.

L = [ H | T ]

  • ( i, o, o ) розділяється список L, якщо він не порожній, на перший елемент Н і хвіст списку Т, повертає true. Для порожнього списку повертає fail.

  • ( o, i, i ) приєднує елемент Н до початку списку Т і привласнює змінній L.

  • ( i, i, o ) порівнюються 1-ий елемент списку L з вказаним Н. Якщо порівняння вірне, то змінна Т конкретизується хвостом списку.

  • ( i, o, i ) порівнюються хвіст списку L з вказаним списком T. Якщо порівняння вірне, вільна змінна Н конкретизується першим елементом списку.

  • ( i, i, i ) перевіряється, чи складається список L з вказаних частин H i T. Повертається true або fail.