Основы языка Visual FoxPro
Если Вы знакомы со структурным программированием, то Вам особенно не нужно объяснять, что такое циклы и условные операторы. Но все же вкратце на этом остановимся.
Условный оператор позволяет выполнять тот или иной блок программы в зависимости от какого-то условия:
IF lExpression <часть кода 1> ELSE <часть кода 2> ENDIF
lExpression любое логическое выражение. Если оно истинно, то выполняется "часть кода 1", иначе "часть кода 2". В VFP существует масса функций, результат которых является логическим и поэтому может использоваться в этой конструкции.
Циклы позволяют выполнить какую либо часть кода несколько раз. Соответственно, в VFP существуют несколько видов циклов:
- Циклы с предусловием
- Циклы перечисления
- Циклы "для каждого"
Циклов с послесловием, таких как Паскалевский цикл repeat until, в VFP нет. Но, при желании, их можно легко реализовать. Циклы с предусловием это циклы, выполняющиеся до тех пор, пока условие выполнения истинно. Проверка условия происходит перед очередным циклом, отсюда и название.
Такой цикл строится такой конструкцией :
DO WHILE lExpression <операторы тело цикла> ENDDO
Цикл перечисления это цикл, в котором происходит последовательное наращивание (или уменьшение) какого либо значения, то есть его перечисление.
Типичный цикл перечисления:
FOR I = nMin TO nMax STEP nStep <операторы тело цикла> ENDFOR
В этом случае, происходит последовательное увеличение переменной цикла (в данном примере I) от минимального значения nMin, до максимального nMax, с шагом приращения nStep.
Циклы "для каждого" очень удобно использовать для последовательного просмотра массивов или коллекций (о них мы поговорим позже). В этом случае, произойдет выполнение операторов цикла для каждого элемента этого массива или коллекции:
Приведем два примера использования этого цикла. Первый пример создается массив и затем последовательно выводятся его элементы оператором (?) :
DIMENSION cMyArray(3) cMyArray[1] = 'A' cMyArray[2] = 'B' cMyArray[3] = 'C' FOR EACH cMyVar IN cMyArray ? cMyVar ENDFOR
В следующем примере с помощью OLE Automation создается объект книги Excel и последовательно выводятся имена листов этой книги:
oExcel = CREATE("Excel.Application") oExcel.Workbooks.ADD FOR EACH oMyVar IN oExcel.sheets ? oMyVar.name ENDFOR
Во всех циклах можно прервать выполнение цикла оператором EXIT или прекратить выполнение текущей итерации (перейти на следующую итерацию) с помощью команды LOOP.