Статус документа
Статус документа

ГОСТ 27787-88 Язык программирования БЕЙСИК

     3.10. Операторы цикла

3.10.1. Общее описание

Оператор-начала-цикла и оператор-конца-цикла служат для создания циклов. Общая синтаксическая форма операторов начала-цикла и конца-цикла следующая:

FOR v = начальное-значение ТО конечное-значение STEP шаг NEXT v

где v - простая-числовая-переменная, а начальное-значение, конечное-значение и шаг суть арифметические-выражения; указание STEP шаг является необязательным.

3.10.2. Синтаксис

1) цикл-с-шагом = строка-цикла тело-цикла

2) тело-цикла = блок * строка-конца-цикла

3) строка-цикла = номер-строки оператор-начала-цикла конец-строки

4) строка-конца-цикла = номер-строки оператор-конца-цикла конец-строки

5) оператор-начала-цикла = FOR управляющая-переменная равно начальное-значение ТО конечное значение (STEP приращение) ?

6) управляющая-переменная = простая-числовая-переменная

7) начальное-значение = арифметическое-выражение

8) конечное-значение = арифметическое-выражение

9) шаг = арифметическое-выражение

10) оператор-конца-цикла = NEXT управляющая-переменная

3.10.3. Примеры

1)

100 FOR I=ITOI0

... другие блоки или строки

200 NEXT I

5)

FORI=А ТО В STEP-I

10)

NEXT C7

3.10.4. Семантика

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

Физически вложенные операторы не могут иметь одну и ту же управляющую-переменную.

При отсутствии указания STEP в операторе-начала-цикла приращение по умолчанию принимается равным +I.

В терминах других операторов можно описать действие оператора-начала-цикла и оператора-конца-цикла следующим образом:

FOR = начальное-значение ТО конечное-значение STEP шаг (блок)

NEXT

эквивалентно

LET ownI = конечное-значение

LET own2 = шаг

LET v = начальное значение

...

строкаI IF (v-ownI)*SGN(own2) > 0 THEN строка 2

(блок)

LET v = v+own2

GOTO строка I

строка 2 REM


Здесь v - любая простая-числовая-переменная, ownI и own2 - переменные, связанные с конкретным циклом-с-шагом и не доступные программисту; строка I и строка 2 - номера-строк, связанные с конкретным циклом-с-шагом и не доступные программисту. Переменные ownI и own2 отличаются от аналогичных переменных, связанных с другими циклами-с-шагом.