Алгоритмдер жєне деректер структурасы


-8 тақырып. Білімнің логикалық моделі



бет23/34
Дата02.01.2022
өлшемі0.74 Mb.
#453425
1   ...   19   20   21   22   23   24   25   26   ...   34
ПРОЛОГ мысалдары

7-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) Турбо Прологта Мақсат (Цель) бөлімінің программа ішіне енгізуге де болады. Бұл жағдайда ол программаның бөлімінің соңына не бөліміне енгізіледі.





Достарыңызбен бөлісу:
1   ...   19   20   21   22   23   24   25   26   ...   34




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет