Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Derzh_spit-2012.doc
Скачиваний:
6
Добавлен:
15.09.2019
Размер:
556.03 Кб
Скачать

Логічне програмування

Приклади типових завдань.

1.Базуючись на принципі силлогізму, довести:

а) Якщо задані дві посилки:

Всі українці люблять пісні. Всі кияни - українці.

Тоді буде коректним висловлення:

Всі кияни люблять пісні.

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

3. Напишіть фрагменти прологівських програм, які задають наступні твердження української мови:

1.Місто - Київ.

2.Місто Київ красиве.

3.Київ - столиця України.

4.Як називається столиця України?

4. Нехай у Пролог системи є набір фактів:

батьки(Микола, Ніна, Іван)

батьки(Петро, Галя, Андрій)

батьки(Віктор, Надія, Марія).

Кожний з фактів трактується так. Перші два аргументи предикату є батьками особи, яку визначає третій предикат. Що буде реалізовувати запит:

1.Goal: батьки(X,y,_);

2.Goal: батьки(_,_,х).

5. Напишіть програму Пролога, яка б визначала і друкувала значення n!. Значення n вводиться з клавіатури і є цілим.

6. Напишіть програму, яка знаходить найменше спільне кратне двох цілих чисел a i b (значення яких вводяться з клавіатури) НСК(a,b) , скориставшись формулою:

,

де НСД(a,b) позначає найбільший спільний дільник.

Для знаходження НСД(a,b) використайте окремий предикат, який підключіть до вашої програми за допомогою директиви include.

7. Наступні відношення розподіляють числа на три класи - додатні, нуль і від`ємні:

клас (Число, додатні): - Число>0.

клас (0, нуль).

клас (Число, від`ємні): - Число<0.

Зробіть цю процедуру більш ефективною за допомогою відтинання.

8. Напишіть програму знаходження максимума двох чисел, використовуючи предикат відтинання.

9. Нехай нам потрібно створити базу даних про сім`ї, яка б дозволяла оперувати з наступною інформацією. Кожна сім`я складається з трьох компонент: чоловік, дружина і діти. Оскільки кількість дітей в різних сім`ях може бути різною, тому бажано їх задавати у вигляді списку, який складається з довільної кількості елементів. Кожного члена сім`ї в свою чергу можна задати структурою, яка складається з чотирьох компонент: ім`я, прізвище, дата народження і місце роботи. Інформація про роботу може бути такою - це або “не працює”, або вказівка на місце роботи і заробітної плати.

Напишіть терм, який би дозволяв:

а)посилатись на всіх Іванових;

б)посилатись на всі сім`ї, які мають трьох дітей.

10. Написати рекурсивну і нерекурсивну програми, які обчислюють значення F(M,N) для довільної пари цілих чисел M,N>=0, яке визначається наступним чином:

M+N+1 якщо M*N=0

F(M,N)=

F(M-1, F(M,N-1)) в іншому випадку

11. Найбільший спільний дільник G(M,N) двох цілих чисел M і N можна визначити наступною рекурсивною схемою

M якщо N=0

G(M,N)=

G(N, MOD(M,N)) якщо N0

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

12. Написати програму, яка створює копію бінарного дерева.

13. Написати програму, яка визначає кількість вузлів в бінарному дереві.

14. Визначте предикат паліндром (Список). Список називається паліндромом, якщо він читається однаково, як зправа наліво, так і зліва направо. Наприклад [м,а,д,а,м].

15. Визначте відношення переклад(Список1, Список2) для модифікації списка чисел від 0 до 9 в список відповідних слів.

Наприклад,

переклад ([3,1,7],[три,один,сім])

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