Korzystamy z cookies, więcej informacji »
Dodano: 16.05.2010 16:23 | brak komentarzy

Lekcja 16 - Instrukcje warunkowe

 


Instrukcje warunkowe

Instrukcje warunkowe i pętle logiczne w Visual Basicu dają nam do ręki potężne narzędzie do sterowania przepływem programu. Omawiając poszczególne instrukcje na podstawie przykładów chciałbym gorąco zachęcić do testowania w początkowej fazie programowania pętli i instrukcji logicznych w tzw. Oknie Immediate (Ctr + G).


Rys. 1

If...Then

Instrukcji warunkowej IF używamy wtedy, gdy chcemy wykonać jedną lub więcej instrukcji warunkowo. IF może występować pojedynczo lub też może być pogrupowane w blok instrukcji.
Sub test_if_then () Licznik = 3 If licznik < 10 Then licznik = licznik + 1 'jeżeli warunek jest spełniony, wykonywana jest 'pojedyncza instrukcja If licznik < 10 Then licznik = licznik + 1 End If End Sub

Oba przykłady są równoznaczne.


Rys. 2 Wynik działania funkcji test_if_then w oknie immediate


Rys. 3 Zmieniliśmy wartość licznika z 1 na 11. Wynikiem działania jest zwrócenie w oknie immediate liczby 11. Dzieje się tak dlatego, że warunek: licznik < 10 nie jest spełniony, a więc nie jest wykonywane wyrażenie licznik = licznik + 1

If...Then...Else

Instrukcji warunkowej If...Then...Else używamy, gdy chcemy zdefiniować kilka bloków wyrażeń, z których tylko jedno wyrażenie zostanie wykonane.
If warunek1 Then [wyrażenie-1] [ElseIf warunek2 Then [wyrażenie-2]] ... [Else [wyrażenie -n]] End If

Visual Basic testuje warunek-1. Jeżeli ten warunek zwraca FAŁSZ, Visual Basic przechodzi do sprawdzenia warunku-2, i tak dalej, aż zwróci PRAWDA
If Index = 0 Then ObjLayer.color = acRed ElseIf Index = 1 Then ObjLayer.color = acGreen ElseIf Index = 2 Then ObjLayer.color = acYellow Else ObjLayer.color = acWhite End If End Sub


Rys. 4 Testowanie instrukcji warunkowej if...then...else w oknie immediate

Select Case

Instrukcja warunkowa Select Case jest instrukcją alternatywną do If ... Then ... Else, która posiada te same możliwości sterowania kodem programu. Różnica na korzyść instrukcji Select Case jest bardzo widoczna, gdy mamy do czynienia z kilkunastoma możliwościami. Mówiąc w skrócie, kod jest bardziej "czytelny".

Instrukcja Select Case przetwarza Test i porównuje wartość z każdym kolejnym wyrażeniem Case. Jeżeli są zgodne, wykonywany jest blok instrukcji powiązany z danym wyrażeniem Case.
Select Case Test [Case warunek1 [blok wyrażeń-1]] [Case warunek2 [blok wyrażeń-2]] [Case Else [blok wyrażeń-n]] End Select

Przykład wykorzystania Select Case w procedurze sprawdzającej, z jakiego zakresu jest podana liczba:
Sub select_case() Dim Number Number = 11 'inicjalizacja zmiennej. Select Case Number 'ewaluacja zmiennej number. Case 1 To 5 'liczba między 1 a 5. Debug.Print "Pomiedzy 1 and 5" Case 6, 7, 8 'liczba między 6 a 8. Debug.Print "Pomiedzy 6 and 8" Case 9 To 10 '9 lub 10. Debug.Print "Wieksza niz 8" Case Else 'inne wartosci. Debug.Print "nie z pomiedzy 1 a 10" End Select End Sub


Rys. 5 Testowanie instrukcji warunkowej select case w oknie immediate

Number = 3 -> Pomiędzy 1 a 5

Number = 7 -> Pomiędzy 6 a 8

Number = 9 -> Większa niż 8

Number = 11 -> Nie z pomiędzy 1 a 10

While...Wend Statement Example

Instrukcja logiczna While...Wend jest wykorzystywana do wykonywania zestawu instrukcji tak długo, jak długo wartość logiczna test zwraca PRAWDA. Poniższy przykład podnosi wartość licznika o jeden. Wyrażenia w pętli są wykonywane tak długo, jak długo licznik < 20.
Sub test_while_wend () Dim Counter Counter = 0 ' Initialize variable. While Counter &lt; 20 ' Test value of Counter. Counter = Counter + 1 ' Increment Counter. Wend ' End While loop when Counter &gt; 19. Debug.Print Counter ' Prints 20 in the Immediate window. End Sub


Rys. 6 Testowanie instrukcji warunkowej While...wend w oknie immediate

Licznik mamy ustawiony na 0. Uruchamiamy naszą procedurę klikając ikonę


Rys. 7

Instrukcje wewnątrz pętli (counter = counter + 1) są przetwarzane tak długo, jak długo prawdziwy jest warunek counter < 20.

Gdy licznik (counter) przyjmie wartość 20, pętla zostanie przerwana. Wyjście z pętli powoduje przetwarzanie linii kodu znajdujących się za linią WEND, tzn. wyświetlenie w oknie immediate wartości zmiennej counter.

Zmienna ta ma wartość 20 (musi mieć tyle, ponieważ gdyby miała mniej, nie opuściła by pętli While). Aby zobaczyć, co dzieje się wewnątrz funkcji While, przenosimy linijkę Debug.Print Counter przed linijkę Wend.
Sub test_while_wend() Dim Counter Counter = 0 'ustawiamy licznik While Counter &lt; 20 'test wartosci licznika. Counter = Counter + 1 'zwiekszamy licznik. Debug.Print Counter 'Wyswietla wartość licznika 'w oknie Immediate. Wend 'Koniec pętli gdy licznik &gt; 19 End Sub


Rys. 8 Widok okna immediate po zmianie miejsca umieszczenia linii odpowiedzialnej za wyświetlanie wartości zmiennej counter w oknie immediate

Na końcu linii Debug.Print Counter umieściłem średnik. Nie spełnia on żadnego zadania w procedurze test_while_wend2, a powoduje jedynie wyświetlenie wartości licznika w jednej linii.

For...Next

Pętla For ... Next jest wykorzystywana wtedy, kiedy znana jest liczba wymaganych iteracji.

W poniższym przykładzie instrukcje w pętli są przetwarzane 6 razy. Podczas kolejnych przebiegów pętli dodawany jest kolejny znak do zmiennej Mystring, po czym jej wartość jest wyświetlana w oknie immediate.
Sub test_for_next1() Dim Chars, MyString For Chars = 0 To 5 'Ustawiamy 6 powtórzeń. MyString = MyString &amp; Chars 'dodajemy znak. Debug.Print MyString 'wyswietlenie w oknie immediate Next Chars 'zwiekszenie licznika End Sub


Rys. 9 Pojedyncza pętla for ... next

W poniższym przykładzie instrukcje w pętli For Words są umieszczone w kolejnej pętli for, tzw. "Pętla w pętli". W pierwszej pętli tworzony jest wyraz, a w drugiej z tego wyrazu tworzone jest zdanie.
Sub test_for_next2() Dim Words, Chars, MyString For Words = 5 To 1 Step -1 'ustawienie 5 powtorzen. For Chars = 0 To 4 'ustawienie 5 powtorzen. MyString = MyString &amp; Chars 'dodajemy znak. Next Chars 'zwiekszenie licznika chars MyString = MyString &amp; " " 'Append a space. Debug.Print MyString 'wyswietlenie w oknie immediate Next Words 'zwiekszenie licznika words End Sub


Rys. 10 Podwójna pętla for ... next

Pętla For Each jest wykorzystywana, gdy nie jest znana liczba powtórzeń. Pętla jest wykonywana tak długo, jak długo Test logiczny ma wartość PRAWDA. Klasycznym przykładem pętli for next jest procedura wyświetlająca nazwy wszystkich warstw występujących w rysunku.


Rys. 11 Testowanie instrukcji warunkowej For Each...Next w oknie immediate

 

Dodaj komentarz
Żeby móc dodawać komentarze musisz być zalogowany.
Komentarze
Brak komentarzy.
Newsletter
Prosto na email będziesz otrzymywać między innymi
  • oferty pracy
  • zniżki na książki
  • najnowsze publikacje
AutoCAD cz. I

AutoCAD - kurs dla początkujących

 

Pierwszy z kursów przeznaczony jest dla osób rozpoczynających pracę w środowisku AutoCAD.
Omówiona została filozofia pracy z programem AutoCAD, wygląd głównego okna aplikacji oraz dopasowanie programu do własnych potrzeb.

Kolejne podrozdziały poświęcone są zagadnieniom rysowania i modyfikowania obiektów (linie, multilinie, okrąg, prostokąt wielobok, splajn). Zostały również omówione zasady pracy z warstwami, blokami oraz wymiarowanie. Ostatnie rozdziały kursu podstawowego omawiają zasady drukowania.