Стандартные функции

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 содержит большое количество стандартных функций: математические, статистические, символьные, даты и времени, логические функции, функции управления таблицами, индексами, связями, полями, записями, файлами и окружением, функции преобразования типов.

Рассмотрим некоторые из них.