- •Задание
- •Реферат
- •Содержание
- •1.1.Обоснование и выбор методов решения
- •1.2.Описание программы
- •1.2.1.Общие сведения
- •1.2.2.Функциональное назначение
- •1.2.3.Описание структур данных, используемых в программе
- •1.2.4.Описание логической структуры программы
- •1.2.4.1.Отношения между классами
- •1 Лошадь .2.4.2.Описание классов
- •1.2.5.Описание физической структуры программы
- •1.2.6.Описание основных алгоритмов программы
- •1.3.Руководство пользователя
- •1.4.Список использованных источников
- •1.5.Приложения
1.2.6.Описание основных алгоритмов программы
Вход
cur=st.Root; prev=null
Вывод
вопроса и ответа
Ответ
пользователя
нет
да
нет
да
нет
да
cur.No=null
cur.Yes=null
cur=cur.No
Предложение
ввести свой ответ и вопрос
cur
=cur.Yes
Вывести
сообщение о победе программы
Создание
новой ветви дерева
Выход
Выход
Рис.4. Алгоритм работы самообучающейся системы
На рис.4 изображена блок-схема основного алгоритма программы, на котором основана работа приложения.
Вход
Инициализация
да
нет
Преобразование
информационных полей в массив строк
нет
да
Индекс
i
меньше длины массива строк
Присваивание
строке s
значения элемента массива строк;
увеличение значения индекса i
на 1
нет
да
Индекс
i
меньше длины массива строк и сумма длин
строки s
и элемента m[i]
меньше 15
1
2
3
4
1
2
3
4
Присваивание
строке s
значения элемента массива;
i++
Отображение
на экране информационного поля узла
j++
Рис.5.Алгоритм прорисовки дерева решений
На рис.5 изображена схема алгоритма отображения на экране дерева решений.
1.3.Руководство пользователя
Программа воспринимает входные данные нескольких типов. Во-первых, это ответы пользователя (Да или Нет) на вопрос программы о свойствах задуманного пользователем объекта, взятые из промежуточных вершин дерева, ответы на заключения (с определением «угаданного» объекта) программы и ответы на приглашения продолжить игру. Во-вторых, входом является ответ пользователя на предложение программы ввести имя нового для не объекта, задуманного пользователем (результат неверного «угадывания» программы). Наконец, в-третьих, входом является ответ пользователя на предложение программы специфицировать вопрос, который должен быть задан пользователю в момент, когда программа «захочет» отличить новый объект от результата ее предыдущего угадывания. Этот вопрос должен быть сформулирован так, чтобы ответ «Да» приводил бы программу к новому объекту, а ответ «Нет» приводил бы к результату предыдущего неверного угадывания.
При запуске приложения перед пользователем появляется меню, включающее в себя кнопки «Играть», «Дерево решений», «Об игре» и «Выход». На рис. 6 изображено пользовательское меню.
Рис.6. Пользовательское меню
Для того, чтобы начать игру, пользователь должен нажать кнопку «Играть». После этого откроется игровое окно. Оно изображено на рис.7. В верхней части окна отражается приглашение к игре, а также история ответов пользователя на вопросы программы. В нижней части окна будут выводиться вопросы системы. Также здесь расположены две кнопки Да и Нет, с помощью которых пользователь отвечает на вопросы.
Рис.7. Игровое окно
Если программа «угадала» объект, задуманный пользователем, в окне, где выводились вопросы, появится сообщение: «Угадала: задуманный Вами объект-это <объект>». Кроме того, последует приглашение к следующей игре: «Играем еще?» ― которое изображено на рис.8. Если пользователь хочет продолжить игру, он должен нажать кнопку «Да», в противном случае ― кнопку «Нет».
Рис.8. Приглашение к новой игре
Если программа не «угадала» задуманный пользователем объект, тогда на экране появится окно, в котором пользователь должен указать загаданный им предмет и вопрос, ответ «Да» на который соответствует этому предмету, а ответ «Нет» ― предположению программы (рис.9).
Рис.9. Добавление нового объекта
Если пользователь верно заполнил поля данного окна, он должен нажать кнопку «OK». В случае если пользователь решил, что программа все-таки «угадала» задуманный им объект, он должен нажать кнопку «Отмена».
Возможна ситуация, когда пользователь не заполнил ни одного поля данного окна, либо заполнил только одно поле и нажал кнопку «OK». Тогда программа сообщит об этом пользователю, появится окно с просьбой заполнить все поля (рис.10).
Рис.10. Ситуация, когда не все поля заполнены
Если пользователь закончил игру, перед ним опять появится пользовательское меню. В случае если пользователь захочет посмотреть структуру дерева решений, он должен нажать кнопку «Дерева решений». В новом окне появится визуализированное дерево. В ходе просмотра структуры можно пользоваться прокруткой, двигая ползунки вверх-вниз или вправо-влево.
Если пользователь хочет ознакомиться с информацией о программе, ему требуется нажать на кнопку «Об игре» в пользовательском меню.
Если же пользователь решил выйти из игры, он должен нажать на кнопку «Выход».
Выходными данными программы являются, во-первых, приглашения пользователя к игре. Во-вторых, это вопросы, на которые пользователь должен отвечать, для того чтобы программа «угадала» объект. Программа повторяет вывод вопросов (содержание вершин дерева), начиная с корня дерева и продвигаясь по его потомкам в соответствии с ответами пользователей. В-третьих, как только программа достигнет некоторого листа, его содержимое интерпретируется как результат «угадывания» задуманного пользователем объекта. Наконец, выходными данными программы являются предложения ввести новый объект и соответствующий ему вопрос.