Copyright © 2011, Janusz Bonarowski 1
Ćwiczenie VB2.1_If – instrukcja warunkowa (c.d)
Omawiając instrukcję warunkową powiedzieliśmy, że po słowie kluczowym If musi pojawić się „warunek”. Warunek ten jest wyrażeniem logicznym, które zwraca True (Prawdę) lub False (Fałsz). Wyrażenie to może być proste, np.
If txtWpis.Text = "Czesc" Then
ale może też być bardziej złożone. Jako przykład rozważmy logowanie do systemu, podczas którego musimy sprawdzać poprawność nie jednej lecz dwóch wartości. Niech formularz logowania ma postać:
Rys. 1. Formularz logowania
Załóżmy, że poprawna Nazwa brzmi „abc”, a poprawne Hasło: „123”. Wtedy aplikacja, w lblLogowania, drukuje komunikat: „Logowanie poprawne”
Aplikacja może być oprogramowana w sposób bardziej lub mniej przyjazny. Sposób mniej przyjazny jest łatwiejszy do zrealizowania i polega na tym, że jeśli albo nazwa albo hasło nie pasują do podanego wzorca to w etykiecie lblLosowanie pojawi się komunikat „Błąd logowa- nia”.
Sposób bardziej przyjazny powinien podpowiadać, w którym polu popełniliśmy błąd. Komu- nikaty o błędzie mogą być następujące: Błędna nazwa i hasło”, „Błędna nazwa”, Błędne hasło”.
W wyrażeniach logicznych możemy stosować operatory logiczne AND i OR łączące proste wyrażenia logiczne. Np.:
wyrażenie logiczne 1: Nazwa = ”abc”
zwraca Prawdę, gdy w polu txtNazwa wpisano tekst ”abc”
zwraca Fałsz, gdy w tym polu znajduje się inny tekst (także brak tekstu).
wyrażenie logiczne 2: Hasło = ”123”
zwraca Prawdę gdy w polu txtHasło wpisano tekst „123”
zwraca Fałsz, gdy w tym polu znajduje się inny tekst (także brak tekstu).
Copyright © 2011, Janusz Bonarowski 2 Oba te proste wyrażenia logiczne możemy połączyć operatorem AND, czyli napisać
wyrażenie logiczne:
Nazwa = ”abc” AND Hasło = ”123”
Takie wyrażenie logiczne także zwraca jedynie albo Prawdę albo Fałsz – zgodnie z tabelką:
Działanie operatora logicznego AND
Wyrażenie1 Wyrażenie2 Wyrażenie1 AND Wyrażenie2
Prawda Prawda Prawda
Prawda Fałsz Fałsz
Fałsz Prawda Fałsz
Fałsz Fałsz Fałsz
Tylko jeśli oba składowe wyrażenia logiczne zwracają Prawdę ich połączenie operatorem AND zwraca Prawdę. W każdym innym przypadku otrzymujemy Fałsz.
Działanie operatora logicznego OR
Wyrażenie1 Wyrażenie2 Wyrażenie1 OR Wyrażenie2
Prawda Prawda Prawda
Prawda Fałsz Prawda
Fałsz Prawda Prawda
Fałsz Fałsz Fałsz
Jeśli jedno ze składowych wyrażeń logicznych zwracają Prawdę ich połączenie operatorem OR zwraca Prawdę. Fałsz otrzymujemy jedynie wtedy, kiedy oba składniki wyrażenia zawierają Fałsz.
Rys. 2. Schemat blokowy mniej przyjaznej realizacji algorytmu z operatorem AND
Kod odpowiadający algorytmowi z rys. 2 przedstawia Listing 1:
If txtNazwa.Text = "abc" And txtHaslo.Text = "123" Then lblLogowanie.Text = "Logowanie poprawne"
Else
lblLogowanie.Text = "Błąd logowania"
End If
Copyright © 2011, Janusz Bonarowski 3 Schemat blokowy bardziej przyjaznego algorytmu z operatorem AND w instrukcji
warunkowej.
Rys. 3. Schemat blokowy bardziej przyjaznego algorytmu
Listing2 realizujący kod ze schematu na rys. 3:
If txtNazwa.Text = "abc" And txtHaslo.Text = "123" Then lblLogowanie.Text = "Logowanie poprawne"
ElseIf txtNazwa.Text <> "abc" And txtHaslo.Text = "123" Then lblLogowanie.Text = "Błędna nazwa"
ElseIf txtNazwa.Text = "abc" And txtHaslo.Text <> "123" Then lblLogowanie.Text = "Błędne hasło"
Else
lblLogowanie.Text = "Błędna nazwa i hasło"
End If
Copyright © 2011, Janusz Bonarowski 4 Algorytm bardziej przyjazny można utworzyć bez posługiwania się operatorem AND, ale trzeba wtedy umieszczać wewnątrz jednej instrukcji warunkowej druga instrukcję
warunkową.
Schemat blokowy takiego rozwiązania pokazuje rys. 4, a odpowiadający mu kod Listing3
Rys. 4. Schemat blokowy przyjaznego algorytmu bez operatora AND
Listing2
If txtNazwa.Text = "abc" Then If txtHaslo.Text = "123" Then
lblLogowanie.Text = "Logowanie poprawne"
Else
lblLogowanie.Text = "Błędne hasło"
End If Else
If txtHaslo.Text = "123" Then
lblLogowanie.Text = "Błędna nazwa"
Else
lblLogowanie.Text = "Błędna nazwa i hasło"
End If End If