Главная » Basic » ВЛОЖЕННЫЕ ЦИКЛЫ FOR

0

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

Рис. 3.2. Пример использования одного цикла FOR внутри другого

Подобное вложение изображается следующей диаграммой-

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

Так как в операторе PRINT (строка 40) указана точка с запятой, то значения z будут печататься на одной строке до тех пор, пока управление не выйдет из  внутреннего цикла, после чего  оператор PRINT в строке 60 начнет новую строку для цикла, управляемого переменной I.  Таким  образом, вывод программы будет иметь следующий вид:

Учтите, что в Бейсике ВВС способ изображения числовых данных таков, что в приведенном выше примере столбцы результатов сольются, поэтому при работе с этой версией Бейсика строку 40 надо заменить на оператор

40 PRINT " ";Z;

Ниже демонстрируются  различные возможности применения операторов F0R-NEXT на примере трех вложенных циклов:

20  B=4

30  FOR      I = 100 ТО  200   STEP   60

40       PRINT   "ТЕКУЩЕЕ ЗНАЧЕНИЕ   I=";I.

50   FOR J=.3 TO .2 STEP -.1

60    PRINT "ТЕКУЩЕЕ ЗНАЧЕНИЕ J=";J

70    FOR K=A ТО В

80      PRINT "                              ТЕКУЩЕЕ ЗНАЧЕНИЕ К =";К

Если возможно применение дополнительных  форм оператора NEXT, то оператор NEXT без имени переменной отмечает конец цикла, начатого непосредственно предшествующим ему  оператором FOR. В этом случае строки 90, 100, 110 можно переписать в виде

90  NEXT

100  NEXT

11.0  NEXT

А если допускается и вторая дополнительная форма, то эти строки можно заменить строкой

90  NEXT I, J, К

показывающей, что все циклы заканчиваются  в одном и том же месте (первые переменные отвечают внешним циклам).

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

3.3.1.  ПРИМЕР ПРОГРАММЫ

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

сумма очков N, к числу всех вариантов (6*6*6 =216 вариантов). Варианты с заданной суммой очков подсчитываются в строке 80, а составляющие эту сумму очки печатаются в строке 90. Если сумма очков отличается от N, то происходит переход со строки 70 к строке 100, т. е. указанные выше действия обходятся. Ответы пользователя подчеркнуты:

10 INPUT N

20 PRINT

30 С=0

40 FOR D1=1 TO 6

50   FOR D2=l TO 6

60     FOR D3=l TO 6

70        IF(D1+D2+D3<>N) THEN 100

80       С=С+1

90       PRINT D1 ;D2 ;D3

100     NEXT D3

110   NEXT D2

120 NEXT D1

130 PRINT N;"ВЫПАДАЕТ В ";С;" СЛУЧАЯХ"

140 PRINT "ОТСЮДА ВЕРОЯТНОСТЬ";N; "РАВНА"; С/216

150 END RUN

?6

1 1 4

1 2 3

1 3 2

1    1 2 1 3 2 2 2

2  3 1

3  1 2

3  2 1

4  1 1

6 ВЫПАДАЕТ В 10 СЛУЧАЯХ" ОТСЮДА ВЕРОЯТНОСТЬ 6 РАВНА 4.6296ЗЕ-2 END AT LINE 150

Структура этой программы изображается следующей диаграммой:

При работе с Бейсиком ВВС строку 90 надо модифицировать следующим образом: 90 PRINT D1;" ";D2;" ";D3

Источник: Уолш Б.    Программирование на Бейсике: Пер. с англ. М.: Радио и связь, 1988. 336 с: ил.

По теме:

  • Комментарии