Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пролог.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
498.52 Кб
Скачать

1.3. Ереженің рекурсивті анықтамасы

 

Ата-тегі қатынасын анықтайық :

 

 

 

4- сурет ата-тегі қатынасының мысалы.

 

а) X – жақын ата-тегі; 

б) X – Z – тің алыс (арғы) ата-тегі. Бағдарлама:

а) ата-тегі(X, Z): - ата-анасы(X, Z).

б) ата-тегі(X, Z): - ата-анасы(X, Y), ата-анасы(Y, Z).

ата-тегі(X, Z): - ата-анасы(X, Y1), ата-анасы(Х1, Y2), ата-анасы(Y2, Z).

ата-тегі(X, Z): - ата-анасы(X, Y1), ата-анасы(Y1, Y2), ата-анасы(Y2, Y3),  ата-анасы(Y3, Z).

Бұл бағдарлама үлкен және белгілі аумақта жұмыс істейді . Бірақ бұл проблема өзі арқылы ата-тегі қатынасымен шешіледі :

 

 

 

 

 

 

  5- сурет. Қатынастың рекурсивті тұжырымдамасы.   

Екі ережеден тұратын ата-тегі қатынасының толық бағдарламасы: бірінші жақын ата-тегі үшін және екінші, алыс ата-тегі үшін:

ата-тегі(X, Z): - ата-анасы(X, Z).

ата-тегі(X, Z): - ата-анасы(X, Y), ата-тегі(Y, Z).

? – ата-тегі(пам, X). /* Памның ұрпағы кім */.

X = боб;

X = энн;

X = пат;

X = джим .

Туыстық қатынастар туралы бағдарламаның қорытынды түрі :

ата-анасы(пам, боб).

ата-анасы(том, боб).             

ата-анасы(том, лиз).

ата-анасы(боб, энн).

ата-анасы(боб, пат).

ата-анасы(пат, джим).

әйел(пам).

еркек(том).

еркек(боб).

әйел(лиз).

әйел(энн).

әйел(пат).

еркек(джим).

ата-тегі(Y, X):- ата-анасы(X, Y).

шешесі(X, Y): - ата-анасы(X, Y), әйел(X).

ата-анасының ата-анасы(X, Z): - ата-анасы(X, Y), ата-анасы(Y, Z).

әртүрлі(X, Y): - X <> Y .

әпкесі(X, Y): - ата-анасы(Z, X), ата-анасы(Z, Y), әйел(X), әртүрлі(X, Y).

ата-тегі(X, Z): - ата-анасы(Z, X).

ата-тегі(X, Z): - ата-анасы(X, Y), ата-тегі (Y, Z).

 

1. Мысал.  << Сессия >> құрылысын құру, барлық озат оқушыларды (студенттерді) таңдап алу.

 

DOMAINS

  X=symbol

  Y=integer

PREDICATES

  muj(X)

  jen(X)

  fiz(X,Y)

  xim(X,Y)

  mat(X,Y)

  otl(X)

  otl_muj(X)

  otl_jen(X)

CLAUSES

  muj(misha).

  muj(casha).

  muj(dima).

  jen(ira).

  jen(masha).

  jen(lena).

  fiz(lena,5).

  fiz(ira,5).

  fiz(masha,4).

  xim(lena,5).

  xim(ira,5).

  xim(masha,4).

  mat(lena,5).

  mat(ira,5).

  mat(masha,5).

  otl(X):-fiz(X,5),xim(X,5),mat(X,5).

  otl_muj(X):-muj(X),otl(X).

  otl_jen(X):-jen(X),otl(X).

GOAL

  clearwindow,otl_jen(X),write(“отличница: “,X),nl,fail.

 

2. Мысал. Доллар – теңге және теңге – доллар қатынасын анықтау.

 

DOMAINS

 X=real

PREDICATES

 dolar_tenge(X,X)

 tenge_dolar(X,X)

CLAUSES

 dolar_tenge(D,T):-T=D*154,write(T).

 tenge_dolar(T,D):-D=T/154,write(D).

GOAL

 clearwindow, tenge_dolar(300,D), nl, dolar_tenge(2,T)

 

3. Мысал. Зауыт құрылымын құру. Қарым – қатынастарын анықтау: бригадир – жұмысшылар, цех.

 

DOMAINS

 rb=rab(Fam,Name)

 Fam,Name,Br=symbol

PREDICATES

 seh(Br,rb)

CLAUSES

 seh(br1,rab(ivan,serg)).

 seh(br1,rab(sem,serg)).

 seh(br1,rab(ivan,dim)).

 seh(br2,rab(kim,oleg)).

 seh(br2,rab(alma,alia)).

 seh(br2,rab(tim,gul)).

 seh(br3,rab(myn,aig)).

 seh(br3,rab(by,din)).

 seh(br4,rab(amir,tol)).

 seh(br4,rab(tol,nur)).

 seh(br4,rab(ten,ira)).

GOAL

 clearwindow,

 write("Бригадир№1: "),

 seh(br1,Y),nl,write('  ',Y),fail;

 nl,write("Бригадир№2: "),

 seh(br2,Y),nl,write('  ',Y),fail;

 nl,write("цех: "),

 seh(X,Y),nl,write(X,'  ',Y),fail

 

Тапсырмалар

 

1. Ата-ана қатынасы анықталды деп есептей (1- суретте көрсетілгендей), Пролог – жүйесінің келесі сұрақтарға жауаптарының қандай болуын анықтаңыз:

  а) ? – ата-анасы(джим, X)

  б) ? – ата-анасы(X, джим)

  в) ? – ата-анасы(пам, X), ата-анасы(X, пат)

  г) ? – ата-анасы(пам, X), ата-анасы(X, Y), ата-анасы(Y, джим).

  д) Ата, апа қатынасын анықтаңыз.

 2. Прологта ата-ана қатынасы туралы келесі сұрақтарды қарастырыңыз:

  а) Паттың ата-анасы кім?

  б) Лиздің баласы бар ма?

  в) Паттың ата-анасының ата-анасы кім?

  г) Туысқан әпкесі, туысқан ағасы қатынасын анықтаңыз.

  1. Пролог ережесіндегі келесі тұжырымдарды трансляциялаңыз:

  а) Ағасы және әпкесі бар қайсыбіреу – ағасы және әпкесінің болу (қатынасы).

  б) Баласы бар қайсыбір X, оның әпкесі бар, екі баласының болуы (екі балалы болу қатынасы).

  1. Ата-ана қатынасын қолдана, немере баласын, немере қызын, шөбере баласын, шөбере қызын қатынасын анықтаңыз (ата-анасының ата-анасы қатынасына ұқсас).

  1. Ата-анасы және әпкесі қатынастарын қолдана, тәтесі, көкесі қатынасын анықтаңыз.

  1. Ата-тегі қатынасының басқа вариантын қарастырайық:

ата-тегі(X, Z): - ата-анасы(X, Z).

ата-тегі(X, Z): - ата-анасы(Y, Z), ата-тегі(X, Y).

Мына анықтама дұрыс па: Сіз 5 - суреттегі диаграмманы жаңа анықтамаға сәйкес етіп өзгерте аласыз ба? Жақын туысқандары: қатынасын анықтаңыз.

  1. Алыс ағасы, әпкесі қатынасын анықтаңыз.

  1. Өгей әкесі, өгей шешесі қатынасын анықтаңыз.

  1. Немересі бар жиен қатынасын анықьтаңыз.

  1. Ағалы (жақын немесе туысқан) болу қатынасын анықтаңыз.

  1. «Университет» құрылысын құру. Оқутушы-студент қатынасын анықтаңыз.

  1. «Университет» құрылысын құру. Кафедра меңгерушісі қатынасын анықтаңыз.

  1. «Университет» құрылысын құру. Декан қатынасын анықта.

  1. «Университет» құрылысын құру. Ректор қатынасын анықта.

  1. «Сессия» құрылысын құру. Жақсы оқушы студент (екі – ақ төрті бар) қатынасын анықта.

  1. «Сессия» құрылысын құру. Үші жоқ студенттер қатынасын анықта.

  1. «Сессия» құрылысын құру. Бір ғана үші бар студент қатынасын анықта .

  1. «Кәсіпорын» құрылысын құру. Директор қатынасын анықта.

  1. «Кәсіпорын» құрылысын құру. «Қызыметкерлер бөлімінің басшысы» қатынасын анықта.

  1. «Кітапхана» құрылысын құру. Оқырман қатынасын анықта.

  1. «Кітапхана» құрылысын құру. Кітап қарыз студент қатынасын анықта.

  1. «Кітапхана» құрылысын құру. «Кітапханашы» қатынасын анықта.

  1. «Банк» құрылысын құру. «Несие» қатынасын анықта.

  1. «Банк» құрылысын құру. Депозит қатынасын анықта.

  1. «Банк» құрылысын құру. «Валюталық операциялар» қатынасын анықта.