- •1.2. Алгоритм
- •1.3. Предмет науки програмування
- •1.4. Застосування мов програмування
- •1.5. Стандартизація мов програмування
- •1.6. Середовище розробки
- •1.7. Тестування і верифікація програм
- •Лекція 2. Алгоритми і обчислення
- •2.1. Алгоритми
- •2.2. Обчислювальні машини
- •2.3. Основи фон-нейманівської архітектури
- •Лекція 3. Парадигми програмування
- •3.1. Базові парадигми програмування
- •Процедурне програмування
- •Абстрактна семантика процедурних програм.
- •Денотаційна семантика.
- •Операційна семантика
- •Структурність і модульність
- •3. 3. Модульне програмування
- •3.4. Об’єктно-орієнтовне програмування
- •3.5. Функціональне програмування
- •3.6. Логічне програмування
- •3.6. Алгебраїчна парадигма
- •Висновок
- •Лекція 4. Огляд основних мов програмування
- •4.1. Мова Picmkalkul Конрада Цузе
- •4.1.1. Історичні передумови
- •4.1.2. Огляд мови
- •4.2. Мінімальне програмування на апаратному рівні: псевдокоди
- •4.2.1. Мова Short Code
- •4.2.2. Система Speedcoding
- •4.2.3. Система "компіляції" univac
- •4.2.4. Суміжна робота
- •4.3. Комп'ютер ibm 704 і мова fortran
- •4.3.1. Історична ретроспектива
- •4.3.2. Процес розробки
- •4.3.3. Огляд мови fortran I
- •4.3.4. Огляд мови fortran II
- •4.3.5. Мови fortran IV, fortran 77 і fortran 90
- •4.4. Функціональне програмування: мова lisp
- •4.4.1. Витоки робіт в області штучного інтелекту та обробка списків
- •4.4.2. Процес розробки мови lisp
- •4.4.3. Огляд мови
- •4.4.5. Два нащадки мови lisp
- •4.4.6. Споріднені мови
- •4.5. Перший крок до удосконалення: мова algol 60
- •4.5.1. Історична ретроспектива
- •4.5.2. Початкова стадія розробки
- •4.5.3. Огляд мови algol 58
- •4.5.4. Прийняття звіту про мову algol 58
- •4.5.5. Процес розробки мови algol 60
- •4.5.6. Огляд мови algol 60
- •4.5.7. Оцінка мови algol 60
- •Лекція 5. Трансляція і формальні граматики
- •5.1. Транслятори
- •5.2. Процес трансляції
- •5.3. Формальні граматики. Нбф-граматика
- •Лекція 6. Java - мова ооп
- •6.2. Основні властивості програм і перші приклади
- •6.3. Арифметичні і побітові оператори мови Java
3.6. Логічне програмування
Для представлення даних використовуються терми і предикатні терми. Алгоритми представляються за допомогою аксіом і правил виведення. Елементарним кроком обчислень є уніфікація і підстановка.
Об’єкт, що співставляється логічній програмі, являє собою семантичну модель логічної системи, яку можна також розглядати як опис відповідної предметної області. Вхідні дані представляються за допомогою мови запитів. Кожний запит можна розглядати як систему логічних (алгебраїчних, якщо предикат рівності є одним із предикатів) рівнянь, а стратегія є стратегією пошуку розв’язків цих рівнянь. Стратегія для логічної мови визначає побудову дерева пошуку виведення. Для цієї парадигми існує набагато більше свободи при виборі способу розв’язку задач, ніж для інших парадигм, і тому практика логічного програмування породила цілий ряд спеціальних засобів для управління стратегіями. Як правило, ці засоби включаються в мову (наприклад, різні види оператора відтинання (cut-оператор)).
Логічна програма обчислення НСД. Для побудови логічної програми представимо бінарну функцію НСД у вигляді тернарного предиката НСД, який визначається таким чипом: НСД1 (x,y,z) = 1 ⇔ НСД(x, у) = z.
НСД1 (x,y,z).
begin
НСД1(х,x,x);
НСД1(х,y, z) : -(х > у)& НСД1(x -y,y,z)
НСД1(x, у, z) : - (х < у)& НСД1(x, у - x, z)
НСД1(
,
,
)?
- запит.
end
Однією із мов логічного програмування є Пролог.
При побудові програм Прологу використовується той же підхід, що й у предикативних логіках. Для опису предметної області ми трансформуємо речення природної мови, ставлячи на перше місце відношення.
Наприклад:
Японський автомобіль економний. -> економний(японський_автомобіль),
Вані подобається автомобіль, якщо він економний. ->
подобається (ваня,автомобіль) іf економний(автомобіль).
Програміст визначає об’єкти і відношення. Потім формулює правила про те, у якому разі ці відношення справджуються.
Правило , що визначає, коли речення
Вані подобається автомобіль
справджується, матиме вигляд:
Вані подобається автомобіль, якщо він економний.
У Пролозі зв’язок між об’єктом називається фактом. Факти можуть виражати як властивості , так і відношення:
економний (автомобіль), студент (Ваня).
Правила визначають які висновки можна зробити з даних правил.
Ми можемо задавати питання про пролог відношення у вигляді запитів. Пролог-система будує відповідь і виводить її до друку.
Наприклад, речення Що подобається Вані? Трансформується у запит
подобається (ваня,Що).
Правила Прологу складаються з трьох частин: голови, символу і тіла.
Наприклад, у правилі
can_buy(X, Y) :-
person(X),
car(Y),
likes(X, Y),
for_sale(Y).
can_buy(X, Y)- голова, :- символ, person(X), car(Y), likes(X, Y), for_sale(Y) - тіло.
Розглянемо програму:
predicates
can_buy(symbol, symbol)
person(symbol)
car(symbol)
likes(symbol, symbol)
for_sale(symbol)
clauses
can_buy(X, Y) :-
person(X),
car(Y),
likes(X, Y),
for_sale(Y).
person(kelly).
person(judy).
car(lemon).
car(hot_rod).
likes(kelly, hot_rod).
likes(judy, pizza).
for_sale(pizza).
for_sale(lemon).
for_sale(hot_rod).
До програми можна задати питання:
Що можуть купити judy i kelly?
can_buy(judi,X) can_buy(kelly,X).
Хто може купити бутерброд з гарячою сосискою? can_buy(X,hot_rod).
Розглянемо ще одну програму в PDC Prolog.
predicates
likes(symbol,symbol)
clauses
likes(ellen, reading).
likes(john, computers).
likes(john, badminton).
likes(leonard, badminton).
likes(eric, swimming).
likes(eric, reading).
Побудуємо запит:
Чи існує особа, яка любить читати і купатися?
likes(Person,reading) and likes(Person,swimming)
Відповіддю буде:
Person = eric
Solution
