Планирование уроков на учебный год (по учебнику Н.Д. Угриновича, профильный уровень)



Уроки 35 - 36
Самостоятельная работа. Контрольная работа






Содержание урока

Самостоятельная работа

Проект "Бросание мячика в стенку" на языке Visual Basic

Проект "Диапазон углов" на языке Visual Basic

Проект "Бросание мячика в стенку" на языке Lazarus / Delphi

Контрольная работа

Самостоятельная работа


Проект "Бросание мячика в стенку" на языке Visual Basic


Для выполнения практической работы вам потребуется язык программирования Visual Basic. Инструкцию как его установить и где скачать, можно найти в этой теме (http://informat45.ucoz.ru/forum/16-286-1#305).

Компьютерная модель движения тела на языке Visual Basic

На основе формальной модели, описывающей движение тела, брошенного под углом к горизонту, создадим компьютерную модель с использованием системы программирования Visual Basic.

Проект "Бросание мячика в стенку" на языке Visual Basic

Создадим сначала графический интерфейс проекта "Бросание мячика в стенку"

11-1-1.png

1. Разместить на форме:
- четыре текстовых поля для ввода значений:
TextBox1 - начальной скорости
TextBox2 - угла бросания мячика
TextBox3 - расстояние до стенки
TextBox4 - высота стенки
- надпись Label1 для вывода высоты мячика на заданном расстоянии;
- надпись Label2 для вывода текстового сообщения о результатах броска;
- десять надписей для вывода имён переменных и единиц измерения;
- кнопку Button1 для запуска событийной процедуры вычисления результатов бросания мячика;
- кнопку Button2 для демонстрации траектории движения мячика.

11-1-2.png

Обработчик события - вычисление результатов бросания мячика

2. Создать программный код обработчика события, который определяет попадание мячика в стенку. В этом коде:
- объявить вещественные константы одинарной точности G (ускорение свободного падения g) и Pi (число π);
- объявить вещественные переменные одинарной точности V0 (начальная скорость v0), А (угол бросания α), S (расстояние до стенки s), H (высота стенки h) и L (высота мячика l);
- присвоить переменным V0, A, S, H значения, введенные в текстовые поля, с использованием функции преобразования строки в вещественное число Val();
- вычислить высоту мячика L на заданном расстоянии по формуле.
- вывести высоту мячика L на надпись Label1;
- вывести текстовое сообщение о результатах броска на надпись Label2 с использованием оператора Select Case, в котором в качестве условия проверяется значение переменной L.

Цитата

В языке программирования Visual Basic аргументы тригонометрических функций Sin(), Cos() и Tan() задаются в радианах, а угол бросания мячика мы будем вводить в градусах. Поэтому необходимо преобразовать значения углов из градусов в радианы с использованием константы Pi.

Код

Const G As Single = 9.81
Const Pi As Single = 3.14
Dim V0, A, S, L, H As Single
Private Sub Button1_Click(...)
'Ввод начальных значений
V0=Val(TextBox1.Text)
A=Val(TextBox2.Text)
S=Val(TextBox3.Text)
H=Val(TextBox4.Text)
'Попадание в стенку
L=S*Math.Tan(A*Pi/180)-(G*S^2)/(2*V0^2*Math.Cos(A*Pi/180)^2)
Label1.Text=L
Select Case L
Case Is <0
Label2.Text="Недолет"
Case Is > H
Label2.Text="Перелет"
Case Else
Label2.Text="Попадание"
End Select
End Sub

Обработчик события - демонстрация траектория движения мячика
Для визуализации компьютерной модели построим в графическом поле траекторию движения мячика.
3. Поместить дополнительно на форму графическое поле PictureBox1. С помощью диалогового окна Свойства установить с использованием свойства Size размер поля, например 400; 220.
В обработчике события осуществим преобразование компьютерной системы координат графического поля в математическую систему координат, удобную для построения траектории движения. Нарисуем оси координат и нанесем на них шкалы.

11-1-3.png

4. В математической системе координаты находятся в диапазонах 0<=X<=400 и -20<=Y<=200. Траектория движения мячика, скорее всего, будет в диапазоне координат 0<=X<=40 м и 0<=Y<=20 м. Следовательно, необходимо увеличить масштаб графика в 10 раз:
- координаты точек графика необходимо умножить на 10;
- значения шкал осей разделить на 10.

Построение траектории осуществить в цикле со счетчиком (координата Х) с использованием метода рисования точки DrawEllipse(Pen1, X*10, Y*10, 1, 1), в котором координатами точки являются координаты мячика.

Код

Dim Graph1 As Graphics
Dim Pen1 As New Pen(Color.Black, 4)
Dim drawBrush As New SolidBrush(Color.Black)
Dim drawFont As New Font("Arial",10)
Dim X, Y, T As Single
Private Sub Button2_Click(...)
Graph1=Me.PictureBox1.CreateGraphics()
Graph1.Clear(Color.White)
'Печать шкал математической системы координат
'в компьютерной системе координат
For X=0 To 400 Step 50
Graph1.DrawString (X/10, drawFont, drawBrush, X, 200)
Next X
For Y=20 To 220 Step 50
Graph1.DrawString((Y-20)/10, drawFont,drawBrush, 0, 220-Y)
Next Y
'Преобразование компьютерной системы координат
'в математическую систему координат
Graph1.ScaleTransform(1,-1)
'Поворот оси Y
Graph1.TranslateTransform(0,-200)
'Сдвиг по оси Y
'Рисование осей математической системы координат
Graph1.DrawLine(Pen1, 0, 0, 400, 0)  'Ось X
Graph1.DrawLine(Pen1, 0, -20, 0, 200) 'Ось Y
'Построение траектории движения мячика
For T=0 To 10 Step 0.1
Y=V0*Math.Sin(A*Pi/180)*T-G*T*T/2
X=V0*Math.Cos(A*Pi/180)*T
Graph1.DrawEllipse(Pen1,X*10,Y*10,1,1)
Next T
End Sub

Компьютерный эксперимент. Введём произвольные значения начальной скорости и угла бросания мячика. Скорее всего, попадания в стенку не будет. Меняя один из параметров, например угол, произведем пристрелку, используя известный артиллерийский приём "взятие в вилку", в котором применяется эффективный метод "деление пополам". Сначала найдём угол, при котором мячик не долетит до стенки. Вычислим среднее значение углов, составляющих "вилку", и проверим попадает ли при этом значении мячик в стенку. Если он попадает в стенку, то задача выполнена, если не попадает, то рассмотрим новую "вилку" и т.д.

5. Запустить проект и ввести значения начальной скорости, угла бросания, расстояния до стенки и её высоты. Щёлкнуть по кнопкам Вычислить и Показать. На надписи будут выведены результаты, а в графическом поле появится траектория движения тела.
Подобрать значения начальной скорости и угла бросания мячика, обеспечивающие его попадание в стенку.

11-1-4.png

Например, при скорости бросания мячика v0=18 м/с и угле бросания α=35° мячик попадает в стенку высотой h=2 м и находящуюся на расстоянии s=30 м на высоте l=0,6959749 м.

Анализ результатов. Полученная точность высоты попадания мячика в стенку l=0,6959749 м не имеет физического смысла и определяется типом переменной. Так как L является переменной одинарной точности, то её значение вычисляется с точностью семи значащих цифр. Исходные данные заданы с точностью две значащие цифры, поэтому необходимо и результат округлить до двух значащих цифр: l=0,70 м.

Корректировка модели. Рассмотренный выше проект "Бросания мячика в стенку" позволяет задавать различные значения скорости и угла бросания мячика. Предположим, что броски мячика производятся с одинаковой скоростью, и попробуем определить диапазон углов, при которых происходит попадание мячика в стенку.

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

Источник: http://informat45.ucoz.ru/forum/3-288-1



Следующая страница Проект "Диапазон углов" на языке Visual Basic



Cкачать материалы урока





Наверх