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

8.3.2. Организация запросов на prolog

Последним элементом программы на PROLOG являются вопросы. Вопросы можно сформулировать в теле программы в разделе GOAL, который вводится после раздела Clauses.

Например:

GOAL

дед(Х,анна) /*кто дед анны?*/

Сформулированный так запрос называется внутренней целью.

Но можно формулировать вопрос после нажатия <Run> в открывающемся при этом окне <goal>

goal:дед(Х,анна).

В этом случае цель называется внешней.

Пример

8.1. Построить базу знаний из следующих фактов: Карл у Клары украл кораллы. Клара у Карла украла кларнет.

Построить вопросы: Кто украл кларнет? Кто украл кораллы? Что украл Карл? Что было украдено?

Решение:

domains

X,Y,Z=symbol.

predicates

украл(X,X,X).

clauses

украл(карл,кораллы,клара).

украл(клара,кларнет,карл).

/*вопросы могут быть заданы так:*/

goal:украл(Х,кларнет,Y)

ответ:Х=клара Y=карл

goal украл(Х,кораллы,Y).

ответ:Х=карл Y=клара

goal украл(карл,Х,Y)

ответ:Х=кораллы Y=клара

goal украл (X,Y,Z)

ответ:Х=карл Y=кораллы Z=клара

Х=клара Y=кларнет Z=карл

Упражнения

    1. Построить базу данных своих родных мужского пола с фактами: отец и сын – и правилами: дед, внук, брат.

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

    3. Построить базу знаний «студент» с полями: фамилия, балл 1, балл 2 – и правило "стипендия" с полями: фамилия, сумма.

    4. Построить базу данных о родственниках: мать – дочь и правила: тетя, племянница, бабушка, внучатая племянница.

    5. Построить базу данных «телефонная книга» с полями: фамилия, номер, адрес – и правила.

    6. Построить базу данных «родитель» (имя родителя, имя ребенка) и правила: мать, отец.

    7. Построить базу данных фактов: мальчик (имя), девочка (имя), дружит (имя, имя) – и правила: приятели (Х, Y), приятельницы (Х, Y).

    8. Построить базу данных из фактов, кто на чем играет (имя, инструмент) и правило "квартет" (X, Y, Z, T).

    9. Построить базу данных из фактов: мужчина (имя, возраст), женщина (имя, возраст) – и правило "подлежит призыву" (имя).

    10. Построить базу данных из фактов: ученик (фамилия, класс, школа), – правило "одноклассники" (X, Y).

    11. Построить базу данных «знакомства» из следующих фактов и правил: Мери прелестна; Джон добрый; Джон мужественный; Джон сильный, некто счастлив, если богат и нравится женщинам; мужчина нравится женщине, если женщина нравится мужчине и он добрый, либо мужчина добрый и сильный; мужчине нравится женщина, если она прелестна.

8.4. Ввод-вывод данных на prolog

Для организации ввода используются стандартные предикаты readint(X), readreal(X), readchar(X), …, позволяющие ввести соответственно целое, вещественное число, одну литеру или строку символов.

Для вывода данных на экран служат стандартные предикаты: write(X) и nl  перевод курсора на новую строку.

Пример

8.2. Закончим раздел примером вычисления суммы двух введенных с клавиатуры целых чисел.

domains

X,Y,Z=integer.

predicates

vvod(X,X).

sum(X,X,X).

clauses

vvod(X,Y) if write(«введите Х, Y»),

readint(X),readint (Y).

sum(X,Y,Z) if vvod(X,Y),Z=X+Y.

goal:sum(X,Y,Z).

Система выведет на экран приглашение к вводу, дождется ввода с клавиатуры двух чисел и выведет полученное значение Z.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]