Студопедия — Тапсырма 2.
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Тапсырма 2.






Келесі графтарды қарап өрнекті анықта

1)

2)

Тәжірибелік жұмыс №7. Рекурсия.

Мақсаты: Прологтағы ереже және үйлесімділік ұғымдарын қарастыру. Мысалдар қарастыру.

Пролог сөйлемдері(ұйғарымдары) үш типті: фактілер, ережелер және сұрақтар. Факт – сөзсіз ақиқат болатын жеке мақсат. Мысалы, ұнатады(Ахмет, абай_жолы) фактісінде Ахметтің бір ғана «Абай жолы» кітабын ұнататыны мәлімделген. Егер Ахметтің ұнататын кітаптары көп болса, онда оның бәрін атап шықпай-ақ, қысқаша Unatadi(axmet, kitap) фактісі түрінде жазуға болады. Мұндай факт ереже деп аталады. Яғни, ереже мен фактінің айырмашылығы сөз мәнінде ғана.

Жалы, Прологта ережелер деп көбінесе бір фактінің басқа фактілер тобына байланыстылығы көрсетіліп, жасанды интелектіде пайдаланатын егер... онда командаса арқылы жазылған сөйлемдерді айтады. Мысалы, табиғи тілде жазылған ережелер:

Егер жаңбыр жауып тұрса, онда дала дыМҚыл.

Егер жәндік үлкен және қанаттары бар болса, онда ол –құс.

Сонымен, ереже –нысандар және олардың арасындағы қатыстар жөнінде біршама ұйғарым(сөйлем). Ол Прологта басы мен денеден тұратын етіп жазылады:

<басы>:-<дене>.

Дене –ереженің егер бөлімі (мақсат пен мақсаттар). Ол кейбір жағдайларда ақиқат болатын конъюнкциядан не жеке мақсаттан тұруы мүмкін. Конъюнкцияға енген жеке мақсаттар үтір (,) арқылы бөлініп жазылады.

Басы-ереженің онда бөлімі (-негізгі мақсат (негізгі мақсат ереже тақырыбы деп те аталады)).

:- - ереженің басы мен денесінің арасына қойылатын қос нүкте мен сызықшадан тұратын белгі. Ол ережеге енгізілетін егер қызметші сөзін алмастырады (Түрбо Прологта:- белгісінің орнына if кілттік сөзін жазуға да болады).

.(нүкте)- ереже соңына қойылатын белгі.

Жалпы, факт- ақиқат болатын жеке мақсат (фактіні мақсаты жоқ ақиқат ереже деп қарастыруға болады), ал ереже- мақсат пен тақырыбын логикалық түрде байланыстыратын сөйлем. Ереженің толық ақиқаттық пікір болмауы да мүмкін.

1- мысал: құс (Х):- үлкен_жәндік(Х), /* нысанды тану */

қанаты_бар(Х).

Ит(Х):- әке (Х,У), ит (У)

Соңғы ереженің оқылуы: егер У-тің әкесі Х, ал У ит болса, онда Х-ит (Х,У- байланыстырылған айнымалылар). Түсінікті болу үшін ережені ағаш түрінде бейнелеп көрсетуге де болады:

Мысалға енгізілген ережелерге және дайындалған фактлерге сәйкес Түрбо Прологта программаның құрылуы:

domains

S=string

predicates

kus(S) ulken_jandik(S)

kanaty_bar(S)

it(S) ake(S,S)

clauset

kus(X):- ulken_jandik(X), kanaty_bar(X).

It1(X):-ake(X,Y), it(Y).

Ulken_jandik(tyrna).

Kanaty_bar(tyrna).

It(bars).

Ake(moinak,bars).

…………………….

Ережелер мен фактілер сақталған соң сәйкес сұрақтар арқылы қажетті жауаптарды шығару қиын емес. Сұрақ белгісі теріліп алынған соң, ал Түрбо Прологта іске қосу командасын берген соң сұхбат терезесінде көрінген. Цель: сөзінен кейін ереженің басы жазылуы тиіс. Мысалы:

Цель: it1(X)

X=moynak

Цель: кus(X)

X=turna

Ереже басы бірнеше сөз тіркесіне тұрса, араларына астын сызу (_) белгісін қойып кеткен жөн, оның ешқандай түсінігі жоқ, тек сөздерді біріктіріп жазуға ыңғайлы, мысалы: ата_ана. Асты сызу белгісін жасырын (анонимдік) айнымалы деп те атайды.

Егер ереже денесіне нақты мәндер енгізілсе, аргументтері айнымалылар болатын сұраққа жауап ретінде айнымалылардың нақты мәндері шығады: Мысал:? – unaidy(axmet,X) &-kyz(X), unaidy(X,kitap).

Сұрағы берілген кезде Пролог сұрақ денесінің сол жағында бірінші болып жазылған kyz(Х) мақсатын берілген қорымен салыстырады да, қыз(Х) [kyz(X)] мақсатына үйлесімді факт табылса, оның аргументі Х-ке меншіктеп, Х айнымалысы кездесетін барлық жерге осы мәнді қойып шығады, т.с.с. Айнымалыны сәйкес мәнімен алмастыру айнымалыны нақтылау делінеді.

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

Жүйеге фактілерге қосып ережелер де енгізілсе, оларды білім қоры деп, ал, біршама фактілер мен ережелер тобын процедура деп те атайды. Нақты фактілер мен ережелер жиыны- сұраққа жауап дайындалатын қарапайым программада. Яғни, Прологта берілгендер қоры, білім қоры және программалар бір түрлес. Оларды тек Пролог нысандарына екі түрлі көзқарас деп түсінуге болады. Бірақ, программалардың көпшілігі, мысалы, сараптаушы жүйелерді дайындау программаларының үлкен және олар мақсаттарды дәлелдеуді қажет ететін логикалық ұйғарымдар түрінде құрылады. Фактілер жиынтығы логикалық программалаудың қарапайым түрі. Күрделі программаға жаңа сөйлемдер және өңдеуді қажет ететін процедураларды қосып программаны кеңейту де мүмкін.

Прологта фактілерге енгізілетін айнымалылар жалпылық квантормен айқын емес түрде байланысты, мысалы, ұнатады (Х,алма) фактісі кез-клген Х-тің алманы ұнататынын білдіреді. Барлық айнымалылар жалпылық кванторлы болғандықтан программаларда оның белгісі енгізілмей тастап кетеді.

Сонымен, программа Пролог- жүйе ішіне сақталып қойылады. Сұрақ берілген кезде Пролог талқылаудың кері тізбегін пайдаланып, әр мақсатты дәлелдеуге тырысады. Егер бір мақсат дәлелденбесе (үйлесімді болмаса), Пролог өзі белгіленген айнымалы мәндерін өшіріп, дәлелдеуді қор басынан бастап қайта жүргізеді. Яғни, іздеу тереңдетіліп және қайту механизмі қолданылып жүргізіледі.

2-мысал. Табиғи тілде мынадай ереже берілсін: егер Х атаулы ер кісінің әкесі А және У атаулы әйелдің әкесі де А болса, онда Х-пен У – бір туыс.

Ерлер мен әйелдердің әкелері жөнінде екі тізім дайындалған болсын:

1-тізім(ерлер) 2-тізім (әйелдер)
әке 1 (Оспан,Марат) әке 1 (Нұрлан, Болат) әке 1 (Ержан, Қажым) әке 1 (Мұрат, Сұлтан) әке 2 (Мұстафа, Айгүл) әке 2 (Мұрат, Шолпан) әке 2 (Нұрлан, Маржан) әке 2 (Бахыт, Жәния)

 

Тізімдерді қарап шығып, әкелері бір ерлер мен әйелдерді анықтау керек.

Жоғарғы тізімдерде олар:

Болат пен Маржан (әкелері-Нұрлан),

Сұлтан мен Шолпан (әкелері - Мұрат)

Есепті шешу үшін алдымен екі тізімді бір білім қоры түрінде дайындап, арнайы атаумен сақтау керек (мысалы, Туыстар). Ол – дайындалған программада:

Tuis (X, Y, A): -ake1 (A,X), ake2 (A,Y).

Ake1 (ospan, marat).

Ake1 (nurlan, bolat).

……………………

Ake2 (baxit,jania).

 

Берілетін сұрақ?-tuis (X,Y,A).

Білім қорында әкелері бір туыстардың бар екені ақиқат түрінде алынып, ережеге енгізілген әр мақсаттың ақиқаттығы дәлелденеді. Бұл талқылаудың кері тізбегі.

Сұрақ беріліп программа іске қосылған кезде Пролог алдымен ереже денесінің сол жағында бірінші болып жазылған аke1(А,Х) мақсатын дәлелдеуге кіріседі. Дәлелдеу берілгендер қорының басынан бастап жүргізілетіндіктен, мақсаттың бірінші фактіге сәйкес келетінін анықтап, жүйе мынадай меншіктеу командаларын орындайды:

A=ospan, X=marat

Одан әрі, жүйе ережеге енгізілген барлық А және Х айнымалыларының орнына осы мәндерді қойып шығарды да, келесі әке2 (Оспан,У) мақсатын дәлелдеуге кіріседі. Бірақ берілгендер қорында «Оспан» аргументі бірінші болып жазылған басқа факт жоқ. Сондықтан, Пролог берілгендер қорының басына қайтып өтеді де, баламалы дәлелдеуге қайта кіріседі. Мұнда Пролог алдымен бірінші фактіге сәйкес А, Х айнымалыларына меншіктелген мәндерді өшіріп тастайды да, келесі фактіні тексеруге көшеді. Келесі факті әке1 (А,Х) мақсатына салыстырмалы болғандықтан, жаңа меншіктеу командасын орындайды: А= Нұрлан, Х=Болат. Одан әрі әке2 (нұрлан, У) мақсатына салыстырмалы фактіні іздеу барысында Пролог сәйкес фактіні табады да, У=Маржан меншіктеуін орындап, сәйкес мәндерді басып шығарады: X=bolat Y=marjan A=nurlan

Сұраққа сәйкес келесі мәндерді шығару үшін клавиатүра арқылы «;» пернесін басу керек (Түрбо Прологта олар автоматты түрде көрінеді, пернені басу қажет емес).

Сонымен, егер сұраққа енгізілген ұйғарымның бір ғана мақсаты дәлелденбесе де, берілгендер қорында сұраққа үйлесімді ұйғарым жоқ (сұрақ үйлесімсіз) деп есептелінеді. Яғни, сұрақ үшін барлық мақсаттардың дәлелденуі міндетті. Ал, Прологта сұраққа енгізілген айнымалылардың бәріне «барлығы үшін» (жалпылау) кванторы әсер етеді.

Жоғарыдағы мысалға сәйкес білім қорының (программаның) Түрбо Прологта жазылуы:

Predicates

Tuis (string, string, string)

Ake1(string, string)

Ake2(string, string)

Clauses

Tuis(X,Y,A): - ake1(A,X), ake2(A,Y).

Ake1(ospan,marat)

Ake1(nurlan,bolat).

………….

Ake2(baxit,jania)

Прологта программаның орындалу жолын (М мақсатын іздеуді) іздеу ағашы түрінде бейнелеп көрсетуге болады. Мұнда М ағаштың негізгі түбірі ретінде алынады да, ереже денесіне енгізілген мақсаттар ағаштың келесі түбірлері ретінде алынады. Әр түбірдің өзінен шығатын қырлары болуы мүмкін, олар берілген программаға сәйкес М мақсатын дәлелдеуге пайдаланылады. Кейбір түбірлер мақсатқа үйлесімсіз болуы мүмкін, бұл кезде қайту механизмі орындалады.

Мысалы, жоғарыда берілген программаның орындау сұрағын қарастырайық: tuis(X,Y,A): - ake1(A,X), ake2(A,Y) оны орындау жолын ағаш түрінде бейнелеуге болады:

Прологтан әр қатардан тұратын жазбаларды (тізімді) да ашуға болады:

3-мысал. Студенттердің математика мен информатикадан алған бағалары көрсетілген мынадай тізімнің әрқайсысын жолдық типке алып, Түрбо Пролог терезесінен алу керек:

1.ахметов О. 4 4

2.Ермеков Н. 4 3

3.Нұрланова Н. 5 5

 

Программаны мынадай түрде құруға болады:

Domains

T=string

Predicates

tizim(T)

clauses

tizim(“1.Ахметов О. 4 4”)

tizim(“2.Ермеков Н. 4 3”)

tizim(“3.Нұрланова М. 5 5 ”)

 

Компиляциялап, іске қосу командасын берген соң сұхбаттық терезеде берілетін команда – цель: tizim(T).

Тапсырма. Прологта әке, ата жөнінде мынандай сұрақтарды дайындаңыз:

1. Ахметтің әкесі кім?

2. Айсұлудың баласы бар ма?

3. Ахметтің әкесінің әкесі кім?

 

Тәжірибелік жұмыс №8. ПРОЛОГ –та логикалық логикалық есептерді шешу.

Мақсаты: Ұйғарым, факт және ереже, предикат ұғымдарымен танысу. Мысалдар қарастыру.

 

Прологта берілгендер негізінен символдық типте қабылданады, бірақ онда басқа типтерді де пайдалануға болады. Мысалы, Түрбо Прологта қолдануға болатын негізгі типтер: integer, real, char, symbol және string, ал жай Прологта тип сипатталады. Жалпы, Пролог әдеттегі Паскаль тілі сияқты процедуралық программалау тілдерінен жоғары деңгейлі тіл.

Әдетте тілде нысандар арасындағы қатысқа мысал келтірейік: «Мұрат; Сұлтанның әкесі.» Оның прологта жазылуы: Әке (мұрат, сұлтан). Мұндағы Мұрат пен Сұлтан нысандарының арасындағы қатыс ретті түрде сипатталған: Мұрат Сұлтанның әкесі, Сұлтан Мұраттың әкесі емес.

Ереженің әдеттегі тілде жазылуына мысал, Егер Сұлтан мен Жібек туыс болса, онда олардың ата – анасы бір. Ереженің Прологта жазылуы.

Tuis(sultan,jibek,),ata_ana(bir)

Әдетте атаулар (туыс, ата, ана, т.с.с. предикаттар мен аргументтер) латын әріптерімен жазылады. Прологтың оқи алауына байланысты, оларды орыс әріптері бойынша жазуға да болады. Кітапта олар көбінесе латын әріптерімен жазылды.

Жалпы, Пролог тілінде программалау мынадай кезеңдерден тұрады:

- Нысандар мен олардың арасындағы қатыстар жөнінде біршама фактілер жариялау;

- Нысандармен олардың арасындағы қатыстар жөнінде біршама ережелерді анықтау;

- Нысандар мен олардың арасындағы қатыстар жөнінде сұрақтарды дайындау.

Мысалы, әке жөніндегі фактілер мен ережелер білім қоры ретінде Прологқа жазылған болсын. Біз Мұрат кімнің әкесі жөнінде сауал жіберсек, Пролог Мұрат жөніндегі барлық өзіне белгілерді (берілгендер қорын) қарап шығып, сәйкес жауап береді.Яғни, Пролог – жүйені жауап іздеуге пайдалану үшін арналған фактілер мен ережелердің қоймасы деп қарастыруға болады.

Прологты пайдаланатын салалар:

- Сараптаушы жүйелерді дайындау;

- Мәтіндерді бір тілден екінші тілге аудару;

- Логикалық түрде теоремаларды дәлелдеу және т.б.

Пролог – сұқпаттық, жоғары деңгейлі тіл. Программаны Прологты іске асыру үшін арифметикалық амалдарды орындаудан басқа жағдайларда жүйеде негізгі мәліметтер(фактілер мен ережелер) сақтаулы болып, экранға шығарылуы одан әрі бір форматта қажетті сұрақ берілуі тиіс. Сұрақ түріне байланысты жүйенің жауабы ИӘ не ЖОҚ түрінде көрінуі мүмкін. Екінші сөзбен айтқанда Прологпен жұмыс істеу математикалық логикалық заңдары мен принциптеріне шамалас болып келеді.

Көп жағдайда Прологта пайдаланатын пікірлер түрлі құрылымды болып беріледі. Мұнда логикалық байланыстарды пайдаланып, берілген пікірлерден келесі күрделі пікірді алуға да болады.т.б.

Факт – нысандар жөніндегі мәлімет. Фактілер бірнеше нысанның не нысандар арасындағы қатынас қатыстардан тұруы мүмкін. Мысалы, әдеттегі түрде жазылатын фактілер:

Сұлтан – студент;

Ахмет, Маржан, Мәдина – оқу озаттары;

Ержан Маржанға кітап берді;

Прологта фактілер предикаттық түрде сипатталады:

<атау> <Арг> <арг>

Мысалы, жоғары фактілердің прологта жазылуы:

Student(sultan)

Oku_ozattary (axmet, marjan, madina)

beru (erjan, marjan, kitap)

Фактіде жай жақшалар алдыңда жазылған атау предикат делінеді. Егер ол бірнеше сөзден тұрса, сөздерді бір атау түрінде қабылдау үшін араларына астын сызу (-) белгісін қойып кету жеткілікті, мысалы оқу озаттары.Предикаттан соң жақшалар ішіне үтір арқылы бөлініп жазылатын атаулар аргументтер деп аталады.Мысалы, қарындас (нұрлан, жібек) фактісінде:қарындас – предикат, Нұрлан, Жібек – аргументтер.

Мұнда ескерілетін жайттар:

- Прологта предикаттар мен аргументтер латын не орыс алфавиттерімен кіші әріптерінен бастап жазылады.

- әр факт ақиқат ұйғарым түрінде қабылданады;

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

- әр фактінің соңына нүкте (.) қойылады.

Прологта фактіні сөйлем (ұйғарым, пікір) деп те атайды. Нысандар арасындағы қатыстан тұратын фактіні жазу және оқу кезінде алдың ала нысандардың жазылу ретін қалаған түрде дәл анықтап алу керек. Мысалы, әке (Мұрат, Сұлтан) фактісінің оқылу реті жоғарыда ескертілген болатын.Ретті еркін түрде анықтап қоюға болады. Мұнда фактілер «Сұлтан Мұраттың әкесі» деп оқу да мүмкін. Бірақ, алдың ала оқу ретіне келісіп қойсаңыз, одан соңғы тақырыптарды да ретпен оқуды сақтау керек.

Егер факт конъюнкциялы болса, ол үшін пайдаланылатын предикаттар үтір (,) арқылы бөлініп жазылуы тиіс. Үтір конъюнкция (және) логикалық операциясын білдіреді. Мысалы, Нұрғали Баянды ұнатады және Баян Нұрғалиді ұнатады күрделі фактісінің Прологта жазылуы:

Ұнатады (Нұрғали, баян), ұнатады (баян, нұрғалиді)

Фактінің конъюнкция құрайтын әр бөлімі мақсат не мақсатты ұйғарым деп те аталады.

 

Сұрақтар. Мақсатты ұйғарымды дәлелдеу. Қайту процессі.

Жауап алу үшін берілгендер қорына қойылатын сұрақ делінеді. Сұрақ пернетақтадан факт (лер) не ережелер түрінде енгізіледі, тек оның алдыңа арнайы символды енгізсе болатын арнайы символ – сұрақ белгісі мен одан соң енгізілетін сызықша (?-). Ол – жүйенің шақыру белгісі деп те аталады. Сұрақ соңынан нүкте (.) қойылады.Сұрақтың фактіден айырмашылығы оның алдыңа тек сұрақ белгісінің қойылуында емес, оның аргументтері үшін айнымалыларды не нақты мәндерге қосу айнымалыларды енгізуге болады.Егер сұраққа енгізілген мақсаттың аргументтері нақты мәндер болса, сәйкес жауап ИӘ не ЖОҚ түрінде беріледі, егер аргументтер айнымалылар болса, оларға сәйкес нақты мәндер шығарылады (прологта айнымалылардың бас әріптен бастап жазылуы міндетті). Сұраққа енгізілген және берілгендер қорында сақтаулы атаулар мен нақты аргументтердің бір – бірінен айырмашылығы болмауы тиіс.Яғни, сәйкес атауларды қысқартып жазуға болмайды. Ал айнымалыларды кез –келген символ не символдар тіркесі түрінде жазылуы мүмкін.

Прологта фактілер Мен сұрақтар жанына не алдыңа әдеттегідей түсініктеме енгізуге де болады. Ол /**/ символдарының арасына жазылады.

Жүйені оқи алу үшін тарауда қазақша атаулар латын не орыс әріптерін пайдаланып жазылған. Мысалы, қазақша ә, ң, ү, ұ, қ, ө, ж, ы, әріптері шамалас a, n, g, u, k, o, g, y, I латын әріптерімен, тіпті кей әріптер ағылшын әріптерімен алмастырылған. Егер енгізілетін қазақша аргументті жазу керек болса, оны тек тырнақшалар ішіне жазуға болады.

Мысалдар:

1.ana (gulnar) /*факт*/

…………….

?- ana(X) /*сұрақ*/

X=gulnar /*жауап*/

2.?_unatady (axmet,kitap) /*сұрақ*/

да /*жауап*/

3.?_unatady (aldanazar, marjan) /*сұрақ*/

Жоқ /*мұндай факт берілгендер қорында жоқ*/

4/?_ baga (X,5) /*бағасын алғандар кімдер*/

X-erjan

X=marjan

Ескертулер.

1) егер сұраққа берілетін сәйкес жауаптар көп болса, бірінші жауап басылып шығарылған соң, пернетақтадан нүктелі үтір(;) пернесін басу керек. Ол – жүйенің сәйкес мәндерді одан әрі іздеу белгісі.

2) Егер «;» символы енгізілмесе, жүйенің кейбір нұсқалары «Басқа шешім керек пе (иә/жоқ)?» сұрағын шығаруы мүмкін. Егер оған иә деп жауап берілсе, пролог – жүйе соңғы берілген жауапты есінде сақтап, сол жерде әрі қарай үйлесімді басқа жауаптарды іздей бастайды.Егер басқа жауап алынбаса, «Басқа жауап жоқ» деп хабар береді.

3) Бірінші мысалда берілген сұрақтың орындалуы үшін жүйеде фактілер осы мысалдағы сияқты фактілер түрінде сақталуы тиіс. Түрбо Пролог сұрақ сұхбаттық терезеде беріледі. Мысалы Цель:ana (X) команданың берілу тәсілі төменде және 3.7. – тақырыпта баяндалады.

4- сұрақты беру алдыңда Түрбо Прологта программаны мынадай түрде дайындап, компиляциялау және сақтау керек.

Predicates

Baga (string, integer)

Clauses

Baga (erjan,5)

Baga (axmet,4)

Baga (marjan,5)

Мұндағы. Predicates (предикаттар), Clauses (сөйлемдер-ұйғарымдар) Түрбо прологтың кілттік сөздері. Predicates бөлімінде әр предикат атауы аргументтерінің типтері көрсетіліп сипатталады.

Clauses бөлімінде фактілер мен ережелер енгізіледі. Программаны компиляциялау, сақтау және іске қосу тәсілдері 3.7 – тақырыпта көрсетілген. 4- мысалды орындау алдыңда берілгендер қорын экранға шығарып, іске қосу командасын беру керек. Одан әрі Түрбо прологта көрінген сұхбаттық терезенің Мақсат (Цель) жазуының қатарына берілетін команда:

Цель: баға (Х,5)

4) Түрбо Прологта типті алдымен бөлімінің алдыңда (ти, облыс, домен) бөлімінде сипаттауда мүмкін.Мысалы, жоғары программаның басын мынадай түрде жазуға болады:

Domains

S= string

N=integer

Predicates (S,N clauses)

5) Түрбо Прологта пайдаланылатын негізгі стаңдартты облыс (тип) түрлері: integer, real, char, string, symbol.

Integer [-32768;33767] аралығынан алынатын бүтін сандар;

Real [e-307;e+308] аралығынан алынатын нақты сандар;

Char – символдар. Олар екі дәйекшенің арасында жазылады.

String – екі тырнақшаның арасына жазылып көрсетілетін жолдық шамалар, оларды тырнақшаларға алмай жазуға болады.

symbol String – типті сияқты символдар тізбегі. Оларды тырнақшаларға алмай жазуға болады, ал тізбек аралығында бос орындар болса не ол кіші әріптен бастап жазылса, тырнақшаларға алып жазу керек, мысалы:

Бір кісі “abc”, “marjan” /*string*/

Abc, marjan, бір кісі axmet /*symbol*/

6) Түрбо Прологта Мақсат (Цель) бөлімінің программа ішіне енгізуге де болады. Бұл жағдайда ол программаның бөлімінің соңына не бөліміне енгізіледі.

 

Тәжірибелік жұмыс №9. Тізімдер

Мақсаты: Прологтағы мәліметтер базасын және сұраныстарды мысалдармен қарастыру.

 

1-мысал. Қарапайым орысша – қазақша сөздігін дайындау керек. Фактілер aud (<орысша сөз>, <қазақша аудармасы>) түрінде берілсін: Түрбо Прологта берілгендер қорын мынадай түрде дайындауға болады.

Predicates

Aud (string, string)

Clouses

Aud(голова, бас)

Aud(нос, мұрын)

Aud(рот, ауыз)

Aud(тело, дене)

Aud(человек, адам)

Aud

…………………

Цель: Aud (голова,X)

X=бас

2-мысал. Адамдардың қарапайым телефон анықтамалығын құрып, сұрақ бойынша жауап шығару керек.

Оның мақсаты predicates бөліміне енгізген түрде құрылуы:

Predicates

Tel(string, string)

Goal

Write (“фамилия”-?),

Readln(Fam),

Tel(fam, telef_Nom)

Write (“телефон нөмірі “ telef_Nom”), n1.

Clauses

Tel(“Үмбетов. О”, “52-21-60”)

Tel(“Сүлтанов.М”, “55-32-14”)

Tel(“Ержан.К”, “52-21-36”).

Программа іске қосылған кезде бірден фамилия сұралады:

Fam-? Үмбетов.О

Телефон нөмірі=52-21-60

Программаға енгізілген n1-келесі жазуды жаңа жолдан бастау (курсорды жаңа жолдың басына орналастыру) стаңдартты операторы, Write-стаңдартты предикат (оператор).

Прологта пайдаланылатын айнымалылар әдеттегі программалау тілдеріндегі айнымалылардай емес. Олар үшін жадтан арнайы орын бөлінбейді. Олардың мәндері - берілгендер қорында сақталған нысандар атаулары.

Коньюнкциялы сұрақтың жазылуы да коньюнкциялы фактінің жазылуы сияқты: әр мақсат үтір арқылы бөлініп жазылады. Мысалы, сәйкес білім қоры дайындалып, Нұрғали да, Баян да ұнататын нысан сұралса, оны жазылуы:

?- unatedy (nurgali,X), unatedy (baian,X).

Мұнда Пролог берілгендер қорынан алдымен сұраққа енгізілген бірінші мақсатқа сәйкес фактіні іздейді. Егер берілгендер қорында бірінші болып «ұнатады (Нұрғали,ыстық)» фактісі кездессе, жүйе Х айнымалысына «ыстық» мәнін меншіктеп (Х=ыстық), оның мәнін басқа мақсаттарда кездесетін осындай айнымалылардың орнына қойып шығады. Одан әрі берілгендер қорынан «ұнатады (баян, ыстық)» мақсатын іздейді. Ол табылса, оған белгі қойып, екі мақсатты да қанағаттандыратын жауапты басып шығарады. Әйтпесе, Пролог іздеуді берілгендер қорыны басынан бастап қайта жүргізеді. Мұндай процесті қайту процесі не қайту механизмі деп атайды.

Сұрақта белгісіз аргументтер саны бірнеше болуы да мүмкін.

3-мысал. 7-мысал. «Жәмиляның анасы мен оның анасы кімдер-?» сұрағы берілсін, берілетін сұрақ пен шығатын жауаптың түрі:

?-ana(X,Y), ana(Y,jamilia).

X=xadisha Y=baian

Мұнда берілген сұрақ берілгендер қорымен үйлесімді болуы үшін қор мынадай түрде құрылған болуы тиіс.

ana (xadisha baian)

ana (gulnar,nurlan)

ana (baian jamilia)

………………….. т.с.с

Түрбо Прологта программаны сақтап, іске қосу командасын берген кезде экранның оң жағында көрінген Dialog терезесінде берілетін команда:

Мақсат: ana(X,Y), ana(Y,jamilia)

Мұнда да, Пролог жауапты алдымен бірінші мақсатқа сәйкес іздейді, т.с.с.

Сонымен, сұрақ берілсе, Пролог оның мазмұнын берілгендер қорында сақталуы фактілермен салыстырады да, мазмұнының дұрыстығын дәлелдеуге болатынын не болмайтынын анықтайды және сәйкес жауап шығарады. Яғни, Прологта сұраққа жауап беру мақсатты ұйғарымдарды дәлелдеумен бірдей. Дәлелдеу- мақсаттың берілгендер қорымен үйлесімділігін анықтау деген ұғым. Егер сұраққа енгізілген мақсаттар бірнеше болса, Пролог алдымен бірінші мақсатты дәлелдеуге кіріседі, ол дәлелденсе, оның оң жағына енгізілген мақсаттың үйлесімділігін тексеруге кіріседі, т.с.с. Үйлесімділік болмаса, қайту процесі орындалады.

Прологта бірден бірнеше фактінің бар не жоғын тексеру сұрағы құрылымды сұрақ делінеді. Мысалы, мынадай берілгендер және т.с.с берілгендер қоры дайындалған болсын:

ushady(ushakh).

ushady(tyrna).

Khanaty_bar(tyrna).

Khanaty_bar(karlygash).

..................................

Қорға сәйкес мынадай құрылымды сұрақ беруге болады:

?- ushady(Х), кhanaty_bar(Х).

Х= tyrna

Берілгендер қорына енгізілген қанаты бар құс екеу, екіншісі қарлығаш. Бірақ, жүйе х=karlygash жауабын шығармайды, себебі «ushady» предикаты бар мұндай факт берілгендер қорына енгізілмеген.

Тәжірибелік жұмыс №10. Графикалық интерфейсі бар қарапайым жобаларды жасау.

Мақсаты:Логикалық есептерді прологтағы мәліметтер базасы ретінде шешу.

Көптеген логикалық есептер бірнеше ақырлы жиындарды (элементтерінің саны бірдей болатын) қарастырумен байланысты. Олардың арасында өзара –бірмәнді сәйкестік орнатылады. Пролог тілінде осы жиындарды мәліметтер базасы ретінде қарастыруға болады. Обьектілер арасындағы тәуелсіздіктер ережелер көмегімен қойылады.

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

Дәстүрлі тәсілде есеп кесте сызу арқылы шешіледі.

Фамилия Шаш түсі
сары ақ қара
Ақбасов + - -
Қарабасов - + -
Сарыбасов - - +

 

 

Кестеде сәйкес әр фамилия мен түстің қиылысқан жеріне «-» белгісін қоямыз. Қарабасовтың шашы қара болмағандықтан, оныкі тек ақ болады. Сәйкесінше Қарабасов пен ақ шаштың қиылысқан жеріне «+» белгісі қойылады. Қалған фамилиялар мен шаш түстері келмегендіктен оларға да «+» қойылады.

Пролог тілінде программа құрылымы келесі түрде болады: алдымен берілгендер саналады – фамилиялар мен шаш түстері. Содан кейін осы екі жиынды байланыстыратын ережелер жазылады.

/* Фамилиялар деректер базасы */

Фамилия (Ақбасов)

Фамилия (Қарабасов)

Фамилия (Сарыбасов)

/* Шаш түстері деректер базасы */

Шаш түсі (сары)

Шаш түсі (қара)

Шаш түсі (ақ)

 

/* Деректер базалары арасында өзара-бірмәнді сәйкестік орнатамыз, Х – фамилия Д.Б элемент, У – шаш түсі Д.Б. элементі */

/* Ақбасов қара да ақ та емес */

Сәйкестік (Х,У): - фамилия (Х), шаш түсі (У)=Ақбасов,

емес (у =қара), емес (у)

/* Ақбасов пен Қарабасовтың шаштарының түсі сәйкес келмейді*/

Сәйкестік (х,у):- фамилия (х), шаш – түсі (у), х:= Қарабасов,

Емес (у =қара), емес (сәйкестік(Ақбасов(у))).

/* Үшеуінің түстері әртүрлі*/

сәйкестік (х,у):=фамилия(х), шаш түсі (у), х= Сарыбасов.

емес (у= сәйкестік (Қарабасов(у)).

Алынған деректер базасына әртүрлі сұраныстармен қатынасуға болады. Мысалы:

? – сәйкестік (А,В). Бұл сұраққа әр адамның фамилия мен шаш түсін қамтитын жауаптардың барлық нұсқалары алынады.

Логикалық есеп күрделенеді, егерде онда екі емес одан да көп жиындар болса. Сонымен қатар сәйкестілік өзара бірмәндә болмаса да есеп күрделенеді.

Тапсырма 1. Серік пен Беріктің фамилиялары Балғабаев және Орақбаев. Егер Серік Балғабаев пен әр түрлі үйде тұрса, олардың әрқайсысының фамилиясы қалай?

Тапсырма 2. Жүгіруден жарыста Әсет,Алмас, Қайрат үш алдыңғы орынды жеңіп алды. Егер Әсет екінші емес және үшінші емес, ал Қайрат үшінші емес орын алса, әрқайсысы нешінші орын алғанын анықтаңыз.

Тапсырма 3. Үш құрбы ақ, жасыл және көк көйлектер және туфлилермен көшеге шықты.Тек Айгүлдің көйлегі мен туфлиінің түсі сәйкес келетіні белгілі. Бақыттың туфлиі де, көйлегі де ақ емес. Назым жасыл туфлиде болды. Әр құрбының көйлегі және туфлилерінің түстерін анықтаңыз.

Тапсырма 4. Бөтелкеде, стаканда, құмырада және банкада сүт, лимонад, квас және су бар. Сүт пен судың бөтелкеде емес екені белгілі, лимонады бар ыдыс құмыра мен квас құйылған ыдыстың ортасында тұр.Банкіде – лимонад та емес, су да емес. Стакан банка мен сүт құйылған ыдыстың ортасында тұр.Осы сұйықтықтар ыдыстарға қалай құйылған?

Тапсырма 5. Ильияста қызыл машина, Парасатта – қара емес, көк емес, көгілдір емес, Мейрамбекте – қара және көк, Айдарда жоғарыда көрсетілген түспен машиналардың кез -келгені бар, Берікте ақ және көк түсті. Егер барлық балалар әр түсті машиналарда болса, әрқайсысы қандай машина жүргізді.

Тапсырма 6. Шешем, әкем және мен орындықта отырдық. Біз орындықта қандай ретпен отырдық, егер келесілер белгілі болса:

- Мен әкемнің сол жағында отырдым, ал шешем менің сол жағымда.

- Әкем менің сол жағымда және шешемнің оң жағында отырды.

- Шешем менің оң жағында, ал әкем шешемнің оң жағында отырды.

Тапсырма 7. Гүлнұр мен Лаураның бойлары бірдей. Лаураның бойы Озатгүлден биік, ал Талшын Гүлнұрдан биік.Кім биік: Талшын ба, әлде Озатгүл ма?

Тапсырма 8. Киноға билет алу үшін Жұлдыз, Мерхат, Бауыржан, Самат және Орынбек тұр.Келесілер белгілі:

- Жұлдыз билетті Мерхаттан бұрын, бірақ Орынбектен кейін сатып алды.

- Бауыржан мен Орынбек қатар тұрмады.

- Самат Орынбектің де, Жұлдыздың да, Бауыржанның да қасында емес.

Кім кімнен кейін тұр?

 

Тәжірибелік жұмыс №11. Батырмалар мен енгізу өрістерін қолданып жобада жаңа терезелерді жасау.

Мақсаты:TurboProlog ортасында программаларды құру кезінде қарапайым сарапшы жүйелерді құру принциптерін қалыптастыру.







Дата добавления: 2015-10-19; просмотров: 1151. Нарушение авторских прав; Мы поможем в написании вашей работы!



Картограммы и картодиаграммы Картограммы и картодиаграммы применяются для изображения географической характеристики изучаемых явлений...

Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Виды и жанры театрализованных представлений   Проживание бронируется и оплачивается слушателями самостоятельно...

Что происходит при встрече с близнецовым пламенем   Если встреча с родственной душой может произойти достаточно спокойно – то встреча с близнецовым пламенем всегда подобна вспышке...

Реостаты и резисторы силовой цепи. Реостаты и резисторы силовой цепи. Резисторы и реостаты предназначены для ограничения тока в электрических цепях. В зависимости от назначения различают пусковые...

Дезинфекция предметов ухода, инструментов однократного и многократного использования   Дезинфекция изделий медицинского назначения проводится с целью уничтожения патогенных и условно-патогенных микроорганизмов - вирусов (в т...

Машины и механизмы для нарезки овощей В зависимости от назначения овощерезательные машины подразделяются на две группы: машины для нарезки сырых и вареных овощей...

Классификация и основные элементы конструкций теплового оборудования Многообразие способов тепловой обработки продуктов предопределяет широкую номенклатуру тепловых аппаратов...

Studopedia.info - Студопедия - 2014-2024 год . (0.012 сек.) русская версия | украинская версия