- •2.2.2.1 Вызов Турбо-Пролога и главное меню системы
- •2.2.3 Редактор Турбо-Пролога
- •2.2.3.1 Создание и редактирование программного файла
- •3 Лекция №2. Элементы и конструкции языка Турбо-Пролог
- •3.1 Основные вопросы
- •3.2 Текст лекции
- •3.2.1.1 Имена (идентификаторы)
- •3.2.2.1 Предикаты
- •3.2.2.2 Факты
- •3.2.2.3 Правила
- •3.2.2.4 Цели
- •4 Лекция №3. Объекты данных. Константы, переменные, структуры, списки.
- •4.1 Основные вопросы
- •4.2 Текст лекции
- •Стандартные типы доменов Турбо-Пролога
- •4.2.2.1 Константы
- •4.2.2.2 Переменные
- •4.2.2.3 Структуры
- •4.2.2.3 Списки
- •5 Лекция №4. Структура программы на Турбо-Прологе
- •5.1 Основные вопросы
- •5.2 Текст лекции
- •5.2.2 Структура программы на Турбо-Прологе – до 10 мин.
- •5.2.3.1 Раздел опций компилятора
- •5.2.3.2 Раздел констант
- •5.2.3.3 Раздел доменов
- •5.2.3.4 Раздел предикатов
- •5.2.3.5 Раздел утверждений
- •5.2.3.6 Раздел дбд
- •5.2.3.7 Раздел целей
- •6 Лекция №5. Унификация и поиск с возвратом: программа с фактами
- •6.1 Основные вопросы
- •6.2 Текст лекции
- •7 Лекция №6. Унификация и поиск с возвратом: программа с фактами и правилом
- •7.1 Ключевые (основные) вопросы (моменты)
- •7.2 Текст лекции
- •8 Лекция №7. Унификация и поиск с возвратом: программа с фактами и несколькими правилами
- •8.1 Основные вопросы
- •8.2 Текст лекции
- •9 Лекция №8. Вопросно-ответные системы
- •9.1 Основные вопросы
- •9.2 Текст лекции
- •10 Лекция №9. Средства отладки в Турбо-Прологе
- •10.1 Основные вопросы
- •10.2 Текст лекции
- •/*Программа 5 */
- •11 Лекция №10. Простейший ввод-вывод. Окна.
- •11.1 Основные вопросы
- •11.2 Текст лекции
- •11.2.1 Простейший ввод-вывод
- •11.2.2 Окна
- •12 Лекция №11. Управление поиском решений: предикаты отсечения и возврата
- •12.1 Основные вопросы
- •12.2 Текст лекции
- •/* Программа 5 */
- •Vse_reshenia:-roditel(X,y), write(X, "родитель", y), nl, fail.
- •Vita - родитель sasha
- •/* Программа 6 */
- •/* Программа 7 */
- •13 Лекция №12. Арифметика в Турбо-Прологе. Рекурсия.
- •13.1 Основные вопросы
- •13.2 Текст лекции
- •/* Программа 8 */
- •/* Программа 9 */
- •14 Лекция №13. Динамические базы данных
- •14.1 Основные вопросы
- •14.2 Текст лекции
- •/* Программа работы с дбд*/
- •15 Лекция №14. Работа со списками
- •15.1 Основные вопросы
- •15.2 Текст лекции
- •/* Программа 10*/
- •/* Программа 11 */
- •/* Программа 12 */
- •16 Лекция №15. Экспертные системы
- •16.1 Основные вопросы
- •16.2 Текст лекции
- •/* Программа эс*/
/* Программа эс*/
domains
list = string*
database
fact(string, string)
predicates
clean_slate
recognize(string)
characts(string, string,list)
check(list)
ask_about(string)
goal
clean_slate, makewindow(1, 2, 7, " ", 0, 0, 25, 80),
makewindow(2, 3, 9, "Viruses", 4, 10, 20, 50),
write("Введите Viruses"), nl, readln(Start),
recognize(Start).
clauses
/* Описание признаков вирусов */
characts("Viruses", "опасный", ["Присутствует функция уничтожения файлов? ", "Присутствуют функции порчи данных? "]).
characts("Viruses", "неопасный", ["Есть какие-нибудь внешние проявления?", "Присутствуют звуковые или видео эффекты? "]).
characts("опасный", "Семейство Taiwan",
["Клавиатуру блокирует? ", "Заражает файлы
EXE, COM? "]).
characts("опасный", "Семейство MIX", ["При
нажатии Ctrl+Alt+Del изменяет цвет фона,
вызывает падение символов?”, "Заражает
файлы EXE, COM, OVL? "]).
characts("неопасный", "резидентный",
["Размер свободной памяти уменьшается
после завершения работы вируса?", "Заражает файлы EXE, COM? "]).
characts("неопасный", "стелс", ["Не содержит постоянного участка кода? ", "Заражает файлы EXE, COM?"]).
characts("резидентный", "Christmas-868",
["После 23-го числа наигрывает мелодию ’В
лесу родилась Ёлочка’?", "Заражает файлы
COM?"]).
characts("резидентный","Christ-483", ["Первого
апреля сообщает ’Христос воскрес’?","
Заражает файлы EXE?"]).
characts("стелс", "Crazy-1402", ["Содержит
текст ’Crazy imp.v.1.5’? ", "Заражает файлы
EXE, COM, OVL? "]).
characts("стелс", "Crazy-1445", ["Содержит
текст ’Crazy imp.v.2.0’?", "Заражает
файлыEXE, COM, OVL? "]).
/* Идентификация вирусов */
recognize(Start):-characts(Start, Y, Z), nl,
check(Z),
write("Viruses:"),
write(Y), nl,
recognize(Y), nl,
clean_slate.
recognize("Семейство Taiwan").
recognize("Семейство MIX").
recognize("Christmas-868").
recognize("Christ-483").
recognize("Crazy-1402").
recognize("Crazy-1445").
recognize(_):-write("Неизвестный вирус").
/* Обработка списков признаков вирусов */
check([ ]).
check([A|B]):-ask_about(A), check(B).
/* Поиск фактов в ДБД */
ask_about(A):-fact(A, "да").
ask_about(A):-fact(A, "нет"), fail.
/* Опрос пользователя о признаках вирусов */
ask_about(A):-not(fact(A, _ )),
write("Ответьте ‘да’ или ’нет’ "), nl,
write(A), nl,
readln(Reply),
assertz(fact(A, Reply)),
reply="да".
/* Очистка ДБД */
clean_slate:-retract(fact( _ , _ )), fail.
clean_slate.
Автор
к.т.н., проф.
Миронов А.С. / Миронов А.С. /