03 Rozgalezianie programu cwiczenia przygotowujace

background image

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 typu

Boolean

, 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.

background image

Wynik działania aplikacji mógł być podobny do przedstawionego poniżej:

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

wyrażeń

Wartości logiczne wyników operacji

L

P

Not P

L And P

(L AndAlso P)

L Or P

(L OrElse P)

L Xor P

Fałsz

(ang. False)

Fałsz

Prawda

Fałsz

Fałsz

Fałsz

Fałsz

Prawda

(ang. True)

Fałsz

Fałsz

Prawda

Prawda

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ą wersje

AndAlso

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-

Rysunek 12: Projekt_029 w czasie działania.

background image

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.

background image

Konsola może przedstawiać obraz, jak na rysunku poniżej:

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.

Rysunek 13: Wyniki działania operatorów logicznych.

background image

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 źró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:

7

4

−

4
3

3

16

2

2

3

4

2
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

background image

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 źró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

background image

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.

Łań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 źródłowego przez edytor.

background image

Ć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ć:

background image

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ądź

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.

background image

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
Console.WriteLine("Jesteś dzieckiem.")
Else
If intWiek >= 13 And intWiek < 18 Then
Console.WriteLine("Należysz do
młodzieży.")
Else
If intWiek >= 18 Then
Console.WriteLine("Jesteś dorosły(a).")
Else
Console.WriteLine("Niepoprawne dane.")
End If
End If
End If

If intWiek >= 0 And intWiek < 13 Then
Console.WriteLine("Jesteś dzieckiem.")
ElseIf intWiek >= 13 And intWiek < 18 Then
Console.WriteLine("Należysz do młodzie-
ży.")

ElseIf intWiek >= 18 Then
Console.WriteLine("Jesteś dorosły(a).")

Else
Console.WriteLine("Niepoprawne dane.")

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ę.

Grupa

Przedział BMI

BMI =

Masa

Wzrost

2

Masa w kilogramach, wzrost w metrach

Chorobliwie chudzi

poniżej 20 kg/m

2

Zdrowi

poniżej 25 kg/m

2

Otyli

poniżej 30 kg/m

2

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ż

background image

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-

background image

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:

ax

2

bxc=0

Wyróżnik równania kwadratowego:

=

b

2

4ac

Występują trzy przypadki zależne od wartości

:

> 0, równanie ma dwa rozwiązania rzeczywiste o wartościach:

x

1

=

b

2a

x

2

=

b

2a

= 0, równanie ma jedno rozwiązanie o wartości:

x

1,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ę skoku

GoTo

(Idź 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

źró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

.

background image

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

WprowadźNastępną:

'Napis zakończony dwukropkiem to etykieta

Console.WriteLine("Wprowadź liczbę nr {0}, wprowadzenie 0 kończy sumowanie.", _

intLicznik)

'Znak podkreślenia _ pozwala kontynuować kod źró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 WprowadźNastępną

'Skok do wiersza z etykietą WprowadźNastę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 źró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
PROGRAM CWICZEN Z CHEMII ORGANICZNEJ BIOLOGIA 2010 2011
Program ćwiczeń z Makroekonomii II, I rok MSU, makro
Program Cwiczenia Eop
!Program ćwiczeń laboratoryjnych 2012id 602
Program ćwiczeń laboratoryjnych
program cwiczenia 2008 2009 lekarski[1]
program-cwiczen-studia-dzienne
Specjalne ćwiczenia przygotowawcze stosowane przy nauce pływania kraul na grzbiecie
JAVA 03 konstrukcja programu
BYTP0 PB1 Program cwiczen
Program ćwiczeń
IMiR-program cwiczen, MiBM, Nauczka, 2 semstr, elektrotechnika
program-cwiczen-studia-zaoczne

więcej podobnych podstron