SlideShare a Scribd company logo
1 of 18
Download to read offline
IDZ DO
         PRZYK£ADOWY ROZDZIA£

                           SPIS TRE CI   Visual Basic .NET.
                                         Æwiczenia
           KATALOG KSI¥¯EK
                                         Autor: Marcin Szeliga
                      KATALOG ONLINE     ISBN: 83-7361-432-X
                                         Format: B5, stron: 176
       ZAMÓW DRUKOWANY KATALOG


              TWÓJ KOSZYK
                    DODAJ DO KOSZYKA     Kolejna, siódma ju¿ wersja jêzyka Visual Basic (Visual Basic .NET) to prawdziwa
                                         rewolucja — firma Microsoft opracowa³a jednolite rodowisko programistyczne,
                                         a jednym z jego podstawowych jêzyków (oprócz Visual C++ i Visual C#) jest w³a nie
         CENNIK I INFORMACJE             Visual Basic. Dziêki wsparciu potê¿nej firmy, jak¹ jest Microsoft i rozpowszechnieniu
                                         systemu Windows, Visual Basic .NET sta³ siê jednym z najczê ciej u¿ywanych
                   ZAMÓW INFORMACJE      jêzyków programowania na wiecie.
                     O NOWO CIACH        Ksi¹¿ka „Visual Basic .NET. Æwiczenia” adresowana jest do osób, które chc¹ poznaæ
                                         podstawowe zasady tworzenia w jêzyku VB .NET programów sterowanych zdarzeniami.
                       ZAMÓW CENNIK      Jak wszystkie ksi¹¿ki z tej serii jest ona skonstruowana w formie praktycznych
                                         æwiczeñ, pozwalaj¹cych stopniowo zag³êbiaæ siê w niuanse programowania bez
                                         zbêdnych rozwa¿añ teoretycznych.
                 CZYTELNIA               Poznasz:
          FRAGMENTY KSI¥¯EK ONLINE          • Platformê .NET
                                            • Programowanie sterowane zdarzeniami
                                            • Zmienne i sta³e
                                            • Sterowanie przebiegiem wykonywania programu
                                            • Podstawy programowania obiektowego
                                            • Korzystanie z baz danych
                                            • Obs³ugê b³êdów w Visual Basic .NET




Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treści
                       Wstęp.............................................................................................................................................................. 5
Rozdział 1.            Microsoft Visual Studio .NET............................................................................................................... 9
                       Platforma .NET ............................................................................................................................9
                           .NET Framework ...................................................................................................................9
                           Serwery .NET ......................................................................................................................10
                           Visual Studio .NET ..............................................................................................................11
                           Visual Basic .NET ...............................................................................................................19

Rozdział 2. Programy sterowane zdarzeniami ................................................................................................20
                       Klasy...........................................................................................................................................20
                       Obiekty .......................................................................................................................................21
                       Konwencje nazewnicze ..............................................................................................................37
                           Zasady ..................................................................................................................................37
                           Wskazówki...........................................................................................................................38
                       Jak czytelnie zapisywać kod programu? ....................................................................................38

Rozdział 3. Zmienne....................................................................................................................................................... 41
                       Zmienne i stałe ...........................................................................................................................41
                           Stałe......................................................................................................................................45
                       Operatory....................................................................................................................................46
                       Typy danych...............................................................................................................................49
                           Zmienne ...............................................................................................................................50
                           Wskaźniki ............................................................................................................................50
                           Konwersja typów .................................................................................................................51
                           Poprawność wprowadzanych przez u ytkowników danych................................................54
                       Zakres zmiennych ......................................................................................................................55
                       Czas ycia zmiennych ................................................................................................................59
                       Struktury.....................................................................................................................................60
                       Tablice ........................................................................................................................................62
                       Konwencje nazewnicze ..............................................................................................................64
                           Zasady ..................................................................................................................................64
                           Wskazówki...........................................................................................................................65
4                                                                                                                                       Visual Basic .NET. Ćwiczenia


Rozdział 4. Procedury i funkcje.............................................................................................................................. 66
                     Procedury ...................................................................................................................................66
                     Funkcje .......................................................................................................................................73

Rozdział 5. Sterowanie wykonaniem programu............................................................................................. 78
                     Instrukcje warunkowe ................................................................................................................78
                         Instrukcja If … Then............................................................................................................79
                         Instrukcja Select Case ..........................................................................................................81
                     Pętle............................................................................................................................................84
                         Instrukcja For … Next .........................................................................................................84
                         Instrukcja For Each … Next ................................................................................................87
                         Instrukcja Do … Loop .........................................................................................................91

Rozdział 6. Programowanie obiektowe.............................................................................................................. 93
                     Podejście proceduralne...............................................................................................................93
                     Podejście obiektowe...................................................................................................................94
                         Klasa ....................................................................................................................................94
                         Obiekt...................................................................................................................................95
                         Abstrakcja ............................................................................................................................95
                         Dziedziczenie .......................................................................................................................95
                         Hermetyzacja .......................................................................................................................96
                         Interfejs ................................................................................................................................96
                         Polimorfizm .........................................................................................................................98
                     Projektowanie programów zbudowanych z obiektów ...............................................................98
                         Projekt klas...........................................................................................................................99
                     Tworzenie programów zbudowanych z niezale nych obiektów..............................................101
                         Podstawowe techniki programowania obiektowego..........................................................101
                         Składowe współdzielone....................................................................................................112
                         Zaawansowane techniki programowania obiektowego .....................................................114

Rozdział 7.          Dane ............................................................................................................................................................120
                     Relacyjny model baz danych....................................................................................................120
                     XML .........................................................................................................................................121
                     ADO .NET ...............................................................................................................................122
                        Przestrzenie nazw...............................................................................................................122
                        Klasy ..................................................................................................................................122
                        Obiekt Connection .............................................................................................................123
                        Obiekt Command ...............................................................................................................127
                        Kreatory danych.................................................................................................................132
                        Lokalne kopie danych ........................................................................................................136

Rozdział 8. Sprawdzanie poprawności danych ............................................................................................146
                     Uniemo liwianie u ytkownikom programu wpisania niepoprawnych danych .......................147
                        Korzystamy z kontrolek .....................................................................................................147
                        Korzystamy ze zdarzeń ......................................................................................................154
                     Sprawdzanie poprawności poszczególnych danych.................................................................154
                     Sprawdzanie poprawności wszystkich danych ........................................................................158

Rozdział 9. Wyszukiwanie i programowe przechwytywanie błędów ............................................... 160
                     Wyszukiwanie błędów .............................................................................................................160
                     Przechwytywanie błędów.........................................................................................................171
                         Klasa Exception .................................................................................................................172
                         Instrukcja Try … Catch … Finally ....................................................................................172
Rozdział 9.    Wyszukiwanie i programowe przechwytywanie błędów                                    161



Ćwiczenie 9.1.

              Wyszukujemy błędy syntaktyczne

              Błąd syntaktyczny polega na nieprzestrzeganiu reguł języka, w którym tworzony jest
              program. Na przykład, próba u ycia instrukcji For bez odpowiadającej jej instrukcji Next
              jest błędem syntaktycznym.

               1. Utwórz nowy projekt typu Windows Application i nazwij go 4QFKCN.
               2. Zmień nazwę formularza Form1 na HTO$NGF[, jego etykietę na 9[UWMWLGO[
                  K RTGEJY[VWLGO[ D úF[, a rozmiar na  .
               3. W oknie zadań wyświetlony zostanie komunikat błędu — po zmianie nazwy
                 formularza nie istnieje obiekt startowy projektu. Okno zadań nie tylko informuje
                 o błędach, ale równie ułatwia ich wyszukanie i naprawienie. Aby naprawić błąd:
                  a. dwukrotnie kliknij lewym przyciskiem myszy opis błędu,
                  b. wyświetlone zostanie okno dialogowe pozwalające na wybranie nowego obiektu
                     startowego projektu (rysunek 9.1) — zaznacz formularz frmBledy i kliknij
                     przycisk OK.

Rysunek 9.1.
W tym projekcie
jest tylko jeden
formularz
i nie ma procedury
o nazwie Main




               4. Po zmianie obiektu startowego okno zadań nie będzie zawierać adnych komunikatów.
                 Dodaj do formularza przycisk polecenia i ustaw następujące wartości jego atrybutów:
                 Name — EOF5KNPKC, Text — 5KNPKC, Location —  .
               5. Wyświetl okno edytora kodu.
               6. Zadeklaruj zmienną formularza decWynik typu Decimmal: KO FGE9[PKM #U GEKOOCN.
               7. Poniewa przy deklaracji zmiennej popełniliśmy błąd, niewłaściwe słowo zostało
                 podkreślone niebieską, falistą linią — aby dowiedzieć się, na czym polegał nasz
                 błąd, ustaw kursor myszy nad zaznaczonym słowem (rysunek 9.2).
               8. Zauwa , e ten sam komunikat — Type ‘Decimmal’ is not definied. — wyświetlany
                  jest w oknie zadań. Napraw błąd przez podanie prawidłowej nazwy typu GEKOCN.
               9. Utwórz procedurę zdarzenia Click przycisku cmdSilnia.
              10. W ramach procedury zdarzenia:
162                                                                        Visual Basic .NET. Ćwiczenia


Rysunek 9.2.
W Visual Studio
wyświetlony zostanie
krótki opis
błędów syntaktycznych




                  a. zadeklaruj zmienną intLiczba typu Integer: KO KPV.KEDC #U +PVGIGT,
                  b. przypisz zadeklarowanej zmiennej liczbę podaną przez u ytkownika (zwróć
                     uwagę na błędną nazwę funkcji): KPV.KEDC  +PRWT$QZ
 2QFCL NKEDú MVÎTGL
                     UKNPKC OC QUVCè Y[NKEQPC   .
           11. Zadeklaruj funkcję SilniaIteracja oczekującą na argument liczba typu Integer
               i zwracającą dane typu Double: (WPEVKQP 5KNPKC+VGTCELC
$[8CN NKEDC
               #U +PVGIGT #U QWDNG.
           12. Usuń z sekcji deklaracji formularza deklarację zmiennej decWynik.
           13. W ramach funkcji SilniaIteracja:
                  a. zadeklaruj zmienną dblWynik typu Double: KO FDN9[PKM #U QWDNG,
                  b. zadeklaruj zmienną licznik typu Integer: KO NKEPKM #U +PVGIGT,
                  c. w pętli powtarzanej przekazaną jako argument liczbę razy wylicz wartość
                    zmiennej decWynik mno ąc ją za ka dym razem przez wartość zmiennej licznik:
                      (QT NKEPKM   6Q NKEDC
                          FGE9[PKM
NKEPKM

                  d. zwróć wyliczoną silnię: 4GVWTP FGE9[PKM.
           14. W procedurze zdarzenia cmdSilnia_Click wywołaj funkcję SilniaIteracja
                 z argumentem pobranym od u ytkownika i wyświetl na ekranie otrzymany wynik:
                 /UI$QZ
 5KNPKC Y[PQUK 
 5KNPKC+VGTCELC
KPV.KEDC.
           15. W oknie zadań wyświetlone zostaną dwa komunikaty o błędach:
                  a. pierwszy informuje o próbie odwołania się do nieistniejącej funkcji InpurBox,
                  b. drugi — o brakującej instrukcji Next (rysunek 9.3).

Rysunek 9.3.
Lista błędów
syntaktycznych
(składniowych)
Rozdział 9.    Wyszukiwanie i programowe przechwytywanie błędów                                    163


              16. Dwukrotnie kliknij pierwszy komunikat błędu — kursor zostanie ustawiony
                  w miejscu występowania błędu. Popraw nazwę funkcji na +PRWV$QZ.
              17. W ten sam sposób zlokalizuj drugi błąd — tym razem zaznaczona zostanie instrukcja
                 For, która nie została zakończona słowem kluczowym Next. Dopisz je przed
                 zwracającą wynik działania funkcji instrukcją Return:
                   (WPEVKQP 5KNPKC+VGTCELC
$[8CN NKEDC #U +PVGIGT #U QWDNG
                           KO FDN9[PKM #U QWDNG
                           KO NKEPKM #U +PVGIGT
                           (QT NKEPKM   6Q NKEDC
                               FGE9[PKM
NKEPKM
                           0GZV
                           4GVWTP FGE9[PKM
                   'PF (WPEVKQP

              18. Zapisz projekt.


Ćwiczenie 9.2.

              Wyszukujemy błędy konwersji typu

              To, e w programie nie ma błędów syntaktycznych, nie oznacza, e będzie on działał.
              Wynika to stąd, e próba wykonania poprawnie zapisanych instrukcji mo e spowodować
              wystąpienie błędu wykonania, a błędy tego typu nie są zaznaczane podczas tworzenia
              programu.

               1. Uruchom projekt 4QFKCN.
               2. Po podaniu liczby, której silnię chcemy obliczyć, i kliknięciu przycisku OK,
                 na ekranie wyświetlony zostanie komunikat o błędzie pokazany na rysunku 9.4.

Rysunek 9.4.
Uruchomienie
poprawnego składniowo
programu mo e
zakończyć się błędem




               3. W tym przypadku błąd spowodowała próba połączenia ciągu znaków Silnia
                 wynosi z liczbą typu Double. Je eli w programie wystąpi błąd, jego działanie
                 zostaje przerywane, a na ekranie u ytkownika wyświetlony jest niewiele mu
                 mówiący komunikat o wystąpieniu błędu.
               4. Kliknij przycisk Break. Wyświetlone zostanie okno edytora kodu z zaznaczoną
                 na zielono instrukcją, której próba wykonania spowodowała błąd.
               5. W tym momencie program znajduje się w specjalnym trybie diagnostycznym,
                 nazywanym trybem przerwania. Opis tego trybu znajduje się w dalszej części
                 rozdziału, na razie zatrzymaj działanie tego trybu klikając znajdującą się na pasku
                 narzędzi Debug ikonę Stop Debugging albo wybierając z menu Debug opcję Stop
                 Debugging. W obu przypadkach tryb przerwania zostanie wyłączony i zniknie
                 zaznaczenie błędnej instrukcji.
164                                                                            Visual Basic .NET. Ćwiczenia


            6. Popraw błąd przez skonwertowanie na dane tekstowe zwracanego przez funkcję
                 SilniaIteracja wyniku:
                 /UI$QZ
 5KNPKC Y[PQUK       
 5KNPKC+VGTCELC
KPV.KEDC6Q5VTKPI.
             7. Uruchom program i przetestuj jego działanie. Jak widać, wyeliminowanie błędów
                 wykonania nie oznacza, e program będzie działał prawidłowo.
            8. Zakończ działanie programu i zapisz wprowadzone w nim zmiany.


Ćwiczenie 9.3.

           Wyszukujemy błędy związane z przekazaniem nieprawidłowych danych

             1. Wyświetl projekt formularza frmBledy.
            2. Utwórz nową funkcję SilniaRekurencja wywoływaną z jednym parametrem liczba
                 typu Integer i zwracającą dane typu Double.
            3. W ramach funkcji:
                  a. zadeklaruj zmienną dblWynik typu Double,
                  b. sprawdź, czy wartość parametru liczba jest mniejsza od zera i, je eli tak, zwróć
                     wartość , w przeciwnym razie wywołaj funkcję SilniaRekurencja z parametrem
                    o jeden większym przypisując wynik jej wywołania do zmiennej dblWynik,

                 Wywołanie funkcji przez siebie samą jest charakterystyczne dla algorytmów rekurencyjnych.

                  c. zwróć obliczoną wartość zmiennej dblWynik:
                      (WPEVKQP 5KNPKC4GMWTGPELC
$[8CN NKEDC #U +PVGIGT #U QWDNG
                              KO FDN9[PKM #U QWDNG
                              +H NKEDC   6JGP
                                   4GVWTP 
                              'NUG
                                   FDN9[PKM  NKEDC
5KNPKC4GMWTGPELC
NKEDC 
 
                              'PF +H
                              4GVWTP FDN9[PKM
                      'PF (WPEVKQP

            4. W procedurze zdarzenia cmdSilnia_Click wywołaj funkcję SilniaRekurencja
                 z argumentem pobranym od u ytkownika i wyświetl na ekranie otrzymany wynik:
                 /UI$QZ
 5KNPKC Y[PQUK 
 5KNPKC4GMWTGPELC
KPV.KEDC6Q5VTKPI.
            5. Uruchom program. Po chwili jego działanie zostanie przerwane, a na ekranie
                 zostanie wyświetlony komunikat o błędzie z informacją o przepełnieniu stosu.
                 Naciśnij klawisz Break.
            6. Tym razem na ółto zaznaczona została deklaracja funkcji, której wywołanie
                 spowodowało wystąpienie błędu. W naszym przypadku funkcja wywoływała samą
                 siebie bez końca (rysunek 9.5).
             7. Przerwij tryb diagnostyczny i popraw wywołanie funkcji SilniaRekurencja
                na następujące: FDN9[PKM  NKEDC
5KNPKC4GMWTGPELC
NKEDC  .
Rozdział 9.    Wyszukiwanie i programowe przechwytywanie błędów                                         165


Rysunek 9.5.
Korzystając
z rekurencji musimy
tak sformułować
warunek wywoływania
funkcji przez samą
siebie, aby proces
zagnie d ania został
kiedyś zakończony




               8. Uruchom program i przetestuj jego działanie. Po raz kolejny okazuje się, e działający
                 program nie musi być dobrze działającym programem.
               9. Zakończ działanie programu i zapisz wprowadzone w nim zmiany.


Ćwiczenie 9.4.

              Uruchamiamy tryb przerwania

              Najłatwiejsze jest znalezienie i poprawienie błędów syntaktycznych — w tym przypadku
              przewa ającą część pracy wykona za nas Visual Studio. Znalezienie i poprawienie błędów
              wykonania jest ju trudniejsze i wymaga uruchamiania programu z ró nymi zestawami
              testowymi danych wejściowych. Najtrudniejsze jest jednak znalezienie i poprawienie
              błędów logicznych, poniewa ich wystąpienie nie powoduje przerwania działania pro-
              gramu, ale jego nieprawidłowe działanie. Wyszukiwanie błędów tego typu ułatwia spe-
              cjalny tryb przerwania (tryb diagnostyczny) i dostępne w tym trybie narzędzia.

                 Tryb przerwania jest dostępny tylko wtedy, gdy program został skompilowany w wersji Debug.
                 Po zmianie trybu na Release kompilator wygeneruje kod wynikowy, z którego usunięte zostaną
                 wszystkie informacje diagnostyczne. Ta wersja programu przeznaczona jest dla u ytkowników
                 końcowych.

               1. Wyświetl okno edytora kodu formularza frmBledy.
               2. Mo emy przejść w tryb przerwania na kilka sposobów. Po pierwsze, wstawiając
                 w wykonywalnym wierszu programu pułapkę (ang. Breakpoint) — najprościej
                 wstawić ją przez kliknięcie lewego marginesu okna edytora kodu. Kliknij lewy
                 margines na wysokości instrukcji KPV.KEDC  +PRWV$QZ
 2QFCL NKEDú MVÎTGL
                 UKNPKC OC QUVCè Y[NKEQPC   . Wybrany wiersz zostanie zaznaczony.
166                                                                             Visual Basic .NET. Ćwiczenia


            3. Uruchom program. Po kliknięciu przycisku Silnia jego działanie zostanie wstrzymane,
               a na ekranie wyświetlone zostanie okno edytora kodu z zaznaczoną na ółto
               wykonywaną właśnie instrukcją.
             4. Skasuj ustawioną pułapkę przez kliknięcie jej znaku wyświetlanego na lewym
               marginesie.
            5. Wznów działanie programu (np. naciskając klawisz F5 lub klikając ikonę paska
               narzędzi Debug Contine).
            6. Przerwij działanie programu. Innym sposobem na przejście w tryb przerwania
               jest wykonanie instrukcji Stop. Wpisz tę instrukcję przed wywołaniem funkcji
               SilniaIteracja i uruchom program.
             7. Tym razem jego działanie zostało przerwane po zamknięciu okna dialogowego
               umo liwiającego podanie liczby i ponownie zaznaczona na ółto jest ostatnio
               wykonywania instrukcja — instrukcja Stop.
            8. W trybie przerwania nie jest mo liwa zmiana kodu programu. Przerwij jego
               działanie i usuń instrukcję Stop.
            9. Sposobem na warunkowe przejście w tryb przerwania jest wywołanie metody
               Assert obiektu specjalnego Debug. Działanie programu zostanie wstrzymane, je eli
               wynikiem testu logicznego będzie fałsz. W miejsce usuniętej instrukcji Stop wpisz:
               GDWI#UUGTV
KPV.KEDC     .
           10. Uruchom program i podaj liczbę większą ni 1. Poniewa warunek został spełniony,
               działanie programu nie zostało wstrzymane. Raz jeszcze kliknij przycisk Silnia,
               ale nie zmieniaj domyślnej liczby 1. Tym razem warunek nie został spełniony
               (1 nie jest większe ni 1) i wyświetlone zostało okno umo liwiające wstrzymanie
               działania programu (rysunek 9.6).




Rysunek 9.6. Wyjątkowo nieeleganckie rozwiązanie — na pasku tytułu okna wyświetlone zostało zmienione
znaczenie przycisków. W tym przypadku kliknięcie przycisku Przerwij kończy działanie programu (uruchamia
tryb projektowania), kliknięcie przycisku Ponów próbę uruchamia tryb diagnostyczny, a kliknięcie przycisku
Ignoruj kontynuuje wykonywanie programu

            11. Kliknij przycisk Ponów próbę — wyświetlone zostanie okno edytora kodu
               z zaznaczoną ostatnio wykonywaną instrukcją.
Rozdział 9.    Wyszukiwanie i programowe przechwytywanie błędów                                     167


              12. Zatrzymaj działanie trybu przerwania i skasuj dodany wiersz.
              13. Mo emy w ka dej chwili wstrzymać działanie programu naciskając kombinację
                 klawiszy Ctr+Break lub klikając ikonę paska narzędzi Debug Break All.


Ćwiczenie 9.5.

              Modyfikujemy pułapki

              Visual Studio pozwala na warunkowe wstrzymywanie działania programu za pomocą
              ustawionych w nim pułapek, dzięki czemu niektóre błędy mogą zostać wykryte bez
              konieczności krokowego uruchamiania programu (uruchamiania programu wiersz po
              wierszu). Wykonując bie ące ćwiczenie, nauczymy się konfigurować ustawione pułapki.

               1. Wyświetl okno edytora kodu formularza frmBledy.
               2. Ustaw pułapkę w wierszu +H NKEDC   6JGP funkcji SilniaRekurencja.
               3. Przywróć poprzednie, błędne wywołanie funkcji:
                  FDN9[PKM  NKEDC
5KNPKC4GMWTGPELC
NKEDC 
 .
               4. Kliknij prawym przyciskiem myszy symbol koła oznaczający ustawioną pułapkę
                 i z menu kontekstowego wybierz opcję Breakpoint Properties….
               5. Wyświetlone zostanie okno dialogowe pokazane na rysunku 9.7. Pozwala ono
                 na warunkowe wstrzymanie programu oraz na wstrzymanie programu po którymś
                 z kolei wykonaniu instrukcji, dla której ustawiono pułapkę.

Rysunek 9.7.
Okno właściwości
ustawionej pułapki




               6. Kliknij przycisk Hit Count….
               7. Wyświetlone zostanie okno dialogowe pozwalające określić, kiedy (po ilu wykonaniach
                 instrukcji) wstrzymać działanie programu. Skonfiguruj pułapkę tak, aby działanie
                 programu zostało wstrzymane po 5 lub więcej wywołaniach (rysunek 9.8).
168                                                                      Visual Basic .NET. Ćwiczenia


Rysunek 9.8.
Często pojedyncze
wykonanie instrukcji
jest poprawne,
a wielokrotne
jej wykonanie świadczy
o błędzie programu



            8. Uruchom program i oblicz silnię liczby 4.
            9. Działanie programu zostało wstrzymane. Poniewa obliczenie silni liczby 4 nie
              wymaga pięciu lub więcej wywołań funkcji SilniaRekurencja (4! = 1 ∗ 2 ∗ 3 ∗ 4)
              błędu nale y szukać albo w źle określonym warunku brzegowym, albo w sposobie
              wywołania funkcji SilniaRekurencja.
           10. Ustaw kursor nad nazwą zmiennej liczba. Zostanie wyświetlona aktualna wartość
               zmiennej (). Aby dowiedzieć się, ile razy instrukcja została wykonana, wyświetl
              okienko Breakpoints. Mo na to zrobić klikając znajdującą się na pasku narzędzi
              Debug ikonę Breakpoints.
           11. Licznik pułapki wskazuje wartość , czyli warunek If liczba  0 Then sprawdzany
               jest po raz piąty. Skoro wartość zmiennej licznik wynosi , a warunek sprawdzany
              jest piąty raz przy obliczaniu silni liczby 4 błąd znajduje się w sposobie wywołania
              funkcji, a nie w sposobie sprawdzania warunku brzegowego rekurencji. Rzeczywiście
              tak jest — zamiast przy kolejnych wywołaniach zmniejszać liczbę o jeden,
              my dodajemy do niej jeden, co powoduje, e warunek brzegowy nigdy nie zostanie
              spełniony.
           12. Popraw znaleziony błąd i usuń pułapkę.
           13. Ustaw pułapkę w wierszu FDN9[PKM
NKEPKM funkcji SilniaIteracja.
           14. Wyświetl właściwości pułapki i kliknij przycisk Condition….
           15. Zostanie wyświetlone okno dialogowe pozwalające na określenie warunku
              logicznego, którego spełnienie spowoduje wyzwolenie pułapki (rysunek 9.9).

Rysunek 9.9.
Warunkowe
wywoływanie
ustawionej pułapki




           16. Wpisz warunek, którego spełnienie spowoduje wywołanie pułapki: NKEPKM NKEDC.
              W ten sposób działanie programu zostanie wstrzymane, je eli pętla będzie wykonana
              tyle samo lub więcej razy, ni podana przez u ytkownika liczba, której silnia
              ma zostać wyliczona.
           17. Uruchom program. Po chwili jego działanie zostanie wstrzymane.
Rozdział 9.    Wyszukiwanie i programowe przechwytywanie błędów                                   169


              18. Odczytując (przez ustawienie kursora myszy) wartości zmiennych licznik i dblWynik
                 dowiemy się, e niezale nie od tego, ile razy wykonywane jest mno enie, wartość
                 zmiennej dblWynik zawsze jest równa 0.
              19. Pewnie ju domyślasz się, gdzie znajduje się błąd w tej funkcji. Nie poprawiaj go na
                 razie — wykorzystamy go w następnym ćwiczeniu.
              20. Skasuj ustawioną pułapkę.


Ćwiczenie 9.6.

              Poznajemy tryb przerwania

              Tryb przerwania pozwala na:
                 wykonywanie programu wiersz po wierszu,
                 śledzenie wyników wykonania poszczególnych instrukcji wykonania,
                 odczytywanie i modyfikowanie wartości zmiennych,
                 natychmiastowe wykonanie dowolnej instrukcji, procedury lub funkcji.

              Operacje te mo emy wykonywać za pomocą paska narzędzi Debug (rysunek 9.10).
              Poszczególne ikony (zaczynając od lewej) umo liwiają:

Rysunek 9.10.
Pasek narzędzi
diagnostycznych

               1. Uruchomienie programu.
               2. Włączenie trybu przerwania.
               3. Zatrzymanie wykonywania programu.
               4. Wznowienie wykonywania programu.
               5. Ustawienie kursora w wierszu instrukcji, która właśnie będzie wykonana.
               6. Trzy kolejne przyciski słu ą do sterowania wykonaniem programu:
                  a. wybranie opcji Step Into powoduje wykonanie programu instrukcja po instrukcji;
                    je eli wywołana zostanie procedura lub funkcja, jej wykonanie równie będzie
                    odbywało się instrukcja po instrukcji,
                  b. kliknięcie ikony Step Over tak e spowoduje wykonanie programu instrukcja po
                    instrukcji; je eli jednak zostanie wywołana podprocedura lub funkcja, zostanie
                    ona wykonana w całości, tak jakby była pojedynczą instrukcją,
                  c. wybranie opcji Step Out spowoduje wykonanie całej podprocedury
                    lub wywoływanej funkcji i ustawienie kursora w następnym wierszu procedury
                    nadrzędnej.
               7. Wyświetlanie danych w postaci heksadecymalnej.

More Related Content

What's hot

Java. Współbieżność dla praktyków
Java. Współbieżność dla praktykówJava. Współbieżność dla praktyków
Java. Współbieżność dla praktykówWydawnictwo Helion
 
Flash CS3 Professional PL. Klatka po klatce
Flash CS3 Professional PL. Klatka po klatceFlash CS3 Professional PL. Klatka po klatce
Flash CS3 Professional PL. Klatka po klatceWydawnictwo Helion
 
Adobe Premiere Pro. Szybki start
Adobe Premiere Pro. Szybki startAdobe Premiere Pro. Szybki start
Adobe Premiere Pro. Szybki startWydawnictwo Helion
 
100 sposobów na Visual Studio
100 sposobów na Visual Studio100 sposobów na Visual Studio
100 sposobów na Visual StudioWydawnictwo Helion
 
Mgr Paweł Traczyński 3266 - Praca dypl
Mgr Paweł Traczyński 3266 - Praca dyplMgr Paweł Traczyński 3266 - Praca dypl
Mgr Paweł Traczyński 3266 - Praca dyplPawe? Traczy?ski
 
Pajączek 5 NxG. Oficjalny podręcznik
Pajączek 5 NxG. Oficjalny podręcznikPajączek 5 NxG. Oficjalny podręcznik
Pajączek 5 NxG. Oficjalny podręcznikWydawnictwo Helion
 
Adobe Premiere Pro. Ćwiczenia
Adobe Premiere Pro. ĆwiczeniaAdobe Premiere Pro. Ćwiczenia
Adobe Premiere Pro. ĆwiczeniaWydawnictwo Helion
 
Flash CS3 Professional PL. Techniki zaawansowane. Klatka po klatce
Flash CS3 Professional PL. Techniki zaawansowane. Klatka po klatceFlash CS3 Professional PL. Techniki zaawansowane. Klatka po klatce
Flash CS3 Professional PL. Techniki zaawansowane. Klatka po klatceWydawnictwo Helion
 
Tworzenie aplikacji dla Windows. Od prostych programów do gier komputerowych
Tworzenie aplikacji dla Windows. Od prostych programów do gier komputerowychTworzenie aplikacji dla Windows. Od prostych programów do gier komputerowych
Tworzenie aplikacji dla Windows. Od prostych programów do gier komputerowychWydawnictwo Helion
 
Microsoft Visual Studio 2008. Księga eksperta
Microsoft Visual Studio 2008. Księga ekspertaMicrosoft Visual Studio 2008. Księga eksperta
Microsoft Visual Studio 2008. Księga ekspertaWydawnictwo Helion
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningWydawnictwo Helion
 
Windows Vista PL. Zabawa z multimediami
Windows Vista PL. Zabawa z multimediamiWindows Vista PL. Zabawa z multimediami
Windows Vista PL. Zabawa z multimediamiWydawnictwo Helion
 
Programowanie w języku C. FAQ
Programowanie w języku C. FAQProgramowanie w języku C. FAQ
Programowanie w języku C. FAQWydawnictwo Helion
 
Visual Basic 2008. Warsztat programisty
Visual Basic 2008. Warsztat programistyVisual Basic 2008. Warsztat programisty
Visual Basic 2008. Warsztat programistyWydawnictwo Helion
 

What's hot (20)

CorelDraw X3 PL. Kurs
CorelDraw X3 PL. KursCorelDraw X3 PL. Kurs
CorelDraw X3 PL. Kurs
 
Java. Współbieżność dla praktyków
Java. Współbieżność dla praktykówJava. Współbieżność dla praktyków
Java. Współbieżność dla praktyków
 
Flash CS3 Professional PL. Klatka po klatce
Flash CS3 Professional PL. Klatka po klatceFlash CS3 Professional PL. Klatka po klatce
Flash CS3 Professional PL. Klatka po klatce
 
Adobe Premiere Pro. Szybki start
Adobe Premiere Pro. Szybki startAdobe Premiere Pro. Szybki start
Adobe Premiere Pro. Szybki start
 
100 sposobów na Visual Studio
100 sposobów na Visual Studio100 sposobów na Visual Studio
100 sposobów na Visual Studio
 
SolidWorks 2006 w praktyce
SolidWorks 2006 w praktyceSolidWorks 2006 w praktyce
SolidWorks 2006 w praktyce
 
Po prostu Flash MX 2004
Po prostu Flash MX 2004Po prostu Flash MX 2004
Po prostu Flash MX 2004
 
Mgr Paweł Traczyński 3266 - Praca dypl
Mgr Paweł Traczyński 3266 - Praca dyplMgr Paweł Traczyński 3266 - Praca dypl
Mgr Paweł Traczyński 3266 - Praca dypl
 
Pajączek 5 NxG. Oficjalny podręcznik
Pajączek 5 NxG. Oficjalny podręcznikPajączek 5 NxG. Oficjalny podręcznik
Pajączek 5 NxG. Oficjalny podręcznik
 
Adobe Premiere Pro. Ćwiczenia
Adobe Premiere Pro. ĆwiczeniaAdobe Premiere Pro. Ćwiczenia
Adobe Premiere Pro. Ćwiczenia
 
Flash CS3 Professional PL. Techniki zaawansowane. Klatka po klatce
Flash CS3 Professional PL. Techniki zaawansowane. Klatka po klatceFlash CS3 Professional PL. Techniki zaawansowane. Klatka po klatce
Flash CS3 Professional PL. Techniki zaawansowane. Klatka po klatce
 
Tworzenie aplikacji dla Windows. Od prostych programów do gier komputerowych
Tworzenie aplikacji dla Windows. Od prostych programów do gier komputerowychTworzenie aplikacji dla Windows. Od prostych programów do gier komputerowych
Tworzenie aplikacji dla Windows. Od prostych programów do gier komputerowych
 
Microsoft Visual Studio 2008. Księga eksperta
Microsoft Visual Studio 2008. Księga ekspertaMicrosoft Visual Studio 2008. Księga eksperta
Microsoft Visual Studio 2008. Księga eksperta
 
ArchiCAD 10
ArchiCAD 10ArchiCAD 10
ArchiCAD 10
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny trening
 
Windows Vista PL. Zabawa z multimediami
Windows Vista PL. Zabawa z multimediamiWindows Vista PL. Zabawa z multimediami
Windows Vista PL. Zabawa z multimediami
 
Programowanie w języku C. FAQ
Programowanie w języku C. FAQProgramowanie w języku C. FAQ
Programowanie w języku C. FAQ
 
Praktyczny kurs Java
Praktyczny kurs JavaPraktyczny kurs Java
Praktyczny kurs Java
 
Uczta programistów
Uczta programistówUczta programistów
Uczta programistów
 
Visual Basic 2008. Warsztat programisty
Visual Basic 2008. Warsztat programistyVisual Basic 2008. Warsztat programisty
Visual Basic 2008. Warsztat programisty
 

Viewers also liked

Fotografia cyfrowa w 40 ujęciach
Fotografia cyfrowa w 40 ujęciachFotografia cyfrowa w 40 ujęciach
Fotografia cyfrowa w 40 ujęciachWydawnictwo Helion
 
100 sposobów na tworzenie robotów sieciowych
100 sposobów na tworzenie robotów sieciowych100 sposobów na tworzenie robotów sieciowych
100 sposobów na tworzenie robotów sieciowychWydawnictwo Helion
 
Windows Server 2003. Podręcznik administratora
Windows Server 2003. Podręcznik administratoraWindows Server 2003. Podręcznik administratora
Windows Server 2003. Podręcznik administratoraWydawnictwo Helion
 
Fotografia cyfrowa. Świat w obiektywie. Wydanie II
Fotografia cyfrowa. Świat w obiektywie. Wydanie IIFotografia cyfrowa. Świat w obiektywie. Wydanie II
Fotografia cyfrowa. Świat w obiektywie. Wydanie IIWydawnictwo Helion
 
Zarządzanie przechowywaniem danych w sieci
Zarządzanie przechowywaniem danych w sieciZarządzanie przechowywaniem danych w sieci
Zarządzanie przechowywaniem danych w sieciWydawnictwo Helion
 
100 sposobów na sieci bezprzewodowe
100 sposobów na sieci bezprzewodowe100 sposobów na sieci bezprzewodowe
100 sposobów na sieci bezprzewodoweWydawnictwo Helion
 
Photoshop CS. Ćwiczenia praktyczne
Photoshop CS. Ćwiczenia praktycznePhotoshop CS. Ćwiczenia praktyczne
Photoshop CS. Ćwiczenia praktyczneWydawnictwo Helion
 
Google Picasa. Ćwiczenia praktyczne
Google Picasa. Ćwiczenia praktyczneGoogle Picasa. Ćwiczenia praktyczne
Google Picasa. Ćwiczenia praktyczneWydawnictwo Helion
 
Finale. Edytor nutowy nie tylko dla profesjonalistów
Finale. Edytor nutowy nie tylko dla profesjonalistówFinale. Edytor nutowy nie tylko dla profesjonalistów
Finale. Edytor nutowy nie tylko dla profesjonalistówWydawnictwo Helion
 
Mambo. Tworzenie, edycja i zarządzanie stroną. Niebieski podręcznik
Mambo. Tworzenie, edycja i zarządzanie stroną. Niebieski podręcznikMambo. Tworzenie, edycja i zarządzanie stroną. Niebieski podręcznik
Mambo. Tworzenie, edycja i zarządzanie stroną. Niebieski podręcznikWydawnictwo Helion
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczneWydawnictwo Helion
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikWydawnictwo Helion
 

Viewers also liked (14)

Fotografia cyfrowa w 40 ujęciach
Fotografia cyfrowa w 40 ujęciachFotografia cyfrowa w 40 ujęciach
Fotografia cyfrowa w 40 ujęciach
 
100 sposobów na tworzenie robotów sieciowych
100 sposobów na tworzenie robotów sieciowych100 sposobów na tworzenie robotów sieciowych
100 sposobów na tworzenie robotów sieciowych
 
Windows Server 2003. Podręcznik administratora
Windows Server 2003. Podręcznik administratoraWindows Server 2003. Podręcznik administratora
Windows Server 2003. Podręcznik administratora
 
Fotografia cyfrowa. Świat w obiektywie. Wydanie II
Fotografia cyfrowa. Świat w obiektywie. Wydanie IIFotografia cyfrowa. Świat w obiektywie. Wydanie II
Fotografia cyfrowa. Świat w obiektywie. Wydanie II
 
Zarządzanie przechowywaniem danych w sieci
Zarządzanie przechowywaniem danych w sieciZarządzanie przechowywaniem danych w sieci
Zarządzanie przechowywaniem danych w sieci
 
100 sposobów na sieci bezprzewodowe
100 sposobów na sieci bezprzewodowe100 sposobów na sieci bezprzewodowe
100 sposobów na sieci bezprzewodowe
 
Sam wypalam DVD
Sam wypalam DVDSam wypalam DVD
Sam wypalam DVD
 
Po prostu Word 2003 PL
Po prostu Word 2003 PLPo prostu Word 2003 PL
Po prostu Word 2003 PL
 
Photoshop CS. Ćwiczenia praktyczne
Photoshop CS. Ćwiczenia praktycznePhotoshop CS. Ćwiczenia praktyczne
Photoshop CS. Ćwiczenia praktyczne
 
Google Picasa. Ćwiczenia praktyczne
Google Picasa. Ćwiczenia praktyczneGoogle Picasa. Ćwiczenia praktyczne
Google Picasa. Ćwiczenia praktyczne
 
Finale. Edytor nutowy nie tylko dla profesjonalistów
Finale. Edytor nutowy nie tylko dla profesjonalistówFinale. Edytor nutowy nie tylko dla profesjonalistów
Finale. Edytor nutowy nie tylko dla profesjonalistów
 
Mambo. Tworzenie, edycja i zarządzanie stroną. Niebieski podręcznik
Mambo. Tworzenie, edycja i zarządzanie stroną. Niebieski podręcznikMambo. Tworzenie, edycja i zarządzanie stroną. Niebieski podręcznik
Mambo. Tworzenie, edycja i zarządzanie stroną. Niebieski podręcznik
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnik
 

Similar to Visual Basic .NET. Ćwiczenia

Programowanie obiektowe w Visual Basic .NET dla każdego
Programowanie obiektowe w Visual Basic .NET dla każdegoProgramowanie obiektowe w Visual Basic .NET dla każdego
Programowanie obiektowe w Visual Basic .NET dla każdegoWydawnictwo Helion
 
Visual C# 2005 Express Edition. Od podstaw
Visual C# 2005 Express Edition. Od podstawVisual C# 2005 Express Edition. Od podstaw
Visual C# 2005 Express Edition. Od podstawWydawnictwo Helion
 
Visual Basic 2005. Zapiski programisty
Visual Basic 2005. Zapiski programistyVisual Basic 2005. Zapiski programisty
Visual Basic 2005. Zapiski programistyWydawnictwo Helion
 
Aplikacje w Visual C++ 2005. Przykłady
Aplikacje w Visual C++ 2005. PrzykładyAplikacje w Visual C++ 2005. Przykłady
Aplikacje w Visual C++ 2005. PrzykładyWydawnictwo Helion
 
Po prostu PHP. Techniki zaawansowane
Po prostu PHP. Techniki zaawansowanePo prostu PHP. Techniki zaawansowane
Po prostu PHP. Techniki zaawansowaneWydawnictwo Helion
 
PowerPoint 2003 PL. Ćwiczenia
PowerPoint 2003 PL. ĆwiczeniaPowerPoint 2003 PL. Ćwiczenia
PowerPoint 2003 PL. ĆwiczeniaWydawnictwo Helion
 
Visual C# 2005. Zapiski programisty
Visual C# 2005. Zapiski programistyVisual C# 2005. Zapiski programisty
Visual C# 2005. Zapiski programistyWydawnictwo Helion
 
Visual Basic .NET. Księga eksperta
Visual Basic .NET. Księga ekspertaVisual Basic .NET. Księga eksperta
Visual Basic .NET. Księga ekspertaWydawnictwo Helion
 
Visual Basic .NET. Encyklopedia
Visual Basic .NET. EncyklopediaVisual Basic .NET. Encyklopedia
Visual Basic .NET. EncyklopediaWydawnictwo Helion
 
.Net. Najpilniej strzeżone tajemnice
.Net. Najpilniej strzeżone tajemnice.Net. Najpilniej strzeżone tajemnice
.Net. Najpilniej strzeżone tajemniceWydawnictwo Helion
 
Język C++. Gotowe rozwiązania dla programistów
Język C++. Gotowe rozwiązania dla programistówJęzyk C++. Gotowe rozwiązania dla programistów
Język C++. Gotowe rozwiązania dla programistówWydawnictwo Helion
 
PHP5. Zaawansowane programowanie
PHP5. Zaawansowane programowaniePHP5. Zaawansowane programowanie
PHP5. Zaawansowane programowanieWydawnictwo Helion
 
PHP i MySQL. Tworzenie sklepów internetowych. Wydanie II
PHP i MySQL. Tworzenie sklepów internetowych. Wydanie IIPHP i MySQL. Tworzenie sklepów internetowych. Wydanie II
PHP i MySQL. Tworzenie sklepów internetowych. Wydanie IIWydawnictwo Helion
 

Similar to Visual Basic .NET. Ćwiczenia (20)

Programowanie obiektowe w Visual Basic .NET dla każdego
Programowanie obiektowe w Visual Basic .NET dla każdegoProgramowanie obiektowe w Visual Basic .NET dla każdego
Programowanie obiektowe w Visual Basic .NET dla każdego
 
Visual C# 2005 Express Edition. Od podstaw
Visual C# 2005 Express Edition. Od podstawVisual C# 2005 Express Edition. Od podstaw
Visual C# 2005 Express Edition. Od podstaw
 
C++BuilderX. Ćwiczenia
C++BuilderX. ĆwiczeniaC++BuilderX. Ćwiczenia
C++BuilderX. Ćwiczenia
 
Visual Basic 2005. Zapiski programisty
Visual Basic 2005. Zapiski programistyVisual Basic 2005. Zapiski programisty
Visual Basic 2005. Zapiski programisty
 
Visual Basic 2005. Od podstaw
Visual Basic 2005. Od podstawVisual Basic 2005. Od podstaw
Visual Basic 2005. Od podstaw
 
Aplikacje w Visual C++ 2005. Przykłady
Aplikacje w Visual C++ 2005. PrzykładyAplikacje w Visual C++ 2005. Przykłady
Aplikacje w Visual C++ 2005. Przykłady
 
Po prostu PHP. Techniki zaawansowane
Po prostu PHP. Techniki zaawansowanePo prostu PHP. Techniki zaawansowane
Po prostu PHP. Techniki zaawansowane
 
PowerPoint 2003 PL. Ćwiczenia
PowerPoint 2003 PL. ĆwiczeniaPowerPoint 2003 PL. Ćwiczenia
PowerPoint 2003 PL. Ćwiczenia
 
Visual C# 2005. Zapiski programisty
Visual C# 2005. Zapiski programistyVisual C# 2005. Zapiski programisty
Visual C# 2005. Zapiski programisty
 
Visual Basic .NET. Księga eksperta
Visual Basic .NET. Księga ekspertaVisual Basic .NET. Księga eksperta
Visual Basic .NET. Księga eksperta
 
Visual Basic .NET. Encyklopedia
Visual Basic .NET. EncyklopediaVisual Basic .NET. Encyklopedia
Visual Basic .NET. Encyklopedia
 
.Net. Najpilniej strzeżone tajemnice
.Net. Najpilniej strzeżone tajemnice.Net. Najpilniej strzeżone tajemnice
.Net. Najpilniej strzeżone tajemnice
 
Język C++. Gotowe rozwiązania dla programistów
Język C++. Gotowe rozwiązania dla programistówJęzyk C++. Gotowe rozwiązania dla programistów
Język C++. Gotowe rozwiązania dla programistów
 
C#. Ćwiczenia
C#. ĆwiczeniaC#. Ćwiczenia
C#. Ćwiczenia
 
PHP5. Zaawansowane programowanie
PHP5. Zaawansowane programowaniePHP5. Zaawansowane programowanie
PHP5. Zaawansowane programowanie
 
PHP i MySQL. Tworzenie sklepów internetowych. Wydanie II
PHP i MySQL. Tworzenie sklepów internetowych. Wydanie IIPHP i MySQL. Tworzenie sklepów internetowych. Wydanie II
PHP i MySQL. Tworzenie sklepów internetowych. Wydanie II
 
Po prostu Pajączek 5 NxG
Po prostu Pajączek 5 NxGPo prostu Pajączek 5 NxG
Po prostu Pajączek 5 NxG
 
eXtreme programming
eXtreme programmingeXtreme programming
eXtreme programming
 
VB .NET. Almanach
VB .NET. AlmanachVB .NET. Almanach
VB .NET. Almanach
 
C++Builder 6. Ćwiczenia
C++Builder 6. ĆwiczeniaC++Builder 6. Ćwiczenia
C++Builder 6. Ćwiczenia
 

More from Wydawnictwo Helion

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyWydawnictwo Helion
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieWydawnictwo Helion
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsWydawnictwo Helion
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IIWydawnictwo Helion
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuWydawnictwo Helion
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIWydawnictwo Helion
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykWydawnictwo Helion
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaWydawnictwo Helion
 
Serwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieSerwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieWydawnictwo Helion
 
USB. Praktyczne programowanie z Windows API w C++
USB. Praktyczne programowanie z Windows API w C++USB. Praktyczne programowanie z Windows API w C++
USB. Praktyczne programowanie z Windows API w C++Wydawnictwo Helion
 
Rewizor GT. Prowadzenie ewidencji księgowej
Rewizor GT. Prowadzenie ewidencji księgowejRewizor GT. Prowadzenie ewidencji księgowej
Rewizor GT. Prowadzenie ewidencji księgowejWydawnictwo Helion
 

More from Wydawnictwo Helion (20)

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. Projekty
 
Access w biurze i nie tylko
Access w biurze i nie tylkoAccess w biurze i nie tylko
Access w biurze i nie tylko
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółu
 
Windows PowerShell. Podstawy
Windows PowerShell. PodstawyWindows PowerShell. Podstawy
Windows PowerShell. Podstawy
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie II
 
JavaScript. Pierwsze starcie
JavaScript. Pierwsze starcieJavaScript. Pierwsze starcie
JavaScript. Pierwsze starcie
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktyk
 
Excel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktykExcel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
 
Access 2007 PL. Seria praktyk
Access 2007 PL. Seria praktykAccess 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
 
Word 2007 PL. Seria praktyk
Word 2007 PL. Seria praktykWord 2007 PL. Seria praktyk
Word 2007 PL. Seria praktyk
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacja
 
AutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PLAutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PL
 
Bazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcieBazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcie
 
Inventor. Pierwsze kroki
Inventor. Pierwsze krokiInventor. Pierwsze kroki
Inventor. Pierwsze kroki
 
Serwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieSerwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanie
 
USB. Praktyczne programowanie z Windows API w C++
USB. Praktyczne programowanie z Windows API w C++USB. Praktyczne programowanie z Windows API w C++
USB. Praktyczne programowanie z Windows API w C++
 
Rewizor GT. Prowadzenie ewidencji księgowej
Rewizor GT. Prowadzenie ewidencji księgowejRewizor GT. Prowadzenie ewidencji księgowej
Rewizor GT. Prowadzenie ewidencji księgowej
 

Visual Basic .NET. Ćwiczenia

  • 1. IDZ DO PRZYK£ADOWY ROZDZIA£ SPIS TRE CI Visual Basic .NET. Æwiczenia KATALOG KSI¥¯EK Autor: Marcin Szeliga KATALOG ONLINE ISBN: 83-7361-432-X Format: B5, stron: 176 ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK DODAJ DO KOSZYKA Kolejna, siódma ju¿ wersja jêzyka Visual Basic (Visual Basic .NET) to prawdziwa rewolucja — firma Microsoft opracowa³a jednolite rodowisko programistyczne, a jednym z jego podstawowych jêzyków (oprócz Visual C++ i Visual C#) jest w³a nie CENNIK I INFORMACJE Visual Basic. Dziêki wsparciu potê¿nej firmy, jak¹ jest Microsoft i rozpowszechnieniu systemu Windows, Visual Basic .NET sta³ siê jednym z najczê ciej u¿ywanych ZAMÓW INFORMACJE jêzyków programowania na wiecie. O NOWO CIACH Ksi¹¿ka „Visual Basic .NET. Æwiczenia” adresowana jest do osób, które chc¹ poznaæ podstawowe zasady tworzenia w jêzyku VB .NET programów sterowanych zdarzeniami. ZAMÓW CENNIK Jak wszystkie ksi¹¿ki z tej serii jest ona skonstruowana w formie praktycznych æwiczeñ, pozwalaj¹cych stopniowo zag³êbiaæ siê w niuanse programowania bez zbêdnych rozwa¿añ teoretycznych. CZYTELNIA Poznasz: FRAGMENTY KSI¥¯EK ONLINE • Platformê .NET • Programowanie sterowane zdarzeniami • Zmienne i sta³e • Sterowanie przebiegiem wykonywania programu • Podstawy programowania obiektowego • Korzystanie z baz danych • Obs³ugê b³êdów w Visual Basic .NET Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl
  • 2. Spis treści Wstęp.............................................................................................................................................................. 5 Rozdział 1. Microsoft Visual Studio .NET............................................................................................................... 9 Platforma .NET ............................................................................................................................9 .NET Framework ...................................................................................................................9 Serwery .NET ......................................................................................................................10 Visual Studio .NET ..............................................................................................................11 Visual Basic .NET ...............................................................................................................19 Rozdział 2. Programy sterowane zdarzeniami ................................................................................................20 Klasy...........................................................................................................................................20 Obiekty .......................................................................................................................................21 Konwencje nazewnicze ..............................................................................................................37 Zasady ..................................................................................................................................37 Wskazówki...........................................................................................................................38 Jak czytelnie zapisywać kod programu? ....................................................................................38 Rozdział 3. Zmienne....................................................................................................................................................... 41 Zmienne i stałe ...........................................................................................................................41 Stałe......................................................................................................................................45 Operatory....................................................................................................................................46 Typy danych...............................................................................................................................49 Zmienne ...............................................................................................................................50 Wskaźniki ............................................................................................................................50 Konwersja typów .................................................................................................................51 Poprawność wprowadzanych przez u ytkowników danych................................................54 Zakres zmiennych ......................................................................................................................55 Czas ycia zmiennych ................................................................................................................59 Struktury.....................................................................................................................................60 Tablice ........................................................................................................................................62 Konwencje nazewnicze ..............................................................................................................64 Zasady ..................................................................................................................................64 Wskazówki...........................................................................................................................65
  • 3. 4 Visual Basic .NET. Ćwiczenia Rozdział 4. Procedury i funkcje.............................................................................................................................. 66 Procedury ...................................................................................................................................66 Funkcje .......................................................................................................................................73 Rozdział 5. Sterowanie wykonaniem programu............................................................................................. 78 Instrukcje warunkowe ................................................................................................................78 Instrukcja If … Then............................................................................................................79 Instrukcja Select Case ..........................................................................................................81 Pętle............................................................................................................................................84 Instrukcja For … Next .........................................................................................................84 Instrukcja For Each … Next ................................................................................................87 Instrukcja Do … Loop .........................................................................................................91 Rozdział 6. Programowanie obiektowe.............................................................................................................. 93 Podejście proceduralne...............................................................................................................93 Podejście obiektowe...................................................................................................................94 Klasa ....................................................................................................................................94 Obiekt...................................................................................................................................95 Abstrakcja ............................................................................................................................95 Dziedziczenie .......................................................................................................................95 Hermetyzacja .......................................................................................................................96 Interfejs ................................................................................................................................96 Polimorfizm .........................................................................................................................98 Projektowanie programów zbudowanych z obiektów ...............................................................98 Projekt klas...........................................................................................................................99 Tworzenie programów zbudowanych z niezale nych obiektów..............................................101 Podstawowe techniki programowania obiektowego..........................................................101 Składowe współdzielone....................................................................................................112 Zaawansowane techniki programowania obiektowego .....................................................114 Rozdział 7. Dane ............................................................................................................................................................120 Relacyjny model baz danych....................................................................................................120 XML .........................................................................................................................................121 ADO .NET ...............................................................................................................................122 Przestrzenie nazw...............................................................................................................122 Klasy ..................................................................................................................................122 Obiekt Connection .............................................................................................................123 Obiekt Command ...............................................................................................................127 Kreatory danych.................................................................................................................132 Lokalne kopie danych ........................................................................................................136 Rozdział 8. Sprawdzanie poprawności danych ............................................................................................146 Uniemo liwianie u ytkownikom programu wpisania niepoprawnych danych .......................147 Korzystamy z kontrolek .....................................................................................................147 Korzystamy ze zdarzeń ......................................................................................................154 Sprawdzanie poprawności poszczególnych danych.................................................................154 Sprawdzanie poprawności wszystkich danych ........................................................................158 Rozdział 9. Wyszukiwanie i programowe przechwytywanie błędów ............................................... 160 Wyszukiwanie błędów .............................................................................................................160 Przechwytywanie błędów.........................................................................................................171 Klasa Exception .................................................................................................................172 Instrukcja Try … Catch … Finally ....................................................................................172
  • 4. Rozdział 9. Wyszukiwanie i programowe przechwytywanie błędów 161 Ćwiczenie 9.1. Wyszukujemy błędy syntaktyczne Błąd syntaktyczny polega na nieprzestrzeganiu reguł języka, w którym tworzony jest program. Na przykład, próba u ycia instrukcji For bez odpowiadającej jej instrukcji Next jest błędem syntaktycznym. 1. Utwórz nowy projekt typu Windows Application i nazwij go 4QFKCN. 2. Zmień nazwę formularza Form1 na HTO$NGF[, jego etykietę na 9[UWMWLGO[ K RTGEJY[VWLGO[ D úF[, a rozmiar na . 3. W oknie zadań wyświetlony zostanie komunikat błędu — po zmianie nazwy formularza nie istnieje obiekt startowy projektu. Okno zadań nie tylko informuje o błędach, ale równie ułatwia ich wyszukanie i naprawienie. Aby naprawić błąd: a. dwukrotnie kliknij lewym przyciskiem myszy opis błędu, b. wyświetlone zostanie okno dialogowe pozwalające na wybranie nowego obiektu startowego projektu (rysunek 9.1) — zaznacz formularz frmBledy i kliknij przycisk OK. Rysunek 9.1. W tym projekcie jest tylko jeden formularz i nie ma procedury o nazwie Main 4. Po zmianie obiektu startowego okno zadań nie będzie zawierać adnych komunikatów. Dodaj do formularza przycisk polecenia i ustaw następujące wartości jego atrybutów: Name — EOF5KNPKC, Text — 5KNPKC, Location — . 5. Wyświetl okno edytora kodu. 6. Zadeklaruj zmienną formularza decWynik typu Decimmal: KO FGE9[PKM #U GEKOOCN. 7. Poniewa przy deklaracji zmiennej popełniliśmy błąd, niewłaściwe słowo zostało podkreślone niebieską, falistą linią — aby dowiedzieć się, na czym polegał nasz błąd, ustaw kursor myszy nad zaznaczonym słowem (rysunek 9.2). 8. Zauwa , e ten sam komunikat — Type ‘Decimmal’ is not definied. — wyświetlany jest w oknie zadań. Napraw błąd przez podanie prawidłowej nazwy typu GEKOCN. 9. Utwórz procedurę zdarzenia Click przycisku cmdSilnia. 10. W ramach procedury zdarzenia:
  • 5. 162 Visual Basic .NET. Ćwiczenia Rysunek 9.2. W Visual Studio wyświetlony zostanie krótki opis błędów syntaktycznych a. zadeklaruj zmienną intLiczba typu Integer: KO KPV.KEDC #U +PVGIGT, b. przypisz zadeklarowanej zmiennej liczbę podaną przez u ytkownika (zwróć uwagę na błędną nazwę funkcji): KPV.KEDC +PRWT$QZ 2QFCL NKEDú MVÎTGL UKNPKC OC QUVCè Y[NKEQPC . 11. Zadeklaruj funkcję SilniaIteracja oczekującą na argument liczba typu Integer i zwracającą dane typu Double: (WPEVKQP 5KNPKC+VGTCELC $[8CN NKEDC #U +PVGIGT #U QWDNG. 12. Usuń z sekcji deklaracji formularza deklarację zmiennej decWynik. 13. W ramach funkcji SilniaIteracja: a. zadeklaruj zmienną dblWynik typu Double: KO FDN9[PKM #U QWDNG, b. zadeklaruj zmienną licznik typu Integer: KO NKEPKM #U +PVGIGT, c. w pętli powtarzanej przekazaną jako argument liczbę razy wylicz wartość zmiennej decWynik mno ąc ją za ka dym razem przez wartość zmiennej licznik: (QT NKEPKM 6Q NKEDC FGE9[PKM
  • 6. NKEPKM d. zwróć wyliczoną silnię: 4GVWTP FGE9[PKM. 14. W procedurze zdarzenia cmdSilnia_Click wywołaj funkcję SilniaIteracja z argumentem pobranym od u ytkownika i wyświetl na ekranie otrzymany wynik: /UI$QZ 5KNPKC Y[PQUK 5KNPKC+VGTCELC KPV.KEDC. 15. W oknie zadań wyświetlone zostaną dwa komunikaty o błędach: a. pierwszy informuje o próbie odwołania się do nieistniejącej funkcji InpurBox, b. drugi — o brakującej instrukcji Next (rysunek 9.3). Rysunek 9.3. Lista błędów syntaktycznych (składniowych)
  • 7. Rozdział 9. Wyszukiwanie i programowe przechwytywanie błędów 163 16. Dwukrotnie kliknij pierwszy komunikat błędu — kursor zostanie ustawiony w miejscu występowania błędu. Popraw nazwę funkcji na +PRWV$QZ. 17. W ten sam sposób zlokalizuj drugi błąd — tym razem zaznaczona zostanie instrukcja For, która nie została zakończona słowem kluczowym Next. Dopisz je przed zwracającą wynik działania funkcji instrukcją Return: (WPEVKQP 5KNPKC+VGTCELC $[8CN NKEDC #U +PVGIGT #U QWDNG KO FDN9[PKM #U QWDNG KO NKEPKM #U +PVGIGT (QT NKEPKM 6Q NKEDC FGE9[PKM
  • 8. NKEPKM 0GZV 4GVWTP FGE9[PKM 'PF (WPEVKQP 18. Zapisz projekt. Ćwiczenie 9.2. Wyszukujemy błędy konwersji typu To, e w programie nie ma błędów syntaktycznych, nie oznacza, e będzie on działał. Wynika to stąd, e próba wykonania poprawnie zapisanych instrukcji mo e spowodować wystąpienie błędu wykonania, a błędy tego typu nie są zaznaczane podczas tworzenia programu. 1. Uruchom projekt 4QFKCN. 2. Po podaniu liczby, której silnię chcemy obliczyć, i kliknięciu przycisku OK, na ekranie wyświetlony zostanie komunikat o błędzie pokazany na rysunku 9.4. Rysunek 9.4. Uruchomienie poprawnego składniowo programu mo e zakończyć się błędem 3. W tym przypadku błąd spowodowała próba połączenia ciągu znaków Silnia wynosi z liczbą typu Double. Je eli w programie wystąpi błąd, jego działanie zostaje przerywane, a na ekranie u ytkownika wyświetlony jest niewiele mu mówiący komunikat o wystąpieniu błędu. 4. Kliknij przycisk Break. Wyświetlone zostanie okno edytora kodu z zaznaczoną na zielono instrukcją, której próba wykonania spowodowała błąd. 5. W tym momencie program znajduje się w specjalnym trybie diagnostycznym, nazywanym trybem przerwania. Opis tego trybu znajduje się w dalszej części rozdziału, na razie zatrzymaj działanie tego trybu klikając znajdującą się na pasku narzędzi Debug ikonę Stop Debugging albo wybierając z menu Debug opcję Stop Debugging. W obu przypadkach tryb przerwania zostanie wyłączony i zniknie zaznaczenie błędnej instrukcji.
  • 9. 164 Visual Basic .NET. Ćwiczenia 6. Popraw błąd przez skonwertowanie na dane tekstowe zwracanego przez funkcję SilniaIteracja wyniku: /UI$QZ 5KNPKC Y[PQUK 5KNPKC+VGTCELC KPV.KEDC6Q5VTKPI. 7. Uruchom program i przetestuj jego działanie. Jak widać, wyeliminowanie błędów wykonania nie oznacza, e program będzie działał prawidłowo. 8. Zakończ działanie programu i zapisz wprowadzone w nim zmiany. Ćwiczenie 9.3. Wyszukujemy błędy związane z przekazaniem nieprawidłowych danych 1. Wyświetl projekt formularza frmBledy. 2. Utwórz nową funkcję SilniaRekurencja wywoływaną z jednym parametrem liczba typu Integer i zwracającą dane typu Double. 3. W ramach funkcji: a. zadeklaruj zmienną dblWynik typu Double, b. sprawdź, czy wartość parametru liczba jest mniejsza od zera i, je eli tak, zwróć wartość , w przeciwnym razie wywołaj funkcję SilniaRekurencja z parametrem o jeden większym przypisując wynik jej wywołania do zmiennej dblWynik, Wywołanie funkcji przez siebie samą jest charakterystyczne dla algorytmów rekurencyjnych. c. zwróć obliczoną wartość zmiennej dblWynik: (WPEVKQP 5KNPKC4GMWTGPELC $[8CN NKEDC #U +PVGIGT #U QWDNG KO FDN9[PKM #U QWDNG +H NKEDC 6JGP 4GVWTP 'NUG FDN9[PKM NKEDC
  • 10. 5KNPKC4GMWTGPELC NKEDC 'PF +H 4GVWTP FDN9[PKM 'PF (WPEVKQP 4. W procedurze zdarzenia cmdSilnia_Click wywołaj funkcję SilniaRekurencja z argumentem pobranym od u ytkownika i wyświetl na ekranie otrzymany wynik: /UI$QZ 5KNPKC Y[PQUK 5KNPKC4GMWTGPELC KPV.KEDC6Q5VTKPI. 5. Uruchom program. Po chwili jego działanie zostanie przerwane, a na ekranie zostanie wyświetlony komunikat o błędzie z informacją o przepełnieniu stosu. Naciśnij klawisz Break. 6. Tym razem na ółto zaznaczona została deklaracja funkcji, której wywołanie spowodowało wystąpienie błędu. W naszym przypadku funkcja wywoływała samą siebie bez końca (rysunek 9.5). 7. Przerwij tryb diagnostyczny i popraw wywołanie funkcji SilniaRekurencja na następujące: FDN9[PKM NKEDC
  • 12. Rozdział 9. Wyszukiwanie i programowe przechwytywanie błędów 165 Rysunek 9.5. Korzystając z rekurencji musimy tak sformułować warunek wywoływania funkcji przez samą siebie, aby proces zagnie d ania został kiedyś zakończony 8. Uruchom program i przetestuj jego działanie. Po raz kolejny okazuje się, e działający program nie musi być dobrze działającym programem. 9. Zakończ działanie programu i zapisz wprowadzone w nim zmiany. Ćwiczenie 9.4. Uruchamiamy tryb przerwania Najłatwiejsze jest znalezienie i poprawienie błędów syntaktycznych — w tym przypadku przewa ającą część pracy wykona za nas Visual Studio. Znalezienie i poprawienie błędów wykonania jest ju trudniejsze i wymaga uruchamiania programu z ró nymi zestawami testowymi danych wejściowych. Najtrudniejsze jest jednak znalezienie i poprawienie błędów logicznych, poniewa ich wystąpienie nie powoduje przerwania działania pro- gramu, ale jego nieprawidłowe działanie. Wyszukiwanie błędów tego typu ułatwia spe- cjalny tryb przerwania (tryb diagnostyczny) i dostępne w tym trybie narzędzia. Tryb przerwania jest dostępny tylko wtedy, gdy program został skompilowany w wersji Debug. Po zmianie trybu na Release kompilator wygeneruje kod wynikowy, z którego usunięte zostaną wszystkie informacje diagnostyczne. Ta wersja programu przeznaczona jest dla u ytkowników końcowych. 1. Wyświetl okno edytora kodu formularza frmBledy. 2. Mo emy przejść w tryb przerwania na kilka sposobów. Po pierwsze, wstawiając w wykonywalnym wierszu programu pułapkę (ang. Breakpoint) — najprościej wstawić ją przez kliknięcie lewego marginesu okna edytora kodu. Kliknij lewy margines na wysokości instrukcji KPV.KEDC +PRWV$QZ 2QFCL NKEDú MVÎTGL UKNPKC OC QUVCè Y[NKEQPC . Wybrany wiersz zostanie zaznaczony.
  • 13. 166 Visual Basic .NET. Ćwiczenia 3. Uruchom program. Po kliknięciu przycisku Silnia jego działanie zostanie wstrzymane, a na ekranie wyświetlone zostanie okno edytora kodu z zaznaczoną na ółto wykonywaną właśnie instrukcją. 4. Skasuj ustawioną pułapkę przez kliknięcie jej znaku wyświetlanego na lewym marginesie. 5. Wznów działanie programu (np. naciskając klawisz F5 lub klikając ikonę paska narzędzi Debug Contine). 6. Przerwij działanie programu. Innym sposobem na przejście w tryb przerwania jest wykonanie instrukcji Stop. Wpisz tę instrukcję przed wywołaniem funkcji SilniaIteracja i uruchom program. 7. Tym razem jego działanie zostało przerwane po zamknięciu okna dialogowego umo liwiającego podanie liczby i ponownie zaznaczona na ółto jest ostatnio wykonywania instrukcja — instrukcja Stop. 8. W trybie przerwania nie jest mo liwa zmiana kodu programu. Przerwij jego działanie i usuń instrukcję Stop. 9. Sposobem na warunkowe przejście w tryb przerwania jest wywołanie metody Assert obiektu specjalnego Debug. Działanie programu zostanie wstrzymane, je eli wynikiem testu logicznego będzie fałsz. W miejsce usuniętej instrukcji Stop wpisz: GDWI#UUGTV KPV.KEDC . 10. Uruchom program i podaj liczbę większą ni 1. Poniewa warunek został spełniony, działanie programu nie zostało wstrzymane. Raz jeszcze kliknij przycisk Silnia, ale nie zmieniaj domyślnej liczby 1. Tym razem warunek nie został spełniony (1 nie jest większe ni 1) i wyświetlone zostało okno umo liwiające wstrzymanie działania programu (rysunek 9.6). Rysunek 9.6. Wyjątkowo nieeleganckie rozwiązanie — na pasku tytułu okna wyświetlone zostało zmienione znaczenie przycisków. W tym przypadku kliknięcie przycisku Przerwij kończy działanie programu (uruchamia tryb projektowania), kliknięcie przycisku Ponów próbę uruchamia tryb diagnostyczny, a kliknięcie przycisku Ignoruj kontynuuje wykonywanie programu 11. Kliknij przycisk Ponów próbę — wyświetlone zostanie okno edytora kodu z zaznaczoną ostatnio wykonywaną instrukcją.
  • 14. Rozdział 9. Wyszukiwanie i programowe przechwytywanie błędów 167 12. Zatrzymaj działanie trybu przerwania i skasuj dodany wiersz. 13. Mo emy w ka dej chwili wstrzymać działanie programu naciskając kombinację klawiszy Ctr+Break lub klikając ikonę paska narzędzi Debug Break All. Ćwiczenie 9.5. Modyfikujemy pułapki Visual Studio pozwala na warunkowe wstrzymywanie działania programu za pomocą ustawionych w nim pułapek, dzięki czemu niektóre błędy mogą zostać wykryte bez konieczności krokowego uruchamiania programu (uruchamiania programu wiersz po wierszu). Wykonując bie ące ćwiczenie, nauczymy się konfigurować ustawione pułapki. 1. Wyświetl okno edytora kodu formularza frmBledy. 2. Ustaw pułapkę w wierszu +H NKEDC 6JGP funkcji SilniaRekurencja. 3. Przywróć poprzednie, błędne wywołanie funkcji: FDN9[PKM NKEDC
  • 15. 5KNPKC4GMWTGPELC NKEDC . 4. Kliknij prawym przyciskiem myszy symbol koła oznaczający ustawioną pułapkę i z menu kontekstowego wybierz opcję Breakpoint Properties…. 5. Wyświetlone zostanie okno dialogowe pokazane na rysunku 9.7. Pozwala ono na warunkowe wstrzymanie programu oraz na wstrzymanie programu po którymś z kolei wykonaniu instrukcji, dla której ustawiono pułapkę. Rysunek 9.7. Okno właściwości ustawionej pułapki 6. Kliknij przycisk Hit Count…. 7. Wyświetlone zostanie okno dialogowe pozwalające określić, kiedy (po ilu wykonaniach instrukcji) wstrzymać działanie programu. Skonfiguruj pułapkę tak, aby działanie programu zostało wstrzymane po 5 lub więcej wywołaniach (rysunek 9.8).
  • 16. 168 Visual Basic .NET. Ćwiczenia Rysunek 9.8. Często pojedyncze wykonanie instrukcji jest poprawne, a wielokrotne jej wykonanie świadczy o błędzie programu 8. Uruchom program i oblicz silnię liczby 4. 9. Działanie programu zostało wstrzymane. Poniewa obliczenie silni liczby 4 nie wymaga pięciu lub więcej wywołań funkcji SilniaRekurencja (4! = 1 ∗ 2 ∗ 3 ∗ 4) błędu nale y szukać albo w źle określonym warunku brzegowym, albo w sposobie wywołania funkcji SilniaRekurencja. 10. Ustaw kursor nad nazwą zmiennej liczba. Zostanie wyświetlona aktualna wartość zmiennej (). Aby dowiedzieć się, ile razy instrukcja została wykonana, wyświetl okienko Breakpoints. Mo na to zrobić klikając znajdującą się na pasku narzędzi Debug ikonę Breakpoints. 11. Licznik pułapki wskazuje wartość , czyli warunek If liczba 0 Then sprawdzany jest po raz piąty. Skoro wartość zmiennej licznik wynosi , a warunek sprawdzany jest piąty raz przy obliczaniu silni liczby 4 błąd znajduje się w sposobie wywołania funkcji, a nie w sposobie sprawdzania warunku brzegowego rekurencji. Rzeczywiście tak jest — zamiast przy kolejnych wywołaniach zmniejszać liczbę o jeden, my dodajemy do niej jeden, co powoduje, e warunek brzegowy nigdy nie zostanie spełniony. 12. Popraw znaleziony błąd i usuń pułapkę. 13. Ustaw pułapkę w wierszu FDN9[PKM
  • 17. NKEPKM funkcji SilniaIteracja. 14. Wyświetl właściwości pułapki i kliknij przycisk Condition…. 15. Zostanie wyświetlone okno dialogowe pozwalające na określenie warunku logicznego, którego spełnienie spowoduje wyzwolenie pułapki (rysunek 9.9). Rysunek 9.9. Warunkowe wywoływanie ustawionej pułapki 16. Wpisz warunek, którego spełnienie spowoduje wywołanie pułapki: NKEPKM NKEDC. W ten sposób działanie programu zostanie wstrzymane, je eli pętla będzie wykonana tyle samo lub więcej razy, ni podana przez u ytkownika liczba, której silnia ma zostać wyliczona. 17. Uruchom program. Po chwili jego działanie zostanie wstrzymane.
  • 18. Rozdział 9. Wyszukiwanie i programowe przechwytywanie błędów 169 18. Odczytując (przez ustawienie kursora myszy) wartości zmiennych licznik i dblWynik dowiemy się, e niezale nie od tego, ile razy wykonywane jest mno enie, wartość zmiennej dblWynik zawsze jest równa 0. 19. Pewnie ju domyślasz się, gdzie znajduje się błąd w tej funkcji. Nie poprawiaj go na razie — wykorzystamy go w następnym ćwiczeniu. 20. Skasuj ustawioną pułapkę. Ćwiczenie 9.6. Poznajemy tryb przerwania Tryb przerwania pozwala na: wykonywanie programu wiersz po wierszu, śledzenie wyników wykonania poszczególnych instrukcji wykonania, odczytywanie i modyfikowanie wartości zmiennych, natychmiastowe wykonanie dowolnej instrukcji, procedury lub funkcji. Operacje te mo emy wykonywać za pomocą paska narzędzi Debug (rysunek 9.10). Poszczególne ikony (zaczynając od lewej) umo liwiają: Rysunek 9.10. Pasek narzędzi diagnostycznych 1. Uruchomienie programu. 2. Włączenie trybu przerwania. 3. Zatrzymanie wykonywania programu. 4. Wznowienie wykonywania programu. 5. Ustawienie kursora w wierszu instrukcji, która właśnie będzie wykonana. 6. Trzy kolejne przyciski słu ą do sterowania wykonaniem programu: a. wybranie opcji Step Into powoduje wykonanie programu instrukcja po instrukcji; je eli wywołana zostanie procedura lub funkcja, jej wykonanie równie będzie odbywało się instrukcja po instrukcji, b. kliknięcie ikony Step Over tak e spowoduje wykonanie programu instrukcja po instrukcji; je eli jednak zostanie wywołana podprocedura lub funkcja, zostanie ona wykonana w całości, tak jakby była pojedynczą instrukcją, c. wybranie opcji Step Out spowoduje wykonanie całej podprocedury lub wywoływanej funkcji i ustawienie kursora w następnym wierszu procedury nadrzędnej. 7. Wyświetlanie danych w postaci heksadecymalnej.
  • 19. 170 Visual Basic .NET. Ćwiczenia 8. Wyświetlenie okna Breakpoints oraz, po kliknięciu skierowanej w dół strzałki, m.in. okienek: a. Locals zawierającego nazwę, aktualną wartość i typ wszystkich zmiennych zdefiniowanych dla procedury, w której nastąpiło przerwanie wykonywania programu, b. Immediate pozwalającego na wykonywanie dowolnych instrukcji języka Visual Basic lub dyrektyw kompilatora, c. Autos pozwalającego na śledzenie aktualnych wartości wybranych zmiennych, d. Call Stack zawierającego hierarchię nazw wszystkich procedur lub funkcji, z których wywołany został zaznaczony fragment podprogramu. 1. Ustaw pułapkę w wierszu FDN9[PKM
  • 20. NKEPKM funkcji SilniaIteracja. 2. Uruchom program i podaj liczbę . 3. Działanie programu zostanie wstrzymane i wyświetlone zostanie okno edytora kodu. 4. Wyświetl na ekranie okno Autos (rysunek 9.11). Rysunek 9.11. Okno Autos pozwala odczytywać i modyfikować wartości zmiennych w trybie przerwania programu 5. W tym momencie wynik równa się 0, pętla jest wykonywana po raz pierwszy, a przekazaną liczbą jest 8. Wykonaj następną instrukcję naciskając klawisz F8 lub klikając ikonę paska narzędzi Debug Step Into. 6. Po wykonaniu mno enia dblWynik *= licznik wartość zmiennej dblWynik nadal wynosi zero. Przekonaj się, wykonując kilka kolejnych instrukcji, e jej wartość nigdy się nie zmienia. 7. W tym przypadku błąd polegał na braku przypisania wartości początkowej zmiennej dblWynik. Domyślnie, po zadeklarowaniu zmiennej liczbowej uzyskuje ona wartość 0, a poniewa zero pomno one przez dowolną liczbę daje zero, nasza funkcja zwraca zero niezale nie od wartości argumentu jej wywołania. Przekonaj się, czy nasze podejrzenia są słuszne zmieniając w oknie Autos wartość zmiennej dblWynik na i wykonując kilka kolejnych iteracji. 8. Zatrzymaj tryb przerwania i zmień deklarację zmiennej dblWynik: KO FDN9[PKM #U QWDNG . Dobrą praktyką programowania jest jawne nadawanie zmiennym, podczas ich deklarowania, wartości początkowych. 9. Ponownie uruchom program. 10. Prześledź aktualne wartości zmiennych w trakcie wykonywania kolejnych iteracji. 11. Zatrzymaj działanie programu, skasuj ustawioną pułapkę i raz jeszcze przetestuj jego działanie.
  • 21. Rozdział 9. Wyszukiwanie i programowe przechwytywanie błędów 171 12. Pierwsza funkcja działa ju poprawnie, druga nadal zwraca zero. W jej przypadku błąd nie jest spowodowany brakiem nadania wartości początkowej zmiennej. 13. Ustaw pułapkę w wierszu +H NKEDC 6JGP funkcji SilniaRekurencja i uruchom program. 14. Oblicz silnię liczby 3. Pierwsza funkcja zwróci wynik, a następnie działanie programu zostanie wstrzymane. 15. Tym razem do wyszukania błędu posłu ymy się oknem Call Stack. Skoro algorytmy rekurencyjne polegają na wielokrotnym wywoływaniu danej procedury lub funkcji (zagnie d aniu wywołań a do osiągnięcia warunku brzegowego, po czym następuje cykliczne przekazywanie obliczonych wartości zewnętrznym wywołaniom), śledzenie ich działania umo liwi właśnie to okno. 16. Wykonuj krok po kroku funkcję śledząc jednocześnie w oknie Call Stack poziom jej zagnie d enia (rysunek 9.12). Rysunek 9.12. Dzięki oknie Call Stack dowiedzieliśmy się, e funkcja SilniaRekurencja wywoływana jest o jeden raz za du o — do obliczenia silni 3 powinna zostać wywołana 4 razy (jedno wywołanie zewnętrzne i trzy rekurencyjne: 3! = 1 ∗ 2 ∗ 3) 17. Przekonaj się, w jaki sposób, po osiągnięciu warunku brzegowego, kolejno obliczone wartości przekazywane są zewnętrznym wywołaniom funkcji i zatrzymaj działanie programu. Wykorzystaj do tego celu mo liwość wykonywania programu instrukcja po instrukcji. 18. Popraw definicję warunku brzegowego rekurencji: +H NKEDC 6JGP. 19. Usuń pułapkę i uruchom program. 20. Wylicz silnię kilku liczb. 21. Zakończ działanie programu i zapisz wprowadzone w nim zmiany. Przechwytywanie błędów Program, który doskonale działa w przypadku 95% danych, mo e nie działać albo działać niepoprawnie (zwracać fałszywe wyniki) dla nietypowych danych wejściowych lub w nietypowych sytuacjach. Tworząc program, powinniśmy zabezpieczyć się przed takimi błędami.
  • 22. 172 Visual Basic .NET. Ćwiczenia Klasa Exception Visual Basic po raz pierwszy, dzięki zaimplementowaniu bazowej klasy platformy .NET Exception (wyjątek), pozwala na strukturalną obsługę błędów. Wyjątek jest wywoływany z tego miejsca programu, w którym wystąpił błąd wykonania. W rezultacie, tworzony jest obiekt specjalny Exception, którego wartości atrybutów mo emy programowo odczytać. Najwa niejsze atrybuty obiektu Exception to: Message — zwraca komunikat błędu, Source — zwraca oraz pozwala ustawić nazwę programu, w ramach którego wystąpił błąd, StackTrace — zwraca listę metod, których wywołanie spowodowało wystąpienie błędu. Instrukcja Try … Catch … Finally Strukturalna obsługa błędów polega na ich przechwytywaniu i reagowaniu na błędy wyko- nania programu. Po przechwyceniu mo emy sprawdzić, jaki wyjątek został wywołany (jaki błąd wystąpił) i spróbować programowo go naprawić. Je eli w programie wystąpi nieprzechwycony błąd wykonania, działanie programu zostaje zatrzymane, a na ekranie u ytkownika wyświetlany jest systemowy komunikat o błędzie. Ćwiczenie 9.7. Odczytujemy komunikaty o błędach Instrukcje, których wykonanie mo e spowodować wystąpienie błędu, nale y zabezpieczać umieszczając je w bloku Try instrukcji Try … Catch … Finally. Następnie, w ramach bloku Catch nale y sprawdzić, jaki wyjątek został wywołany i prawidłowo na niego zareagować. 1. Wyświetl okno edytora kodu formularza frmBledy. 2. Instrukcją, której wykonanie mo e spowodować wystąpienie błędu, jest przypisanie do zmiennej liczbowej podanej przez u ytkownika wartości. Dodaj nowy wiersz powy ej instrukcji: KPV.KEDC +PRWV$QZ 2QFCL NKEDú MVÎTGL UKNPKC OC QUVCè Y[NKEQPC . 3. Wpisz 6T[ i naciśnij Enter. 4. Zostaną dodane klauzule Catch oraz End Try. Przenieś do sekcji Try instrukcję, której wykonanie powinno zostać zabezpieczone. 5. W klauzuli Catch wyświetl u ytkownikowi opis błędu i miejsca jego wystąpienia: 6T[ KPV.KEDC +PRWV$QZ 2QFCL NKEDú MVÎTGL UKNPKC OC QUVCè Y[NKEQPC %CVEJ GZ #U 'ZEGRVKQP /UI$QZ 9[UVæRK D æF GZ/GUUCIG XD%T.H A 9[YQ CP[ RTG GZ5VCEM6TCEG 'PF 6T[
  • 23. Rozdział 9. Wyszukiwanie i programowe przechwytywanie błędów 173 Je eli planujesz jedynie przechwycić błąd i zapobiec w ten sposób przerwaniu działania programu, pozostaw pustą klauzulę Catch. 6. Uruchom program i przetestuj jego działanie przez podanie nieprawidłowych danych wejściowych. Zwróć uwagę, e działanie programu nie jest dłu ej przerywane, a po podaniu nieprawidłowych danych przyjmowana jest domyślna wartość 1. 7. Zakończ działanie programu i zapisz wprowadzone w nim zmiany. Ćwiczenie 9.8. Sprawdzamy typ błędów Klasa Exception jest klasą bazową dla następujących klas: System.ApplicationException, System.IO.IsolatedStorage.IsolatedStorageException, System.Runtime.Remoting.MetadataServices.SUDSGeneratorException, System.Runtime.Remoting.MetadataServices.SUDSParserException, System.SystemException, System.Windows.Forms.AxHost.InvalidActiveXStateException. Najciekawsza z naszego punktu widzenia klasa SystemException jest z kolei klasą bazową dla kilkudziesięciu klas definiujących konkretne typy błędów, np.: System.ArithmeticException, System.IndexOutOfRangeException, System.InvalidCastException, System.NullReferenceException, System.OutOfMemoryException, System.UnauthorizedAccessException. Umo liwiają nam one dokładne sprawdzenie typu błędu wykonania i odpowiednie zarea- gowanie. 1. Wyświetl projekt formularza frmBledy. 2. Dodaj do formularza przycisk polecenia i ustaw następujące wartości jego atrybutów: Name — EOF1VYQT, Text — 1VYÎT, Location — . 3. Utwórz procedurę zdarzenia Click przycisku cmdOtwórz. 4. W ramach procedury zdarzenia spróbujemy otworzyć plik tekstowy. W trakcie wykonywania tej operacji mo e wystąpić kilka błędów: plik o podanej nazwie mo e nie istnieć, niewłaściwie mo e zostać podana jego lokalizacja, sam plik mo e zwierać niepoprawne dane itp. Dlatego pierwszą instrukcją procedury powinna być instrukcja Try.
  • 24. 174 Visual Basic .NET. Ćwiczenia 5. W ramach bloku Try otwórz do odczytu plik tekstowy: KO HU #U 0GY 5[UVGO+1(KNG5VTGCO ERNKMVZV +1(KNG/QFG1RGP. 6. Po pierwsze, sprawdzimy, czy wykonanie tej instrukcji nie spowodowało wywołania błędu związanego z odwołaniem się do nieistniejącego pliku: %CVEJ GZ #U 5[UVGO+1(KNG0QV(QWPF'ZEGRVKQP /UI$QZ 0KG PCNC GO QMTG NQPGIQ RNKMW 7. W drugiej kolejności zweryfikujmy poprawność lokalizacji pliku: %CVEJ GZ #U 5[UVGO+1KTGEVQT[0QV(QWPF'ZEGRVKQP /UI$QZ 0KGRQRTCYPC NQMCNKCELC RNKMW 8. Następnie sprawdzimy, czy dostęp do pliku nie został zablokowany: %CVEJ GZ #U 5[UVGO7PCWVJQTKGF#EEGUU'ZEGRVKQP /UI$QZ 1FOQYC FQUVúRW 9. I wreszcie sprawdzimy, czy plik nie został uszkodzony: %CVEJ GZ #U 5[UVGO+1(KNG.QCF'ZEGRVKQP /UI$QZ 7UMQFQP[ RNKM FCP[OK 10. Poniewa nieprzechwycony błąd spowoduje zatrzymanie programu, na końcu wyświetlimy komunikat pozostałych błędów: %CVEJ GZ #U 'ZEGRVKQP /UI$QZ 0KGQEGMKYCP[ D æF GZ/GUUCIG Wyjątki są sprawdzane w określonej przez programistę kolejności, a po spełnieniu pierwszego warunku kolejne nie są ju sprawdzane. Wynika z tego, e najogólniejszy warunek powinien być sprawdzany jako ostatni. 11. Uruchom program i przetestuj jego działanie. Wywołaj kolejno wyjątek klasy FileNotFoundException — wystarczy wpisać w wierszu Dim fs As New System.IO.FileStream(c:plik.txt, IO.FileMode.Open) nazwę nieistniejącego pliku; DirectoryNotFoundException — np. wpisując literę nieistniejącego napędu i UnauthorizedAccessException — np. podając poprawną nazwę i lokalizację pliku z ustawionym atrybutem Tylko do odczytu. 12. Zakończ działanie programu i zapisz wprowadzone w nim zmiany. Ćwiczenie 9.9. Wywołujemy własne wyjątki Chocia lista klas predefiniowanych wyjątków jest dość długa, pisząc zorientowane obiektowo programy będziemy chcieli wywołać własne, odpowiadające logice progra- mu, błędy. W naszym przypadku próba wywołania funkcji SilniaRekurencja z ujemnym argumentem spowoduje błąd. 1. Wyświetl okno edytora kodu formularza frmBledy. 2. Umieść wywołanie funkcji SilniaRekurencja w utworzonym bloku Try. 3. W bloku Catch wyświetl u ytkownikowi komunikat o błędzie.
  • 25. Rozdział 9. Wyszukiwanie i programowe przechwytywanie błędów 175 4. Przed instrukcją End Try dodaj blok Finally. Instrukcje umieszczone w tym bloku wykonywane są zawsze, niezale nie od tego, czy wystąpi jakikolwiek błąd. 5. W ramach bloku Finally: a. zadeklaruj zmienną statyczną licznikWywolan typu Integer, b. zwiększ wartość tej zmiennej o jeden, c. wyświetl bie ącą wartość zmiennej na ekranie. 6. Zmodyfikowane wywołanie funkcji powinno wyglądać następująco: 6T[ /UI$QZ 5KNPKC Y[PQUK 5KNPKC4GMWTGPELC KPV.KEDC6Q5VTKPI %CVEJ GZ #U 'ZEGRVKQP /UI$QZ GZ/GUUCIG (KPCNN[ 5VCVKE NKEPKM9[YQNCP #U +PVGIGT NKEPKM9[YQNCP /UI$QZ .KEPKM Y[PQUK NKEPKM9[YQNCP6Q5VTKPI 'PF 6T[ 7. Znajdź definicję funkcji SilniaRekurencja. 8. W pierwszym wierszu funkcji dodaj warunek sprawdzający, czy wartość przekazanego argumentu jest ujemna: +H NKEDC 6JGP. 9. Mo emy wywołać wyjątek za pomocą instrukcji Throw podając typ wyjątku i ewentualnie komunikat o błędzie — wywołaj wyjątek klasy ArgumentOutOfRangeException: +H NKEDC 6JGP 6JTQY 0GY #TIWOGPV1WV1H4CPIG'ZEGRVKQP 7LGOP[ CTIWOGPV Y[YQ CPKC 'PF +H 10. Uruchom program i przetestuj jego działanie. Zwróć uwagę, e błąd, który wystąpił w wywołanej funkcji, został przekazany do procedury wywołującej i tam dopiero został przechwycony. 11. Zakończ działanie programu i zapisz wprowadzone w nim zmiany.