Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Mетодичка_VB_часть2.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.17 Mб
Скачать

1.2. Цикл for each – next

Цикл FOR EACH – NEXT (для кожного – наступного) – ще називають циклом об’єктного типа, який дуже схожий на обчислюваний цикл, оскільки виконується певну кількість разів. Але застосовується він до набору об’єктів і виконується по одному разу для кожного об’єкту з набору. Якщо використовується цикл об’єктного типу, то немає необхідності знати, скільки об’єктів в себе включає набір. Лічильник циклу містить не величину, що визначає кількість ітерацій (кроків) циклу, а об’єкт з набору. Крім того, цикли об’єктного типу можна застосувати до масивів. В цьому випадку цикл виконується для кожного елементу масиву, і змінна_циклу містить значення кожного з цих елементів (по черзі).

Для застосування циклу об’єктного типу використовується наступний синтаксис:

For Each елемент  In набір

Next елемент 

Де елемент представляє собою змінну типу Variant, що забезпечує можливість посилання на об’єкт. Змінна набір є деяким набором об’єктів. В процесі виконання циклу об’єкт вибирається з елементів набору та розміщується в змінній елемент по черзі. Це дозволяє використовувати змінну елемент в блоці коду циклу для застосування необхідних дій з об’єктом. Подібно до циклу FOR – NEXT оператор Exit For перериває цикл FOR EACH – NEXT до його закінчення.

Структуру FOR EACH – NEXT дуже зручно застосовувати у різних випадках, особливо коли масив або клітини передаються функцією користувача.

Приклад:

Function Summa_n(ParamArray Masiv())

DIM Summa, el Summa змінна, що відповідає за суму елементів набору

el змінна, що відповідає за кожен елемент набору

Summa = 0

For Each el In Masiv()

Summa = Summa + el

Next el

Summa_n = Summa

End Function

Принцип роботи такого циклу:

  • Змінній циклу el привласнюється значення першого елементу масиву Masiv(). Якщо в масиві немає жодного елементу, цикл не виконуватиметься жодного разу.

  • Виконується задана послідовність операцій Summa = Summa + el (накопичення суми).

  • Перевіряється, чи є цей елемент останнім в масиві. Якщо так, то цикл припиняється, якщо ні, то змінній циклу привласнюється значення наступного елементу масиву, і цикл повторюється знову.

Розглянемо як мала б виглядати функція з використанням структури FOR – NEXT:

Function Summa_n_1(ParamArray Masiv())

DIM Summa ‘ змінна, що відповідає за суму елементів набору

DIM і As Integer ‘ змінна, що відповідає за індекс елементу набору

DIM I_Max As Integer, I_Min As Integer ‘ змінні, що відповідають за найбільший ‘ та найменший індекс набору

I_Max = Ubound(Masiv) ‘ визначення найбільшого індексу набору

I_Min = Lbound(Masiv) ‘ визначення найменшого індексу набору

Summa = 0

For і = I_Min to I_Max

Summa = Summa + Masiv(i) ‘ накопичення суми елементів набору

Next i

Summa_n_1 = Summa

End Function

Результати роботи обох функцій мають однакові значення для однакових наборів значень, тобто Summa_n_1(10; -9; 2; -4; 1; 101; -100; 20; 50) = = Summa_n(10; -9; 2; -4; 1; 101; -100; 20; 50) = 71.

2. Логічні цикли

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

Логічне переривання циклу використовується в тих випадках, коли кількість кроків циклу заздалегідь невідома. Наприклад, читання даних з файлу.

Логічні цикли реалізують оператори DO - LOOP та WHILE – WEND. Перший цикл може перериватись оператором EXIT DO, на відміну від другого.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]