§ 19. Ветвления | Экспертная система

Планирование уроков на учебный год (по учебнику К.Ю. Полякова, Е.А. Еремина, углубленный уровень)


Уроки 31 - 34
§19. Ветвления



Содержание урока

Условный оператор

Составной оператор

Ветвления в других языках программирования

Вложенные условные операторы

Сложные условия

Логические переменные

Экспертная система

Выводы. Интеллект-карта

Вопросы и задания

Практическая работа № 11 «Ветвления»

Практическая работа № 12 «Сложные условия»

Практическая работа № 13 «Логические переменные»

Практическая работа № 14 «Экспертная система» (проект)


Экспертная система


Эксперт — это человек, который обладает глубокими теоретическими знаниями и практическим опытом работы в некоторой области. Например, врач-эксперт хорошо ставит диагноз и лечит потому, что имеет медицинское образование и большой опыт лечения пациентов. Он не только знает факты, но и понимает их взаимосвязь, может объяснить причины явлений, сделать прогноз, найти решение в конфликтной ситуации.

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

Экспертная система содержит базу знаний, в которой хранятся факты и правила, по которым из этих фактов делаются выводы.

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

Предположим, что в базу знаний внесены следующие правила:

• если у животного есть перья, то это птица;
• если животное кормит детенышей молоком, то это — млекопитающее;
• если животное — млекопитающее и ест мясо, то это — хищник.

Диалог пользователя с экспертной системой может быть, например, таким (ответы пользователя выделены курсивом):

Это животное кормит детей молоком? (Нет.)

Это животное имеет перья? (Да.)

Это птица.

Для того чтобы определить последовательность вопросов, эксперт строит дерево решений, например такое (рис. 3.3).

Рис. 3.3

Рис. 3.3

В прямоугольниках записаны вопросы, которые задаёт система пользователю, у стрелок — его возможные ответы («да» или «нет»). Жирным шрифтом выделены выводы — результат работы экспертной системы.

Постройте трёхуровневое дерево решений для своей экспертной системы.

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

Человеку удобнее вводить ответ словами («да», «нет»). Для сохранения в памяти такого ответа нужно использовать переменную специального типа — строку символов. Такой тип данных в алгоритмическом языке называется литерным (от слова «литерный» — буквенный) и обозначается лит, а в Паскале называется строковым и обозначается словом string (в переводе с английского — строка):

лит ответ               var otvet: string;

Программа начинает диалог с вопроса «Кормит детей молоком?» и в зависимости от ответа выбирает одну из двух ветвей дерева решений (см. рис. 2.3).

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

Обратите внимание, что символьные строки можно сравнивать с помощью оператора «=» так же, как и числа.

Разберём дальнейшие действия системы при первом ответе «да». Во-первых, нужно вывести первый результат: «Млекопитающее». Во-вторых, в зависимости от ответа на второй вопрос надо сообщить второй результат:

Вторую ветвь самого внешнего условного оператора (вариант 2) вы можете написать самостоятельно.

Обратите внимание, что условие ответ=!да! сработает только тогда, когда пользователь введёт ответ именно так, всеми строчными буквами. Если он наберёт «Да» (с прописной буквы), программа примет это как ответ «нет». Чтобы решить эту проблему, нужно использовать сложное условие:

если ответ='да' или ответ='Да! то ...

или на Паскале:

if (otvet='да') or (otvet='да') then begin

Итак, теперь вы умеете использовать переменные ещё одного типа — символьные строки.

Следующая страница Выводы. Интеллект-карта



Cкачать материалы урока







Наверх