Оцените презентацию от 1 до 5 баллов!
Тип файла:
ppt / pptx (powerpoint)
Всего слайдов:
17 слайдов
Для класса:
1,2,3,4,5,6,7,8,9,10,11
Размер файла:
130.00 kB
Просмотров:
72
Скачиваний:
1
Автор:
неизвестен
Слайды и текст к этой презентации:
№1 слайд![SWI Prolog Стандартные](/documents_6/f6d28dcf97dc2cd888062ea5dfbdee33/img0.jpg)
Содержание слайда: SWI Prolog
Стандартные предикаты управления логическим выводом
№2 слайд![Стандартный предикат fail](/documents_6/f6d28dcf97dc2cd888062ea5dfbdee33/img1.jpg)
Содержание слайда: Стандартный предикат fail
Встроенный предикат fail является тождественно ложным предикатом, который включает механизм автоматического возврата. Присутствие этого предиката в правиле вызывает возврат на согласование первой цели в резольвенте.
Предикат fail используется для программирования повторяющихся действий (циклических программ). В общем случае итерационное правило имеет следующий вид:
<заголовок итерационного правила>:<предикаты>,fail.
№3 слайд![Пример использования](/documents_6/f6d28dcf97dc2cd888062ea5dfbdee33/img2.jpg)
Содержание слайда: Пример использования предиката fail. Текст программы
Рассмотрим пример программы, использующей предикат fail.
Пусть программа включает утверждения о столицах различных стран:
city('Deli', 'India', 'Asia').
city('Moscow', 'Russia', 'Europe' ).
city('Praha', 'Chehia', 'Europe' ).
city('London', 'Endland', 'Europe' ).
city('Rome', 'Italy', 'Europe' ).
city('Mexico', 'Mexica', 'America' ).
city('Pekin', 'China', 'Asia' ).
city('Tokio', 'Japan', 'Asia' ).
show_cities(K):-city(X,_, K),write(X),nl,fail.
show_cities(_).
№4 слайд![Пример использования](/documents_6/f6d28dcf97dc2cd888062ea5dfbdee33/img3.jpg)
Содержание слайда: Пример использования предиката fail.
Вычисление запроса.
?- show_cities('Asia').
Deli
Pekin
Tokio
yes
?-
№5 слайд![Стандартный предикат cut !](/documents_6/f6d28dcf97dc2cd888062ea5dfbdee33/img4.jpg)
Содержание слайда: Стандартный предикат cut (!)
Предикат отсечения (!) предназначен для запрещения поиска с возвратом.
Если существуют два или более взаимоисключающих правила для одного и того же отношения, т. е. при любом запросе успех возможен только в одном из правил, то при успешном согласовании некоторого из правил нет необходимости проверять остальные правила, согласование которых будет заведомо неуспешно.
№6 слайд![Стандартный предикат cut !](/documents_6/f6d28dcf97dc2cd888062ea5dfbdee33/img5.jpg)
Содержание слайда: Стандартный предикат cut (!)
Допустим, надо написать программу, определяющую значение функции Y по формуле:
В алгоритмических языках в этом случае используется оператор ifthenelse, блоксхема которого показана следующем слайде.
№7 слайд![Блок-схема](/documents_6/f6d28dcf97dc2cd888062ea5dfbdee33/img6.jpg)
Содержание слайда: Блок-схема
№8 слайд![Соответствующее правило на](/documents_6/f6d28dcf97dc2cd888062ea5dfbdee33/img7.jpg)
Содержание слайда: Соответствующее правило на языке Пролог без предиката отсечения
На языке Пролог в этом случае будет процедура из двух правил:
ps(X,Y):p(X),Y is f1(X).
ps(X,Y): not(p(X)),Y is f2(X).
№9 слайд![Правило на языке Пролог с](/documents_6/f6d28dcf97dc2cd888062ea5dfbdee33/img8.jpg)
Содержание слайда: Правило на языке Пролог с предикатом отсечения
Поскольку выше указанные правила взаимно исключают друг друга, используя предикат отсечения, процедуру можно представить в следующем виде:
ps(X,Y):p(X),!,Y is f1(X).
ps(X,Y): Y is f2(X).
Таким образом, во втором правиле проверка условия 'not(p(X))' не нужна.
№10 слайд![Пример использования](/documents_6/f6d28dcf97dc2cd888062ea5dfbdee33/img9.jpg)
Содержание слайда: Пример использования предиката отсечения
Рассмотрим другой пример. Пусть требуется вычислить значение функции Y в зависимости от условия:
№11 слайд![Пример использования](/documents_6/f6d28dcf97dc2cd888062ea5dfbdee33/img10.jpg)
Содержание слайда: Пример использования предиката отсечения. Текст программы.
ps(X,Y):X=<0,!,Y is 2*X+1.
ps(X,Y):X=<2,!,Y is X*X.
ps(X,Y): Y is 0.
№12 слайд![Преимущества использования](/documents_6/f6d28dcf97dc2cd888062ea5dfbdee33/img11.jpg)
Содержание слайда: Преимущества использования предиката отсечения
Использование предиката отсечения '!' сокращает
запись правил в Прологе и ограничивает перебор
вариантов, в этом случае процедура вычисления
запроса выполняется эффективнее.
№13 слайд![Другие предиката управления](/documents_6/f6d28dcf97dc2cd888062ea5dfbdee33/img12.jpg)
Содержание слайда: Другие предиката управления логическим выводом
Кроме предикатов управления логическим выводом fail и cut, в системе PDC Prolog существуют стандартные предикаты true, repeat и not.
not(p) отрицание предиката p. Если p истина, то not(p) ложь, и наоборот.
Предикат repeat истинен всегда. При бэктрекинге этот предикат вызывает повторное выполнение всех следующих за ним целей.
Предикат true тождественно истинный предикат.
№14 слайд![Лабораторная работа . .](/documents_6/f6d28dcf97dc2cd888062ea5dfbdee33/img13.jpg)
Содержание слайда: Лабораторная работа 2.1. Создание базы данных “Cессия” и запросов к этой базе данных на языке Пролог с использованием стандартного предиката fail.
База данных “Сессия” содержит факты, которые описывают отношения двух типов:
1) lector(<фамилия>,<дисциплина>,<номер группы>,<дата экзамена>)
2) student(<фамилия>,<номер группы>,<номер зачетки>).
№15 слайд![Лабораторная работа . .](/documents_6/f6d28dcf97dc2cd888062ea5dfbdee33/img14.jpg)
Содержание слайда: Лабораторная работа 3.1. Задание.
1)Создать с помощью фактов базу данных «Сессия», включающую предикаты lector и student.
2) Написать правила, обеспечивающие ответ на следующие вопросы:
А) Выдать на экран фамилии всех студентов, которые сдают экзамен определенного числа, дата задается следующим образом: ‘хх.хх.xxxx’.
Например, ’10.01.2001’.
Б) Выдать на экран фамилии всех студентов, которые сдают экзамен определенному лектору.
В) Выдать на экран названия дисциплин, по которым будет сдавать экзамен определенный студент.
№16 слайд![Лабораторная работа . .](/documents_6/f6d28dcf97dc2cd888062ea5dfbdee33/img15.jpg)
Содержание слайда: Лабораторная работа 3.1. Задание.
Г) Выдать на экран фамилии преподавателей, которые принимают экзамены в данной группе.
Д) Выдать на экран фамилии всех студентов, которые учатся в данной группе.
Е) Выдать на экран названия дисциплин, по которым принимает экзамен данный преподаватель.
3) Отладить программу с помощью интерпретатора Arity Prolog.
4) Продемонстрировать работу программы с помощью вопросов.
5) Составить отчет по лабораторной работе.
№17 слайд![Лабораторная работа . .](/documents_6/f6d28dcf97dc2cd888062ea5dfbdee33/img16.jpg)
Содержание слайда: Лабораторная работа 2.2. Использование стандартного предиката отсечения в правилах на языке Пролог.
В лабораторной работе 2 выбрать соответствующий
вариант задания на вычисление y=f(x) в
зависимости от условия, и переписать правила с
использованием стандартного предиката отсечения
«!».