Федеральное агентство по образованию РФ
Государственное образовательное учреждение высшего профессионального образования
Тульский государственный педагогический университет им. Л.Н. Толстого
Кафедра информационных технологий
Курсовая работа по информатике
на тему: Создание средств наглядности с использованием программной среды Delphi и Microsoft Movie Maker
Выполнил: студент факультета МФиИ
группа 3Д
Мельников Д.И.
Проверил: ассистент кафедры ИТ
Ситникова Л.Д.
Тула 2010
Оглавление
1.1 Классификация средств создания электронных наглядных пособий
Глава 2. Техническое описание программного продукта
2.1 Описание работы программного продукта
Список использованной литературы
Введение
Изучение явления колебания материальной точки на жестком стержне и его закономерностей в настоящее время включено в образовательные минимумы школ и вузов нашей страны. К сожалению, преподаватели при изложении материала посвященному колебаниям материальной точки на жестком стержне часто ограничиваются только теорией, т.к. не везде есть необходимые установки для проведения опыта. В то время как для наилучшего усвоения данного материала просто необходимо использовать учебный физический эксперимент в виде демонстрационных и лабораторных работ. Эксперимент в целом является неотъемлемой органической частью курса физики. Удачное сочетание теоретического материала и эксперимента даёт, как показывает практика, наилучший педагогический результат.
Цель курсовой работы: «создание программы, моделирующей виртуальный эксперимент».
Достижение поставленной цели предусматривает решение следующих задач:
провести анализ теоретической и научно-методической литературы по данной теме;
разработать программу для виртуальной лабораторной работы «Колебания материальной точки на жестком стержне в вязкой среде»;
подготовить методические рекомендации к лабораторной работе «Колебания материальной точки на жестком стержне в вязкой среде».
Разработанная лабораторная работа в дальнейшем будет использована на занятиях лабораторного практикума в вузе, а так же для демонстрации колебаний материальной точки на жестком стержне в вязкой среде на уроках физики в школах.
Глава 1. Теоретическая часть
1.1 Классификация средств создания электронных наглядных пособий
Процесс вхождения высшей школы в мировое образовательное пространство требует совершенствование, а также серьёзную переориентацию компьютерно - информационной составляющей. Вторая половина ХХ века стала периодом перехода к информационным обществам. Лавинообразный рост объёмов информации, принял характер информационного взрыва во всех сферах человеческой деятельности. Информационный взрыв породил множество проблем, важнейшей из которых является проблема обучения. Особый интерес представляют вопросы, связанные с электронными наглядными пособиями.
Первоначально наглядность обучения трактовалась как путь познания конкретного (видимого) объекта, например: реальные предметы и явления в их натуральном виде, модели машин, муляжи, иллюстративные пособия (раздаточный материал, транспаранты, таблицы) и некоторые графические пособия, учебные кинофильмы и т.д.
В современной же дидактике утверждается, что принцип наглядности - это систематическая опора не только на конкретные визуальные предметы (люди, животные, предметы и т.п.) и их изображения, но и на модели.
Для того чтобы сделать средства обучения наглядными, необходимо выделить основные свойства изучаемого явления (то есть превратить его в модель), правильно, адекватно отразить эти свойства (то есть сделать модель изоморфной изучаемому явлению) и, кроме того, обеспечить доступность этой модели для учащихся.
Средства создания электронных наглядных пособий можно разделить на группы, например, используя комплексный критерий, включающий такие показатели, как назначение и выполняемые функции, требования к техническому обеспечению, особенности применения. В соответствии с указанным критерием возможна следующая классификация:
традиционные алгоритмические языки;
инструментальные средства общего назначения;
средства мультимедиа;
гипертекстовые и гипермедиа средства;
Ниже приводятся особенности и краткий обзор каждой из выделенных групп. В качестве технической базы в дальнейшем имеется в виду IBM совместимые компьютеры, как наиболее распространенные в нашей стране и имеющиеся в распоряжении университета.
Традиционные алгоритмические языки.
Характерные черты электронных пособий, созданных средствами прямого программирования:
разнообразие стилей реализации (цветовая палитра, интерфейс, структура ЭП, способ подачи материала и т.д.);
сложность модификации и сопровождения;
большие затраты времени и трудоемкость;
отсутствие аппаратных ограничений, т.е. возможность создания ЭП,
ориентированного на имеющуюся в наличие техническую базу.
Инструментальные средства общего назначения.
Инструментальные средства общего назначения (ИСОН) предназначены для создания электронных пособий (ЭП) пользователями, не являющимися квалифицированными программистами. ИСОН, применяемые при проектировании ЭП, как правило, обеспечивают следующие возможности:
формирование структуры ЭП;
ввод, редактирование и форматирования текста (текстовый редактор);
подготовка статической иллюстративной части (графический редактор);
подготовка динамической иллюстративной части (звуковых и анимационных фрагментов);
подключение исполняемых модулей, реализованных с применением других средств разработки и др.
К достоинствам инструментальных средств общего назначения следует отнести:
возможность создания ЭП лицами, которые не являются
квалифицированными программистами;
существенное сокращение трудоемкости и сроков разработки ЭП;
невысокие требования к компьютерам и программному обеспечению.
Вместе с тем ИСОН имеют ряд недостатков, таких как:
далеко не дружественный интерфейс;
меньшие, по сравнению с мультимедиа и гипермедиа системами, возможности;
отсутствие возможности создания программ дистанционного обучения.
В нашей стране существует множество отечественных ИСОН: Адонис, АосМикро, Сценарий, ТесСис, Интегратор и др.
Средства мультимедиа
Еще до появления новой информационной технологии эксперты, проведя множество экспериментов, выявили зависимость между методом усвоения материала и способностью восстановить полученные знания некоторое время спустя. Если материал был звуковым, то человек запоминал около 1\4 его объема. Если информация была представлена визуально – около 1\3. При комбинировании воздействия (зрительного и слухового) запоминание повышалось до половины, а если человек вовлекался в активные действия в процессе изучения, то усвояемость материала повышалось до 75%.
Итак, мультимедиа означает объединение нескольких способов подачи информации - текст, неподвижные изображения (рисунки и фотографии), движущиеся изображения (мультипликация и видео) и звук (цифровой и MIDI) - в интерактивный продукт. Аудиоинформация включает в себя речь, музыку, звуковые эффекты.
Наиболее важным вопросом при этом является информационный объем носителя. По сравнению с аудио видеоинформация представляется значительно большим количеством используемых элементов. Прежде всего, сюда входят элементы статического видеоряда, которые можно разделить на две группы: графика (рисованные изображения) и фото. К первой группе относятся различные рисунки, интерьеры, поверхности, символы в графическом режиме. Ко второй - фотографии и сканированные изображения.
Динамический видеоряд практически всегда состоит из последовательностей статических элементов (кадров). Здесь выделяются три типовых элемента: обычное видео (около 24 фото в секунду), квазивидео (6-12 фото в секунду), анимация. Использование видеоряда в составе мультисреды предполагает решение значительно большего числа проблем, чем использование аудио. Среди них наиболее важными являются: разрешающая способность экрана и количество цветов, а также объем информации.
Характерным отличием мультимедиа продуктов от других видов
информационных ресурсов является заметно больший информационный объем, поэтому в настоящее время основным носителем этих продуктов является оптический диск CD-ROM стандартной емкостью 640 Мбайт. Для профессиональных применений существует ряд других устройств (CD-Worm, CD-Rewritaeble, DVD и др.), однако они имеют очень высокую стоимость.
Гипертекстовые и гипермедиа средства
Гипертекст – это способ нелинейной подачи текстового материала, при котором в тексте имеются каким-либо образом выделенные слова, имеющие привязку к определенным текстовым фрагментам. Таким образом, пользователь не просто листает по порядку страницы текста, он может отклониться от линейного описания по какой-либо ссылке, т.е. сам управляет процессом выдачи информации. В гипермедиа системе в качестве фрагментов могут использоваться изображения, а информация может содержать текст, графику, видеофрагменты, звук.
Использование гипертекстовой технологии удовлетворяет таким предъявляемым к электронным наглядным пособиям, как структурированность, удобство в обращении. При необходимости такой учебник можно “выложить” на любом сервере и его можно легко корректировать. Но, как правило, им свойственны неудачный дизайн, компоновка, структура и т.д.
В настоящее время существует множество различных гипертекстовых форматов (HTML, DHTML, PHP и др.).
Для повышения педагогического результата при проведении физического эксперимента в рамках достижения цели данной работы было выбрано следующие программное обеспечение: Turbo Delphi и Microsoft Movie Maker. Выбор данных средств был обусловлен следующими мотивами:
Turbo Delphi объединяет в себе множество полезных инструментов и готовых компонентов, из которых, как дом из кирпичей, собираются проекты – пользовательские программы.
Microsoft Movie Maker – имеет простой интерфейс, лёгок в применении.
Глава 2. Техническое описание программного продукта
2.1 Описание работы программного продукта
Электронный ресурс «Моделирование колебаний шарика на жёстком стержне в вязкой среде» для студентов всех ВУЗов и средних профессиональных учебных заведений предназначено для подготовки к практическим и лабораторным занятиям, осуществления самостоятельной работы студентов, изучающих общую и теоретическую физику.
Программный продукт выполнен в средах Movie Maker и Turbo Delphi. Чтобы запустить программу нужно выбрать из папки «Маятник» файл Project1.exe.
При запуске этого файла перед пользователем открывается главное окно, содержащие поля ввода параметров физического эксперимента, поля вывода посчитанных значений, поле для вывода графика и кнопки, при нажатии на которые происходит то или иное событие.
В левом верхнем углу формы находится кнопка «меню». При нажатии кнопки «Меню» осуществляется переход к разделам меню. Оно содержит такие разделы, как:
настройки
теоретическая справка
о программе
выход
В разделе «Настройки» пользователь может ввести значение: предел угла на графике, предел угловой скорости на графике, нижний предел энергии Е на графике и шаг интегрирования, те значения которые он считает нужными. В зависимости от выбора данных параметров пользователь может получить различные формы графика плотности вероятности.
В опции меню «Теоретическая справка» пользователь может получить справочный материал относительно математического маятника и колебаниях, а также посмотреть нужные формулы.
В разделе «О программе» пользователь получает информацию относительно программы.
При нажатии раздела «Выход» форма закрывается, и пользователь выходит из программы.
Под кнопкой «Меню» на панели располагаются 8 окон ввода, в которые можно вносить заданные параметры: диаметр шара, массу шара, длину стержня, плотность среды, вязкость среды, начальный угол, начальная угловая скорость, конечное время и изменять их.
За ячейками располагается кнопка «Видео», при нажатии которой воспроизводится демонстрационное видео. На данном видео можно посмотреть порядок выполнения эксперимента.
При нажатии на кнопку «Старт» справа выводятся 4 графика:
график зависимости угла от времени
график зависимости угловой скорости от времени
график зависимости полной энергии колебаний от времени
анимация движения маятника
При нажатии на кнопку «Стоп» программа прекращает свою работу, и начинает считывать значения: собственной частоты, собственного периода, декремента затухания, частоты, периода, добротности, плотности шарика, которые обработались до определенного момента, и записывает значения в поля, которые расположены за кнопкой видео.
При нажатии на кнопку «Очистить графики» происходит очищение графических полей:
графика зависимости угла от времени
графика зависимости угловой скорости от времени
графика зависимости полной энергии колебаний от времени
анимация движения маятника возвращается в исходное начальное положение
При нажатии на кнопку «Выход» форма закрывается.
Заключение
Целью курсовой работы было «создание программы, моделирующей виртуальный эксперимент».
Электронные наглядные пособия играют исключительно важную роль в образовании. Облегчая проведение экспериментов, они снимают психологический барьер в изучении физике, и делают этот процесс интересным и более простым. При грамотном применении их в учебном процессе, пособия обеспечивают повышение фундаментальности физического образования, содействуют интеграции нашей образовательной системы с образовательной системой наиболее развитых западных стран, где подобные методы обучения применяются уже давно.
В ходе работы над курсовым проектом были решены следующие задачи:
проведен анализ теоретической и научно-методической литературы по данной теме;
разработана программа для виртуальной лабораторной работы «Колебания материальной точки на жестком стержне в вязкой среде»;
подготовлена методическая рекомендация лабораторной работы «Колебания материальной точки на жестком стержне в вязкой среде».
Таким образом, задачи исследования были решены и цель достигнута.
Разработанный программа может быть использован в практике работы учителей. Это будет служить не только расширению и углублению теоретических знаний, умений и навыков школьников по физике, но предполагает и практическую подготовку, усиливающую профориентационную направленность обучения.
Список использованной литературы
Культин Н.Б. Основы программирования в Delphi 7.- СПб.: БХВ-Петербург, 2003. - 608 с.: ил.
Галисеев Г.В. Программирование в среде Delphi.. Самоучитель:
— М.: Издательский дом "Вильяме", 2004. — 304 с.: ил.
М.В. Сухарев. Основы Delphi. Профессиональный подход — СПб.: Наука и Техника, 2004. — 600 с.: ил.
Стивене Р. Delphi. Готовые алгоритмы / Род Стивене; Пер. с англ. Мерещука П. А. - 2-е изд., стер. - М.: ДМК Пресс ; СПб.: Питер, 2004. - 384 с.: ил.
Фленов М. Программирование в Delphi глазами хакера. — СПб.: БХВ-Петербург, 2004. - 368 с.: ил.
Приложения
Приложение 1
Программный код
privat
{ Private declarations }
B_Close : boolean;
X,Y,t,Dt,fi0,fi,X_O,Y_O,tend: real;
X1,Y1 : real;
w0,b: real;
m,d,p,w,delta,j,E,m0,a,en,sch: real;
OT ,width, height : integer;
L,LVector : integer;
fiFc, Xfc, Yfc, Xfcnad, Yfcnad, c: real;
outalfa,outomega,k1a,k1w, k2a, k2w, k3a, k3w,k4a,k4w:real;
s: string;
public
{ Public declarations }
end;
var
Form1: TForm1;
const g=9.814; dl=3.7;
implementation
{$R *.dfm}
Uses Unit4, Unit5, Unit3, Unit6;
//создание графиков и движения маятника
procedure TForm1.BStartClick(Sender: TObject);
begin
if (LabeledEdit1.Text='') or (LabeledEdit2.Text='') or (LabeledEdit3.Text='')
or (LabeledEdit4.Text='') or (LabeledEdit5.Text='') or (LabeledEdit6.Text='')
or (LabeledEdit7.Text='') or (LabeledEdit8.Text='') or (StrToFloat(LabeledEdit5.Text)=0)
or (StrToFloat(LabeledEdit4.Text)=0) and (StrToInt(LabeledEdit3.Text)=0)
or (StrToFloat(LabeledEdit8.Text)=0)
then
begin
ShowMessage('Проверте правильность ввода данных!');
exit;
end;
B_Close:=false;
BitBtn3.Enabled:=false;
BitBtn4.Enabled:=true;
BitBtn2.Enabled:=false;
LabeledEdit1.Enabled:=false;
LabeledEdit2.Enabled:=false;
LabeledEdit3.Enabled:=false;
LabeledEdit4.Enabled:=false;
LabeledEdit5.Enabled:=false;
LabeledEdit6.Enabled:=false;
LabeledEdit7.Enabled:=false;
LabeledEdit8.Enabled:=false;
Form4.LabeledEdit4.Enabled:=false;
L:=StrToInt(LabeledEdit3.Text); //длина нити
fi0:=StrToFloat(LabeledEdit2.Text);//начальный угол
d:=StrToFloat(LabeledEdit4.Text); //диаметр шара
m:=StrToFloat(LabeledEdit5.Text); //масса шарика
p:=StrToFloat(LabeledEdit6.Text); //плотноть среды
tend:=StrToFloat(LabeledEdit8.Text); //конечное время
w0:=StrToFloat(LabeledEdit7.Text); //начальная скороть
b:=StrToFloat(LabeledEdit1.Text); //вязкость среды
m0:=(p*PI*d*d*d)/6;
w:=w0;
t:=0;
fi0:=fi0*PI/180;
fi:=fi0;
delta:=(3*PI*b*d)/(2*m);
dt:=(2*PI*sqrt(L/g))/(StrToFloat(Form4.LabeledEdit4.Text));
j:=abs(g/l*(1-m0/m));
sch:=g/l*(1-m0/m);
en:=g*l*(m-m0);
E:=(en*(1 - cos(fi)) + (m*l*l*w*w)/2);
c:=(sqrt(j));
s:=FloatToSTR(round(c*10000)/10000);
Label16.Caption:=s+' Гц';
c:=(2*PI/sqrt(j));
s:=FloatToSTR(round(c*10000)/10000);
Label17.Caption:=s+' 1/c';
c:=delta;
s:=FloatToSTR(round(c*10000)/10000);
Label18.Caption:=s;
if delta<sqrt(j) then
a:=sqrt(j-delta*delta);
if delta>sqrt(j) then
a:=sqrt(delta*delta-j);
if delta=sqrt(j) then
a:=0;
c:=a;
s:=FloatToSTR(round(c*10000)/10000);
Label9.Caption:=s+' Гц';
c:=(2*PI)/a;
s:=FloatToSTR(round(c*10000)/10000);
Label11.Caption:=s+' 1/c';
c:=delta*((2*PI)/a);
s:=FloatToSTR(round(c*10000)/10000);
Label14.Caption:=s;
if delta<>0 then
begin
c:=PI/(delta*((2*PI)/a));
s:=FloatToSTR(round(c*10000)/10000);
Label15.Caption:=s;
end
else
Label15.Caption:='-';
c:=(6*m)/(PI*sqr(d)*d);
s:=FloatToSTR(round(c*1000)/1000);
Label12.Caption:=s+' кг/куб.м';
Chart2.BottomAxis.Maximum:=tend;
Chart3.BottomAxis.Maximum:=tend;
Chart4.BottomAxis.Maximum:=tend;
Chart4.LeftAxis.Maximum:=E+0.5*E;
Chart4.LeftAxis.Minimum:=StrToFloat(Form4.LabeledEdit3.Text);
Chart2.LeftAxis.Maximum:=StrToFloat(Form4.LabeledEdit1.Text);
Chart2.LeftAxis.Minimum:=-Chart2.LeftAxis.Maximum;
Chart3.LeftAxis.Maximum:=StrToFloat(Form4.LabeledEdit2.Text);
Chart3.LeftAxis.Minimum:=-StrToFloat(Form4.LabeledEdit2.Text);
outalfa:=fi0;
outomega:=w0;
while (not B_Close) and (t<=tend) do
begin
fi:=outalfa;
w:=outomega;
k1a:=dt*w;
k1w:=-dt*(2*delta*w+sch*sin(fi));
fi:=outalfa+k1a/2;
w:=outomega+k1w/2;
k2a:=dt*w;
k2w:=-dt*(2*delta*w+sch*sin(fi));
fi:=outalfa+k2a/2;
w:=outomega+k2w/2;
k3a:=dt*w;
k3w:=-dt*(2*delta*w+sch*sin(fi));
fi:=outalfa+k3a;
w:=outomega+k3w;
k4a:=dt*w;
k4w:=-dt*(2*delta*w+sch*sin(fi));
fi:=outalfa+(k1a+k2a*2+k3a*2+k4a)/6;
w:=outomega+(k1w+k2w*2+k3w*2+k4w)/6;
E:=en*(1 - cos(fi)) + (m*l*l*w*w)/2;
outalfa:=fi;
outomega:=w;
Chart2.Series[0].AddXY(t,fi * 180 / PI);
Chart3.Series[0].AddXY(t,w);
Chart4.Series[0].AddXY(t,E);
t:=t+Dt;
X:=X_O+dL*sin(fi);
Y:=Y_O-dL*cos(fi);
X1:=X_O+LVector*sin(fi);
Y1:=Y_O-LVector*cos(fi);
Xfc:=X-sign(w)*cos(fi);
Yfc:=Y-sign(w)*sin(fi);
Xfcnad:=X-sign(w)*(cos(fi)+0.5);
Yfcnad:=Y-sign(w)*sin(fi);
Series14.AddArrow(X,Y,Xfc,Yfc);
Series16.AddXY(Xfcnad,Yfcnad,'Fc');
Series2.Clear;
Series3.Clear;
Series6.Clear;
Series7.Clear;
Series8.Clear;
Series9.Clear;
Series13.Clear;
Series14.Clear;
Series15.Clear;
Series16.Clear;
Series2.AddXY(X_O,Y_O,'',clBlack);
Series2.AddXY(X,Y,'',clBlack);
Series6.AddArrow(X,Y,X1,Y1,'T');
Series7.AddArrow(X,Y,X,Y-LVector,'G');
Series8.AddXY(X1+0.5,Y1,'T');
Series9.AddXY(X+0.5,Y-LVector,'G');
Series15.AddXY(X+0.5,Y+1,'Fa');
Series13.AddArrow(X,Y,X,Y+1);
Series14.AddArrow(X,Y,Xfc,Yfc);
Series16.AddXY(Xfcnad,Yfcnad,'Fc');
if (round((fi*180)/PI) = 0)and (round((w*180)/PI) = 0) and (round(E) = 0) then begin
Series14.AddArrow(0,0,0,0);
Series16.Clear;
Series14.Clear;
end
else
begin
Series14.AddArrow(X,Y,Xfc,Yfc);
Series16.AddXY(Xfcnad,Yfcnad,'Fc');
end;
Timer1.Enabled := true;
Series3.AddXY(X,Y,'',clRed);
OT:=0;
while (OT = 0) do Application.ProcessMessages;
end;
Timer1.Enabled := false;
BitBtn4.Enabled:=false;
BitBtn2.Enabled:=true;
end;
//создание формы
procedure TForm1.FormCreate(Sender: TObject);
begin
width:=GetSystemMetrics(SM_CXSCREEN);
height:=GetSystemMetrics(SM_CYSCREEN);
form1.height:=height;
form1.width:=width;
Chart1.Height:=((Form1.Height) div 2)-80;
Chart1.Width:=((Form1.width) div 2)-160;
Chart2.Height:=((Form1.Height) div 2)-50;
Chart2.Width:=((Form1.width) div 2)-120;
Chart3.Height:=((Form1.Height) div 2)-50;
Chart3.Width:=((Form1.width) div 2)-120;
Chart4.Height:=((Form1.Height) div 2)-50;
Chart4.Width:=((Form1.width) div 2)-120;
Chart2.Top:=Panel2.Top+20;
Chart1.Top:=Panel2.Top+Chart2.Height+50;
Chart3.Top:=Chart2.Top;
Chart3.Left:=Chart2.Left+Chart2.Width;
Chart4.Top:=Chart1.Top-20;
Chart4.Left:=Chart2.Left+Chart2.Width;
if (Form1.width<1024) and (Form1.Height<768) then
begin
LabeledEdit4.Height:=LabeledEdit4.Height-5;
LabeledEdit4.Width:=LabeledEdit4.Width-5;
LabeledEdit1.Height:=LabeledEdit1.Height-5;
LabeledEdit1.Width:=LabeledEdit1.Width-5;
LabeledEdit2.Height:=LabeledEdit2.Height-5;
LabeledEdit2.Width:=LabeledEdit2.Width-5;
LabeledEdit3.Height:=LabeledEdit3.Height-5;
LabeledEdit3.Width:=LabeledEdit3.Width-5;
LabeledEdit5.Height:=LabeledEdit5.Height-5;
LabeledEdit5.Width:=LabeledEdit5.Width-5;
LabeledEdit6.Height:=LabeledEdit6.Height-5;
LabeledEdit6.Width:=LabeledEdit6.Width-5;
LabeledEdit7.Height:=LabeledEdit7.Height-5;
LabeledEdit7.Width:=LabeledEdit7.Width-5;
LabeledEdit8.Height:=LabeledEdit8.Height-5;
LabeledEdit8.Width:=LabeledEdit8.Width-5;
LabeledEdit4.Top:=LabeledEdit4.Top-15;
LabeledEdit1.Top:=LabeledEdit1.Top-53;
LabeledEdit2.Top:=LabeledEdit2.Top-78;
LabeledEdit3.Top:=LabeledEdit3.Top-23;
LabeledEdit5.Top:=LabeledEdit5.Top-19;
LabeledEdit6.Top:=LabeledEdit6.Top-50;
LabeledEdit7.Top:=LabeledEdit7.Top-80;
LabeledEdit8.Top:=LabeledEdit8.Top-82;
StaticText2.Top:=StaticText2.Top-6;
StaticText6.Top:=StaticText6.Top-105;
StaticText7.Top:=StaticText7.Top-110;
StaticText8.Top:=StaticText8.Top-115;
StaticText1.Top:=StaticText1.Top-120;
StaticText5.Top:=StaticText5.Top-126;
StaticText3.Top:=StaticText3.Top-130;
StaticText4.Top:=StaticText4.Top-135;
StaticText9.Top:=StaticText9.Top-140;
BitBtn2.Top:=BitBtn2.Top-147;
BitBtn3.Top:=BitBtn3.Top-147;
BitBtn4.Top:=BitBtn4.Top-155;
BitBtn1.Top:=BitBtn1.Top-155;
BitBtn1.Height:=BitBtn1.Height-5;
BitBtn1.Width:=BitBtn1.Width-5;
BitBtn2.Height:=BitBtn2.Height-5;
BitBtn2.Width:=BitBtn2.Width-5;
BitBtn3.Height:=BitBtn3.Height-5;
BitBtn3.Width:=BitBtn3.Width-5;
BitBtn4.Height:=BitBtn4.Height-5;
BitBtn4.Width:=BitBtn4.Width-5;
Label16.Top:=Label16.Top-105;
Label17.Top:=Label17.Top-109;
Label18.Top:=Label18.Top-116;
Label9.Top:=Label9.Top-117;
Label11.Top:=Label11.Top-125;
Label14.Top:=Label14.Top-130;
Label15.Top:=Label15.Top-137;
Label12.Top:=Label12.Top-140;
end;
if (Form1.width>1024) and (Form1.Height>768) then
begin
LabeledEdit4.Height:=LabeledEdit4.Height+5;
LabeledEdit4.Width:=LabeledEdit4.Width+5;
LabeledEdit1.Height:=LabeledEdit1.Height+5;
LabeledEdit1.Width:=LabeledEdit1.Width+5;
LabeledEdit2.Height:=LabeledEdit2.Height+5;
LabeledEdit2.Width:=LabeledEdit2.Width-5;
LabeledEdit3.Height:=LabeledEdit3.Height+5;
LabeledEdit3.Width:=LabeledEdit3.Width+5;
LabeledEdit5.Height:=LabeledEdit5.Height+5;
LabeledEdit5.Width:=LabeledEdit5.Width-5;
LabeledEdit6.Height:=LabeledEdit6.Height+5;
LabeledEdit6.Width:=LabeledEdit6.Width+5;
LabeledEdit7.Height:=LabeledEdit7.Height+5;
LabeledEdit7.Width:=LabeledEdit7.Width+5;
LabeledEdit8.Height:=LabeledEdit8.Height+5;
LabeledEdit8.Width:=LabeledEdit8.Width+5;
LabeledEdit4.Top:=LabeledEdit4.Top+15;
LabeledEdit1.Top:=LabeledEdit1.Top+58;
LabeledEdit2.Top:=LabeledEdit2.Top+78;
LabeledEdit3.Top:=LabeledEdit3.Top+30;
LabeledEdit5.Top:=LabeledEdit5.Top+23;
LabeledEdit6.Top:=LabeledEdit6.Top+53;
LabeledEdit7.Top:=LabeledEdit7.Top+80;
LabeledEdit8.Top:=LabeledEdit8.Top+82;
StaticText2.Top:=StaticText2.Top+6;
StaticText6.Top:=StaticText6.Top+125;
StaticText7.Top:=StaticText7.Top+130;
StaticText1.Top:=StaticText1.Top+135;
StaticText3.Top:=StaticText3.Top+135;
StaticText4.Top:=StaticText4.Top+135;
StaticText5.Top:=StaticText5.Top+135;
StaticText8.Top:=StaticText8.Top+135;
StaticText9.Top:=StaticText9.Top+135;
BitBtn2.Top:=BitBtn2.Top+157;
BitBtn3.Top:=BitBtn3.Top+157;
BitBtn4.Top:=BitBtn4.Top+165;
BitBtn1.Top:=BitBtn1.Top+165;
BitBtn1.Height:=BitBtn1.Height+5;
BitBtn1.Width:=BitBtn1.Width+5;
BitBtn2.Height:=BitBtn2.Height+5;
BitBtn2.Width:=BitBtn2.Width+5;
BitBtn3.Height:=BitBtn3.Height+5;
BitBtn3.Width:=BitBtn3.Width+5;
BitBtn4.Height:=BitBtn4.Height+5;
BitBtn4.Width:=BitBtn4.Width+5;
Label16.Top:=Label16.Top+125;
Label17.Top:=Label17.Top+130;
Label18.Top:=Label18.Top+135;
Label9.Top:=Label9.Top+135;
Label11.Top:=Label11.Top+135;
Label14.Top:=Label14.Top+135;
Label15.Top:=Label15.Top+135;
Label12.Top:=Label12.Top+135;
end;
tend:=10;
fi0:=StrToFloat(LabeledEdit2.Text);
Chart2.BottomAxis.Maximum:=tend;
Chart2.LeftAxis.Maximum:=fi0;
Chart2.LeftAxis.Minimum:=-fi0;
Chart3.BottomAxis.Maximum:=tend;
Chart4.BottomAxis.Maximum:=tend;
fi0:=fi0*PI/180;
LVector:=2;
X_O:=5;
Y_O:=6;
OT := 0;
B_Close:=false;
X:=X_O+dl*sin(fi0);
Y:=Y_O-dl*cos(fi0);
if (fi < 0) then
begin
fiFc:=90;
Xfc:=X+1*sin((fiFc*180)/PI);
Yfc:=Y-1*cos((fiFc*180)/PI);
end
else
begin
fiFc:=-90;
Xfc:=X+1*sin((fiFc*180)/PI);
Yfc:=Y-1*cos((fiFc*180)/PI);
end;
Series1.AddXY(4,6,'',clBlack);
Series1.AddXY(6,6,'',clBlack);
Series5.AddXY(X_O,Y_O,'',clBlack);
Series5.AddXY(5,0.5,'',clBlack);
Series2.AddXY(X_O,Y_O,'',clBlack);
Series2.AddXY(X,Y,'',clBlack);
Series3.AddXY(X,Y,'',clRed);
//Силы, действующие на тело
X1:=X_O+LVector*sin(fi0);
Y1:=Y_O-LVector*cos(fi0);
Series6.AddArrow(X,Y,X1,Y1);
Series7.AddArrow(X,Y,X,Y-LVector);
Series8.AddXY(X1+0.5,Y1,'T');
Series9.AddXY(X+0.5,Y-LVector,'G');
Series13.AddArrow(X,Y,X,Y+1);
Series14.AddArrow(X,Y,Xfc,Yfc);
Series15.AddXY(X+0.5,Y+1,'Fa');
Series16.AddXY(Xfc+0.5,Yfc,'Fc');
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
B_Close:=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
OT:=1;
end;
procedure TForm1.BStopClick(Sender: TObject);
begin
Form4.LabeledEdit4.Enabled:=false;
Chart3.LeftAxis.RoundFirstLabel:=true;
Chart2.LeftAxis.RoundFirstLabel:=true;
BitBtn3.Enabled:=false;
if BitBtn3.Enabled=false then
begin
BitBtn2.Enabled:=true;
BitBtn4.Enabled:=false;
B_Close:=true
end else exit;
end;
procedure TForm1.LabeledEdit1KeyPress(Sender: TObject; var Key: Char);
begin
Case Key of
#8,'0'..'9',',':;
else Key:=Chr(0);
end;
end;
procedure TForm1.LabeledEdit2KeyPress(Sender: TObject; var Key: Char);
begin
Case Key of
#8,'0'..'9',',':;
else Key:=Chr(0);
end;
end;
procedure TForm1.LabeledEdit3KeyPress(Sender: TObject; var Key: Char);
begin
Case Key of
#8,'0'..'9',',':;
else Key:=Chr(0);
end;
end;
procedure TForm1.LabeledEdit4KeyPress(Sender: TObject; var Key: Char);
begin
Case Key of
#8,'0'..'9',',':;
else Key:=Chr(0);
end;
end;
procedure TForm1.LabeledEdit5KeyPress(Sender: TObject; var Key: Char);
begin
Case Key of
#8,'0'..'9',',':;
else Key:=Chr(0);
end;
end;
procedure TForm1.LabeledEdit6KeyPress(Sender: TObject; var Key: Char);
begin
Case Key of
#8,'0'..'9',',':;
else Key:=Chr(0);
end;
end;
procedure TForm1.LabeledEdit7KeyPress(Sender: TObject; var Key: Char);
begin
Case Key of
#8,'0'..'9',',':;
else Key:=Chr(0);
end;
end;
procedure TForm1.LabeledEdit8KeyPress(Sender: TObject; var Key: Char);
begin
Case Key of
#8,'0'..'9',',':;
else Key:=Chr(0);
end;
end;
procedure TForm1.N10Click(Sender: TObject);
begin
if MessageDlg('Вы действительно хотите выйти из программы?',MtConfirmation,[MbYes,mbNo],0)=MrYes then Form1.Close;
end;
//очистить графики
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Form4.LabeledEdit4.Enabled:=true;
Chart3.LeftAxis.Maximum:=3;
Chart3.LeftAxis.Minimum:=-3;
Chart2.LeftAxis.Maximum:=85;
Chart2.LeftAxis.Minimum:=-85;
Chart4.LeftAxis.Maximum:=2;
Chart4.LeftAxis.Minimum:=0;
BitBtn2.Enabled:=false;
BitBtn3.Enabled:=true;
BitBtn4.Enabled:=false;
Timer1.Enabled := false ;
Chart4.LeftAxis.AutomaticMaximum:=false;
Chart4.LeftAxis.AutomaticMinimum:=false;
Chart2.LeftAxis.AutomaticMaximum:=false;
Chart2.LeftAxis.AutomaticMinimum:=false;
LabeledEdit1.Enabled:=true;
LabeledEdit2.Enabled:=true;
LabeledEdit3.Enabled:=true;
LabeledEdit4.Enabled:=true;
LabeledEdit5.Enabled:=true;
LabeledEdit6.Enabled:=true;
LabeledEdit7.Enabled:=true;
LabeledEdit8.Enabled:=true;
Chart2.Series[0].Clear;
Chart3.Series[0].Clear;
Chart4.Series[0].Clear;
B_Close:=true;
LVector:=2;
fi0:=StrToFloat(LabeledEdit2.Text);
fi0:=fi0*PI/180;
X_O:=5;
Y_O:=6;
OT := 0;
B_Close:=false;
X:=X_O+dL*sin(fi0);
Y:=Y_O-dL*cos(fi0);
//очистить прошлый кадр
Series2.Clear; //нить
Series3.Clear; // шар
Series6.Clear; // стрелка красная
Series7.Clear; // стрелка синяя
Series8.Clear; // T
Series9.Clear; // G
// рисуем нить и шарик
Series2.AddXY(X_O,Y_O,'',clBlack);
Series2.AddXY(X,Y,'',clBlack);
Series3.AddXY(X,Y,'',clRed);
//Силы действующие на тело
X1:=X_O+LVector*sin(fi0);
Y1:=Y_O-LVector*cos(fi0);
Series6.AddArrow(X,Y,X1,Y1);
Series7.AddArrow(X,Y,X,Y-LVector);
Series8.AddXY(X1+0.5,Y1,'T');
Series9.AddXY(X+0.5,Y-LVector,'G');
Series13.Clear;
Series14.Clear;
Series15.Clear;
Series16.Clear;
Series13.AddArrow(X,Y,X,Y+1); //Fa стрелка
Series15.AddXY(X+0.5,Y+1,'Fa'); // Fa
fiFc:=-90;
Xfc:=X+1*sin((fiFc*180)/PI);
Yfc:=Y-1*cos((fiFc*180)/PI);
Series14.AddArrow(X,Y,Xfc,Yfc);
Series16.AddXY(Xfc+0.5,Yfc,'Fc');
end;
procedure TForm1.N2Click(Sender: TObject);
begin
ShellExecute(Handle,'open','теоретическая справка.htm',nil,nil,SW_RESTORE);
end;
procedure TForm1.N4Click(Sender: TObject);
begin
Form4.Show;
end;
procedure TForm1.N6Click(Sender: TObject);
begin
Form5.Show;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
with Form6.MediaPlayer1 do
begin
Filename := 'Video.mpg';
Open;
Form6.Show;
Display := Form6.Panel1;
DisplayRect := Form6.Panel1.ClientRect;
end;
end;
end.
Приложение 2
Методические рекомендации к выполнению лабораторной работы
При запуске программы перед пользователем открывается главное окно, содержащие поля ввода параметров физического эксперимента, поля вывода посчитанных значений, поле для вывода графика и кнопки.
Внесём значения в поля ввода физического эксперимента: диаметр шара, массу шара, длину стержня, плотность среды, вязкость среды, начальный угол, начальная угловая скорость, конечное время.
В пункте меню в разделе настройки введём значение: предел угла на графике, предел угловой скорости на графике, нижний предел энергии Е на графике и шаг интегрирования, те значения которые вы считаете нужными. Нажмём ОК.
Нажмём кнопку «Старт», наблюдаем построение графиков:
график зависимости угла от времени
график зависимости угловой скорости от времени
график зависимости полной энергии колебаний от времени
анимация движения маятника
А также в полях вывода посчитанных значений выводится значение: собственная частота, собственный периода, декремент затухания, частота, период, добротность, плотность шарика.
В любой момент мы можем остановить построение, нажав кнопку «Стоп».
При нажатии на кнопку «Очистить графики» происходит очищение графических полей:
графика зависимости угла от времени
графика зависимости угловой скорости от времени
графика зависимости полной энергии колебаний от времени
анимация движения маятника возвращается в исходное начальное положение
При нажатии на кнопку «Видео» воспроизводится демонстрационное видео. На данном видео можно посмотреть порядок выполнения эксперимента.
По завершению выполнения эксперимента нажимаем кнопку «Выход».