Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1414-Лекции.doc
Скачиваний:
28
Добавлен:
25.12.2018
Размер:
419.84 Кб
Скачать

/* Программа эс*/

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.

Автор

к.т.н., проф.

Миронов А.С. / Миронов А.С. /

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]