ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Prolog. Реалізація на ПЕОМ
         

     

    Інформатика, програмування

    Prolog. Реалізація на ПЕОМ

    1. Інтегрована середу мови Turbo Prolog.

    2. Структура програми

    3. Стандартні типи доменів

    4. Прототипи предиката

    5. Твердження і цілі

    6. Арифметичні вирази.

    7. Вбудовані прдікати мови

    1. Інтегроване середовище мови Turbo Prolog.

    Функціонування Т.Р. вимагає наявність наступних стандартних каталогів:

    кореневої Prolog, в якому повинні знаходиться наступні файли:

    prolog.exe

    prolog.ovl для створення exe файлу

    prolog.r тексти повідомлення про помилки

    prolog.hlp файл допомоги

    prolog.sys конфігурація середовища

    prolog.lib бібліотеки

    prolog.obj допоміжний файл для створення користі, їх exe файлів

    підкаталог PRO для користувацьких вихідних файлів (розширення. pro)

    підкаталог OBJ для користувацьких обьктних і prg файлів

    підкаталог EXE для зберігання призначених для користувача exe файлів

    підкаталог DOS для команд ОС в тому випадку, якщо передбачається їх використання з призначених для користувача програм. (min command.com)

    2 Структура програми на TURBO PROLOG

                    

    1 Для визначення типів доменів або даних, які використовуються у програмі

    2 опис прототипів для користувача предикатів

    3 "твердження" включає опис фактів у вигляді предикатів і правил, тобто декларативних і процедурних знань

    4 містить мета вирішення завдань, при його відсутності система запитує мета рішення завдання в вікні діалогу і в цьому ж вікні отримуємо відповідь, за його присутності в ньому поміщаємо користувальницький інтерфейс.

    Місце для друкування

    -35 - 36 - 37 -

    readint ()

    (integer): (0) - читає ціле число, читання закінчується натисканням

    readreal ()

    (real): (0) - вещ.

    readchar ()

    (char): (0) - читає одиничний символ

    readln () (String): (0) - читає рядок символів

    inkey () (Char): (0) - закінчується істиною, якщо після попередньої операції була натиснута клавіша, повертається її код. Якщо не була натиснута, то предикат закінчується невдачею

    nl - код двох клавіш - перехід на новий рядок

    write (x1, x2, ...)

    (змінні і константи): (i, i, ...) -- видає на поточний пристрій запису констант і зміст змінних

    writef (, X1, x2, ...)

    (string,): (i, i, ...)

    Структура формату:

    "% - m.pw", де% - ознака форматного виводу

    якщо задано "-", то знаки повинні вирівнюватись по лівому краю, якщо не заданий - по правому

    m - довжина поля виводу

    p - к-ть цифр після точки

    w - тип числа, замість w записується f, якщо виводиться число в десятковому вигляді, e - в експотенціальной формі, q - в самому короткому форматі.

    Предикати роботи з символьними даними.

    str_lon (,)

    (string, integer): (i, i) (i, 0)

    якщо задано (i, i), перевіряється довжина рядка, якщо (i, 0) - повертається довжина рядка

    Перетворення типів

    Всі Предикативні перетворення діють в обидві сторони. Випадок (i, i) перевіряє істинність для усіх типів, окрім real. Перетворення між типами string, symbol і real, integer пр-ся (?) автоматично.

    char_int (,)

    (сhar, integer): (i, 0) (0, i) (i, i)

    str_char (,)

    (string, сhar): (i, 0) (0, i) (i, i)

    str_int (,)

    (string, real): (i, 0) (0, i)

    і т. д.

    Робота з командами операційної системи

    Необхідною умовою для роботи з предикатами цієї групи є наявність підкаталогу DOS, в якому б був записаний мінімум command.com

    system ()

    (string): (i) - передає команду OS

    date (,,)

    (integer, integer, integer): (i, i, i) (0, 0, 0) - встановлює, якщо (i, i, i), або повертає, якщо (0, 0, 0) системну дату

    time ... - То ж

    dir (,,)

    (string, string, string): (i, i, 0) - видаються на екран специфіковані файли з каталогу по маршруту. Можливо вибрати з каталогу ім'я одного файлу з допомогою стрілок керування курсором, при натисканні ім'я цього файлу присвоюється третьому аргументу предиката

    Спеціальні предикати мови Turbo Prolog

    bouncl () - "Істина, якщо змінна є конкретизованої

    free () - "Істина, якщо змінна не є конкретизованої

    fail - завжди помилкові. спричиняє повернення для перевірки бази у правилах

    ! - (Cat) -- предикат відсікання, обмежує повернення

    exit -- зупиняє виконання призначеної для користувача програми і передає управління меню Turbo Prolog

    trace - загальна включення режиму налагодження. Вказується на початку вихідної програми

    trace ()

    (symbol): (i) (0) - встановлює, якщо i, або повертає, якщо 0, поточний режим налагодження. Як статусу можна використовувати on/off. Використання цього предиката припускає наявність trace в початок програми

    diagnostics -- дозволяє видати аналіз програми в процесі компіляції. Аналіз включає імена використовуваних предикатів. Для кожного імені визначається, чи є аргументи конкретного предиката фактами або вказується конкретність предиката.

    nowarnings -- відключає попередження в процесі компіляції

    project "ім'я файлу "- дана програма є частиною проекту

    include "ім'я файлу "- до компіляції включається файл з вказаним ім'ям

    Управління ходом виконання програм на мові ТР.

    1. Рекурсія.

    У механізм опрацювання програм на мові ТР закладена рекурсія, тобто обчислення значення функції за допомогою тієї ж функції, але зі зміненими параметрами. Рекурсія в ТР реалізується в 2 етапи:

    1) вихідна завдання розбивається на більш дрібні приватні задачі і формуються приватні рішення і на основі яких потім буде отримано спільне рішення завдання.

    Процес розбиття задачі на підзавдання наз-ся редукцією. Редукція завершується в тому випадку, якщо сформована підзадача, яка може бути вирішена безпосередньо.

    2) збірка рішення, починаючи від самого (?) останнього до самого загального. Для використання рекурсії в програмах необхідно використовувати наступний формат правила рекурсії:

    if

    (1)

    (2)

    (3)

    (4)

    (5)

    У структурі правила компоненти (1), (3), (5) можуть бути присутніми або відсутніми з урахуванням специфіки розв'язуваної задачі. Компоненти (2), (4) обов'язкові, так як вони організовують апарат активізації правила рекурсії. Зазвичай компонента (1) - це предикати, які не впливають на рекурсію. Компонента (3) містить предикати, з допомогою яких формуються нові значення аргументів, що беруть участь в рекурсії, а (5) включає предикати, які формують за допомогою апарату рекурсії шукані значення. (5) - складання рішення. (2) - використовується для зупинки рекурсії, а (4) - Реалізує повторний виклик рекурсивного правила для нових значень аргументу. У залежності від заданих граничних умов розрізняють спадну і висхідну рекурсію.

    Приклад.

    Визначення n-го терма послідовності 1, 1, 2, 6, 24, ...

    N 0 1 2 3 4 ...

    0 терм = 1 3 терм = 2 * 3

    1 терм = 1 * 1 4 терм = 6 * 4

    2 терм = 1 * 2 5 терм = 24 * 5

    Для позначення того факту, що n-й член послідовності дорівнює V, вводиться предикат наступного виду: posl (N, V)

    Фрагмент програми:

    domains

    N, V = integer

    predicates

    posl = (N, V)

    clauses

    posl (0, 1)

    posl (N, V) if

    1) N> 0

    2) M = N-1

    3) posl (M, U)

    4) V = U * N

    goal

    posl (3, x)

    Рішення завдання проводиться в 2 етапи:

    I етап.

    1. Проводиться спроба задовольнити запит користувача, використовуючи першу затвердження в розділі clauses (posl (3, x) зіставляється з posl (0, 1)). Так як 0 не зіставляється з 3, то спроба завершується невдачею. Після цього posl (3, x) зіставляється з заголовком 2-го затвердження posl (N, V). Звідси N отримує значення 3, а V зв'язується з х і система переходить до доведення підцілі в тілі правила:

    1) N> 0 узгоджується при N1 = 3

    2) M1 = N1-3 узгоджується при N1 = 3 і M1 = 2

    3) posl (2, U1) призводить до другого рекурсивного поводження і так як це звернення не узгоджено з першим, то останнє твердження (V = U * N) відкладається.

    2. Узгодження posl (2, U1) з posl (0, 1) призводить до невдачі. Відбувається зіставлення з заголовком 2-го твердження, що закінчується успіхом, при цьому N2 = 2 і V = U1. відбувається доказ за метою цього твердження:

    1) узгоджується при N2 = 2

    2) узгоджується при N2 = 2 і М2 = 1

    3) posl (1, U2) призводить до повторного рекурсивного обігу

    4) відкладається

    3. Узгодження posl (1, U2) з posl (0, 1) призводить до невдачі. Зіставлення з заголовком 2-го затвердження закінчується невдачею, при N3 = 1 і V = U2 . Відбувається доказ за метою цього твердження:

    1) узгоджується при N3 = 1

    2) узгоджується при N3 = 1 і М3 = 0

    3) posl (0, N3) призводить до повторного рекурсивного обігу.

    Отримане цільове твердження зіставляється з першим цільовим твердженням posl (0, 1), при цьому U3 отримує заначеніе 1.

    На цьому етап розбиття закінчується.

    II. Етап збирання рішення.

    Проводиться спроба узгодження самого останнього з відкладених цільових тверджень, якщо це вдається, то проводиться узгодження передостаннього цільового твердження, і так до самого першого з відкладених, тобто запиту.

    1) U2 = U3 * 1 , Так як U3 = 1 то U2 = 1

    2) U1 = U2 * 2 U1 = 2

    3) X = U1 * 3 X = 6

    2. Повернення і відсікання.

    У процесі реалізації запиту інтерпретатору мови необхідно аналізувати безліч фактів і правил, к-рие витягуються в процесі декількох переглядів відповідних баз фактів. При цьому в процесі одного перегляду формується часткове вирішення. Процес в PROLOGе виконується автоматично шляхом позначки або заповнення тих модулів, к-рие аналізувалися перед поточної метою, з тим, щоб виключити отримане приватне рішення з дальнейнего розгляду. Цей механізм у PROLOGе наз-ся поверненням і реалізується через використання стандартного предиката fail, к-рий завжди має значення "брехня". Цей предикат змушує інтерпретатор проаналізувати ще раз базу фактів, щоб виконати більш цільове твердження для інших значень змінних. Він дозволяє отримати в базі всі можливі рішення.

    ПРИКЛАД:

    domains

    p, T = symbo L

    predicat s

    like (P, T)

    poleg (T)

    dauses

    like ( "Іванов", "пиво ").

    like ( "Іванов", "сік ").

    poleg ( "cok ")...

    otv if

    like (P, T) and

    poleg (T), nl,

    write (P),

    fail.

    goal

    otv.

    Для управління процесом виконання програм у PROLOG є вбудований предікей cut, кот. кодується в turbo-PROLOG як!. Основне призначення - зупинка процесу повернення, тобто припинення вироблення подальших рішень.

    Цей процес у Пролозі наз. Відсікання. Найчастіше предікей cut використовується спільно з fail.

    ПРИКЛАД

    .

    .

    .

    goal

    like (P, T)

    T = "кефір",

    nl,

    write ( "любитель кефіру знайдено")

    !.

    fail

    Відсікання використовується для усунення нескінченних циклів (див. попер. приклад):

    clauses

    posl (0,1) if !

    posl (N, V) if

    M = N-1

    posl (M, U)

    V = U * N

    Відсікання також використовується для пристрої. взаємовиключних тверджень.

    ПРИКЛАД

    ball (M, 'A ") if M> so,!

    ball (M, "B") if M 60 ,!.

    Список літератури

    Для підготовки даної роботи були використані матеріали з сайту http://www.parny.by.ru/

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status