В начале учебного года на уроках физики мы решали задачи на движение. Я решила написать программу, которая могла бы автоматически решать эти задачи по введённым данным, практикуясь тем самым в программировании и сделав полезный для учеников продукт. Для написания программы был выбран именно язык C# так как он был создан специально для написания оконных приложений в операционной системе Windows и в нем бы я и хотела попрактиковаться.
Проблема: для получения профессии в будущем будет необходим навык программирования.
Актуальность темы: Данная программа может пригодиться как для решения, так и для проверки задач на движение. Путём её создания будет получен опыт в программировании, который будет затем полезен в будущем.
Вложение | Размер |
---|---|
![]() | 300.89 КБ |
Муниципальное бюджетное общеобразовательное учреждение
«Кезская средняя общеобразовательная школа №1»
ПРОЕКТ
«Программа расчёта задач на движение»
Выполнила: ученица 9б класса
Вилесова Елизавета
Руководитель:
Ветошкина Наталья Владимировна
п.Кез
2020-2021 уч.год
ОГЛАВЛЕНИЕ
4. БИБЛИОГРАФИЧЕСКИЙ СПИСОК 10
В начале учебного года на уроках физики мы решали задачи на движение. Я решила написать программу, которая могла бы автоматически решать эти задачи по введённым данным, практикуясь тем самым в программировании и сделав полезный для учеников продукт. Для написания программы был выбран именно язык C# так как он был создан специально для написания оконных приложений в операционной системе Windows и в нем бы я и хотела попрактиковаться.
Проблема: для получения профессии в будущем будет необходим навык программирования.
Актуальность темы: Данная программа может пригодиться как для решения, так и для проверки задач на движение. Путём её создания будет получен опыт в программировании, который будет затем полезен в будущем.
Цели проекта: написать программу для решения кинематических задач.
Задачи:
С# (произносится си-шарп) — язык программирования, сочетающий объектно-ориентированные и контекстно-ориентированные концепции. Разработан в 1998—2001 годах группой инженеров под руководством Андерсa Хейлсбергa в компании Microsoft как основной язык разработки приложений для платформы Microsoft .NET.[1]
Сторонники C# называют его самым мультипарадигменным, универсальным, продвинутым и удобным в использовании языком программирования. [2]
C# относится к семье языков с C-подобным синтаксисом (логотип которых представлен на рисунке 1), из них его синтаксис наиболее близок к C++ и Java. Язык имеет строгую статическую типизацию, поддерживает полиморфизм, перегрузку операторов, указатели на функции-члены классов, атрибуты, события, свойства, исключения, комментарии в формате XML.
Переняв многое от своих предшественников — языков C++, Delphi, Modula и Smalltalk — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем: так, C# не поддерживает множественное наследование классов (в отличие от C++) или вывода типов (в отличие от Haskell).
Рис.1 – логотипы языков программирования семейства «си».
Ниже представлены особенности языка си [3]:
Итак, наиболее подходящим языком для написания программы будет C# в связи с удобством в плане взаимодействия с библиотеками и классами.
Узнав особенности языка, необходимо разобраться с работой и функционалом программы. Так как в основе программы лежит работа с вводимыми числами, а также с последующим построением графиков по имеющимся данным, то необходимо составить её функционал:
1) программа должна получать на вход все необходимые для расчёта данные
2) выводить все просчитанные данные
3) строить графики
4) иметь возможность изменения количества осей
5) входные данные будут вычисляться до тех пор, пока в ходе вычислений не перестанут появляться новые данные
Для удобства весь функционал программы можно разделить на 4 класса:
-Главный класс
осуществляет запуск окна
- Класс окна
Содержит алгоритмы всех функций окна
- Класс формул
Содержит все формулы, в том числе и для необычного вычисления исходных данных
- Класс окна с графиком
Содержит метод построения и отрисовки графиков
Для написания программы был выбран язык C#, сама программа написана в Visual Studio 2019 с пакетом SDK C# для оконных приложений. Был создан проект .Net Frimework под названием “ KinematicCalc”.
В первую очередь следует создать интерфейс окна для наглядности функций и действия программы. Как говорилось ранее, функционал программы разбит на 4 класса:
Чтобы вводимые данные обрабатывались, необходимо связать кнопки окна с кодом. Для этого требуется класс окна. Из структуры программы следует, что окно должно иметь такие основные составляющие части интерфейса, как:
1) Подписанные поля для введения данных
2) Активирующие кнопки
3) Выводимый результат
4) кнопки выбора графиков и их активация
Рис.2 – структура программы.
Помимо этого, можно добавить виды формул, после введения данных которые будут подстроены под них для наглядности или ввод количества знаков после запятой для точности вычислений. Стоит добавить, что все вводимые в поля данные должны обязательно быть в единой СИ. Скриншот окна программы и дополнительное окно для построенных графиков приставлены на рисунке 3.
Рис.3 – Демонстрация работы программы.
Следующим шагом будет вывод всевозможных формул, требующихся для расчёта. Все они будут в классе формул, где если не сработает одна из формул, то будет использоваться другая.
Так как главная формула S = S0 + v0*t + 0,5*a*t2, то выразив остальные, получится:
S0 = S – v0*t – 0,5*a*t2
v0 = (-S + S0 + v0*t + 0,5*a*t2):t
a = 2*(S – S0)/t2
t = -v0 +- (√(v0*t - 2*a*(S0-S)):a или t = (v0 +- √D):a
Выражая t из формулы S = S0 + v0*t + 0,5*a*t2, возникла такая проблема, как значение t ≠ 0. Также следует отметить, что, решая через дискриминант, он не должен быть меньше 0. Такой же набор формул необходимо получить из формулы v = v0 + v*t.
Связь между кнопками окна с кодом происходит в также классе окна. Обработчик каждого элемента окна располагается в данном классе.
Для изображения графика требуется отдельный класс. Построение выполняется через цикл, где программа проходит по всем точкам оси OX. После вычисляется Y для каждого X по заданным формулам с введёнными значениями с помощью функции Add(X;Y), где X – интервал каждые n метров. Также считаются и другие данные. Например, функция v(t): ось OX – t, делящаяся на N промежутков. Затем, с помощью цикла выполняется t+ = dt, где dt – интервал между точками. dt можно найти, разделив всю длину на количество точек (100). v, в свою очередь, находится по формуле при помощи t. Так, у каждого t своя v. И, наконец, когда цикл передаёт библиотеке все значения v; t, она соединяет точки, в результате чего рисуется график v(t).
Также в программе предусматривается разбиение вектора по осям. Имея угол наклона к линии горизонта, можно разбить вектор по осям и наоборот получить значение длины вектора и угла, зная длину его проекций. Этого можно добиться методом прямоугольного треугольника:
sin - отношение противолежащего катета к гипотенузе.
cos - прилежащего к гипотенузе,
sin(a) = y/B
cos(a) = x/B
где x и y проекции вектора B на оси. Из отношений можно выразить вектор B:
B = y/sin(a)
B = x/cos(a)
В программе используется формула через sin. Также стоит отметить, что синус берется в градусах
a = arcsin(y/B)
a= arccos(x/B)
Таким образом, можно получить угол.
Перевод из радиан в градусы можно осуществить умножением радиан на 180/π.
Теперь необходимо найти сами проекции, выразив x и y:
B*sin(a) = y
B*cos(a) = x
Функционал был добавлен в окно программы (Рис.3 )
Рис.4 – интерфейс функции разбития по векторам
Конечный вид окна программы представлен на (рис.4)
Рис.5 - Окно программы
В ходе работы была изучена история языков программирования семейства “СИ”. Был выбран язык С# так как он оптимален для создания на нем оконных Windows приложений.
Затем, после выбора языка, была выбрана Visual Studio, где в последствии было разработано окно, а также разбитие его по блокам, отвечающих за определённые для них функции. После, функционал программы разбивался на классы для обработки получаемой информации, вывода её на экран и запускающих с их помощью программу.
В результате, была разработана и создана рабочая программа-калькулятор, а также, благодаря этому, был получен первичный опыт программирования.
1) Энциклопедия языков программирования Progopedia: Статья “C#” [Электронный ресурс]. Режим доступа: http://progopedia.ru/language/csharp/ (Дата обращения 24.12.2020)
2) Статья “История языка С#” [Электронный ресурс]. Режим доступа: https://it-black.ru/istoriya-yazyka-ci_sharp/ (Дата обращения 24.12.2020)
3) Статья “История создания языка программирования С#” [Электронный ресурс]. Режим доступа: https://web.informatics.ru/works/17-18/web_online/barabanov_n_v/language_c.html (Дата обращения 24.12.2020)
Ласточка
Этот древний-древний-древний мир!
"Не жалею, не зову, не плачу…"
Учимся ткать миленький коврик
Мороз и заяц