четвер, 17 лютого 2011 р.

Циклы


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

Поэтому нужно применить другой подход – зацикливание программы. Во-первых, следует ответить на 3 вопроса:
  1. Что общего в командах?
  2. Чем они отличаются?
  3. До каких пор нужно продолжать выполнять команды?

Для нашего конкретного случая общее здесь то, что рисуются окружности, у них равны радиусы и координаты Y. Различаются же они координатами X. Рисовать их нужно до тех пор, пока координата X не превышает ширину экрана, 550 пикселей.

Теперь можно приступить к написанию программы. Начинается она с двух стандартных строк:
10 SCREEN 9
20 CLS

Теперь производим инициализацию переменных, задаём их начальные значения.
30 X = 20: Y = 30: R = 15

Здесь мы в одной строке поместили несколько команд, разделив их двоеточиями.

Приступаем к рисованию собственно окружности:
40 CIRCLE(X,Y),R
Эта строка -  то основное, ради чего мы использовали цикл. Она называется телом цикла. В теле цикла может быть много строк.

Теперь производим шаг цикла – увеличиваем координату X окружности:
50 X = X+35

И проверяем, нужно ли вернуться и выполнить цикл ещё раз. Возвращаемся мы если X<550. Возвращаться нужно в 40ю строку. По-русски команда на возврат будет выглядеть так:
Если Х< 550 то перейти к 40й строке программы.
На Бейсике это выглядит так:

60 IF X<550 THEN GOTO 40

Обратите внимание, оператор GOTO пишется слитно.

Программа готова.

В шаге цикла можно изменять несколько параметров. Например, если мы хотим, чтобы окружности шли вот так:











Строка 50 должна выглядеть:
50 X = X+35: Y=Y+35: R=R+5

Пример 2.

Линия задаётся четырьмя числами: X1, Y1, X2, Y2. у всех линий координаты Y неизменны, координата X1 увеличивается, а X2 – уменьшается.

Пишем программу.
10 SCREEN 9
20 CLS
30 X1 = 0: Y1 = 0: X2 = 550: Y2 = 330
40 LINE(X1,Y1)–(X2,Y2)
50 X1 = X1+10: X2 = X2-10
60 IF X1<=550 THEN GOTO 40

Подумайте, как сделать, чтобы линии были разноцветными.

Задания для самостоятельной работы (для каждого из них в конспекте должна быть составлена программа)






Немає коментарів:

Дописати коментар