46143 (Компьютерное моделирование движения тел), страница 2

2016-07-31СтудИзба

Описание файла

Документ из архива "Компьютерное моделирование движения тел", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "46143"

Текст 2 страницы из документа "46143"

LINE (48, 245)-(52, 245), 11

LINE (48, 190)-(52, 190), 11

LINE (48, 135)-(52, 135), 11

REM координата X

LINE (x0, y0)-(x1, y0), 12

LOCATE 23, 19: PRINT "50"

LOCATE 23, 31: PRINT "100"

LOCATE 23, 44: PRINT "150"

LOCATE 23, 56: PRINT "200"

LOCATE 23, 69: PRINT "250"

LINE (150, 302)-(150, 298), 11

LINE (250, 302)-(250, 298), 11

LINE (350, 302)-(350, 298), 11

LINE (450, 302)-(450, 298), 11

LINE (550, 302)-(550, 298), 11

END

Ключевое слово (оператор) SCREEN 9 – обеспечивает перевод в графический режим работы программы. Для построения координат надо учитывать, что точка с координатами X=0, Y=0 лежит в верхнем левом углу экрана монитора. По-этому координаты X0, Y0 определяют начало координат, а X1, Y1- конец координат. Построение линии осуществляется оператором LINE- с указанием координат начала и конца линии и ее цвета (от 0 до 15). Строчка c ключевым словом LOCATE- означает расположить надпись в точке с указанными координатами. После запуска программы на экране появится сетка координат.

Объединим ( EDIT\COPY, EDIT\PASTE) имеющийся блок с сохраненной программой, не значительно ее видоизменив.

REM полет тела

REM построение координат

SCREEN 9:

x0 = 50

y0 = 300

x1 = 600

y1 = 100

x2 = 50

y2 = 300

REM координата Y

LINE (x0, y0)-(x0, y1), 12

LOCATE 18, 4: PRINT "10"

LOCATE 14, 4: PRINT "20"

LOCATE 10, 4: PRINT "30"

LINE (48, 245)-(52, 245), 11

LINE (48, 190)-(52, 190), 11

LINE (48, 135)-(52, 135), 11

REM координата X

LINE (x0, y0)-(x1, y0), 12

LOCATE 23, 19: PRINT "50"

LOCATE 23, 31: PRINT "100"

LOCATE 23, 44: PRINT "150"

LOCATE 23, 56: PRINT "200"

LOCATE 23, 69: PRINT "250"

LINE (150, 302)-(150, 298), 11

LINE (250, 302)-(250, 298), 11

LINE (350, 302)-(350, 298), 11

LINE (450, 302)-(450, 298), 11

LINE (550, 302)-(550, 298), 11

REM полет

v = 50

g = 9.8

a = 30

f = a * 3.14 / 180

100 q = 1

t = t + q

s = v * t * COS(f) (2.1)

h = v * t * SIN(f) - (g * t ^ 2) / 2 (2.2)

LINE (x2, y2)-(x0 + s, y0 - h), 14

x2 = x0 + s

y2 = y0 - h

IF h < 0 THEN 200

GOTO 100

200 END

Веденные дополнительные значения X2, Y2 обеспечивают привязку координат к началу системы отчета. Программа выдаст график полета тела, который в данном случае не привязан к масштабу сетки координат. Устранить это неудобство можно в ведя множитель для Y координаты 5.5 (1:5,5), а для координаты X множитель 2 (1:2).

Заменив строчки 2.1 и 2.2 на выражения 2.3 и 2.4

s = v * t * COS(f) * 2 (2.3)

h = (v * t * SIN(f) - (g * t ^ 2) / 2) * 5.5 (2.4)

получим окончательную программу полета тела (Приложение 1). График полета представлен на рисунке 2.

Рис. 2

В данном случаи он не отражает истинной траектории полета тела, так как значение координат получены с шагом (дискретой) в 1 сек. Если значению q присвоить 0,5; 0,25; 0,1; и т.д., то график приблизится к идеальной кривой полета тела.

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

3.Этап третий. Работа пользователя.

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

Для составления программы необходимо учитывать, что начальная скорость ядра составляет примерно 200 м/с, следовательно, и дальность полета значительно возрастет, при этом сопротивлением воздуха опять пренебрегаем. Программу начнем с ввода данных в соответствии с условием задачи.

REM ЯДРО

5 INPUT « Ввести угол стрельбы от 5 до 80 град»; a

7 IF a < 5 THEN 10

IF a > 80 THEN 20

GOTO 40

10 INPUT « Угол должен быть >=5»; a

GOTO 7

20 INPUT « Угол должен быть <=80»; a

GOTO 7

40 INPUT « Ввести дальность до цели от 200 до 5000 м»; l

45 IF l < 200 THEN 50

IF l > 5000 THEN 60

GOTO 70

50 INPUT « Расстояние до цели должно быть >=200»; l

GOTO 45

60 INPUT « Расстояние до цели должно быть <=5000»; l

GOTO 45

70 INPUT « Для выстрела нажать F1»; enter

PRINT a, l

END

Данный отрезок программы, используя условные операторы (IF, THEN), позволяет присвоить переменным a(угол) и l(расстояние), необходимые значения, жестко ограниченные по условию задачи.

Допишем программу с 70-й строки используя за основу программу полета тела, изменив масштаб координат и определив место цели на координате Х:

70 INPUT « Для выстрела нажать F1»; enter

REM построение координат

SCREEN 9:

x0 = 50

y0 = 300

x1 = 600

y1 = 50

x2 = 50

y2 = 300

REM координата Y

LINE (x0, y0)-(x0, y1), 12

LOCATE 18, 4: PRINT “250”

LOCATE 14, 4: PRINT “500”

LOCATE 10, 4: PRINT “750”

LOCATE 6, 4: PRINT “1000”

LINE (48, 245)-(52, 245), 11

LINE (48, 190)-(52, 190), 11

LINE (48, 135)-(52, 135), 11

LINE (48, 80)-(52, 80), 11

REM координата X

LINE (x0, y0)-(x1, y0), 12

LOCATE 23, 19: PRINT “1000”

LOCATE 23, 31: PRINT “2000”

LOCATE 23, 44: PRINT “3000”

LOCATE 23, 56: PRINT “4000”

LOCATE 23, 69: PRINT “5000”

LINE (150, 302)-(150, 298), 11

LINE (250, 302)-(250, 298), 11

LINE (350, 302)-(350, 298), 11

LINE (450, 302)-(450, 298), 11

LINE (550, 302)-(550, 298), 11

REM цель

LINE (x0 + l / 10, 299)-(x0 + l / 10 + 5, 299), 10

LINE (x0 + l / 10, 298)-(x0 + l / 10 + 5, 298), 10

80 KEY(1) ON

ON KEY(1) GOSUB 90

GOTO 80

REM полет

90 v = 200

g = 9.8

f = a * 3.14 / 180

100 q = .0005

t = t + q

s = v * t * COS(f) * 2

h = (v * t * SIN(f) – (g * t ^ 2) / 2) * 5.5

LINE (x2, y2)-(x0 + s / 20, y0 – h / 25), 14

x2 = x0 + s / 20

y2 = y0 – h / 25

IF h < 0 THEN 200

GOTO 100

200 END

END

Функция KEY(1) устанавливает, что дальнейшее выполнение программы начнется с нажатия функциональной клавиши F1. Логично предположить, что KEY(2) устанавливает F2, KEY(3) – F3 и т.д.

Для большего эффекта нужно с 200 –й строки дописать программу вставив еще несколько строк:

200 REM взрыв

r = 30

n = 500

REM: a угол разлета

REM: r радиус разлета, n количество осколков

REM: коэффициенты 0.5 и 1 определяют ширину и высоту разлета

DIM x(n), y(n)

RANDOMIZE (TIMER)

FOR i = 1 TO n

a = -6.28 * RND / 2

rn = r * RND

xc = x2 + rn * .5 * COS(a)

yc = y2 + rn * 1 * SIN(a)

PSET (xc, yc), 9 + 9 * RND

PRESET (x(i), y(i))

NEXT

END

Данный блок программы используя массив (DIM) случайных чисел ограниченных пространством ( r ) и количеством (n) точек позволяет создать эффектный фейерверк разлета осколков.

Полностью программа представлена в Приложении 2.

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

4. Этап четвертый. Воздействие внешних факторов.

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

Учитывая то, что сопротивление воздуха направленно в противоположную сторону движения тела [4], то силу сопротивления можно представить в виде двух составляющих: вертикальной и горизонтальной, при этом, чем выше скорость, тем больше сопротивление и наоборот.

Выделим блок программы (Приложение 2) с 100-го кадра:

100 q = .0005

t = t + q

s = v * t * COS(f) * 2 (4.1)

h = (v * t * SIN(f) – (g * t ^ 2) / 2) * 5.5 (4.2)

Запишем составляющие горизонтальной и вертикальной скорости:

vs=v*cos(f)

vh=v*sin(f)

Но если пренебречь, тем что с высотой плотность воздуха падает и считать ее в нижних слоях атмосферы неизменной, то упрощенная формула горизонтальной и вертикальной составляющей, в соответствии с законом Аэродинамики [ 4 ], примет вид [ 5 ]:

Тогда выражение 4.1 и 4.2 можно изменить записав блок с 100-го кадра в следующем виде:

100 q = .0005

t = t + q

k = .0002

vs = v * COS(f) - (k - k / (k + v * COS(f)))

vh = v * SIN(f) - (k - k / (k + v * SIN(f)))

s = vs * t * 2

h = (vh * t - (g * t ^ 2) / 2) * 5.5

v = SQR(vs ^ 2 + vh ^ 2) (4.3)

LINE (x2, y2)-(x0 + s / 20, y0 - h / 25), 14

x2 = x0 + s / 20

y2 = y0 - h / 25

IF h < 0 THEN 200

GOTO 100

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

Кроме этого, для большей информационности, выведем на экран значение скорости, высоты, дальности и времени:

LOCATE 1, 6: PRINT "V m/s"

LOCATE 2, 6: PRINT "H m"

LOCATE 2, 24: PRINT "S m"

LOCATE 1, 24: PRINT "T s"

LOCATE 1, 12: PRINT v

LOCATE 1, 28: PRINT t

LOCATE 2, 12: PRINT h

LOCATE 2, 28: PRINT s

Причем, первую половину необходимо разместить в программе до 80-й строки (кадра), а вторую в конце тела цикла.

Полностью программа представлена в приложении 3. Следует обратить внимание на то, что значения коэффициентов k и q в приложении 3 изменены для большей реалистичности полета ядра, так как часть ресурсов компьютера задействована для отображения текущих параметров, а выводимые значения высоты h и дальности s делятся на 5,5 и 2 соответственно для соблюдения масштаба.

К случайным событиям можно отнести и роль оператора на ход решения задачи. В данном случае изменим угол полета ядра уже в ходе решения задачи.

Что бы иметь возможность в процессе работы программы изменять угол стрельбы задействуем еще три функциональные клавиши F2, F3, F5, где F2 будет отвечать за подъем на один градус в верх, F3 – за один градус вниз, F5 – позволит прервать выполнение программы в любое время. Для этого в программе после выполнения подпрограммы выполнения фейерверка вставим блок:

ERASE x,y

210 KEY(2) ON

ON KEY(2) GOSUB 220

KEY(3) ON

ON KEY(3) GOSUB 230

KEY(1) ON

ON KEY(1) GOSUB 72

GOTO 210

GOTO 210

220 a = a + 1

LOCATE 1, 46: PRINT a

GOTO 210

230 a = a - 1

LOCATE 1, 46: PRINT a

GOTO 210

300 END

Оператор ERASE x,y отвечает за обнуление памяти задействованной под массив DIM x(n), y(n). При этом не обходимо обозначить 72 –ю строку перед блоком отвечающим за построение сетки координат.

Чтобы прервать выполнение задачи в любой момент времени, после ее начала, логично, если оператор KEY(5) ON будет размещен сразу за KEY(1) ON в начале программы:

80 KEY(1) ON

ON KEY(1) GOSUB 90

KEY(5) ON

ON KEY(5) GOSUB 300

GOTO 80

Полностью законченная программа представлена в приложении 4.

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

Заключение

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

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

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

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

Список литературы

Дж. Радер., К. Миллсап. Бейсик для персонального компьютера фирмы IBM: Пер. с англ. – М.: Радио и связь, 1991. – 30 л.: ил.

Р. Мкдона. Основы микрокомпьютерных вычислений: Пер. с англ./ Т.Г.Никольской; Под ред. В. Ф. Шальгина. – М.: Высш. Школа., 1989. – 272 с.: ил.

Задачи и упражнения по программированию: Практ. Пособие для ПТУ/ Под ред. А. Я. Савельева. Кн. 2. Тяжелая промышленность и транспорт/ В.Е.Алексеев, А.С. Ваулин. – 2-е изд., доп. – М.: Высш. шк., 1989-112 с.: ил.

А. В. Перышкин., Е. М. Гутник. Физика. 10 кл.: «Учеб. для общеобразоват. учеб. заведений – М.: Дрофа, 2002.

И. Д. Помбрик, Н. А. Шевченко. Аэродинамика. Изд. третье, исправленное и дополненное. М., Военное издательство, 1972 – 96 с.: ДСП.

Г. И. Светозарова. ОСНОВЫ ПРИКЛАДНОЙ ИНФОРМАТИКИ. Раздел: Описание языка Турбо-Бейсик. Справочное пособие.

Приложение

Приложение 1.

REM полет тела

REM построение координат

SCREEN 9:

x0 = 50

y0 = 300

x1 = 600

y1 = 100

x2 = 50

y2 = 300

REM координата Y

LINE (x0, y0)-(x0, y1), 12

LOCATE 18, 4: PRINT “10”

LOCATE 14, 4: PRINT “20”

LOCATE 10, 4: PRINT “30”

LINE (48, 245)-(52, 245), 11

LINE (48, 190)-(52, 190), 11

LINE (48, 135)-(52, 135), 11

REM координата X

LINE (x0, y0)-(x1, y0), 12

LOCATE 23, 19: PRINT “50”

LOCATE 23, 31: PRINT “100”

LOCATE 23, 44: PRINT “150”

LOCATE 23, 56: PRINT “200”

LOCATE 23, 69: PRINT “250”

LINE (150, 302)-(150, 298), 11

LINE (250, 302)-(250, 298), 11

LINE (350, 302)-(350, 298), 11

LINE (450, 302)-(450, 298), 11

LINE (550, 302)-(550, 298), 11

REM полет

v = 50

g = 9.8

a = 30

f = a * 3.14 / 180

100 q = 1

t = t + q

s = v * t * COS(f) * 2

h = (v * t * SIN(f) – (g * t ^ 2) / 2) * 5.5

LINE (x2, y2)-(x0 + s, y0 – h), 14

x2 = x0 + s

y2 = y0 – h

IF h < 0 THEN 200

GOTO 100

200 END

END

Приложение 2.

REM ЯДРО

5 INPUT « Ввести угол стрельбы от 5 до 80 град»; a

7 IF a < 5 THEN 10

IF a > 80 THEN 20

GOTO 40

10 INPUT « Угол должен быть >=5»; a

GOTO 7

20 INPUT « Угол должен быть <=80»; a

GOTO 7

40 INPUT « Ввести дальность до цели от 200 до 5000 м»; l

45 IF l < 200 THEN 50

IF l > 5000 THEN 60

GOTO 70

50 INPUT « Расстояние до цели должно быть >=200»; l

GOTO 45

60 INPUT « Расстояние до цели должно быть <=5000»; l

GOTO 45

70 INPUT « Для выстрела нажать F1»; enter

REM построение координат

SCREEN 9:

x0 = 50

y0 = 300

x1 = 600

y1 = 50

x2 = 50

y2 = 300

REM координата Y

LINE (x0, y0)-(x0, y1), 12

LOCATE 18, 4: PRINT “250”

LOCATE 14, 4: PRINT “500”

LOCATE 10, 4: PRINT “750”

LOCATE 6, 4: PRINT “1000”

LINE (48, 245)-(52, 245), 11

LINE (48, 190)-(52, 190), 11

LINE (48, 135)-(52, 135), 11

LINE (48, 80)-(52, 80), 11

REM координата X

LINE (x0, y0)-(x1, y0), 12

LOCATE 23, 19: PRINT “1000”

LOCATE 23, 31: PRINT “2000”

LOCATE 23, 44: PRINT “3000”

LOCATE 23, 56: PRINT “4000”

LOCATE 23, 69: PRINT “5000”

LINE (150, 302)-(150, 298), 11

LINE (250, 302)-(250, 298), 11

LINE (350, 302)-(350, 298), 11

LINE (450, 302)-(450, 298), 11

LINE (550, 302)-(550, 298), 11

REM ЦЕЛЬ

LINE (x0 + l / 10, 299)-(x0 + l / 10 + 5, 299), 10

LINE (x0 + l / 10, 298)-(x0 + l / 10 + 5, 298), 10

80 KEY(1) ON

ON KEY(1) GOSUB 90

GOTO 80

REM полет

90 v = 200

g = 9.8

f = a * 3.14 / 180

100 q = .0005

t = t + q

s = v * t * COS(f) * 2

h = (v * t * SIN(f) – (g * t ^ 2) / 2) * 5.5

LINE (x2, y2)-(x0 + s / 20, y0 – h / 25), 14

x2 = x0 + s / 20

y2 = y0 – h / 25

IF h < 0 THEN 200

GOTO 100

200 REM взрыв

r = 30

n = 500

REM: a угол разлета

REM: r радиус разлета, n количество осколков

REM: коэффициенты 0.5 и 1 определяют ширину и высоту разлета

DIM x(n), y(n)

RANDOMIZE (TIMER)

FOR i = 1 TO n

a = -6.28 * RND / 2

rn = r * RND

xc = x2 + rn * .5 * COS(a)

yc = y2 + rn * 1 * SIN(a)

PSET (xc, yc), 9 + 9 * RND

PRESET (x(i), y(i))

NEXT

END

Приложение 3

REM ЯДРО

5 INPUT " Ввести угол стрельбы от 5 до 80 град"; a

7 IF a < 5 THEN 10

IF a > 80 THEN 20

GOTO 40

10 INPUT " Угол должен быть >=5"; a

GOTO 7

20 INPUT " Угол должен быть <=80"; a

GOTO 7

40 INPUT " Ввести дальность до цели от 200 до 5000 м"; l

45 IF l < 200 THEN 50

IF l > 5000 THEN 60

GOTO 70

50 INPUT " Расстояние до цели должно быть >=200"; l

GOTO 45

60 INPUT " Расстояние до цели должно быть <=5000"; l

GOTO 45

70 INPUT " Для выстрела нажать F1"; enter

REM построение координат

SCREEN 9:

x0 = 50

y0 = 300

x1 = 600

y1 = 50

x2 = 50

y2 = 300

REM координата Y

LINE (x0, y0)-(x0, y1), 12

LOCATE 18, 4: PRINT "250"

LOCATE 14, 4: PRINT "500"

LOCATE 10, 4: PRINT "750"

LOCATE 6, 4: PRINT "1000"

LINE (48, 245)-(52, 245), 11

LINE (48, 190)-(52, 190), 11

LINE (48, 135)-(52, 135), 11

LINE (48, 80)-(52, 80), 11

REM координата X

LINE (x0, y0)-(x1, y0), 12

LOCATE 23, 19: PRINT "1000"

LOCATE 23, 31: PRINT "2000"

LOCATE 23, 44: PRINT "3000"

LOCATE 23, 56: PRINT "4000"

LOCATE 23, 69: PRINT "5000"

LINE (150, 302)-(150, 298), 11

LINE (250, 302)-(250, 298), 11

LINE (350, 302)-(350, 298), 11

LINE (450, 302)-(450, 298), 11

LINE (550, 302)-(550, 298), 11

REM ЦЕЛЬ

LINE (x0 + l / 10, 299)-(x0 + l / 10 + 5, 299), 10

LINE (x0 + l / 10, 298)-(x0 + l / 10 + 5, 298), 10

REM показания

LOCATE 1, 6: PRINT "V m/s"

LOCATE 2, 6: PRINT "H m"

LOCATE 2, 24: PRINT "S m"

LOCATE 1, 24: PRINT "T s"

80 KEY(1) ON

ON KEY(1) GOSUB 90

GOTO 80

REM полет

90 v = 200

g = 9.8

f = a * 3.14 / 180

100 q = .01

t = t + q

REM k коэффициент сопротивления воздуха

k = .016

vs = v * COS(f) - (k - k / (k + v * COS(f)))

vh = v * SIN(f) - (k - k / (k + v * SIN(f)))

s = vs * t * 2

h = (vh * t - (g * t ^ 2) / 2) * 5.5

v = SQR(vs ^ 2 + vh ^ 2)

LINE (x2, y2)-(x0 + s / 20, y0 - h / 25), 14

x2 = x0 + s / 20

y2 = y0 - h / 25

LOCATE 1, 12: PRINT v

LOCATE 2, 12: PRINT h / 5.5

LOCATE 2, 28: PRINT s / 2

LOCATE 1, 28: PRINT t

IF h < 0 THEN 200

GOTO 100

200 REM взрыв

r = 30

n = 500

REM: a угол разлета

REM: r радиус разлета, n количество осколков

REM: коэффициенты 0.5 и 1 определяют ширину и высоту разлета

DIM x(n), y(n)

RANDOMIZE (TIMER)

FOR i = 1 TO n

a = -6.28 * RND / 2

rn = r * RND

xc = x2 + rn * .5 * COS(a)

yc = y2 + rn * 1 * SIN(a)

PSET (xc, yc), 9 + 9 * RND

PRESET (x(i), y(i))

NEXT

END

Приложение 4

REM ЯДРО

5 INPUT " Ввести угол стрельбы от 5 до 80 град"; a

7 IF a < 5 THEN 10

IF a > 80 THEN 20

GOTO 40

10 INPUT " Угол должен быть >=5"; a

GOTO 7

20 INPUT " Угол должен быть <=80"; a

GOTO 7

40 INPUT " Ввести дальность до цели от 200 до 5000 м"; l

45 IF l < 200 THEN 50

IF l > 5000 THEN 60

GOTO 70

50 INPUT " Расстояние до цели должно быть >=200"; l

GOTO 45

60 INPUT " Расстояние до цели должно быть <=5000"; l

GOTO 45

70 INPUT " Для выстрела нажать F1"; enter

INPUT " Для увеличения угла стрельбы нажать F2 "; enter

INPUT " Для уменьшения угла стрельбы нажать F3 "; enter

INPUT " Для остановки решения задачи нажать F5 "; enter

REM построение координат

SCREEN 9:

COLOR 1, 7:

72 x0 = 50

y0 = 300

x1 = 600

y1 = 50

x2 = 50

y2 = 300

REM координата Y

LINE (x0, y0)-(x0, y1), 12

LOCATE 18, 4: PRINT "250"

LOCATE 14, 4: PRINT "500"

LOCATE 10, 4: PRINT "750"

LOCATE 6, 4: PRINT "1000"

LINE (48, 245)-(52, 245), 11

LINE (48, 190)-(52, 190), 11

LINE (48, 135)-(52, 135), 11

LINE (48, 80)-(52, 80), 11

REM координата X

LINE (x0, y0)-(x1, y0), 12

LOCATE 23, 19: PRINT "1000"

LOCATE 23, 31: PRINT "2000"

LOCATE 23, 44: PRINT "3000"

LOCATE 23, 56: PRINT "4000"

LOCATE 23, 69: PRINT "5000"

LINE (150, 302)-(150, 298), 11

LINE (250, 302)-(250, 298), 11

LINE (350, 302)-(350, 298), 11

LINE (450, 302)-(450, 298), 11

LINE (550, 302)-(550, 298), 11

REM ЦЕЛЬ

LINE (x0 + l / 10, 299)-(x0 + l / 10 + 5, 299), 10

LINE (x0 + l / 10, 298)-(x0 + l / 10 + 5, 298), 10

REM показания

REM a-угол стрельбы

LOCATE 1, 6: PRINT "V m/s"

LOCATE 2, 6: PRINT "H m"

LOCATE 2, 24: PRINT "S m"

LOCATE 1, 24: PRINT "T s"

LOCATE 1, 45: PRINT "а"

78 t = 0

n = 0

b = 0

80 KEY(1) ON

ON KEY(1) GOSUB 90

KEY(5) ON

ON KEY(5) GOSUB 300

GOTO 80

REM полет

90 v = 200

g = 9.8

f = a * 3.14 / 180

100 q = .01

t = t + q

REM k - коэффициент сопротивления воздуха

k = .016

vs = v * COS(f) - (k - k / (k + v * COS(f)))

vh = v * SIN(f) - (k - k / (k + v * SIN(f)))

s = vs * t * 2

h = (vh * t - (g * t ^ 2) / 2) * 5.5

v = SQR(vs ^ 2 + vh ^ 2)

LINE (x2, y2)-(x0 + s / 20, y0 - h / 25), 14

x2 = x0 + s / 20

y2 = y0 - h / 25

LOCATE 1, 12: PRINT v

LOCATE 2, 12: PRINT h / 5.5

LOCATE 2, 28: PRINT s / 2

LOCATE 1, 28: PRINT t

LOCATE 1, 46: PRINT a

IF h < 0 THEN 200

GOTO 100

200 REM взрыв

r = 20

n = 100

REM: b угол разлета

REM: r радиус разлета, n количество осколков

REM: коэффициенты 0.5 и 1 определяют ширину и высоту разлета

DIM x(n), y(n)

RANDOMIZE (TIMER)

FOR i = 1 TO n

b = -6.28 * RND / 2

rn = r * RND

xc = x2 + rn * .5 * COS(b)

yc = y2 + rn * 1 * SIN(b)

PSET (xc, yc), 9 + 9 * RND

PRESET (x(i), y(i))

NEXT

ERASE x, y

210 KEY(2) ON

ON KEY(2) GOSUB 220

KEY(3) ON

ON KEY(3) GOSUB 230

KEY(1) ON

ON KEY(1) GOSUB 72

GOTO 210

220 a = a + 1

LOCATE 1, 46: PRINT a

GOTO 210

230 a = a - 1

LOCATE 1, 46: PRINT a

GOTO 210

  1. END

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5183
Авторов
на СтудИзбе
435
Средний доход
с одного платного файла
Обучение Подробнее