Basic вводный курс


Оператор с заранее известным числом повторений



Оператор с заранее известным числом повторений

Когда мы работали с графикой, то в одном из заданий вам предлагалось построить мишень — пять концентрических окружностей. Мы это легко сделали, пять раз написав оператор построения окружности circle, изменяя в нем каждый раз радиус.
Ну а если бы таких окружностей надо было бы 100? Неужели 100 раз писать практически одно и то же? Очень нелегко, даже если пользоваться копированием строк. Неужели нельзя как-нибудь полегче? Конечно можно! Нам на помощь приходит оператор ЦИКЛа FOR. . .NEXT.
Итак, правила пользования оператором цикла for. . .next:

  • Рассмотреть повторяющиеся действия и выделить в них равномерно изменяющуюся величину (параметр).
  • Дать параметру имя.
  • Определить для параметра начальное значение, конечное значение и шаг изменения, т. е. насколько за один раз увеличивается (или уменьшается) параметр.
  • Написать оператор цикла, состоящий из трех частей:
  • заголовок цикла
  • FOR параметр=нач значение ТО кон_значение STEP шаг
  • тело цикла
    • В теле цикла указываются один или несколько операторов, предназначенных для повторяющихся действий, причем, вместо конкретных значений изменяющейся величины указывают имя параметра.
    • NEXT параметр
    • Рассмотрим пример построения мишени. Действуем по правилам. При рисовании мишени изменяется радиус, это и будет параметр. Обозначим его буквой R. Пусть начальное значение r=20, конечное значение r=60, шаг изменения ?r=io.
      Записываем оператор цикла (предварительно, конечно, включив графический режим):

      FOR R=20 TO 60 STEP 10
      CIRCLE (320, 175), R, 14 NEXT R

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

      FOR R=20 TO 60 STEP 10: CIRCLE (320, 175), R, 14: NEXT R

      Но если в теле цикла много операторов, то такая запись будет плохо читаемой.
      Как же работает оператор цикла на примере приведенной выше программы? Встретив заголовок цикла for, программа присваивает параметру начальное значение и переходит в тело цикла. Там находит команду circle, и исполняет ее, подставляя вместо параметра его начальное значение. Встретив команду next программа добавляет к предыдущему значению параметра величину шага, затем проверяет условие, не стало ли значение параметра больше конечного его значения, и, если нет, продолжает выполнение цикла. Если да, переходит к выполнению следующей за оператором цикла команды или заканчивает выполнение программы, если таковой отсутствует.
      Таким образом, последнее значение параметра в нашем примере будет 70, после чего цикл закончится. (Попробуйте к программе добавить строку ? "R=",- r и посмотрите, что появилось на экране.)
      Теперь следует сказать несколько слов о составной части оператора цикла — шаге изменения параметра step. Довольно часто преподаватели провокационно спрашивают, а какие значения может принимать step? Может ли он быть отрицательным? Дробным? Вот ответы на эти вопросы. Шаг может быть любым вещественным числом, за исключением нуля, иными словами, и целым, и дробным, и отрицательным. Но отрицательным он может быть только в случае, если начальное значение параметра больше конечного, т. е. когда мы идем от большего к меньшему. Например, тот же оператор цикла из примера про мишень с тем же результатом можно было бы записать и так:

      FOR R=60 TO 20 STEP -10: CIRCLE (320, 175), R, 14: NEXT R

      Кроме того, если шаг изменения параметра равен единице, то при написании оператора цикла его можно опускать, например:

      FOR №-12 ТО 24 STEP 1

      можно было бы записать просто

      FOR W=12 TO 24

      Но это не касается минус единицы!
      Использование оператора цикла очень наглядно в графике (хотя это, как раз, не главное применение данного очень полезного инструмента). Поэтому, давайте освоим правила управления оператором цикла, выполнив несколько упражнений.
      137. Напишите программу, рисующую на экране горизонтальную линию, состоящую из точек, расстояние между которыми 8 (Рисунок 1.35).









      - Начало -  - Назад -  - Вперед -