Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
110
Добавлен:
15.06.2014
Размер:
10 Mб
Скачать

5.3.4 Команды структурного программирования

Команды структурного программирования обеспечивают следующее:

организация цикла по условию (рис. 5.29);

организация цикла по счетчику (рис. 5.30);

организация цикла по числу записей в таблице (рис. 5.31);

проверка условий (рис. 5.32). Проверка условий реализуется командами двух типов и специальной функцией IIF(), выполняемой значительно быстрее, чем эквивалентные ей команды IFENDIF.

DO WHILE <expL>

<statements>

[LOOP]

[EXIT]

ENDDO

Здесь <expL> – логическое выражение; пока оно остается истинным, выполняются команды <statements>. LOOP – ключевое слово; ставится в любом месте внутри цикла; возвращает управление к началу цикла. EXIT – то же, но служит для выхода из цикла к первому оператору, стоящему после слова ENDDO.

Рис. 5.29 Команда организация цикла по условию

FOR <memvar>=<expN1> TO <expN2> [STEP <expN3>]

<statements>

[EXIT]

[LOOP]

ENDFOR | NEXT

Переменная памяти <memvar> является счетчиком, определяющим число выполнений цикла. При этом expN1 – начальное, expN2 – конечное значение счетчика, а expN3 – шаг изменения счетчика по достижении конца цикла (по умолчанию равен 1). Если значение счетчика превысит expN2, то управление передается на следующий за циклом оператор.

Значения expN1, expN2, expN3 считываются только первоначально, поэтому их значения могут быть изменены внутри цикла без изменения количества итераций. Если же изменить значение счетчика <memvar> внутри цикла, то это изменит количество итераций цикла.

Рис. 5.30 Команда организация цикла по счетчику

SCAN [NOOPTIMIZE] [<scope>] [FOR <expL1>] [WHILE <expL2>]

[<statements>]

[LOOP]

[EXIT]

ENDSCAN

Данная команда просматривает базу данных и выполняет группу операторов для каждой записи, если выполняются заданные условия. По умолчанию диапазоном <scope> являются все записи базы данных. Операторы <statements> выполняются для тех записей внутри диапазона, для которых выражение <expL1> истинно. Просмотр базы данных в цикле идет пока <expL2> остается истинным. Прочие опции используются, как описано выше. Команда автоматически передвигает указатель записей на следующую запись.

Рис. 5.31 Команда организация цикла по числу записей в таблице

DO CASE

CASE <expL1>

<statements1>

CASE <expL2>

<statements2>

CASE <expLN>

<statementsN>

[OTHERWISE

<statementsN+1>]

ENDCASE

Команда выполняет один блок операторов из набора в зависимости от логического условия (или не выполняет ни одного блока операторов). Будут выполнены команды <statements> только после первого CASE с истинным логическим условием. Все возможные последующие истинные CASE игнорируются, а управление передается к первому оператору, стоящему после ENDCASE. Если же ни одно из условий не оказалось истинным, то выполняются операторы, стоящие после ключевого слова OTHERWISE, а если оно не указано, то сразу же управление переходит к оператору, стоящему после ENDCASE.

Следующая команда выполняет команды в зависимости от условия:

IF <expL>

<statements1>

[ELSE

<statements2>]

ENDIF

Здесь <expL> – логическое условие, при истинности которого выполняется первая группа операторов, а при ложности – вторая группа, если она имеется после слова ELSE.

Функция IIF() возвращает одно из двух выражений в зависимости от значения логического выражения. Ее синтаксис:

IIF (<expL>,<expr1>,<expr2>)

Если логическое выражение <expL> истинно, то возвращается первое выражение <expr1>, а если <expL> ложно, то второе (<expr2>).

Рис. 5.32 Команды и функция проверки условий