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

Автор работы: Пользователь скрыл имя, 16 Октября 2013 в 09:10, реферат

Краткое описание

Логикалық бағдарламалау негізгі бағдарламалау тілдерінің даму жолдарынан өзгеше болады. Логикалық бағдарламалау компьютер терминдері арқылы адамды ойлауға үйрету емес, компьютер адамға тән нұсқауларды орындау керек деген ұғымға негізделеді. Логикалық бағдарламалау нұсқаулықтардың өздері берілмей, олардың орнына логикалық аксиома түрінде есеп туралы мәлімет және оны шешуге арналған жеткілікті ұйғарымдар құрылатындығын болжайды. Мұндай аксиомалар жиынтығы қарапайым бағдарламалауға баламалы (альтернативті) болады. Осындай бағдарламалар дәлелдеуді қажет ететін логикалық ұйғарымдар түрінде қалыптасқан есептерді қою кезінде орындалуы мүмкін. Мұндай ұйғарым - мақсатты ұйғарым деп аталады. Бағдарламаның орындалуы есепті шешуге талпыну жолдарынан тұрады, яғни логикалық бағдарламада берілген жорамалды пайдалана отырып, мақсатты ұйғарымды дәлелдеу.

Прикрепленные файлы: 1 файл

Зертханалық жұмыc cараптау 1.docx

— 52.12 Кб (Скачать документ)

Зертханалық жұмыс №1

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

    1.  Жұмыстың мақсаты

Пролог  тілінің қысқаша тарихымен және предикат, факті, домен ұғымдарын  енгізіп, Пролог тілінің бағдарламалық  құрылымымен таныстыру. 

1.2 Теориялық мағлұмат

 

Логикалық бағдарламалау негізгі бағдарламалау  тілдерінің даму жолдарынан  өзгеше болады. Логикалық бағдарламалау  компьютер терминдері арқылы адамды ойлауға үйрету емес, компьютер адамға тән нұсқауларды орындау керек  деген ұғымға негізделеді. Логикалық  бағдарламалау нұсқаулықтардың  өздері берілмей, олардың орнына логикалық  аксиома түрінде есеп туралы мәлімет  және оны шешуге арналған жеткілікті ұйғарымдар құрылатындығын болжайды. Мұндай аксиомалар жиынтығы қарапайым  бағдарламалауға баламалы (альтернативті) болады. Осындай бағдарламалар дәлелдеуді қажет ететін логикалық ұйғарымдар түрінде қалыптасқан есептерді  қою кезінде орындалуы мүмкін. Мұндай ұйғарым - мақсатты ұйғарым деп  аталады. Бағдарламаның орындалуы  есепті шешуге талпыну жолдарынан тұрады, яғни логикалық бағдарламада берілген жорамалды пайдалана отырып, мақсатты ұйғарымды дәлелдеу.

Логикалық бағдарламаны құруды Эдинбургтен шыққан Роберт Ковальский мен Марселден  шыққан Ален Колмероэ ойлап тапқан.

70-жылдардың  басында А.Колмероэ мен оның  тобы Марсель университетінде  (Франция) теореманы дәлелдеуге  арналған  арнайы бағдарлама құрды.  Пролог (от Progrmmatin en Logique) деп аталып, теореманы дәлелдейтін бағдарлама  Р.Ковальскидің интерпретаторын  қамтиды.

 

1.3. Предикат

 

Логикалық қатынастарды беру үшін қолданылатын белгілеулер логикалық предикаттардан алынған. Логикалық предикаттарда  ұйғарымдар мен объектілер арасындағы қатынастар қарастырылады.

Төмендегідей  сөйлемді қарастырайық:

«Катя алманы ұнатады»

Бұл сөйлемнен  Катяның алманы жақсы көретіндігі  жөнінде фактіні (дәйек) аламыз. Сөйлемдегі сөздердің орнын ауыстырып көрелік:

«Алманы Катя ұнатады»

Объектілердің арасындағы қатынасты предикаттар  логикасы қарастырады.  Алма мен  Катяның арасындағы қатынасты байланыстырудың қатынасы деп атайды. Алынған сөйлемнің конструкциясын:

Қатынас                       Объект            Объект

Ұнатады                       Катя                 Алма

 

«Ұнатады» қатынасын предикат деп атауға болады:

Предикат                       Объект            Объект

Ұнатады                           Катя                 Алма

 

Осы жазуды төмендегі түрде де жазуға болады:

Предикат (объект1, объект2)

немесе 

Ұнатады (Катя, алма)

 

1.4. Турбо – Прологтың мәліметтер  объектілері

 

Мәліметтер объектілері


Қарапайым объектілер

Құрылымды


Тұрақты

Айнымалы

Атомдар (символдар)

Сандар

Сурет 1.1. Турбо – Прологтың мәліметтер объектілері

 

Жүйе объектілер типін бағдарлама мәтініндегі объектілердің  синтаксистік түріне қарай айырады. Айнымалылар бас әріптен, ал атомдар  кіші әріптен бастап жазылады. Атомдар  мен айнымалыларды жазу үшін латын  әріптерін (A, В, …, Z), (a, b…z), араб цифрларын (0…9) және арнайы символдар ( , / ( + – * / < > = : _ ) пайдаланылады.

Атомдарды үш түрлі әдіспен жасауға болады:

  1. кіші әріптен басталатын әріптер, сандар және астын сызу символдарының тізбегі: x, sister, y10, x_y ;
  2. дара тырнақшаның ішіне алынған символдар тізбегінен, бұл жағдай атом үлкен әріптен басталғанда қолданылады: ' X ', ' Anna';
  3. арнайы символдардан: < - - - >, = = = = . , . . . , :: =.

Турбо –  Прологтағы мәліметтер объектілері термалар деп аталады.

 

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') жазулары екі түрлі мағынаны береді.

 

  • 1.6. Турбо –Пролог бағдарламасының құрылымы
  •  

    Турбо-Прологта жазылған бағдарлама төмендегідей бөлімдерден  тұрады:

    domains

    global domains

    database

    predicates

    global predicates

    goal

    clauses

    Әр бөлімнің кілттік сөзі бар.

    domains  бөлімінде бағдарламада пайдаланылатын  әртүрлі класстар объектілерін  бейнелейтін пайдаланушының домендерінің  сипаттарын қамтиды. 

    global domains бөлімінде модульді бағдарламаларды  жазуда пайдаланылатын 

    database бөлімінде  бағдарламада пайдаланылатын динамикалық  деректер қорының предикаттары  хабарланды

    predicates бөлімінде  бағдарламада қолданылатын барлық  стандартты емес предикаттар  хабарланды

    global predicates бөлімінде бірнеше модульдерде  пайдаланылатын предикаттар хабарланады.

    goal бөлімінде  бірнеше ішкі мақсаттардан тұратын  негізгі мақсат хабарланады. Бағдарламада  бір ғана мақсат болуы керек.

    clauses  бөлімінде бағдарламаның жұмыс  істеуіне қажет ережелер мен  фактілер хабарланады. 

    Егер  бағдарламада глобальды домендер мен  предикаттар, динамикалық деректер қоры болмайтын болса, онда оларға сәйкес бөлімдер де бағдарламада жазылмайды.  Егер goal бөлімі бағдарламада жазылмайтын болса, онда жүйе әр кез мақсатын сұрап отырады. Бағдарламаның кез-келген жеріне, / * және * / символдарының ішіне жазылған, түсініктемелер енгізуге болады.

     

      1. Домендер сипаттамасы 

     

    Турбо –  Прологта алты кіріктірілген домендер типі бар:

    с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 факті және берілген предикаттармен байланысты предикат ойластырып, бағдарламаға кірістіру керек.

     

    1. Музыка

    predicates 
    songster (symbol, symbol). 
    clauses 
    songster ("sadness", "enigma"). 
    songster ("mea culpa", "enigma"). 

    1. Кино әлемі

    predicates 
    movie(symbol, symbol). 
    Clauses 
    movie ("King Kong", "Adventure"). 
    movie ("The Lion King", "Cartoon"). 

    1. Файлдар кеңейтілулері

    predicates 
    extension (symbol, symbol). 
    clauses 
    extension ("picture","*.jpg"). 
    extension ("picture","*.tif"). 

    1. Кітап авторлары

    predicates 
    book (symbol, symbol). 
    clauses 
    book ("the fellowship of the ring", "tolkien"). 
    book ("red rose","king").

    1. Жыл мезгілдері

    predicates 
    season (symbol, symbol). 
    clauses 
    season ("january","winter"). 
    season ("march","spring"). 

    1. Айдағы күндер саны

    predicates 
    days (symbol, symbol). 
    clauses 
    days ("january",31). 
    days ("march",31). 

    1. Бағдарлама түрлері

    predicates 
    class (symbol, symbol). 
    clauses 
    class ("Windows", "Operation System"). 
    class ("Word", "Text Editor"). 

    1. Бағдарламалық жабдықтарды шығарушы фирмалар

    predicates 
    manufacturer (symbol, symbol). 
    clauses 
    manufacturer ("Windows", "Microsoft"). 
    manufacturer ("Photoshop", "Adobe"). 

    1. География

    predicates 
    city (symbol, symbol). 
    clauses 
    city (" Ryazan ", " Russia "). 
    city (" Vologda ", " Russia "). 
    city (" New York ", " USA "). 

    1. Түстер

    predicates 
    color (symbol, symbol). 
    clauses 
    color ("Corn", "Yellow"). 
    color ("Banana", "Yellow"). 

    1. Жеміс – жидектер

    predicates 
    eat (symbol,symbol). 
    clauses 
    eat ("apple","fruit"). 
    eat ("potatoes","vegetables"). 

    1. Пәндер

    predicates 
    courses (symbol,symbol) 
    clauses 
    courses ("microelectronics" , "technical"). 
    courses ("history", "humanitarian").

     

    1.  Мәліметтер типі

    predicates 
    DataTypes (symbol,symbol) 
    clauses 
    DataTypes ("Integer", "Numeric"). 
    DataTypes ("String", "Symbol"). 

    1. Компьютер аксесуарларын шығарушы фирмалар

    predicates 
    comp(symbol, symbol) 
    clauses 
    comp("NVIDIA", "Video Card"). 
    comp("ASUS", "Motherboard"). 

    Қолданылған әдебиеттер

    1. Структуры данных. Методические указания к самостоятельному изучению дисциплины «Программирование» для  студентов направления «Компьютерная  инженерия» / Сост. В. И. Павловский, П. Г. Бивойно и др. – Чернигов: ЧДТУ, 2001. – 82 с.
    2. Хоггер К. Введение в логическое программирование. – М.: Мир, 1988. – 348 с.
    3. Клоксин У., Меллиш К. Программирование на языке Пролог. – М.: Мир, 1987. – 336 с.
    4. Братко И. Программирование на языке Пролог для искусственного интеллекта. – М.: Мир, 1990. – 560 с.
    5. Стерлинг Л., Шапиро Э. Искусство программирования на языке Пролог. – М.: Мир, 1990. – 235 с.
    6. Ин Ц., Соломон Д. Использование Турбо-Пролога. – М.: Мир, 1993. – 608 с.
    7. Янсон А. Турбо-Пролог в сжатом изложении. – М.: Мир, 1991. – 94 с.
    8. Nilsson U., Maluszynski. Logic, programming and prolog (2ed). http://www.ida.liu.se/~ulfni/lpp/.
    9. Хювенен Э., Сеппянен Й. Мир Лиспа. В 2-х т. – М.: Мир, 1990.
    10. Братко И. Программирования на языке Пролог для искусственного интеллекта: пер. с анл.- М.:Мир, 1990
    11. Дж Доорс, Пролог – язык программирования будущего: пер. с англ.-М:Финансы и статистика, 1990
    12. Н. С. Лебедева, Логическое программирование. Учеб. пособие. – Рига: Transporta un sakaru instituts, 2002. – 91 с. 

    Информация о работе Пролог логикалық бағдарламалау тілімен танысу