Концептуализация
На этом этапе выделяются ключевые понятия, отношения и характеристики, необходимые для описания процесса решения задачи. Для каждого из возможного заболевания будет выбираться собственная группа ключевых понятий и отношений. Рассмотрим на примере заболевания под номером 4. Болит голова.
Ключевые понятия |
Характеристики |
Есть ли температура - A1 |
Вводит пользователь |
Боль вокруг глаз - A2 |
Вводит пользователь |
Боль в затылке – A3 |
Вводит пользователь |
-
Вводимые данные
Результат
A1 = 0, A2 = 0, A3 =0
A1 = 0, A2 = 0, A3 =1
A1 = 0, A2 = 1, A3 =0
A1 = 0, A2 = 1, A3 =1
A1 = 1, A2 = 0, A3 =0
A1 = 1, A2 = 0, A3 =1
A1 = 1, A2 = 1, A3 =0
A1 = 1, A2 = 1, A3 =1
Отдохните. Поспите. Избавьтесь от стресса. Обратитесь к врачу.
Переутомление Искривление позвоночника / Давление / (Обратитесь к врачу!)
Сложно диагностировать заболевание. Обратитесь к врачу.
Вероятно это – Мигрень
ОРВИ, ГРИПП
ДИСТОНИЯ (Обратитесь к врачу!)
Опухоли. Обратитесь к врачу!
ГРИПП.
Описание программы
Рассмотрим алгоритм работы программы на примере
После запуска программы предлагается список заболеваний частей тела.
1.Болит голова.
2.Болит живот.
3.Боль в груди.
4.Боль в спине.
Соответствующей клавишей производим выбор, после чего предлагается ответить на два или три вопроса
Например, выберем «Боль в груди»,
Предложены вопросы:
«Есть ли кашель?»
«Сердцебиение учащенное?»
«Боль в груди?»
Ответ на вопрос осуществляется клавишами
«0 » - no;
«1» - yes.
На первый вопрос отвечаем «нет»,
На второй вопрос отвечаем «да»,
На второй вопрос отвечаем «да»
Из ответов на вышеуказанные вопросы делаем вывод, что заболевание – «стеноз аорты». Во всех случаях необходимо обратиться к врачу!
Исходный код программы
-
domains
i=integer
predicates
AAA(integer,integer,integer)
BBB(integer,integer,integer)
CCC(integer,integer,integer)
DDD(integer,integer)
vvodA1(integer)
vvodA2(integer)
vvodA3(integer)
vvodA4(integer)
vvodA5(integer)
vvodA6(integer)
vvodA7(integer)
vvodA8(integer)
vvodA9(integer)
vvodA10(integer)
vvodA11(integer)
start
patch
process(i)
clauses
/*-------------------------------1-------------------------------------*/
AAA(A1,A2,A3):-
A1=0,
A2=0,
A3=0,
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
cursor(8,5),
write("Primite analgetiki. Otdohnite. Pospite. Izbavtes' ot stressa. Obratites' v vrachu"),
cursor(12,5),
write("Vse soveti nosyat rekomendatel'niy harakter! Dlya tochnoy diagnostiki obratites' k vrachu!").
AAA(A1,A2,A3):-
A1=0,
A2=0,
A3=1,
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
cursor(8,5),
write("PEREUTOMLENIE / ISKREVLENIE POZVONOCHNIKA / DAVLENIE / (Obratites' k vrachu!)").
AAA(A1,A2,A3):-
A1=0,
A2=1,
A3=0,
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
cursor(8,5),
write("Slozhno opredelit'. Obratites' obyazatel'no k vrachu.").
AAA(A1,A2,A3):-
A1=0,
A2=1,
A3=1,
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
cursor(8,5),
write("Veroyatno eto – MIGREN’ ").
AAA(A1,A2,A3):-
A1=1,
A2=0,
A3=0,
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
cursor(8,5),
write(" ORVI, GRIPP (Obratites' k vrachu!) ").
AAA(A1,A2,A3):-
A1=1,
A2=0,
A3=1,
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
cursor(8,5),
write(" DISTONIYA (Obratites' k vrachu!)").
AAA(A1,A2,A3):-
A1=1,
A2=1,
A3=0,
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
cursor(8,5),
write(" OPUHOLI. (Obratites' k vrachu!) ").
AAA(A1,A2,A3):-
A1=1,
A2=1,
A3=1,
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
cursor(8,5),
write("Veroyatno eto – GRIPP").
/*-------------------------------2-------------------------------------*/
BBB(A4,A5,A6):-
A4=0,
A5=0,
A6=0,
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
cursor(8,5),
write("u vas tochno chto-to bolit?").
BBB(A4,A5,A6):-
A4=0,
A5=0,
A6=1,
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
cursor(8,5),
write("Prichin ochen' mnogo. Dlya tochnogo diagnoza obratites' k vrachu").
BBB(A4,A5,A6):-
A4=0,
A5=1,
A6=0,
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
cursor(8,5),
write("BULIMIYA / Prichin ochen' mnogo. Dlya tochnogo diagnoza obratites' k vrachu ").
BBB(A4,A5,A6):-
A4=0,
A5=1,
A6=1,
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
cursor(8,5),
write("OTRAVLENIE / Prichin ochen' mnogo. Dlya tochnogo diagnoza obratites' k vrachu ").
BBB(A4,A5,A6):-
A4=1,
A5=0,
A6=0,
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
cursor(8,5),
write("GASTRIT / Prichin ochen' mnogo. Dlya tochnogo diagnoza obratites' k vrachu").
BBB(A4,A5,A6):-
A4=1,
A5=0,
A6=1,
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
cursor(8,5),
write("BOLEZN' BEHCHETA / Prichin ochen' mnogo. Dlya tochnogo diagnoza obratites' k vrachu").
BBB(A4,A5,A6):-
A4=1,
A5=1,
A6=0,
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
cursor(8,5),
write("GASTROPAREZ / Prichin ochen' mnogo. Dlya tochnogo diagnoza obratites' k vrachu").
BBB(A4,A5,A6):-
A4=1,
A5=1,
A6=1,
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
cursor(8,5),
write("BOLEZN' KRONA / Prichin ochen' mnogo. Dlya tochnogo diagnoza obratites' k vrachu").
/*-------------------------------3-------------------------------------*/
CCC(A7,A8,A9):-
A7=0,
A8=0,
A9=0,
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
cursor(8,5),
write("Prichin ochen' mnogo. Dlya tochnogo diagnoza obratites' k vrachu").
CCC(A7,A8,A9):-
A7=0,
A8=0,
A9=1,
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
cursor(8,5),
write("PERIKARDIT / Prichin ochen' mnogo. Dlya tochnogo diagnoza obratites' k vrachu ").
CCC(A7,A8,A9):-
A7=0,
A8=1,
A9=0,
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
cursor(8,5),
write("ARITMIYA / Prichin ochen' mnogo. Dlya tochnogo diagnoza obratites' k vrachu ").
CCC(A7,A8,A9):-
A7=0,
A8=1,
A9=1,
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
cursor(8,5),
write("STENOZ AORTI ").
CCC(A7,A8,A9):-
A7=1,
A8=0,
A9=0,
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
cursor(8,5),
write("PROSTUDA ").
CCC(A7,A8,A9):-
A7=1,
A8=0,
A9=1,
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
cursor(8,5),
write("ASTMA ").
CCC(A7,A8,A9):-
A7=1,
A8=1,
A9=0,
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
cursor(8,5),
write("BRONHIT ").
CCC(A7,A8,A9):-
A7=1,
A8=1,
A9=1,
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
cursor(8,5),
write("BOLEZN' TAKAYASU/ Prichin ochen' mnogo. Dlya tochnogo diagnoza obratites' k vrachu").
/*-------------------------------4-------------------------------------*/
DDD(A10,A11):-
A10=0,
A11=0,
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
cursor(8,5),
write("u vas tochno bolit spina? (Mojet golova? >:-] ) ").
DDD(A10,A11):-
A10=0,
A11=1,
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
cursor(8,5),
write("kamni v pochkah ").
DDD(A10,A11):-
A10=1,
A11=0,
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
cursor(8,5),
write("Ishias").
DDD(A10,A11):-
A10=1,
A11=1,
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
cursor(8,5),
write("!!!ALARM!!! Obratites' k vrachu, a to umrete! ").
/*------------------Процедура создания основного меню-----------------------*/
start:-
makewindow(1,2,7," DIAGNOSTIKA BOLEZNI ",0,0,25,80),
write("SELECT SIMPTOM"),nl,
clearwindow,
cursor(2,0),
write(" *******************************************************"),nl,
write(" * *"),nl,
write(" * KURSOVAYA RABOTA *"),nl,
write(" * DIAGNOSTIKA BOLEZNI *"),nl,
write(" * *"),nl,
write(" * *"),nl,
write(" * by Shilovskiy Aleksandr *"),nl,
write(" * *"),nl,
write(" *******************************************************"),nl,
patch.
/*Процедура управления основным меню*/
patch:-
cursor(12,0),
write(" 1.Bolit golova"),nl,
write(" 2.Bolit Jivot"),nl,
write(" 3.Bol' v grudi"),nl,
write(" 4.Bol' v spine"),nl,
write(" 5.Exit"),nl,nl,
write(" =>"),
readint(Choice),
Choice >= 1,
Choice < 10,
clearwindow,
process(Choice),
clearwindow,
Choice = 9,
retractall(_),
removewindow.
/* ---------------------------------------------------------------------
-------------------------------------------------------------------*/
process(1):-
makewindow(1,2,3," Vozmojnaya bolezn' ",0,0,25,80),
nl,
vvodA1(A1),
vvodA2(A2),
vvodA3(A3),
makewindow(1,2,5," Vivod ",1,1,20,78),
AAA(A1,A2,A3),
readln(_),
exit.
process(2):-
makewindow(1,2,3," Vozmojnaya bolezn' ",0,0,25,80),
nl,
vvodA4(A4),
vvodA5(A5),
vvodA6(A6),
makewindow(1,2,5," Vivod ",1,1,20,78),
BBB(A4,A5,A6),
readln(_),
exit.
process(3):-
makewindow(1,2,3," Vozmojnaya bolezn' ",0,0,25,80),
nl,
vvodA7(A7),
vvodA8(A8),
vvodA9(A9),
makewindow(1,2,5," Vivod ",1,1,20,78),
CCC(A7,A8,A9),
readln(_),
exit.
process(4):-
makewindow(1,2,3," Vozmojnaya bolezn' ",0,0,25,80),
nl,
vvodA10(A10),
vvodA11(A11),
makewindow(1,2,5," Vivod ",1,1,20,78),
DDD(A10,A11),
readln(_),
exit.
process(7):-
makewindow(1,2,3," Vozmojnaya bolezn' ",0,0,25,80),
nl,
vvodA7(A7),
vvodA8(A8),
vvodA9(A9),
makewindow(1,2,5," Vivod ",1,1,20,78),
CCC(A7,A8,A9),
readln(_),
exit.
vvodA1(A1):-makewindow(1,2,5," Bolit golova ",1,1,20,78),
cursor(2,10),write(" U vas est’ temperatura?"),
cursor(4,7),write("0. no "),
cursor(5,7),write("1. yes "),nl,readint(A1).
vvodA2(A2):-makewindow(1,2,5," Bolit golova ",1,1,20,78),
cursor(2,10),write(" Bol’ vokrug glaz?"),
cursor(4,7),write("0. no "),
cursor(5,7),write("1. yes "),nl,readint(A2).
vvodA3(A3):-makewindow(1,2,5," Bolit golova ",1,1,20,78),
cursor(2,10),write(" Bol’ vo lbu?"),
cursor(4,7),write("0. no "),
cursor(5,7),write("1. yes "),nl,readint(A3).
/*-----------------*/
vvodA4(A4):-makewindow(1,2,5," Bolit jivot ",1,1,20,78),
cursor(2,10),write(" Vas toshnit?"),
cursor(4,7),write("0. no "),
cursor(5,7),write("1. yes "),nl,readint(A4).
vvodA5(A5):-makewindow(1,2,5," Bolit jivot ",1,1,20,78),
cursor(2,10),write(" U vas rvota?"),
cursor(4,7),write("0. no "),
cursor(5,7),write("1. yes "),nl,readint(A5).
vvodA6(A6):-makewindow(1,2,5," Bolit jivot ",1,1,20,78),
cursor(2,10),write(" bol' v jivote?"),
cursor(4,7),write("0. no "),
cursor(5,7),write("1. yes "),nl,readint(A6).
/*-----------------*/
vvodA7(A7):-makewindow(1,2,5," Bol' v grudi ",1,1,20,78),
cursor(2,10),write("Kashel'?"),
cursor(4,7),write("0. no "),
cursor(5,7),write("1. yes "),nl,readint(A7).
vvodA8(A8):-makewindow(1,2,5," Bol' v grudi ",1,1,20,78),
cursor(2,10),write("Uchashennoe serdcebienie?"),
cursor(4,7),write("0. no "),
cursor(5,7),write("1. yes "),nl,readint(A8).
vvodA9(A9):-makewindow(1,2,5," Bol' v grudi ",1,1,20,78),
cursor(2,10),write(" Bol' v grudi?"),
cursor(4,7),write("0. no "),
cursor(5,7),write("1. yes "),nl,readint(A9).
/*-----------------*/
vvodA10(A10):-makewindow(1,2,5," Bol' v spine",1,1,20,78),
cursor(2,10),write("bol' v poyasnice?"),
cursor(4,7),write("0. no "),
cursor(5,7),write("1. yes "),nl,readint(A10).
vvodA11(A11):-makewindow(1,2,5," Bol' v spine",1,1,20,78),
cursor(2,10),write("Bol' v pochkah? "),
cursor(4,7),write("0. no "),
cursor(5,7),write("1. yes "),nl,readint(A11).
/*-----------------*/
goal
start.
