Blitz3d – работа с переменными, циклы

Цель первой части третьего урока – ознакомить учащихся с операциями над переменными, при этом необходимо изучить операторы вывода переменных на экран и ввода их с клавиатуры.

Команда PRINT
Данная команда выводит значения переменных на экран. После слова PRINT указывают имя переменной.
Примеры:

A$ = ”Привет!”: PRINT A$
B=25: PRINT B

Также можно выводить просто строки и числа:

PRINT “Хорошая погода!”
PRINT 25.6

Команда INPUT
С помощью этой команды можно вводить значения переменных с клавиатуры. В скобках нужно указать приглашение (например, “Введите число:”).
Примеры:

Name$ = INPUT$(“Введите ваше имя:”) (*)
Age = INPUT$(“Сколько вам лет?”) (*)

Действия над переменными
Переменным можно присваивать значения выражений. Числовые переменные и числа можно складывать (+), вычитать (-), умножать (*), делить (/), возводить в степень (^), находить остаток от деления (MOD).
Примеры:

A = 5: B = 3: C = A + B: D = A * B: B = 2 ^ 2 (*)
F = A MOD 5 ; F равно остаток  от деления A  на 5 (*)
E# = 2.5 * A + F# - 3 (*)

Строки тоже можно складывать:

Imya$ = ”Сергей”: Familiya$ = ”Иванов” (*)
Man$ = Imya$ + “ “ + Familiya$ (*)

Программа, переводящая значение угла градусов в радианы
Данный пример хорошо демонстрирует применение математических формул в программе.
Пользователь задает значение в градусах:

AngDeg# = INPUT$(“Введите значение угла в градусах:”)

Переменная AngDeg# - значение угла в градусах, AngRad# - в радианах:
AngRad# = AngDeg# / 180 * 3.14

Вывод значения переменной на экран:
PRINT “Значение в радианах - ” + AngRad#

Ожидание нажатия любой клавиши:
WAITKEY

Задание: сделать программу, переводящую значение температуры из градусов Цельсия в Кельвины
Задание идентично примеру, поэтому для учащихся не составит труда сделать его самостоятельно, модифицировав программу примера.
Celsius = INPUT$(“Введите значение температуры в градусах Цельсия:”)
Kelvin = Celsius + 273
PRINT “Температура в Кельвинах:” + Kelvin
WAITKEY

Цикл FOR-NEXT
В последующих уроках циклы будут использоваться для создания множества однотипных объектов и манипуляции массивами и массивоподобными структурами.
FOR и NEXT - команды создания цикла. Синтаксис:
FOR переменная = начало TO конец STEP шаг
….
операторы
….
NEXT

Программа будет исполняться так: сначала переменной присваивается начальное значение, затем после достижения команды NEXT к значению переменной прибавляется шаг и программа возвращается на начало цикла. Это происходит до тех пор, пока значение переменной не станет больше или равно конечному значению. Шаг по умолчанию равен 1.
Эти операторы позволяют упростить создание программы, т.е. вместо

PRINT 1
PRINT 2
PRINT 3
PRINT 4
PRINT 5
WAITKEY

Мы можем написать:

FOR A = 1 TO 5
  PRINT A
NEXT A
WAITKEY

Команда PRINT A будет повторена 5 раз, и переменная A будет принимать значения от 1 до 5
Чтобы вывести цифры 1, 3, 5, 7, 9, нужен цикл от 1 до 9 с шагом 2:

FOR A = 1 TO 9 STEP 2
  PRINT A
NEXT A
WAITKEY

Можно вкладывать циклы друг в друга:

FOR X=1 TO 3
 FOR Y=1 TO 3
  PRINT X+Y
 NEXT
NEXT
WAITKEY

Еще пример:

FOR Z=9 TO -9 STEP -3
 PRINT “Z=”+Z
 PRINT “-Z=”+(-Z)
NEXT
WAITKEY

Программа изображения бильярдных шаров с помощью циклов
Программа совмещает использование циклов и вывод на экран трехмерного изображения, высокий уровень наглядности.
Создаем заголовок:

Graphics3D 640, 480, 32
c = CREATECAMERA()
l = CREATELIGHT()

Итак, нам нужно построить четыре ряда из шаров. Задаем цикл по y от 1 до 4:
FOR y = 1 TO 4

В первом ряду 1 шар, во втором 2, в третьем – 3, в четвертом – 4. Количество шаров в ряду равно номеру ряда, поэтому создаем цикл по x от 1 до y:
FOR x = 1 TO y

Создаем шар:
s = CREATESPHERE(20)

Теперь размещаем его в соответствующих координатах:
POSITIONENTITY s, x * 2 – y - 1, 1.7 * y - 4, 7

Закрываем циклы, визуализируем сцену:
NEXT
NEXT
RENDERWORLD
FLIP
WAITKEY