Зараз обговорюють

"Тобто є ряд завдань, які взагалі без рекурсії не наважуються."  - це як розуміти? Перефразуй, будь ласка. 

виправив, йшлося про те що деякі завдання можна вирішити лише при використанні рекурсії

Спасибі дуже корисна стаття

А ще щось планується подібного найближчим часом?


Дякую за підтримку, радий що Вам сподобалось!

Так маю вже майже дороблений проект по управлінні Audio файлом, на заміну стандартним клавішам управління HTML5, але ще не встиг відтестувати програвання файлів з інтернету, поки лише локально працює

Надіюсь найближчим часом дороблю й закину

Рахунки

webmoneyeur - E385818210641
usd - Z304643423050
uah - U354026817492
rub - R301704373231easypay80002677bitcoin1F5HRGroUtEQW9HBNbeew8iKh5KQ8vJxzw

Зворотній зв'язок

Для покращення роботи сайту надсилайте свої зауваження:
mailЗауваження
mailПропозиція

Статистика

UkrNET - поисково-информационный ресурс

VBA : Цикли (частина 1). Цикли "For" та "For Each"

Будь-які дії процедури повторюються задану кількість разів або поки виконується або не виконується деяка умова називають циклом.

Цикл — різновид керівної конструкції у високорівневих мовах програмування, призначена для організації багаторазового виконання набору інструкцій (команд). Також циклом може називатися будь-яка багатократно виконувана послідовність команд, організована будь-яким чином (наприклад, із допомогою умовного переходу).

Визначені цикли

Цикл For - один з найпопулярніших циклів. Даний цикл має дві форми - For Next і For Each In Next. Дані оператори використовуються для послідовного переміщення по списку елементів або чисел та мають фіксовану кількість ітерації, тому їх називають визначеними.

Ітерація циклу - процес виконання всіх операторів, укладених в структуру циклу, один раз називається .

Для завершення циклу ми можемо в будь-який момент використовувати команду виходу "Exit For". Давайте докладніше розглянемо кожен з цих циклів.


For...Next

Найпростішою, та найпоширенішою, структурою циклу є фіксований цикл For..Next

Синтаксис For...Next:

For [Лічильник] = [Початок] To [Кінець] Step [Крок зміни]
	[Тіло циклу]
Next [Лічильник]

For - оголошує початок циклу

[Лічильник] - будь-яка чисельна змінна VBA. Дуже часто для них використовуються літери "i" і "j"

[Початок] - будь чисельне вираження, визначає початкове значення для змінної [Лічильник]

[Кінець] - чисельне вираження, визначає кінцеве значення для змінної [Лічильник]

[Крок зміни] - значення на яке буде змінюватись змінна [Лічильник]. За замовчуванням VBA збільшує змінну [Лічильник] на +1 кожен раз при виконанні операторів в циклі, але з використанням Step можна збільшувати, або зменшувати значення на будь-яку величину в межах вказаного діапазону. Поле є необов'язковим для запису

[Тіло циклу] - один, кілька або жодного оператора VBA, які будуть виконуватись при проведеній ітерації

Next - повідомляє VBA про те, що досягнутий кінець циклу, й повертається на його початок якщо ще наявні не пройдені ітерації. Необов'язкова змінна [Лічильник] після ключового слова Next повинна бути тієї ж самої змінної [Лічильник], яка була задана після ключового слова For на початку структури циклу.

Примітка. Якщо у Вас кілька циклів вкладе в інший цикл, наявність змінної [Лічильник] біля Next дозволяє швидко зорієнтуватись де закінчується той чи інший цикл

Приклади застосування

Приклад 1:

Потрібно вивести суму усіх значень від 1 до 5

Sub example1 ()
	Dim i as Integer, MySum as Integer
		MySum = 0
		For i = 1 To 5
			MySum = MySum + i
		Next i
		MsgBox MySum
End Sub 

Відповідь: 15

Приклад 2:

Потрібно вивести суму усіх не парних значень від 1 до 5

Sub example1 ()
	Dim i as Integer, MySum as Integer
		MySum = 0
		For i = 1 To 5 Step 2
			MySum = MySum + i
		Next i
		MsgBox MySum
End Sub 

Відповідь: 9

Приклад 3:

Тепер також виведемо суму усіх не парних значень, але від 5 до 1

Sub example1 ()
	Dim i as Integer, MySum as Integer
		MySum = 0
		For i = 5 To 1 Step -2
			MySum = MySum + i
		Next i
		MsgBox MySum
End Sub 

Відповідь: 9


For Each..Next

Цикл For Each..Next не використовує лічильник циклу. Цикли For Each..Next виконуються стільки разів, скільки є елементів в певній групі, таких як колекція об'єктів або масив (які будуть розглядатися пізніше). Простіше кажучи, цикл For Each..Next виконується один раз для кожного елемента в групі.

Синтаксис For Each...Next:

For Each [Елемнт] In [Група елементів]
	[Тіло циклу]
Next [Елемнт]
[Елемнт] - змінна, яка використовується для ітерації по всіх елементах в певній групі [Група елементів]Group - це об'єкт колекції або масив значень [Тіло циклу] - один, кілька або жодного оператора VBA, які будуть виконуватись при проведені перебору елементів.

Цикл For Each..Next завжди виконується стільки разів, скільки є елементів в певній групі.

Приклади застосування

Приклад 1:

Виведемо на усіх Аркушах робочої книги в комірку "A1" його назву

Sub example1 ()  
	Dim SteetsElement As Worksheet  
		For Each SteetsElement In ThisWorkbook.Worksheets  
			SteetsElement.Range("A1").Value = SteetsElement.Name  
		Next SteetsElement  
End Sub 

Вихід з циклу

Якщо вам необхідно вийти з циклу до моменту, як буде досягнута умова завершення циклу, скористайтеся командою "Exit For" в зв'язці з умою IF.

Приклади застосування

Приклад 1:

Вийдемо з циклу до моменту досягнення умови завершення, в даному циклі вихід буде здійснений за умови, коли змінна лічильник буде дорівнює 3

Sub example1 ()
	Dim i as Integer
		For i = 0 To 5
			If (i = 3) Then Exit For
		Next i
		MsgBox i
End Sub 

Відповідь: 3 так як останнє значення лічильника i=3 при завершенні циклу


Пропущення частини циклу

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

Приклади застосування

Приклад 1:

Пропустимо одну ітерацію (коли j = 3)

Sub example1 ()
	Dim j As Integer
		For i = 0 To 5
	b:
			If (j = 3) Then GoTo a:
			j = i
		Next i
	a:
		j = 4
		GoTo b:
		MsgBox ( "Значення j =" & j)
End Sub 

Як ви думаєте, який результат видасть програма? 3? 5? Ну ... насправді, жоден з варіантів не вірний. Цикл буде виконуватися нескінченно, поки пам'ять комп'ютера, не переповниться.

Однак можливість пропустити крок циклу без наслідків існує. Ви можете збільшити значення лічильника на 1 (або інше значення), що призведе до пропуску операцій, які перебувають між цими значеннями.

Приклад 2:

Sub example1 ()
		For i = 0 To 5
			i = i + 1
			MsgBox i
		Next i
End Sub 

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


view1267like0dislike0 avatard_l4w clock 2016-04-21 22:48

Коментарі:



Для даної статті відсутні коментарі

Про нас

"Programmers World" розроблено з метою полегшення в освоєнні навичок програмування, та поширення матеріалів з сфери ІТ Українською мовою.

Кожен бажаючий може безкоштовно користуватися ресурсами сайту, щоб:

- Вивчати теоретичні аспекти мов програмування

- Переглядати практичне застосування теорії при виконанні різних міні проектів з відкритим кодом

- Розміщати свої завдання на форумі для допомоги в їх реалізації, або готового коду який може бути корисний іншим користувачам

- Спілкуватись з іншими користувачами та обмінюватись досвідом

Сайт функціонує на безопланій основі та ентузіазмі розробника, якщо Ви бажаєте долучитись до розвитку даного проекту то можете пожертвувати кошти на рахунки розміщені в блоці "Допомога сайту".

Сайт

Зареєстровані користувачі можуть скористатися системою діалогів, в профілі користувача, для отримання потрібної інформації. Написати!

Також Ви можете використати форми відправки Зауважень та Пропозицій.


Електронна пошта

Ви можете звертатись на нашу поштову скриньку site.programmersworld@gmail.com

www.000webhost.com