Цикли. Цикли - одна з найкорисніших штук, які дозволяють не роздувати код на багато рядків. Так що варто розглянути їх. Почнемо, як завжди, з самого просто. З циклу FOR ... NEXT
Дана конструкція найпростіша.
n - змінна лічильника циклу. Праворуч вказується довжина циклу (в даному випадку від 1 до 10). Цикл закінчується фразою NEXT. Все що укладено між FOR та NEXT буде виконуватися вказану кількість разів (10 разів, в даному випадку).
Так само, можна самому задавати «крок» циклу. Це число, на яке буде збільшуватися лічильник циклу з кожним проходом. За замовчуванням крок циклу дорівнює 1.
Розглянемо наступний приклад:
Як бачимо, все елементарно. Цикл виконується від 2 до 10 з кроком 2, тобто лічильник циклу вже приймає значення не від 1 до 10, як в минулий раз, а від 2 до 10 з кроком 2. Тобто цикл виконається 5 разів.
Цикл можна пускати так само і в зворотний бік, вказавши відповідний крок, тобто 1 рядок буде такого вигляду:
FOR n = 10 to 2 STEP -2.
Тепер давайте розглянемо інші варіанти циклів.
Так само цикл можна перервати оператором Exit For. виконавши його в тілі циклу.
Давайте тепер розберемо різновид конструкції FOR - конструкцію FOR EACH ... NEXT
Конструкція FOR EACH ... NEXT відрізняється від основної конструкції тим, що довжина визначається не змінною, а кількістю елементів в масиві або колекції. Проблема для розуміння полягає ще й в тому, що для різних випадків воно може виглядати злегка по-різному. Надалі я приведу приклади, тому що ми будемо часто використовувати цю конструкцію. А поки розберемо легкий приклад на основі масивів, тим більше масиви наша наступна тема.
Як ми бачимо, FOR EACH вказує що для кожного Item (елемента) в масиві Array (оголошеному раніше) робити такі дії: прирівнювати елементу масиву випадкове числі. Ось невеликий, але корисний нюанс.
Випадкові числа в VBS:
Формат прирівнювання випадкового числа: випадкове _чісло = Int (мінімум + (Rnd () * максимум))
Далі, в змінну TEXT записуються значення елементів через пробіл. Покажчик номера елемента n збільшується на 1. Це не лічильник циклу, в даному випадку. Лічильником циклу є кількість елементів масиву (в даному випадку від нуля до 5, тобто 6 елементів і 6 проходів циклу).
У підсумку виводиться TEXT
А тепер перейдемо до наступної конструкції - конструкції Do ... Loop
Крім розібраного For ... Next є конструкція Do ... Loop. Давайте розглянемо приклад використання.
Дія даної конструкції дуже просте. На другій сходинці перевіряється умова num = 0. Якщо це не так, то виконується тіло даного циклу. Коли ж num = 0 - відбувається завершення циклу без проходу. Do Until - Робити ДО тих пір. В даному прикладі відбувається висновок таблиці множення числа 2 на число num, рівне 10. Мінлива текст складається з: Стан змінної Text + значення змінної num + текст «x 2 =» плюс результат множення num на 2 і плюс перехід на наступний рядок (константа VbLf ). Ми до роботи з текстом ще повернемося, але пояснити треба було.
Until можна ставити не тільки після Do, але і після Loop. Тоді перевірка умови буде здійснюватися вже ПІСЛЯ виконання циклу. Той же самий цикл, той же результат, але інше виконання:
І є ще один різновид даної конструкції. приклад:
Сенс цієї конструкції в наступному: Цикл виконується до тих пір, поки умова WHILE вірно, тобто до тих пір, поки num> 0. Точно так само як і з Until перевірка може здійснюватися або до виконання циклу, або після. Якщо виконувати перевірку після проходу циклу, то умова WHILE вказується після слова Loop.
Даний цикл можна перервати як і цикл FOR, виконавши в тілі циклу EXIT DO.
Є ще одна конструкція. Вона замінена більш гнучкою Do ... Loop. Ця конструкція - While Wend. Приклад нижче:
Як бачите, все теж просто. На самому початку циклу умова - Num> 0. Цикл виконується до тих пір, поки ця умова вірно. На відміну від більш гнучкого Do ... Loop можна вказати умову після проходу циклу. Do While ... Loop рівносильно цього циклу.
На цьому, тема циклів повинна бути тепер зрозумілою. Пропоную зайнятися тепер масивами. Це буде наступною темою статті.