Есепті шешу мысалдары
Тапсырма және жұмыстың орындалу реті. Фактылардан тұратын программаны орындауға жіберіп, жоғарыдан төмен, солдан оңға қарай бағытта салыстыру принципіне назар аударыңыз. Мақсат сыртқы.
Likes предикаты 2 объектінің арасындағы қатынасты суреттейді яғни предикат 2 символдық аргументке ие. Осыған сәйкес предикаттарды суреттеу бөлімінде былай жазамыз: likes (symbol, symbol). Домендерді көрсету бөлімінде мәндер жиынын былай көрсету қажет: person, thing = symbol.
Бұл келтірілген мысалдарды программада былайша көрсетушге болады:
1 түрі:
domains
person, thing = symbol
predicates
likes (person, thing)
clauses
likes (tom, books).
likes (tom, car ).
likes (tom, tennis).
likes (mary, books).
likes (mary, picture).
likes (mary, tom).
2 түрі:
predicates
likes (symbol, symbol)
clauses
likes (tom, books).
likes (tom, car ).
likes (tom, tennis).
likes (tom, computer)
likes (mary, books).
likes (mary, picture).
likes (mary, tom).
likes (mary, dance)
Программа мәтінін енгізіп болғаннан кейін Run меню пункті арқылы орындауға жіберу қажет. Программада қате болмаған жағдайда диалогты терезеде Goal шақыруы пайда болады. Программада сыртқы мақсат қолданылады, назар салыңыз.
Мынадай сұранымдар (мақсаттар) беріп, Enter пернесін басу керек:
likes (tom, X) /*Томға не ұнайды*/
likes (mary, X)
likes (X, Y) /*кімге не ұнайды*/
likes (X, car)
likes (X, books)
likes (mary, tom)
likes (tom, mary)
Шешімдерін көрсетіңіз. Қанша шешімі бар? Жүйе қандай жағдайда шешімін бермейді, қай уақытта ол Yes немесе No жауабын береді? Өздеріңіз ойдан сұрақтар беріңіздер. Оқытушыға шешімдеріңізді көрсетуді ұмытпаңыз.
Өзіңізді қызықтыратын ойын түрлерін көрсетіп программаға өзгеріс енгізуіңізге немесе қайтадан программа жазуыңызға болады. Программадағы clauses тарауында фактылардың соңына ереже қосып, predicates бөлімінде жаңа предикаттарды суреттеуді ұмытпаңыз.
Predicates тарауына қосыңыз:
clever(symbol)
strong(symbol)
run
hobby(symbol,symbol)
clauses тарауына қосыңыз:
likes (kat, X) :-
likes (mary, X).
clever(X) :-
likes(X, books), likes(X, picture).
strong(X) :-
likes(X, tennis).
run :-
write(“Сіздің атыңыз? “), nl,
readln(N), nl,
write(N, “ , Томға ұнаған нәрсе сізге де ұнайды“), nl,
readln(X), hobby(X, N).
hobby(X, N) :-
X=”да “,
write(N, “ ,сізге қозғалыс ұнайды “), nl,
readln(А), nl,
А=”да”,
write(N, “ , сізге теннис ұнайды “).
hobby(“да“, N) :-
nl, write(N, “ , сізге авто ұнайды “).
hobby(”нет“, N) :-
write(N, “ ,сізге тыныштық ұнайды “), nl,
readln(В),
В=“да“,
write(N, “ , сізге кітаптар ұнайды “);
nl, write(N, “ , сізге дискотека ұнайды“).
Программаның орындалу процесін түсіндіріңіз, ережені енгізгеннен кейін қандай фактылар пайда болады?
Программа денесіне goal тарауын енгізіңіз, яғни мақсатты ішкі мақсатқа айналдыру керек деген сөз. Енді мақсат ішкі мақсаттардан тұрады. Мақсат ішкі мақсаттардың екеуі де сәтті болғанда ғана жеткілікті аяқталады.
goal
likes (tom,X),
write (“X=”, X).
Ішкі мақсатты пайдаланып жазған программаның орындалуын сыртқы мақсатты программаның орындалуымен салыстырыңыз.
Мақсатты өзгертіңіз
goal
likes (X, Y),
write (“X=”, X, “Y=”, Y).
Әртүрлі типті объектілерді қолдану. Тапсырмалар вариантының бірін таңдап программа жазыңыз және таңдалған тақырыпқа сәйкес статикалық дерекқор құру қажет.
Мысалы, мынадай предикатты пайдаланып программа жазыңыз:
oқиды (студент фамилиясы, пән, баға, мерзімі)
study(name, subject, numb,data)
Бұл предикат символдық және бүтін сандық типті аргументтерді қамтиды.
Достарыңызбен бөлісу: |