Логикалық программалау


Тақырыбы. Логикалық программалау

МАЗМҰНЫ

КІРІСПЕ . . . 3

1-ТАРАУ. ЛОГИКАЛЫҚ ПРОГРАММАЛАУДЫҢ ТЕОРИЯЛЫҚ

НЕГІЗДЕРІ.

1. 1 Логикалық программалау. Prolog тілі . . . 4

1. 2 Prolog тілінің жетілдірілген нұсқалары . . . 5

1. 3 Prolog тілін басқа программалау тілдерімен салыстыру . . . 6

1. 4 Prolog тілінде құрылған логикалық программаның орындалу

тәртібі . . . 7

1. 5 Тізімдер. Prolog программасында тізімдерді қолдану . . . 10

1. 6 Prolog программасында берілгендер қорымен жұмыс істеу . . . 12

2-ТАРАУ. ЛОГИКАЛЫҚ ПРОГРАММАЛАУ ТІЛІ. PROLOG ТІЛІН ҚОЛДАНУ МЫСАЛДАРЫ.

2. 1 Prolog тілінде математикалық есептерді есептеу . . . 16

2. 2 Prolog тілінде физикалық есептерді есептеу . . . 17

2. 3 Басқа мысалдарды қарастыру . . . 18

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

ПАЙДАЛАНЫЛҒАН ӘДЕБИЕТТЕР ТІЗІМІ . . . 22

КІРІСПЕ

Логикалық программалау - информатика курсының программалау саласының негізгі бөлімі. Бұл пәннің негізгі мәселерінің бірі - адамның ойлауын формальдандыру, информатикалық технологияны интеллектендіру. Интелектуальды іс-әрекеттерді орындауға арналған ыңғайлы программа құру үшін математикалық логика заңдары мен принциптеріне негізделіп дайындалған логикалық программалау тілі қажет. Бұл қажеттілік біздің курстық жұмыстың тақырыбын «Логикалық программалау» деп алуымызға негіз болды.

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

Курстық жұмыстың мақсатына жету үшін келесі міндеттерді шешу қарастырылды:

  • Дискретті математика пәнін игеру.
  • Математикалық логика пәнінің мәселелерімен танысу.
  • Программалау тілдерін игеру.
  • Prolog тілінің мүмкіндіктерін зерттеу.

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

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

1-тарауда курстық жұмыс тақырыбының теориялық негіздері қарастырылған. Атап айтқанда, логикалық программалау, Prolog тілі, предикат, факт, тізімдер, тізімдердің Prolog тілінде қолданылуы, берілген қоры және т. б.

2-тарауда Prolog тілінің мүмкіндіктерін есептің қойылымы бойынша прграммалау тәсілдері қарастырылған.

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

ЛОГИКАЛЫҚ ПРОГРАММАЛАУ. PROLOG ТІЛІ

Интелектуальды іс-әрекеттерді орындауға арналған ыңғайлы программа құру үшін математикалық логика заңдары мен принциптеріне негізделіп дайындалған логикалық программалау тілі қажет. Мұндай программалау тілдерінің бірі - Prolog.

Prolog тілі:

  • сараптаушы жүйелерді дайындау;
  • мәтіндерді бір тілден екінші тілге аудару;
  • логикалық түрде теоремаларды дәлелдеу және т. б. салаларда жиі қолданылады.

Prolog-тың ықшамдылығы - ол берілген сұрақ бойынша тікелей жауап алатындай етіп дайындалған. Жүйе сұраққа жауап дайындау үшін алдымен көптеген процедураларды өзінше өңдеп шығады. Яғни, Prolog-та программалау тәсілі алгоритмін дайындау арқылы құрылатын әдеттегі прцедуралық программа құрудай емес. Мұндай қарапайым программа бірнеше фактілер мен ережелерден тұрады. [1]

Prolog - сараптаушы жүйені құруда, 5-нші буын элементтерін пайдаланатын машиналық тіл.

Prolog тілі - 2, 2 жыл бұрын Аристотель уақытында дами бастаған логикадан бастау алған тіл.

Логикалық программалау мен Prolog тілінің өзара байланысы бізге лямбда есептеу мен Лисп тілінің өзара байланысын еске салады. Бұл екі тіл де абстракты есептеу моделін жүзеге асыру үшін қолданылады. Логикалық тілдер математикалық тілдердің құралдарын қолданады. [2]

Prolog есептеу моделінің көмегімен орындалатын логикалық программа Prolog тілінде программалау деп аталады.

Prolog тілі тізбектік машинадағы логикалық программалаудың есептеу моделін жүзеге асыруын қамтамасыз етеді. Бұл эффективті түрде абстрактілі интерпретатордың (түсіндіргіштің) қасиетінің үйлесімдігін орындауда ең жақсысы болып табылады.

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

Негізінде, таңдаудың әртүрлі тәсілін қолданатын түрлі программалау тілдері бар. Жалпы айтқанда, олар екі класқа бөлінеді. Prolog және оның нұсқалары тізбектеп орындалуда негізделген. Ал басқа тілдер, мысалы ретінде Parlog, параллельді Prolog және GHC параллельді орындауында негізделген. Тізбектеп орындалу мен параллельді орындалу атауланбаған тәсіл арқылы жүзеге асырылуымен өзгешеленеді.

Prolog-та топтамалы кестелік тәсіл қолданылады. [3]

PROLOG ТІЛІНІҢ ЖЕТІЛДІРІЛГЕН НҰСҚАЛАРЫ

Логикалық программалаудың дамуына үлес қосқан Р. Ковальскийдің «Логика предикатов как язык програмирования» туындысы болып табылады.

1973 жылы Алан Комеройдың басшылығымен Марсельдік университеттің зерттеушілер тобы Джон Робинсонның зерттеулеріне сүйеніп, Фортран тілінде жүзеге асқан программа құрды. Ол программа Prolog (Programming in Logic) деп аталды.

Ал 1976 жылы Ковальский М. Ван Эмденовпен бірігіп, процедуралық және декларативтік түрлерді ұсынды. Бірақ қанша теориялар енгізіліп отырғанмен, олар эффективті емес және орындалуында кемшіліктері болды.

1977 жылы Д. Уоррен мен Ф. Перейройдың Эдинбург университетінде Prolog тілінде ЭВМ DEC-10 үшін ашқан жаңалығы барлық кемшіліктерді жойды. Бүкіл интерпретатор Prolog тілінде жазылды және басқа да программалау тілдеріне бастау болды. [4]

Ал 1980 жылы К. Кларк және Ф. Маккейб екеуі бірігіп, Ұлыбританияда персоналды ЭВМ үшін Prolog-тың бір түрін құрды.

1981 жылдың қазан айында Prolog тіліне қатты соққы тиді, себебі Жапонияда ЭВМ-нің бесінші буыны пайда болды. Көптеген мамандарды ол буында логикалық программалауды негізге алғандығы таң қалдырды. Бірақ сол уақытта Prolog тілінің көптеген түрлері пайда бола бастады. Мысалы, CProlog, Quintus Prolog, Silogic Knowledge Workbench, Prolog-2, Arity Prolog, Prolog-86, Turbo Prolog және басқалар.

Prolog тілінің ең кең таралғаны - Turbo Prolog . Оның ең алғашқы нұсқасы 1986 жылы даттық компания Prolog Development Center (PDC) мен Borland International фирмасының бірлестігімен құрылған.

Ал 1988 жылы одан сапасы жоғары Turbo Prolog 2. 0 нұсқасы пайда болды. Бұл нұсқа - программаны құрудағы интегралдану ортасының жетілдірілген түрі. Borland International фирмасы бұл нұсқаны 1990 жылға дейін ұсынды.

1992 жылдың маусым айында PDC Prolog 3. 31 нұсқасы пайда болды. Бұл нұсқа MS DOS, OS/2, UNIX, XENIX, PharLap, DOS Extender, және MS Windows орталарында қызмет етті. PDC Prolog 3. 31 нұсқасы басқа да дәстүрлі тілдермен үйлесті. [5, 6, 7]

PDC Prolog 3. 31 -дің сапасы жоғары болғанмен, жұмыс істеу күрделірек болды. Сондықтан да, 1996 жылдың 7 қаңтар күні Prolog Development Center Visual Prolog 4. 0 нұсқасын жасап шықты.

Visual Prolog «визуальды программалау» сөзінен шықты. Мұнда программалардың есептелуі және сыртқы түрі дәстүрлі программалаусыз алгоритмдік тілде графикалық жобалау тәсілімен анықталады. Нәтижесінде логикасымен, оңайлығымен және тиімділігімен ерекше программалау жүйесін алды.

Visual Prolog графикалық қолданбалы интерфейсті қажет ететін көптеген операциялық жүйелермен, соның ішінде MS DOS, PharLap, DOS Extender, Windows-тың барлық жүйелерімен, басқа да жүйелермен сипатталады.

Интерфейстің таңдалынғанына байланысты орындаушыға көптеген генераторларға, ресурсты редакторларға және қосымша VPI-предикаттарға, ережелерге алады. Ресурсты редакторлар құру үшін, терезелерді, диалогтарды, мәзірлерді, құрал-сайман қатарларды, көмекші қатарларды, қатарлы кестелерді, жарлықтарды өңдеумен айналысады. Генераторлық код кейбір құрылымдар негізінде қажетті Prolog-код құрады. Нәтижесінде орындалу мен байланысуды өңдейтін бірлік код пайда болады.

Prolog Development Center-дің өнімдері, Visual Prolog-ты қоса, орындайтын кодтарды (EXE және DLL) тудыратын жүйелер болып табылады. Бұл Prolog-тың тиімділігінің жоғарғы деңгейде екендігін дәлелдейді.

PROLOG ТІЛІН БАСҚА ПРОГРАММАЛАУ ТІЛДЕРІМЕН САЛЫСТЫРУ

Программалау тілі басқару механизмімен және берілгендерді өңдеумен сипатталады.

Prolog тілінде программаны басқарудағы есептің ойдағыдай орындалу тәсілі басқада тілдерге ұқсас. Мысалы, дененің мақсатының тәртібі оператор тізбегіне ұқсас.

Procedure A

Call B

Call B

.

.

.

Call B

End.

Prolog тіліндегі рекурсивті шақыру мақсатының амалдар тізбегі мен оның жүзеге асуы қарапайым рекурсивті тілдерге ұқсас. Айырмашылығы қайтармалы жүзеге асуында. [8, 9]

Қарапайым тілде есептеудің жалғасуына мүмкіндік болмаса, онда есептеуде қателік пайда болады. Ал Prolog тілінде есептеу ең соңғы таңдауға қайтып келеді және есептеуді шешу үшін басқа тәсілмен орындалу жалғасады.

Логикалық программа операция жасайтын берілгендердің құрылымы қарапайым тілдегі программалаудың құрылымына ұқсас. Prolog тілі берілгендер құрылымын ұйымдастыру жүйесінің ең тиімдісін қолданады.

Лисп тілі секілді Prolog тілі де берілгендер хабарландырмасы жок, типсіз тіл болып табылады. [10]

Prolog тіліндегі қолданылатын берілгендер құрылымдарының басқа ерекшелігі оның логикалық айнымалыларымен байланысты болуы. Логикалық айнымалылар объектілерге қатысты болады. Егер айнымалыға белгілі бір объект орнықтырылса, онда ол ешқашан басқа объектіге жіберіле алмайды. Демек, логикалық программалау айнымалыларды деструиктивті меншіктеу механизмін, амалын қарастырмайды.

Логикалық программалауда берілгендерді өңдеу толығымен қалыптастыру алгоритмінде қорытындыланған.

Дәстүрлі программалау тілдерінде әртүрлі деңгейдегі қиындықтар, қателіктерді өңдеу тәсілдері және ерекше жағдайлар бар. Ал Prolog тілінде тілді сипаттайтын, қателіктерді өңдейтін механизмі және ерекше жағдайлары жоқ. [11]

PROLOG ТІЛІНДЕ ҚҰРЫЛҒАН ЛОГИКАЛЫҚ ПРОГРАММАНЫҢ ОРЫНДАЛУ ТӘРТІБІ

Prolog тілінде программалау келесі кезеңдерден тұрады:

  • фактілер арасындағы қатыстар мен нысандарды хабарлау;
  • нысандар мен қатынастар арасындағы өзара байланысқан шарттарды анықтау;
  • нысандар мен қатынастар арасындағы сұрақты тұжырымдау.

Prolog тілінде орындалатын негізгі амал бұл орнына қою операциясы. Орнына қою операциясы кейде ойдағыдай табысты орындалуы мүмкін. Ал кейде сәтсіз аяқталады.

Орнына қою былай анықталады:

  • тұрақты тек өзіне тең тұрақтының орнына қойылады;
  • теңескен (бірегей) құрылымдар бір-бірінің орнына қойылады;
  • айнымалы тұрақтының немесе алдын ала байланысқан айнымалының орнына қойылады (және сәйкес келетін мәнмен байланысады) ;
  • екі бос айнымалы бір-бірінің орнына қойыла алады (және байланысады) .

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

алмасады. Бұл жағдайда Х-айнымалысы «асан» атомының мәні ретінде

қабылданады. [1]

Prolog тілінде программалаудың ережелері мен фактілері - бір пәндік облыстағы нысандар арасындағы байланыс пен қатынастарды сипаттау болып табылады. Мысалы, бір шешілуі тиіс логикалық есептің жазылу шарты және т. б. Сипатталған қатынастар мен байланыстар статикалық түрде қарастырылады. Олар декларативті деп аталады. Фактілерді бақылау

реті ережелер мен ережелердің ішкі мақсаттары программаның декларативті мағынасына әсер етпейді, сонымен қатар программаны орнына қоюдың тізбегі ретінде қарастыруға болады. Программаның процедуралық мағынасы Prolog тілінде жазылған программаларда міндетті түрде есептелуі керек. Фактіні орындалуы үшін басқа ешнәрсенің қажеті жоқ, толығымен анықталған процедура ретінде қарауға болады.

А: - В1, В2, . . . , Вn ережесін орындалуы үшін В1, В2, . . . , Вn анықтау керек болатын А процедурасын анықтау ретінде қарастыруға болады. В1, В2, . . . , Вn процедуралары солдан оңға қарай анықталған ретте орындалуы керек. Кезекті процедураның орындалуы сәтті аяқталмаса, онда келесі процедураға ауысады. Егер белгілі бір себептермен процедураның орындалуы ойдағыдай болмаса, онда осы процедураны сипаттаудың келесі нұсқасына ауысады, Prolog тілінде мұндай нұсқада іздеу реті - жоғарыдан төменге қарай берілген.

Логикалық тұжырымның орындалуында айнымалының нақтылануының қажеттілігіне мысал қарастырайық:

ұнатады (асан, ән) .

ұнатады (үсен, спорт) .

ұнатады (А, кітап) : - оқырман (А), әуесқой (А) .

ұнатады (үсен, кітап) .

ұнатады (үсен, кино) .

оқырман (үсен) .

әуесқой (асан) .

? - ұнатады (Х, ән), ұнатады (Х, кітап) .

Бұл программаның екі жақты сұранысы мынадай мақсатты бұтақ түрінде қойылады:

ұнатады (Х, ән) ұнатады (Х, кітап)

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

ұнатады (Х, ән) ұнатады (Х, кітап)

ұнатады (асан, ән)

Х айнымалысы «асан» мәнімен нақтыланады.

Сұраныс екінші ішкі мақсатпен келісімге келеді, мына шартпен Х=асан. Программаның бірінші және екінші сөйлемімен ішкі мақсатпен сәйкес келеді. Үшінші сөйлемде:

ұнатады (А, кітап) : - оқырман (А), әуесқой (А) .

Аргумент А тақырыбы айнымалы болғандықтан, ол Х-пен сәйкес келуі мүмкін. Яғни А=асан, екінші аргументте сйкес келеді. Енді ереже денесі келісімділік үшін жаңа мақсаттар жиынын өрнектейді. Жаңа мақсатты бұтақты аламыз:

ұнатады (Х, ән) ұнатады (Х, кітап)

ұнатады (асан, ән) ұнатады (А, кітап)

оқырман (А) әуесқой (А)

Бұдан кейін Prolog тілі жаңа ішкі мақсатқа сәйкес келетін фактілерді іздей бастайды. Соңғы нәтижелеуші бұтақ:

ұнатады (Х, ән) ұнатады (Х, кітап)

ұнатады (асан, ән) ұнатады (А, кітап)

оқырман (А) әуесқой (А)

оқырман (асан) әуесқой (асан)

ТІЗІМДЕР. PROLOG ПРОГРАММАСЫНДА ТІЗІМДЕРДІ ҚОЛДАНУ

Тізім - өңдеу процесінде құрамы мен саны өзгеретін, информацияларды рекурсивті өңдеуде пайдалануға ыңғайлы, көп қолданылатын берілгендер құрылымы.

Тізім - әртүрлі ұзындыққа болатын реттелген элементтер тізбегі.

Тізім элементтері кез келген терм болуы мүмкін. Терм - түрлі қатыстарды, фактілерді, ережелерді сақтап жазатын түрлі символдар тізбегі. Оның үш түрі бар:

  1. тұрақты
  2. айнымалы
  3. басқа да тізімдерден тұратын құрылым.

Тізімдер білім қорын және деректер қорын құруда, сараптаушы жүйелерде, қалалар картасында, математикалық объектілерде (графтар, формула, функция) көп қолданылады. Тізім құрылымы тізім басы және тізім соңы (құйрығы) деп аталатын екі компаненттен тұрады. Тізім соңы да өзінше бөлек тізім болуы мүмкін. Тізімнің аяқталғанын білдіру үшін мәні бос тізім болатын екі ашу және жабу квадрат жақшалары қолданылады. Жалпы, элементтер енгізілмегенмен, бос тізім [ ] белгісі арқылы жазылады. Бос емес тізімді екі бөліктен тұратын етіп қарастырайық:

  1. бірінші элемент - тізім басы;
  2. тізімнің қалған бөлігі - тізімнің соңы.

Тізім басы элементі бөлінбейтін мән болып табылады. Құйрығы - бастапқы тізімнің барлық элементтерінен тұратын тізім. Құйрық тағы да ішкі басы мен құйрыққа бөлінуі мүмкін.

Сәйкес операцияларды орындауда процесс тізім бос болғанға дейін орындала береді. Бұдан тізімнің берілгендердің рекурсивті құрылымы екенін қорытындылауға болады.

Prolog тілінде тізімдерді қолдану үш бөлімде қарастырылады:

  • тізімдер домені - domains (берілгендер типін анықтау) бөлімінде;
  • тізімдермен жұмыс предикаты - predicates (предикаттарды анықтау) бөлімінде;
  • ал тізімнің өзі - clauses (фактілер мен шарттарды анықтау) немесе goal бөлімінде.

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

Предикат - қатыстар мен олардың аргументтерінен тұратын логикалық функция. Predicates бөлімінде предикаттар анықталады. әрбір предикат өзінің атымен және аргументтерімен (параметрімен) анықталады. Егер берілгендер типтерінің кейбір аргументтері белгілі болса, онда олар алдын-ала domains бөліміне жазылып қойылады. Predicates бөлімінің алдына динамикалық берілгендер қорының предикаттарын анықтайтын қосымша бөлімді қосуымызға болады. Бұл бөлім «data base» деп аталады.

Программаға глобальды домендер мен предикаттарды анықтайтын екі бөлімді қосуға болады:

global domains

global predicates

Clauses бөлімінде фактілер (нысандар жөніндегі мәліметтер) мен шарттар анықталады.

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

Шарт - шарт тақырыбы мен шарт денесінен тұрады. Тақырып - предикаттан, дене - термдерден тұрады. Олар өзара or немесе and сөздері арқылы байланысады. Дене мен тақырып арасында if сөзі тұрады. әрбір шарт нүктемен бітуі тиіс. Айнымалылар аты бас әріптен басталуы және тек әріптерден, цифрлардан және «_» белгісінен тұрады. Аттың максимальды ұзындығы - 250 белгі. Анонимді (жасырын) айнымалылар ерекше роль атқарады. Оларжалғыз «_» белгісі арқылы жазылады.

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

Clauses бөлімінің алдына немесе соңына goal бөлімі орналасуы мүмкін. Бұл бөлімде мақсат анықталады. Мақсат бірнеше ішкі мақсаттардан тұруы мүмкін. Егер программа пакеттік режимде жұмыс істеу үшін құрылған болса, goal бөлімін қосуға болмайды.

Құрамында тізімі бар қарапайым программаны қарастырайық:

domains

баспа_ мезгіл = мезгіл

мезгіл = string

predicates

жыл (баспа_ мезгіл)

clauses

жыл ([«қыс», «көктем», «жаз», «күз»] )

Бұл программада жыл мезгілдері қарастырылған. Мезгілдер - символдық типтегі берілгендерге жатады.

Сұраныстарды:

  1. қандай жыл мезгілдері бар? жыл [A11]
  2. екінші жыл мезгілі қандай? жыл ([_, X, _, ] )
  3. жылдың бірінші жартысындағы жыл мезгілдері жыл ([_X] )
  4. жыл 9[XY] ) сұранысының нәтижесі қалай болады?

Тізім басы тізім құйрығынан тік сызықша арқылы бөлініп жазылады. Мысалы, [XY] .

Екі тізімді қарастырайық:

list 1[[студент, Y] Z]

list 2 [[X, ахмет] [оқу_озаты] ]

Олар үйлесімді және айнымалыларға меншіктелетін термдер: Х = студент, Y = ахмет, Z = оқу_озаты

Түсінікті болу мақсатында, әдетте, тізім предикаты үшін list предикаты пайдаланады.

PROLOG ПРОГРАММАСЫНДА БЕРІЛГЕНДЕР ҚОРЫМЕН ЖҰМЫС ІСТЕУ

Prolog тілінде берілгендер қорымен жұмыс істеудің әртүрлі әдістері бар:

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

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

Қатыстарды фактілер түрінде қарастыру.

Кез-келген пәндік облыс үлгісі объектілер мен олар арасындағы байланыс жиыны ретінде қарастырылады. Берілгендер қорын құрудың реляциялық әдісін қолдану объектілерді қатыс ретінде пәндік облыстың және атрибуттың осы қатыстың кілттік атрибуттарына функциональды тәуелділігін орнатумен толықтыру жеткілікті. Жоғарыдағы мысалды мынадай қатыс түрінде қарастырайық

Жұмыс (қызметкер_ аты, бөлім, қызметі, айлық)

Бұл жерде кілттік атрибут ретінде «қызметкер_ аты» атрибутын алсақ болады. Мұнда қатыс пәндік облыстың объектісінің анықталған элементіне

сәйкес келетін жазбалар жиыны және информациялық элемент ретінде қарастырылып отыр.

Берілгендер қорын Prolog тілінде қарастырудың қарапайым әдісі әрбір информациялық элементтің жазбасын факт түрінде қарастыру болып табылады. Мысалы,

jumus1 («Асанов», 101, »оператор», 2) .

jumus1 («Мамыров», 211, »меңгеруші», 7) .

jumus1 («Айдосов», 101, »менеджер», 6) .

Сұраныс jumus1 (ati, 101, Кizmeti, Аylik)

101 бөлімдегі барлық қызметкерлерді іздейді.

Атрибуттарды факт түрінде қарастыру.

Информациялық элементтердің бүтінділігін құрайтын фактілілерді жазудың орнына осы информациялық элементтердің бөлек атрибуттарын факт түрінде қолдануға болады. Қажет болған жағдайда берілген атрибуттарды ереже көмегімен бүтін бірлік ретінде жинауға болады. Атрибуттың біреуін қалған атрибуттарды біріктіріп тұратын кілт түрінде аламыз. jumus_isteydi ( ) берілген қоры үшін «kizmetker_ati» атрибутын кілт ретінде қолданамыз. Жұмыс объектісінің бірінші элементін төмендегіше үлгіде құруға болады:

Office («Асанов», 101) .

Кizmeti («Асанов», »оператор») .

Аylik («Асанов», 2) .

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

jumus2 (Ati, Office, Kіzmeti, Aylik) : - office (Ati, Office), kizmeti (Ati, Kizmeti), aylik (Ati, Aylik) .

... жалғасы

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



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