Основными средствами управления процессом вычислений в Прологе являются стандартные предикаты fail (неуспех) и ! (отсечение).
Назначение этих предикатов и методы их использования рассмотрим на примере следующей программы на Турбо-Прологе:
domains
st=student(fam,pr,oc)
312
fam.pr=symbol
num,oc=integer
g=gr(num,st)
predicates
kurs_22(g)
clauses
kurs_22(gr(261 ,student("ПETPOB П.Р.","Программирование",5))).
kurs_22(gr(261,student("ИBAHOB Б.О. ","Операционные системы",5))).
kurs_22(gr(261,student("CИДOPOB Т.К.","Системы управления",4))).
kurs_22(gr(262,student("ЖИГAPEB С.И. "."Программирование''3))).
kurs_22(gr(262,student(" ДЕМИН ", "Системы управления", 5))).
kurs_22(gr(261 ,student(" ПETPOB П.Р.","Иностранный язык",4))).
kurs_22(gr(263,student(" СИДОРОВ ","Операционные системы",5)))
Приведенная программа в разделе clauses содержит утверждения-факты, в данном случае информацию о результатах пересдачи экзаменов студентами соответствующих групп (номер группы - первый компонент структуры gr) по соответствующим дисциплинам (фамилия, дисциплина, оценка - компоненты структуры student, которая входит в состав структуры gr). Если теперь после компиляции программы в качестве внешней цели ввести запрос:
kurs_22(X)
то в диалоговом окне будет выведена информация:
X=gr(261 ,student("ПETPOB П.Р.","Программирование",5))
Х= gr (261 ,student("ИBAHOB Б.О.", " Операционные системы",5))
Х= gr (261,student ("СИДОРОВ Т.К.", "Системы управления " ,4))
X=gr (262, student(" ЖИГAPEB С.И. "."Программирование" 3 ))
X=gr (262, student(" ДEMИH С.Л. ", "Системы управления", 5))
Х= gr (261 ,student(" ПETPOB П.Р.","Иностранный язык",4))
X=gr (263, student("CИДОРОВ Е.P. ","Операционные системы",5))