Автор работы: Пользователь скрыл имя, 16 Октября 2013 в 09:10, реферат
Логикалық бағдарламалау негізгі бағдарламалау тілдерінің даму жолдарынан өзгеше болады. Логикалық бағдарламалау компьютер терминдері арқылы адамды ойлауға үйрету емес, компьютер адамға тән нұсқауларды орындау керек деген ұғымға негізделеді. Логикалық бағдарламалау нұсқаулықтардың өздері берілмей, олардың орнына логикалық аксиома түрінде есеп туралы мәлімет және оны шешуге арналған жеткілікті ұйғарымдар құрылатындығын болжайды. Мұндай аксиомалар жиынтығы қарапайым бағдарламалауға баламалы (альтернативті) болады. Осындай бағдарламалар дәлелдеуді қажет ететін логикалық ұйғарымдар түрінде қалыптасқан есептерді қою кезінде орындалуы мүмкін. Мұндай ұйғарым - мақсатты ұйғарым деп аталады. Бағдарламаның орындалуы есепті шешуге талпыну жолдарынан тұрады, яғни логикалық бағдарламада берілген жорамалды пайдалана отырып, мақсатты ұйғарымды дәлелдеу.
Пролог тілінің қысқаша тарихымен және предикат, факті, домен ұғымдарын енгізіп, Пролог тілінің бағдарламалық құрылымымен таныстыру.
Логикалық
бағдарламалау негізгі
Логикалық бағдарламаны құруды Эдинбургтен шыққан Роберт Ковальский мен Марселден шыққан Ален Колмероэ ойлап тапқан.
70-жылдардың
басында А.Колмероэ мен оның
тобы Марсель университетінде
(Франция) теореманы
1.3. Предикат
Логикалық
қатынастарды беру үшін қолданылатын
белгілеулер логикалық
Төмендегідей сөйлемді қарастырайық:
«Катя алманы ұнатады»
Бұл сөйлемнен
Катяның алманы жақсы көретіндігі
жөнінде фактіні (дәйек) аламыз. Сөйлемдегі
сөздердің орнын ауыстырып
«Алманы Катя ұнатады»
Объектілердің арасындағы қатынасты предикаттар логикасы қарастырады. Алма мен Катяның арасындағы қатынасты байланыстырудың қатынасы деп атайды. Алынған сөйлемнің конструкциясын:
Қатынас Объект Объект
Ұнатады Катя Алма
«Ұнатады» қатынасын предикат деп атауға болады:
Предикат Объект Объект
Ұнатады
Осы жазуды төмендегі түрде де жазуға болады:
Предикат (объект1, объект2)
немесе
Ұнатады (Катя, алма)
1.4. Турбо – Прологтың мәліметтер объектілері
Мәліметтер объектілері
Қарапайым объектілер
Құрылымды
Айнымалы
Атомдар (символдар)
Сандар
Сурет 1.1. Турбо – Прологтың мәліметтер объектілері
Жүйе объектілер типін бағдарлама мәтініндегі объектілердің синтаксистік түріне қарай айырады. Айнымалылар бас әріптен, ал атомдар кіші әріптен бастап жазылады. Атомдар мен айнымалыларды жазу үшін латын әріптерін (A, В, …, Z), (a, b…z), араб цифрларын (0…9) және арнайы символдар ( , / ( + – * / < > = : _ ) пайдаланылады.
Атомдарды үш түрлі әдіспен жасауға болады:
Турбо – Прологтағы мәліметтер объектілері термалар деп аталады.
1.5. Фактілер
Турбо – Прологте бағдарлама сөйлемдерден тұрады. Әр сөйлем нүктемен аяқталады. Сөйлем үш түрде болады: фактілер, ережелер, сұрақтар. Сөйлемдер термдерден тұрады. Терм – синтаксистік бірлік.
Объектілер арасындағы қатынасты нақтылау үшін фактілер қолданылады.
Мысалы: туыстық қатынас.
Туыстық қатынастың терегін қарастырайық
tanja
petja
dima
oija
nina
Сурет 1.2. Туыстық қатынастың терегі
Объектілер арасына туыстық (parent) деп аталатын қатынас (предикат) енгізелік.
parent ('Tanja', 'Olja').
Бұл факт бойынша Таня Оляның анасы және parent – предикаттың аты, ал Tanja, Olja – оның аргументтері. Қатынастың аргументтері нақты (константтар) немесе абстракты (X, Y) болуы мүмкін. Бірінші типтегі объектілерді атомдар, ал екінші типтегілерді айнымалылар деп атайды.
Барлық берілген фактілерді көрсетелік:
parent (tanja, olja).
parent (petja, olja).
parent (dima, nina).
parent (olja, nina).
Фактілер
әр уақытта дұрыс болатын
Фактілерді жазу барысында төмендегідей ережелерді сақтау керек:
Барлық объектілер мен предикаттар кіші әріптерден басталып жазылу керек. Бірінші предикаттың аты жазылады, бұдан кейін жәй жақшаның ішіне объектілер аты жазылады. Соңына нүкте қойылады. Факт объектілерсіз предикаттардан да тұруы мүмкін. Фактілер жиынтығы деректер қоры деп аталады. Жәй жақшаның ішіне жазылатын объектілердің жазылу реті ескерілу керек. Яғни parent ('Olja', 'Tanja') мен parent ('Tаnja', 'Olja') жазулары екі түрлі мағынаны береді.
Турбо-Прологта жазылған бағдарлама төмендегідей бөлімдерден тұрады:
domains
global domains
database
predicates
global predicates
goal
clauses
Әр бөлімнің кілттік сөзі бар.
domains
бөлімінде бағдарламада
global domains
бөлімінде модульді
database бөлімінде
бағдарламада пайдаланылатын
predicates бөлімінде
бағдарламада қолданылатын
global predicates
бөлімінде бірнеше модульдерде
пайдаланылатын предикаттар
goal бөлімінде
бірнеше ішкі мақсаттардан
clauses бөлімінде бағдарламаның жұмыс істеуіне қажет ережелер мен фактілер хабарланады.
Егер бағдарламада глобальды домендер мен предикаттар, динамикалық деректер қоры болмайтын болса, онда оларға сәйкес бөлімдер де бағдарламада жазылмайды. Егер goal бөлімі бағдарламада жазылмайтын болса, онда жүйе әр кез мақсатын сұрап отырады. Бағдарламаның кез-келген жеріне, / * және * / символдарының ішіне жазылған, түсініктемелер енгізуге болады.
Турбо – Прологта алты кіріктірілген домендер типі бар:
сhar – жеке символ:
symbol – символдың атауы, кіші әріптен басталатын немесе тырнақша
ішіне алынатын әріптер, цифрлар және астын сызу
символдарынан тұратын тізбек;
string - жолдар, тырнақша ішіне алынған символдар тізбегі;
integer – -32768- ден 32767 аралығындағы бүтін сандар;
real - +1Е-307 ден +1Е308 аралығындағы нақты сандар;
file - файл атауы.
Symbol типті
домендер тез тауып алу
Домендерді хабарлау домендер бөлімінде төмендегі түрінде болады:
<домен атауы> = <домен типі>
Мысалы:
domains
title = symbol
author = symbol
year = integer
немесе
domains
title, author = symbol
year = integer
1.8. Предикаттарды сипаттау
Предикаттар
предикаттар бөлімінде
<предикаттың атауы> (<кірістірілген доменның атауы>, <қолданушы
доменінің атауы>)
Жақшаның
ішіне предикат аргументтерінің
домендері жазылады. Предикаттың
аргументі болмайтын да жағдайлар
кездеседі, онда сипаттау тек атаудан
тұрады. Бір предикаттың қайталануы
мүмкін, мұндай жағдайда предикаттың
аргументтерінің домендері
Мысал. book предикатын сипаттаудың екі тәсілі:
1. predicates
book (symbol, symbol, integer)
2. domains
title, author = symbol
year = integer
predicates
book (title, author, year)
Предикаттың атауы латынның кіші әріптерімен жазылуы және символдарының саны 250-ден аспауы керек. Предикаттың атауында бос орын болмауы керек.
1.9. Зертханалық жұмысқа тапсырмалар
Берілген бағдарламалардағы фактілерге тақырыпқа сәйкес тағы 3 факті және берілген предикаттармен байланысты предикат ойластырып, бағдарламаға кірістіру керек.
predicates
songster (symbol, symbol).
clauses
songster ("sadness", "enigma").
songster ("mea culpa", "enigma").
predicates
movie(symbol, symbol).
Clauses
movie ("King Kong", "Adventure").
movie ("The Lion King", "Cartoon").
predicates
extension (symbol, symbol).
clauses
extension ("picture","*.jpg").
extension ("picture","*.tif").
predicates
book (symbol, symbol).
clauses
book ("the fellowship of the ring", "tolkien").
book ("red rose","king").
predicates
season (symbol, symbol).
clauses
season ("january","winter").
season ("march","spring").
predicates
days (symbol, symbol).
clauses
days ("january",31).
days ("march",31).
predicates
class (symbol, symbol).
clauses
class ("Windows", "Operation System").
class ("Word", "Text Editor").
predicates
manufacturer (symbol, symbol).
clauses
manufacturer ("Windows", "Microsoft").
manufacturer ("Photoshop", "Adobe").
predicates
city (symbol, symbol).
clauses
city (" Ryazan ", " Russia ").
city (" Vologda ", " Russia ").
city (" New York ", " USA ").
predicates
color (symbol, symbol).
clauses
color ("Corn", "Yellow").
color ("Banana", "Yellow").
predicates
eat (symbol,symbol).
clauses
eat ("apple","fruit").
eat ("potatoes","vegetables").
predicates
courses (symbol,symbol)
clauses
courses ("microelectronics" , "technical").
courses ("history", "humanitarian").
predicates
DataTypes (symbol,symbol)
clauses
DataTypes ("Integer", "Numeric").
DataTypes ("String", "Symbol").
predicates
comp(symbol, symbol)
clauses
comp("NVIDIA", "Video Card").
comp("ASUS", "Motherboard").
Информация о работе Пролог логикалық бағдарламалау тілімен танысу