Стандартные функции
ENDDO
ENDFOR
Операторы циклов
ENDCASE
DO CASE
Обобщенный условный оператор
ENDIF
ELSE
ENDIF
Условный оператор
Управляющие конструкции
IF Условие
операторы
Если условие верно, выполняются операторы, стоящие между условием и стандартным словом ENDIF.
Второй вариант:
IF Условие
Операторы1
Операторы2
Если условие верно, выполняются операторы 1, а если не верно – то операторы 2.
Пример:
IF kol_det > 0
Nalog = 0
ELSE
Nalog = Zarp * 0.07
ENDIF
Если количество детей больше нуля (kol_det >0 ), то налог равен 0, в противном случае начисляется налог в размере 7 % от зарплаты (zarp).
Замечание: В FoxPro на одной строке может стоять только один оператор.
Для записей простых условных операторов можно использовать функции IIF
IIF(Условие, выражение1, выражение2)
Функция IIF возвращает выражение1, если условие верно и выражение 2, если условие не верно.
Пример:
Предыдущий пример можно переписать при помощи функции IFF
Nalog = IIF ( kol_det > 0, 0, Zarp * 0.07)
CASE Условие 1
Операторы 1
CASE Условие 2
[OTHERWISE
Операторы ]
Если верно условие 1, то выполняются операторы 1. Если верно условие 2, то операторы 2,… Если ни одно из условий не выполняется, то операторы, которые стоят после слова OTHERWISE.
Пример:
DO CASE
CASE x <10
@ 10,10 say “Меньше 10”
CASE x =10
@ 10,10 say “Равно 10”
CASE x >10
@ 10,10 say “Больше 10”
ENDCASE
В зависимости от значения x, выдается сообщение, что x меньше, равно или больше 10.
Цикл FOR…ENDFOR
FOR Счетчик = Начальное Значение TO Конечное Значение STEP Шаг
Операторы
Счетчик изменяется от Начального значения до конечного значения с заданным шагом, операторы, которые стоят внутри цикла выполняются при каждом значении счетчика.
Пример:
Программа выводит на экран все четные числа от 1 до 10
i=1
FOR j=2 TO 10 STEP 2
@ i, 10 say j
i=i+1
ENDFOR
Цикл DO WHILE…ENDDO
DO WHILE Условие
Операторы
[EXIT]
…
[LOOP]
…
Пока условие верно выполняются операторы, которые стоят внутри цикла.
Оператор EXIT используется для немедленного выхода из цикла, независимо от условия. Оператор LOOP прерывает очередную итерацию цикла, и переходит к проверке условия.
Пример:
Для всех записей в таблице поле Nalog рассчитывается как 1% от поля Zarp. Указатель размещается на первую запись, а за тем перемещается к по всем записям таблицы, до тех пор пока не будет достигнут конец файла.
GO TOP
DO WHILE !(eof())
REPL Nalog WITH Zarp*0.01
SKIP
ENDDO
Цикл SCAN…ENDSCAN
Аналогичен циклу DO WHIELE, используется для работы с записями таблицы. Автоматически перемещает указатель к следующей записи.
SCAN [FOR ЛогическоеУсловие]
[WHILE ЛогическоеВыражение]
Операторы
[EXIT]
[LOOP]
ENDSCAN
В цикле SCAN используется или конструкция FOR или WHILE
FOR ЛогическоеУсловие означает, что операторы, стоящие в цикле выполняются только для тех записей, для которых верно логическое условие.
WHILE ЛогическоеВыражение - цикл выполняется до тех пор, пока Логическое выражение истинно.
Если не использовать конструкций FOR и WHILE, операторы будут выполнены для всех записей таблицы.
EXIT и LOOP работают так же как и в цикле FOR.
Пример:
Предыдущий пример можно переписать при помощи оператора SCAN…ENDSCAN
SCAN
REPL Nalog WITH Zarp*0.01
ENDSCAN
Замечание. Указатель перемещается автоматически.
FoxPro содержит большое количество стандартных функций: математические, статистические, символьные, даты и времени, логические функции, функции управления таблицами, индексами, связями, полями, записями, файлами и окружением, функции преобразования типов.
Рассмотрим некоторые из них.