Описание
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 Справочник”