- •Методи та засоби комп’ютерних інформаційних технологій
- •Об’єктно-орієнтоване програмування
- •Інженерна комп’ютерна графіка
- •Основи автоматизованого проектування складних об’єктів та систем
- •Організація баз даних та знань
- •Логічне програмування
- •1.Goal: батьки(X,y,_);
- •2.Goal: батьки(_,_,х).
- •Числові методи в інформатиці
- •Основи системного аналізу об’єктів та процесів комп’ютеризації
- •Моделювання систем
- •Комп’ютерні мережі
- •Основи проектування систем штучного інтелекту
- •Критерії
Логічне програмування
Приклади типових завдань.
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],[три,один,сім])