Содержание
- 2. Последовательное выполнение действий predicates vowel(char) clauses vowel('a'). vowel('e'). vowel('i'). vowel('o'). vowel('u'). vowel('y'). goal write("Enter character: "),
- 3. Проверка одновременного выполнения двух условий predicates is_digit(char) clauses is_digit(C):- C>='0', C goal readchar(X), write(X), nl, is_digit(X),
- 4. Проверка выполнения хотя бы одного условия из нескольких predicates nondeterm not_digit(char) clauses not_digit(C):- C not_digit(C):- C>'9'.
- 5. Возврат данных из предиката predicates increment(integer, integer) clauses increment(X, Y):- Y = X + 1. goal
- 6. Неверная реализация predicates increment(integer) clauses increment(X):- X = X + 1. goal increment(10). Нет решений
- 7. Если …, то … predicates sgn(integer, integer) clauses sgn(X, Result):- X>0, Result=1. sgn(X, Result):- X sgn(X,
- 8. Если …, то …, иначе … predicates min(integer, integer, integer) clauses min(X, Y, Z):- X min(X,
- 9. Если …, то …, иначе … predicates min(integer, integer, integer) clauses min(X, Y, Z):- X min(X,
- 10. Вызов предиката из другого предиката для проверки условия predicates is_digit(char) nondeterm analyze(char) clauses is_digit(A):- A>='0', A
- 11. Вызов предиката из другого предиката для выполнения расчета predicates distance(real,real,real,real,real) in_circle(real,real,real,real,real) clauses distance(X1,Y1,X2,Y2,D):- DX = X2
- 12. Последовательные вычисления predicates absolute(integer, integer) min(integer, integer, integer) calculate(integer, integer) /* calculate(X, Y) вычисляет Y =
- 13. Последовательные вычисления predicates absolute(integer, integer) min(integer, integer, integer) calculate(integer, integer) /* calculate(X, Y) вычисляет Y =
- 14. Последовательные вычисления predicates absolute(integer, integer) min(integer, integer, integer) calculate(integer, integer) /* calculate(X, Y) вычисляет Y =
- 15. Реализация цикла через автоматический перебор вариантов predicates mass(real) compose_mass(real, real, real) clauses mass(0.5). mass(1.0). mass(2.0). mass(1.5).
- 16. Расчет длины списка (рекурсия) domains list = integer* predicates length_of(list, integer) /* 1st param – input,
- 17. Прямой проход рекурсии Здесь стрелка показывает направление рекурсивного вывода четырех подцелей, в результате чего подцель length_of([],0)
- 18. Обратный проход рекурсии Здесь стрелка показывает возврат назад к предыдущим подцелям от найденной подцели length_of([],0). В
- 19. Шаг 0
- 20. Шаг 1
- 21. Шаг 2
- 22. Шаг 3
- 23. Шаг 4
- 24. Шаг 5
- 25. Шаг 6
- 26. Шаг 7
- 27. Неверная реализация (1) domains list = integer* predicates length_of(list, integer) /* 1st param – input, 2nd
- 28. Неверная реализация (2) domains list = integer* predicates length_of(list, integer) /* 1st param – input, 2nd
- 29. Подсчет количества вхождений элемента в список domains list=integer* predicates count(integer, list, integer) % element, spisok, kolichestvo
- 30. Составление списка целых чисел domains list=integer* predicates compose(integer, integer, list) % pervyi element, poslednii element, spisok
- 31. Соединение двух списков domains list=integer* predicates concate(list, list, list) % pervyi spisok, vtoroy spisok, ob'edinennyi spisok
- 32. Особенности SWI Prolog (1) В Visual Prolog 5.0: Y = X В SWI Prolog: Y =
- 33. Особенности SWI Prolog (2) В Visual Prolog 5.0: C = A + B В SWI Prolog:
- 35. Скачать презентацию