Professional Documents
Culture Documents
Spis treci
Przykadowy rozdzia
Katalog ksiek
Katalog online
Zamw drukowany
katalog
Twj koszyk
Dodaj do koszyka
Cennik i informacje
Zamw informacje
o nowociach
Zamw cennik
Czytelnia
Fragmenty ksiek
online
Kontakt
Helion SA
ul. Kociuszki 1c
44-100 Gliwice
tel. 32 230 98 63
e-mail: helion@helion.pl
Helion 19912010
Spis treci
Podzikowania .............................................................................................. 14
O autorach ..................................................................................................... 15
O redaktorze merytorycznym ...................................................................... 17
Wprowadzenie .............................................................................................. 19
Rozdzia 1.
Rozdzia 2.
Rozdzia 4.
Spis treci 7
Rozdzia 6.
Rozdzia 8.
Spis treci 9
Spis treci 11
Spis treci 13
Dodatek B
Co dalej? .......................................................................................................691
Skorowidz ....................................................................................................697
3
Pisanie programw
Dziaania algorytmw.
Stosowania zmiennych.
Dziaania rnych typw danych, w tym liczb cakowitych, liczb zmiennoprzecinkowych,
cigw znakw i dat.
Okrelania zasigu kodu.
Usuwania bdw z aplikacji.
Przechowywania danych w pamici komputera.
Informacje i dane
Informacje opisuj fakty i mona je przedstawia oraz wyszukiwa w dowolnym formacie, niezalenie od tego, czy dany format bardziej nadaje si dla ludzi, czy dla komputerw. Na przykad, jeli
cztery osoby bd miay za zadanie mierzy natenie ruchu na czterech rnych skrzyowaniach,
po zakoczeniu pracy przedstawi cztery rcznie zapisane listy z liczb samochodw, ktre przejechay w danym okresie (moe to by jedna lista na kad godzin).
Pojcie dane suy do opisu informacji, ktre zostay zestawione, uporzdkowane i sformatowane
w taki sposb, aby moliwe byo ich bezporednie wykorzystanie przez program komputerowy.
Komputer nie moe bezporednio uy informacji zebranych przez osoby mierzce natenie
ruchu w postaci zestawu kartek penych odrcznych zapiskw. Kto musi najpierw przeksztaci
te zapiski na dane. Na przykad mona przepisa liczby do arkusza programu Excel, ktry mona
nastpnie bezporednio wykorzysta w programie zaprojektowanym do analizy wynikw.
Algorytmy
Zmiany w przemyle komputerowym zachodz z niesamowit szybkoci. Wikszo profesjonalnych programistw musi cay czas uczy si czego nowego, aby ich umiejtnoci byy aktualne.
Jednak niektre aspekty tworzenia programw nie zmieniy si od czasu ich wymylenia i prawdopodobnie nie zmieni si w najbliszym czasie. Dobrym przykadem aspektu technologii komputerowej, ktrego istota nie zmienia si od pocztku, jest proces i dyscyplina tworzenia oprogramowania.
Aby program dziaa, musi mie dane, na ktrych moe pracowa. Nastpnie program bierze takie
dane i przeksztaca je na inn posta. Na przykad aplikacja moe pobiera baz z danymi klientw
zapisan w pamici komputera jako zestaw jedynek i zer, a nastpnie przeksztaca j na posta
moliw do odczytania na ekranie monitora. Komputer pokadowy w samochodzie nieustannie
analizuje informacje dotyczce rodowiska oraz stanu pojazdu i przystosowuje mieszank paliwa
tak, aby zapewni jak najwydajniejsz prac silnika. Dostawca usug telekomunikacyjnych zapisuje
wykonane telefony i na podstawie tych informacji generuje rachunki.
Wspln podstaw tych programw s algorytmy. Przed napisaniem programu rozwizujcego dany
problem, trzeba rozbi go na pojedyncze kroki opisujce rozwizanie problemu. Algorytm jest niezaleny od jzyka programowania, dlatego moesz zapisa go zarwno za pomoc jzyka naturalnego,
jak i diagramw lub w inny sposb uatwiajcy wizualizacj problemu. Wyobra sobie, e pracujesz
dla firmy telekomunikacyjnej i masz za zadanie wygenerowa rachunki na podstawie telefonw
wykonanych przez klientw. Poniszy algorytm opisuje jedno z moliwych rozwiza:
1. Pierwszego dnia miesica musisz utworzy rachunki dla wszystkich klientw.
2. Z kadym klientem powizana jest lista pocze wykonanych w ubiegym miesicu.
3. Znasz dugo kadej rozmowy, a take por jej przeprowadzenia. Na podstawie tych
informacji moesz obliczy koszt kadego poczenia.
4. Kady rachunek to czna suma wszystkich pocze.
5. Jeli klient rozmawia duej, ni wynosi ustalony limit, musi zapaci okrelon kwot
za kad dodatkow minut.
6. Do kadego rachunku dodajesz podatek.
7. Po przygotowaniu rachunku trzeba go wydrukowa i wysa poczt.
Tych siedem punktw opisuje do wyczerpujco algorytm programu generujcego rachunki
za poczenia wychodzce w systemie operatora telefonii komrkowej. Nie jest istotne, czy gotowe
rozwizanie napisane bdzie w jzyku C++, Visual Basic 2010, C#, Java, czy w innym podstawowy algorytm programu nie zmieni si. Warto jednak pamita, e poszczeglne punkty powyszego
algorytmu mona rozbi na mniejsze, bardziej szczegowe algorytmy.
Dobr wiadomoci dla osb uczcych si programowa jest to, e zwykle utworzenie takiego algorytmu jest do proste. Bardzo atwo zrozumie dziaanie powyszego algorytmu. Algorytmy zawsze
tworzy si, wykorzystujc zdrowy rozsdek, cho moe si okaza, e trzeba napisa kod dla algorytmu zawierajcego skomplikowane rozumowanie matematyczne lub naukowe. Moliwe, e nie
uznasz tego za algorytm zdroworozsdkowy, jednak bdzie on taki dla jego autora. Za wiadomo
jest taka, e proces przeksztacania algorytmu na kod moe by trudny. Dla programisty nauczenie
si tworzenia algorytmw to kluczowa umiejtno.
Wszyscy dobrzy programici uwzgldniaj to, e wybr jzyka programowania nie jest zbyt istotny.
Rne jzyki s dobre do wykonywania odmiennych zada. Jzyk C++ daje programistom du
kontrol nad dziaaniem programw, jednak pisanie aplikacji w tym jzyku jest trudniejsze ni na
przykad w Visual Basic 2010, podobnie jak tworzenie interfejsu uytkownika. Niektre z problemw
zwizanych z jzykiem C++ rozwizuje jego zarzdzana wersja udostpniana przez platform .NET,
Zmienne 63
dlatego powysze stwierdzenia s mniej prawdziwe dzi ni jeszcze kilka lat temu. Jako programista
musisz nauczy si wykorzystywa rne jzyki do rozwizywania rnych problemw w jak
najwydajniejszy sposb. Cho na pocztku wikszo programistw koncentruje si na jednym
jzyku, warto pamita, e rne jzyki pozwalaj tworzy najlepsze rozwizania dla odmiennych
problemw. W pewnym momencie do napisania programu w nowym jzyku moe okaza si konieczne uycie podstawowych umiejtnoci zwizanych z projektowaniem algorytmw i kodowaniem.
Zmienne
Zmienna to co, w czym przechowywana jest warto uywana w algorytmie. Na podstawie tych
wartoci mona podejmowa decyzje (na przykad czy dana zmienna rwna si 7? lub czy dana
zmienna jest wiksza od 4?), mona te wykonywa na nich operacje i przeksztaca je na inne
wartoci (na przykad dodaj 2 do tej zmiennej lub pomn dan zmienn przez 6 i tak dalej).
Przed napisaniem kodu przyjrzyj si kolejnemu algorytmowi:
1. Utwrz zmienn o nazwie intNumber i przypisz do niej liczb 27.
2. Dodaj 1 do wartoci zmiennej o nazwie intNumber i zapisz now warto w tej samej zmiennej.
3. Wywietl zmienn intNumber uytkownikowi aplikacji.
SPRBUJ SAM
Uywanie zmiennych
Plik z kodem projektu Variables mona pobra z witryny helion.pl.
Zmienne 65
2. Zmniejsz nieco formularz Form1 i dodaj do niego przycisk z okna narzdzi. Ustaw
waciwo Text przycisku na Dodaj 1 do intNumber, a waciwo Name na btnAdd.
Formularz powinien wyglda tak jak na rysunku 3.2.
Jak to dziaa?
Po klikniciu przycisku przez uytkownika program wywouje metod obsugi zdarzenia btnAdd_
Click, rozpoczyna dziaanie od gry kodu i wykonuje kolejne wiersze. Pierwszy wiersz definiuje
now zmienn o nazwie intNumber:
Dim intNumber As Integer
to sowo kluczowe. Jak opisano to w rozdziale 1., sowa kluczowe maj w jzyku Visual Basic
2010 specjalne znaczenie i su midzy innymi do wydawania polece. Sowo Dim informuje jzyk,
e dalej znajduje si definicja zmiennej.
Dim
Ta dziwna nazwa pochodzi z pierwszych wersji jzyka BASIC. Jzyk BASIC musia mie
informacje opisujce ilo miejsca rezerwowanego dla tablic (opisanych w rozdziale 5.),
dlatego znajdowao si w nim polecenie informujce o wymiarach (ang. dimensions)
tablicy, ktre w skrcie nazwano Dim. W jzyku Visual Basic rozszerzono to polecenie
na inne rodzaje zmiennych i obecnie oznacza ono mniej wicej przygotuj miejsce na.
Powyszy wiersz oznacza: pobierz aktualn warto zmiennej intNumber i dodaj do niej 1.
Ostatni wiersz powoduje wywietlenie okna dialogowego z tekstem Warto zmiennej intNumber
oraz aktualn wartoci tej zmiennej. Ta sama instrukcja ustawia take nagwek okna
dialogowego na Zmienne, aby odzwierciedla przeznaczenie projektu. Przy korzystaniu z wartoci liczbowych w tekcie warto zastosowa metod ToString do zrzutowania liczby na cig znakw.
Uatwia to czytanie i rozumienie kodu, poniewa wiadomo, e uyto w nim cigu znakw:
+ 1 =
Komentarze i odstpy
Kiedy piszesz kod programu, zawsze pamitaj, e w przyszoci kto inny moe musie wprowadza
w nim zmiany. Dlatego powiniene stara si jak najbardziej uatwi innym programistom odczytanie
kodu. Komentarze i odstpy to dwa podstawowe rodki do poprawiania czytelnoci kodu.
Komentarze
Komentarze to elementy programu ignorowane przez kompilator jzyka Visual Basic 2010, co oznacza, e moesz w nich zapisa dowolne informacje w dowolnym jzyku po polsku, w C#, w Perl,
w FORTRAN czy po chisku. Te komentarze maj pomc programistom czytajcym kod w zrozumieniu dziaania danego fragmentu.
Wszystkie jzyki programowania umoliwiaj dodawanie komentarzy. Nie jest to cecha dostpna
wycznie w jzyku Visual Basic 2010. Jeli na przykad przyjrzysz si kodowi w jzyku C#, zauwaysz, e komentarze rozpoczynaj si w nim od podwjnego ukonika (//).
Kiedy wiadomo, e warto doda komentarz? Zaley to od sytuacji, ale dobr praktyczn wskazwk
jest zastanowienie si nad algorytmem. Program z poprzedniego wiczenia Sprbuj sam dziaa
wedug nastpujcego algorytmu:
1. Zdefiniuj warto zmiennej intNumber.
2. Dodaj 1 do wartoci zmiennej intNumber.
3. Wywietl now warto zmiennej intNumber uytkownikowi.
Komentarze i odstpy 67
intNumber = 27
'
intNumber = intNumber + 1
'
W jzyku Visual Basic 2010 komentarze rozpoczynaj si od apostrofu ('). Tekst znajdujcy si
w wierszu poprzedzonym apostrofem to komentarz. Mona take dodawa komentarze w tym
samym wierszu, w ktrym znajduje si kod, na przykad:
intNumber = intNumber + 1 '
Takie rozwizanie jest poprawne, poniewa po apostrofie znajduje si jedynie komentarz, a nie kod.
Zauwa, e komentarze w powyszym kodzie mniej wicej opisuj dziaanie algorytmu. Dobr
praktyk zwizan z komentowaniem kodu jest dodawanie krtkiego opisu tego etapu algorytmu,
ktry jest wykonywany przez dany fragment kodu.
rodowisko Visual Studio 2010 udostpnia take komentarze XML, ktre pozwalaj utworzy bloki
komentarzy stanowice dokumentacj metod. Aby uy tej waciwoci, umie kursor w pustym
wierszu powyej definicji metody i wpisz trzy nastpujce po sobie apostrofy. rodowisko automatycznie doda wtedy blok komentarza widoczny w poniszym fragmencie kodu:
'''
<summary>
'''
'''
</summary>
<param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
'''
Najciekawsz waciwoci komentarzy XML jest to, e rodowisko Visual Studio 2010 automatycznie uzupenia nazwy parametrw w bloku komentarzy na podstawie parametrw zdefiniowanych
w metodzie. Jeli dana metoda nie przyjmuje adnych parametrw, rodowisko nie dodaje elementu
<param> do bloku komentarzy.
Po wstawieniu bloku komentarzy moesz doda krtki opis dziaania metody oraz dodatkowe uwagi,
ktre naley uwzgldni, wywoujc t metod, a take specjalne wymagania stawiane przez metod.
Jeli metoda zwraca warto, rodowisko dodaje do bloku komentarzy element <returns>, a programista moe poda zwracan warto oraz jej opis.
Komentarze maj przede wszystkim uatwi zrozumienie kodu, zarwno programistom, ktrzy
stykaj si z nim po raz pierwszy, jak i autorowi, ktry wraca do niego po duszej przerwie. Komentarze maj wskazywa co, co moe nie by oczywiste na pierwszy rzut oka, lub stanowi krtki
opis dziaania fragmentu kodu, dziki czemu programista nie musi analizowa dziaania kadego wiersza, aby zrozumie jego zastosowanie.
Odstpy
Kolejny istotny aspekt pisania czytelnego kodu to dodawanie wielu odstpw. Odstpy, czyli miejsca
na ekranie lub na stronie pozbawione znakw, poprawiaj czytelno kodu, podobnie jak odstpy
w zwykym tekcie napisanym po polsku. W ostatnim przykadzie przed kadym komentarzem
wystpuje pusty wiersz. Dziki temu osoba czytajca kod wie, e kady wyrniony w ten sposb
blok kodu stanowi cao.
Wicej o odstpach dowiesz si w nastpnym rozdziale, gdzie opisane jest sterowanie przepywem
programu za pomoc specjalnych blokw kodu. Jednak w praktyce zauwaysz, e rni programici
uywaj odstpw w odmienny sposb. Na razie zapamitaj, e nie naley ba si dodawa odstpy
do kodu, poniewa zwiksza to czytelno programw, szczeglnie jeli aplikacja skada si z dugich
fragmentw kodu.
Kompilator ignoruje odstpy i komentarze, dlatego kod z du liczb komentarzy i odstpw jest
rwnie wydajny jak kod cakowicie pozbawiony tych elementw.
Typy danych
Kiedy uywasz zmiennych, powiniene z gry wiedzie, jakie wartoci zamierzasz w nich przechowywa. Na razie spotkae si ze zmienn suc do przechowywania liczb cakowitych.
Kiedy definiujesz zmienn, musisz poinformowa jzyk Visual Basic 2010 o typie danych przechowywanych w tej zmiennej. Jak si ju moe domylasz, jest to typ danych, a wszystkie znaczce
jzyki programowania udostpniaj wiele rnych typw danych. Typ danych zmiennej ma istotny
wpyw na uruchamianie kodu przez komputer. W tym punkcie poznasz dziaanie zmiennych oraz
wpyw uytego typu na wydajno programu.
Uywanie liczb
Uywajc liczb w jzyku Visual Basic 2010, moesz korzysta z dwch ich rodzajw: z liczb cakowitych oraz zmiennoprzecinkowych. Oba te rodzaje maj specyficzne zastosowania. Liczby cakowite
s mao uyteczne do obliczania iloci, na przykad iloci pienidzy na rachunku czy czasu zapeniania basenu wod. Do operacji tego typu lepiej jest uywa liczb zmiennoprzecinkowych,
poniewa mona za ich pomoc przedstawi czci uamkowe, co nie jest moliwe w przypadku liczb
cakowitych.
Z drugiej strony w przypadku wikszoci codziennych czynnoci bardziej przydatne s liczby cakowite. Wikszo programw uywa liczb raczej do kontroli swojego dziaania za pomoc zliczania
jednostek, ni do obliczania iloci.
Wyobra sobie, e masz napisa program wywietlajcy na ekranie szczegy dotyczce klienta.
Baza danych zawiera 100 klientw. Kiedy program rozpoczyna dziaanie, wywietla na ekranie dane
pierwszego klienta. Program musi kontrolowa, ktry klient jest aktualnie wywietlany, aby mc
wywietli nastpnego klienta, gdy otrzyma takie polecenie od uytkownika.
Typy danych 69
Poniewa komputer doskonale radzi sobie z liczbami, zwykle kady klient ma niepowtarzalny numer. Ten numer to w prawie wszystkich przypadkach liczba cakowita. W tym przypadku oznacza to,
e kady klient ma przypisan niepowtarzaln liczb cakowit z przedziau od 1 do 100. W programie mona take umieci zmienn przechowujc identyfikator aktualnie wywietlanego klienta.
Kiedy uytkownik poprosi o wywietlenie danych kolejnego klienta, program musi tylko doda
1 do tego identyfikatora (inkrementacja o jeden) i moe wywietli nastpnego klienta.
Dziaanie mechanizmw tego typu poznasz przy okazji analizy bardziej zaawansowanych zagadnie.
Na razie zapamitaj, e liczb cakowitych uywa si duo czciej ni liczb zmiennoprzecinkowych.
Przyjrzyj si teraz czsto wykonywanym operacjom.
SPRBUJ SAM
1. Utwrz nowy projekt w rodowisku Visual Studio 2010, wybierajc z menu opcj
File/New/Project. W oknie dialogowym New Project wybierz aplikacj typu Windows
Forms Application z prawego panelu (zobacz rysunek 3.1), wpisz nazw projektu,
Integer Math, a nastpnie kliknij przycisk OK.
2. Dodaj do formularza nowy przycisk z okna narzdzi. Ustaw jego waciwo Name
na btnIntMath, a waciwo Text na Test. Kliknij dwukrotnie ten przycisk i dodaj
wyrniony pogrubieniem kod do utworzonej przez rodowisko metody obsugi
zdarzenia Click:
Private Sub btnIntMath_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnIntMath.Click
' Deklaracja zmiennej.
Dim intNumber As Integer
' Przypisanie liczby, dodanie do niej wartoci i wywietlenie wyniku.
intNumber = 16
intNumber = intNumber + 8
MessageBox.Show("Test dodawania... " & intNumber.ToString, _
"Arytmetyka liczb cakowitych")
' Przypisanie liczby, odjcie od niej wartoci i wywietlenie wyniku.
intNumber = 24
intNumber = intNumber - 2
MessageBox.Show("Test odejmowania... " & intNumber.ToString, _
"Arytmetyka liczb cakowitych")
' Przypisanie liczby, pomnoenie jej i wywietlenie wyniku.
intNumber = 6
intNumber = intNumber * 10
MessageBox.Show("Test mnoenia... " & intNumber.ToString, _
"Arytmetyka liczb cakowitych")
' Przypisanie liczby, podzielenie jej i wywietlenie wyniku.
intNumber = 12
Jak to dziaa?
Na szczcie aden z przedstawionych fragmentw kodu nie powinien by niezrozumiay. Z operatorem dodawania spotkae si ju w jednym z wczeniejszych przykadw. Tu pojawia si on
ponownie:
'
intNumber = 16
intNumber = intNumber + 8
MessageBox.Show("Test dodawania... " & intNumber.ToString, _
"Arytmetyka liczb cakowitych")
intNumber = 24
intNumber = intNumber - 2
MessageBox.Show("Test odejmowania... " & intNumber.ToString, _
"Arytmetyka liczb cakowitych")
Typy danych 71
'
intNumber = 6
intNumber = intNumber * 10
MessageBox.Show("Test mnoenia... " & intNumber.ToString, _
"Arytmetyka liczb cakowitych")
intNumber = 12
intNumber = Ctype(intNumber / 6, Integer)
MessageBox.Show("Test dzielenia... " & intNumber.ToString, _
"Arytmetyka liczb cakowitych")
SPRBUJ SAM
W tym wiczeniu Sprbuj sam zmodyfikujesz kod z poprzedniego wiczenia i wykorzystasz operatory skrcone do dodawania, odejmowania i mnoenia liczb cakowitych.
1. Ponownie otwrz w edytorze kodu rodowiska Visual Studio 2010 plik Form1.vb i wprowad
w nim wyrnione pogrubieniem zmiany:
Operatory skrcone dziaaj dobrze przy dodawaniu, odejmowaniu i mnoeniu liczb cakowitych.
Nie mona ich jednak uywa przy dzieleniu, poniewa wynikiem moe by liczba z czci
uamkow.
intNumber = 6
intNumber = intNumber * 10.23
Wprawdzie powyszy kod mona uruchomi, ale wyniki bd inne od oczekiwanych. Poniewa
zmienna intNumber moe zawiera jedynie liczby cakowite, wynik jest zaokrglany w gr lub w d
do najbliszej liczby cakowitej. W tym przypadku dokadny wynik mnoenia to 61,38, ale warto
zmiennej intNumber to 61. Gdyby wynik wynosi 61,73, program przypisaby do zmiennej warto 62.
Typy danych 73
UWAGA
Przy opcji Option Strict ustawionej na On powyszy kod spowoduje bd w rodowisku IDE,
a program si nie skompiluje. Przy ustawieniu Off mona skompilowa ten fragment.
intNumber = 12
intNumber = intNumber / 7
Tym razem dokadna odpowied to 1,71. Jednak poniewa wynik musi zosta zaokrglony w celu
zapisania go w zmiennej intNumber, program przypisze do tej zmiennej liczb 2. Jak moesz sobie
wyobrazi, gdyby chcia napisa program obliczajcy dokadne wartoci, miaby duy problem,
poniewa kady krok oblicze byby obciony bdem zwizanym z zaokrglaniem.
Nastpny punkt opisuje, jak mona wykona tego typu obliczenia za pomoc liczb zmiennoprzecinkowych.
SPRBUJ SAM
Arytmetyka zmiennoprzecinkowa
Plik z kodem projektu Floating Point Math mona pobra z witryny helion.pl.
W tym wiczeniu Sprbuj sam utworzysz projekt, ktry mnoy i dzieli liczby zmiennoprzecinkowe.
1. Utwrz nowy projekt typu Windows Forms Application w rodowisku Visual Studio 2010
i nazwij go Floating Point Math. Nastpnie umie na formularzu przycisk, zmie jego
nazw na btnFloatMath, a waciwo Text na Test.
2. Kliknij dwukrotnie przycisk btnFloatMath i dodaj wyrniony pogrubieniem kod:
Private Sub btnFloatMath_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnFloatMath.Click
' Deklaracja zmiennej.
Dim dblNumber As Double
' Przypisanie wartoci, operacja mnoenia i wywietlenie wyniku.
dblNumber = 45.34
dblNumber *= 4.333
MessageBox.Show("Test mnoenia. " & dblNumber.ToString, _
"Liczby zmiennoprzecinkowe")
' Przypisanie wartoci, operacja dzielenia i wywietlenie wyniku.
dblNumber = 12
dblNumber /= 7
Jak to dziaa?
Prawdopodobnie najwaniejsz zmian w porwnaniu z wczeniejszym przykadem jest sposb
deklaracji zmiennej:
'
Deklaracja zmiennej.
Zamiast zwrotu As Integer powysza deklaracja zawiera zwrot As Double. Informuje to jzyk
Visual Basic 2010, e zmienna ma przechowywa liczby zmiennoprzecinkowe o podwjnej precyzji,
a nie liczby cakowite. Oznacza to, e wszystkie operacje wykonywane na zmiennej dblNumber to
operacje zmiennoprzecinkowe, a nie cakowitoliczbowe. Zwr take uwag na inny przedrostek
w zmodyfikowanej notacji wgierskiej, informujcy, e zmienna przechowuje liczby typu Double.
Kod sucy do wykonywania operacji arytmetycznych jest taki sam jak w przypadku liczb cakowitych. Poniszy kod przypisuje do zmiennej dblNumber liczb uamkow i mnoy j przez inn
liczb tego typu:
'
dblNumber = 45.34
dblNumber *= 4.333
MessageBox.Show("Test mnoenia. " & dblNumber.ToString, _
"Liczby zmiennoprzecinkowe")
Wynik tej operacji to liczba 196,45822, ktra zawiera szereg cyfr po przecinku. Nastpnie mona
uy tej liczby do dalszych oblicze.
Oczywicie przypisujc warto do liczby zmiennoprzecinkowej, nie trzeba jawnie podawa cyfr
znajdujcych si po przecinku:
'
dblNumber = 12
dblNumber /= 7
MessageBox.Show("Test dzielenia. " & dblNumber.ToString, _
"Liczby zmiennoprzecinkowe")
Typy danych 75
Inne stany
Zmienne zmiennoprzecinkowe mog reprezentowa kilka innych wartoci, nie tylko liczby uamkowe. S to midzy innymi stany:
NaN,
Ta ksika nie przedstawia sposobw dochodzenia do takich wynikw, ale matematycy na pewno stwierdz, e platforma .NET spenia ich zaawansowane potrzeby.
"Test mnoenia. " i "Liczby zmiennoprzecinkowe" to cigi znakw. Informuj o tym otaczajce
je cudzysowy ("). Co jednak oznacza w tym kontekcie dblNumber? Warto przechowywana
w zmiennej dblNumber jest przeksztacana za pomoc metody ToString na cig znakw, ktry
mona wywietli na ekranie. ToString to metoda struktury Double definiujcej typ zmiennej.
Na przykad, aby wywietli zmienn dblNumber przechowujc warto 27, naley przeksztaci
t warto na cig o dugoci dwch znakw. Wanie w ten sposb dziaa metoda ToString.
SPRBUJ SAM
To wiczenie Sprbuj sam ilustruje niektre operacje, jakie mona wykona na cigach znakw.
1. Utwrz now aplikacj typu Windows Forms Application, uywajc opcji menu
File/New/Project. Nazwij ten projekt Strings.
2. Za pomoc okna narzdzi dodaj do formularza przycisk, nadaj mu nazw btnStrings oraz
zmie jego waciwo Text na Cigi znakw. Kliknij dwukrotnie ten przycisk, a nastpnie
dodaj wyrniony pogrubieniem kod.
Private Sub btnStrings_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnStrings.Click
' Deklaracja zmiennej.
Dim strResults As String
' Przypisywanie wartoci do cigu znakw.
strResults = "Witaj, wiecie!"
' Wywietlanie tekstu.
MessageBox.Show(strResults, "Cigi znakw")
End Sub
Typy danych 77
Jak to dziaa?
Do definiowania zmiennych przechowujcych cigi znakw uywa si podobnego zapisu co w przypadku zmiennych liczbowych, jednak tym razem naley uy instrukcji As String:
'
Deklaracja zmiennej.
Podobnie jak w przypadku zmiennych liczbowych do cigw znakw mona przypisa warto:
'
Trzeba uy cudzysoww wok tekstu, aby ograniczy cig znakw, czyli oznaczy jego pocztek
i koniec. Jest to istotne, poniewa te cudzysowy informuj kompilator jzyka Visual Basic 2010, e
nie powinien kompilowa tekstu znajdujcego si w cigu znakw. Jeli zapomnisz o cudzysowach,
jzyk Visual Basic 2010 potraktuje warto zmiennej jako cz kodu programu i sprbuje j skompilowa. Poniewa jest to niemoliwe, kompilacja programu zakoczy si niepowodzeniem.
Po zapisaniu wartoci Witaj, wiecie! w zmiennej strResults mona przekaza t zmienn do
okna komunikatu, ktre pobiera warto zmiennej i wywietla j. Definiowanie i uywanie zmiennych zawierajcych cigi znakw nie rni si wic od definiowania i uywania zmiennych liczbowych. Poniej opisane s operacje, ktre mona wykonywa na cigach znakw.
czenie
czenie (ang. concatenation) oznacza wizanie czego w acuch lub szereg. Jeli uywasz dwch cigw znakw, a nastpnie doczasz jeden do drugiego, cigi s poczone.
SPRBUJ SAM
Moesz traktowa czenie jak dodawanie cigw znakw. W tym wiczeniu Sprbuj sam dowiesz si, jak przeprowadza takie operacje.
1. Wykorzystaj utworzony wczeniej projekt Strings, otwrz okno projektowe z formularzem
Form1 i dodaj nowy przycisk. Nazwij go btnConcatenation i ustaw jego waciwo Text
na czenie. Kliknij dwukrotnie ten przycisk i dodaj wyrniony kod:
Private Sub btnConcatenation_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnConcatenation.Click
' Deklaracja zmiennych.
Dim strResults As String
Dim strOne As String
Dim strTwo As String
' Przypisanie wartoci do zmiennych.
strOne = "Witaj,"
2. Uruchom projekt i kliknij przycisk czenie. Pojawi si okno znane ju z rysunku 3.6.
Jak to dziaa?
To wiczenie Sprbuj sam rozpoczyna si od deklaracji trzech zmiennych przechowujcych dane
typu String:
'
Deklaracja zmiennych.
strOne = "Witaj,"
strTwo = " wiecie!"
Po przypisaniu wartoci do dwch pierwszych cigw znakw program czy je za pomoc operatora & i zapisuje wynik czenia w trzeciej zmiennej o nazwie strResults:
'
"Test dzielenia. " to cig znakw, jednak nie trzeba go definiowa jako zmiennej tego typu.
W sownictwie specyficznym dla jzyka Visual Basic 2010 jest to tak zwany litera, co oznacza, e ma
on posta widoczn w kodzie i jest niezmienny. Przy stosowaniu operatora czenia dla tego cigu
i wyraenia dblNumber.ToString program przeksztaca warto zmiennej dblNumber na cig znakw
i umieszcza j za cigiem "Test dzielenia. ". Warto pamita, e metoda ToString przeksztaca warto zmiennej na cig znakw. Wynik caej operacji to cig przekazywany do metody
MessageBox.Show. Cig ten obejmuje zarwno podstawowy tekst, jak i obecn warto zmiennej
dblNumber.
Typy danych 79
SPRBUJ SAM
3. Kliknij dwukrotnie przycisk Dugo, aby utworzy metod obsugi zdarzenia Click.
Nastpnie dodaj do tej metody wyrniony pogrubieniem kod:
Private Sub btnLength_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnLength.Click
' Deklaracja zmiennej.
Dim strResults As String
' Pobranie tekstu z pola tekstowego.
strResults = txtString.Text
' Wywietlenie dugoci cigu znakw.
MessageBox.Show(strResults.Length.ToString & " znakw", _
"Cigi znakw")
End Sub
Jak to dziaa?
Na pocztku metoda deklaruje zmienn na cig znakw. Nastpnie pobiera tekst wpisany przez
uytkownika w pole tekstowe i zapisuje go w zmiennej strResults.
Deklaracja zmiennej.
strResults = txtString.Text
Po pobraniu cigu znakw mona uy waciwoci Length do pobrania wartoci okrelajcej liczb
znakw w tym cigu. Pamitaj, e komputer liczy jako znaki take odstpy oraz znaki przestankowe.
Poniewa waciwo Length zwraca liczb znakw jako warto typu Integer, warto przeksztaci
j na cig znakw za pomoc metody ToString:
'
Podcigi
Popularne sposoby manipulowania cigami znakw w programach obejmuj uywanie zbioru znakw pojawiajcych si na pocztku cigu, zbioru znakw znajdujcych si na kocu cigu lub zbioru
znakw pojawiajcych si w rodku cigu. Takie fragmenty to podcigi.
SPRBUJ SAM
Uywanie podcigw
To wiczenie Sprbuj sam opiera si na poprzedniej aplikacji i pokazuje, jak wywietli trzy pierwsze, trzy rodkowe oraz trzy ostatnie znaki cigu.
1. Otwrz formularz Form1 w oknie projektowym w projekcie Strings. Dodaj kolejny przycisk
do formularza Form1, nazwij go btnSplit i ustaw jego waciwo Text na Rozbij. Kliknij
dwukrotnie ten przycisk i dodaj wyrniony pogrubieniem kod:
Private Sub btnSplit_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnSplit.Click
' Deklaracja zmiennej.
Dim strResults As String
' Pobieranie tekstu z pola tekstowego.
strResults = txtString.Text
' Wywietlanie trzech pierwszych znakw.
MessageBox.Show(strResults.Substring(0, 3), "Cigi znakw")
' Wywietla trzy rodkowe znaki.
MessageBox.Show(strResults.Substring(3, 3), "Cigi znakw")
' Wywietla trzy ostatnie znaki.
MessageBox.Show(strResults.Substring(strResults.Length - 3), "Cigi znakw")
End Sub
Typy danych 81
Jak to dziaa?
Metoda Substring pozwala pobra zbir znakw znajdujcych si w dowolnym miejscu cigu. Tej
metody mona uywa na dwa sposoby. Pierwszy sposb polega na podaniu pocztkowej pozycji
oraz liczby pobieranych znakw. Pierwsza instrukcja informuje, e podcig zaczyna si od pozycji
zerowej, czyli od pocztku cigu, oraz zawiera trzy znaki:
'
Ostatnia instrukcja przyjmuje tylko jeden parametr. W takiej sytuacji metoda Substring rozpoczyna pobieranie od podanej pozycji i pobiera wszystkie znaki do koca cigu. W tym przypadku
zostaje wykorzystana kombinacja metody Substring i waciwoci Length, dlatego znaczenie tej instrukcji to: pobierz wszystkie znaki cigu od trzeciej pozycji od koca do koca.
'
SPRBUJ SAM
W tym wiczeniu Sprbuj sam zmodyfikujesz utworzony wczeniej projekt Floating Point Math,
tak aby wywietla liczby w postaci cigw o rnych formatach.
1. Otwrz projekt Floating Point Math utworzony na pocztku rozdziau.
2. Otwrz kod formularza Form1 w edytorze kodu i wprowad wyrnione pogrubieniem
zmiany w procedurze btnFloatMath_Click:
'
dblNumber = 12
dblNumber /= 7
' Wywietla niesformatowany wynik.
Jak to dziaa?
Sztuczka polega na wywoaniu metody String.Format. Ta uyteczna metoda pozwala formatowa
liczby. Podstaw dziaania tej metody jest jej pierwszy parametr, ktry definiuje format cigu znakw:
MessageBox.Show("Test dzielenie z formatowaniem. " & _
String.Format("{0:n3}", dblNumber), "Liczby zmiennoprzecinkowe")
Metoda
Typy danych 83
UWAGA
Aby zobaczy dziaanie separatora, w kodzie przykadu naley zmieni rwnanie z 12/7
na 12000/7.
Jeli polecisz komputerowi uycie ustawie regionalnych Stanw Zjednoczonych i uruchomisz ten
sam kod (nie wymaga to wprowadzania adnych zmian w samej aplikacji), program wywietli liczb
w innym formacie 1,714.286.
UWAGA
Moesz zmieni ustawienia regionalne, otwierajc Panel sterowania, klikajc ikon Opcje
regionalne i jzykowe, a nastpnie zmieniajc jzyk na Angielski (Stany Zjednoczone).
W Stanach Zjednoczonych separator tysicy to przecinek, a nie odstp, a separator czci uamkowej
to kropka, a nie przecinek. Uywajc metody String.Format, moesz pisa aplikacje dziaajce poprawnie niezalenie od konfiguracji ustawie regionalnych na komputerze uytkownika.
Zamiana podcigw
Kolejn czsto stosowan operacj na cigach znakw jest zamiana wystpie jednego cigu na inny.
SPRBUJ SAM
Zamiana podcigw
To wiczenie Sprbuj sam ilustruje zamian podcigw. Dowiesz si tu, jak zmodyfikowa aplikacj Strings tak, aby zamieniaa cig znakw "Witaj" na " egnaj".
1. Otwrz program Strings utworzony w jednym z wczeniejszych wicze.
2. Otwrz w oknie projektowym formularz Form1 i dodaj do niego kolejny przycisk. Zmie
nazw przycisku na btnReplace i ustaw waciwo Text na Zamie. Kliknij dwukrotnie
ten przycisk i dodaj wyrniony kod do metody obsugi zdarzenia Click:
Private Sub btnReplace_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnReplace.Click
' Deklaracja zmiennych.
Dim strData As String
Dim strResults As String
' Pobiera tekst z pola tekstowego.
strData = txtString.Text
' Zamienia wystpienia cigu znakw Witaj.
strResults = strData.Replace("Witaj", "
egnaj")
' Wywietla nowy cig znakw.
MessageBox.Show(strResults, "Cigi znakw")
End Sub
3. Uruchom projekt i wpisz cig Witaj, wiecie! w polu tekstowym, zachowujc wielko liter.
4. Kliknij przycisk Zamie. Powinno pojawi si okno komunikatu z napisem egnaj, wiecie!.
Nie musisz ogranicza si do pojedynczego wyszukiwania i zamiany. Jeli wpiszesz dwa sowa Witaj
w polu tekstowym i klikniesz przycisk Zamie, program wywietli dwa sowa egnaj. Jednak musisz
pamita o wielkoci liter ten program nie zamieni sowa witaj. Porwnywanie cigw znakw
bez uwzgldniania wielkoci liter opisano w nastpnym rozdziale.
Uywanie dat
Kolejny czsto uywany typ danych to Date. Ten typ przechowuje wartoci reprezentujce daty.
SPRBUJ SAM
Typy danych 85
Jak to dziaa?
Typ danych Date moe suy do przechowywania wartoci reprezentujcych dat i czas. Po utworzeniu zmiennej tego typu metoda inicjuje j za pomoc aktualnej daty i czasu suy do tego
instrukcja Now. Nastpnie metoda wywietla dat w oknie dialogowym. Warto zauway, e poniewa program ma wywietla zmienn typu Date jako cig znakw, naley uy metody ToString
do przeksztacenia wartoci na taki cig:
'
Deklaracja zmiennej.
dteResults = Now
'
Wywietlanie wyniku.
Typ danych Date nie rni si od innych typw danych, cho daje wiele moliwoci. Kilka kolejnych
punktw opisuje, jak manipulowa datami i kontrolowa sposb ich wywietlania na ekranie.
Formatowanie dat
Widziae ju jeden sposb formatowania daty. Domylnie data po przekazaniu jej do metody
MessageBox.Show zostanie wywietlona w sposb przedstawiony na rysunku 3.11.
Poniewa uywana maszyna ma polskie ustawienia regionalne, data ma format rrrr-mm-dd, a czas
jest wywietlany w formacie 24-godzinnym. Jest to kolejny przykad wpywu ustawie regionalnych
na formatowanie rnych typw danych. Jeli zmienisz ustawienia regionalne komputera na
Stany Zjednoczone, data bdzie miaa format m/d/rrrr, a czas bdzie wywietlany w formacie
12-godzinnym, na przykad 10/2/2006 10:48:06 AM.
Cho moesz kontrolowa sposb wywietlania daty i czasu, najlepiej polega pod tym wzgldem
na platformie .NET. Dziki temu dane s automatycznie wywietlane w formacie dogodnym dla
uytkownika.
SPRBUJ SAM
Formatowanie dat
To wiczenie Sprbuj sam przedstawia cztery uyteczne metody, ktre umoliwiaj formatowanie dat.
1. Otwrz kod formularza Form1 w edytorze kodu, znajd metod obsugi zdarzenia Click
przycisku, a nastpnie dodaj do niej wyrniony pogrubieniem kod:
'
Wywietlanie wyniku.
Wywietlanie dat.
Wywietlanie czasu.
SPRBUJ SAM
W tym wiczeniu Sprbuj sam zobaczysz, jak pobiera skadniki daty i czasu zapisane w zmiennych typu Date.
1. Wr do okna projektowego w projekcie Date Demo i dodaj do formularza kolejny przycisk.
Nazwij go btnDateProperties i ustaw jego waciwo Text na Waciwoci daty. Kliknij
dwukrotnie ten przycisk i dodaj wyrniony pogrubieniem kod do metody obsugi zdarzenia
Click:
Private Sub btnDateProperties_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnDateProperties.Click
' Deklaracja zmiennej.
Dim dteResults As Date
' Pobranie aktualnej daty i czasu.
dteResults = Now
' Wywietlanie rnych waciwoci daty.
MessageBox.Show("Miesic: " & dteResults.Month, "Wywietlanie daty")
MessageBox.Show("Dzie: " & dteResults.Day, "Wywietlanie daty")
MessageBox.Show("Rok: " & dteResults.Year, "Wywietlanie daty")
MessageBox.Show("Godzina: " & dteResults.Hour, "Wywietlanie daty")
MessageBox.Show("Minuta: " & dteResults.Minute, "Wywietlanie daty")
MessageBox.Show("Sekunda: " & dteResults.Second, "Wywietlanie daty")
MessageBox.Show("Dzie tygodnia: " & dteResults.DayOfWeek, "Wywietlanie daty")
MessageBox.Show("Dzie roku: " & dteResults.DayOfYear, "Wywietlanie daty")
End Sub
Typy danych 87
Jak to dziaa?
Dziaanie tego kodu jest cakiem proste. Jeli chcesz pobra godzin, musisz uy waciwoci Hour.
Aby pobra rok, uywasz waciwoci Year i tak dalej.
Stae w datach
W poprzednim wiczeniu Sprbuj sam waciwo DayOfWeek zwracaa liczb cakowit, co wida
na rysunku 3.12.
Aktualna data to 17 czerwca 2010 roku, jest czwartek, a program wywietla liczb 4. Pierwszym
dniem tygodnia w Polsce jest niedziela, a odliczanie rozpoczyna si od zera, dlatego czwartek ma
warto 4. Moliwe jednak, e uywasz komputera, na ktrym ustawienia regionalne okrelaj
poniedziaek jako pierwszy dzie tygodnia. W takiej sytuacji waciwo DayOfWeek zwrciaby
warto 3. Skomplikowane? Moliwe, jednak wystarczy zapamita, e dzie numer jeden to nie
zawsze poniedziaek. Podobna sytuacja ma miejsce w jzyku naturalnym polska roda to po
angielsku Wednesday.
SPRBUJ SAM
Jeli chcesz pobra nazw dnia lub miesica, najlepiej jest uy do tego platformy .NET, ktra zwrci
odpowiedni nazw na podstawie ustawie regionalnych komputera. Opisuje to ponisze wiczenie
Sprbuj sam.
1. Wr do okna projektowego w projekcie Date Demo i dodaj do formularza nowy przycisk.
Nazwij go btnDateNames i zmie jego waciwo Text na Nazwy dni i miesicy.
Kliknij dwukrotnie przycisk i dodaj wyrniony pogrubieniem kod do metody obsugi
zdarzenia Click:
Private Sub btnDateNames_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnDateNames.Click
' Deklaracja zmiennej.
Dim dteResults As Date
' Pobranie aktualnej daty i czasu.
dteResults = Now
MessageBox.Show("Nazwa dnia tygodnia: " & dteData.ToString("dddd"), _
"Wywietlanie daty")
MessageBox.Show("Nazwa miesica: " & dteData.ToString("MMMM"), _
"Wywietlanie daty")
End Sub
Zwykle nie zaleca si uywania metody ToString do formatowania dat, poniewa lepiej polega na
wbudowanych formatach platformy .NET. Cig "dddd" pozwala wywietli nazw dnia tygodnia,
a "MMMM" reprezentuje nazw miesica. Wielko znakw jest istotna cig znakw "mmmm" nie
zadziaa.
Aby zobaczy dziaanie tej techniki, moesz zmieni ustawienia regionalne na angielski. Dowiesz si
wtedy na przykad, e dzie tygodnia to Friday, a nazwa miesica to February.
Literay dat funkcjonuj w podobny sposb, jednak do oznaczenia pocztku i koca daty suy znak
kratki (#).
SPRBUJ SAM
W tym wiczeniu Sprbuj sam dowiesz si, jak definiowa literay dat.
1. Wr do okna projektowego w projekcie Date Demo i dodaj do formularza nastpny przycisk.
Zmie jego nazw na btnDateLiterals, a waciwo Text na Literay dat.
Kliknij dwukrotnie przycisk i dodaj do metody obsugi zdarzenia Click wyrniony
pogrubieniem kod:
Private Sub btnDateLiterals_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnDateLiterals.Click
' Deklaracja zmiennych.
Dim dteResults As Date
' Przypisywanie do zmiennej daty i czasu.
dteResults = #1/1/2010 8:01:00 AM#
' Wywietlanie daty i czasu.
MessageBox.Show(dteResults.ToLongDateString & " " & _
dteResults.ToLongTimeString, "Wywietlanie daty")
End Sub
2. Uruchom projekt i kliknij przycisk. Powinien pojawi si komunikat widoczny na rysunku 3.13.
Typy danych 89
Jak to dziaa?
Definiujc literay dat, trzeba uywa formatu mm/dd/rrrr, niezalenie od ustawie regionalnych
komputera. Kompilator moe nie zgosi bdu, jeli zdefiniujesz dat w formacie dd/mm/rrrr,
poniewa dana data moe by poprawna w obu formatach (na przykad 06/07/2010). Ten wymg
pozwala unikn wieloznacznoci czy 6/7/2010 oznacza szsty lipca, czy sidmy czerwca?
UWAGA
W praktyce ta zasada dotyczy wszystkich aspektw programowania nie ma czego takiego
jak dialekty jzykw programowania. Zwykle najlepiej stosowa si do standardw
pnocnoamerykaskich. Jak dowiesz si z lektury dalszych rozdziaw tej ksiki, dotyczy
to take nazw zmiennych i metod na przykad uywa si nazwy GetColor (amerykaski
angielski) zamiast GetColour (brytyjski angielski).
Warto take pamita, e nie trzeba wywietla jednoczenie daty i czasu. Mona wywietli tylko
jedn z tych informacji.
Manipulowanie datami
Jednym z zagadnie, ktre zawsze sprawiay pewne problemy programistom, jest manipulowanie
datami. Pamitasz przeddzie roku 2000, kiedy wszyscy obawiali si, czy komputery poradz sobie
z nadejciem nowego tysiclecia? Kopoty moe sprawia take obsuga lat przestpnych.
Najbliszy przeom stuleci, ktry przypada na rok przestpny, to przejcie midzy rokiem 2399 a 2400.
Ponisze wiczenie Sprbuj sam opisuje, jak uy pewnych metod typu danych Date w celu przystosowania daty tak, aby pynnie przesza w XXV wiek.
SPRBUJ SAM
Manipulowanie datami
2. Uruchom projekt i kliknij przycisk. Kolejno pojawi si trzy okna komunikatu. Pierwsze
okno wywietli dug wersj daty 2400-02-29, drugie okno pokae dug wersj daty
2400-08-28, a w ostatnim oknie zobaczysz dug wersj daty 2399-02-28.
Jak to dziaa?
Klasa Date udostpnia kilka metod sucych do manipulowania datami. W poprzednim wiczeniu Sprbuj sam uye trzech z nich:
'
dteChangedDate = dteStartDate.AddDays(1)
MessageBox.Show(dteChangedDate.ToLongDateString, "Date Demo")
' Dodanie kilku miesicy i wywietlenie wyniku.
dteChangedDate = dteStartDate.AddMonths(6)
MessageBox.Show(dteChangedDate.ToLongDateString, "Date Demo")
' Odjcie roku i wywietlenie wyniku.
dteChangedDate = dteStartDate.AddYears(-1)
MessageBox.Show(dteChangedDate.ToLongDateString, "Date Demo")
Warto zauway, e przekazanie liczby ujemnej do metody Add zmiennej typu Date powoduje
odjcie odpowiedniej liczby jednostek czasu (w przykadzie rok zmieni si z 2400 na 2399). Inne istotne metody z rodziny Add to AddHours (dodawanie godzin), AddMinutes (dodawanie minut),
AddSeconds (dodawanie sekund) i AddMilliseconds (dodawanie milisekund).
Zmienne logiczne
Dotd poznae typy danych Integer, Double, Single, String i Date. Inny wany typ danych to
Boolean. Gdy poznasz ten typ danych, bdziesz umia uywa wszystkich podstawowych typw
danych najczciej stosowanych w programach.
Zmienne typu Boolean (zmienne logiczne) maj zawsze jedn z dwch wartoci: True lub False.
Zmienne logiczne s bardzo istotne, kiedy programy maj podejmowa decyzje, co bardziej szczegowo opisuje rozdzia 4.
Przechowywanie zmiennych
Najbardziej ograniczonym zasobem komputera jest zwykle pami. Powiniene stara si jak najlepiej wykorzysta dostpn ilo pamici. Kiedy tworzysz zmienn, zajmujesz fragment pamici,
dlatego musisz stara si uywa jak najmniejszej liczby zmiennych i uywa tych, ktrych musisz,
w jak najwydajniejszy sposb.
Przechowywanie zmiennych 91
System dwjkowy
Komputery uywaj systemu dwjkowego (binarnego) do reprezentowania wszystkich informacji.
Oznacza to, e wszystkie informacje, ktre zapisujesz w komputerze, s w formacie dwjkowym,
czyli maj posta zer i jedynek. Poniszy przykad pokazuje zapis liczby 27. W kodzie dwjkowym
ta liczba ma posta 11011, gdzie kada cyfra reprezentuje potg dwjki. Grny diagram na rysunku
3.14 przedstawia reprezentacj liczby 27 w znanym wszystkim systemie dziesitnym, a dolny
w systemie dwjkowym.
Cho w pierwszej chwili moe si to wydawa nieco niezrozumiae, sprbuj zastanowi si nad funkcjonowaniem systemu dziesitnego. W systemie dziesitnym (o podstawie 10) kada cyfra znajduje
si na pewnej pozycji. Ta pozycja reprezentuje potg liczby 10. Pierwsza pozycja reprezentuje 10 do
potgi zerowej, nastpna 10 do potgi pierwszej i tak dalej. Jeli chcesz wiedzie, jak liczb reprezentuje dany ukad cyfr, musisz sprawdzi cyfry znajdujce si na kolejnych pozycjach, pomnoy
je przez potg liczby 10 przypisan do danej pozycji i doda wyniki.
Tak samo dziaa system dwjkowy. Trudniej go odczyta, poniewa wikszo osb nie jest przyzwyczajona do liczb o podstawie dwa. Aby przeksztaci liczb z systemu dwjkowego na system
dziesitny, naley sprawdzi cyfry znajdujce si na kolejnych pozycjach (zera lub jedynki), pomnoy je przez potg liczby dwa przypisan do danej pozycji i doda wyniki. Suma tych wynikw
to liczba w systemie dziesitnym.
Bity i bajty
W komputerze kada pozycja przyjmujca warto zero lub jeden to bit. Jest to najmniejsza jednostka
informacji, stanowica odpowied na pytanie tak nie i reprezentowana w elemencie ukadu komputera, przez ktry prd pynie lub nie. Liczba przedstawiona na rysunku 3.14 zajmuje osiem pozycji
(bitw), a osiem bitw skada si na jeden bajt. Bajt to jednostka miary suca do opisu pamici
komputera.
Reprezentowanie wartoci
Wikszo wspczesnych komputerw to komputery 32-bitowe, co oznacza, e s zoptymalizowane
pod ktem liczb cakowitych o dugoci 32 bitw. Liczba przedstawiona w poprzednim przykadzie
to liczba 8-bitowa. W przypadku liczb 8-bitowych najwiksz moliw wartoci jest 255:
1x128 + 1x64 + 1x32 + 1x16 + 1x4 + 1x2 + 1x1 = 255
Liczby 32-bitowe mog reprezentowa dowoln warto z przedziau od -2 147 483 648 do 2 147
483 647. Takie wanie liczby mog przechowywa zmienne typu Integer:
Dim intNumber As Integer
W wyniku takiej deklaracji platforma .NET przydziela 32-bitowy blok pamici, ktry moe zawiera
dowoln warto z przedziau od 0 do 2 147 483 647. Pamitaj take, e dostpna ilo pamici jest
ograniczona. Na komputerze z 256 megabajtami pamici moesz zapisa maksymalnie 67 108 864
liczby cakowite typu Integer. Wydaje si, e to duo, ale pamitaj, e pami jest uywana przez
wszystkie programy. Nie powiniene pisa programw, ktre zajmuj tyle pamici, ile tylko mog.
Staraj si oszczdnie gospodarowa pamici.
Moesz take definiowa liczby zmiennoprzecinkowe o podwjnej precyzji, na przykad takie:
Dim dblNumber As Double
Do reprezentowania liczby tego typu potrzeba 64 bitw pamici. Oznacza to, e na komputerze z 256
megabajtami pamici mona zapisa 33 554 432 liczby zmiennoprzecinkowe o podwjnej precyzji.
UWAGA
Liczby zmiennoprzecinkowe o pojedynczej precyzji zajmuj 32 bity pamici. Jest to poowa
tego, co liczby zmiennoprzecinkowe o podwjnej precyzji, a take tyle samo, co liczby
cakowite.
Jeli zdefiniujesz zmienn typu Integer, zawsze zajmuje ona tak sam ilo pamici (32 bity) niezalenie od tego, jak liczb w niej przechowujesz 1, 3, 249 czy 2 147 483 647. Wielko liczby
nie ma adnego wpywu na ilo pamici potrzebnej do jej przechowywania. Moe si to wydawa
wielkim marnotrawstwem, ale komputery wymagaj, aby liczby tego samego typu zajmoway tak
sam ilo pamici. W przeciwnym razie szybko dziaania programw znacznie by si zmniejszya.
Przechowywanie zmiennych 93
W przeciwiestwie do typw Integer czy Double zmienne typu String nie maj staej dugoci.
Kady znak w cigu znakw zajmuje dwa bajty, czyli 16 bitw. Dlatego do reprezentowania cigu
znakw o dugoci 12 znakw potrzeba 24 bajtw, czyli 192 bitw. Oznacza to, e na komputerze
z 256 megabajtami pamici mona zapisa niewiele ponad dwa miliony cigw znakw o takiej
dugoci. Oczywicie dwa razy duszy cig znakw wymaga dwukrotnie wicej pamici i tak dalej.
Czstym bdem popenianym przez pocztkujcych programistw jest nieuwzgldnianie wpywu
uywanego typu danych na rozmiar zajmowanej pamici. Jeli uywasz zmiennej typu String do
przechowywania wartoci liczbowych, na przykad w taki sposb:
Dim strData As String
strData = "65536"
do jej zapisania potrzebujesz 10 bajtw (80 bitw). Jest to mniej wydajne rozwizanie od przechowywania tej wartoci w zmiennej typu Integer. Aby moliwe byo zapisanie liczby w cigu znakw,
komputer musi przeksztaci wszystkie cyfry na reprezentujce je znaki. Znaki te s zapisywane
w standardzie Unicode, ktry definiuje sposb przechowywania znakw na komputerze. Kademu
znakowi odpowiada niepowtarzalna liczba z przedziau od 0 do 65 535 i to wanie ta liczba jest
przechowywana w kadym bajcie cigu znakw.
Poniej przedstawione s kody standardu Unicode reprezentujce cyfry wchodzce w skad przykadowego cigu znakw:
Kady znak zajmuje 16 bitw, dlatego do zapisania 5-cyfrowej liczby potrzeba 80 bitw piciu
16-bitowych liczb. Lepszym rozwizaniem jest zadeklarowanie tej liczby w nastpujcy sposb:
Dim intNumber As Integer
intNumber = 65536
Powoduje to zapisanie wartoci jako jednej liczby w systemie dwjkowym. Zmienne typu Integer
zajmuj 32 bity, dlatego reprezentacja powyszej liczby to 00000000 00000001 00000000 00000000,
co zajmuje duo mniej miejsca ni reprezentacja tej samej liczby w postaci cigu znakw.
Przeksztacanie wartoci
Cho cigi znakw s intuicyjne w uyciu dla ludzi, s nienaturalne dla komputerw. Naturalnym
dziaaniem komputera jest pobranie dwch liczb i wykonanie na nich pewnych podstawowych
matematycznych operacji. Komputer potrafi w cigu sekundy wykona tak du liczb takich
prostych operacji, e uytkownik szybko otrzymuje dane wyniki.
Wyobra sobie, e komputer musi doda liczb 1 do liczby 27. Wiesz ju, e liczba 27 w systemie
dwjkowym to 11011. Rysunek 3.15 przedstawia operacj dodawania.
Jak wida, arytmetyka na liczbach w systemie dwjkowym nie rni si od arytmetyki w systemie
dziesitnym. Nie mona doda jednoci do ostatniej pozycji, poniewa w systemie dwjkowym cyfry
mog przyjmowa wartoci zero lub jeden, dlatego trzeba zmieni cyfr na ostatniej pozycji na zero
i przenie jedynk na nastpn pozycj. Take tu nie mona doda jednoci, wic ponownie naley
zmieni bit na zero i przenie jedynk na nastpn pozycj. W tym momencie dodawanie si koczy,
a warto nowej liczby to zgodnie z oczekiwaniami 28.
Komputer przed wykonaniem operacji na wartoci musi j przeksztaci na proste liczby. W celu
poprawy wydajnoci aplikacji naley stara si minimalizowa liczb konwersji. Poniej znajduje si
prosty przykad:
Dim strResults As String
strResults = "27"
strResults = strResults + 1
MessageBox.Show(strResults)
Metody 95
1.
2.
3.
4.
W tym przypadku potrzebna jest tylko jedna konwersja, i to uzasadniona. Metoda MessageBox.Show
uywa cigw znakw, dlatego trzeba przeksztaci liczb na odpowiedni typ.
Jedna prosta zmiana w kodzie pozwolia zmniejszy liczb konwersji z dwch (z cigu znakw na
liczb i z powrotem na cig znakw) do jednej. Dziki temu program bdzie dziaa bardziej wydajniej i zuyje mniej pamici. Poprawa wydajnoci w tym przypadku nie jest wielka, jednak wyobra
sobie, e taka operacja ma miejsce setki tysicy razy na minut. Zapewni to popraw wydajnoci systemu jako caoci.
UWAGA
Niezwykle istotne jest, aby uywa typw danych odpowiednich do wykonywanych zada.
W prostych programach, takich jak te przedstawione w tym rozdziale, utrata wydajnoci
nie jest widoczna. Jednak kiedy zaczniesz pisa bardziej zoone, zaawansowane aplikacje,
powiniene zadba o optymalizacj kodu i uywa odpowiednich typw danych.
Metody
Metoda to samodzielny blok kodu, ktry wykonuje jakie operacje. Metody s kluczowe z dwch
powodw. Po pierwsze, pozwalaj podzieli program na mniejsze i bardziej zrozumiae fragmenty.
Po drugie, uatwiaj powtrne wykorzystanie kodu (to zagadnienie wielokrotnie pojawia si w dalszych rozdziaach tej ksiki).
Jak ju wiesz, kiedy zaczynasz pisa program, powiniene zacz od utworzenia oglnego algorytmu,
a nastpnie dopracowywa jego szczegy do czasu powstania reprezentujcego go kodu. Metoda
opisuje instrukcj algorytmu, na przykad otwrz plik, wywietl tekst na ekranie, wydrukuj
dokument i tak dalej.
Umiejtno rozkadania programu na metody programista nabywa wraz z dowiadczeniem. Co
gorsza, duo atwiej zrozumie, dlaczego naley uywa metod, kiedy pisze si duo bardziej skomplikowane programy ni te przedstawione do tej pory. Dalsze fragmenty tego podrozdziau opisuj,
jak i dlaczego naley uywa metod.
Celem stosowania metod jest umoliwienie wielokrotnego wykorzystania kodu. Zasady uywania
metod maj sens, kiedy spojrzysz na to z perspektywy caego programu. Kiedy przyjrzysz si wszystkim algorytmom skadajcym si na program, moesz znale w nich wsplne elementy. Jeli musisz
wykona dan operacj wicej ni raz, warto umieci j w metodzie, ktr mona wielokrotnie
wywoywa.
Wyobra sobie program skadajcy si z wielu algorytmw. Niektre z nich wymagaj obliczenia
powierzchni koa. Poniewa pewne algorytmy musz zawiera operacje prowadzce do obliczenia
tej powierzchni, mona przeksztaci je w metod. Wystarczy napisa kod obliczajcy powierzchni
koa na podstawie jego promienia i podda go hermetyzacji (opakowa) w metodzie, ktr mona
wykorzysta w innych algorytmach. Dziki temu nie trzeba wielokrotnie pisa kodu wykonujcego
te same operacje wystarczy zrobi to raz i wykorzysta ten sam kod w innych miejscach.
Moliwe, e jeden algorytm wymaga obliczenia powierzchni koa o promieniu 100, podczas gdy inny
algorytm potrzebuje powierzchni koa o promieniu 200. Tworzc metod, ktra przyjmuje promie
jako parametr, moesz uy jej do obliczenia powierzchni koa o dowolnym promieniu.
UWAGA
W jzyku Visual Basic 2010 metody definiuje si, uywajc sowa kluczowego Sub lub sowa
kluczowego Function. Sub to skrt od angielskiego subroutine (procedura) sowo to suy
do tworzenia metod, ktre nie zwracaj wartoci, o czym dowiedziae si ju w rozdziale 1.
Sowo kluczowe Function pozwala definiowa metody zwracajce warto, czyli funkcje.
Metody 97
Powyszy kod to metoda. Jest to samodzielny blok kodu wykonujcy pewne operacje. Ta metoda
dodaje 1 do wartoci zmiennej intNumber i wywietla wynik w oknie komunikatu.
Ta metoda nie zwraca wartoci jest to procedura, dlatego rozpoczyna si od sowa kluczowego
Sub, a koczy wyraeniem End Sub. Wszystko midzy tymi wyraeniami to kod metody. Przyjrzyj
si utworzonej automatycznie przez Visual Basic 2010 definicji metody:
Private Sub btnAdd_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnAdd.Click
1. Na pocztku pojawia si sowo Private. Znaczenie tego sowa wyjanione jest w jednym
z dalszych rozdziaw. Na razie zapamitaj, e takiej metody nie mona wywoa poza
dan klas.
2. Nastpnie wystpuje sowo kluczowe Sub, ktre informuje jzyk Visual Basic 2010,
e jest to definicja procedury.
3. Kolejny element to wyraenie btnAdd_Click. Jest to nazwa procedury.
4. W nawiasie znajduje si wyraenie ByVal sender As System.Object, ByVal e As
System.EventArgs. To wyraenie informuje jzyk Visual Basic 2010, e metoda przyjmuje
dwa parametry: sender i e. Stosowanie parametrw omwiono w dalszej czci tego
rozdziau.
5. Na kocu znajduje si wyraenie Handles btnAdd.Click. To wyraenie informuje jzyk
Visual Basic 2010, e dan metod naley wywoywa w wyniku kliknicia przycisku btnAdd.
SPRBUJ SAM
Uywanie metod
Plik z kodem projektu Three Buttons mona pobra z witryny helion.pl.
To wiczenie Sprbuj sam opisuje, jak utworzy metod wywietlajc okno komunikatu, a take
jak wywoa t metod za pomoc trzech rnych przyciskw.
1. Utwrz now aplikacj typu Windows Forms Application i nazwij j Three Buttons.
2. Za pomoc okna narzdzi dodaj do formularza trzy przyciski.
3. Kliknij dwukrotnie pierwszy przycisk (Button1), aby utworzy now metod obsugi
zdarzenia Click. Dodaj do programu wyrniony pogrubieniem kod:
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
' Wywoanie metody.
SayHello()
End Sub
Private Sub SayHello()
' Wywietlanie okna komunikatu.
MessageBox.Show("Witaj, wiecie!", "Trzy przyciski")
End Sub
Wyraenie Handles Button1.Click na kocu definicji metody informuje jzyk Visual Basic 2010,
e metoda powinna by automatycznie wywoywana w wyniku wyzwolenia zdarzenia Click
przycisku. Elementem definicji s dwa udostpniane przez jzyk Visual Basic 2010 parametry,
ktrymi na razie nie musisz si przejmowa. Poza t metod znajduje si definicja nowej metody:
Private Sub SayHello()
' Wywietlanie okna komunikatu.
MessageBox.Show("Witaj, wiecie!", "Trzy przyciski")
End Sub
Ta nowa metoda nosi nazw SayHello. Kod znajdujcy si pomidzy pierwszym a ostatnim
wierszem to kod metody wykonywany w wyniku jej wywoania. W tym przypadku kod metody
wywietla okno komunikatu.
W momencie kliknicia przycisku program wywouje metod Button1_Click. Z kolei metoda
Button1_Click wywouje metod SayHello. W sumie w wyniku kliknicia przycisku program
wywietla okno komunikatu.
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
'
Wywoanie metody.
SayHello()
End Sub
Powinno to wyjani oglne dziaanie metod, ale czy naprawd warto rozbija kod na odrbne metody w celu wywietlenia okna komunikatu? Nastpne wiczenie Sprbuj sam stanowi odpowied
na to pytanie.
SPRBUJ SAM
W tym wiczeniu zobaczysz, jak powtrnie wykorzysta metod przez wywoanie jej w innych obszarach kodu.
1. Jeli program wci dziaa, zamknij go.
2. Wr do okna projektowego i dwukrotnie kliknij drugi przycisk. Dodaj do nowej
metody wyrniony pogrubieniem kod:
Private Sub Button2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button2.Click
' Wywoanie metody.
SayHello()
End Sub
3. Ponownie otwrz okno projektowe i kliknij dwukrotnie trzeci przycisk. Dodaj do niego
wyrniony pogrubieniem kod:
Metody 99
Zauwa, e sowo kluczowe Handles wie kad z tych metod z innym przyciskiem Button1,
Button2 i Button3.
Bardzo istotne (i sprytne!) jest to, e efekty zmiany wprowadzonej w metodzie SayHello s takie same
dla kadego z trzech przyciskw. Jest to bardzo wana technika programistyczna. Dziki niej moesz
zebra kod w jednym miejscu, a wprowadzone w nim zmiany s odzwierciedlane w caej aplikacji.
Pozwala to zaoszczdzi czas potrzebny na wielokrotne przepisywanie tego samego lub bardzo podobnego kodu.
Tworzenie metod
W poprzednim wiczeniu Sprbuj sam zbudowae metod wywietlajc statyczny tekst. Metody
s najprzydatniejsze, jeli przyjmuj dane i wykonuj na nich uyteczne operacje. Czasem metoda
powinna zwraca warto, co ilustruje nastpne wiczenie Sprbuj sam.
Tworzenie metody
W tym wiczeniu Sprbuj sam opisano tworzenie metody zwracajcej warto, a dokadniej
tworzenie metody zwracajcej powierzchni koa obliczon na podstawie jego promienia.
Suy do tego poniszy algorytm:
Zwracanie wyniku.
Return dblResult
End Function
2. Teraz usu star wersj metody Button1_Click i wstaw zamiast niej wyrniony
pogrubieniem kod:
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
' Deklaracja zmiennej.
Dim dblArea As Double
' Obliczanie powierzchni koa o promieniu 100.
dblArea = CalculateAreaFromRadius(100)
' Wywietlanie wyniku.
MessageBox.Show(dblArea.ToString, "Pole dla promienia 100.")
End Sub
3. Uruchom projekt i kliknij przycisk Button1. Pojawi si okno widoczne na rysunku 3.16.
Metody 101
Jak to dziaa?
Ten program zawiera odrbn metod o nazwie CalculateAreaFromRadius. Do deklarowania tej
metody suy blok Private Function End Function.
Private Function CalculateAreaFromRadius(ByVal radius As Double) As Double
End Function
Function
a End
Function
Wyraenie ByVal radius As Double definiuje parametr tej metody. ByVal oznacza, e parametr
jest przekazywany przez warto. W przypadku parametrw przekazywanych przez warto platforma .NET tworzy now zmienn i zapisuje w niej informacje przekazane za pomoc parametru.
Oryginalna warto parametrw przekazywanych w ten sposb nie zmienia si. W tym przypadku
definicja informuje platform .NET, e do metody przekazywany jest parametr o nazwie radius.
Powoduje to utworzenie nowej zmiennej o nazwie radius takiej samej jak zmienna utworzona
w wyniku wykonania poniszej instrukcji:
Dim radius As Double
Jest jednak pewna istotna rnica. Warto zmiennej przekazywanej jako parametr jest automatycznie ustawiana na podan warto, dlatego jeli jako warto parametru przekaesz 200, jest
to rwnowane nastpujcej instrukcji:
Dim radius As Double = 200
UWAGA
Parametry mona przekazywa take przez referencj, do czego suy sowo kluczowe ByRef.
Kiedy parametr jest przekazywany przez referencj, jego nazwa uywana w ciele metody
staje si po prostu inn nazw oryginalnej zmiennej, dlatego wszelkie zmiany wprowadzone
w tej zmiennej w ciele metody s odzwierciedlane w oryginale.
Wyraenie As Double na kocu deklaracji metody informuje jzyk Visual Basic 2010, e metoda
zwraca liczb zmiennoprzecinkow o podwjnej precyzji:
Private Function CalculateAreaFromRadius(ByVal radius As Double) As Double
Teraz moesz dokadniej przyjrze si kodowi metody. Wiesz ju, e do obliczenia powierzchni koa
suy nastpujcy algorytm:
1. Pobranie liczby reprezentujcej promie koa.
2. Podniesienie tej liczby do kwadratu.
3. Pomnoenie tej liczby przez pi ().
Dokadnie tak dziaa metoda CalculateAreaFromRadius:
'
Deklaracja zmiennych.
w powyszym kodzie to staa platformy .NET, ktra zawiera warto liczby pi. W ostatnim
wierszu metody naley zwrci wynik do kodu wywoujcego t metod. Suy do tego nastpujca
instrukcja:
Math.PI
'
Zwracanie wyniku.
Return dblResult
CalculateAreaFromRadius
i wywietla
Deklaracja zmiennej.
dblArea = CalculateAreaFromRadius(100)
'
Wywietlanie wyniku.
Nazwy metod
Jest kilka standardw nazewnictwa zalecanych przy pisaniu programw na platform .NET. Te standardy pomagaj programistom atwo przechodzi midzy jzykami, co opisuje rozdzia 2. Do tworzenia nazw metod zaleca si uywa notacji paskalowej. W tej notacji pierwsze litery wszystkich sw
s due, a pozostae mae. Jest to tylko sugestia zwizana z najlepszymi praktykami kodowania,
a nie wymg jzyka Visual Basic 2010. Przykady takich nazw to:
CalculateAreaFromRadius
OpenXmlFile
GetEnvironmentValue
Zwr uwag, e w tej notacji nawet skrty (w tym przypadku XML) nie s pisane duymi literami.
Pozwala to unikn dwuznacznoci w sytuacjach, kiedy nie wiadomo, czy dane sowo jest normalnie
pisane duymi literami.
Z kolei notacj zalecan do nazw parametrw jest tak zwana notacja wielbdzia. Jeli miae kiedy
styczno z kodem pisanym w jzyku Java, prawdopodobnie znasz ju t notacj. Notacja wielbdzia
jest podobna do notacji paskalowej, ale pierwsze sowo nazwy jest pisane ma liter, na przykad:
Metody 103
myAccount
customerDetails
updateDnsRecord
Take w tym przypadku skrty (DNS) traktuje si jak zwyke sowa, dlatego podobnie jak w notacji
paskalowej skadaj si z duych i maych liter.
UWAGA
Notacja wielbdzia zawdzicza nazw temu, e w rodku nazw pojawiaj si garby, na przykad
takiGarb. Nazwa notacji paskalowej pochodzi od jzyka programowania Pascal, na ktrego
potrzeby opracowano t notacj.
W rozdziale 2. dowiedziae si, e platforma .NET nie jest zwizana z jednym konkretnym jzykiem.
Poniewa niektre jzyki s wraliwe na wielko znakw, a inne nie, wane jest, aby uywa standardw uatwiajcych prac innym programistom, ktrzy mog mie dowiadczenie w pisaniu
programw w innych jzykach.
Wraliwo na wielko znakw oznacza, e wane jest to, czy nazwa zawiera due, czy mae litery.
W jzykach wraliwych na wielko znakw nazwy MYACCOUNT i myAccount to co zupenie innego.
Jzyk Visual Basic 2010 nie jest wraliwy na wielko znakw, dlatego mona uywa sw z literami
dowolnej wielkoci, a nazwy MYACCOUNT i mYacCounT oznaczaj to samo.
UWAGA
Jzyki wraliwe na wielko znakw to midzy innymi Java, C# i C++.
Zasig
W opisie pojcia metoda pojawio si stwierdzenie samodzielny blok kodu. Ta cecha ma due
znaczenie ze wzgldu na sposb uywania i definiowania zmiennych w metodach. Wyobra sobie,
e uywasz dwch metod, a w kadej z nich znajduje si zmienna o nazwie strName:
Private Sub DisplaySebastiansName()
' Deklaracja zmiennej i przypisanie do niej wartoci.
Dim strName As String
strName = "Sebastian Blackwood"
'
MessageBox.Show(strName, "Zasig")
End Sub
Private Sub DisplayBalthazarsName()
' Deklaracja zmiennej i przypisanie do niej wartoci.
Dim strName As String
strName = "Balthazar Keech"
'
MessageBox.Show(strName, "Zasig")
End Sub
SPRBUJ SAM
Zasig
Plik z kodem projektu Scope Demo mona pobra z witryny helion.pl.
W tym wiczeniu zaczniesz poznawanie zasigu zmiennych za pomoc uywanej w dwch rnych
metodach zmiennej o tej samej nazwie.
1. Utwrz nowy projekt typu Windows Forms Application i nazwij go Scope Demo.
2. Dodaj przycisk do formularza, nazwij go btnScope i ustaw jego waciwo Text na Zasig.
Kliknij dwukrotnie ten przycisk i dodaj wyrniony pogrubieniem kod do metody obsugi
zdarzenia Click. Nastpnie dodaj dwie pozostae przedstawione metody.
Private Sub btnScope_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnScope.Click
' Wywoanie metody.
DisplayBalthazarsName()
End Sub
Private Sub DisplaySebastiansName()
' Deklaracja zmiennej i przypisanie do niej wartoci.
Dim strName As String
strName = "Sebastian Blackwood"
' Wywietlanie wartoci zmiennej.
MessageBox.Show(strName, "Zasig")
End Sub
Private Sub DisplayBalthazarsName()
' Deklaracja zmiennej i przypisanie do niej wartoci.
Dim strName As String
strName = "Balthazar Keech"
' Wywietlanie wartoci zmiennej.
MessageBox.Show(strName, "Zasig")
End Sub
Podsumowanie 105
MessageBox.Show(strName, "Zasig")
End Sub
Private Sub DisplayBalthazarsName()
' Deklaracja zmiennej i przypisanie do niej wartoci.
Dim strName As String
strName = "Balthazar Keech"
'
MessageBox.Show(strName, "Zasig")
End Sub
Po rozpoczciu wykonywania metody zdefiniowane w niej (w obrbie wyrae Sub i End Sub lub
Function i End Function) zmienne maj zasig lokalny. Zasig okrela, w jakich miejscach programu dana zmienna jest widoczna. Zmienne o zasigu lokalnym s widoczne w obrbie metody, w ktrej
zostay zdefiniowane.
Zmienna strName formalnie nie istnieje do momentu rozpoczcia wykonywania metody. Na tym
etapie platforma .NET i system Windows przydzielaj pami dla tej zmiennej, dziki czemu mona
uy jej w kodzie. Na pocztku metoda przypisuje warto do tej zmiennej, a nastpnie wywietla
okno komunikatu. Zmienna zdefiniowana w metodzie DisplayBalthazarsName powstaje w momencie wywoania tej metody, nastpnie uruchamiany jest kod zmieniajcy warto tej zmiennej,
a po zakoczeniu dziaania metody rodowisko usuwa zmienn.
UWAGA
W rozdziale 4. dowiesz si, e zasig mona ograniczy jeszcze bardziej do ptli dziaajcych
w procedurach i funkcjach.
Podsumowanie
Ten rozdzia opisuje podstawy pisania programw nie tylko w jzyku Visual Basic 2010, ale we
wszystkich jzykach programowania. Na pocztku przedstawione jest pojcie algorytmu, ktry
stanowi podstaw kadego programu komputerowego. Nastpnie opisane s zmienne oraz najczciej uywane typy danych Integer, Double, String, Date i Boolean. Zobaczye, jak uywa
tych typw danych do wykonywania operacji matematycznych, czenia cigw znakw, zwracania
dugoci cigw znakw, dzielenia tekstu na podcigi, pobierania aktualnej daty i pobierania waciwoci dat. Dowiedziae si take, jak zmienne s przechowywane w komputerze.
Nastpnie opisane zostay metody czym s, do czego ich potrzebujesz i jak je tworzy. Dowiedziae
si take, e zmienne zadeklarowane w obrbie danej metody maj zasig lokalny i nie s widoczne
poza t metod. Ponadto poznae rnice midzy funkcjami a procedurami.
WICZENIA
1. Utwrz aplikacj typu Windows Forms Application i dodaj do niej dwa przyciski. W metodzie
obsugi zdarzenia Click pierwszego przycisku zadeklaruj dwie zmienne typu Integer
i przypisz do nich dowolne liczby. Wykonaj na tych zmiennych dowoln operacj
arytmetyczn i wywietl wynik w oknie komunikatu.
Podsumowanie 107
Informacje
Algorytmy
Zmienne
Metody