Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 38; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.129.70.129 (0.006 с.) |