Описание
1. Движение тела, брошенного горизонтально
Законы движения

Траектории параболы
Движение тела, брошенного под углом к горизонту Законы движения

Траектории параболы
Продолжение описания
Свободное падение тел
Законы движения

![]()
![]()
Движение по наклонной плоскости
Законы движения

Колебания маятника
Законы движения

Продолжение описания
Полное внутреннее отражение
Закономерности

Закономерности

Движение тела, брошенного горизонтально
Private Sub Command1_Click()
Открыть три файла, в которых даны высоты и скорости
Open "g1.txt" For Input As 1
Open "g2.txt" For Input As 2
Open "g3.txt" For Input As 3
В цикле считать из файлов высоты скорость и вывести их в List
For i = 1 To 3
Input #i, h, v0
List1.AddItem h
list2.AddItem v0
Вычислить время и дальность полёта и вывести их в List
t0 = Sqr(2 * h / 9.81)
t0 = Int(t0 * 10) / 10
s = v0 * t0
List3.AddItem t0
List4.AddItem s
Установить в графическом окне масштаб и провести линию горизонта
p1.Scale (0, 400)-(400, 0)
p1.Line (0, 1)-(400, 1), vbRed
В цикле нарисовать траектории движений
For t = 0 To t0 Step 0.001
x = v0 * t
y = h - 9.81 * t ^ 2 / 2
p1.PSet (x, y), vbGreen
Next
Отметить траектории движений
p1.PSet (10, h)
p1.Print i
Next
End Sub

Движение тела, брошенного под углом к горизонту
Private Sub Расчёт_Click()
Открыть три файла, в которых даны скорости и углы
Open "1.txt" For Input As 1
Open "2.txt" For Input As 2
Open "3.txt" For Input As 3
В цикле считать из файлов скорость и угол и вывести их в List
For i = 1 To 3
Input #i, v0, A
List1.AddItem v0
List2.AddItem A
Перевести угол в радианную меру, рассчитать дальность полёта, наибольшую высоту и время полёта. Дальность и наибольшую высоту вывести в List
A = A * 3.14 / 180
S = v0 ^ 2 * Sin(2 * A) / 9.81
\
S = Int(S * 10) / 10
h = v0 ^ 2 * (Sin(A)) ^ 2 / (2 * 9.81)
h = Int(h * 10) / 10
t0 = S / (v0 * Cos(A))
List3.AddItem S
List4.AddItem h
Установить в графическом окне масштаб и нарисовать линию горизонта
P1.Scale (0, 100)-(170, 0)
P1.Line (0, 10)-(170, 10)
В цикле нарисовать траектории движений
For t = 0 To t0 Step 0.001
x = 10 + v0 * Cos(A) * t
y = 10 + v0 * Sin(A) * t - 9.81 * t ^ 2 / 2
P1.PSet (x, y), vbRed
Next
Отметить траектории движений
P1.PSet (85, 10 + h)
P1.Print i
Next
End Sub
Свободное падение тел
Private Sub Command1_Click()
Присвоить значение высоте и вывести ее в окно Text
h = 500
Text1.Text = h
Рассчитать время падения и скорость при падении на землю и вывести их в окна Text
g = 9.8
t0 = Sqr(2 * h / g)
t0 = Int(t0 * 10) / 10
Text2.Text = t0
v = g * t0
v = Int(v * 10) / 10
Text3.Text = v
Установить в графическом окне масштаб, провести линию падения
P1.Scale (0, 0)-(200, 600)
P1.Line (20, 10)-(20, 10 + h), vbRed
P1.Circle (25, 10), 5, vbRed
For q = 0 To 100000000

Next
Отметить положение тела через 1 с
For t = 0 To t0 Step 1
x = 25
y = 10 + g * t ^ 2 / 2
P1.Circle (x, y), 5, vbRed
P1.Print t
For q = 0 To 100000000
Next
P1.Circle (x, y), 5, &H8000000F
Вычислить пути, проходимые в каждую секунду и вывести их в List
a1 = g * (t + 1) ^ 2 / 2
a2 = g * t ^ 2 / 2
a = a1 - a2
List1.AddItem a
Найти отношение путей, пройденных за 1 сек, и вывести их в List
a3 = g / 2
b = a / a3
List2.AddItem b
Next
P1.Circle (25, 10 + h), 5, vbRed
End Sub
Движение по наклонной плоскости
Private Sub Command1_Click()
Ввод с клавиатуры высоты и коэффициента трения и вывод их в окна Text
h = Val(InputBox("Введите высоту наклонной плоскости"))
k = Val(InputBox("Введите коэффициент трения"))
Text1.Text = h
Text2.Text = k
Присваивание значения угла и вычисление основания и длины наклонной плоскости
f = 30
f = f * 3.14 / 180
b = h / Tan(f)
l = h / Sin(f)
Условие, при котором тело движется по наклонной плоскости с ускореним
If k < Tan(f) Then
Вычисление ускорения, времени движения и конечной скорости и вывод их в окна Text и
a = 9.81 * (Sin(f) - k * Cos(f))
a = Int(a * 10) / 10
Text3.Text = a
t0 = Sqr(2 * l / a)
t0 = Int(t0 * 10) / 10
Text4.Text = t0
v = a * t0
v = Int(v * 10) / 10
Text5.Text = v
Установление масштаба в графическом окне и изображение наклонной плоскости
P1.Scale (0, 0)-(100, 100)
P1.Line (10, 20 + h)-(10 + b, 20 + h), vbRed
P1.Line (10, 20 + h)-(10, 20), vbGreen
P1.Line (10 + b, 20 + h)-(10, 20), vbRed
P1.Circle (14, 16), 5, vbRed
For q = 0 To 10000000
Next
Движение по наклонной плоскости
For t = 0 To t0 Step 1
x = 10 + a * Cos(f) * t ^ 2 / 2
y = 20 + (x - 10) * h / b
P1.Circle (x + 4, y - 4), 5, vbRed
For q = 0 To 100000000
Next
P1.Circle (x + 4, y - 4), 5, &H8000000F
Next
P1.Circle (10 + b, 14 + h), 5, vbRed
Else
P1.Line (10, 20 + h)-(10 + b, 20 + h), vbRed
P1.Line (10, 20 + h)-(10, 20), vbGreen
P1.Line (10 + b, 20 + h)-(10, 20), vbCyan
P1.Circle (14, 16), 5, vbRed
End If
End Sub
Колебания маятника
Private Sub Пуск_Click()
P1.Scale (0, 600)-(600, 0)
l = 400
t = 1
For k = 1 To 2
Движение маятника влево
For f = -3.14 / 6 To 3.14 / 6 Step 0.00005
P1.FillStyle = 0
P1.FillColor = vbRed
x = 300 + l * Sin(f)
y = 500 - l * Cos(f)
P1.Line (300, 500)-(x, y), vbRed
P1.Circle (x, y), 10, vbRed
P1.Line (300, 500)-(x, y), &H8000000F
P1.Circle (x, y), 10, &H8000000F
Построение графика
X1 = 100 + 200 * (t * f / 3.14 + t * f)
Y1 = 500 + 100 * Sin(X1 / 10)
Y4 = 500 + 50 * Sin(X1 / 10 + 3.14)
P1.PSet (X1, Y1), vbRed
P1.PSet (X1, Y4), &HFF0000
Next
t = t + 1
Движение маятника вправо
For f1 = 3.14 / 6 To -3.14 / 6 Step -0.00005
x = 300 + l * Sin(f1)
y = 500 - l * Cos(f1)
P1.Line (300, 500)-(x, y), vbRed
P1.Circle (x, y), 10, vbRed
P1.Line (300, 500)-(x, y), &H8000000F
P1.Circle (x, y), 10, &H8000000F
Построение графика
X2 = 100 * t + 200 * (-t * f1 / 3.14 - t * f1)
Y2 = 500 + 100 * Sin(X2 / 10)
Y3 = 500 + 50 * Sin(X2 / 10 + 3.14)
P1.PSet (X2, Y2), vbRed
P1.PSet (X2, Y3), &HFF0000
Next
t = t + 1
P1.Line (0, 500)-(600, 500)
P1.FillStyle = 0
P1.FillColor = &H8000000F
P1.Circle (x, y), 10, &H8000000F

Next
End Sub
Полное внутреннее отражение
Private Sub Command1_Click()
Установление масштаба и присваивание значений координат и показателя преломлеия
p1.Scale (0, 400)-(400, 0)
X1 = 50
Y1 = 375
X2 = 200
Y2 = 249
x3 = 55
y3 = 101
n = 1.33
Вычерчивание сосуда
p1.Line (50, 300)-(50, 100)
p1.Line (50, 100)-(350, 100)
p1.Line (350, 100)-(350, 300)
Заполнение жидкостью
p1.Line (51, 249)-(349, 101), &HFFFFC0, BF
p1.FillStyle = 0
p1.FillColor = vbGreen
Точка, куда падает луч
p1.Circle (X2, Y2), 4
p1.Print "O"
Присваивание начального угла падения
a = 30
Цикл для изменения угла падения
For t = 1 To 15
Цикл для построения падающего луча по уравнению прямой
For x = X1 To 349
If x <= X2 Then
f = 3.14 * a / 180
s = Sin(f)
c = Cos(f)
k = c / s
y = (x - X2) * k + Y2
p1.PSet (x, y), vbRed
End If Условие для отражения луча
If x > X2 Then
y = (x - X2) * -k + Y2
p1.PSet (x, y), vbRed
Условие для полного отражения
If s > 1 / n Then
p1.PSet (x, y), vbGreen
End If
s1 = s * n
Условие для преломления луча
If s < 1 / n Then
c1 = Sqr(1 - s1 ^ 2)

Колебательный контур
Конденсатор заряжается
Private Sub Command1_Click()
OLE1.CreateLink "d:\llv\модели\контур\контур\контур1.doc"
End Sub
Заряженный конденсатор
Private Sub инф_Click()
OLE1.CreateLink "d:\llv\модели\контур\контур\контур.doc"
End Sub
Разрядка конденсатора на индуктивность (Э-м колебаия)
Private Sub пуск_Click()
P1.Scale (0, 400)-(400, 0)
P1.Line (0, 200)-(400, 200)
a = 100
k = 0
k1 = 400 / 6.28
For f = 0 To 10 * 6.28 Step 0.0001
x = 200 + (a - k) * Sin(f)
k = k + 0.0001
P1.PSet (f * k1 / 10, x)
Next
OLE1.CreateLink "d:\llv\модели\контур\контур\контур2.doc"
End Sub



Литература:
- Н. Угринович “Информатика и информационные технологии”
- Тим Андерсен “Visual Basic Шаг за шагом”
- Информатика в школе № 3 за 2005 год
- Маркус Линке “Visual Basic 5 Справочник”
