Принципы построения программы
При построении программы решены следующие проблемы.
Управление обработкой входных событий
Входными событиями могут быть события нажатия клавиш и кнопок ручного манипулятора типа «мышь». В объектах программы реализован цикл ввода и обработки событий.
Вывод объектов на экран
Предусмотрена работа программы в среде Windows на графическом адаптере VGA и в режиме монитора 800х600 точек (и выше). В программе явным образом указаны координаты видимых объектов относительно левого верхнего угла окна приложения. На рисунке показаны координаты основных видимых объектов.
Основные структуры данных и алгоритмы Основной алгоритм Начало Инициализировать объекты Цикл Обработать события КЦикл Конец Инициализировать объекты Инициализировать Командное меню и добавить его элементы. Инициализировать Кнопки «Производная», «Интеграл», «Значение функции», «Значение переменной», «Новая переменная», «Сброс переменных». Инициализировать Список Допустимых Функций и добавить его элементы Инициализировать Таблицу Переменных Установить Таблицу Переменных по умолчанию Инициализировать Таблицу Элементарных Функций Инициализировать Поле Ввода Функции, Поле Вывода Результата Инициализировать Список переменных Обновить Список переменных Конец Алгоритм Обработать события Если Развернут Список переменных Обновить Список переменных КЕсли Если Нажата кнопка «Производная» Найти производную КЕсли Если Нажата кнопка «Интеграл» Найти Интеграл КЕсли Если Нажата кнопка «Значение функции» Найти Значение функции КЕсли
Если Нажата кнопка «Значение переменной» Изменить Значение текущей переменной КЕсли Если Нажата кнопка «Новая переменная» Создать новую переменную пользователя КЕсли Если Нажата кнопка «Сброс переменных» Сбросить переменные КЕсли Если Команда меню «Производная» Найти производную КЕсли Если Команда меню «Интеграл» Найти Интеграл КЕсли Если Команда меню «Значение функции» Найти Значение функции КЕсли Если Команда меню «Выход» Завершить программу КЕсли Если Команда меню «Справка» Показать справку КЕсли Если Команда меню «Об авторе» Показать Окно Об авторе КЕсли Конец Алгоритм Установить Таблицу Переменных по умолчанию Стереть таблицу переменных Объявить новую переменную пользователя («x») Объявить новую переменную пользователя («y») Объявить новую переменную пользователя («z») Объявить новую переменную пользователя («t») Конец Алгоритм Создать новую переменную пользователя Строка = Ввести строку Если Хорошее Имя переменной (строка) Объявить новую переменную пользователя (строка) КЕсли Конец
Реализация алгоритма распознавания функции
Реализация алгоритма распознавания функции нахождения производной, интеграла и значения функции описана ниже: Распознавание функции · Создание таблицы связанных элементарных (содержащих одно действие) функций, последовательное вычисление которых приводит к вычислению сложной функции. o Создание размеченной строки: выделение чисел в служебные символы []; переменных в {}; функций в <>. (Контекстно, т.е. в строке «exp» не будет выделена переменная «x»). o Создание на основании размеченной строки карты функции, т.е. выделение из неё только символов () [] {} <> и определение их позиций в размеченной строке. o Анализ карты функции и вставка в размеченную строку соответствующих замен (например, знака умножения между числом и переменной), а также поиск синтаксических ошибок (например, если строка начинается со знака «/»)
o Обработанная таким образом строка, в которой не были найдены синтаксические ошибки, подлежит разложению на элементарные функции, которое заключается в следующем: § поиск самой внутренней скобки § нахождение первого оператора и его операндов в порядке важности (^,*, /, +,–) § Если в скобке больше нет операторов, заменить всю скобку, иначе заменить только данный оператор с операндами на новую переменную (вида &F#) и записать это в таблицу. § Если во всей строке еще есть операторы, повторить иначе создать последнюю переменную &F0 o Дополнить таблицу переменными пользователя.
Нахождение значения функции в точке (x, y, z, t,…) o Найти переменную (элементарную функцию) в таблице. o Считать оператор и операнды; если операнды – переменные, то o Если операнд переменная не дифференцируемая, то найти рекурсивно (этой же функцией). o Если операнд переменная дифференцируемая, то вернуть текущее значение дифференцируемой переменной. o Выполнить действие над операндами в зависимости от оператора и вернуть значение.
Нахождение частичных сумм площадей под графиком функции (~ интеграла) · Установить текущую переменную интегрирования / дифференцирования (на основании сведений полученных от пользователя). · Просуммировать произведения значений функции на изменения аргумента (на основании сведений полученных от пользователя и пользуясь определением частичных сумм). · Вернуть результат
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|