instrukcje warunkowe
Transkrypt
instrukcje warunkowe
Instrukcje warunkowe Instrukcje warunkowe pozwalają na wykonanie instrukcji (lub bloku instrukcji) w zależności od tego, czy był spełniony lub nie, pewien warunek. Instrukcja IF (warunkowa) If warunek Then instrukcja_Na_Tak Else Instrukcja_Na_Nie Koniecznie całość instrukcji w jednej linii Warunek decyduje która instrukcja zostanie wykonana. Blok If (warunkowy) – ver. 1 If warunek Then ... Blok_Instrukcji_Na_Tak ... End If Jeżeli spełniony jest warunek to wykona się blok instrukcji. Private Sub Warunki() ‘......... Dim a As Integer = 1 Dim b As Integer = 3 ‘......... If (a + b) = 3 Then MsgBox("suma = 3") End If ‘......... End Sub Wyświetli się komunikat, gdyż warunek jest prawdziwy. Blok If (warunkowy) – ver. 2 If warunek Then ... Blok_Instrukcji_Na_Tak ... Else ... Blok_Instrukcji_Na_Nie ... End If Jeśli jest spełniony warunek to wykona się Blok_Instrukcji_Na_Tak, w przeciwnym wypadku Blok_Instrukcji_Na_Nie Private Sub warunki() Dim Okey As Boolean = False ‘......... If Okey Then MsgBox("Prawda") Else MsgBox("Fałsz") End If ‘......... End Sub W wyniku działania instrukcji wyświetli się komunikat "Fałsz" (bo warunek nie jest spełniony) Blok If (warunkowy) – ver. 3 If warunek1 Then Blok_Instrukcji_Na_Tak .... ElseIf warunek2 Then Blok_Instrukcji_Na_Tak_Dla_Warunku_2 ..... ElseIf warunek3 Then Blok_Instrukcji_Na_Tak_Dla_Warunku_3 ...... Else Blok_Instrukcji End If Powyższej konstrukcji używamy jeśli chcemy sprawdzić zagnieżdzone warunki. Jeśli warunek1 jest nieprawdziwy, to sprawdzany jest warunek2 itd. Jeżeli żaden z nich nie jest spełniony, to wykona się blok_instrukcji po ELSE. Private Sub Zagnieżdżony() Dim t As String = "Kot" ....... If t = "Pies" Then MsgBox("t to Pies") ElseIf t = "Mysz" Then MsgBox("t to Mysz") ElseIf t = "Kot" Then MsgBox("t to Kot") Else MsgBox("Nieznany zwierzak") End If ...... End Sub Jak wiadomo zmienna t="Kot" więc wyświetli się komunikat "t to Kot". Instrukcja wyboru Instrukcja wyboru Select...Case Select Case zmienna Case lista_wartości_1 Blok_instrukcji_1 Case lista_wartości_2 Blok_instrukcji_2 ..... 'Ewentualne kolejne Case ... .... Case Else Blok_instrukcji End Select Zasada działania Case jest następująca: sprawdzane jest czy aktualna wartość zmiennej jest równa jednej z podanych wartości, po słowie kluczowym Case. Czyli jeżeli zmienna = jednej z wartości wymienionych w "Lista_Wartości_1" to wykona się "Blok_Instrukcji_1", a jeśli w "Lista_Wartości_2" to wykona się "Blok_Instrukcji_2" itd., a jeżeli aktualna wartość zmiennej nie zostanie znaleziona w żadnej z list, to wykona się "Blok_Instrukcji" (po Case Else). Private Sub Wybierz() Dim t As String = "kot" ....... Select Case t Case "Pies" MsgBox("t to Pies") Case "Kot" MsgBox("t to Kot") Case Else MsgBox("t to ani pies ani kot") End Select ......... End Sub W wyniku działania CASE wykona się instrukcja MsgBox("t to Kot") Private Sub Wybierz() Dim t As String = "Mysz" ...... Select Case t Case "Pies", "Kot" MsgBox("t to kot lub pies") Case "Mysz" MsgBox("t to Mysz") Case Else MsgBox("t jest nieznanym zwierzakiem") End Select . . . .. . . End Sub W wyniku działania CASE wykona się instrukcja MsgBox("t to Mysz") Case może wykorzystywać w listach wartości także przedziały Private Sub Wybierz() Dim liczba As Integer = 5 ....... Select Case liczba Case 1, 2 To 4 MsgBox("liczba to 1 lub 2 lub 3 lub 4") Case Is >= 4 MsgBox("liczba jest większa lub równa 4") Case 1 To 6 MsgBox("liczba to 5") End Select ........ End Sub Aktualna wartość zmiennej "LICZBA", spełnia zarówno warunek "Case Is >= 4" jak i "Case 1 To 6". W tej sytuacji brana pod uwagę jest pierwsza lista w kolejności zamieszczenia. Ponieważ Case Is >= 4 jest pierwsza, to efektem działania CASE będzie komunikat "liczba jest większa lub równa 4", po czym nastąpi zakończenie, czyli End Select. Oznacza to że wykonywany jest tylko jeden blok instrukcji (dla pierwszej znalezionej wartości).