Оператор циклу з параметром For.

Для ситуацій, коли потрібна кількість повторів команд тіла циклу відома до початку циклу, в усіх мовах програмування передбачено спеціальну конструкцію циклу – оператор циклу з параметром For. OpenOffice.org Basic не виняток. Синтаксис оператора For у Ooo Basic (та VBA):

For <Лічильник> = <Початкове Значення> To <Кінцеве Значення> [Step <Крок>]
<Інструкції>
[Exit For]
<Інструкції>
Next <Лічильник>

Така конструкція циклу повторює виконання групи Інструкцій, для кожного значення Лічильника, яких він набуває, змінюючись від Початкового Значення до Кінцевого Значення із вказаним Кроком. Якщо крок не вказаний, тоді він дорівнює 1, для Лічильників числових типів допускається дробове значення Кроку.

Якщо для додатнього значення Кроку задати Початкове Значення більшим за Кінцеве Значення, то інструкції в тілі циклу не виконуватимуться жодного разу, аналогічну систуацію матимемо, якщо Початкове Значення менше за Кінцеве Значення а значення Кроку від’ємним. Зміна значення Лічильника Інструкціями у тілі циклу не заборонена сиснтаксисом Basic, але є небажаною, оскільки часто призводить до логічних помилок у програмах, зокрема, зациклень.

Альтернативний спосіб завершення циклу представлений інструкцією Exit For є необов’язковим і використовується, переважно, у поєднанні з опереторами розгалуження If, або Select Case та безумовного переходу Goto.

Оператор циклу з параметром зручний для використання до обробки елементів масисвів. Наприклад, якщо потрібно переглянути і виконати задані дії з кожним із 10-ти елементів деякого масиву M(9) ( M(0), M(1), … , M(9) ), можна скористатися такою циклічною конструкцією:

For k = 0 To 9
‘Обробка елемента M(k)
Next k

Очевидно, для розв’язання цієї ж задачі можна було б скористатися, напиклад, оператором While:
k = 0
While k <= 9
‘Обробка елемента M(k)
k = k + 1
Wend

Проте, перша конструкція є зручнішою, як з точки зору запису, так і з точки зору виконання програми комп’ютером.

У VBA для роботи із елементами тієї, чи іншої групи або колекції об’єктів передбачена спеціальна форма оператора For:


For Each <Елемент> In <Група>
<Інструкції>
[Exit For]
<Інструкції>
Next <Елемент>

Цей оператор повторює виконання групи інструкцій для кожного елемента групи або колекції.
З огляду на більш потужну і, відповдно, складнішу об’єктну структуру OpenOffice, в ранніх версіях OOo Basic така конструкція не використовувалася взагалі. Хоча, наприклад, транслятор Basic у версії Apache OpenOffice 3.4.0 виконує наступну процедуру без жодних зауважень:

Sub DemoForEachElementInArray()
Dim A(4) As Integer
Dim t
For i = 0 To 4
A(i) = i^3
Next i
For Each t In A
MsgBox t
Next t
End Sub