Программа демонстрирующая движение математического маятника

Характеристика языка программирования "Delphi". Разработка и тестирование программы демонстрации движения математического маятника. Проектирование окна для вывода информации, кнопки запуска и остановки маятника, поля для ввода параметров движения.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 01.04.2014
Размер файла 810,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Содержание

Введение

1. Разработка эскиза проекта

1.1 Область применения

1.2 Цель работы

1.3 Постановка задачи. Блок-схема использования программы

1.4 Разработка рабочего окна программы

2. Разработка технической части программы

2.1 Кнопка «Start»

2.2 Кнопка «Stop»

2.3 Параметры маятника

2.4 Математика маятника

2.5 Отрисовка маятника

2.6 Тестирование программы

Заключение

Сайты и литература

Приложения

Введение

delphi программирование маятник

Большая часть работы программистов связана с написанием исходного кода, тестированием и отладкой программ на одном из языков программирования. Исходные тексты и исполняемые файлы программ являются объектами авторского права и являются интеллектуальной собственностью их авторов и правообладателей.

Различные языки программирования поддерживают различные стили программирования (парадигмы программирования). Отчасти искусство программирования состоит в том, чтобы выбрать язык программирования, наиболее полно подходящий для решения поставленной задачи. Разные языки требуют от программиста различного уровня внимания к деталям при реализации алгоритма, результатом чего часто бывает компромисс между простотой и производительностью (или между временем программиста и временем пользователя).

Единственный язык, напрямую выполняемый ЭВМ -- это машинный язык (также называемый машинным кодом и языком машинных команд). Изначально все программы писались в машинном коде, но сейчас этого практически уже не делается. Вместо этого программисты пишут исходный код на том или ином языке программирования, затем, используя компилятор, транслируют его в один или несколько этапов в машинный код, готовый к исполнению на целевом процессоре, или в промежуточное представление, которое может быть исполнено специальным интерпретатором -- виртуальной машиной. Но это справедливо только для языков высокого уровня. Если требуется полный низкоуровневый контроль над системой на уровне машинных команд и отдельных ячеек памяти, программы пишут на языке ассемблера, мнемонические инструкции которого преобразуются один к одному в соответствующие инструкции машинного языка целевого процессора ЭВМ. (По этой причине трансляторы с языков ассемблера -- ассемблера -- получаются алгоритмически простейшими трансляторами.)

При разработке на любом языке программирования совершенно необходимым средством является компилятор или интерпретатор. Важным, хотя, строго говоря, не абсолютно необходимым элементом разработки является IDE (Integrated Developing Environment) или среда разработки -- программная система, упрощающая написание кода, его отладку, генерацию документации и т.п.. В промышленном программировании на языках C++ и C# чаще всего используется Microsoft Visual Studio

На олимпиадах по информатике и программированию с успехом используются только свободно распространяемые лицензионные инструментальные средства (в большинстве своём распространяются по лицензии GNU GPL). Из языков программирования на олимпиадах по программированию последние годы часто используются языки программирования Паскаль, C/C++ и Java.

Язык программирования «Delphi»

Моя курсовая работа выполненна в Delphi, поэтому вначале хотел бы сказать пару слов об этом языке программирования.

Delphi -- императивный, структурированный, объектно-ориентированный язык программирования, диалект Object Pasca. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal. Начиная с 2007 года уже язык Delphi (производный от Object Pascal) начал жить своей самостоятельной жизнью и претерпевал различные изменения, связанные с современными тенденциями (например, с развитием платформы .NET) развития языков программирования: появились class helpers, перегрузки операторов и другое.

Изначально среда разработки Delphi была предназначена исключительно для разработки приложений Microsoft Windows, затем был реализован вариант для платформ Linux (как Kylix), однако после выпуска в 2002 году Kylix 3 его разработка была прекращена, и вскоре было объявлено о поддержке Microsoft .NET.

Реализация среды разработки проектом Lazarus (Free Pascal, компиляция в режиме совместимости с Delphi) позволяет использовать его для создания приложений на Delphi для таких платформ, как Linux,

Mac OS X и Windows CE.

Также предпринимались попытки использования языка в проектах GNU (например, Notepad GNU) и написания компилятора для GCC.

25 августа 2008 года компания Embarcadero, новый хозяин CodeGear, опубликовала пресс-релиз на Delphi for Win32 2009. Версия привнесла множество нововведений в язык, как то:

По умолчанию полная поддержка Юникода во всех частях языка, VCL и RTL; замена обращений ко всем функциям Windows API на юникодные аналоги (то есть MessageBox вызывает MessageBoxW, а не MessageBoxA).

Обобщённые типы, они же generics.

Анонимные методы.

Новая директива компилятора $POINTERMATH [ON|OFF].

Функция Exit теперь может принимать параметры в соответствии с типом функции.

Вышедшая в 2011 году версия Delphi XE2 добавила компилятор Win64 и кросс-компиляцию для операционных систем фирмы Apple.

Почему я выбрал именно Delphi? В Delphi сделать первый шаг очень просто, она интуитивно понятна. Конечно, небольшому числу разработчиков по долгу службы нужны глубокие специфические знания, которые приходят со временем. А начинающим Delphi позволяет начать создавать программы сразу, не углубляясь в изучение внутренностей операционной системы, и даже собственной среды разработки. Поэтому программист может сразу сосредоточиться на логике работы будущей программы.

Delphi - прекрасная система визуального объектно-ориентированного проектирования, одинаково радующая и новичков в программировании, и профессионалов. Начинающим Delphi позволяет сразу, с небольшими затратами времени и сил создавать прикладные программы, которые внешне неотличимы от программ, созданных профессионалами. А для опытного программиста Delphi открывает неограниченные возможности для создания сколь угодно сложных программ любого типа, в том числе, распределённых приложений, работающих с любыми базами данных.

Тема моего курсового проекта создание программы демонстрирующее движение математического маятника. Эта программа может использоваться в учебных целях.

Понятие маятника

Математический маятник -- осциллятор, представляющий собой механическую систему, состоящую из материальной точки, находящейся на невесомой нерастяжимой нити или на невесомом стержне в однородном поле сил тяготения. Период малых собственных колебаний математического маятника длины L неподвижно подвешенного в однородном поле тяжести с ускорением свободного падения g равен

и не зависит от амплитуды колебаний и массы маятника.

Плоский математический маятник со стержнем -- система с одной степенью свободы. Если же стержень заменить на растяжимую нить, то это система с двумя степенями свободы со связью. Пример школьной задачи, в которой важен переход от одной к двум степеням свободы.

При малых колебаниях физический маятник колеблется так же, как математический с приведённой длиной.

Схематичное изображение маятника.

1. Разработка эскизного проекта программы

1.1 Назначение и область применения

Назначение-визуальная информация. Так как математический маятник не может быть реализован в реальном Мире, то данная прогрмамма может использоваться в учебных заведениях на уроках физики для демонстрации движения математического маятника. Эта программа улучшит восприятие учениками информации по данной теме, поможет лучше запомнить и усвоить материал, исключит вариант «копания» в книжке чтобы ответить на простой вопрос «как движется математический маятник?»

1.2 Цель работы

Моя программа должна быть:

А) надежна, т.е. зависит только от своих действий;

Б) универсальна, т.е. ее можно легко изменить, когда нужна переделка;

В) совместима, т.е. ее можно перенести с одного компьютера на другой с минимальными изменениями;

Г) удобочитаема, т.е. хорошо понимаема пользователем;

Д) эффективна, т.е. реализует наиболее эффективный способ решения задачи.

Так же, перед разработкой программы необходимо определить:

1) какие входные данные необходимы;

2) какая информация (выходные данные) нужна потребителю;

3) какие действия нужно произвести над данными, чтобы получить требуемую информацию.

1.3 Постановка задачи

Создать программу, визуально демонстрирующую движение математического маятника, с заданными параметрами. Программа должна содержать окно для вывода визуально-демонстрационной информации, кнопки запуска и остановки маятника,поля для ввода параметров движения маятника: угловое отклонение маятника, ускорение свободного падения и длина нити, а так же поле вывода периода колебания маятника.

По умолчанию движения маятника должны быть настроенны на максимально реалистичное движение, поэтому при открытии программы доступно только одно поле ввода, в котором задается только отклонение от состояния равновесия(u), но стоит нажать на кнопку «развернуто» появляются остальные поля ввода и вывода: ускорение свободного падения(g), длина нити(l) и период колебания маятника(T).

Ввод и вывод информации должен быть организован только числовыми символами типа integer или real.

После ввода данных нужно нажать на кнопку «Start» и пользователь увидит в левой части окна программы движущийся математический маятник с заданными параметрами. Чтобы ввести другую информацию в полее ввода, маятник нужно остановить кнопкой «Stop», ввести новую информацию и нажать снова кнопку «Start».

1.4 Разработка рабочего окна программы

Я начал разработку программы «математический маятник» с создания меню пользователя. Оно должно быть простым и интуитивно понятным.

Для начала я разместил компонент «GroupBox» в правой части экрана программы. Можно было и не использовать этот элемент, но для удобства пользователя я включил этот компонент в программу.

Далее, в компонент «GroupBox1», названный «Параметры» я поместил четыре элемента: «Edit1», «Edit2», «Edit3», «Edit4» и подписал их, с помощью компонента «Label».

В левой части программы я разместил компонент «Image», а также кнопки «Start» и «Stop».

Так же я разместил кнопку «Расширенно» для удобства пользования программой. Она расположена под параметрами.

На окно программы я перетащил компонент «Таймер», который пригодится в создании анимации, а также компонент «Action list» для старта и остановки анимации.

Таким образом, программа имеет вид :

2. Разработка технической части программы

2.1 По нажатии кнопки «Start» происходит следующее

1) Запускается процедура «Start execute»

2) Все вводные данные элементов «Edit» переводятся из строкового типа в числовой. Для этого воспользуемся несколько раз командами «Strtofloat».

3) Далее высчитывается период маятника в секундах и его амплитуда в радианах, с помощью соответствующих математических формул.

4) Отсчет миллисекунд с начала программы заносится в дискретность по времени dt0 (это необходимо для анимации маятника).

5) Запускается таймер.

6) Анимация маятника осуществляется благодаря таймеру. Пока таймер отсчитывает такты-происходит обновление программы. А обновляется она за счет процедуры.

2.2 По нажатии кнопки «Stop» происходит

Остановка таймера, следовательно остановка обновления программы, следовательно остановка анимации маятника.

2.3 Параметры маятника

Итак, мы подобрались к части программы где будет происходить движение маятника. Для осуществления его движения я воспользовался компонентом TImage.

Это самый простой, но и самый долгий метод осуществления анимации. Процесс самой анимации происходит так- «движение, стереть, движение…»

Зададим параметр радиуса окружности (груза маятника) в пикселях. Я выбрал радиус равный 7, потому что так маятник смотрится эргономично и реалистично:

Затем определимся с начальным положением маятника на компоненте TImage, для этого воспользуемся переменными:

X и Y отвечают за движения маятника по дуге,

CY отвечает за вертикальное начальное положение груза.(Чем больше значение, тем ниже будет расположен «груз»).

CX и К отвечают за горизонтальное расположение груза.

PY и PX отвечает за расположение «нити» маятника, которая тянется с верхней границы экрана TImage к «грузу».

2.4 Математика маятника

Определим движение маятника по дуге, с помощью формул:

DT- Эта переменная отвечает за анимацию маятника. Чем больше делитель (В данном случае это 1000), тем быстрее обновляется программа и тем быстрее «ходит» маятник.

X и Y Определяют движение маятника по дуге по данным математическим формулам.

Определим начальное местоположение маятника.

Сделаем это с помощью формул:

На этих формулах мы определяем расположение маятника в начальный момент времени запуска программы.

K-отвечает за вертикальное расположение маятника «груза» маятника, относительно верхней границы TImage. (Чем оно больше-тем ниже расположен груз).

CX-отвечает за горизонтальное расположение маятника, в данном случае, мы делим длину компонента на два и попадаем в самый центр.

CY-отвечает за вертикальное расположение ВСЕГО маятника. (Чем значение больше тем ниже расположен ВЕСЬ маятник).

PY-отвечает за горизонтальное расположение маятника.

2.5 Отрисовка маятника

Отрисовка маятника происходит с помощью компонента Delphi-Canvas.

Изображение маятника происходит в конце программы, так как мы не можем знать, какие начальные данные введет пользователь, и в каком положении нужно «поставить» маятник в начальный момент времени, после нажатия кнопки «Start».

Итак. Команда Brush.color задает цвет кисти, которая закрашивает фон.

В данном случае мы пользуемся схемой RGB и ставим черный фон. (0, 0, 0). Pen.color отвечает за цвет карандаша, которым будет нарисован маятник.

Мы используем белый цвет. (255, 255, 255).

Команда Fillrect это команда заливки фона. Она закрашивает все цветом кисти. (Brush).

Затем перемещаем курсор в середину верхней границы экрана с помощью команды (MoveTo). Далее от этой точки мы рисуем линию до «груза».

Line to (PX,PY).

Далее рисуем «груз».

Придаем цвету кисти цвет карандаша. (Белый), и рисуем эллипс

с помощью соответствующей команды.

2.6 Тестирование программы

Пи запуске программы у нас появляется такое окно:

Справа мы видим окно для ввода начального положения маятника. (можно изменить). Чем больше значение, тем больше будет амплитуда маятника.

Наблюдаем кнопки страт и стоп. И кнопку «Расширенно»

При нажатии на кнопку «Расширенно» мы увидим следующую картину:

Мы видим поля для ввода: длина нити (L), ускорение свободного падения (G), и поле вывода для периода (T).

Итак, введем параметры:

И нажмем кнопку: .

Мы увидим в левой части экрана движение маятника:

Так же, мы видим изменение параметра Т (Период маятника).

Пробуем программу при U=100.

Мы видим:

Маятник заходит за границу, но продолжает исправно работать. Так же мы видим что период «Т» остался неизменным. Это подтверждает теорию о том, что амплитуда не влияет на период математического маятника.

Теперь поменяем параметр «G»-ускорение свободного падения, и посмотрим изменится ли параметр «Т»?

Увеличим параметр G в десять раз (с 9 до 90), а U установим на 30.

Пронаблюдаем сильное увеличение скорости колебания маятника и изменения параметра Т в меньшую сторону.

Проведем последний эксперимент и изменим длину нити L, поставив U и G в обычное положение:

Мы увидим ужасное и неестественное замедление маятника, также сильное увеличение периода маятника (Т). Что интересно: мы увеличили длину нити, но на компоненте «Canvas» это никак не отразилось. Фактически мы не увеличивали длину нити зрительно, а лишь математически изменили этот параметр. То есть, можно сказать, что зрительно пропорция длины нити и размера груза осталась неизменной:

Заключение

В данной курсовой работе рассмотрена программа, демонстрирующая движение математического маятника и зависимость периода от других параметров. Во время разработки данной программы мной было изучено много новых компонентов Delphi, таких как: Таймер, Холст, Анимация, Action List и др.

Программа полностью отвечает всем поставленным целям - она: надежна, универсальна, совместима, удобочитаема и эффективна.

На данном этапе разработки программа логически завершена и протестирована, но по желанию заказчика она может быть легко переделана, в нее могут быть добавлены новые компоненты для удобства конкретного пользователя.

На основании неоднократного тестирования программы можно сделать некоторые выводы:

Амплитуда математического маятника не влияет на его период.

Большая длина нити увеличивает его период.

Меньшее ускорение свободного падения уменьшает его период.

Данные выводы полностью подтверждают математические и физические законы о математическом маятнике, следовательно программа работает ПРАВИЛЬНО.

Список использованных сайтов и литературы

http://ru.wikipedia.org/

http://www.delphi-manual.ru/

http://www.embarcadero.com/

http://www.delphisources.ru/

http://bearloga.info/?p=507

Бухгольц Н.Н. Основной курс теоретической механики. М.: Наука. 1996.

Боровой А., Херувимов А. Колебания и маятники. Ж. Квант. № 8, 1981.

Галисеев Г.В. Программирование в среде Delphi 7. Самоучитель.

Фаронов В.В. Delphi 6: Учебный курс. - СПб.: Питер, 2002.

Приложения

Размещено на Allbest.ru


Подобные документы

  • Исследование характера движения математического маятника в идеальных условиях, то есть без учёта сил сопротивления, что позволяет маятнику совершать гармонические колебания неограниченное количество времени. Рассмотрение алгоритма решения задачи на ЭВМ.

    курсовая работа [231,1 K], добавлен 07.03.2013

  • Разработка имитационной модели для изучения движения нелинейного маятника с графическим отображением в ГИС Maple в режиме функционирования системы наблюдений без задержки времени. Гармонические и периодические колебания маятника. Теорема Гюйгенса.

    курсовая работа [1,3 M], добавлен 29.05.2014

  • Анализ преимуществ и недостатков различных численных методов решения дифференциальных уравнений высших порядков. Обоснование выбора метода Рунге-Кутта четвертого порядка. Разработка программы, моделирующей физическое и математическое поведение маятника.

    курсовая работа [1,6 M], добавлен 11.07.2012

  • Разработка программы обработки типизированных файлов с кодом на языке Object Pascal, с использованием компонентов Delphi для ввода и вывода данных. Разработка экранных форм и алгоритма программы. Описание программных модулей и инструкция оператору.

    курсовая работа [1,5 M], добавлен 08.02.2011

  • Рассмотрение особенностей среды программирования Delphi. Разработка программы для пересчета длины из фунтов в килограммы с использованием следующих объектов: Edit, Label, Button. Значения свойств поля ввода-редактирования и командной кнопки Перерасчет.

    практическая работа [177,2 K], добавлен 18.10.2012

  • Разработка программы проверки знаний для тестирования студентов по программированию с кодом на языке Delphi. Проектирование визуального интерфейса и словесный алгоритм работы программы. Алгоритмы разработанных процедур и функций, инструкция пользователя.

    курсовая работа [506,5 K], добавлен 21.02.2011

  • Назначение и область применения промышленных роботов. Разработка программы "Кинематическое движение" в среде Delphi для определения основных параметров кинематического движения. Описание работы и листинг программы. Руководство программиста и оператора.

    курсовая работа [499,1 K], добавлен 17.11.2014

  • Анализ операторов ввода и вывода, а также характеристика форматов, используемых в этих операторах. Оформление законченной программы с применением этих операторов. Структура программы. Алфавит языка и типы данных. Ввод и вывод информации. Форматный вывод.

    лабораторная работа [62,0 K], добавлен 15.07.2010

  • Разработка в среде Delphi приложения "Записная книжка" для ввода и корректировки информации, поиска данных. Выбор состава технических и программных средств. Текст программы, ее описание и тестирование. Основные условия программы, требования к компьютеру.

    курсовая работа [565,7 K], добавлен 08.12.2011

  • Delphi - среда быстрой разработки, в которой в качестве языка программирования используется типизированный объектно-ориентированный язык Delphi. Варианты программного пакета. Особенности работы, вид экрана после запуска. Описание структуры программы.

    курсовая работа [1,3 M], добавлен 25.11.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.