Rozkaz If, If Else, If ElseIfIfIf jest najprostszą instrukcją wyboru. Dokonuje ona sprawdzenia podanego warunku i jeżeli jest on prawdziwy (ma wartość TRUE) wykonywany jest podany blok rozkazów. W przypadku gdy warunek jest fałszywy blok ten jest omijany.Składnia instrukcji If: If Warunek Then Blok instrukcji VB wykonywany gdy Warunek jest prawdziwy End If Uproszczona składnia instrukcji If: If Warunek Then Instrukcja1 VB [: Instrukcja2 VB [: ... [: InstrukcjaN VB]...]] Uproszczoną wersję instrukcji If można użyć, gdy ma być wykonany tylko jeden rozkaz (lub kilka krótkich rozkazów oddzielonych od siebie dwukropkami), a nie cały blok rozkazów. Nawiasy [] oznaczają, że wyrażenia te są opcjonalne, tzn., że wymagany jest tylko jeden rokaz za Then, a pozostałe mogą lecz nie muszą występować. Jeżeli sprawdzany warunek jest prawdziwy wykonywany jest blok instrukcji pomiędzy Then i End If a dla wersji uproszczonej od Then do końca instrukcji (niekoniecznie linii). Następnie program przechodzi do wykonywania kolejnych rozkazów znajdujących się za End If (lub końcem instrukcji w wersji uproszczonej). Gdy sprawdzany warunek daje wynik FALSE program przechodzi bezpośrednio do instrukcji znajdujących się za End If (lub końcem instrukcji w wersji uproszczonej). Wtedy blok instrukcji pomiędzy Then i End If nie jest wykonywany. Przykład użycia instrukcji If: If (intZysk>1200) Then intPodatek=20 intWiadomosc=MsgBox("Musisz zapłacić większy podatek") End If Zapis w postaci uproszczonej: If (intZysk>1200) Then intPodatek=20 : intWiadomosc=MsgBox("Musisz zapłacić większy podatek") (Zmienne, typy zmiennych, operatory porównania i funkcja MsgBox() zostały opisane w innych częściach kursu.) Instrukcja If sprawdza czy zmienna typu Integer intZysk ma wartość większą niż 1200. Jeżeli tak to warunek (intZysk>1200) daje wynik TRUE i wykonywane są instrukcje pomiędzy Then i End If. (Zmiennej intPodatek nadawana jest wartość 20 i wyświetlane jest okno komunikatu). Jeżeli zmienna intZysk ma wartość mniejszą lub równą 1200 warunek da wartość FALSE i zostanie wykonana instrukcja następna po End If. Zapisywanie warunków w nawiasach nie jest konieczne, jednak poprawia czytelność zapisu, szczególnie, jeżeli sprawdzany warunek jest rozbudowany. Zapis uproszczony jest przydatany przy konieczności wykonania małej liczby krótkich rozkazów, jednak dla zachowania przejrzystości programu polecamy stosowanie pełnej wersji zapisu. na górę strony... If...ElseInstrukcja If wykonuje część programu tylko w przypadku, gdy sprawdzanny warunek ma wartość TRUE. Nie wykonuje go jednak w przypadku, gdy ma on wartość FALSE. Rozbudowaną wersją instrukcji If jest If ...Else. W przypadku gdy sprawdzany warunek ma wartość TRUE wykonuje ona blok rozkazów zawarty między Then i Else, gdy zaś warunek ma wartość FALSE wykonuje blok rozkazów zawarty między Else i End If. Może ona więc "reagować" zarówno jeżeli warunek jest spełniony jak i gdy nie jest spełniony.Instrukcja If...Else nazywana jest wyrażeniem wzajemnie wykluczającym się, ponieważ może zostać wykonany tylko jeden z zawartych w nim bloków rozkazów. Składnia instrukcji If...Else: If Warunek Then Blok instrukcji VB wykonywany gdy Warunek jest prawdziwy Else Blok instrukcji VB wykonywany gdy Warunek nie jest prawdziwy End If Uproszczona składnia instrukcji If..Else: If Warunek Then Instrukcja1a VB [: Instrukcja2a VB [: ... [: InstrukcjaNa VB]...]] Else Instrukcja1b VB [: Instrukcja2b VB [: ... [: InstrukcjaMb VB]...]] Uproszczonę wersję instrukcji If...Else można użyć, gdy ma być wykonany tylko jeden rozkaz (lub kilka krótkich rozkazów, oddzielonych od siebie dwukropkami), a nie cały blok rozkazów. Nawiasy [] oznaczają, że wyrażenia te są opcjonalne, tzn., że wymagany jest tylko jeden rokaz pomiędzy Then i Else i jeden za Else, a pozostałe mogą lecz nie muszą występować. Po sprawdzeniu warunku i wykonaniu odpowiedniego bloku rozkazów instrukcja If...Else przechodzi do następnego rozkazu za End If. Przykład użycia instrukcji If...Else: If (intZysk>1200) Then intPodatek=20 intWiadomosc=MsgBox("Musisz zapłacić większy podatek") Else intPodatek=7 intWiadomosc=MsgBox("Możesz zapłacić mniejszy podatek"") End If Zapis w formie uproszczonej: If (intZysk>1200) Then intPodatek=20 : intWiadomosc=MsgBox("Musisz zapłacić większy podatek") Else intPodatek=7 : intWiadomosc=MsgBox("Możesz zapłacić mniejszy podatek") (Zmienne, typy zmiennych, operatory porównania i funkcja MsgBox() zostały opisane w innych częściach kursu.) Instrukcja If sprawdza czy zmienna typu Integer intZysk ma wartość większą niż 1200. Jeżeli tak to warunek (intZysk>1200) daje wynik TRUE i wykonywane są instrukcje pomiędzy Then i Else (zmiennej intPodatek przypisywana jest wartość 20 i wyświetlane jest okno komunikatu). Jeżeli zmienna intZysk ma wartość mniejszą lub równą 1200 warunek da wartość FALSE i zostanie wykonany blok instrukcja zawarty między Else i End If (zmiennej intPodatek przypisywana jest wartość 7 i wyświetlane jest okno komunikatu). Zapisywanie warunków w nawiasach nie jest konieczne, jednak poprawia czytelność zapisu, szczególnie, jeżeli sprawdzany warunek jest rozbudowany. Zapis uproszczony jest przydatany przy konieczności wykonania małej liczby krótkich rozkazów, jednak dla zachowania przejrzystości programu polecamy stosowanie pełnej wersji zapisu. na górę strony... If...ElseIfMożliwość zagnieżdżania instrukcji If..Else (umieszczania jednej instrukcji If wewnątrz bloku rozkazów innej instrukcji If) wymusiło powstanie konstrukcji If...ElseIf. Jest to rozbudowana wersja instrukcji If ...Else. Pozwala ona na kolejne sprawdzanie wielu warunków.Składnia instrukcji If...ElseIf: If Warunek1 Then Blok instrukcji VB wykonywany gdy Warunek1 jest prawdziwy ElseIf Warunek2 Then Blok instrukcji VB wykonywany gdy Warunek1 nie jest prawdziwy a Warunek2 jest prawdziwy [ElseIf Warunek3 Then Blok instrukcji VB wykonywany gdy Warunek1 i Warunek2 nie są prawdziwe a Warunek3 jest prawdziwy ... [ElseIf WarunekN Then Blok instrukcji VB wykonywany gdy Warunki od 1 do (N-1) nie są prawdziwe a WarunekN jest prawdziwy ]...] [Else Blok instrukcji VB wykonywany gdy żaden z Warunków od 1 do N nie jest prawdziwy ] End If Nawiasy [] oznaczają, że wyrażenia te są opcjonalne i nie muszą występować. Instrukcja If...ElseIf sprawdza pierwszy warunek. Gdy jest prawdziwy wykonywany jest odpowiedni dla niego blok rozkazów, po czym program przechodzi do następnego rozkazu za End If. Gdy pierwszy warunek nie jest prawdziwy sprawdzany jest drugi i jeżeli jest prawdziwy to wykonywany jest dla niego opdowiedni blok rozkazów. Gdy nie jest prawdziwy sprawdzane są kolejno następne warunki. Gdy któryś z nich jest prawdziwy wykonywany jest odpowiedni dla niego blok rozkazów, po czym działanie instrukcji If..ElseIf jest przerywane i wykonywany jest rozkaz następny za End If. Jeżeli żaden z warunków nie jest prawdziwy wykonywany jest blok rozkazów pomiędzy Else i End If (jeżeli taki istnieje - jest to blok opcjonalny) lub następny rozkaz za End If (jeżeli nie ma bloku Else). Jeżeli jeden z warunków jest spełniony to wykonywany jest odpowiedni dla niego blok instrukcji, po czym działanie instrukcji If...EndIf jest przerywane. Oznacza to, że gdy w instrukcji będzie kilka warunków prawdziwych to uwzględniony będzie ten, który zostanie najwcześniej sprawdzony (będzie wyżej w instrukcji) i zostanie wykonany odpowiedni dla niego blok instrukcji, a pozostałe warunki nie będą już sprawdzane i inne bloki instrukcji nie zostaną wykonane. Ponieważ instrukcja If...ElseIf może mieć dosyć złożoną kostrukcję można stosować prostszą (w niektórych przypadkach) instrukcję Select Case. Instrukcja Select Case potrafi sprawdzać wartość tylko jednej zmiennej, ale można ją zagnieżdżać lub łączyć z If aby sprawdzać wszystkie żadane warunki. Przykład użycia instrukcji If...ElseIf: If (intZysk>1200) Then intPodatek=20 intWiadomosc=MsgBox("Musisz zapłacić olbrzymi podatek") ElseIf (intZysk>700) Then intPodatek=16 intWiadomosc=MsgBox("Musisz zapłacić 16% podatku") ElseIf (intZysk>400) Then intPodatek=7 intWiadomosc=MsgBox("Musisz zapłacić 7% podatku") ElseIf (intZysk>200) Then intPodatek=4 intWiadomosc=MsgBox("Masz mało ale i tak płać!") ElseIf (blnPracuje=False) Then intWiadomosc=MsgBox("Chyba jesteś na czyimś utrzymaniu...") Else intPodatek=0 intWiadomosc=MsgBox("Z czego Ty żyjesz?") End If (Zmienne, typy zmiennych, operatory porównania i funkcja MsgBox() zostały opisane w innych częściach kursu.) W pierwszym warunku sprawdzana jest wartość zmiennej intZysk. Jeżeli jest ona większa od 1200 to zmiennej intPodatek przypisywana jest wartość 7 i wyświetlane okno z komunikatem. Jeżeli jest mniejsza lub równa 1200 to sprawdzany jest kolejny warunek (intZysk>700). Jeżeli wartość intZysk jest większa od 700, czyli znajduje się w przedziale (700,1200>, to zmiennej intPodatek przypisywana jest wartość 16 i wyświetlane jest okno z komunikatem. Jeżeli jest mniejsza lub równa 700 sprawdzany jest kolejny warunek. Jeżeli po sprawdzeniu kolejnych warunków okaże się że wartość zmiennej intZysk jest mniejsza lub równa 200, sprawdzana jest wartość zmiennej blnPracuje. Jeżeli jej wartością jest False (zmienne typu Boolean mogą przyjmować wartości False lub True, jeżeli więc zmienna blnPracuje ma wartość False to podany warunek blnPracuje=False jest prawdziwy i przyjmuje wartość TRUE, wartość zmiennej blnPracuje zostaje nie zmieniona i dalej jest False) to wyświetlany jest komunikat i instrukcja kończy działanie. Gdy jednak żaden z warunków instrukcji nie został spełniony (intZysk jest mniejsze lub równe 200 i blnPracuje ma wartoś True) to wykonywany jest blok rozkazów za Else. Zmiennej intPodatek przypisywana jest wartość 0 i wyświetlane jest okno komunikatu. Jeżeli zmienna intZysk ma wartość większą niż 700 i mniejszą lub równą 1200 (drugi warunek jest prawdziwy) to zostanie wykonany drugi blok rozkazów i instrukcja zakończy działanie, chociaż inne warunki również są prawdziwe (jeżeli wartość intZysk jest większa niż 700 to jest również większa niż 400 -warunek3 i większa niż 200 - warunek4). Instrukcja If...ElseIf wykonuje jednak tylko jeden blok instrukcji odpowiedni dla pierwszego prawdziwego warunku (w tym przypadku jest to warunek 2 - intZysk>700) pozostałe są omijane. Instrukcja If..ElseIf może sprawdzać warunki dla różnych zmiennych (warunek5 dla zmiennej blnPracuje, pozostałe dla zmiennej intZysk) podczas gdy prostsza w konstrukcji instrukcja Select Case potrafi sprawdzać wartość tylko jednej zmiennej. Można jednak uzyskać odpowiednią konstrukcję przez połączenie instrukcji Select Case i If...ElseIf. na górę strony... TypeOfJako Warunek rozkazu If można użyć wyrażenia typu:TypeOf NazwaObiektu Is TypObiektu. NazwaObiektu jest dowolną referencją obiektu, TypObiektu jest dowolnym poprawnym typem obiektu. Wyrażenie to zwraca wartość True jeżeli NazwaObiektu jest typu określonego przez TypObiektu, w przeciwnym razie zostanie zwrócone False. Przykład użycia wyrażenia TypeOf: Dim varKomunikat If TypeOf MojaKontrolka Is CommandButton Then varKomunikat=MsgBox("CommandButton") ElseIf TypeOf MojaKontrolka Is CheckBox Then varKomunikat=MsgBox("CheckBox") ElseIf TypeOf MojaKontrolka Is TextBox Then varKomunikat=MsgBox("TextBox") End If (Zmienne, typy zmiennych i funkcja MsgBox() zostały opisane w innych częściach kursu.) na górę strony... |