Instrukcje cykliczne (pętle) Pętle pozwalają na powtarzanie fragmentu kodu programu. PĘTLE LOGICZNE WHILE...END WHILE While (warunek)...... End While Pętla będzie się wykonywała dopóki warunek jest spełniony. Wartość warunku => False zakończy działanie pętli. Realizacja pętli jest następująca: 1. Sprawdzenie czy spełniony jest warunek a) TAK wykonywane są instrukcje wewnętrzne i powrót do pkt.1; b) NIE - koniec działania; Zauważmy, że jeżeli warunek jest fałszem od początku, to pętla nie wykona się ani raz.
Private Sub Pętla() Dim indeks As Integer = 20 Dim licznik As Integer = 0... While indeks > 10 indeks = indeks - 1 licznik = licznik + 1 End While... MsgBox(licznik) W powyższym przykładzie wyświetlona zostanie wartość 10 (tyle razy wykonała się pętla).
Możliwe jest wyjście z pętli, przed zakończeniem wszystkich cykli, poprzez użycie instrukcji EXIT WHILE. Private Sub Pętla() Dim indeks As Integer = 20 Dim licznik As Integer = 0... While indeks > 10 indeks = indeks - 1 licznik = licznik + 1... If licznik = 5 Then Exit While... MsgBox "Licznik wynosi" + str(licznik) End While Dla wartości zmiennej licznik = 5 pętla zakończy działanie. Po wywołaniu instrukcji Exit While nie wykona się już następne polecenie w pętli, czyli wyświetlenie komunikatu.
DO...LOOP Mamy kilka wersji tej pętli. Do While (warunek)...... Loop Do Ta postać DO działa identycznie jak pętla While....... Loop While (warunek) Warunek jest sprawdzany na końcu, po wykonaniu instrukcji pętli, czyli pętla zawsze wykona się minimum jeden raz.
Private Sub Pętla() Dim indeks As Integer = 10 Dim licznik As Integer = 0... Do indeks -= 1 licznik += 1 Loop While indeks > 19... MsgBox(licznik) Pętla wykona się 1 raz i zakończy działanie (bo indeks jest= 9 i nie spełnia warunku).
Do Until (warunek)...... Loop Private Sub Pętla() Ta pętla wykonuje się do momentu, aż warunek będzie spełniony. Warunek jest sprawdzany przed wykonaniem cyklu instrukcji pętli. Może zdarzyć się tak, że instrukcje pętli nie wykonają się ani razu. Dim indeks As Integer = 1 Dim licznik As Integer = 0 Do Until indeks = 10 licznik += 1 indeks += 1 Loop MsgBox(licznik) W tym przypadku zmienna licznik osiągnie wartość 9 (indeks kolejno wartości 2,3,4,5,6,7,8,9,10).
Do...... Loop Until (warunek) Ten rodzaj pętli wykonuje się do momentu, aż warunek będzie spełniony, z tym, że warunek jest sprawdzany po wykonaniu cyklu pętli. Private Sub Pętla() Dim indeks As Integer = 1 Dim licznik As Integer = 0... Do licznik += 1 indeks += 2 Loop Until indeks > 10 MsgBox(licznik) Tym razem zmienna licznik osiągnie wartość 5 (indeks:3,5,7,9 i 11). Wyjście natychmiastowe z pętli umożliwia instrukcja EXIT DO. Pętle While określamy skrótowo: "Wykonuj dopóki spełniony jest warunek". Pętle Until określamy skrótowo: "Wykonuj aż zostanie spełniony warunek".
PĘTLE ITERACYJNE FOR...NEXT For licznik = wartość_początkowa To Wartość_końcowa step krok...... Next licznik Licznik - zmienna kontrolna pętli, typu porządkowego lub liczbowego rzeczywistego Wartość początkowa - wartość, od której zaczyna się działanie pętli Wartość końcowa - wartość, na której kończy się działanie pętli Krok - określa o ile będzie zmieniana wartość licznik przed kolejnym cyklem. For licznik = wartość_początkowa To Wartość_końcowa...... Next licznik Krok uzależniony od typu zmiennej kontrolnej (licznik typu porządkowego)
Dim i as Integer... For i = 1 To 10 MsgBox(i) Next i Wynikiem działania kodu będzie wyświetlenie kolejno wartości 1,2,3,4,5,6,7,8,9,10. For i = 1 To 10 Step 2 MsgBox(i) Next i Wynikiem działania kodu będzie wyświetlenie kolejno wartości 1,3,5,7,9. For i = 10 To 1 Step -2 MsgBox(i) Next i For i = 10 To 1 MsgBox(i) Next i Wyświetlone zostaną kolejno liczby 10,8,6,4,2. Instrukcja wewnątrz pętli nie wykona się ani jeden raz.
Dim a as single 'Dopuszczalny jest typ rzeczywisty dla zmiennej kontrolnej pętli... For a = 1 To 2 step 0.1 MsgBox(a) Next a Wynikiem działania kodu będzie wyświetlenie kolejno wartości 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9 i 2.0 Aby wyjść z pętli (przed osiągnięciem wartości końcowej) używamy instrukcji EXIT FOR.
For Each...Next Zasada działania jest taka sama jak For...Next lecz używany dla elementów w kolekcji. Private Sub Wyłączprzyciski() Dim prz As System.Windows.Forms.Button For Each prz In Me.Controls prz.enabled = False Next Efektem działania będzie ustawienie właściwości Enabled wszystkich przycisków na False.