Учебно-методическое пособие для студентов, обучающихся по специальности «Информатика» icon

Учебно-методическое пособие для студентов, обучающихся по специальности «Информатика»




НазваниеУчебно-методическое пособие для студентов, обучающихся по специальности «Информатика»
страница1/5
Дата05.06.2014
Размер0.6 Mb.
ТипУчебно-методическое пособие
  1   2   3   4   5

Армавирский государственный

педагогический университет


Козырева Г.Ф.


Практикум решения задач

по курсу «Основы искусственного интеллекта»


учебно-методическое пособие

для студентов, обучающихся по специальности «Информатика»





Армавир 2005


Рецензент : зав.кафедрой ВЭА АМТИ, проф. Куроедов В.И.


Козырева Г.Ф. Практикум решения задач по курсу «Основы искусственного интеллекта». Учебно-методическое пособие для студентов, обучающихся по специальности «информатика». – Армавир, 2005г.


Рассматриваются типовые задачи и контрольные задания по курсу «Основы искусственного интеллекта». Пособие может быть использовано при организации самостоятельной работы студентов по выполнению заданий в среде Visual Prolog


Учебно-методическое пособие предназначено для студентов, обучающихся по специальности «информатика», а также может использоваться всеми, кто интересуется вопросами логического программирования.


ОГЛАВЛЕНИЕ

Введение……………………………………………..……………….4

1. Основы ПРОЛОГа……………………………………………….5

1.1. Cреда Visual Prolog: основные понятия, интерфейс……….5

1.2 Набор, редактирование и тестирование простейших
программ в режиме Test Goal…………………………………….7

1.3 Создание простейших проектов…………………………….13

1.4 Поиск с возвратом……………………………………………17

1.5 Управление поиском с возвратом: предикаты fail и отсечения ………………………………………………………...20

1.6 Арифметические вычисления……………………………….25

1.7 Рекурсия………………………………………………………28

1.8 Решение логических задач в ПРОЛОГе…………………….32

1.9 Списки………………………………………………………...36

2. Разработка графического интерфейса пользователя….....41

2.1 Создание простейших проектов с графическим интерфейсом………………………………………………….......41

2.2 Создание новых окон в проекте с использованием
кнопок и полей ввода…………………………………………….45

2.3 Использование элемента ListBox…………………………..51

3. Создание экспертных систем средствами ПРОЛОГа…...54

Литература……………………………………………..…………....61

Введение


Предлагаемое методическое пособие представляет собой описание лабораторных работ по курсу «Основы искусственного интеллекта» и предназначено для студентов, обучающихся по специальности «Информатика».

Основная цель пособия – помощь студентам в подготовке к выполнению лабораторных работ.

Целью выполнения данных лабораторных работ является приобретение студентами навыков работы в среде Visual Prolog (формальная постановка задачи, преобразование в форму, пригодную для программирования на Прологе, трассировка и оценка результатов) а также закрепление теоретических знаний, полученных при прослушивании курса лекций «Основы искусственного интеллекта».

Пособие содержит необходимый теоретический материал, примеры решения задач и задания по программированию на языке Пролог.

К каждому разделу приводятся несколько типовых задач с решениями, что позволяет студентам самостоятельно подготовиться к выполнению лабораторной работы.

В качестве результата выполнения лабораторной работы студентом должен быть подготовлен отчет о проделанной работе, который включает:

  1. Постановку задачи

  2. Входные/Выходные данные (при необходимости)

  3. Текст программы на языке Пролог (с необходимыми комментариями)

  4. Трассировку программы

  5. Результаты тестирования (наборы входных и выходных данных).

В настоящем пособии приводится список литературы, которая может быть использована при подготовке к лабораторным работам.


1. Основы ПРОЛОГа

1.1. Cреда Visual Prolog: основные понятия, интерфейс.

Prolog является языком, основанным на программировании логики (PROgramming in LOGic). Вместо детальных инструкций, предписывающих как решать ту или иную задачу, программист на языке Prolog уделяет основное внимание описанию задачи.

В среде Visual Prolog используется подход, получивший название «визуальное программирование», при котором внешний вид и поведение программ определяются с помощью специальных графических средств проектирования без традиционного программирования на алгоритмическом языке.

Visual Prolog автоматизирует построение сложных процедур и освобождает программиста от выполнения тривиальных операций. С помощью Visual Prolog проектирование пользовательского интерфейса и связанных- с ним окон, диалогов, меню, линии уведомлений о состояниях и т.д. производится в графической среде. С созданными объектами сразу же могут работать различные Кодовые Эксперты (Code Experts), которые используются для генерации базового и расширенного кодов на языке Prolog, необходимых для обеспечения их функционирования.

В Visual Prolog входят интерактивная среда визуальной разработки (VDE — Visual Develop Environment), которая включает текстовый и различные графические редакторы, инструментальные средства генерации кода, конструирующие управляющую логику (Experts), а также являющийся расширением языка интерфейс визуального программирования (VPI — Visual Programming Interface), Пролог-компилятор, набор различных подключаемых файлов и библиотек, редактор связей, файлы, содержащие примеры и помощь.

Visual Prolog поддерживается различными ОС, в том числе MS-DOS PharLap-Extended DOS, всеми версиями Windows, 16- и 32-битовыми целевыми платформами OS/2, а также некоторыми другими системами, требующими графического пользовательского интерфейса.

В зависимости от выбранного интерфейса разработчику обеспечивается доступ к множеству генераторов кода (Code Expert), всевозможным ресурсным редакторам и особым дополнительным VPI-предикатам, определениям и библиотекам. Ресурсные редакторы применяются для создания, компоновки и редактирования окон, диалогов, меню, панелей инструментов, строк помощи, строковых таблиц, ярлыков, курсоров, битовых карт и оперативной помощи. Генераторы кода на основе подобных структур создают необходимый первичный Prolog-код. В результате появляется первичный код («скелет»), готовый для компиляции, редактирования связей и выполнения.

Интерфейс Visual Prolog включает: главное меню, панель инструментов, окно проекта. Если во время последнего использования системы Visual Prolog там был открытый проект, то система автоматически вновь откроет этот проект.

На рис.1 изображен внешний вид среды Visual Prolog после запуска. В окне проекта отображаются модули открытого проекта route.prj: karta.pro, route.pro, VPITools.pro.



кнопки для работы с компонентами проекта

компоненты проекта


рис.1. Среда разработки Visual Prolog 6.1


Левая панель кнопок в окне проекта позволяет выбирать нужный компонент проекта: модуль, окно, меню и т.д. С помощью кнопок правой панели выбранный компонент можно редактировать(кнопка Edit), удалять(кнопка Delete), а также добавлять новый(кнопка New).

Пункт меню File содержит команды для работы с файлами. Чтобы создавать новое окно редактирования, можно использовать команду File | New. Эта команда создаст новое окно редактора с заголовком "NONAME".

В меню Edit представлены команды, позволяющие редактировать текст программы. Встроенный редактор системы по интерфейсу похож на обычный текстовый редактор. Можно производить вырезку, копирование и вставку текста, операции Отмена/Восстановление, которые можно активизировать из меню Edit. Также меню Edit показывает "горячие клавиши", связанные для этих действий.

Пункт меню Project содержит команды для работы с проектом: создать новый, открыть, запустить и т.д. Запуск проекта на исполнение выполняется нажатием кнопки на панели инструментов (или F9, или с помощью команд меню Project | Run).

Команды меню Options позволяют выполнять настройку проекта, устанавливать необходимые параметры.
^

ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ


Запустите среду Visual Prolog. Откройте проект, указанный преподавателем. Запустите его на исполнение и проверьте его работу.

^ 1.2 Набор, редактирование и тестирование простейших программ в режиме Test Goal

Программа на ПРОЛОГе состоит из предложений, которые могут быть фактами, правилами или запросами. Как правило, программа состоит из четырех разделов.

^ DOMAINS – секция описания доменов(типов). Секция применяется, если в программе используются нестандартные домены.

PREDICATES – секция описания предикатов. Секция применяется, если в программе используются нестандартные предикаты.

^ CLAUSES – секция предложений. Именно в этой секции записываются предложения: факты и правила вывода.

GOAL – секция цели. В этой секции записывается запрос.

Среда Visual Prolog позволяет протестировать программу без создания проекта. Для этого используется утилита Test Goal. Достаточно создать новый файл, набрать текст программы и активизировать Test Goal нажатием кнопки на панели инструментов. Автономно исполняемый файл при этом не создается. Утилита Test Goal компилирует только тот код, который определен в активном окне редактора (код в других открытых окнах или модулях проектов, если они есть, игнорируются). Test Goal находит все возможные решения задачи и автоматически выводит значения всех переменных.


Пример 1.

Имеется база данных, содержащая следующие факты:

родитель(илья, марина).

родитель(марина, ира).

родитель(елена, иван).

родитель(николай, ира).

родитель(ольга, алексей).

родитель(марина, саша).

родитель(сергей, иван).

Определить:

  1. верно ли, что Марина является родителем Саши;

  2. верно ли, что Алексей является родителем Ольги;

  3. кто является ребенком Николая;

  4. кто родители Ивана;

  5. всех родителей и их детей.

Решение.

1. Запустите среду Visual Prolog. Закройте окно проекта (если оно открыто) и откройте новый файл (File|New) (рис.2)

В появившемся окне наберите текст программы, содержащий разделы: PREDICATES (описание предиката родитель), CLAUSES (перечисляются имеющиеся факты) и GOAL (запрос).



рис.2. Рабочее окно редактора

DOMAINS

имя=string

PREDICATES

nondeterm родитель(имя, имя)

CLAUSES

родитель(илья, марина).

родитель(марина, ира).

родитель(елена, иван).

родитель(николай, ира).

родитель(ольга, алексей).

родитель(марина, саша).

родитель(сергей, иван).

GOAL

родитель(марина, саша) .


Запустите и протестируйте программу с помощью команды Project | Test Goal (можно использовать кнопку на панели инструментов или сочетание клавиш +). Результат выполнения программы будет выведен в отдельном окне



рис3. Окно вывода результата


Указание: перед следующим запуском программы следует закрыть это окно.


2. Для ответа на вопрос: верно ли, что Алексей является родителем Ольги, измените запрос:

GOAL

родитель(алексей, ольга).

После запуска программы (Project | Test Goal) будет получен ответ:

no

3. Для ответа на вопрос: кто является ребенком Николая, запишите цель:

GOAL

родитель(николай, X) .


Результат:

X=ира

1 Solution


4. Для ответа на вопрос: кто родители Ивана, укажите запрос:

GOAL

родитель(X, иван), родитель(Y, иван), X<>Y.


Результат:

X=елена, Y=сергей

X=сергей, Y=елена

2 Solutions


5. Для определения всех родителей и их детей, запишите:

GOAL

родитель(X, Y).


Результат:

X=илья, Y=марина

X=марина, Y=ира

X=елена, Y=иван

X=николай, Y=ира

X=ольга, Y=алексей

X=марина, Y=саша

X=сергей, Y=иван

7 Solutions


Пример 2

Имеются факты вида: родитель(имя, имя) и женщина(имя).

а) составить правило мать и определить, кто мать Маши.


Решение:

DOMAINS

имя=string

PREDICATES

родитель(имя, имя)

женщина(имя)

мать(имя,имя)

CLAUSES

родитель("Марина","Ирина").

родитель("Елена", "Анна").

родитель("Ольга","Марина").

родитель("Ольга","Татьяна").

родитель("Татьяна","Катя").

родитель("Анна", "Маша").

женщина("Ольга").

женщина("Маша").

женщина("Ирина").

женщина("Елена").

женщина("Анна").

женщина("Марина").

женщина("Татьяна ").

женщина("Катя").

мать(X,Y):-родитель(X,Y),женщина(X).

GOAL

мать(X,"Маша").


Результат:

X=Анна

1 Solution


b) составить правило бабушка и определить, кто бабушка Маши.

Решение:

DOMAINS

имя=string

PREDICATES

nondeterm родитель(имя,имя)

женщина(имя)

nondeterm мать(имя,имя)

nondeterm бабушка(имя,имя)

CLAUSES

родитель("Марина","Ирина").

родитель ("Елена", "Анна").

родитель("Ольга","Марина").

родитель("Ольга","Татьяна").

родитель("Татьяна","Катя").

родитель ("Анна", "Маша").

женщина("Ольга").

женщина( "Маша").

женщина("Ирина").

женщина("Елена").

женщина("Анна").

женщина("Марина").

женщина("Татьяна ").

женщина("Катя").

мать(X,Y):-родитель(X,Y),женщина(X).

бабушка(X,Z):-мать(X,Y),родитель(Y,Z).

GOAL

бабушка(X,"Маша").

Результат:

X=Елена

1 Solution


Замечание: ключевое слово nondeterm определяет недетерминированные предикаты, которые могут совершать откат назад и генерировать множественные решения. Таким образом, если задача предполагает возможность получения несколько решений, следует объявлять предикаты как недетерминированные.


c) составить правило внучка и определить, сколько внучек у Ольги и как их зовут.

Решение:

DOMAINS

имя=string

PREDICATES

nondeterm родитель(имя,имя)

женщина(имя)

nondeterm мать(имя,имя)

nondeterm бабушка(имя,имя)

nondeterm внучка(имя,имя)

CLAUSES

родитель("Марина","Ирина").

родитель ("Елена", "Анна").

родитель("Ольга","Марина").

родитель("Ольга","Татьяна").

родитель("Татьяна","Катя").

родитель("Анна", "Маша").

женщина("Ольга").

женщина( "Маша").

женщина("Ирина").

женщина("Елена").

женщина("Анна").

женщина("Марина").

женщина("Татьяна ").

женщина("Катя").

мать(X,Y):-родитель(X,Y),женщина(X).

бабушка(X,Z):-мать(X,Y),родитель(Y,Z).

внучка(X,Y):-бабушка(Y,X),женщина(X).

GOAL

внучка(X, "Ольга").


Результат:

X=Ирина

X=Катя

2 Solutions

^ ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ

1. Имеется база данных, содержащая следующие факты:

любит(“Aнна,” яблоки).

любит(“Сергей”, бананы).

любит(“Андрей”, яблоки).

любит(“Света”, шоколад).

любит(“Вова”, шоколад).

любит(“Анна”, шоколад).

любит(“Света”, апельсины).

любит(“Вова”, бананы).

Составить программу, определяющую:

  1. всех, кто любит бананы;

  2. кто любит и шоколад, и яблоки;

  3. что любит Вова;

  4. что любят и Света, и Вова.

2. Имеется база данных, содержащая следующие факты:

играет (“Саша”, футбол).

играет (“Катя”, теннис).

играет (“Саша”, теннис).

играет (“Андрей”, футбол).

играет (“Олег”, футбол).

играет (“Ольга”, теннис).

играет (“Катя”, волейбол).

играет (“Олег”, волейбол).

Составить программу, определяющую:

  1. каким видом спорта увлекается Андрей;

  2. всех, кто играет в волейбол;

  3. каким видом спорта увлекаются и Ольга, и Саша;

  4. кто увлекается и футболом, и волейболом.

3. Имеется база данных, содержащая следующие факты:

любит(“Aнна,” яблоки).

любит(“Сергей”, бананы).

любит(“Андрей”, яблоки).

любит(“Света”, шоколад).

любит(“Вова”, шоколад).

любит(“Анна”, шоколад).

любит(“Света”, апельсины).

любит(“Вова”, бананы).

фрукты(яблоки ).

фрукты(бананы).

фрукты(апельсины ).

конфеты(шоколад).

  1. используя имеющиеся факты, составить новое правило люб_фрукты(Х) и определить всех, кто любит фрукты;

  2. используя имеющиеся факты, составить новое правило люб_конфеты(Х) и определить всех, кто любит конфеты;

  3. используя имеющиеся факты, составить правило люб_вкусное) и определить всех, кто любит и фрукты, и конфеты.

4. Имеется база данных, содержащая следующие факты:

играет (“Саша”, футбол).

играет (“Катя”, теннис).

играет (“Саша”, теннис).

играет (“Андрей”, футбол).

играет (“Олег”, футбол).

играет (“Ольга”, теннис).

играет (“Катя”, волейбол).

играет (“Олег”, волейбол).

женщина(“Катя”).

женщина(“Ольга”).

мужчина(“Саша”).

мужчина(“Андрей”).

мужчина(“Олег”).

  1. используя имеющиеся факты, составить новое правило волейбол_жен(Х) и определить всех женщин, играющих в волейбол;

  2. используя имеющиеся факты, составить новое правило футбол_муж(Х) и определить всех мужчин, играющих в футбол;

  3. используя имеющиеся факты, составить правило теннис_пара(Х,Y), позволяющее найти смешанную теннисную пару (мужчина+женщина). Определить все такие пары.


Отчет о выполненной самостоятельной работе должен содержать:

  1. тему лабораторной работы;

  2. условие задачи;

  3. листинг программы;

  4. результаты ее тестирования.

^ 1.3 Создание простейших проектов

Создание проекта позволяет протестировать пример как автономную исполняемую программу. После запуска проекта на исполнение создается exe-файл, работа которого завершается после первого решения, удовлетворяющего решению задачи. Запуск программы в этом режиме не обеспечивает автоматический вывод значений переменных, поэтому необходимо использовать стандартный предикат вывода write.


Пример.

Заданы отношения-факты:

родитель(“Иван”,”Катя”).

родитель(“Анна”,” Олег ”).

родитель(“Олег”,”Дима”).

родитель(“Игорь”,”Ольга”).

родитель(“Олег”,”Виктор”).

родитель(“Игорь”,”Иван”).

мужчина(“Дима”).

мужчина(“Иван”).

мужчина(“Игорь”).

мужчина(“Олег”).

мужчина(“Виктор”).

женщина(“Катя”).

женщина(“Ольга”).

женщина(“Анна”).

Составить новое отношение-правило дед(X,Y) и определить, кто является дедушкой Кати. Создать проект и протестировать пример как автономную исполняемую программу.


^ Решение

1. Запустите среду Visual Prolog и создайте новый проект (Project | New Project), активизируется окно Application Expert (эксперт приложения).

2. Определите имя проекта (Primer) и базовый каталог, куда будет сохранен проект (например, D:\VP\Primer)




рис.4. Окно Application Expert


На вкладке Target установите параметры и нажмите кнопку Create для создания проекта (рис. 5):



рис.5. Установки на вкладке Target окна Application Expert


3. Откройте окно Compiler Options (Options | Project | Compiler Options), откройте вкладку Warnings и установите опции компилятора для созданного проекта (рис.6):



рис.6. Установки опций компилятора

Нажмите OK.

4. В окне проекта выделите файл Primer.pro и откройте его для редактирования (двойной щелчок или кнопка Edit)




рис.7. Окно проекта

Файл с расширением .pro содержит секции PREDICATES, GOAL, CLAUSES. Допишите необходимые определения так, чтобы получилась программа:

DOMAINS

имя=string

PREDICATES

родитель(имя,имя)

женщина(имя)

мужчина(имя)

дед(имя, имя)

CLAUSES

родитель("Иван","Катя").

родитель("Анна","Олег").

родитель("Олег","Дима").

родитель("Игорь","Ольга").

родитель("Олег","Виктор").

родитель("Игорь","Иван").

мужчина("Дима").

мужчина("Иван").

мужчина("Игорь").

мужчина("Олег").

мужчина("Виктор").

женщина("Катя").

женщина("Ольга").

женщина("Анна").

дед(X,Z):-родитель(X,Y), родитель(Y,Z),

мужчина(X).

GOAL

дед(X,"Катя"),write(X).

5. Откомпилируйте исходный код примера и запустите его как автономную исполняемую программу. ( Project | Run, или клавиша , или кнопка ). Результат выполнения программы должен отобразиться в окне:




рис.8. Окно вывода результата
  1   2   3   4   5



Похожие:

Учебно-методическое пособие для студентов, обучающихся по специальности «Информатика» iconСборник задач по курсу основы программирования часть 1 Учебно-методическое пособие для студентов
Бабенко Т. А., Бельченко В. Е., Козырева Г. Ф. Сборник задач по курсу "Основы программирования": Учебно-методическое пособие для...
Учебно-методическое пособие для студентов, обучающихся по специальности «Информатика» iconКонтрольные вопросы и глоссарий. Учебно-методическое пособие предназначено для студентов очной и заочной форм обучения по специальности 080502. 65 Экономика и управление на предприятии (машиностроение)
Учебно-методическое пособие предназначено для студентов очной и заочной форм обучения по специальности 080502. 65 Экономика и управление...
Учебно-методическое пособие для студентов, обучающихся по специальности «Информатика» iconМетодическое пособие для студентов специальности 270205 «Автомобильные дороги и аэродромы»
Сквозная программа практик для студентов специальности 270205 «Автомобильные дороги и аэродромы» методическое пособие./ Cсоставители:...
Учебно-методическое пособие для студентов, обучающихся по специальности «Информатика» iconМетодическое пособие для изучения раздела «структура экологического менеджмента на предприятии» дисциплины «менеджмент и маркетинг в экологии»
Методическое пособие предназначено для студентов-бакалавров, обучающихся по направлению 511100 «Экология и природопользование», а...
Учебно-методическое пособие для студентов, обучающихся по специальности «Информатика» iconСборник задач по теории вероятностей : учебно-методическое пособие / Т. А. Андревкина, Е. А. Борисова, Н. А. Иванова, О. В. Назарова, А.
Учебно-методическое пособие предназначено студентам вузов для аудиторной и самостоятельной работы, а также для подготовки к контрольным...
Учебно-методическое пособие для студентов, обучающихся по специальности «Информатика» iconВопросы для самостоятельной работы по курсу «Математика и информатика» для студентов, обучающихся по специальности 050720. 65 «Физическая культура»
«Математика и информатика» для студентов, обучающихся по специальности 050720. 65 «Физическая культура»
Учебно-методическое пособие для студентов, обучающихся по специальности «Информатика» iconУчебно-методическое пособие по дисциплине «делопроизводство в кадровой службе» Для студентов
Вражнова М. Н. Учебно-методическое пособие по дисциплине «Делопроизводство в кадровой службе». – М.: Мади (гту), 2009. – 35 с
Учебно-методическое пособие для студентов, обучающихся по специальности «Информатика» iconМетодическое пособие для студентов четвертого курса дневного и заочного отделения специальности

Учебно-методическое пособие для студентов, обучающихся по специальности «Информатика» iconМетодическое пособие для студентов непсихологических факультетов Уфа 2010 Цели и задачи практики по психологии
Данное методическое пособие состоит из трех разделов
Учебно-методическое пособие для студентов, обучающихся по специальности «Информатика» iconУчебно-методическое пособие по курсу "Социология молодёжи" для студентов специальности 040201 "Социология"
Цель настоящего спецкурса состоит в изучении молодежи как социально-демографической группы, особенностей её социализа­ции, роли и...
Разместите ссылку на наш сайт:
Занятия


База данных защищена авторским правом ©zanny.ru 2000-2014
При копировании материала обязательно указание активной ссылки открытой для индексации.
контакты