Управляющие конструкции


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

  1. ветвления или условные переходы (IF, CASE)
  2. циклы (FOR, WHILE, SCAN)
  3. Завершающие или бузусловные переходы (EXIT, DO, RETURN, QUIT)
 
IF..ENDIF DO CASE .. ENDCASE WHILE
IIF FOR .. ENDFOR SCAN


IF .. ENDIF
          IF условие
                операторы
            [ELSE
                операторы]
            ENDIF
Условие - логическое выражение, если его значение истинно, то выполняется последовательность операторов после IF, если ложно - то выполняются операторы после ELSE.

IIF - Immediate If - "немедленный" If: Функция, которая принимает одно из двух значений в зависимости от проверки условия.

        IIF (условие, значение для True, значение для False)



DO CASE ... ENDCASE
      DO CASE
                CASE условие1
                            операторы1
                CASE условие2
                            операторы2
                . . .
                CASE условиеN
                            операторыN
                [OTHERWISE
                            операторы]
        ENDCASE
    Последовательно проверяются условия после ключевого слова CASE.
    Если условие истинно, то выполняются следующие за ним операторы.
    На истинность проверяется только одно истинное условие, если оно найдено, то управление передается ENDCASE. Остальные условия игнорируются.
    Если ни одно условие не истинно, то выполняются операторы после необязательного слова OTHERWISE.


FOR .. ENDFOR
        FOR счетчик FROM начальное_значение TO конечное значение [STEP шаг]
                    операторы
        ENDFOR
    Счетчик - переменная, значение которой изменяется от начального до конечного значения с заданным шагом. Цикл повторяется столько раз, сколько значений принимает счетчик(при условии, что значение счетчика не меняется в цикле - в этом случае цикл может быть и бесконечным).
    Шаг может быть положительным и отрицательным (в этом случае начальное значение должно превышать конечное). Цикл может быть невыполнимым, например, если при положительном шаге начальное значение превышает конечное.


WHILE
        DO WHILE условие
                операторы
                [EXIT]
                LOOP
        ENDDO
 Операторы выполняются пока условие истинно или выполняемый цикл не прерывается по EXIT.


SCAN
        SCAN переменная [FOR логич_выражение1]
                [WHILE логич_выражение2]
                        операторы
                LOOP
                EXIT
        ENDSCAN
        Конструкция SCAN предназначена для работы с записями таблицы.
        Этот цикл просматривает текущую таблицу запись за записью и для каждой найденной записи, удовлетворяющей условию после FOR, выполняются операторы.
        Цикл выполняется с первой по последнюю запись.
        Для индексированных таблиц сканирование осуществляется в порядке, установленном активным индексом табдицы.
        Если в теле цикла изменяется значение поля, являющегося индексным, то запись перемещается на положение в таблице, определяемое заданным упорядочением. Таким образом некоторые записи могут быть просмотрены несколько раз, а некоторые пропущены.