Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Цикли і структури повторень
План
[0.1] Застосування обчислюваних циклів [0.1.1] Циклічна структура FOR NEXT [0.1.1.1] БЛОК [0.1.1.2] БЛОК [0.1.2] Оператор FOR EACH - NEXT (для кожного - наступний) [0.1.2.1] БЛОК [0.1.2.2] БЛОК [0.2] Цикли, що логічно перериваються [0.2.1] Застосування циклу DO-LOOP. [0.2.2] Застосування циклів WHILE-WEND |
Синтаксис:
FOR зміна_циклу = початкове_значеня TO остане_значеня STEP крок
БЛОК
[EXIT FOR]
БЛОК
NEXT зміна_циклу
В даному випадку зміною_циклу є ім'ям змінної, яка рахує кількість кроків циклу або розраховується елементи ряду починаючи з початкового_значеня з шагом зростання крок до останього елементу що не перевищує значення остане_значеня. Крок величина нарощування зміна_циклу.
Оператор EXIT FOR призначений для передчасного припинення циклу і зазвичай застосовується в структурі IF, яка перевіряє альтернативну умову переривання циклу.
Приклад:
FOR I = 1 TO 10
Cells(3,I).value=I^2
NEXT I
В наведеному прикладі в третьому рядку поточного листа буде записане значення квадрату чисел від 1 до 10 послідовно, починаючи з клітини А3 та закінчуючи J3.
Цикл FOR - NEXT ще називають цикл об'єктного типа, який дуже схожий на обчислюваний цикл, оскільки виконується певна кількість разів. Але застосовується він до набору об'єктів і виконується по одному разу для кожного об'єкту з набору. Якщо ви використовуєте цикл об'єктного типа, то немає необхідності знати скільки об'єктів в себе включає набір. Лічильник циклу містить не величину, що визначає кількість ітерацій (кроків) циклу, а об'єкт з набору. Крім того, цикли об'єктного типа можна застосувати до масивів. В цьому випадку цикл буде виконаються для кожного елементу масиву і змінна циклу міститиме значення цього елементу.
Синтаксис:
FOR EACH імя_елементу_масиву In імя_масиву()
БЛОК
EXIT FOR
БЛОК
NEXT імя_елементу_масиву
Оператор EXIT FOR призначений для передчасного припинення циклу і зазвичай застосовується в структурі IF, яка перевіряє альтернативну умову переривання циклу.
Sub Example1()
DIM Masiv(100) As Integer
DIM Summa, el As Integer
Summa = 0
For Each el In Masiv()
Summa = Summa + el
Next el
End Sub
Принцип роботи такого циклу:
Цикли, що логічно перериваються, це структури повторень, які уриваються, якщо задовольняється деяка умова. Якщо обчислювані цикли виконують його певну кількість разів, то цикл, що логічно переривається, може виконувати блок коду невизначена кількість разів або взагалі не виконувати залежно від стану логічної умови, що перериває цикл. Можна використовувати логічно безперервну структуру замість обчислюваного циклу шляхом нарощування змінної після кожного кроку циклу і перевірки її значення в умові переривання циклу.
Логічне переривання циклу використовується в тих випадках, коли кількість кроків циклу заздалегідь не відома. Приклад при читанні даних з файлу.
Цей цикл є найбільш універсальним з циклів, що логічно перериваються. Існує 4 конфігурації цього циклу:
БЛОК [EXIT DO] БЛОК LOOP |
БЛОК [EXIT DO] БЛОК LOOP |
БЛОК [EXIT DO] БЛОК LOOP WHILE умова |
БЛОК [EXIT DO] БЛОК LOOP UNTIL умова |
Оператор EXIT DO призначений для передчасного припинення циклу і зазвичай застосовується в структурі IF, яка перевіряє альтернативну умову переривання циклу.
При читанні даних з файлу можна використовувати функцію EOF() для перевірки чергової частки файлу і пошуку маркера кінця.
Приклад: Пошук першого позитивного елементу масиву.
Function Example2(Massive) As Single
DIM J As Integer, Value As Integer
J = LBOUND(Massive) 1
DO
J = J +1
IF J>UBOUND(Massive) Then
Value = CVErr(xlErrValue)
EXIT DO
END IF
Value = Massive(J)
LOOP UNTIL Value > 0
Example2 = Value
End Function
Цикл WHILE-WEND еквівалентний структурі DO WHILE-LOOP
Синтаксис:
WHILE умова
БЛОК
WEND
У структурі WHILE-WEND відсутній оператор EXIT що дозволяє перервати цикл до його виконання, а також відсутня можливість записати умову в кінці циклу.
PAGE 1