- •Билет № 6
- •Семантические сети.
- •Основные понятия Пролога – переменные свободные и связанные; анонимная переменная
- •Описать базу знаний о родственных отношениях
- •Предметные области экспертных систем
- •Билет № 7
- •1.Экспертные системы
- •Основные понятия Пролога – отсечения.
- •3.Создать предикат, который будет дублировать символ, введенный пользователем с клавиатуры
- •Билет № 8
- •Рекурсия в Прологе. Достоинства и недостатки
- •Создать предикат, позволяющий вычислить длину списка, т.Е. Количество элементов в списке
- •Билет № 9
- •Хвостовая рекурсия.
- •Создать предикат, позволяющий проверить принадлежность элемента списку
- •Билет № 10
- •Этапы и технология разработки экспертных систем
- •Организация циклов на основе рекурсии
- •Написать предикат, позволяющий соединить два списка в один.
Организация циклов на основе рекурсии
В отличие от традиционных языков программирования, в которых основным средством организации повторяющихся действий являются циклы, в Прологе для этого используются процедура поиска с возвратом (откат) и рекурсия. Откат дает возможность получить много решений в одном вопросе к программе, а рекурсия позволяет использовать в процессе определения предиката его самого. Цикла с предусловием. Обычно этот цикл выглядит примерно так: while <условие> do P. Это соответствует текстовому описанию "пока имеет место <условие>, выполнять P ". На Прологе подобную конструкцию можно записать следующим образом:
w:-
<условие>,p,w.
w:-!.
Написать предикат, позволяющий соединить два списка в один.
conc([ ], L, L). /* при присоединении пустого списка
к списку L получим список L */
conc([H|T], L, [H|T1]) :–
conc(T,L,T1). /* соединяем хвост и список L, получаем
хвост результата */
conc(X, Y, [1, 2, 3]).
X=[], Y=[1, 2, 3]
X=[1], Y=[2, 3]
X=[1, 2], Y=[3]
X=[1, 2, 3], Y=[]
