- •2.2.2.1 Вызов Турбо-Пролога и главное меню системы
- •2.2.3 Редактор Турбо-Пролога
- •2.2.3.1 Создание и редактирование программного файла
- •3 Лекция №2. Элементы и конструкции языка Турбо-Пролог
- •3.1 Основные вопросы
- •3.2 Текст лекции
- •3.2.1.1 Имена (идентификаторы)
- •3.2.2.1 Предикаты
- •3.2.2.2 Факты
- •3.2.2.3 Правила
- •3.2.2.4 Цели
- •4 Лекция №3. Объекты данных. Константы, переменные, структуры, списки.
- •4.1 Основные вопросы
- •4.2 Текст лекции
- •Стандартные типы доменов Турбо-Пролога
- •4.2.2.1 Константы
- •4.2.2.2 Переменные
- •4.2.2.3 Структуры
- •4.2.2.3 Списки
- •5 Лекция №4. Структура программы на Турбо-Прологе
- •5.1 Основные вопросы
- •5.2 Текст лекции
- •5.2.2 Структура программы на Турбо-Прологе – до 10 мин.
- •5.2.3.1 Раздел опций компилятора
- •5.2.3.2 Раздел констант
- •5.2.3.3 Раздел доменов
- •5.2.3.4 Раздел предикатов
- •5.2.3.5 Раздел утверждений
- •5.2.3.6 Раздел дбд
- •5.2.3.7 Раздел целей
- •6 Лекция №5. Унификация и поиск с возвратом: программа с фактами
- •6.1 Основные вопросы
- •6.2 Текст лекции
- •7 Лекция №6. Унификация и поиск с возвратом: программа с фактами и правилом
- •7.1 Ключевые (основные) вопросы (моменты)
- •7.2 Текст лекции
- •8 Лекция №7. Унификация и поиск с возвратом: программа с фактами и несколькими правилами
- •8.1 Основные вопросы
- •8.2 Текст лекции
- •9 Лекция №8. Вопросно-ответные системы
- •9.1 Основные вопросы
- •9.2 Текст лекции
- •10 Лекция №9. Средства отладки в Турбо-Прологе
- •10.1 Основные вопросы
- •10.2 Текст лекции
- •/*Программа 5 */
- •11 Лекция №10. Простейший ввод-вывод. Окна.
- •11.1 Основные вопросы
- •11.2 Текст лекции
- •11.2.1 Простейший ввод-вывод
- •11.2.2 Окна
- •12 Лекция №11. Управление поиском решений: предикаты отсечения и возврата
- •12.1 Основные вопросы
- •12.2 Текст лекции
- •/* Программа 5 */
- •Vse_reshenia:-roditel(X,y), write(X, "родитель", y), nl, fail.
- •Vita - родитель sasha
- •/* Программа 6 */
- •/* Программа 7 */
- •13 Лекция №12. Арифметика в Турбо-Прологе. Рекурсия.
- •13.1 Основные вопросы
- •13.2 Текст лекции
- •/* Программа 8 */
- •/* Программа 9 */
- •14 Лекция №13. Динамические базы данных
- •14.1 Основные вопросы
- •14.2 Текст лекции
- •/* Программа работы с дбд*/
- •15 Лекция №14. Работа со списками
- •15.1 Основные вопросы
- •15.2 Текст лекции
- •/* Программа 10*/
- •/* Программа 11 */
- •/* Программа 12 */
- •16 Лекция №15. Экспертные системы
- •16.1 Основные вопросы
- •16.2 Текст лекции
- •/* Программа эс*/
5 Лекция №4. Структура программы на Турбо-Прологе
Время: 2 часа (90 мин.)
5.1 Основные вопросы
- общая структура программы;
- разделы программы.
5.2 Текст лекции
5.2.2 Структура программы на Турбо-Прологе – до 10 мин.
Любая программа, написанная на Турбо-Прологе, может состоять из нескольких разделов. Начало каждого раздела программы (за исключением раздела опций компилятора) обозначается ключевым словом, за которым следует описание соответствующих программных объектов. Структура программы на Турбо-Прологе выглядит следующим образом:
/* Комментарии */
<опции компилятора>
constants /* раздел констант */
<описание констант >
domains /* раздел доменов */
<описание доменов >
database /* раздел базы данных */
<описание предикатов базы >
predicates /* раздел предикатов */
<описание предикатов >
goal /* раздел целей */
<целевое утверждение>
clauses /* раздел утверждений */
<описание фактов и правил>
/* Комментарии */
В программе на Турбо-Прологе могут присутствовать не все разделы.
Турбо-Пролог обеспечивает возможность включения в программу комментариев, которые обрамляются символами /* и */, и могут быть помещены в любом месте программы.
Турбо-Пролог является позиционно-независимой системой программирования и, поэтому, избыточные пробелы в предложениях языка игнорируются.
5.2.3 Разделы программ – до 80 мин.
5.2.3.1 Раздел опций компилятора
Раздел опций компилятора служит для установки режимов работы компилятора с помощью директив (опций). Некоторые директивы можно вводить также из Турбо-среды. Однако следует помнить, что директива в тексте программы имеет преобладающий приоритет и её нельзя отменить или заменить директивой из Турбо-среды. Краткие характеристики основных опций компилятора приводятся в ниже:
1. Опция include позволяет включать в компилируемую программу другие присоединяемые к ней программные модули. Имена этих модулей должны задаваться с расширением .pro. Формат опции:
include "<имя модуля>.pro"
2. Опция code позволяет изменять максимально возможный размер оперативной памяти, отводимый под размещение программы. По умолчанию code=1024. Здесь число задаёт количество т.н. параграфов, размер каждого из которых 16 байтов. Формат опции:
code=<целое число>
3. Опция nobreak подавляет опрос клавиатуры на поступление сигналов Ctrl-C или Ctrl-Break при выполнении предикатов программы.
4. Опция nowarning подавляет предупреждения о том, что переменная встречается только один раз, или что она не связанная (номера ошибок, выдаваемые компилятором: 420 или 3007).
5.Опция checkdeterm обеспечивает выдачу предупреждений в случае использования недетерминированных предикатов, которые в ходе возвратов (бэктрекинга) ведут к альтернативным решениям.
6. Опции trace и shorttrace используются при отладке программ.
5.2.3.2 Раздел констант
Раздел constants служит для объявления символических констант, которые используются в программе. Формат описания символических констант в Турбо-Прологе следующий:
< имя константы >=<значение константы >
Описание каждой константы размещается на отдельной строке, например:
constants
dwa =2
odin =1
sto =(10*(10-1)+10)
pi =3.14
Имя константы следует начинать с маленькой буквы. Имена констант являются глобальными (т.е. область действия констант – вся программа) и могут объявляться в программе только один раз. В программе может быть несколько разделов констант, но они должны быть обязательно объявлены до их использования. Если символические константы не используются, то раздел constants в программе будет отсутствовать.
Замечание: не допускается рекурсивное определение символических констант, т.е. не допустимо, например, следующее выражение:
sto = 2 * sto / 2