Автор: Пользователь скрыл имя, 13 Февраля 2013 в 07:47, реферат
Логикалық программалау – информатика курсының программалау
Курстық жұмыстың мақсаты – логикалық программалау
Курстық жұмыстың мақсатына жету үшін келесі
Дискретті математика пәнін игеру.
Математикалық логика пәнінің мәселелерімен танысу.
Программалау тілдерін игеру.
Prolog тілінің мүмкіндіктерін зерттеу.
КІРІСПЕ.............................................................................................................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
Логикалық программалау реферат
МАЗМҰНЫ
КІРІСПЕ.......................
1-ТАРАУ. ЛОГИКАЛЫҚ
НЕГІЗДЕРІ.
1.1 Логикалық программалау.
Prolog тілі..........................
1.2 Prolog тілінің жетілдірілген
нұсқалары.....................
1.3 Prolog тілін басқа программалау
тілдерімен салыстыру.....................
1.4 Prolog тілінде құрылған логикалық программаның орындалу
тәртібі.......................
1.5 Тізімдер. Prolog программасында
тізімдерді қолдану.......................
1.6 Prolog программасында берілгендер қорымен жұмыс істеу.................12
2-ТАРАУ. ЛОГИКАЛЫҚ
2.1 Prolog тілінде математикалық
есептерді есептеу.......................
2.2 Prolog тілінде физикалық есептерді
есептеу.......................
2.3 Басқа мысалдарды қарастыру.....................
ҚОРЫТЫНДЫ.....................
ПАЙДАЛАНЫЛҒАН ӘДЕБИЕТТЕР ТІЗІМІ........................
КІРІСПЕ
Логикалық программалау – информатика курсының программалау
Курстық жұмыстың мақсаты – логикалық программалау
Курстық жұмыстың мақсатына жету үшін келесі
Дискретті математика пәнін игеру.
Математикалық логика пәнінің мәселелерімен танысу.
Программалау тілдерін игеру.
Prolog тілінің мүмкіндіктерін зерттеу.
Курстық жұмыс кіріспеден, екі тарудан, қорытындыдан,
Кіріспеде курстық жұмыс тақырыбының өзектілігі, жұмыстың
1-тарауда курстық жұмыс
тақырыбының теориялық
2-тарауда Prolog тілінің мүмкіндіктерін есептің
Қорытынды да логикалық программалаудың алатын орны,
ЛОГИКАЛЫҚ ПРОГРАММАЛАУ. PROLOG ТІЛІ
Интелектуальды іс-әрекеттерді орындауға арналған ыңғайлы программа
Prolog тілі:
сараптаушы жүйелерді дайындау;
мәтіндерді бір тілден екінші тілге аудару;
логикалық түрде теоремаларды дәлелдеу және т.б.
Prolog-тың ықшамдылығы – ол берілген сұрақ
Prolog – сараптаушы жүйені құруда, 5-нші
Prolog тілі – 2,2 жыл бұрын
Логикалық программалау мен Prolog тілінің өзара
Prolog есептеу моделінің көмегімен орындалатын логикалық
Prolog тілі тізбектік машинадағы логикалық
Абстракті интерпретатор негізінде нақты тілде программалауға
Негізінде, таңдаудың әртүрлі тәсілін қолданатын түрлі
Prolog-та топтамалы кестелік тәсіл қолданылады. [3]
PROLOG ТІЛІНІҢ ЖЕТІЛДІРІЛГЕН НҰСҚАЛАРЫ
Логикалық программалаудың дамуына үлес қосқан
1973 жылы Алан Комеройдың басшылығымен Марсельдік
Ал 1976 жылы Ковальский М. Ван
1977 жылы Д. Уоррен мен Ф.
Ал 1980 жылы К. Кларк және
1981 жылдың қазан айында Prolog тіліне
Prolog тілінің ең кең таралғаны -
Ал 1988 жылы одан сапасы жоғары
1992 жылдың маусым айында PDC Prolog
PDC Prolog 3.31-дің сапасы жоғары болғанмен,
Visual Prolog «визуальды программалау» сөзінен шықты.
Visual Prolog графикалық қолданбалы интерфейсті қажет
Интерфейстің таңдалынғанына байланысты орындаушыға көптеген генераторларға,
Prolog Development Center-дің өнімдері, Visual Prolog-ты
PROLOG ТІЛІН БАСҚА ПРОГРАММАЛАУ ТІЛДЕРІМЕН
Программалау тілі басқару механизмімен және берілгендерді
Prolog тілінде программаны басқарудағы есептің ойдағыдай
Procedure A
Call B
Call B
.
.
.
Call B
End.
Prolog тіліндегі рекурсивті шақыру мақсатының амалдар
Қарапайым тілде есептеудің жалғасуына мүмкіндік болмаса,
Логикалық программа операция жасайтын берілгендердің құрылымы
Лисп тілі секілді Prolog тілі де
Prolog тіліндегі қолданылатын берілгендер құрылымдарының басқа
Логикалық программалауда берілгендерді өңдеу толығымен қалыптастыру
Дәстүрлі программалау тілдерінде әртүрлі деңгейдегі қиындықтар,
PROLOG ТІЛІНДЕ ҚҰРЫЛҒАН ЛОГИКАЛЫҚ ПРОГРАММАНЫҢ ОРЫНДАЛУ
Prolog тілінде программалау келесі кезеңдерден тұрады:
фактілер арасындағы қатыстар мен нысандарды хабарлау;
нысандар мен қатынастар арасындағы өзара байланысқан
нысандар мен қатынастар арасындағы сұрақты тұжырымдау.
Prolog тілінде орындалатын негізгі амал бұл
Орнына қою былай анықталады:
тұрақты тек өзіне тең тұрақтының орнына
теңескен (бірегей) құрылымдар бір-бірінің орнына қойылады;
айнымалы тұрақтының немесе алдын ала байланысқан
екі бос айнымалы бір-бірінің орнына қойыла
Байланысқан мезеттен бастап олар бір айнымалы
алмасады. Бұл жағдайда Х-айнымалысы
қабылданады. [1]
Prolog тілінде программалаудың ережелері мен фактілері
реті ережелер мен ережелердің ішкі мақсаттары
А: - В1, В2,..., Вn ережесін
Логикалық тұжырымның орындалуында айнымалының нақтылануының қажеттілігіне
ұнатады (асан, ән).
ұнатады (үсен, спорт).
ұнатады (А, кітап): - оқырман (А),
ұнатады (үсен, кітап).
ұнатады (үсен, кино).
оқырман (үсен).
әуесқой (асан).
? – ұнатады (Х, ән), ұнатады
Бұл программаның екі жақты сұранысы мынадай
ұнатады (Х, ән)
Бастапқыда программаны жоғарыдан төмен қарай орындағанда,
ұнатады (Х, ән)
------------------------------
ұнатады (асан, ән)
Х айнымалысы «асан» мәнімен нақтыланады.
Сұраныс екінші ішкі мақсатпен келісімге келеді,
ұнатады (А, кітап): - оқырман (А),
Аргумент А тақырыбы айнымалы болғандықтан, ол
ұнатады (Х, ән)
------------------------------
ұнатады (асан, ән)
оқырман (А)
Бұдан кейін Prolog тілі жаңа ішкі
ұнатады (Х, ән)
------------------------------
ұнатады (асан, ән)
оқырман (А)
------------------------------
оқырман (асан)
ТІЗІМДЕР. PROLOG ПРОГРАММАСЫНДА ТІЗІМДЕРДІ ҚОЛДАНУ
Тізім - өңдеу процесінде құрамы мен
Тізім - әртүрлі ұзындыққа болатын реттелген
Тізім элементтері кез келген терм болуы
тұрақты
айнымалы
басқа да тізімдерден тұратын құрылым.
Тізімдер білім қорын және деректер қорын
бірінші элемент – тізім басы;
тізімнің қалған бөлігі – тізімнің соңы.
Тізім басы элементі бөлінбейтін мән болып
Сәйкес операцияларды орындауда процесс тізім бос
Prolog тілінде тізімдерді қолдану үш бөлімде
тізімдер домені – domains (берілгендер типін
тізімдермен жұмыс предикаты – predicates (предикаттарды
ал тізімнің өзі – clauses (фактілер
Domains бөлімін жазбай тастап кетуге болады,
Предикат – қатыстар мен олардың аргументтерінен
Программаға глобальды домендер мен предикаттарды анықтайтын
global domains
global predicates
Clauses бөлімінде фактілер (нысандар жөніндегі мәліметтер)
Факт предикаттың атымен жақша ішіндегі аргумент
Шарт – шарт тақырыбы мен шарт
Prolog тілінде қатыстар, фактілер, ережелер құрылымын
Clauses бөлімінің алдына немесе соңына
Құрамында тізімі бар қарапайым программаны қарастырайық:
domains
баспа_ мезгіл = мезгіл
мезгіл = string
predicates
жыл (баспа_ мезгіл)
clauses
жыл ([«қыс», «көктем», «жаз», «күз»])
Бұл программада жыл мезгілдері қарастырылған. Мезгілдер
Сұраныстарды:
қандай жыл мезгілдері бар? жыл [A11]
екінші жыл мезгілі қандай? жыл ([_,X,_,])
жылдың бірінші жартысындағы жыл мезгілдері жыл
жыл 9[X|Y]) сұранысының нәтижесі қалай болады?
Тізім басы тізім құйрығынан тік сызықша
Екі тізімді қарастырайық:
list 1[[студент,Y] | Z]
list 2 [[X, ахмет] | [оқу_озаты]]
Олар үйлесімді және айнымалыларға меншіктелетін термдер:
Түсінікті болу мақсатында, әдетте, тізім предикаты
PROLOG ПРОГРАММАСЫНДА БЕРІЛГЕНДЕР ҚОРЫМЕН ЖҰМЫС ІСТЕУ
Prolog тілінде берілгендер қорымен жұмыс істеудің
әрбір берілгендер қорының информациялық элементтеріне сәйкес
әрбір атрибут мәні жұбына сәйкес келетін
әрбір құрылымы берілгендер қорының құрылымына сәйкес
әрбір құрылым берілгендер қорының жазбасына сәйкес
ағаштың әрбір түйіні берілгендер қорының жазбасына
Қызметтестер қатысы деген, өзара байланысқан (қызметтестер
Қатыстарды фактілер түрінде қарастыру.
Кез-келген пәндік облыс үлгісі объектілер мен
Жұмыс (қызметкер_ аты, бөлім, қызметі, айлық)
Бұл жерде кілттік атрибут ретінде «қызметкер_
сәйкес келетін жазбалар жиыны және информациялық
Берілгендер қорын Prolog тілінде қарастырудың қарапайым
jumus1 («Асанов»,101,»оператор»,
jumus1 («Мамыров»,211,»меңгеруші»,
jumus1 («Айдосов»,101,»менеджер»,
Сұраныс jumus1 (ati,101,Кizmeti,Аylik)
101 бөлімдегі барлық қызметкерлерді іздейді.
Атрибуттарды факт түрінде қарастыру.
Информациялық элементтердің бүтінділігін құрайтын фактілілерді жазудың
Office («Асанов»,101).
Кizmeti («Асанов»,»оператор»).
Аylik («Асанов»,20000).
Нақты қызметкер үшін барлық атрибуттарды, пәндік
jumus2 (Ati, Office, Kіzmeti, Aylik): -
Бұл ереже анық емес берілгендер қорына
prize (Ati, 1000): - office (Ati,
Кейбір қызметкерлер үшін қосымша жұмыс стажы
jumus_staji («Асанов», 2).
jumus_staji («Мамыров», 1).
Жаңадан қосылған «prize» және «jumus_staji» фактілері
Берілгендер қорын тізім, құрылым ретінде қарастыру.
Берілгендер қорын информациялық элементтер ағымы деп
jumus_isteydi («Айдаров», 101, «оператор», 20000).
jumus_isteydi («Мамыров», 211, «меңгеруші», 70000).
jumus_isteydi («Айдосов», 101, «менеджер», 60000).
Мұндай берілгендер қорының әрбір информациялық элементіне
Берілгендер қорын сызықтық рекурсивті құрылым ретінде
Берілгендер қорының жазбасын ЭЕМ жадында қарастырудың
jumus_isteydi ( ) жазбасынан тұратын рекурсивті
Жұмысшы (аты, бөлім, қызметі, айлық келесі
Prolog тілінің синтаксисін пайдаланып, оны jumus3
jumus3 («Айдаров», 101, «оператор», 20000).
jumus3 («Мамыров», 211, «меңгеруші», 70000).
jumus3 («Айдосов», 101, «менеджер», 60000, еnd
Мұнда құрылымының қосымша аргументі берілгендер қорының
Қызметкер (аты, бөлімі, қызметі, айлық, қызметкер).
Жаңа процедураның бірінші аргументі берілгендер қорының
құрылымы болып табылады. Бұл процедураның екінші
jazba (jumus_isteydi (Ati, Office, Kіzmeti,
jumus3 (Ati, Office, Kіzmeti, Aylik, nextjazba).
jazba (jumus_isteydi (Ati, Office, Kіzmeti, Aylik)).
jumus3 (Ati, Office, Kіzmeti, Aylik, nextjazba):
jumus3 (jazba (jumus_isteydi (Ati, Office, Kіzmeti,
jazba ( ) прцедурасын қолданып, 101
Мақсат: jazba (jumus_isteydi (Ati, 101,
jumus3 («Айдаров», 101, «оператор», 20000).
jumus3 («Мамыров», 211, «меңгеруші», 70000).