- •8. Языки и технологии программирования для искусственного интеллекта
- •8.1. Обзор языка prolog
- •8.2. Типы данных prolog
- •8.3. Структура программы на prolog
- •8.3.1. Раздел целей
- •8.3.2. Организация запросов на prolog
- •8.4. Ввод-вывод данных на prolog
- •8.5. Разветвления на prolog
- •8.6. Правила логического вывода
- •8.6.1. Понятие об унификации и конкретизации
- •8.6.2. Правило логического вывода на prolog
- •8.6.3. Задачи на упорядочение объектов
- •8.7. Рекурсия на prolog
- •8.7.1. Понятие рекурсии на prolog
- •8.7.2. Числовая рекурсия
- •8.7.3. Рекурсия в графике
- •8.8. Списки prolog. Рекурсивная обработка списков
- •8.8.1. Определение и структура списка
- •8.8.2. Рекурсивная обработка списков
- •8.9. Решение логических задач на prolog
- •8.9.1. Понятие о методе резолюций
- •8.10. Задачи, использующие структуру графа
8.5. Разветвления на prolog
Пролог не содержит инструкций, аналогичных инструкциям разветвления и повторения в процедурных языках. Реализация этих процессов происходит в соответствии с правилами логического вывода. Поэтому для программирования нескольких реализаций одного и того же предиката следует построить столько же правил, сколько ветвей у предиката. Причем у всех ветвей головой правил служит изучаемый предикат.
предикат if <первая ветвь разветвления>.
предикат if <вторая ветвь разветвления>.
предикат if <последняя ветвь разветвления>
Пример
8.3. Для примера рассмотрим программу определения типа образовательного учреждения, которое посещает ребенок в зависимости от его возраста.
Domains
X,Y=symbol.
Predicates
ввод(X).
вывод(X).
посещает(X,X)
ответ.
Clauses
Ввод(X) if write(“введите возраст ребенка”),readint(X),nl.
Вывод(Y) if write(”ребенок посещает”),write(Y).
Посещает(X,Y) if X<3,Y=”ясли”.
Посещает(X,Y)if X>=3,X<=6,Y=.”дет.сад”.
Посещает(X,Y) if X>6,Y=.”школа”.
Ответ if ввод(X),посещает(X,Y),вывод(У).
Упражнения
Найти большее из двух чисел.
Найти меньшее из трех чисел.
Вывести на экран название угла в зависимости от его величины (острый, тупой, прямой, развернутый).
Даны длины трех отрезков. Могут ли эти отрезки служить сторонами треугольника?
Ввести результаты двух экзаменов и вывести размер стипендии.
Вычислить значение функции при заданном х.
Найти абсолютную величину заданного числа.
Найти значение функции при заданном х.
Найти значение функции max(a,c)+max(b,c,d)при заданных a,b,c,d.
Найти значение функции |x+xy+1| при заданных х,y.
Найти значение функции max(a,b,c)–min(b,c) при заданных a,b,c.
Найти значение функции min(a,b)+min(b,c,d)при заданных a,b,c,d.
Найти значение функции |2x + y| при заданных х,y.
Найти значение функции max (a, b) – max (a, c, d) при заданных a, b, c, d.
Найти значение функции |3a – b| при заданных a, b.
Найти значение функции max (a, c) + max (b, c, d) при заданных a, b, c, d.
Найти значение функции | x + xy + 1| при заданных х, y.
Найти значение функции max (a, b, c) – min (b, c) при заданных a, b, c.
Найти значение функции |ab – 1| при заданных a, b.
Найти значение функции min (a, b) + min (b, c, d) при заданных a, b, c, d.
Найти значение функции |x – y2| при заданных х, y.
Найти значение функции max (a, b) – min (a, b, c) при заданных a, b, c.
Найти значение функции |x2 – y| при заданных х, y.
Найти значение функции min (a, c) – min (b, c) при заданных a, b, c.
Найти значение функции |x2 – y2| при заданных х, y.
Найти значение функции min (a, b) × min (a, c) при заданных a, b, c.
Найти значение функции |3x + y| при заданных х, y.
Найти значение функции max (a, b) + min (a, c) при заданных a, b, c.
Найти значение функции |6x – y| при заданных х, y.
Найти значение функции min (a, b) + min (d, c) при заданных a, b, c, d.
Найти значение функции |x – 8y2| при заданных х, y.
Найти значение функции max (a, c) × min (d, l) при заданных a, c, d.
Найти значение функции |2x – 3y| при заданных х, y.
Найти значение функции 2 min (a, b, c) при заданных a, b, c.
Найти значение функции |ab + c| при заданных a, b, c.
Найти значение функции max (a, c) – min (a, c) при заданных a, c.
Найти значение функции |ac – b| при заданных a, b, c.
Найти значение функции min (a, c) × min (d, e) при заданных a, c, d, e.
Найти значение функции |a2 – ac| при заданных a, c.
Найти значение функции max (a, b) + min (b, c) при заданных a, b, c.
Найти значение функции |x – y2| при заданных х, y.
Найти значение функции min (a, b, c) × max (a, b) при заданных a, b.