Professional Documents
Culture Documents
Alchemia programowania
Autor: Jack Purdum
Tumaczenie: Radosaw Wroski,
Magorzata Dbkowska-Kowalik
ISBN: 978-83-246-0292-6
Tytu oryginau: Visual Basic .NET Primer Plus
Stron: 712
Wydawnictwo Helion
ul. Kociuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
SPIS TRECI
SPIS TRECI
O autorze .......................................................................................................................................... 17
Wprowadzenie ................................................................................................................................. 19
Rozdzia 1. Zaczynamy prac w Visual Studio .Net ................................................................. 25
Instalacja Visual Studio .NET ............................................................................................ 26
Kontrola poprawnoci dziaania zainstalowanego Visual Basic .NET ....................... 35
Uruchamianie Visual Studio .NET ............................................................................. 35
Zintegrowane rodowisko programistyczne Visual Basic .NET ............................ 37
Przenoszenie obiektu z przybornika na formularz .................................................. 38
Zmienianie wartoci waciwoci ................................................................................ 39
Uruchamianie pierwszego programu .............................................................................. 39
Konsolidacja a kompilacja ............................................................................................ 39
Inne sposoby uruchomienia programu ..................................................................... 40
Koczenie sesji programowania w Visual Basic .NET .................................................... 40
Podsumowanie .................................................................................................................... 41
Pytania kontrolne ................................................................................................................ 41
Rozdzia 2. Podstawy programowania obiektowego ................................................................ 43
Krtka historia programowania komputerowego ......................................................... 44
Jzyki programowania .................................................................................................. 44
Programowanie strukturalne ...................................................................................... 51
Programowanie obiektowe .......................................................................................... 52
Przykad programu obiektowego ..................................................................................... 56
Okno projektu (Design Window) ............................................................................... 58
Okno waciwoci (Properties Window) ................................................................... 58
Umieszczanie na formularzu innych obiektw ........................................................ 61
Kompilacja pierwszego programu ................................................................................... 63
Uruchamianie programu w Visual Basic .NET ............................................................... 65
SPIS TRECI
SPIS TRECI
10
SPIS TRECI
11
12
SPIS TRECI
13
14
SPIS TRECI
15
16
10
OPERATORY RELACYJNE
I LOGICZNE
W tym rozdziale dowiesz si:
z
z
Co to s operatory relacyjne
i jak je wykorzystywa
Co to s operatory logiczne
i jak ich uywa
z
z
Operatory relacyjne
Operatory relacyjne (relational operators) su do porwnywania wartoci. Tabela 10.1
przedstawia ich zestawienie.
Wszystkie operatory relacyjne s binarne, to znaczy, e (jak przypominamy sobie
z poprzednich rozdziaw) wymagaj dwch argumentw. Oglna skadnia grupy
operatorw relacyjnych wyglda nastpujco:
Argument1 OperatorRelacyjny Argument2
226
Znaczenie
Rwne
<>
Rne
<
Mniejszy od
>
Wikszy od
<=
>=
Napiszemy teraz prosty program, ktry pozwoli przewiczy zarwno skadni If,
jak i operatory relacyjne. Rozpocznijmy nowy projekt i nazwijmy go RelationalOperators (Operatory relacyjne). Dodajmy do jego formularza pola tekstowe i przyciski
pokazane na rysunku 10.1. (Mona wykorzysta program napisany w rozdziale 9.
w celu testowania operatorw arytmetycznych).
227
RYSUNEK 10.1.
Program
do wykonywania
testw relacyjnych
Na rysunku 10.1 widzimy pola tekstowe przeznaczone na oba argumenty: txtArgument1 i txtArgument2, oraz trzecie pole tekstowe suce do pokazania caego
sprawdzanego wyraenia. W polu o nazwie txtExpression wida bdzie cae
Wyraenie1 z przedstawionej przed chwil skadni bloku If-Then-Else. U dou
formularza widocznego na rysunku 10.1 znajduje si pole grupy zawierajce dwa pola
wyboru. Bd one suy do prezentacji wyniku przeprowadzanego testu logicznego.
Kod programu jest bardzo prosty. Pole grupy o nazwie Operator zawiera sze
przyciskw opcji, po jednym dla kadego operatora relacyjnego. Poniej przedstawiony jest kod zwizany z pierwszym przyciskiem opcji:
Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
WhichOne = 1
End Sub
W wyniku kliknicia okrelonego przycisku opcji zmienna WhichOne przyjmuje warto odpowiadajc temu przyciskowi. WhichOne jest zmienn typu Integer zdefiniowan z zasigiem moduowym.
Po wpisaniu argumentw do pl tekstowych i wybraniu operatora relacyjnego uytkownik klika przycisk Test. Peny kod obsugi zdarzenia Click() obiektu btnTest
jest pokazany na listingu 10.1.
LISTING 10.1. Kod obsugi zdarzenia Click() obiektu btnTest
Private Sub btnTest_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles btnTest.Click
ckbTrue.Checked = False
' Rozpoczynamy od ustawienia wartoci False
ckbFalse.Checked = False
228
Kod procedury rozpoczyna si od nadania obu polom wyboru wartoci False. Nastpnie wykorzystywany jest blok Select Case sucy do wybrania waciwego
fragmentu kodu na podstawie wartoci zmiennej WhichOne. W kadym z wariantw
229
wyraenia Select budujemy cig znakw txtExpression poprzez zczenie argumentw z pl txtArgument1 oraz txtArgument2. Pomidzy nimi umieszczana jest
staa tekstowa reprezentujca wybrany operator. Na kocu, za pomoc prostej instrukcji If decydujemy, czy ma by zaznaczone pole wyboru True, czy False. Wszystkie
bloki Case zawieraj kod dziaajcy na tej samej zasadzie.
Przykadowe wykonanie naszego programu widzimy na rysunku 10.2.
RYSUNEK 10.2.
Przykadowe
wykonanie programu
RelationalOperators
Warto zauway, e operatory relacyjne mona wykorzystywa rwnie do porwnywania danych tekstowych. Przykad pokazuje, e wyraenie testowe
"A" > "B"
Operatory logiczne
Operator logiczny (logical operator) suy do porwnywania argumentw typu Boolean i zwraca warto True lub False (wynik typu Boolean). W tabeli 10.2 przedstawiona jest lista operatorw logicznych dostpnych w jzyku Visual Basic .NET.
Jak wida w tabeli 10.2, wszystkie operatory logiczne z wyjtkiem negacji s binarne.
W kolejnym podrozdziale omwimy dokadnie kady z nich.
230
Typ
Znaczenie
And
Binarny
Logiczne i
Or
Binarny
Logiczne lub
Xor
Binarny
Not
Unarny
Logiczna negacja
AndAlso
Binarny
Warunkowe i
OrElse
Binarny
Warunkowe lub
Argument2
Wynik
True
True
True
True
False
False
False
True
False
False
False
False
Zwrmy uwag, e wynik True dla operatora logicznego And uzyskujemy tylko
wtedy, gdy oba argumenty maj warto True. Kada inna kombinacja daje wynik
False. Przyjrzyjmy si nastpujcemu wyraeniu:
Result = 10 > 5 And 100 > 60
Ze wzgldu na to, e 10 jest wiksze od 5, pierwszy test relacyjny daje wynik True.
Rwnie 100 jest wiksze od 60, wic drugi test take daje wynik True. Z tabeli 10.3
dla wartoci True obu argumentw odczytujemy wynik True.
Sprbujmy zmodyfikowa nasze wyraenie, odwracajc drugi operator relacyjny:
Result = 10 > 5 And 100 < 60
Result = True And False ' kolumny 1. i 2. w wierszu 3. tabeli 10.3
Result = False
' wiersz 3., kolumna 3. tabeli 10.3
231
=
=
=
=
=
=
10
10
10
10
10
10
'
'
'
'
'
'
False
True
True
False
True
False
Operator logiczny Or
Operator logicznego lub porwnuje dwa argumenty i zwraca wynik True, jeli ktrykolwiek z nich ma warto True. Poniej przedstawiona jest jego tabela prawdy.
TABELA 10.4. Tabela prawdy operatora Or
Argument1
Argument2
Wynik
True
True
True
True
False
True
False
True
True
False
False
False
Test logiczny Or daje wynik True zawsze wtedy, gdy ktrykolwiek z argumentw ma
warto True. Wynik False uzyskujemy tylko wtedy, gdy oba argumenty maj warto False. Uyjmy tych samych przykadw, co poprzednio, wykonujc na nich
tym razem logiczny test lub:
Result
Result
Result
Result
Result
Result
=
=
=
=
=
=
10
10
10
10
10
10
= 5 Or 100 > 60
>= 5 Or 100 <> 60
<> 5 Or 100 <> 60
> 5 Or 100 <= 60
> 5 Or 100 > 60 Or 20 < 80
> 5 Or 100 < 60 Or 20 < 80
'
'
'
'
'
'
True
True
True
True
True
True
Ze wzgldu na to, e w kadym przykadzie przynajmniej jedno wyraenie jest prawdziwe, w kadym uzyskujemy wynik True. Cennym wiczeniem moe by porwnanie wynikw uzyskanych przy uyciu operatorw And i Or, gdy uatwi to zrozumienie rnicy midzy nimi.
232
Argument2
Wynik
True
True
False
True
False
True
False
True
True
False
False
False
Uyjmy znowu tych samych przykadw, stosujc w nich operator logiczny Xor:
Result
Result
Result
Result
Result
Result
=
=
=
=
=
=
10
10
10
10
10
10
'
'
'
'
'
'
True
False
False
True
True
False
Pierwsze cztery przykady s atwe do zrozumienia, ale ostatnie dwa wymagaj wyjanie. Przyjrzyjmy si pierwszemu z nich:
Result
Result
Result
Result
=
=
=
=
' True
' True
W tabeli 10.5 widzimy, e gdy oba argumenty maj warto True, test Xor daje wynik
False. W ostatnim kroku False Xor True daje wynik True.
Drugie zoone wyraenie jest obliczane w taki sposb:
Result
Result
Result
Result
=
=
=
=
' False
Ostatecznym wynikiem jest warto False, gdy w ostatnim kroku wykonujemy test
na dwch wyraeniach o wartoci True.
233
234
RYSUNEK 10.3.
Ustawianie punktu
przerwania
w procedurze obsugi
zdarzenia Click()
obiektu btnTest
235
podobnie do tego z rysunku 10.5. (Moemy zatrzyma dziaanie debugera, wybierajc z menu polecenie Debug, Stop Debugging lub naciskajc niebieski kwadracik na pasku narzdzi).
RYSUNEK 10.5.
Okno zakadki Locals
dla procedury obsugi
zdarzenia Click()
obiektu btnTest
Na rysunku 10.5 widzimy, e w oknie Locals pokazane s zmienne o zasigu lokalnym. Jest wrd nich zmienna Result majca warto True. Tak wic test logiczny
And przeprowadzony na wartociach 5 i 4 daje wynik True. Dlaczego wynik jest wanie taki? Wartoci 5 i 4 s niezerowe, przez co s widziane jako argumenty o wartoci logicznej True, std wynik testu ma warto typu Boolean True.
Teraz zmienimy definicj zmiennej Result z typu Boolean na Integer:
Dim Result As Integer
Operacja And poziomu bitowego polega na porwnaniu dwch wartoci bit po bicie,
czyli wykonaniu logicznego testu And ich poszczeglnych bitw. Oto binarne reprezentacje argumentw:
5 = 00000101
4 = 00000100
236
RYSUNEK 10.6.
Zmienna Result
przedstawiajca wynik
operacji And wykonanej
na poziomie bitowym
W tym przypadku, ze wzgldu na brak wartoci 1 jednoczenie dla bitw obu liczb
na ktrejkolwiek z pozycji, wynik wynosi 0.
237
Jest to warto 5. Logiczna operacja Or daje wynik True, gdy ktrykolwiek z argumentw ma warto True. Jaki bdzie wynik operacji 16 Or 4?
16 = 00010000
4 = 00000100
------------00010100 = operacja poziomu bitowego Or dla argumentw 16 i 4
Ze wzgldu na to, e Xor zwraca logiczn warto True tylko wtedy, gdy oba bity
rni si, tylko dla pierwszego bitu otrzymujemy wynik True. W systemie dziesitnym jest to liczba 1. Jaki bdzie wynik dla argumentw 16 i 4?
16 = 00010000
4 = 00000100
------------00010100 = operacja poziomu bitowego Xor dla argumentw 16 i 4
Priorytety operatorw
Omwilimy do tej pory operatory arytmetyczne, relacyjne i logiczne dostpne
w jzyku Visual Basic .NET. W skomplikowanych wyraeniach mog si znale ich
wszystkie trzy typy jednoczenie. W jaki sposb Visual Basic .NET okrela kolejno
238
Nazwa
Typ
Potga
Arytmetyczny
Negacja
Arytmetyczny
*, /
Mnoenie, dzielenie
Arytmetyczny
Dzielenie cakowitoliczbowe
Arytmetyczny
Mod
Modulo
Arytmetyczny
+, -
Dodawanie, odejmowanie
Arytmetyczny
&
czenie tekstw
czenie tekstw
Rwno
Relacyjny
<>
Nierwno
Relacyjny
<, >
Mniejszy, wikszy
Relacyjny
>=
Relacyjny
<=
Relacyjny
Like
Porwnywanie tekstw
Porwnywanie tekstw
Is
Porwnywanie obiektw
Porwnywanie obiektw
TypeOf...Is
Porwnywanie typw
Porwnywanie typw
Not
Negacja
Logiczny
And, AndAlso
i, take
Logiczny
Or, Xor,
OrElse
Logiczny
Przypisanie
Przypisanie
Oglna zasada jest taka, e najwyszy priorytet maj operatory arytmetyczne, nastpnie relacyjne, a pniej logiczne. Chyba warto zagi naronik tej strony, aby atwo znale powysz tabel, gdy zaczniemy omawia bardziej zoone przykady
programw.
Naley rwnie pamita, e kolejno wykonywania operatorw mona zmieni,
stosujc nawiasy (patrz rozdzia 9).
239
Podsumowanie
W tym rozdziale powiedzielimy, w jaki sposb w programach mona uywa operatorw relacyjnych i logicznych. Zobaczylimy te, jak mona posugiwa si tabelami
prawdy do sprawdzania wynikw operacji logicznych. Omwilimy wpyw priorytetw na oba typy operatorw. Na kocu nauczylimy si stosowania operatorw
logicznych do wykonywania operacji na poziomie bitowym. Mimo i niektrych
omwionych tu technik nie bdziemy w tej chwili potrzebowa w pisanych programach, warto zachowa w pamici te informacje, gdy w przyszoci moe si okaza,
e pomog nam one elegancko rozwiza jaki trudny problem.
Pytania kontrolne
Porada dla programistw
Testujc krtkie programy przedstawione w tej czci, mona wpisa ich kod
do procedury obsugi zdarzenia Load() formularza. Nie potrzeba te uywa pl
tekstowych ani adnych innych formantw. W celach testowych wystarczy umieci
punkt przerwania w linii End Sub tej procedury. Mona, oczywicie, analizowa
wartoci wszelkich zmiennych, umieszczajc nad nimi kursor.
W tym przykadzie wykonujemy test If przy uyciu operatora rwnoci, na podstawie wyniku okrelamy, ktr pe wywietli, wywoujc metod MessageBox().
240
Jak warto wyniku przewidujemy i dlaczego wanie tak? Jeli po uruchomieniu programu otrzymamy wynik inny od oczekiwanego, sprbujmy ustali,
jaka jest tego przyczyna. (Wskazwka: w jzyku Visual Basic .NET logiczna warto True jest reprezentowana przez liczb 1, a warto False liczb 0).
4. Jak warto przyjmie zmienna Result po wykonaniu nastpujcej instrukcji?
Result = (10 > 5) And (5 > 7)
241
O: Interesujc czci kodu jest test If. Pierwszy test sprawdzajcy, czy 55 jest mniejsze od 100 daje logiczny wynik True, czyli przypisanie do zmiennej TestValue
wartoci 1. Funkcja IsItOdd() wywoywana jest z parametrem 1, czyli liczb
nieparzyst (ujemn). Funkcja zwraca zatem wynik 1. Po wyjciu z funkcji testujemy za pomoc instrukcji If zwracan warto 1, a poniewa kada liczba
niezerowa jest uznawana za logiczn warto True, program wywietla w oknie
komunikatu napis Witaj.
8. Warto biec przepywu rodkw pieninych mona obliczy za pomoc
nastpujcego rwnania:
PV = Dochd / (1.0 + Oprocentowanie) ^ Lata