- •3. Що зазвичай являє собою програма на мові Пролог?
- •5. З яких розділів зазвичай складається програма на Visual Prolog?
- •10. Назвіть правила оголошення предикатів.
- •11. Назвіть правила іменування предикатів.
- •12. Перелічіть основні домени в Visual Prolog.
- •13. Поясніть, коли потрібно декларувати домени аргументів предикатів, а коли ні.
- •21. Як закоментувати рядок або частину програми в Пролозі?
- •1. Дайте визначення поняттю «уніфікація» та поясність процес уніфікації цільового твердження з реченням.
- •3. Поясніть, навіщо використовується точка пошуку з поверненням.
- •1. Назвіть види повторень, які реалізовані в Пролозі.
- •4. Де зберігаються значення змінних при рекурсії?
1. Назвіть види повторень, які реалізовані в Пролозі.
Visual Prolog не має конструкцій For, While, Repeat. Не існує прямого способу вираження
повтору. Пролог забезпечує тільки два види повторень – відкат, за допомогою якого
здійснюється пошук багатьох рішень в одному запиті, і рекурсію, в якій процедура викликає сама себе. Visual Prolog розпізнає спеціальний випадок рекурсії, а саме хвостову рекурсію, і компілює її в оптимізовану ітераційну петлю. 2. Дайте визначення поняттю «рекурсивна процедура».
Рекурсивна процедура – це процедура, яка викликає сама себе. В рекурсивній процедурі немає проблеми з запам'ятовуванням результатів її виконання, тому що будь-які обчислені значення можна передавати з одного виклику в інший як аргументи предиката, що рекурсивно викликається. 3. Назвіть основні переваги і недоліки рекурсії.
Рекурсія має три основні переваги:
вона може виражати алгоритми, які не можна зручно виразити ніяким іншим
чином;
вона логічно простіше методу ітерації;
вона широко використовується в обробці списків.
У рекурсії є один великий недолік – вона «з’їдає» пам'ять
4. Де зберігаються значення змінних при рекурсії?
Інформація зберігається в області пам'яті, яка називається стековим фреймом (stack
frame) або просто стеком (stack), який створюється кожного разу при виклику правила. Коли виконання правила завершується, зайнята його стековим фреймом пам'ять звільняється (якщо це не недетермінований відкат), і виконання триває в стековому фреймі правила-батька. 5. Чим відрізняється хвостова рекурсія від звичайної рекурсії?
Ця процедура є хвостовою рекурсією, яка викликає себе без резервування нового стекового фрейму, і тому не виснажує запас пам'яті.
6. Чи можна змінювати значення змінної в VisualProlog? Увага! В Visual Prolog Ви не можете змінити значення змінної.
