
- •Лабораторная работа n 1 основы языка программирования пролог. Изучение среды turbo prolog.
- •Запустить Turbo Prolog
- •1.1 Основные понятия языка Турбо Пролог.
- •1.1.2. Факты
- •1.1. 3 . Запросы
- •1.2. Разделы программы на языке Турбо Пролог.
- •2. Среда turbo prolog 2.0.
- •2.1. Интерфейс среды Турбо Пролог 2.0.
- •2.1 Элементы главного меню и их функции:
- •2.3 Основные операции в среде Турбо Пролог.
- •2. 4 . Трассировка.
- •Лабораторная работа n 2 понятие правила и рекурсии. Встроенные предикаты.
- •1. Правила
- •1.1. Дерево вывода.
- •2. Рекурсия
- •3.Использование встроенных предикатов.
- •4. Задание для лабораторной работы
- •4.1. Варианты заданий
- •5. Контрольные вопросы.
- •Лабораторная работа № 3 интегрированная среда разработки visual prolog
- •1. Создание нового проекта.
- •2. Создание формы.
- •3. Работа с меню
- •4. Создание обработчиков нажатия на кнопку.
- •5. Задание для лабораторной работы
- •6. Контрольные вопросы.
- •2. Преобразование данных
- •3. Арифметические действия
- •Лабораторная работа № 5 построение нейросетевой экспертной системы
- •5.1. Цель работы
- •5.2. Методические указания
- •5.2.1. Постановка задачи
- •5.2.2. Критерии оценки
- •5.2.3. Ввод анализируемых данных
- •5.2.3.1. Использование файла запуска фактов
- •5.2.3.2. Использование протокола dde
- •5.3. Порядок выполнения работы
- •Лабораторная работа №6 Архитектура процессора NeuroMatrix ® nm 6403 и его функциональные возможности
- •6.3.2. Внешний интерфейс процессора
- •6.3.3. Общее описание внутренней структуры процессора
- •6.3.3.1. Описание основных элементов скалярного процессора
- •6.3.3.2. Описание основных элементов векторного процессора
- •6.3.4. Основные вычислительные блоки векторного процессора
- •6.3.4.1. Взвешенное суммирование
- •6.3.4.2. Выполнение операций на векторном алу
- •6.3.4.3 Операция маскирования
- •6.3.4.4 Обработка данных функцией активации
- •6.3.4.5 Циклический сдвиг вправо операнда х при взвешенном суммировании
- •6.3.4.6 Порядок выполнения преобразований над данными на вп
- •6.4. Описание и порядок пользования программой nmCalculator запустить nmCalculator
- •6.4.1 Общие сведения о программе
- •6.4.2 Формирование векторной команды
- •6.4.3 Разбиение рабочей матрицы и запись весовых коэффициентов
- •Контрольные вопросы
- •Лабораторная работа № 7 Программирование процессора NeuroMatrix ® nm 6403
- •7.2.3 Типы скалярных команд
- •7.2.4 Типы векторных команд
- •7.2.5 Регистры процессора
- •7.2.5.1 Основные регистры
- •7.2.5.2 Регистровые пары
- •7.3. Примеры простейших программ
- •7.4. Порядок выполнения работы
4. Создание обработчиков нажатия на кнопку.
Для создания обработчика нажатия на кнопку pushButton поступают следующим образом: в контекстном меню ветви <имя формы>.frm выбрать Code Expert. В окне Dialog and Window Expert выбрать команду Control /<название кнопки>. Затем в редакторе текста программы добавить необходимый обработчик.
Пример. При нажатии на кнопку pushButton _ ctl вывести в компонент staticText надпись «Искусственный интеллект».
Для этого разместить на форме компоненты pushButton _ ctl и staticText как показано на рисунке.
Рис 3.3.
Для того чтобы вывести текст в компонент staticText используется метод setText ( string : Title ), где Title - выводимый текст. Таким образом обработчик нажатия на кнопку будет следующий
onPushButton(_Source) = button::defaultAction():-staticText_ctl:setText(" Искусственный интеллект ").
Пример. При нажатии на кнопку pushButton _ ctl вывести в компонент staticText текст введенный в поле edit _ ctl.
Для этого разместить на форме компоненты pushButton _ ctl , staticText и edit _ ctl как показано на рисунке.
Рис 3.4.
Для того чтобы получить текст из компонента staticText используется метод getText (). Таким образом, обработчик нажатия на кнопку будет следующий
onPushButton(_Source) =button::defaultAction():-staticText_ctl:setText(edit_ctl:getText()).
Пример . Написать программу, обрабатывающую базу знаний «Родители».
Создать форму, разместить на ней компонент Edit, 2 компонента Push Button (кнопки Cancel и Help удалить) и компонент ListBox как показано на рисунке 3.5.
Установить у них следующие свойства
Форма - Name = form1, Title = Form1
Edit1 - Name = edit_ctl
PushButton1 - Name = pushButton_ctl, Text = Find Child
PushButton2 - Name = clear_ctl, Text = Clear
LisBox1 - Name = listBox_ctl, Sort=false ( без галочки )
Активизировать команду File / New как описано выше для вывода формы.
В дереве проекта дважды щелкнуть по ветке Form1.pro. В появившемся окне ввести следующую базу знаний:
predicates
родитель :(string,string) nondeterm (i,o) .
clauses
родитель("пам", "боб").
родитель("том", "боб").
родитель("том", "лиз").
родитель("боб", "энн").
родитель("боб", "пат").
родитель("пам", "джим").
Примечание.
В описании предиката родитель установлен режим nondeterm , т.е. результатом выполнения предиката может быть удача ( succeed ), неудача ( fail ) и возвращение на исходную позицию ( BacktrackPoint ), кроме того указано что первый аргумент предиката будет использован для записи ( input ), а второй для чтения ( output ).
В обработчике нажатия на кнопку Find Child ( pushButton _ ctl ) записать следующую процедуру
onPushButton(_Source) = button::defaultAction():-
X = edit _ ctl : getText (), /* прочитать имя родителя из поля edit _ ctl и поместить его в переменную Х*/
родитель ( X , Y ), /*Обработать предикат родитель */
listBox _ ctl : add ( Y ), /* в случае успешного сопоставления вывести значение переменной Y в listBox _ ctl и*/
fail , /*проверить следующий факт */
!. /*в случае неудачи перейти к следующему предикату процедуры */
onPushButton(_Source) = button::defaultAction():-
listBox _ ctl : getCount ()<>0, /*если найдены дети, то*/
listBox _ ctl : add ("Больше детей нет"), /* вывести сообщение, иначе ... */
!. /* перейти к следующему предикату процедуры */
onPushButton(_Source) = button::defaultAction():-
listBox_ctl:add("Соответствий не выявлено"). /* в случае неудачного сопоставления вывести сообщение в listBox _ ctl */
В обработчике нажатия на кнопку Clear ( clear _ ctl ) ввести следующий предикат
onClear(_Source) = button::defaultAction():-
listBox_ctl:clearAll().