Логикалық программалау
МАЗМҰНЫ
КІРІСПЕ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .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
КІРІСПЕ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .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 тілінің мүмкіндіктерін зерттеу.
Курстық жұмыс кіріспеден, екі тарудан, қорытындыдан, пайдаланылған әдебиеттер тізімінен тұрады.
Кіріспеде курстық жұмыс тақырыбының өзектілігі, жұмыстың мақсаты, курстық жұмыстың теориялық маңыздылығы мен практикалық құндылығы баяндалған.
1-тарауда курстық жұмыс тақырыбының теориялық негіздері қарастырылған. Атап айтқанда, логикалық программалау, Prolog тілі, предикат, факт, тізімдер, тізімдердің Prolog тілінде қолданылуы, берілген қоры және т.б.
2-тарауда Prolog тілінің мүмкіндіктерін есептің қойылымы бойынша прграммалау тәсілдері қарастырылған.
Қорытынды да логикалық программалаудың алатын орны, екі таруда қарастырылған мәселелер, курстық жұмыстың міндеті қарастырылған.
ПАЙДАЛАНЫЛҒАН ӘДЕБИЕТТЕР ТІЗІМІ
1. О. Камардинов «Жасанды интеллект. Сараптаушы жүйелер. Пролог». Шымкент, 2003.
2. И. Братко «Программирование на языке Пролог для искусственного интеллекта». Москва, 1990.
3. Клоксин, Меллиш «Програмирование на языке Пролог». Москва, 1987.
4. Дж. Стобо «Язык программирования Пролог». Москва, 1993.
5. Ин Ц., Соломон Д. «Использование Турбо-Пролога». Москва, 1993.
6. Хоггер «Введение в логическое программирование». Москва, 1988.
7. Фёдоров А. «Особенности программирования на Borland Pascal». Киев, 1994.
8. Л. Стерлинг, Э. Шапиро «Искусство программирования на языке Пролог». Москва, 1990г.
9. Кларк К., Маккей Ф. «Введение в логическое программирование на микро-Прологе». Москва, 1987.
10. И. Братко «Алгоритмы искусственного интеллекта на языке Пролог». Москва, 2004.
11. Доорс Дж., Рейблейн А.Р., Вадера С. «Пролог — язык программирования будущего». Москва, 1990.
1. О. Камардинов «Жасанды интеллект. Сараптаушы жүйелер. Пролог». Шымкент, 2003.
2. И. Братко «Программирование на языке Пролог для искусственного интеллекта». Москва, 1990.
3. Клоксин, Меллиш «Програмирование на языке Пролог». Москва, 1987.
4. Дж. Стобо «Язык программирования Пролог». Москва, 1993.
5. Ин Ц., Соломон Д. «Использование Турбо-Пролога». Москва, 1993.
6. Хоггер «Введение в логическое программирование». Москва, 1988.
7. Фёдоров А. «Особенности программирования на Borland Pascal». Киев, 1994.
8. Л. Стерлинг, Э. Шапиро «Искусство программирования на языке Пролог». Москва, 1990г.
9. Кларк К., Маккей Ф. «Введение в логическое программирование на микро-Прологе». Москва, 1987.
10. И. Братко «Алгоритмы искусственного интеллекта на языке Пролог». Москва, 2004.
11. Доорс Дж., Рейблейн А.Р., Вадера С. «Пролог — язык программирования будущего». Москва, 1990.
Пән: Информатика, Программалау, Мәліметтер қоры
Жұмыс түрі: Курстық жұмыс
Тегін: Антиплагиат
Көлемі: 21 бет
Таңдаулыға:
Жұмыс түрі: Курстық жұмыс
Тегін: Антиплагиат
Көлемі: 21 бет
Таңдаулыға:
Тақырыбы. Логикалық программалау
МАЗМҰНЫ
КІРІСПЕ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... .3
1-ТАРАУ. ЛОГИКАЛЫҚ ПРОГРАММАЛАУДЫҢ ТЕОРИЯЛЫҚ
НЕГІЗДЕРІ.
1.1 Логикалық программалау. Prolog
тілі ... ... ... ... ... ... ... ... ... ... ... ... ... ... 4
1.2 Prolog тілінің жетілдірілген
нұсқалары ... ... ... ... ... ... .. ... ... ... ... . ... ... 5
1.3 Prolog тілін басқа программалау тілдерімен
салыстыру ... ... ... ... ... ... .6
1.4 Prolog тілінде құрылған логикалық программаның орындалу
тәртібі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ... ... ... ... ... ... ... ... ... .7
1.5 Тізімдер. Prolog программасында тізімдерді
қолдану ... ... ... ... ... ... ...1 0
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, OS2, 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 тілінде қатыстар, фактілер, ережелер құрылымын сақтап, түрлі
символдар арқылы құрастырылған берілгендер, оның ішіндегі программалар
термдер деп ... жалғасы
МАЗМҰНЫ
КІРІСПЕ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... .3
1-ТАРАУ. ЛОГИКАЛЫҚ ПРОГРАММАЛАУДЫҢ ТЕОРИЯЛЫҚ
НЕГІЗДЕРІ.
1.1 Логикалық программалау. Prolog
тілі ... ... ... ... ... ... ... ... ... ... ... ... ... ... 4
1.2 Prolog тілінің жетілдірілген
нұсқалары ... ... ... ... ... ... .. ... ... ... ... . ... ... 5
1.3 Prolog тілін басқа программалау тілдерімен
салыстыру ... ... ... ... ... ... .6
1.4 Prolog тілінде құрылған логикалық программаның орындалу
тәртібі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
... ... ... ... ... ... ... ... ... ... .7
1.5 Тізімдер. Prolog программасында тізімдерді
қолдану ... ... ... ... ... ... ...1 0
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, OS2, 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 тілінде қатыстар, фактілер, ережелер құрылымын сақтап, түрлі
символдар арқылы құрастырылған берілгендер, оның ішіндегі программалар
термдер деп ... жалғасы
Ұқсас жұмыстар
Пәндер
- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.
Ақпарат
Қосымша
Email: info@stud.kz