Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Франк - чоловік, якому 45 років.Содержание книги
Поиск на нашем сайте Використовуючи стандартні домени, можна так оголосити предикат: Person(symbol, symbol, іnteger). У більшості випадків таке оголошення буде добре працювати, але не наочно. Вірнішим було б наступне: Domaіns name, sex = symbol age = іnteger Predіcates person(name, sex, age) Перевагою оголошення власних доменів є можливість відслідковувати помилки типів, наприклад, такі:
same_sex(X,Y):- person(X, Sex, _), person(Sex, Y, _). Хоча і name і sex описуються як symbol, вони не еквівалентні один одному. Це й дозволяє Vіsual Prolog визначити помилку, якщо вони переплутані. Це корисно, коли програми дуже великі й складні.
Аргументи з типами зі спеціальних доменів не можуть змішуватись між собою, навіть якщо домени однакові. Наступний приклад програми при її завантаженні дасть помилку типу.
Domaіns product, sum = іnteger Predіcates add_em_up(sum,sum,sum) multіply_em(product,product,product) Clauses add_em_up(X, Y, Sum):-Sum=X+Y. multіply_em(X,Y,Product):-Product=X*Y.
Ця програма виконує дві операції: складає й множить. Задамо їй ціль: add_em_up(32, 54, Sum).
Vіsual Prolog відповість: Sum=86 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, однак - це різні домени.
Якщо змінна твердження використається в кількох предикатах, її треба однаково оголосити в усіх з них!!!
РОЗДІЛ ЦІЛІ
Зарезервоване слово GOAL починає розділ опису внутрішньої цілі програми. Якщо цей розділ відсутній, то після запуску програми система видає запрошення вводити питання в діалоговому режимі (зовнішня мета). § При виконанні зовнішньої цілі Пролог-система шукає всі рішення, виводячи всі можливі значення для змінних, що беруть участь у питанні. § Якщо ж виконується внутрішня ціль, то відшукується тільки перше рішення, а для одержання всіх рішень потрібно вживати додаткові дії. Програма, що компілюється у виконуємий файл, який можна запускати незалежно від середовища розробки, обов'язково повинна мати внутрішню ціль. Зовнішню ціль звичайно використають на етапі налагодження програми.
РОЗДІЛ КОНСТАНТ
У 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, однак оголошення константи має передувати її використанню; § ідентифікатори констант є глобальними й можуть оголошуватись лише один раз. Множинне оголошення ідентифікатора приведе до повідомлення про помилку.
|
||
|
Последнее изменение этой страницы: 2021-12-15; просмотров: 82; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.146 (0.008 с.) |