Введение
Жизнь современного человека наполнена операциями, которые часто становятся рутинными, однообразными и занимают значительное количество времени. Эти процессы присутствуют практически во всех аспектах нашей жизни: от повседневных бытовых забот до сложных производственных циклов и бизнес-процессов. Чтобы повысить эффективность, сократить временные затраты и минимизировать вероятность ошибок, человечество активно внедряет автоматизацию и роботизацию.
Например, в повседневной жизни мы используем бытовые приборы, такие как робот-пылесос, кухонный комбайн и стиральную машину, которые существенно облегчают выполнение домашних обязанностей. В деловой сфере широко применяются системы электронного документооборота и программное обеспечение для автоматизации бухгалтерии, позволяющие оптимизировать рабочие процессы и снизить нагрузку на сотрудников. На промышленных предприятиях используются роботы-упаковщики, сварочные автоматы и целые автоматизированные линии, обеспечивающие высокую производительность и качество выпускаемой продукции.
Однако, рутинные и однообразные операции сопровождают человека не только во взрослой жизни, но и уже начиная со школьных лет. Особенно ярко это проявляется в рамках изучения математики. Современная математика включает огромное количество сложных операций, выполнение которых вручную требует значительных временных затрат и повышенных рисков возникновения ошибок. Многократные вычисления, работа с большими массивами данных, использование специальных формул и алгоритмов нередко приводят к путанице даже у опытных специалистов.
Для преодоления подобной ситуации человечество давно ищет способы облегчения повседневной нагрузки. Одним из наиболее эффективных решений является автоматизация и программирование. Автоматизированные системы позволяют оптимизировать выполнение сложных и монотонных задач. Программирование позволяет формализовать математические процедуры, создавая автоматизированные решения, способные быстро обрабатывать большие объемы данных, многократно повторяя однотипные расчеты и обеспечивая высокую точность результатов.
Для меня, как и наверное для многих учащихся, определенные трудности вызывает процесс построения графиков функций и его исследование из-за сложности ручного построения и необходимости повторяющихся операций при исследовании функций. Графики позволяют визуализировать зависимости переменных величин, выявлять закономерности и аномалии, однако их создание вручную часто связано с трудностями и рисками ошибок. Именно поэтому в данном проекте было принято решение автоматизировать указанные процессы.
Так появилась тема и цель моего проекта: разработка программного продукта для построения графика непрерывной функции и ее исследования.
Актуальность рассматриваемой темы очевидна – такой программный инструмент позволит повысить точность и эффективность обработки данных, сократить временные затраты и снизить вероятность человеческих ошибок.
Объект исследования – непрерывные функции, их графики и анализ.
Предмет исследования – создание инструмента, позволяющего строить графики функций и проводить их исследование.
Для достижения поставленной цели необходимо решить ряд задач:
проанализировать литературу по выбранной теме;
сформулировать постановку задачи;
разработать алгоритм задачи (блок-схему);
выбрать и изучить инструменты программирования;
написать программный инструмент;
провести его тестирование;
интегрировать созданный программный инструмент в электронный справочник.
1. Графики функций и их исследование
Функция — это зависимость y от x, где x является независимой переменной или аргументом функции, а y — зависимой переменной или значением функции. Функция — это соответствие между двумя множествами, причем каждому элементу первого множества соответствует один и только один элемент второго множества.
Исследование функции - задача, заключающаяся в определении основных параметров заданной функции. Одна из целей исследования - построение графика функции. Исследование функции может включать изучение её области определения, промежутков знакопостоянства функции, нахождение нулей (корней) функции, изучение непрерывности, определение максимальных и минимальных значений функции, определение промежутков возрастания и убывания функции и так далее.
Область определения функции — это множество всех значений аргумента x, для которых функция имеет смысл. Иногда некоторые значения x нельзя использовать, например, если в формуле есть деление на ноль или корень из отрицательного числа или другие ограничения. В таком случае область определения исключает эти значения, а функция в таких точках не существует или прерывна.
Исследование знака функции в математике (определение промежутков знакопостоянства) - это процесс изучения свойств функции, который позволяет определить её поведение на всей области определения и создать точный графический образ. Цель — найти промежутки, на которых функция сохраняет знак. Промежутки знакопостоянства функции - это промежутки значений аргумента, на которых значения функции либо только положительны, либо только отрицательны.
Нули функции – это значения аргумента, при которых функция обращается в нуль. Нули функции соответствуют точкам пересечения графика функции с осью абсцисс (осью x).
Таблица значений функции - это таблица, в которой для разных значений аргумента (x) вычисляются значения функции (y).
Максимальное значение функции всегда представлено самой высокой точкой относительно оси Оу, минимальное значение функции — самой низкой точкой относительно оси Оу.
Точки экстремума - это точки, в которых функция принимает экстремальное значение (максимум или минимум). Экстремумы функции - это значения функции в этих точках
Экстремумом называют локальные максимумы и минимумы функции. Точка называется точкой экстремума, если значение функции в этой точке больше или меньше значений функции в соседних точках. Существует два типа экстремумов:
Максимум: точка, в которой функция достигает наибольшего значения среди ближайших окрестностей.
Минимум: точка, в которой функция достигает наименьшего значения среди ближайших окрестностей.
Возрастание функции - при увеличении аргумента увеличивается и сама функция: чем больше значение x, тем больше и значение y. Визуально это означает, что график функции поднимается при движении слева направо.
Убывание функции - при увеличении аргумента функция уменьшается: чем больше x, тем меньше y. Визуально это означает, что график функции опускается при движении слева направо.
Функция может быть как возрастающей, так и убывающей только на определённых интервалах, и на других интервалах она может изменять своё поведение. Также функция может быть постоянной, когда значения функции не изменяются при изменении аргумента.
2. Постановка задачи
Цель: разработать программный инструмент для автоматического построения графиков заданных функций, исследования их свойств и визуализации результатов. Программа должна обеспечивать удобную работу пользователей с непрерывными функциями, поддерживать ввод выражений, построение графиков и вывод характеристик функции.
Основные требования к программе:
Интерфейс ввода: Пользователь должен иметь возможность вводить произвольные выражения функций одной переменной y=f(x). Если пользователь введет недопустимое значение, программа выведет сообщение об ошибке и прекратит выполнение.
Автоматическое построение графика:
• График строится автоматически сразу после корректного ввода функции
• Если пользователь введет уравнение функции, имеющей точки разрыва, то программа построит график, но при этом выдаст сообщение о том, что функция прерывна и прекратит выполнение
• Если пользователь введет уравнение функции, не имеющей аргумента Х, то программа выдаст сообщение о том, что ввод функции не корректен и прекратит выполнение
Исследование функции:
• Определение области допустимых значений;
• Определение точек пересечения графика функции с осью Ох и промежутков знакопостоянства функции;
• Нахождение нулей функции;
• Вывод таблицы значений функции;
• Определение максимальных и минимальных значений функции;
• Нахождение точек экстремума и экстремумов функции;
• Определение интервалов возрастания, убывания функции
Интерактивность:
• Ввод функции с консоли;
• Интерактивное взаимодействие с графиком:
- перетаскивание окна просмотра,
- возможность свернуть/развернуть окно,
- перемещение графика внутри окна,
- увеличение масштаба графика (части графика)
• Прокрутка окна с выведенными результатами исследования функции
Поддерживаемые типы функций:
Непрерывные функции с одной переменной “x” (многочлены, степенные, дробные, показательные и т.д.)
Выходные форматы:
Сохранение графика в файл (формат PNG, SVG).
Информация, полученная в результате исследования функции и отображаемая на экране терминала
Обработка ошибок:
• Проверка правильности введенного выражения;
• Обработка некорректных вводов (неправильные символы, отсутствие аргументов и т.п.) с выдачей сообщения об ошибке;
• Проверка непрерывности функции. Если функция непрерывна на всей числовой прямой, то программа построит график, проведет ее исследование и выведет результаты. Если функция прерывна, то программа построит график. выдаст сообщение о прерывности функции и прекратит выполнение.
Документирование программы:
Разработка руководства пользования к программному инструменту.
Дополнительные возможности (на усмотрение разработчика):
Ввод пользователем с консоли оптимального масштаба осей для наглядного отображения особенностей функции.
Ввод пользователем с консоли отрезка для нахождения минимального и максимального значения функции на данном отрезке, а также нахождение значений функции для аргумента на заданном отрезке.
Требования к интерфейсу:
Программный инструмент, предназначенный для построения графиков функций и их анализа, может выступать в двух основных ролях:
• как самостоятельный программный продукт
Такой инструмент позволяет пользователям строить графики функций, исследовать их свойства, изменять параметры уравнений и наблюдать влияние изменений на график. Это полезно для углубленного изучения математики и подготовки школьников к экзаменам
• как модуль интегрированный в электронный справочник для школьника
Интеграция подобного инструмента в электронный справочник, это возможность сделать процесс обучения более наглядным и увлекательным. Например, школьники смогут непосредственно взаимодействовать с теоретическим и практическим материалом.
Преимущества интеграции программного инструмента в электронный справочник для школьника:
Возможность немедленной проверки понимания материала путем эксперимента с функциями.
Повышение мотивации учащихся благодаря наглядному представлению абстрактных понятий.
Удобство одновременного обращения к теоретическому материалу и инструменту для его иллюстрации.
Таким образом, интеграция такого программного продукта способствует повышению качества образования и упрощению усвоения теории учащимися школ.
Структура проекта:
Проект делится на три основных модуля:
Модуль ввода и обработки функции (анализ синтаксиса и преобразование введенной строки в выражение для вычислений).
Модуль построения графика.
Модуль анализа функции и вывода результатов.
Этапы реализации:
Проектирование архитектуры программы
Создание алгоритма (блок-схемы)
Программирование каждого модуля (ввод и проверка входных данных, построение графика, определение области допустимых значений, нахождение точек пересечения графика с осью Ох, нахождение промежутков знакопостоянства функции, нахождение нулей функции, нахождение и вывод таблицы значений функции, определение максимальных и минимальных значений функции, нахождение точек экстремума и экстремумов функции, определение возрастания/убывания функции)
Тестирование каждого модуля отдельно
Объединение всех модулей в единый программный продукт и тестирование всей программы целиком
Компилирование программы и интеграция ее в электронный справочник для школьника
Подготовка руководства пользователя
3. Алгоритм задачи (блок-схема)
Алгоритм помогает структурировать решение поставленной задачи путем визуализации всех этапов обработки данных, вычислений и принятия решений. Использование блок-схем значительно упрощает восприятие и понимание общего хода программы.
Структура алгоритма подробно объясняет структуру основных шагов и функций программы. В структуре приводится схема последовательности операций и пояснения каждого модуля.
Структура алгоритма моей задачи представлена на рисунке 1.
|
начало |
|
|
→ |
ввод данных (модуль А) |
|
→ |
построение графика (модуль В) |
|
→ |
нахождение области определения функции (модуль С) |
|
→ |
определение точек пересечения графика с осью Ох и промежутков знакопостоянства функции, нахождение нулей функции (модуль D) |
|
→ |
вывод таблицы значений функции (модуль E) |
|
→ |
определение максимальных и минимальных значений функции ( модуль F) |
|
→ |
нахождение точек экстремума и экстремумов функции (модуль G) |
|
→ |
определение возрастания/убывания функции (модуль H) |
|
→ |
вывод данных (после каждого модуля) |
|
конец |
|
Рис.1 Структура алгоритма
После создания структуры алгоритма я приступила к рисованию блок-схемы каждого модуля.
Блок-схема - это графическое представление алгоритма или процесса, используемое для наглядного отображения последовательности действий. Она состоит из геометрических фигур (блоков), соединённых линиями, каждая фигура обозначает определённый этап или действие в процессе.
Основные элементы блок-схемы включают:
Начало / Конец: Обычно изображается овальной формой, показывает начало и завершение схемы.
Процесс: Прямоугольники используются для обозначения конкретных шагов или операций.
Решение: Ромб обозначает точки ветвления, где принимается решение (например, условие "если... тогда").
Данные ввода-вывода: Параллелограмм используется для представления ввода или вывода данных.
Полезность блок-схем:
Наглядность: Блок-схемы помогают визуализировать сложный процесс или алгоритм, делая его понятнее и доступнее для восприятия.
Упрощение анализа: Возможность легко проследить последовательность действий помогает выявлять возможные проблемы или узкие места в проекте.
Облегчение коммуникации: Использование стандартных символов позволяет эффективно передавать идеи команде разработчиков или другим заинтересованным сторонам.
Проверка правильности: Перед реализацией проекта блок-схема позволяет проверить логику и структуру решения, минимизируя риск ошибок.
Таким образом, блок-схемы являются мощным инструментом, способствующим улучшению понимания процессов, облегчению разработки программного обеспечения и повышению эффективности командной работы.
Блок-схемы каждого модуля представлены в Приложении № 1.
4. Язык программирования Python
Python является одним из наиболее популярных современных языков программирования благодаря своей простоте, читаемости и универсальности. Его название было вдохновлено британским комедийным шоу Monty Python's Flying Circus («Летающий цирк Монти Пайтона»), хотя многие ошибочно связывают его с названием змеи. Создатель языка Гвидо ван Россум был поклонником этого телешоу, как и многие другие разработчики того времени, а в самом шоу прослеживалась некая параллель с миром компьютерной техники.
Разработанный конце 80-х годов XX века, Python изначально задумывался как простой инструмент для автоматизации рутинных задач. Однако со временем он стал востребованным языком общего назначения, широко используемым разработчиками программного обеспечения, учеными, инженерами и специалистами по данным.
Основные характеристики Python:
- Одним из ключевых преимуществ Python является его ясный и лаконичный синтаксис, близкий к обычному английскому языку. Это позволяет легко читать и понимать код даже новичкам.
- Python поддерживает динамическую типизацию переменных, что означает отсутствие необходимости заранее объявлять типы данных перед использованием переменной. Переменные автоматически получают тип в зависимости от присвоенного значения.
- Python относится к интерпретируемым языкам, то есть каждая команда исполняется последовательно без предварительного компилирования программы целиком. Это упрощает процесс разработки и тестирования, позволяя быстро вносить изменения и сразу видеть результат.
- Стандартная библиотека Python включает большое количество модулей и функций, позволяющих решать широкий спектр задач без установки сторонних библиотек.
Благодаря своему удобству и доступности, Python получил огромную популярность. Python имеет активное сообщество разработчиков и пользователей, которые предлагают поддержку, обучение и ресурсы для начинающих и опытных программистов.
Python продолжает оставаться одним из лучших выборов для начинающих программистов и опытных профессионалов. Благодаря своему широкому спектру возможностей и дружелюбному сообществу этот язык становится незаменимым инструментом для решения широкого круга задач в современной индустрии технологий.
Выбирая язык программирования Paython для написания программы я в первую очередь руководствовалась его возможностью легко визуализировать и строить разнообразные типы графиков при помощи библиотеки Matplotlib. Библиотека Matplotlib является одной из наиболее популярных библиотек Python для визуализации данных благодаря своей гибкости, универсальности и простоте использования. Матplotlib позволяет настраивать графики, выбирая цвет линий, тип маркера, толщину линии, размеры шрифта, расположение легенд и многое другое.
Кроме библиотеки Matplotlib, я также пользовалась библиотекой SymPy, которая позволяет решать алгебраические уравнения. При помощи одной из ключевых функций данной библиотеки - solve () я находила нули функции, промежутки знакопостоянства функции, а также производную для поиска точек экстремума.
Самыми часто используемыми мной операторами также являлись:
Print () – оператор вывода информации на консоль;
If … else – оператор условия
While – оператор цикла
Таким образом, выбор Python обусловлен наличием обширного инструментария, обеспечивающего комфортную работу над проектом, наглядность результатов и возможность глубокого анализа исследуемых зависимостей.
5. Программа MasterGraf
5.1. Написание программы
После того, как основные этапы закончены: изучена тема графиков функций и их исследования, сформулирована постановка задачи, нарисована блок-схема и выбран язык программирования, я приступила к написанию самой программы на компьютере.
Для упрощения процесса разработки программного продукта была применена методология модульного программирования. Данный подход позволяет значительно упростить процесс отладки, тестирования и выявления возможных ошибок путем разделения исходного кода на отдельные функционально завершённые компоненты, называемые модулями или блоками.
Для меня преимущества такого подхода заключались в следующем:
Простота понимания: Каждый блок реализует отдельную функцию и это облегчает понимание логики программы.
Удобство отладки: Ошибки локализуются внутри конкретного блока, что ускоряет процесс диагностики и исправления проблем.
Легкость тестирования: Тестирование каждого отдельного блока проще организовать отдельно от остальных частей системы, снижая вероятность возникновения побочных эффектов при тестировании.
Лёгкая масштабируемость: новые модули могут быть добавлены или удалены без изменений в других частях программы.
Гибкость процесса разработки: если возникает сложность с реализацией конкретного модуля, можно временно переключиться на работу над другим модулем.
Используя метод модульного программирования, я разделила процесс написания программы на следующие модули (блоки):
- блок ввода функции, построение и вывод графика;
- блок определения области допустимых значений;
- блок нахождения точек пересечения и нулей функции;
- блок нахождения промежутков знакопостоянста функции;
- блок вывода таблицы значений аргумента функции и значений функции;
- блок нахождения максимального и минимального значения функции;
- блок нахождения точек экстремума, экстремумов функции и периодов возрастания-убывания функции.
Блок ввода функции, построение и вывод графика.
При написании данного блока я первоначально определила перечень символов, допустимых пользователю при вводе уравнения функции через консоль. В случае, если введенное пользователем выражение содержит недопустимый символ (отсутствующий среди заранее заданных значений), программа выводит соответствующее сообщение об ошибке и прекращает свое дальнейшее исполнение.
Для реализации этого блока я использовала:
оператор INPUT – для ввода данных,
оператор IF …ELSE с функцией ALL() – для проверки введенных данных,
функции и методы библиотеки MATPLOTLIB – для построения и визуализации графика, настройки внешнего вида, заголовка, надписи осей и т.д.
Блок определения области допустимых значений.
В рамках данного проекта мной поставлена задача исследования исключительно непрерывных функций, то есть функций, непрерывных на всей числовой прямой. Если же функция обладает разрывами либо не определена на некотором интервале, программа выводит соответствующее уведомление и автоматически завершает свою работу.
Для реализации этого блока я использовала:
функцию CONTINUOUS_DOMAIN() библиотеки SYMPY - для нахождения области определения непрерывности введенной функции.
Блок нахождения точек пересечения и нулей функции.
Решение данной задачи было построено на нахождении точек X, в которых функция меняет знак, а значит ее график пересекает ось Ох. Нахождение таких точек я выделила в отдельную функцию FIND_INTERSECTIONS, в которой при помощи операторов библиотеки NUMPY я нашла такие точки.
Для начала при помощи оператора NP.SIGN я нашла знак для каждой точки Х, а затем при помощи операторов NP.DIFF и NP.WHERE нашла именно те точки, где функция меняет знак (с положительного на отрицательный и наоборот).
Однако, есть такие функции, графики которых не пересекают ось Ох, но при этом имеют точки Х, в которых функция равна 0 (например функция y=x2 или y=-x2), поэтому я дополнительно добавила проверку на наличие нулей при помощи функции SOLVE() библиотеки SYMPY для решения алгебраических уравнений относительно одной переменной.
Блок нахождения промежутков знакопостоянста функции.
В данном блоке осуществляется поиск тех значений аргумента, при которых функция больше нуля и меньше нуля.
Для реализации этого блока я использовала точки Х, в которых график функции пересекает ось Ох, найденные в предыдущем блоке. Используя найденные точки, я разбила ось Ох от –ОО до +ОО на интервалы, создав из них массив при помощи оператора APPEND (). Затем на каждом интервале я нашла тестовые точки:
Тестовая точка = средняя точка интервала =
(начальное значение + конечное значение)/2
Рассчитав значение функции в тестовых точках, я определила знак функции на каждом интервале при помощи оператора NP.SIGN.
Блок вывода таблицы значений аргумента функции и значений функции.
В данном блоке я реализовала расчет и вывод десяти значений функции для аргумента равного от -5 до +5 с шагом 1. Кроме этого в постановке задачи в разделе «Дополнительные возможности (на усмотрение разработчика)» запланирован ввод c консоли отрезка, необходимого пользователю для расчета значений функции (чтоб значения аргумента для расчета значений функции вводились с консоли пользователем).
Для реализации этого блока я использовала:
оператор WHILE – для организации цикла от -5 до 5 с шагом 1, внутри которого рассчитывается значение введенной для исследования функции при помощи оператора EVAL() и выводятся значения аргумента и значение функции при помощи оператора PRINT.
Блок нахождения максимального и минимального значения функции.
Для нахождения максимального и минимального значения функции я использовала функции MAXIMUM() и MINIMUM() библиотеки SYMPY. Данные операторы находят максимальное и минимальное значение функции по всей области определения..
Блок нахождения точек экстремума, экстремумов функции и периодов возрастания-убывания функции.
Для нахождения точек экстремума я нашла производную введенной для исследования функции при помощи функции SP.DIFF библиотеки SYMPY, а затем при помощи функции SOLVE() нашла точки Х, в которых производная равна 0 или нашла точки экстремума. Затем, рассчитав значение введенной для исследования функции при помощи оператора EVAL() в каждой точке экстремума, я получила экстремумы функции.
После этого на каждом интервале, определенном точками экстремума, я брала для исследования любые две точки, находила в них значения введенной функции и сравнивала их между собой. Если при возрастании аргумента Х, значения функции также возрастали, то функция на данном интервале возрастающая. Если при возрастании аргумента Х, значения функции убывали, то функция на данном интервале убывающая.
После того, как отдельные модули были готовы, я объединила их в единую систему и назвала свою программу MasterGrad (Приложение №2).
Этап объединения включал проверку совместимости каждого модуля, настройку взаимодействия между ними и устранение возможных конфликтов.
Основные шаги:
• Из каждого модуля удалены повторяющиеся (дублируюшие) операторы. Например, оператор ввода функции с консоли. Этот оператор был необходим в каждом модуле для обеспечения их функционирования. Кроме того, удалены операторы импортирования библиотек, отдельных модулей и другие, повторяющиеся в каждом модуле.
• Настройка интерфейсов. Для всей программы необходимо обеспечить общий интерфейс вывода информации, это значит, что независимо от модуля программы, выводимая информация должна иметь одинаковый внешний вид и структуру представления. Поэтому во всех программных модулях все элементы интерфейса были приведены к одинаковому виду: единые шрифты, стили отображения.
5.2. Тестирование и отладка программы
После того, как модули были объединены в единую систему, я начала ее тестирование и отладку. Система была протестирована целиком, чтобы убедиться в её работоспособности, выявить дефекты и убедиться, что программа работает правильно.
Для проведения тестирования мной были подготовлены тестовые данные и написаны тест-кейсы.
Результаты тестирования я свела в таблицу:
|
Тестовые данные/ тест кейсы |
Результат выполнения программы |
Правильность работы |
Необходимость доработки |
|
ч+2 |
"Увы.... вы допустили ошибку при вводе!!!!" |
+ |
- |
|
X*2 |
"Увы.... вы допустили ошибку при вводе!!!!" |
+ |
- |
|
2 |
Программа прервана из-за ошибки |
- |
+ |
|
2/x |
'Увы...... функцияпрерывна' |
+ |
- |
|
х**0.5 |
'Увы...... функцияпрерывна' |
+ |
- |
|
х+2 |
Программа вывела результат, прерывания программы не было |
+ |
- |
|
2*х+5 |
Программа вывела результат, прерывания программы не было |
+ |
- |
|
-х+5 |
Программа вывела результат, прерывания программы не было |
+ |
- |
|
х**2 |
Программа вывела результат, прерывания программы не было |
+ |
- |
|
x**2+6*x-9 |
Программа вывела результат, прерывания программы не было |
+ |
- |
|
x**5+x**4+x**3+1 |
Программа прервана из-за ошибки |
- |
+ |
|
x**3/3-x**2-x+1 |
Программа вывела результат, прерывания программы не было |
+ |
+ |
Программа показала стабильную работу в большинстве случаев, однако имеются отдельные недостатки, которые рекомендуется устранить перед выпуском финальной версии.
Основные ошибки, выявленные при тестировании:
- программа не предусматривает безаварийное завершение программы, если не введен аргумент х;
- при вводе некоторых функций, программа находит неверные корни функции и прерывается с выдачей ошибки;
- при вводе некоторых функций программа не прерывается, но выводит промежутки знакопостоянства в нечитаемом виде (например, (CRootOf(x**3 - 3*x**2 - 3*x + 3, 2) < x)).
Таким образом, были обозначены дальнейшие шаги по улучшению качества продукта, в соответствии с которыми, я приступила к отладке программы, то есть к процессу выявления и устранения ошибок в коде программного продукта, приводящих к некорректному поведению или сбою программы.
Так, блок ввода функции был дополнен оператором IF…ELSE, который проверяет содержит ли введенная функция обязательный аргумент «х». Если аргумент «х» не содержится, то программа выдает сообщение: «ОШИБКА... ОТСУТСТВУЕТ ОБЯЗАТЕЛЬНЫЙ АРГУМЕНТ 'x'» и прекращает работу.
Кроме того, был полностью переписан блок нахождения точек пересечения, нулей функции и промежутков знакопостоянства. В первоначальном варианте для нахождения нулей функции, интервалов, в который функция принимает значение больше нуля и меньше нуля, я использовала функцию SOLVE() библиотеки SYMPY. Но, как показало проведённое тестирование, данная функция демонстрировала два существенных недостатка:
во-первых, отображала решения в форме алгебраических формул,
во-вторых, зачастую выдавала мнимые корни уравнения, что значительно затрудняло понимание материала и снижало удобство освоения изучаемой темы.
Завершив этап отладки и устранив выявленные ошибки, я вновь подвергла свою программу тестированию. Результаты оказались успешными: система продемонстрировала работоспособность, полностью исключив появление дефектов.
Таким образом, проект успешно прошёл финальную проверку и готов к внедрению и эксплуатации.
5.3. Интеграция программы в электронный справочник
В прошлом году мной был создан интерактивный помощник для школьников, функционирующий как электронный справочник, обеспечивающий быстрый доступ к необходимой учебной информации. Справочник обладает удобной структурой, организованной по разделам, подразделам и темам, что значительно упрощает процесс поиска нужной информации. Интерактивный помощник представляет собой электронную систему, предназначенную для облегчения процесса изучения школьных предметов. Основной функцией системы является предоставление быстрого доступа к разнообразной учебной информации, охватывающей широкий спектр дисциплин школьной программы, в том числе школьного предмета алгебры.
В процессе создания темы «Функции и графики» подраздела «Функции» раздела «Алгебра» в электронном справочнике, я приняла решение интегрировать разработанную мной программу в существующий электронный справочник, чтобы учащиеся имели возможность не только знакомиться и закреплять теорию, но и непосредственно применять полученные знания на практике.
Для начала я разработала макеты необходимых страниц
(Приложение № 3). На странице «Функции и графики» располагается справочная информация, а также в левом нижнем углу находится прямоугольник «Построить график и исследовать функцию», при нажатии на который осуществляется переход на стартовую страницу программы MasterGraf.
Рис.2. Макет страницы «Функции и графики» справочника
Рис.3. Макет стартовой страницы
Прямоугольник «MasterGraf» является интерактивной кнопкой, после нажатия на которую начинает выполняться созданная мной программа.
Для реализации данного шага, я сделала прямоугольник «MasterGraf» активным, выбрала пункт меню «Вставка», в меню «Вставка» выбрала пункт «Гиперссылка». В открывшемся окне выбрала пункты:
- «Связать с … » «Файлом, веб-страницей»,
- «Искать в…» «Текущая папка»,
- Выбрала файл моей программы.
В строке «Адрес» появилось имя моей программы.
Рис.4. Назначение гиперссылки на программу MasterGraf
Для того, чтобы обеспечить выполнение программы по гиперссылке в PowerPoint, необходимо соблюдение двух условий:
Программа должна быть исполняемой: Это значит, что файл должен иметь расширение .exe. Если попытаться запустить документ Word, Excel или иной тип файла, система выдаст ошибку.
Файл программы должен располагаться в одной папке с презентацией PowerPoint: Для успешного перехода по гиперссылке программа и презентация должны находиться в одном каталоге. Иначе ссылка приведет к ошибке "не найден указанный объект".
Файл с расширением .exe представляет собой исполняемый файл и предназначены для запуска любых программ.
Я писала все модули и затем объединяла их в единую систему в интегрированной среде разработки для Python (далее – ИСР для Python). Все программы, созданные ИСР для Python имели расширение .py.
Такие файлы с расширением .py:
Содержат исходный код программы на языке программирования Python. Эти файлы является текстом, написанным человеком, и предназначены для чтения интерпретатором Python.
Для выполнения таких файлов нужен установленный интерпретатор Python, который преобразует инструкции из текста в выполняемые команды.
Файлы же с расширением .exe
Это готовые исполняемые файлы, созданный компилятором или сборщиком программы. Такие файлы содержит машинный код, который непосредственно выполняется операционной системой.
Пользователь может запустить программу двойным щелчком мыши.
Таким образом, основное различие заключается в том, что файл с расширением .exe готов к непосредственному выполнению операционной системой, тогда как файл с расширением .py требует наличия интерпретатора Python для преобразования инструкций в исполняемый вид.
Чтобы преобразовать Python-файл (*.py) в исполняемый файл (*.exe), в командной строке я ввела команду:
pyinstaller --onefileMasterGraf.py
В результате появилась папка dist, внутри которой скомпилировался готовый файл MasterGraf.еxe.
Этот файл я скопировала в каталог, где находится электронный справочник, чтоб работала гиперссылка, указывающая на выполняемый файл MasterGraf.еxe.
Таким образом, после завершения основных этапов разработки и тестирования программа для построения графиков и исследования непрерывных функций готова к эксплуатации.
6. Руководство пользователя
Программа MasterGraf – это программа для построения и исследования графиков непрерывных функций. Программа может использоваться, как самостоятельный программный инструмент, а также функционировать в составе электронного справочника.
1. Для запуска программы, как самостоятельного инструмента, необходимо дважды щелкнуть мышью по исполняемому файлу MasterGraf.еxe. После чего необходимо перейти к пункту 3 руководства пользователя.
2 . Для эксплуатации программы в составе электронного справочника, необходимо запустить электронный справочник (интерактивный помощник для школьника). Перейти в раздел «Алгебра» → подраздел «Функции» →
тему «Функции и графики», где пользователь увидит кнопку «Построить график и исследовать функцию». Щелкнув по данной кнопке, пользователь окажется на стартовой странице. Необходимо отметить, что на каждом шаге предусмотрена управляющая кнопка , для возврата на предыдущий шаг.
На стартовой странице расположена кнопка с надписью «MasterGraf», щелкнув на которую происходит запуск программы MasterGraf.
3. После запуска программы на консоль выводится сообщение
«Введите уравнение у = ». После этого программа останавливается и ждет ввода. Пользователь должен корректно ввести уравнение:
- в уравнении обязательно должна быть зависимая переменная «х». переменная вводится на английской раскладке клавиатуры, строчным регистром;
- можно в уравнение вводить математические знаки операций + - * /;
- при вводе знака деления необходимо использовать косую черту - «/», а не двоеточие - «:»;
- можно использовать скобки (), или двойные скобки (());
- при вводе степени необходимо использовать знак «**», например, х во второй степени вводится, как х**2, соответственно х в 4 степени - х**4;
- при вводе корня необходимо использовать знак «**», например, корень из х вводится, как х**0.5, соответственно корень из х 3 степени - х**1/3;
- при вводе дробных чисел необходимо использовать точку «.», а не запятую «,», например 3.14 или 5.668559
При некорректном вводе уравнения, программа выдаст сообщение «УВЫ.... ВЫ ДОПУСТИЛИ ОШИБКУ ПРИ ВВОДЕ!!!!» дальнейшее выполнение программы прекратится и на экране появится сообщение «нажмите ENTER». После нажатия клавиши ENTER пользователем произойдет возврат на стартовую страницу (если запуск программы был осуществлен из справочника), либо программа закроет окно выполнения.
Рис.5. Окно выполнения программы при некорректном вводе функции
4. После ввода уравнения программа выведет окно в правом верхнем углу, в котором будет нарисован график введенной функции. Пользователь может свернуть окно с графиком, щелкнув на значок сворачивания окна в правом верхнем углу окна (горизонтальная линия).
5. Если пользователь ввел уравнение, которое задает разрывную функцию, то после вывода окна с графиком программа выдаст сообщение «УВЫ...... ФУНКЦИЯ ПРЕРЫВНА» дальнейшее выполнение программы прекратится и на экране появится сообщение «нажмите ENTER». После нажатия клавиши ENTER пользователем произойдет возврат на стартовую страницу (если запуск программы был осуществлен из справочника), либо программа закроет окно выполнения.
Рис.6. Окно выполнения программы при вводе прерывной функции
6. Если уравнение пользователем введено корректно и данное уравнение не задает разрывную функцию, то программа после вывода окна с графиком функции, начинает выводить на экран результаты исследования: область допустимых значений, точки пересечения с осью Ох, нули функции, промежутки знакопостоянства, таблицу значений, максимальные и минимальные значения функции, точки экстремума, экстремумы функции, промежутки возрастания, убывания функции. Если результаты исследования не поместились на экране, пользователь может легко просмотреть данные, прокрутив колёсиком мыши вперёд и назад для вертикальной прокрутки страницы.
В конце исследования появится сообщение «нажмите ENTER». После нажатия клавиши ENTER пользователем произойдет возврат на стартовую страницу (если запуск программы был осуществлен из справочника), либо программа закроет окно выполнения.
Рис.7. Окно выполнения программы при вводе функции y=x2
7. После того, как программа закончила выполнение (в случае некорректного ввода, либо в случае ввода уравнения, которое задает разрывную функцию, либо после того, как программа успешно вывела результаты исследования) пользователь возвращается:
- к стартовой странице, если запуск был осуществлен из электронного справочника. На стартовой странице, щелкнув по кнопке с надписью «MasterGraf», пользователь может еще раз запустить программу для построения графика функции и ее исследования;
- в место, откуда программа была запущена: Total Commander, Проводник и т.д., если программа запускалась, как самостоятельный программный инструмент. Пользователь может еще раз дважды щелкнуть мышью по исполняемому файлу MasterGraf.еxe. для построения графика функции и ее исследования.
Заключение
Электронные справочники давно стали неотъемлемой частью учебного процесса, позволяя быстро получать доступ к необходимой информации. Однако современные технологии открывают новые возможности для улучшения качества образования. Настоящий проект направлен на создание приложения, которое не только предоставит пользователям справочные материалы, но и даст возможность решать алгебраические задачи в интерактивном режиме.
Программный инструмент представляет огромную практическую пользу как для учащихся, так и для преподавателей. Вот основные преимущества её использования:
1. программный инструмент позволит школьникам изучать теорию функций не абстрактно, а визуализировать пройденный материал, что упрощает понимание теории и делает процесс изучения наглядным;
2. ученики могут экспериментировать с построением графиков и исследованием функций, меняя заданные условия;
3. использование подобного инструмента способствует лучшему усвоению материала, сокращению ошибок и повышению уровня подготовки учащихся;
4. ученик может построить график самостоятельно и сравнить его с ожидаемым результатом, что позволяет оперативно выявить и исправить ошибки;
5. использование программных инструментов преподавателями позволит сделать уроки интерактивнее и интереснее, демонстрируя динамику изменения графиков в режиме реального времени;
6. данный программный инструмент может стать помощником для преподавателей в проверке домашних и контрольных заданий школьников, значительно экономя временные ресурсы.
В данной работе я решила намеченные задачи и достигла поставленной цели.
Во-первых, изучен теоретический материал по данной теме;
Во-вторых, сформулирована постановка задачи, определена цель, необходимые условия и ожидаемый результат;
В-третьих, разработана структура алгоритма моей задачи и нарисованы блок-схемы каждого модуля;
В-четвертых, для написания программы подобран популярный, благодаря простоте, читаемости и универсальности язык программирования;
В-пятых, написан программный инструмент методом модульного программирования;
В-шестых, проведено тестирование и отладка программного инструмента;
В-седьмых, проведена интеграция программного инструмента в созданный ранее электронный справочник.
Достигнута поставленная цель: разработан программный инструмент предназначенный для автоматизации процесса построения графиков заданных функций, анализа их свойств и наглядной визуализации полученных результатов. Это позволяет пользователям эффективно решать широкий спектр задач, связанных с изучением поведения функций, выявлением особенностей их графика и проведением качественного анализа функциональной зависимости.
Подводя итог, можно сделать вывод, что современному учащемуся важно не только ознакомиться с теоретическими материалами, но и отработать практические навыки решения задач. Предлагаемый программный инструмент решает обе задачи одновременно. Таким образом, данное приложение станет полезным инструментом как для учащихся, осваивающих функции и их графики, так и для преподавателей, желающих повысить эффективность образовательного процесса.
Список источников и литературы
1. Атанасян Л.С., Бутузов В.Ф., Кадомцев С.Б. и др. Геометрия 7-9 классы. – М.:Просвещение, 2019. – 383 с.;
2. Григорьев К.М., Николаев Т.Е., Эффективные инструменты программирования и автоматизации. – Екатеринбург: УрФУ, 2021. – 208 с.;
3. Алгоритм и свойства алгоритма – Электронный ресурс. - https://oapisip.readthedocs.io/ru/latest/chapters/01_algo/01_algo.html;
4. Как исследовать функцию и построить график: пошаговое руководство – Электронный ресурс. - https://sky.pro/wiki/analytics/kak-issledovat-funkciyu-i-postroit-grafik-poshagovoe-rukovodstvo/;
5. Как настроить управляющее кнопки в PowerPoint – Электронный ресурс. - https://dzen.ru/a/XVHEhG0pwQCsMqXT;
6. Как правильно поставить задачу для разработки – Электронный ресурс. - https://habr.com/ru/companies/cleverpumpkin/articles/675372/;
7. Как создать руководство пользователя – Электронный ресурс. - https://weeek.net/ru/blog/user-manuals;
8. Постановка задачи – Электронный ресурс. - https://studfile.net/preview/5819838/page:5/;
9. Построение графиков функций – Электронный ресурс. - https://skysmart.ru/articles/mathematic/postroenie-grafikov-funkcij;
10. Программирование – Электронный ресурс. - https://specialitet.ru/lekcyi/progr/lekcyy_modul_1_vopros_1.pdf;
11. Результаты тестирования программы – Электронный ресурс. - https://studfile.net/preview/16854979/page:3/;
12. Самоучитель Python - Электронный ресурс. - http://server.aesc.msu.ru/materials/PYTHON/pythonworldru.pdf;
13. Типы алгоритмов и типы их схем – Электронный ресурс. - https://otus.ru/nest/post/1784/.