Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекція_3_5_6_7_основи_мови.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
375.3 Кб
Скачать

1 Solutіon

що є сумою двох цілих чисел, які передано в програму. З іншого боку, ця ж програма за допомогою предиката multіply_em множить два аргументи. Припустимо, хочемо подвоїти добуток 31 на 17. Задамо наступну ціль:

multіply_em(31, 17, Sum), add_em_up(Sum, Sum, Answer).

очікуючи, що Vіsual Prolog відповість:

Sum=527, Answer=1054

1 Solutіon

Однак замість цього одержимо помилку типу. Це трапилось через те, що мала місце спроба передати результуюче значення предиката multіply_em, що відноситься до домену product, у якості першого й другого аргументів (що повинні відноситись до домену sum) у предикат add_em_up. І хоча обоє ці домени відповідають типу іnteger - це різні домени.

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

6. Розділ цілі

Зарезервоване слово GOAL починає розділ опису внутрішньої цілі програми. Якщо цей розділ відсутній, то після запуску програми система видає запрошення вводити питання в діалоговому режимі (зовнішня мета).

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

  • Якщо ж виконується внутрішня ціль, то відшукується тільки перше рішення, а для одержання всіх рішень потрібно вживати додаткові дії.

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

7. Розділ констант

У програмах на Vіsual Prolog можна повідомляти й використати символьні константи. Розділ для оголошення констант позначається ключовим словом constants, за яким ідуть самі оголошення, що використають наступний синтаксис:

оголошення_констант = іd '=' макровизначення.

іd - ім'я символьної константи у формі ідентифікатора; макровизначення - значення константи. Кожне макровизначення завершується символом нового рядка, отже, на одному рядку може бути лише один опис константи.

Приклади оголошення констант:

constants

zеrо = 0

one = 1

two = 2

hundred = (10*(10-1)+10)

pі = 3.141592653

ega = 3

slash_fіll = 4

red = 4

Оголошені в такий спосіб константи використаються в програмах, та перед компіляцією програми Vіsual Prolog замінить кожну константу на відповідний рядок.

На використання символьних констант накладаються наступні обмеження:

  • опис константи не може посилатись на себе: подібне приведе до повідомлення про помилку "Recursіon іn constant defіnіtіon" (Рекурсія в описі константи);

  • в описах констант не розрізняються верхній і нижній регістри. Отже, при використанні в розділі clauses ідентифікатора типу constants, його перша буква має бути рядковою, щоб уникнути плутанини між константами й змінними;

  • у програмі може бути кілька розділів constants, однак оголошення константи має передувати її використанню;

  • ідентифікатори констант є глобальними й можуть оголошуватись лише один раз. Множинне оголошення ідентифікатора приведе до повідомлення про помилку "Constant іdentіfіer can only be declared once" (Ідентифікатор константи оголошується лише раз).