1 Учреждение образования ГРОДНЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ имени ЯНКИ КУПАЛЫ ПРОГРАММА ЭКЗАМЕНА по курсу ФУНКЦИОНАЛЬНОЕ И ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ 5 семестр «Логическое программирование» для студентов специальности 1-400101 «Программное обеспечение информационных технологий» Гродно 2 Автор: Рудикова Л.В. доцент кафедры информатики и вычислительной техники УО «Гродненский государственный университет имени Янки Купалы». Рассмотрена и рекомендована для утверждения кафедрой информатики и вычислительной техники Протокол № 4от 21 ноября 2007 г. 3 № пп Формулировка вопроса 1. Процедурные и декларативные языки программирования. ПРОЛОГ – декларативный язык программирования. 2. Логические языки и их семантика 3. Основы логических высказываний в декларативных языках. 4. Основы логики предикатов 5. Логичесике основы Пролога Основные понятия, утверждения, факты, положения Процедурные языки программирования. Декларативные языки программирования. Алгоритм, дедуктивные факты и правила. Программирование логики в ПРОЛОГе. Достоинства и недостатки декларативных языков. Формализованный язык. Выражение. Алфавит. Формальная грамматика. Сущность (предмет либо объект). Множество сущностей (универсум рассмотрения). Функция. Предикат. Символы, предметные константы, функциональные и предикатные (реляционные) константы, константы, терм, элементарное предложение. Элементарное предложение. Нульместные реляционные (пропозициональные) константы. Логические связки (отрицание, импликация, конъюнкция, дизъюнкция, эквивалентность). Переменные. Высказывательные формы (формулы), кванторы. Понятие языка первого порядка. Алгебраическая система. Реляционная система. Отношение логического следования. Тавтология. Логика первого порядка (логика предикатов). Понятие эквациональной логики. Многосортные алгебраические системы. Сорт (тип), сигнатура, домен. Логика высшего порядка.: аксиомы логики, правила построения термов, свободные и связанные переменные, замкнутый (основной) терм. Понятие формальной системы. Алфавит, формулы, аксиомы и правила системы. Алфавит Умения и навыки Выявление существенных фактов реального мира и установление отношений между ними. Выявление основных объектов предметной области, их функций и предикатов. Описание взаимосвязей между предикатами предметной области. Оперирование основными понятиями и аксиомами логики предикатов. Оперирование основными понятиями. Запись 4 6. Формулы логики первого порядка 7. Алгоритм приведения произвольной формулы исчисления предикатов к множеству дизъюнктов Алгоритм унификации. Метод резолюций 8. 9. Основы ПРОЛОГа. Объекты (аргументы), отношения (предикаты). Синтаксис логики предикатов. 10. Основы ПРОЛОГа. Факты, правила, запросы. Правила записи фактов. Правила. Общий вид. Конъюнкция и дизъюнкция в правилах. логики первого порядка: переменные, , , , пропозициональные константы, логические связки, кванторы, вспомагительные символы. Терм, основной терм. Атомная (элементарная формула). Литерал (положительный, отрицательный), дизъюнкт. Конъюнктивная нормальная формаю. Предваренная (пренексная) нормальная форма. Матрица. Сколемовская нормальная форма. Основные шаги алгоритма. Понятие тождественно ложной формулы. Невыполнимое множество формул. Понятие унификации. Подстановка. Простое выражение. Основная подстановка. Унификатор. Суть метода резолюции Объект (аргумент), отношение (предикат). Логика представления объектов и отношений между ними. Синтаксис логики отношений. Имена для объектов и отношений (связей). Арность (размерность) предиката. 11. Основы ПРОЛОГа. Цели (запросы). Составные цели. Предложение. Виды предложений. Факт. Правило. Общий вид факта. Запрос. Запись фактов. Правило. Структура правила и его общий вид (заголовок и тело). Конъюнкция и дизъюнкция при записи фактов, входящих в правило. Понятие цели (запроса). Составная цель. Подцель. Правила записи цели. 12. Основы ПРОЛОГа. Переменные и константы в ПРОЛОГЕ. Анонимные переменные. Связанность Терм – синтаксическая единица ПРОЛОГа. Переменные. Константы. Назначение переменных и констант. Свободные и связанные предикатов для некоторой предметной области. Оперирование основными понятиями. Запись предикатов для некоторой предметной области. Получение из некоторой формулы эквивалентное ей множество дизъюнктов Получение наиболее общего унификатора Представление предметной области рассматриваемой задачи через логику предикатов. Запись объектов и отношений между ними. Представление истинных свойств и отношений объектов в виде фактов. Запись правила, содержащего конъюнкцию и дизъюнкцию фактов. Запись целей с использованием констант, анонимных переменных, переменных. Запись составных целей. Запись фактов и правил на языке ПРОЛОГ с использование 5 переменных. 13. Сопоставление в ПРОЛОГе. 14. Основные разделы Visual Prologпрограмм. 15. Приемы работы в среде разработки Visual Prolog. Настройки проекта. Основные окна среды разработки. переменные. Запись переменных и констант. Анонимная переменная и ее использование в ПРОЛОГе. Основы ПРОЛОГа. Переменные в фактах и правилах. Анализ фактов и правил языком ПРОЛОГ. Способы сопоставления объектов в ПРОЛОГе. Совмещенные свободные переменные. Правила, определяющие сопоставимость двух термов. Структура программы на ПРОЛОГе. Комментарии. Раздел доменов. Раздел предикатов. Раздел клаузов. Раздел целей. Создание нового проекта. Окно Application Expert. Окно Compiler Option. Окно браузера, окно редактора кода, окно тестирования, окно сообщений, окно обработки ошибок. Тестирование программы. 16. Простые объекты данных ПРОЛОГа. Переменные и константы (символы, числа, атомы). Переменная. Константа: символы, числа, атомы. 17. Составные объекты данных ПРОЛОГа. Структуры. Функторы. Понятие функтора. Общий вид функтора. Аргументы составного объекта. Декларация доменов для составного объекта. Правила декларации. Составные объекты с несколькими уровнями. Предикаты, которые используют смешанные составные домены. 18. Составные объекты данных ПРОЛОГа. Конструирование составных объектов с несколькими переменных, констант, анонимных переменных. Определение в записанных правилах входных и выходных аргументов. Создание простейших программ на языке ПРОЛОГ. Создание нового проекта, окна редактора кода. Определение каталога для хранения проекта, установка необходимых настроек. Установка необходимых опций компилятора. Создание необходимых окон, управление проектом. Тестирование программ в среде разработки Visual Prolog. Написание простейших программ на языке ПРОЛОГ, использующих простые объекты данных. Написание программ на языке ПРОЛОГ, использующих составные объекты данных Написание программ на языке ПРОЛОГ, использующих смешанные 6 уровнями. 19. Синтаксис ПРОЛОГа. Операторы. 20. Синтаксис ПРОЛОГа. Операции ПРОЛОГа. Арифметика. Операции сравнения. Оператор как функтор и как форма записи структуры. Инфиксные операторы. Варианты записи выражений, содержащих операторы. Операции в ПРОЛОГе, используемые для арифметических вычислений. Выполнение в ПРОЛОГе программ, содержащих арифметические вычисления. Операции сравнения. Сравнение чисел. 21. Унификация и поиск с возвратом. Основные правила поиска с возвратом. Унификация. Откат. Поиск целевого утверждения. Точка отката. Правила поиска с возвратом. 22. Детерминированный и недетерминированный вызов. Средства, применяемые в ПРОЛОГе для управления поиском. 23. Использование отсечений. Зеленое и красное отсечение. Предотвращение поиска с возвратом к предыдущей подцели в правиле. Недетерминированный вызов. Детерминированный вызов. Предикат fail. Предикат cut. Предикат not. 24. Использование отсечений. Предотвращение поиска с возвратом к следующему предложению. Аналог выбора из многих вариантов. Помещение проверочного условия в заголовок правила. 25. Использование отсечений. Отсечение как GoTo. Ветвление. Организация цикла Правила ПРОЛОГа как процедуры и функции. Рассмотрение отсечения как GoTo. Организация ветвления. Организация цикла. Понятие отсечения. Зеленое отсечение. Красное отсечение. Поиск одного решения. составные домены. Запись выражений, содержащих различные операторы. Написание программ на языке ПРОЛОГ, содержащих арифметические вычисления. Написание программ на языке ПРОЛОГ, содержащих операции сравнения. Написание программ на языке ПРОЛОГ и интерпретация ПРОЛОГом листинга программы для достижения поставленной цели. Написание программ на языке ПРОЛОГ, использующих предикаты fail, cut, not. Написание программ на языке ПРОЛОГ, использующих отсечение и нахождение одного решения. Написание программ на языке ПРОЛОГ, использующих выбор из многих вариантов. Написание программ на языке ПРОЛОГ, использующих поиск альтернатив, а также – 7 26. Предикаты для вывода (записи) информации в ПРОЛОГе. Предикат write. Предикат nl. Предикат wtitef. Форматы предикатов записи. 27. Предикаты для ввода (чтения) информации. Предикат readln. Предикат readint. Предикат readreal. Предикат readchar. Предикат readterm. Форматы предикатов чтения. 28. Повтор и рекурсия в ПРОЛОГе. Повторения в ПРОЛОГе. Откат. Рекурсивная процедура. Оптимизация последнего вызова. Хвостовая рекурсия. Откат с петлями. 29. Списки в ПРОЛОГе. Список как объект. Объявление списка. Голова списка. Хвост списка. Список как рекурсивная структура данных. Пузырьковая сортировка. Сортировка вставкой. Сортировка выбором. 30. Алгоритмы сортировки списков средствами Пролога (1) 31. Алгоритмы сортировки списков средствами Пролога (2) Быстрая сортировка. Сортировка слияниями 32. Встроенный предикат findall. Составные списки. Предикат findall. Аргументы предиката findall. Понятие составного списка. Объявление составного списка. циклические процедуры. Написание программ на языке ПРОЛОГ, использующих предикаты для вывода (записи) информации. Написание программ на языке ПРОЛОГ, использующих предикаты для ввода (чтения) информации. Написание программ на языке ПРОЛОГ, использующих рекурсивные процедуры. Написание программ на языке ПРОЛОГ, использующих списки. Написание программ на языке ПРОЛОГ, использующих соответствующие методы сортировки списков. Написание программ на языке ПРОЛОГ, использующих соответствующие методы сортировки списков. Написание программ на языке ПРОЛОГ, использующих предикат findall. Написание программ на языке ПРОЛОГ, использующих составные 8 33. Дополнительные разделы Прологпрограммы 34. Реализация множеств в Прологе (1) Раздел фактов. Формирование динамической базы фактов Пролога. Раздел констант. Символические константы. Ограничения, накладываемые на использование символических констант. Использование директивы include. Определение множества в Прологе. Принадлежность элемента множеству. Мощность множестваОбъединение множеств. Пересечение множеств. 35. Реализация множеств в Прологе (2) Подмножество. Разность множеств. Симметрическая разность. Дополнение множества. 36. Реализация деревьев в Прологе Некоторые понятия из теории графов. Понятие дерева. Лист, крона, высота. Задание домена для описания дерева. Некоторые предикаты для реализации операций на бинарных деревьях. Понятие двоичного справочника. Некоторые предикаты для реализации операций с двоичными справочниками. Строка. Длина строки. Конкатенация строк. Встроенные предикаты Пролога для обработки строк (frontchar, fronttoken, frontstr, concat и др.). Предикаты, используемые для преобразования строк в другие типы (и наоборот) – char_int, str_char, str_int, str_real, upper_lower, term_str. Файл. Описание файлового домена для пользовательских файлов. Внутрннее имя файла. 37. Обработка строк средствами Пролога. 38. Работа с файлами в Прологе списки. Написание программ на языке ПРОЛОГ, использующих динамическую базу фактов, а также – символические константы. Написание соответствующих программ на Прологе, реализующих основные операции над множествами Написание соответствующих программ на Прологе, реализующих основные операции над множествами Написание соответствующих программ на Прологе, реализующих основные операции с деревьями. Написание программ на языке ПРОЛОГ, использующих встроенные предикаты обработки строк и преобразования типов. Написание программ на языке ПРОЛОГ, 9 39. Логическое программирование и искусственный интеллект 40. Основы построения экспертных систем Внешнее имя файла. Стандартные предикаты Пролога для работы с файлами. Запись информации в файл.Чтение информации из файла. Некоторые дополнительные предикаты для работы с файлами.. Понятие искусственного интеллекта (ИИ). Логико-лингвистические модели в системах управления. ИИ и теория поиска выхода. Современное состояние ИИ. Перспективы и тенденции ИИ Понятие экспертной системы (ЭС). Области создания и применения ЭС. Основные принципы построения и функционирования ЭС. Примеры ЭС. работающих с файлами. Выявление основных тенденций в использовании Пролога для решения задач, свяызанных с искусственным интеллектом Написание на языке Пролог простейшей экспертной системы.