03 Rozgalezianie programu cwiczenia przygotowujace


III. Konstrukcje języka Visual Basic 2010 pozwalające
na rozgałęzianie programu
III.1. Konstrukcja warunkowa
W poprzednich ćwiczeniach wykorzystane zostały zmienne typów łańcuchowych i liczbowych,
a realizowane zadania pozwalały na liniową strukturę programu.  Liniowość oznacza w tym kontek-
ście fakt, że program, po uruchomieniu aplikacji, wykonywany jest instrukcja po instrukcji. Doświad-
czenie uczy, że działania zazwyczaj zachowują liniowość, aż do momentu gdy trzeba podjąć decyzję
o wyborze jednej z możliwych dróg (sposobów rozwiązania problemu).
Wprowadzenie konstrukcji warunkowej wymaga wcześniejszego zapoznania się z użyciem
zmiennych typu logicznego (Boolean) oraz wyrażeń, których wynik jest takiego właśnie typu.
Typ Boolean, zmienne i wyrażenia typu Boolean
Typ Boolean zdefiniowany jest w przestrzeni nazw System. Zmienne tego typu mogÄ… przecho-
wywać wyłącznie jedną z dwóch wartości: True (Prawda) albo False (Fałsz). Jeśli programista nie za-
deklaruje wartości początkowej zmiennej typuBoolean, to posiada ona domyślnie wartość False.
Kolejne ćwiczenie obrazuje powyższe twierdzenia.
Ćwiczenie 29
Utworzyć projekt wykorzystujący zmienną typu Boolean.
1. Utwórz Projekt_029 aplikacji konsolowej.
2. Zadeklaruj w procedurze Main zmienną WartośćLogiczna typu Boolean.
Przykład.
Dim WartośćLogiczna As Boolean
3. Zaprogramuj:
ć% wyświetlenie w wierszu konsoli informacji o wartości zmiennej WartośćLogiczna,
ć% przypisanie zmiennej WartośćLogiczna wartości True,
ć% ponowne wyświetlenie w wierszu konsoli informacji o wartości zmiennej Warto-
śćLogiczna.
4. Skompiluj projekt i uruchom aplikacjÄ™.
5. Zapoznaj się z zawartością konsoli i zakończ działanie aplikacji.
Wynik działania aplikacji mógł być podobny do przedstawionego poniżej:
Rysunek 12: Projekt_029 w czasie działania.
Ze zmiennych typu logicznego można tworzyć wyrażenia przy użyciu operatorów logicznych (są
to jednocześnie słowa kluczowe języka):
Not  wynikiem działania operatora jest wartość logiczna przeciwna do tej jaką posiada
wyrażenie po prawej stronie operatora.
And, AndAlso  wynikiem działania operatora jest iloczyn logiczny wartości wyrażeń sto-
jÄ…cych po lewej i po prawej stronie operatora.
Or, OrElse  wynikiem działania operatora jest suma logiczna wartości wyrażeń stoją-
cych po lewej i po prawej stronie operatora.
Xor  wynikiem działania operatora jest różnica symetryczna (alternatywa rozłączna)
wartości wyrażeń stojących po lewej i po prawej stronie operatora.
Poniżej przedstawiono tabelę wartości logicznych przedstawiających działanie operatorów lo-
gicznych:
Wartości logiczne
Wartości logiczne wyników operacji
wyrażeń
L And P L Or P
L P Not P L Xor P
(L AndAlso P) (L OrElse P)
Fałsz
Fałsz Prawda Fałsz Fałsz Fałsz
(ang. False)
Prawda
Fałsz Fałsz Fałsz Prawda Prawda
(ang. True)
Prawda Fałsz Prawda Fałsz Prawda Prawda
Prawda Prawda Fałsz Prawda Prawda Fałsz
Ponieważ wartości wyrażeń L oraz P mogą być wyznaczane na podstawie czasochłonnych obli-
czeń występują wersjeAndAlso oraz OrElse operatorów logicznych, odpowiednio, And oraz Or.
Dają one taki sam wynik. Jednak w przypadku operatora AndAlso, jeżeli wyrażenie stojące po lewej
stronie ma wartość Fałsz, to wartość wyrażenia po prawej stronie nie jest obliczana, gdyż nie może
wpłynąć na wynik. Podobnie w przypadku operatora OrElse, jeżeli wyrażenie stojące po lewej stro-
nie ma wartość Prawda, to wartość wyrażenia po prawej stornie nie jest obliczana, gdyż nie może
wpłynąć na wynik. Stosowanie tych  skróconych operatorów może przynieść skrócenie czasu pracy
aplikacji. Można je jednak stosować tylko wtedy, gdy proces obliczania wyrażenia stojącego po pra-
wej stronie operatora nie wpływa w inny sposób na działanie aplikacji. Kolejne ćwiczenie przedstawia
działanie operatorów Not, And i Or.
Ćwiczenie 30
Zapoznać się z działaniem operatorów logicznych.
1. Dodaj przed końcem procedury Main pusty wiersz i zadeklaruj w nim zmienną Warto-
śćLogiczna2 typu Boolean.
2. Zaprogramuj:
ć% przypisanie zmiennej WartośćLogiczna2 wyniku działania operatora Not na zmien-
ną WartośćLogiczna,
Przykład.
WartośćLogiczna2 = Not WartośćLogiczna
ć% wyświetlenie w wierszu konsoli informacji o wartości zmiennej WartośćLogiczna2.
3. Dodaj przed końcem procedury Main pusty wiersz i zadeklaruj w nim zmienną IloczynLo-
giczny typu Boolean.
4. Zaprogramuj:
ć% przypisanie zmiennej IloczynLogiczny wyniku działania operatora And na zmienne
WartośćLogiczna i WartośćLogiczna2,
Przykład.
IloczynLogiczny = WartośćLogiczna And WartośćLogiczna2
ć% wyświetlenie w wierszu konsoli informacji o wartości zmiennej IloczynLogiczny.
5. Dodaj przed końcem procedury Main pusty wiersz i zadeklaruj w nim zmienną SumaLo-
giczna typu Boolean.
6. Zaprogramuj:
ć% przypisanie zmiennej SumaLogiczna wyniku działania operatora Or na zmienne
WartośćLogiczna i WartośćLogiczna2,
Przykład.
SumaLogiczna = WartośćLogiczna Or WartośćLogiczna2
ć% wyświetlenie w wierszu konsoli informacji o wartości zmiennej SumaLogiczna.
7. Skompiluj projekt i uruchom aplikacjÄ™.
8. Zapoznaj się z zawartością konsoli i zakończ działanie aplikacji.
Konsola może przedstawiać obraz, jak na rysunku poniżej:
Rysunek 13: Wyniki działania operatorów logicznych.
Wartości logiczne oblicza się często jako wynik działania operatorów porównania: =, <>, <, >,
<=, >=. Wartości logiczne będące wynikiem działania tych operatorów przedstawia poniższa tabela.
Wartości operandów
L 12
P 13
Wyrażenie porównania Wartość logiczna wyrażenia porównania
L = P False
L <> P True
L < P True
L > P False
L <= P True
L >= P False
Porównywane wyrażenia mogą być wyrażeniami arytmetycznymi.
Przykład.
(intLiczba + 6) >= 13
Jeśli zmienna intLiczba ma wartość większą niż 7 lub równą tej liczbie, to wyrażenie porówna-
nia daje wartość True. W przypadku, gdy wyrażenie zawiera operatory arytmetyczne, logiczne, tek -
stowe i porównania, to wykonywane są one w następującej kolejności (operatory objęte nawiasami
posiadają taki sam priorytet i jeśli występują w jednym wyrażeniu, to wykonywane są w kolejności
występowania w wyrażeniu): ^, (*, /), \, Mod, (+, -), &, operatory porównania, Not, (And, AndAlso),
(Or, OrElse), Xor.
Dodatkowo należy zapamiętać, że znaki + i  mogą wystąpić jako znak liczby, w takim przypad-
ku ich priorytet jest niższy jedynie od operatora potęgowania. Jest to niezwykle istotna uwaga 
w wyniku takiej kolejności wykonywania operatorów wyrażenie -2 ^ 4 daje w wyniku -16. Dzieje się
tak dlatego, że zmiana znaku następuje dopiero po obliczeniu potęgi liczby 2.
Aby zmienić kolejność wykonywania operatorów należy użyć nawiasów okrągłych.
Przykład.
(-2) ^ 4
W przypadku zilustrowanym przykładem, najpierw zostanie wykonana operacja zmiany znaku
liczby 2, a dopiero wtedy nastąpi potęgowanie. Wynik to 16, co jest poprawne. Nawiasy można wyko-
rzystywać nawet w przypadku, gdy kolejność działań wynikająca z priorytetu operatorów i z logiki za-
dania jest identyczna. Nie wpływa to w żaden sposób na wydłużenie czasu obliczeń. Jeśli nawiasy
mogą poprawić czytelność kodu zródłowego, to wydaje się, że ich zastosowanie jest wskazane.
W kolejnym ćwiczeniu wykorzystane zostaną operatory arytmetyczne i porównania do sprawdzenia
wartości logicznej wyrażenia:
3
4
-74ƒÄ…śą- źą ƒÄ…16
3 2
Ä…
śą22-3źą4 3
Ćwiczenie 31
Sprawdzić jaką wartość logiczną ma wyrażenie porównania przedstawione przed
nagłówkiem ćwiczenia.
1. Dodaj pusty wiersz przed końcem procedury Main modułu Module1 projektu Projekt_029
i umieść w nim kursor tekstowy.
2. Zadeklaruj zmienną blnPrawdziwośćWyrażenia typu Boolean.
3. Zaprogramuj obliczenie wartości blnPrawdziwośćWyrażenia, postaraj się użyć najmniej-
szej z możliwych liczby nawiasów.
4. Zaprogramuj wyświetlenie wartości zmiennej blnPrawdziwośćWyrażenia.
5. Skompiluj projekt i uruchom działanie aplikacji.
6. Zapoznaj się z zawartością konsoli i zakończ działanie aplikacji.
Sprawdzenie otrzymanej wartości pozostawia się ćwiczącym jako samodzielne zadanie.
Najprostsza postać konstrukcji warunkowej
Aplikacja Projekt_029 wyświetla wprawdzie wartość wyrażenia warunkowego, ale na tym koń-
czy się jej  logiczne działanie. Załóżmy, że aplikacja może być wykorzystana tylko przez osobę
o określonym imieniu.  Grzeczne działanie aplikacji polegać będzie na pobraniu od użytkownika
imienia i jeśli jest to imię niezgodne z wymaganym, aplikacja zakończy działanie, a w przeciwnym
wypadku wyświetli komunikat powitalny. Posłuży do tego celu najprostsza postać konstrukcji warun-
kowej pozwalająca wykonać jedną instrukcję, której wykonanie zależy od pewnego warunku:
If WyrażenieLogiczne Then Instrukcja
Logika tej konstrukcji jest następująca. Instrukcja zostanie wykonana tylko wtedy, gdy Wyraże-
nieLogiczne ma wartość True.
Wykonanie aplikacji kończy się wraz z zakończeniem procedury Main. Język Visual Basic 2010
zawiera słowo kluczowe Exit. Słowo to, pozwala zakończyć działanie pewnej grupy instrukcji, zwa-
nej blokiem. Aby wskazać, o który blok chodzi jego typ umieszcza się po słowie Exit. Przykładowo,
instrukcja Exit Sub powoduje przerwanie działania procedury. Kolejne ćwiczenie pokazuje w jaki
sposób zaprojektować aplikację spełniającą opisane wcześniej warunki.
Ćwiczenie 32
Zaprojektować aplikację, która sprawdza czy użytkownik ma prawo do jej użytkowania.
1. Utwórz nowy Projekt_032 aplikacji konsolowej.
2. Zadeklaruj w procedurze Main stałą strDobreImię typu String o wartości początkowej bę-
dącej łańcuchem znaków składających się na Twoje imię.
Przykład.
Const strDobreImiÄ™ As String = "Krzysztof"
3. Zadeklaruj zmiennÄ… strImiÄ™ typu String.
4. Zaprogramuj pobranie od użytkownika jego imienia i zapamiętanie go w zmiennej strImię
(patrz: ćwiczenie 28).
5. Zaprogramuj użycie konstrukcji warunkowej do przerwania pracy procedury Main w przy-
padku, gdy wartość zmiennej strImię nie jest równa wartości stałej strDobreImię.
Przykład.
If strImiÄ™ <> strDobreImiÄ™ Then Exit Sub
6. Zaprogramuj wyświetlenie w konsoli powitania użytkownika o imieniu strImię.
7. Skompiluj projekt i uruchom aplikację kilkakrotnie, podając różne imiona, w tym przynaj-
mniej raz to, które jest zapisane w stałej strDobreImię.
Przyjrzyjmy się przykładowemu kodowi zródłowemu procedury Main:
Sub Main()
Const strDobreImiÄ™ As String = "Krzysztof"
Dim strImiÄ™ As String
Console.Write("Podaj swoje imiÄ™: ")
strImiÄ™ = Console.ReadLine()
If strImiÄ™ <> strDobreImiÄ™ Then Exit Sub
Console.WriteLine("Witaj {0}", strImiÄ™)
End Sub
Procedura Main zamknięta jest parą Sub & End Sub. Instrukcje występujące pomiędzy tymi
wierszami to blok (ciało) procedury. Po uruchomieniu aplikacji startuje wykonanie procedury Main.
Tworzona jest stała strDobreImię oraz zmienna strImię. W konsoli pojawia się tekst zachęty. Program
pobiera tekst wprowadzony przez użytkownika i zapamiętuje go w zmiennej strImię. Program działa
liniowo. W tym miejscu programista chce uzależnić dalsze działanie programu od tego, czy użytkow-
nik podał dobre imię (zgodne z wymaganym). Jeśli imię nie jest zgodne, procedura Main powinna
zakończyć działanie. Efekt taki pozwala uzyskać konstrukcja warunkowa. Warunek logiczny zbudo-
wany jest z operatora porównania i dwóch elementów (zmiennej i stałej), które są porównywane.
Aańcuchy tekstowe, są równe wtedy, gdy mają jednakową długość i posiadają na każdej pozycji jed-
nakowe znaki. Jeśli strImię ma wartość "Zenon", a strDobreImię  "Krzysztof", to ponieważ zastoso-
wano operator porównania  <> wartością wyrażenia logicznego jest True, gdyż imiona  nie są rów-
ne . Skoro wyrażenie logiczne ma wartość True, to zgodnie z zasadą zostanie wykonana instrukcja
występująca po słowie Then, czyli Exit Sub. Wykonanie tej instrukcji kończy działanie procedury
Main, a tym samym programu. Ostatnia instrukcja procedury nie zostanie wykonana.
Jeśli imiona będą  równe , to wyrażenie logiczne ma wartość False, gdyż  nieprawdą jest, jako-
by identyczne imiona nie były identyczne . W takim przypadku instrukcja Exit Sub nie zostanie wy-
konana. Program przejdzie do wykonania kolejnej instrukcji  wyświetlającej powitanie.
Użycie najprostszej postaci konstrukcji warunkowej ogranicza się do wykonania jednej tylko in-
strukcji zależnej od warunku logicznego.
Pełne wykorzystanie możliwości konstrukcji warunkowej
W poprzednim ćwiczeniu aplikacja kończyła działanie nie informując o tym użytkownika. Kon-
strukcja warunkowa posiada składnię pozwalającą naprawić ten błąd. Aby uzależnić od jednego wa-
runku wykonanie ciągu wielu instrukcji można się posłużyć następującą wersją:
If Warunek Then
Instrukcja_1
Kolejne_instrukcje
End If
Instrukcja_1 i Kolejne_instrukcje zostaną wykonane tylko wtedy, gdy Warunek ma wartość True.
Edytor tekstowy wspomaga programistÄ™ przy tworzeniu tego typu konstrukcji warunkowej. Wystarczy
wpisać słowo If oraz wyrażenie logiczne warunku i nacisnąć klawisz Enter. Środowisko automatycz-
nie doda słowo Then, pusty wiersz, w którym będzie można umieścić instrukcje, oraz słowa End If
kończące blok konstrukcji warunkowej. Kolejne ćwiczenie obrazuje wykorzystanie opisanej postaci
konstrukcji warunkowej i automatyczne uzupełnianie kodu zródłowego przez edytor.
Ćwiczenie 33
Zapoznać się ze wspomagającym pracę programisty działaniem edytora tworząc
konstrukcję warunkową sprawdzającą, czy wiek użytkownika spełnia wymagania
stawiane przez aplikacjÄ™.
1. Dodaj pusty wiersz przed końcem procedury Main.
2. Zadeklaruj stałą intMinimalnyWiek typu Integer (typ całkowity języka Visual Basic 2010,
odpowiednik typu Int32 zdefiniowanego w przestrzeni nazw System) o wartości 18.
3. Zadeklaruj zmienną intWiekUżytkownika typu Integer.
4. Zaprogramuj pobranie od użytkownika liczby całkowitej określającej jego wiek i zapamię-
tanie jej w zmiennej intWiekUżytkownika (pamiętaj o użyciu funkcji konwersji Cint). Wy-
korzystaj schemat z ćwiczenia 28.
5. Rozpocznij tworzenie konstrukcji warunkowej, która sprawdzi, czy wiek podany przez
użytkownika jest mniejszy niż minimalne wymagania, w tym celu:
ć% wpisz w kolejnym wierszu słowo If rozpoczynające konstrukcję warunkową i do-
pisz spacjÄ™,
ć% wpisz warunek sprawdzający czy zmienna intWiekUżytkownika ma wartość mniej-
szą niż stała intMinimalnyWiek (użyj operatora porównania  < ) i naciśnij Enter.
Zauważ, że edytor dokończył budowanie konstrukcji zgodnie z wymaganiami
składni języka. Kursor tekstowy znajduje się wewnątrz bloku instrukcji konstrukcji
warunkowej.
6. Zaprogramuj wewnÄ…trz konstrukcji warunkowej:
ć% wyświetlenie informacji o tym, że aplikacja zostanie zamknięta, ze względu na to,
że jedno z wymagań aplikacji nie zostało spełnione,
ć% zakończenie działania procedury Main (wykorzystaj Exit Sub).
7. Dodaj pusty wiersz po słowach End If kończących konstrukcję warunkową i zaprogramuj
wyświetlenie komunikatu o tym, że użytkownik przeszedł procedurę weryfikacyjną.
8. Skompiluj projekt i uruchom kilkakrotnie aplikację podając różne warianty danych (imiona
i wiek użytkownika).
Przykłady obejmowały takie zadania, w których wykonanie jednej, lub ciągu instrukcji zależy od
wartości warunku logicznego. Podkreślmy, spełnienie warunku (wartość True wyrażenia logicznego)
powoduje, że pewien ciąg instrukcji zostanie wykonany.
Zdarzają się sytuacje, gdy w przypadku spełnienia warunku należy przeprowadzić jeden rodzaj
działania, a w przypadku, gdy warunek nie jest spełniony, inny rodzaj działania. W takim przypadku
składania konstrukcji warunkowej przewiduje następującą postać:
If Warunek Then
InstrukcjeNaTrue
Else
InstrukcjeNaFalse
End If
Występuje tutaj dodatkowy blok instrukcji rozpoczynający się od słowa Else (Inaczej; w prze-
ciwnym przypadku). InstrukcjeNaTrue zostaną wykonane tylko wtedy, gdy warunek jest spełniony. In-
strukcjeNaFalse  tylko wtedy, gdy warunek nie jest spełniony (ma wartość False). Kolejne ćwiczenie
obrazuje użycie tego typu konstrukcji warunkowej do uzyskania informacji na temat parzystości, bądz
nieparzystości, liczby całkowitej podanej przez użytkownika.
Ćwiczenie 34
Użyć konstrukcji warunkowej ze słowem Else do wyświetlenia odpowiedniego
komunikatu w przypadku gdy podana przez użytkownika liczba jest (nie jest) parzysta.
Jako warunku użyj porównanie, reszty z dzielenia całkowitego liczby podanej prze
użytkownika przez 2, z liczbą zero  liczby parzyste dzielą się bez reszty, nieparzyste
dajÄ… resztÄ™ niezerowÄ….
1. Utwórz Projekt_034 aplikacji konsolowej.
2. Zadeklaruj w procedurze Main zmienną intLiczbaUżytkownika typu Integer.
3. Zaprogramuj pobieranie liczby od użytkownika i zapamiętanie jej wartości w zmiennej in-
tLiczbaUżytkownika (pamiętaj o użyciu funkcji CInt).
4. Utwórz konstrukcję warunkową:
ć% wyrażenie logiczne będące warunkiem powinno być porównaniem reszty z dziele-
nia całkowitego przez 2 wartości zmiennej intLiczbaUżytkownika z liczbą zero,
Przykład.
intLiczbaUżytkownika Mod 2 = 0
'Nawiasy nie są konieczne "Mod" ma wyższy priorytet niż "="
ć% zaprogramuj:
ª% w części pomiÄ™dzy If, a Else, wyÅ›wietlenie w konsoli komunikatu o tym, że licz-
ba jest parzysta,
ª% w części pomiÄ™dzy Else, a End If, wyÅ›wietlenie w konsoli komunikatu o tym, że
liczba nie jest parzysta.
5. Skompiluj projekt i uruchom aplikację kilka razy podając różne liczby całkowite.
Zdarzają się również takie zadania, w których liczba możliwych dróg postępowania jest więk-
sza. Załóżmy, że pewien program powinien dzielić osoby pod względem wieku na: dzieci (poniżej 13
roku życia), młodzież (poniżej 18 roku życia), a reszta to dorośli.
Zadanie takie można rozwiązać przynajmniej dwoma sposobami, z których każdy ilustruje jedno
zagadnienie zwiÄ…zane z konstrukcjÄ… warunkowÄ…:
Zagnieżdżanie konstrukcji warunkowej Konstrukcja warunkowa ze słowem ElseIf
If intWiek >= 0 And intWiek < 13 Then If intWiek >= 0 And intWiek < 13 Then
Console.WriteLine("JesteÅ› dzieckiem.") Console.WriteLine("JesteÅ› dzieckiem.")
Else ElseIf intWiek >= 13 And intWiek < 18 Then
If intWiek >= 13 And intWiek < 18 Then Console.WriteLine("Należysz do młodzie-
ży.")
Console.WriteLine("Należysz do
młodzieży.")
Else ElseIf intWiek >= 18 Then
Console.WriteLine("Jesteś dorosły(a).")
If intWiek >= 18 Then
Console.WriteLine("Jesteś dorosły(a).")
Else
Else
Console.WriteLine("Niepoprawne dane.") Console.WriteLine("Niepoprawne dane.")
End If
End If
End If End If
Puste miejsca w kodzie po prawej stronie nie są wymagane i zostały wprowadzone jedynie
w celu ułatwienia porównania obu struktur. Konstrukcje warunkowe przedstawione w tabeli są równo-
ważne. Na korzyść konstrukcji ze słowem kluczowym ElseIf (połączenie Else i następującego po
nim If) przemawia zwężenie szerokości zapisu, co poprawia czytelność kodu. Dodatkowo, puste
miejsca pokazują, że kod po prawej stronie jest krótszy  nie zawiera dwóch zakończeń End If,
a warunki występują w tym samym wierszu, w którym znajduje się połączone słowo kluczowe El-
seIf.
Ćwiczenie 35
Zastosować wybrany typ konstrukcji warunkowej do określenia przynależności
użytkownika do jednej z grup: Chorobliwie chudy, Zdrowy, Otyły, Chorobliwie otyły.
Wykorzystać przedstawioną poniżej tabelę.
Przedział BMI
Masa
BMI =
Grupa
Wzrost2
Masa w kilogramach, wzrost w metrach
Chorobliwie chudzi poniżej 20 kg/m2
Zdrowi poniżej 25 kg/m2
Otyli poniżej 30 kg/m2
Chorobliwie otyli pozostali
III.2. Konstrukcja wyboru
Konstrukcja warunkowa If pozwala na wykonanie pewnej sekwencji instrukcji, gdy spełniony
jest określony warunek logiczny. Istnieje w języku Visual Basic 2010 druga konstrukcja pozwalająca
wybrać jedną z sekwencji instrukcji na podstawie obliczonej wartości wyrażenia. Przy tym obliczona
wartość może być dowolnego typu podstawowego (liczbowego, znakowego, logicznego). Ponieważ
znaczenie konstrukcji wyboru dla wykonywanego programu jest takie samo jak konstrukcji warunko-
wej, to zostanie ona przedstawiona od razu w pełnej postaci:
Select Case Wyrażenie
Case Lista_1_PotencjalnychWartościWyrażenia
Instrukcje_1
Case Lista_2_PotencjalnychWartościWyrażenia
Instrukcje_2
'Inne przypadki
Case Else
Instrukcje
End Select
Listy potencjalnych wartości wyrażenia Wyrażenie mogą zawierać:
" wartości rozdzielone przecinkami, np. 1, 13, 15
" przedziały wartości określone dwoma liczbami połączonymi słowem kluczowym To, np. 1
To 3,
" wartość graniczna z operatorem porównania i słowem Is (Jest), np. Is > 12.
Przykład.
Select Case intWiekUżytkownika
Case 0 To 12
'Instrukcje dla  dzieci
Case 13 To 17
'Instrukcje dla  młodzieży
Case Is >= 18
'Instrukcje dla  dorosłych
Case Else
'Instrukcje dla niepoprawnych danych
End Select
Wykonanie konstrukcji przedstawionej w przykładzie polegać będzie na obliczeniu wartości wy-
rażenia inWiekUżytkownika (w tym przypadku obliczenie ograniczy się do pobrania wartości zmien-
nej). Dalej nastąpi sprawdzenie, czy obliczona wartość wyrażenia zawiera się w przedziale <0, 12> i
jeśli tak, to zostaną wykonane  Instrukcje dla dzieci . Jeśli sprawdzenie da wynik negatywny, nastąpi
kolejne sprawdzenie  czy wartość wyrażenia należy do przedziału <13, 17> i jeśli tak, to zostaną
wykonane  Instrukcje dla młodzieży . Jeśli również drugie sprawdzenie da wynik negatywny, nastąpi
trzecie sprawdzenie. Warunek  Is >= 18 należy rozumieć dosłownie, to znaczy  Jest większy niż, lub
równy 18 . Jeśli również to sprawdzenie nie da pozytywnego rezultatu, wtedy zostaną wykonane  In-
strukcje dla niepoprawnych danych występujące po słowie Else. Można zauważyć, że słowo Else,
stanowi swoisty  zawór bezpieczeństwa  jeśli zawiodą wszystkie sprawdzenia, czyli nie zachodzi
żaden z przypadków przewidzianych przez programistę, wtedy wykonywane są instrukcje bloku Case
Else & End Select. Warto zawsze zastanowić się, czy użycie tego bloku, choćby w celu poinfor-
mowania użytkownika, że wprowadzone wcześniej dane i uzyskane wyniki obliczeń prowadzą
do wartości, dla których nie przewidziano odpowiedniej sekwencji instrukcji, nie będzie wskazane.
Kolejne ćwiczenie pozwala na samodzielne rozważenie tego problemu.
Ćwiczenie 36
Wykonać dwie wersje: Projekt_036_If oraz Projekt_036_SelectCase aplikacji
konsolowej, której zadaniem jest rozwiązanie równania kwadratowego i wyświetlenie
rozwiązań. Grupa wzorów umieszczonych poniżej może być pomocna w przygotowaniu
rozwiązań.
Równanie kwadratowe:
ax2ƒÄ…bxƒÄ…c=0
Wyróżnik równania kwadratowego:
­Ä…=b2-4ac
Występują trzy przypadki zależne od wartości ":
" > 0, równanie ma dwa rozwiązania rzeczywiste o wartościach:
ćą
x1=-b- ­Ä…
2a
ćą
x2=-bƒÄ… ­Ä…
2a
" = 0, równanie ma jedno rozwiązanie o wartości:
x1,2=-b
2a
" < 0, równanie nie posiada rozwiązań rzeczywistych.
III.3. Etykiety i instrukcja skoku
Oprócz opisanych wyżej sposobów zmiany przepływu sterowania w aplikacji istnieje metoda
oparta o wykorzystanie etykiet (ang. label) oraz instrukcję skokuGoTo (Idz do). Użycie tej metody
ograniczone jest do bloku procedury. W pierwszych wersjach języka Basic instrukcja skoku pozwala-
ła realizować schemat programowania proceduralnego. W wielu współczesnych pozycjach literatury
traktujących o języku Visual Basic 2010 metoda jest pomijana, a jeżeli jej opis występuje, to opatrzo -
ny jest komentarzem sugerującym, że jej użycie może prowadzić do utraty panowania nad kodem
zródłowym, a także do obniżenia jego czytelności. Wydaje się, że w związku z możliwością tworzenia
metod oraz schematem programowania obiektowego wszystkie te uwagi prowadzić będą do coraz
mniejszego znaczenia instrukcji GoTo.
Poniższy przykład obrazuje wykorzystanie instrukcji GoTo oraz etykiet.
Console.WriteLine("Program oblicza sumę liczb wprowadzonych przez użytkownika.")
Dim intLicznik As Integer = 1
Dim dblLiczba, dblSuma As Double
WprowadzNastępną: 'Napis zakończony dwukropkiem to etykieta
Console.WriteLine("Wprowadz liczbę nr {0}, wprowadzenie 0 kończy sumowanie.", _
intLicznik)
'Znak podkreślenia _ pozwala kontynuować kod zródłowy w kolejnym wierszu.
dblLiczba = CDbl(Console.ReadLine)
dblSuma += dblLiczba
If dblLiczba = 0 Then GoTo PokażSumę 'Skok do wiersza z etykietą PokażSumę:
intLicznik += 1
GoTo WprowadzNastępną 'Skok do wiersza z etykietą WprowadzNastępną:
PokażSumę: 'Napis zakończony dwukropkiem to etykieta
intLicznik -= 1
Console.WriteLine("Suma {0} wprowadzonych liczb wynosi {1}", intLicznik, dblSuma)
Większą czcionką wyróżniono etykiety oraz instrukcje skoku. Jest to dobra ilustracja tego, jak
bardzo instrukcja GoTo może zaciemnić obraz kodu zródłowego. Ten sam efekt można uzyskać dużo
mniejszym nakładem pracy, wykorzystując konstrukcje pozwalające na powtarzanie zestawu instruk-
cji. Krotność powtarzania może być z góry określona, lub uwarunkowana pewnym wyrażeniem lo-
gicznym. Zagadnienie to rozwinięte jest w kolejnym rozdziale.


Wyszukiwarka

Podobne podstrony:
04 Petle programowe cwiczenia przygotowujace
zestawy cwiczen przygotowane na podstawie programu Mistrz Klawia 6
zestawy cwiczen przygotowane na podstawie programu Mistrz Klawia 8
zestawy cwiczen przygotowane na podstawie programu Mistrz Klawia 4
zestawy cwiczen przygotowane na podstawie programu Mistrz Klawia 2
zestawy cwiczen przygotowane na podstawie programu Mistrz Klawia 7
zestawy cwiczen przygotowane na podstawie programu Mistrz Klawia 9
zestawy cwiczen przygotowane na podstawie programu Mistrz Klawia test szybkosc
zestawy cwiczen przygotowane na podstawie programu Mistrz Klawia test?zblednosc
zestawy cwiczen przygotowane na podstawie programu Mistrz Klawia 1
zestawy cwiczen przygotowane na podstawie programu Mistrz Klawia 5
Program ćwiczeń laboratoryjnych
program cwiczen z mechaniki budowli 1
Programowanie cwiczenia zjazd VII 18 12 2011
Tematy i program ćwiczeń

więcej podobnych podstron