165
•
retract(fact) —
фактіні үлгі бойынша жою;
•
retract(fact,name) — фактіні үлгі бойынша жою;
•
retractall(fact) — барлық фактілерді үлгі бойынша
жою;
•
retractall(fact,name)
— барлық фактілерді үлгі
бойынша жою.
Фактілердің динамикалық деректер қорымен жұмыс істеген кезде
фактілерді жою белгілі бір үлгі
бойынша орындалады, үлгіде қажет
емес деректер арнайы «_»символымен белгіленеді.
Мысалы, оперативтік жадта қызметкерлер жəне
бөлімдер туралы
деректерді орналастыру қажет, олармен жұмыс істеу үшін
предикаттар
бөлінген:
dbotdel(Бөлімнің
_Коды,Атауы,
Басшының_Коды
)
dbsotrudniki(Қызметкердің _Коды ,Тегі, Бөлімнің
_Коды)
фактілермен жұмыс істеу үшін мынадай əрекеттерді
бағдарламалау
қажет:
•
жаңа бөлімді қосу;
•
қызметкерді тегі бойынша жою;
•
қызметкерді бөлімнің коды бойынша жою;
•
қызметкерлерді қарап шығу;
•
бөлімдерді қарап шығу.
Бағдарлама :
facts%аталмаған қор
dbotdel(integer
КодОтд,
String
Атауы,integer
КодРук) facts-fsotrudniki%аталған қор
dbsotrudniki(integer ҚызмКод,
String Фам,integer
БөлКод) predicates
otdel(integer,string,integer)%бөлімдер
sotrudniki(integer,string,integer)% қызметкерлер
process(integer)%мәзірді
өңдеу
assertdbotdely% фактілерді инициалдау — бөлімдер
assertdbsotr%
фактілерді
инициалдау
—
қызметкерлер
repeat% циклдеу
menu%мәзір
clauses
%циклдеу
repeat.
repeat:-repeat.
%Бастапқы
деректер
otdel(1,"Бухгалтерия",10).
otdel(2,"Өткізу",20).
sotrudniki(100,"ИвановА.И.",1).
sotrudniki(200,"КотовО.К.",1).
sotrudniki(300,"КимИ.К.",1).
166
sotrudniki(400,"ЗвереваО.С.",2).
sotrudniki(500,"ХватоваМ.И.",2).
%Фактілерді қалыптастыру
assertdbotdely:-
otdel(KOtd,N,KRuk),
assertz(dbotdel(KOtd,N,KRuk)),
fail.
assertdbotdely:-!.
assertdbsotr:-
sotrudniki(KSotr,N,KOtd),
assertz(dbsotrudniki(KSotr,N,KOtd),
fsotrudniki),fail.
assertdbsotr:-!.
%мәзірді
шығару
menu:-
repeat,
write(
,,
Кодты
енгізіңіз\п1-Бөлімді
қосу"),
write("\n2-Қызметкерлерді
жою"),
write("\n3-Қызметкерлерді
жою"),
write("\n4-
Қ
Ы З М Е Т К Е Р Л Е Р
\
П
5-
Бөлімдер"),
write("\n6
-
Exit\n
>
"),
readint(Exec),process(Exec),Exec=6,n
l,!.
%Мәзірдің
пәрмендерін
өңдеу
process(l):-
write("Код="),readint(K),nl,
write("Атауы="),readln(N),nl,
write("БасшКод
="),readint(KR),
assertz(dbotdel(K,N,KR)).
process(2):-
write("Тегі="),readln(N),
retract(dbsotrudniki(_,N,_),fsotrudniki)
process(3):-
write("Бөлім кодын енгізіңіз="),
readint(KOtd),retractall(dbsotrudniki(_,,KOtd),
fsotrudniki).
process(4):-
dbsotrudniki(KSotr,N,KOtd),
write(KSotr,"\t",N,"\t",KOtd),
nl,fail.
process(5):-
dbotdel(KOtd,N,KRuk),write(KOtd,"\t",N," \t",KRuk),
nl,fail.
process(6):-