Циклы и условные операторы

Архив WebclubТехнологии2010

Публикация прежнего Webclub · 2010 год. Примеры и сведения сохранены в историческом контексте.

Основы языка 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.

Ещё из архива

Архив клуба
веб-разработчиков

HTML, CSS, программирование и история интернета. Публикации прежнего Webclub по своим адресам.

Открыть архив
Сайт на ноутбуке и телефоне