- •Тема 1 Основные понятия и определения
- •Тема 3 Проектирование программных продуктов.
- •Основные группы методов
- •Эвристические методы
- •Метод итераций (последовательного приближения)
- •Метод декомпозиции
- •Метод контрольных вопросов
- •Тема 4 Структура и формат, статические и динамические данные.
- •Тема 5 Стандартизация программных продуктов
- •Стандартизация программных продуктов
- •Система качества пп
- •Тема 6 Модульное программирование
- •Тема 6 Модульное программирование
- •2. Минимизации количества передаваемых параметров
- •Тема 7 Эффективность и оптимизация программ
- •1. Эффективность и технологичность. Способы экономии памяти. Способы уменьшения времени выполнения
- •2. Правила оптимизации программ
- •Жертвуем памятью ради скорости
- •Жертвуем скоростью ради памяти
- •Логические правила
- •Составление процедур
- •Составление выражений
- •Тема 8 Требования и спецификация качества к программных продуктов
- •Тема 9 Защита программ
- •Тема 10 Инструментальные средства разработки программ
- •Тема 11 Коллективная разработка программных средств
- •1.1 Структура управления разработкой программных средств.
- •Тема 12 Объектный подход к разработке программных продуктов
- •Тема 13 Факторы надежности программных продуктов
- •Тема 14 Структурное программирование программных продуктов
- •Тема 15 Объектно-ориентированное программирование (ооп)
- •Тема 15 Объектно-ориентированное программирование (ооп)
- •Тема 16 Стиль программирования
- •Тема 16 Стиль программирования
- •Тема 17 Отладка, тестирование, сопровождение программ
- •2.Тестирование «белым ящиков»
- •6.Виды сопровождения и отладок пп.
- •Тема 18 Экономические аспекты создания и использования программных средств
- •Тема 20 Пакеты прикладных программ
- •Тема 21 Язык программирования Турбо-Пролог
- •Язык Пролог
- •Тема 22 Списки и структуры в Прологе.
- •Списки в Прологе
- •Тема 23 Работа с файлами и динамическими базами данных в Прологе
- •Работа с файлами
- •Работа с файлами
- •3.6.3. Динамические базы данных
Тема 21 Язык программирования Турбо-Пролог
Особенности языка. Архитектура программы. Процедурная семантика. Синтаксис языка.
Пролог (фр. Programmation en Logique) — язык и система логического программирования, основанные на языке предикатов математической логики Основными понятиями в языке Пролог являются факты, правила логического вывода и запросы, позволяющие описывать базы знаний, процедуры логического вывода и принятия решений.
Факты в языке Пролог описываются логическими предикатами с конкретными значениями. Правила в Прологе записываются в форме правил логического вывода с логическими заключениями и списком логических условий.
Особую роль в интерпретаторе Пролога играют конкретные запросы к базам знаний, на которые система логического программирования генерирует ответы «истина» и «ложь». Для обобщённых запросов с переменными в качестве аргументов созданная система Пролог выводит конкретные данные в подтверждение истинности обобщённых сведений и правил вывода.
Факты в базах знаний на языке Пролог представляют конкретные сведения (знания). Обобщённые сведения и знания в языке Пролог задаются правилами логического вывода (определениями) и наборами таких правил вывода (определений) над конкретными фактами и обобщёнными сведениями.
Начало истории языка относится к 1970-м годам.[1] Будучи декларативным языком программирования, Пролог воспринимает в качестве программы некоторое описание задачи или баз знаний и сам производит логический вывод, а также поиск решения задач, пользуясь механизмом поиска с возвратом и унификацией.
Turbo Prolog берет свои истоки из классического языка Prolog, автором которого являются Алэн Колмероэ и другие члены "группы искусственного интеллекта" Марсельского университета (Франция), реализованного впервые в 1973 г.
Turbo Prolog имеет существенные отличия от классического языка Prolog:
• Строгая типизация данных.
• Отсутствие возможности рассматривать правила как данные, т.е. добавлять и удалять их во время работы.
• Невозможность определять операции.
Turbo Prolog является компилированным языком, в отличии от многих других аналогов и отличается высокой скоростью трансляции и выполнения (что достигнуто как раз отходом от классического языка Prolog).
Программа, написанная на Turbo Prolog’е, состоит из следующих секций:
• CONSTANTS - определение констант;
• DOMAINS - определение доменов;
• DATABASE - описание предикатов внутренней базы данных (фактов);
• PREDICATES - описание предикатов;
• CLAUSES - определение предикатов и фактов;
• GOAL - внутренняя цель.
Turbo Prolog может иметь внутреннюю цель. В этом случае программа начинает выполняться с точкой входа в секции goal.
Основные понятия Turbo Prolog’а
Домен - пользовательский или стандартный тип данных. Пользовательский домен может включать в себя несколько поддоменов и может иметь несколько альтернативных значений. Также он может содержать символическое(ие) имя(ена). Например:
Domains
Mydomain = integer %определяем домен, идентичный стандартному домену integer
Mydomain2 = pair(integer, integer) %определяем домен, включающий в себя два поддомена с типом integer
Mydomain2 = blue ; red % определяем домен, который может принимать значения blue или red.
Константа - данные, которые нельзя изменить
Терм - единообразная структура для описания данных и предикатов.
Факт - структура данных во внутренней БД, которая может быть извлечена или добавлена.
Предикат - основной функциональный объект данного языка. Условно, предикат возвращает значение failure или true. Если предикат во время выполнения возвратит значение true, то предикат, который его вызвал, будет выполняться дальше. Если предикат возвратит значение failure, то произойдет откат (бектрекинг) на предыдущий недетерменированный предикат.
Детерменированный предикат - это такой предикат, который хранит в себе точки возврата.
Недетерменированный предикат выполняется только один раз и не хранит в себе никакие состояния.
Базовым принципом языка является равнозначность представления программы и данных (декларативность), отчего утверждения языка одновременно являются и записями, подобными записям в базе данных, и правилами, несущими в себе способы их обработки. Сочетание этих качеств приводит к тому, что по мере работы системы Пролога знания (и данные и правила) накапливаются. Поэтому Пролог-системы считают естественной средой для накопления базы знаний и обучения студентов и школьников принципам логического программирования