Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
mod_int1 ШПОРЫ.docx
Скачиваний:
3
Добавлен:
20.07.2019
Размер:
40.14 Кб
Скачать
  1. Пояснить поняття функтору в Пролозі. Наведіть приклади.

Функтор в Visual Prolog - не те ж саме, що функція в інших мовах програмування; це просто ім'я, яке визначає вид складеного об'єкта даних і об'єднує разом його аргументи. Функтор не означає, що будуть виконані будь-які обчислення.

Аргументи складеного об'єкта даних можуть самі бути складовими об'єктами. Наприклад, ви можете розглядати чий-небудь день народження (рис. 2), як інформацію з наступною структурою:

Рис. 2. деревоподібна структура дати народження.

На мовою Пролог це виглядає наступним чином:

birthday (person ("Leo", "Jensen"), date ("Apr", 14,1960))

  1. Поясніть метод розв’язування завдань рекурсивним способом.

Одним із способів організації повторень - рекурсія. Рекурсивна процедура - це процедура, яка викликає сама себе. У рекурсивної процедурі немає проблеми запам'ятовування результатів її виконання, тому що будь-які обчислені значення можна передавати з одного виклику в іншій як аргументи рекурсивно викликається предиката.

Логіка рекурсії проста для здійснення. Уявіть собі ЕОМ, здатну "зрозуміти":

Інформація зберігається в області пам'яті, званої стековим фреймом (stack frame) або просто стеком (stack), який створюється щоразу при виклику правила. Коли виконання правила завершується, зайнята його стековим фреймом пам'ять звільняється (якщо це не недетермінованих відкинути), і виконання триває в стекової фреймі правила-батька.

Переваги рекурсії

Рекурсія має три основні переваги:

  • вона може висловлювати алгоритми, які не можна зручно виразити ніяким іншим чином;

  • вона логічно простіше методу ітерації;

  • вона широко використовується в обробці списків.

Рекурсія - хороший спосіб для опису завдань, що містять в собі підзадачі такого ж типу. Наприклад, пошук в дереві (дерево складається з більш дрібних дерев) і рекурсивна сортування (для сортування списку, він поділяється на частини, частина сортуються і потім об'єднуються разом).

Логічно рекурсивним алгоритмам властива структура індуктивного математичного докази. Наведена вище рекурсивна програма обчислення факторіала описує нескінченну безліч різних обчислень за допомогою всього лише двох пропозицій. Це дозволяє легко побачити правильність цих пропозицій. Крім того, правильність кожної пропозиції може бути вивчена незалежно від іншого.

  1. Яке призначення секції Прологу – Predicates. Наведіть приклади.

Якщо в розділі clauses програми на Visual Prolog описаний власний предикат, то його необхідно оголосити в розділі predicates (предикатів). У результаті оголошення предиката повідомляється, до яких доменах (типами) належать аргументи цього предиката.

  1. Яке призначення секції Прологу – Clauses. Наведіть приклади.

В розділ clauses (пропозицій) містяться всі факти і правила, що складають програму. Всі пропозиції для кожного конкретного предиката в розділі clauses повинні розташовуватися разом. Послідовність пропозицій, що описують один предикат, називається процедурою.

Намагаючись вирішити мета, Visual Prolog (починаючи з першого речення розділу clauses) буде переглядати кожен факт і кожне правило, прагнучи знайти зіставлення. У міру просування вниз по розділу clauses, вінвстановлює внутрішній покажчик на першу пропозицію, що є частиною шляху, що веде до рішення. Якщо таке речення не є частиною цього логічного шляху, то Visual Prolog повертається до встановленого вказівником і шукає чергове підходяще зіставлення, переміщаючи вказівник на нього (цей процес називається пошук з поверненням).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]