
- •Предисловие
- •Лабораторная работа 1
- •Темы для предварительной проработки
- •1.1. Порядок выполнения работы
- •1.2. Содержание отчета
- •1.3. Индивидуальные задания
- •1.4. Пример решения задачи
- •Контрольные вопросы
- •Приложение 1а
- •Приложение 1б
- •Приложение 1в
- •Приложение 1г
- •Лабораторная работа 2
- •Темы для предварительной проработки
- •2.1. Порядок выполнения работы
- •2.2. Содержание отчета
- •2.3. Индивидуальные задания
- •2.4. Пример решения задачи
- •Контрольные вопросы
- •Приложение 2а
- •Приложение 2б
- •Лабораторная работа 3
- •1.4. Пример решения задачи
- •Контрольные вопросы
- •Приложение 3а
- •Приложение 3б
- •Приложение 3в
- •Приложение 3г
- •Лабораторная работа 4
- •4.4. Пример решения задачи
- •Контрольные вопросы
- •Лабораторная работа 5
- •Темы для предварительной проработки
- •5.1. Порядок выполнения работы
- •5.2. Содержание отчета
- •5.3. Индивидуальные задания
- •5.4. Пример решения задачи
- •Контрольные вопросы
- •Приложение 5а
- •Лабораторная работа 6
- •Темы для предварительной проработки
- •6.1. Порядок выполнения работы
- •6.2. Содержание отчета
- •6.3. Индивидуальные задания
- •6.4. Пример решения задачи
- •Контрольные вопросы
- •Приложение 6а
- •Приложение 6б
- •Константы типа драйвера
- •Константы режимов драйвера
- •Константы цветов
- •Константы стиля и толщины линий (для предикатов GetLineStyle, SetLineStyle)
- •Константы типа шрифта (задаются в предикате settextstyle(Font,Direction,Charsize))
- •Лабораторная работа 7
- •Темы для предварительной проработки
- •7.1. Порядок выполнения работы
- •7.2. Содержание отчета
- •7.3. Индивидуальные задания
- •7.4. Пример решения задачи
- •Контрольные вопросы
- •Приложение 7а
- •Приложение б
- •Редактор о.І. Шпільова
- •61002 Харків, вул. Фрунзе, 21
Контрольные вопросы
Назначение разделов программы.
Что такое факт и что такое правило? Какова разница между ними?
В каком разделе программы могут размещаться предикаты?
Что такое унификация переменных?
Что такое анонимная переменная?
Что такое бэктрекинг?
Как получить значения всех фактов, имеющихся в программе?
Что такое дерево решения?
Что такое машина логического вывода Пролога?
Какие стандартные предикаты используются для ввода информации?
Какие стандартные предикаты используются для вывода информации?
Как перенаправить входной/выходной потоки данных?
Объясните правила использования предикатов для работы с окнами.
Приложение 1а
Среда программирования Turbo Prolog 2.0
Таблица 1А.1 – Основные команды Turbo Prolog 2.0
Цель |
Действие |
Горячие клавиши |
Запуск среды Turbo Prolog 2.0 |
Tprolog\BIN\prolog.exe |
|
Переход в режим редактирования программы |
Esc ->Edit |
|
Компиляция программы |
Esc -> Compile |
|
Выполнение программы |
Esc -> Run |
|
Загрузка программы |
Esc -> Files -> Load |
F3 |
Отображение в окне редактора текста программы, которая уже была загружена в текущем сеансе работы |
Esc -> Files -> Pick |
|
Сохранение программы под текущим именем |
Esc -> Files -> Save |
F2 |
Сохранение программы под новым именем |
Esc -> Files -> Write to |
|
Смена текущего каталога |
Esc -> Files -> Directory |
|
Завершение работы |
Esc -> Files -> Quit |
Alt-X |
Таблица 1А.2 – Команды работы с блоками текста при редактировании программы
Цель |
Действие |
Начало отметки блока текста |
Ctrl-K-B |
Завершение отметки блока текста |
Ctrl-K-К |
Копирование выделенного блока текста |
Ctrl-K-С |
Перемещение выделенного блока текста |
Ctrl-K-V |
Продолжение табл. 1А.2
Цель |
Действие |
Удаление выделенного блока текста |
Ctrl-K-Y |
Копирование блока текста из Pick-файла |
Ctrl-K-R Выбрать имя файла из списка, выделить блок и нажать Enter |
Запись выделенного блока текста в файл |
Ctrl-K-W |
Приложение 1б
Структура Prolog-программы
Пролог-программа может состоять из ряда разделов (секций), ни один из которых не является обязательным. Каждый раздел озаглавливается. В качестве заголовков разделов выступают DOMAINS, CLAUSES, PREDICATES, CONSTANTS, GOAL.
DOMAINS – объявление областей определения (доменов). Объявления нескольких доменов не разделяются никакими знаками.
Способы объявления областей определения:
имя_домена = d
где d – область определения. Областью определения может являться один из стандартных типов – char, string, symbol, integer, real.
Пример:
i=integer
s=string
имя_домена = d*
где d – область определения. Знак * означает, что такой домен определяет список.
Примеры:
ii = integer* % Определяет список целых чисел;
список_строк = string* % Определяет список строк.
имя_домена=имя_выражения1(арг1_1,арг1_2,…);
имя_выражения2(арг2_1,арг2_2,…)
Такое объявление используется для объявления областей определения составных объектов.
Пример:
oбъект=цел(integer);стр(string)
pol=left;right
file=имя1, имя2, …
Задаются символические имена файлов, которые в программе будут связаны с физическими именами.
Пример:
file=in_file, out_file
CONSTANTS – объявление констант, используемых в программе.
DATABASE – объявление оперативной базы данных. Факты объявленной базы данных будут оперативно читаться во время выполнения программы, например, из файла. Типы аргументов всех читаемых фактов должны соответствовать объявлению. Предикаты, объявленные в этом разделе, не должны объявляться в разделе PREDICATES.
Пример:
mybase(integer,string,integer*)
Здесь объявляется база данных mybase. Первый аргумент имеет целый тип, второй – строковый, третий – список целых чисел.
PREDICATES – объявление предикатов. Указываются имена всех предикатов с областями определения их аргументов.
Пример:
любит(string,string)
p1(i,s) % В данном случае i и s воспринимаются
% как объявленные ранее домены
CLAUSES – запись всех предикатов, т.е. фактов и правил. Этот раздел представляет собой базу знаний Пролога или тело программы. Особенностью записи базы знаний является то, что одноименные факты и правила должны быть сгруппированы.
GOAL – раздел, который инициирует выполнение всей программы. В нем через запятую перечисляются все главные цели программы. Раздел завершается точкой.
Если раздел GOAL отсутствует, то после нажатия клавиши Esc и выбора команды Run в меню в стандартном диалоговом окне появляется слово Цель:. В этом случае Пролог ждет от пользователя вопроса. Вопрос задается путем ввода выражений загруженной Пролог-программы, и Пролог пытается найти ответ, если он существует.