Содержание
- 2. Дано выражение в естественной записи со скобками вида: 5+8/6+(45-7)/3 Необходимо вычислить значение выражения
- 3. Первый этап – разбивка на лексемы (парсинг)
- 4. Лексема это: Число Знак операции { + - * / } Круглые скобки { ( )
- 5. Структуры данных: Используется два стека: стек операндов (S1) и стек операций (S2)
- 6. Присваиваем операциям приоритеты: { ( } – приоритет 0; { + - } – приоритет 1;
- 7. Второй этап - вычисление
- 8. Список лексем исчерпан? Да – на п.7; Берем очередную лексему; Это число – кладем его в
- 9. 1+5*(6-2)/2 1 ? 1 2 ? + 3 ? 5 4 ? * 5 ? (
- 10. 1+5*(6-2)/2 Вх. Сост: S1 ? { } S2 ? { } Вых. Сост: S1 ? {
- 11. 1+5*(6-2)/2 Вх. Сост: S1 ? { 1 } S2 ? { } Вых. Сост: S1 ?
- 12. 1+5*(6-2)/2 Вх. Сост: S1 ? { 1 } S2 ? { + } Вых. Сост: S1
- 13. 1+5*(6-2)/2 Вх. Сост: S1 ? { 1 5 } S2 ? { + } Вых. Сост:
- 14. 1+5*(6-2)/2 Вх. Сост: S1 ? { 1 5 } S2 ? { + * } Вых.
- 15. 1+5*(6-2)/2 Вх. Сост: S1 ? { 1 5 } S2 ? { + * ( }
- 16. 1+5*(6-2)/2 Вх. Сост: S1 ? { 1 5 6 } S2 ? { + * (
- 17. 1+5*(6-2)/2 Вх. Сост: S1 ? { 1 5 6 } S2 ? { + * (
- 18. 1+5*(6-2)/2 Вх. Сост: S1 ? { 1 5 6 2} S2 ? { + * (
- 19. 1+5*(6-2)/2 Вх. Сост: S1 ? { 1 5 4} S2 ? { + * } Вых.
- 20. 1+5*(6-2)/2 Вх. Сост: S1 ? { 1 20} S2 ? { + /} Вых. Сост: S1
- 21. Список лексем исчерпан. Опустошаем стек S2 Вх. Сост: S1 ? { 1 20 2} S2 ?
- 22. Вх. Сост: S1 ? { 1 10} S2 ? { + } Вых. Сост: S1 ?
- 23. УРА!!!
- 24. Еще один пример: 5+8-6*3 Необходимо вычислить значение выражения
- 25. 5+8-6*3 1 ? 5 2 ? + 3 ? 8 4 ? - 5 ? 6
- 26. 5+8-6*3 Вх. Сост: S1 ? { } S2 ? { } Вых. Сост: S1 ? {
- 27. 5+8-6*3 Вх. Сост: S1 ? { 5 } S2 ? { } Вых. Сост: S1 ?
- 28. 5+8-6*3 Вх. Сост: S1 ? { 5 } S2 ? { + } Вых. Сост: S1
- 29. 5+8-6*3 Вх. Сост: S1 ? { 5 8 } S2 ? { + } Вых. Сост:
- 30. 5+8-6*3 Вх. Сост: S1 ? { 13 } S2 ? { - } Вых. Сост: S1
- 31. 5+8-6*3 Вх. Сост: S1 ? { 13 6 } S2 ? { - } Вых. Сост:
- 32. 5+8-6*3 Вх. Сост: S1 ? { 13 6 } S2 ? { - *} Вых. Сост:
- 33. Список лексем исчерпан Опустошаем стек S2 Вх. Сост: S1 ? { 13 6 3} S2 ?
- 34. Продолжаем опустошать стек S2 Вх. Сост: S1 ? { 13 18} S2 ? { - }
- 35. УРА!!!
- 36. Применение деревьев поиска “Угадай животное” – программа, способная обучаться
- 37. Постановка задачи: Программа должна задавать человеку вопросы и “отгадать” загаданное человеком животное. Вопросы должны носить “двоичный
- 38. Эта информация запоминается в “базе знаний” (БЗ) и может быть использована при следующих сеансах игры.
- 39. Проектируем… Очевидно, что “сердцем” программы является хранилище данных. Какую структуру данных выбрать?
- 40. Выбираем двоичное дерево! Узел дерева будет хранить текст вопроса, а правая и левая ссылки будут указывать
- 41. Исходное состояние БЗ
- 42. Загадываем слона.
- 43. 1-й вопрос программы
- 44. 2-й вопрос программы
- 45. 3-й вопрос программы Ответ “Да” – и Слон вычислен!
- 46. А теперь загадываем мамонта. Мамонта в базе знаний нет. Посмотрим на поведение программы…
- 47. 1-й вопрос программы
- 48. 2-й вопрос программы
- 49. 3-й вопрос программы Ответ “нет” и у слона нет потомков в дереве поиска…
- 50. Программа признаёт проигрыш и спрашивает, как называется загаданное животное. Человек отвечает: “Мамонт” Поскольку программа остановилась на
- 51. Что должна сделать программа? Создать новый узел в дереве поиска и занести в него… вопрос “Животное
- 52. Новое состояние БЗ
- 53. Еще раз загадаем мамонта и пройдем по дереву поиска…
- 54. Первый вопроc:
- 55. Второй вопрос:
- 56. Третий вопрос (уже новый!)
- 57. Последний вопрос Мамонт успешно угадан…
- 59. Скачать презентацию