ПРОЛОГ - БАҒДАРЛАМАНЫҢ СИНТАКСИСІ ЖӘНЕ СЕМАНТИКАСЫ


МАЗМҰНЫ

КІРІСПЕ . . . 2

1. ПРОЛОГ ТІЛІНЕ ЖАЛПЫ ШОЛУ . . . 5

1. 1. Бағдарлама мысалы: туыстық қатынастар . . . 5

1. 2. Ережелер көмегімен мысал - бағдарламаны кеңейту . . . 6

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

2. ПРОЛОГ - БАҒДАРЛАМАНЫҢ СИНТАКСИСІ ЖӘНЕ СЕМАНТИКАСЫ . . . 14

2. 1. Айнымалылар . . . 14

2. 2. Құрылыстар. . 14

2. 3. Салыстырулар . . . 15

2. 4. Сұрақтар . . . 16

2. 5. Фактілер мен ережелер . . . 17

2. 6. Бағдарламаның орындалуы алгоритмі . . . 18

2. 7. Пролог - бағдарламаның декларативті мағынасы (мәні) . . . 19

2. 8. Пролог - бағдарламаның құрылымы . . . 19

3. РЕКУРСИВТІ ЕСЕПТЕУЛЕР. АРИФМЕТИКАЛЫҚ ӨРНЕКТЕР . . . 26

3. 1. Есептеулерді басқару . . . 26

3. 2. Рекурсивті есептеулер . . . 27

3. 3. Арифметикалық өрнектер . . . 30

  1. ТІЗІМДЕР. СТАНДАРТТЫ ПРЕДИКАТТАР . . . 34

4. 1. Тізімдер . . . 34

4. 2. Тізбектермен операцияларжүргізу………. . . . 39

4. 3. Стандартты предикаттар. . 41

ҚОРТЫНДЫ . . . 53

ӘДЕБИЕТТЕР . . . 54

КІРІСПЕ

Бағдарламалауда процедуралық әдістен басқа, оның өкілдері Бейсик, Паскаль, Си сияқты жоғары дәрежелі әмбебап тілдермен қатар, тағы екі бағыт - функционалдық (қызметтік) және логикалық бағдарламалау жатады.

Функционалдық бағдарламалау қарапайым идеяға негізделген, бүкіл информацияны өңдеу және соңында алынған нәтиже кейбір қызметтерді орындайтын салымды немесе рекурсивті функцияларды шақыру түрінде көрсетілуі мүмкін, сондықтан бір функцияның мәні екіншісінің аргументі ретінде қолданылады. Функционалдық бағдарламалау тілінің өкіліне Лисп (Lisp proces - sing - тізімдерді өңдеу) тілі жатады.

Логикалық бағдарламалау жүйелер, тілдер, тәсілдер, анықтамалар шеңберінен құралған. Оның негізінде қайсыбір логикалық тілде тапсырманы тұжырымдар жиынтығымен шешу идеясы жатыр, және қайсыбір формальды дедуктивті жүйеде логикалық қорытындыны құру жолымен тапсырманың (есептің) шешімін шығару жатыр. Осы түрдегі ең әйгілі жүйелерге Пролог (Program ming in logic - логика жүйесінде бағдарламалау) тілін жүзеге асыру жатады. Пролог тілі Си, Паскаль, Фортран, Бейсик сияқты, алгоритмдерді жазу үшін арналған дәстүрлі бағдарламалау тілдерімен салыстырғанда, мына ерекшеліктерге ие:

  • Прологтағы бағдарлама алгоритм емес, формальдық логика тілінде есеп шарттарын жазу болып табылады;
  • Пролог тілі есептеу немесе графикалық есептерді шешу үшін емес, логикалық есептерді, адамның логикалық ақылын қорыту процессін моделдеу үшін арналған; есептеулер мен графикалық құрылымдар Прологта логикалық қорытындының қосалқы өнімі ретінде орындалады;
  • Пролог бағдарламашыдан ерекше ойлау қабілетін талап етеді, ал бұл процедуралық бағдарламаларға үйренгендердің оны оқуын қиындатады, сондықтан да маман бағдарламашылар бұл тілге өтуге құмарланбайды, бұл Пролог тілінің дамуына кері әсерін тигізеді; бірақ көптеген елдерде (Жапония, Англия, Франция, Германия, Израиль және т. б. ) бағдарламалауды оқытуда бірінші оқытылатын тіл ретінде білім беруде Прологты практикалық қолдану көбейуде, Паскаль типіндегі процедуралық тілдерге көшу бұл жағдайда қиындықтарды туғызбайды.

Осының барлығы Прологты жоғары дәрежелі тілдерге (тілге) жатқызады. XX - ғасырдың 90 жылдарында 5-ші дәрежелі компьютерлерді (жасанды интелектке ие) құрудың жапондық жобасында Пролог аппаратты ұжымдастыру және бағдарламаны жасау негізі ретінде қолданылған. Қазіргі Пролог, әрине, 5-ші дәрежелі ЭЕМ-дерді бағдарламалау тілінің, соңғы вариантына жатпайды және болашақта мәңгі дамуын алады. Ол дискриптивті бағдарламалауда Бейсик ролін алатын шығар; оның мәні мен даму мүмкіндігі, логикалық бағдарламалау идеясының таралуы өте жоғары.

Дипломдық жұмыстағы мысалдарда Турбо - Пролог 2. 0, версиясында бағдарламалау негізі көрсетілген. Пролог базасы үлгілерді салыстыру, мәліметтерді иерархиялық құрылыста көрсету және автоматты түрде қайтарудан құрылған механизмдердің шектелген тізбегінен тұрады, осы шағын тізбек ғажайып қуатты және икемді бағдарламалық аппаратты құрайды. Пролог тілінің жетістіктері мынаған негізделген, бір жағынан, ондағы логикалық формулаларды қолдану арқылы көптеген практикалық есептерді жазып шығуға болады, ал екінші жағынан қарапайым интерпретациялары формулалардың табылған және логикалық бағдарламалау жүйесін жеткілікті дәрежеде тиімді жүзеге асыру енгізілген, Пролог әсіресе, ішінде объекттері және олардың арасында қатынастары болатын есептерді шешуге жақсы бейімделген. Тіл құрылысында мәліметтер базасымен қарапайым және тиімді жұмыс істеу мүмкіндіктері қарастырылған, бұл оның негізінде әртүрлі типтегі ақпараттық-анықтама және экспертті жүйелерді құруға мүмкіндік береді.

Жұмыс 4 тараудан құрылған. Әр тарау толық теориялық материал, жұмыс істеуші бағдарламалар мысалдарымен толықтырылған. Бірінші тарауда жанұя қатынастары - бағдарламасының мысалы қарастырылады, Пролог тілінің негізгі барлық түсініктері жазылған.

Екінші тарауда Пролог тілінің элементтері қарастырылған: айнымалылар, құрылымдар, сұрақтар, салыстырулар, фактілер, ережелер. Сұрақтардың қалай қойылатыны көрсетілген, белгілі фактілер негізінде ережелер қарастырылған. Сұраныстарды бағдарлама ұсыныстарымен салыстыру арқылы бағдарламаның орындалу алгоритмі көрсетілген. Бағдарлама мысалында: вертикалды кесінділер қатынастары қарастырылған және бағдарлама құрылысының барлық бөлімдері сипатталған.

Үшінші тарауда рекурсивті функциялар сұрақтары, қорытынды есептеулер және арифметикалық белгілер қарастырылған. Рекурсивті есептеулер факториалдық есебі мысалында көрсетелген.

Төртінші тарауда тізімдер, тізімдермен негізгі және қосымша операциялар, стандартты предикаттар, тізім элементерін баспаға шығару бағдарламасының мысалы, және басқа да бағдарлама мысалдары келтірілген.

Қарастырылған бағдарлама мысалдары, теориялық материалдар мен функционалдық және логикалық бағдарламалау, мәліметтер базасы және эксперттік жүйелер пәндері бойынша лабораториялық және курстық жұмыстарды орындауда пайдалы болатынына кәміл сенімде.

Жұмыстың мақсаты: Информатика мамандығы студенттері үшін Пролог тілін оқыту әдістемесі технологияларын қолдану

Жұмыстың құрылымы: Кіріспеден, 4-тараудан, Қортыныды және қолданылған әдебиеттер тізімінен тұрады.

  1. ПРОЛОГ ТІЛІНЕ ЖАЛПЫ ШОЛУ

  1. Бағдарлама мысалы: туыстық қатынастар

:
: http://s020.radikal.ru/i719/1312/fe/e8a8bbb425c2.jpg

Бірінші суреттегі туыстық қатынастардың толық ағашы келесі Пролог - бағдарламасында сипатталған:

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

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

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

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

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

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

Бұл бағдарлама 6 сөйлемнен құралған, әрбір сөйлем бір ғана ата-ана қатынасы болу фактісін жариялайды (көрсетеді) .

Аргумент ретінде бірінші орында ата-анасы, ал екіншісінде - баласы. Бағдарламаны енгізген соң сұрақтар қоюға болады:

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

жүйе жауабы: Иә (Yes) .

? - ата-анасы( лиз, пат) .

жүйе жауабы: Жоқ (No) .

? - ата-анасы(X, лиз) / * Лиздің ата-анасы кім ? */

X = том

? - ата-анасы(боб, X ) / * Бобтың баласы кім ? * /

X = энн / * Басқа да шешімдерін көру үшін мыналарды енгізіңіз << ; >> * /

X = пам

? - ата-анасы(X, Y) / * қайсысы кімнің ата-анасы ? * /

X = пам, Y = боб

X = том, Y = боб

X = том, Y = лиз

Бұдан да едәуір күрделі сұрақтарды қоюға да болады: << Джимнің ата-анасының ата-анасы кім ? >>. Бағдарламада ата- анасының ата-анасы қатынасы анықтамасы айтылмаған, осындай сұрақ 2 этапқа бөлінеді:

  1. Джимнің ата-анасы кім ? Y - делік.
  2. Y - тің ата-анасы кім ? X - делік.
  1. және (2) Пролог тілінде былайша жазылады:

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

X = боб, Y = пам.

Осы сұрақтарды басқаша да қоюға болады:

«Келесі талаптарды қанағаттандыратын X пен Y - ті табу керек»:

ата-анасы(Y, джим) және ата-анасы(X, Y) . Егер олардың орындарын ауыстырсақ, жауабы тура солай шығады:

? - ата-анасы( том, X), ата-анасы(X, Y) % томның немерелері кім ( қайсыбір X - тің баласы, ол томның баласы болып табылады ) ?

:
: http://i038.radikal.ru/1312/16/aceb122ee477.jpg

? - ата-анасы(X, энн), ата-анасы(X, пат) /* энн мен Патта ортақ ата-ана бар ма ? * /

X = боб

1. 2. Ережелер көмегімен мысал - бағдарламаны кеңейту

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

әйел (пам) .

еркек (том) .

еркек (боб) .

әйел (лиз) .

әйел (пат) .

әйел (энн) .

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

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

жынысы (пам, әйелдік (ұрғашы) ) .

жынысы (том, еркектік) .

жынысы (боб, еркектік) .

және т. б.

Енді жаңа қатынас ұрпағы (әулеті), ол ата-ана қатынасына кері келеді, мысалы:

ұрпағы(лиз, том) .

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

ұрпағы(Х, Х) : - ата-анасы(Х, У) /* барлық Х және У үшін, егер Х - У ата-анасы болса, онда У - Х ұрпағы */.

Осындай сөйлем ереже деп аталады, мұндағы (У, Х) ұрпағы - сөйлемнің басы немесе қорытындысы, (Х, У) ата-анасы - шартты бөлігі немесе сөйлем денесі. Мысалы:

? - ұрпағы(лиз, том) .

Бағдарламада ұрпақтар туралы факті жоқ, сондықтан мына ережені қолданамыз:

ұрпағы(лиз, том) : - ата-анасы(том, лиз) .

Пролог - жүйесі шартты бөлігі (шындыққа жатады ма) орындалады ма, жоқ па, соны тексереді. Ол үшін бастапқы мақсат:

ұрпағы(лиз, том) % ішкі мақсатпен ауыстырылады:

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

Осындай фактіні бағдарламада табу мүмкін болғандықтан, яғни ереже шығысындағы тұжырым шындық, онда жүйе yes ( иә) деп жауап береді. Шеше қатынасын қосайық:

шеше(X, Y) : - ата-анасы(X, Y), әйел(X) . / * Барлық X және Y үшін: X Y - тің шешесі, егер X Y - тің ата-анасы және X - әйел болса. */

Үтір - екі шарт арасындағы конъюнкция, яғни олар бір мезгілде орындалуы тиіс. Ата-анасының ата-анасы қатынасын ереже көмегімен былайша жазады:

ата-анасының ата-анасы(X, Z) : - ата-анасы(X, Y), ата-анасы(Y, Z) . / * әпкесі қатынасы үшін ұқсас: * /.

http://s005.radikal.ru/i211/1312/57/0cfb321e7b1e.jpg
әпке(X, Y) : - ата-анасы(Z, X), ата-анасы(Z, Y), әйел(X) .

Әпке қатынасы үшін жетілдірілген ереже:

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

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

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

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

:
: http://s006.radikal.ru/i213/1312/7f/8adfd38f25f1.jpg

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) .

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

:
: http://i031.radikal.ru/1312/2f/5cc3295f4503.jpg

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. «Банк» құрылысын құру. «Валюталық операциялар» қатынасын анықта.

2. ПРОЛОГ - БАҒДАРЛАМАНЫҢ СИНТАКСИСІ ЖӘНЕ СЕМАНТИКАСЫ

2. 1. Айнымалылар

Прологта айнымалылар бас әріптен басталады, латын алфавитінің цифрлері мен әріптері қолданылады. Айнымалының ерекше түрі - анонимді айнымалы, айнымалының нақты мәні жоқ кезде предикаттың аргументі ретінде қолданылады. Прологта айнымалы информация қоймасы емес, ол сөйлем қаншалықты болса, соншалықты өмір сүреді. Бағдарламаның орындалуы процесінде айнымалы жаңа мәнге ие бола алады. Айнымалы мысалдары:

X

Нәтиже

Объект 2

Қатысушылар тізімі

Жаңа заттар тізімі.

_X 23

_X 23

баласы бар(X) : - ата-анасы(X, Y) .

Бұл жерде баласы бар болу (қасиеті) сипаты баланың атына байланысты емес, сондықтан анонимді айнымалы қолданған жөн:

баласы бар(X) : - ата-анасы( _, _ ) .

Атының лексикалық диапазоны - бір.

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

2. 2. Құрылымдар

Құрылым - бұл конструкция, ол оның аргументтері тізімінің жақшалары ішіне жазылған және үтірлермен бөлінген құрылымы атынан құралады. Құрылымға компоненттерін біріктіру үшін функтурды таңдап алу қажет.

Мысалы:

Дата (1, мамыр, 1983)

Бұл жерде фуктур -* дата. Бұл мысалдағы барлық компоненттер - константалар (екі компонент - бүтін сандар және біреуі - атом) . Мамыр айындағы жеке бір күнді 1-суреттегі құрылыммен көрсетуге болады:

:
: http://s020.radikal.ru/i713/1312/27/6191944bb5df.jpg

Осындай объекттер, 2-суретте көрсеткендей, келесі пролог терминдерімен көрсетуге болады:

:
: http://s40.radikal.ru/i087/1312/a5/258ff3e4d1ce.jpg

Р1=нүкте(2, 4) .

Р2=нүкте(5, 2) .

S = кесінді (P1, P2) = кесінді (нүкте (2, 4), нүкте (5, 2) ) .

Т = үшбұрыш (нүкте (2, 4), нүкте (5, 2), нүкте (7, 6) ) .

2. 3. Салыстырулар

Пролог тілінде орындалатын негізгі операция - бұл салыстыру операциясы (унификация немесе келісу деп те айтылады) . Бұл операция не жемісті, не жеміссіз болуы мүмкін. Айнымалылар өз мәндерін, фактілер және ережелерде константаларды салыстыру нәтижесінде, алады. Айнымалы өз мәніне ие болғанша, ол бос деп аталады. Айнымалы өз жаңа мәнін алған соң, ол байланып қалады. Бірақ ол сұраққа жауап алу үшін қажетті уақыт аралығында ғана байланып (байланысты) тұрады. Бұдан кейін Пролог оны босатады, қайтарады және альтернативті шешімдер іздейді. Айнымалылар салыстыру процесі бөлігінің қызметін атқарады. Салыстыру операциясы былайша анықталады:

  1. Константа тек константамен ғана салыстырылады.
  2. Ұқсас құрылымдар бір - бірімен салыстырылады.
  3. Айнымалы константамен немесе басында белгілі айнымалымен салыстырылады.
  4. Екі бос айнымалылар бір - бірімен байланыса алады және бір - бірімен салыстырылады.

Салыстыру мысалдары:

5 саны 5-пен ғана салыстырылады.

«иелену» фактісі <<иелену>>-мен ғана салыстырылады .

Сергей константасы Юрий константасымен салыстырылмайды.

2. 4. Сұрақтар

Сұрақ - бұл бағдарламаның орындалуы кезінде болатын логикалық шығыстың жіберуші нүктесі. Кез - келген сұраққа жүйе «Иә» немесе «Жоқ» деп жауап береді.

Горизонталь және вертикаль кесінділерді тану үшін бағдарлама фрагментін жазайық. Кесінді вертикаль, егер оның нүктелері - соңы координаттары сәйкес келсе; кесіндіге басқа да ешқандай шектеулер қойылмайды. <<Горизонталдық>> сипаты ұқсас келеді, тек X пен Y - тің орындарына ауыстыру қажет. Құрамында осы фактілері болған келесі бағдарлама, мына тұжырымдарды жүзеге асырады:

http://i031.radikal.ru/1312/cc/b0d302490953.jpg

Осы бағдарламамен мынадай диалог мүмкін:

? - верт (кес. (нүкте (4, 2), нүкте (4, 6) ) ) .

Иә.

? - верт ( кес. (нүкте (1, 1), нүкте (2, Y) ) ) .

Жоқ.

? - гор (кес. (нүкте (1, 1), нүкте (7, Y) ) ) .

Y = 1.

:
: http://i069.radikal.ru/1312/15/8f5dae07f4b4.jpg
... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Пролог тіліне жалпы шолу
Бағдарламалау тілдері
ЭЕМ-ң қызметі, құрамы және жіктелуі. Алгоритмдік тілдер туралы мәліметтер
Жасанды интеллект жүйесіндегі аспаптық құрылғылар
Бағдарламалау(программалау) технологиясы
Алгоритмдерді Паскаль программалау тілінде әзірлеу
СИ бағдарламалау тілі және жобалануы туралы
ЖАСАНДЫ ИНТЕЛЛЕКТ НЕГІЗДЕРІ
Визуалды тілдерде графиканы программалау. Нұсқаулық
Құжаттарды бір-бірімен ұқсастығы
Пәндер



Реферат Курстық жұмыс Диплом Материал Диссертация Практика Презентация Сабақ жоспары Мақал-мәтелдер 1‑10 бет 11‑20 бет 21‑30 бет 31‑60 бет 61+ бет Негізгі Бет саны Қосымша Іздеу Ештеңе табылмады :( Соңғы қаралған жұмыстар Қаралған жұмыстар табылмады Тапсырыс Антиплагиат Қаралған жұмыстар kz