Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VB_1 Mетодичка-Exel_укр_2.doc
Скачиваний:
3
Добавлен:
17.09.2019
Размер:
1.43 Mб
Скачать

26.2.Оператор for each - next (для кожного - наступного)

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

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

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

Next елемент 

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

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

Function Summa_n(ParamArray Masiv())

DIM 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=  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) .

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

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

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

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

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