Magazyn Ready
Nr 6-7 - czerwiec-lipiec
www.ready.gery.pl

 

Magazyn Ready
Poprzednia strona

Spis Treści

Następna strona

KURS VB #6

Lekcja 10

Już dziesiąta lekcja przed nami. Trzeba się za nią wziąć ostro. Zaczynamy nowy dział - pętle. Jednak przed tym muszę wam wyjaśnić jak pisze się komentarze w VB.

Po co mi komentarze i co to w ogóle jest? Komentarz jest to pomocniczy tekst w projekcie służący jedynie dla nas! Visual Basic w ogóle na to nie zwraca uwagi. Po co to stosować... Na razie piszemy małe programy i komentarz jest zbyteczny. Jeśli jednak będziesz musiał wykonać skomplikowany program, sam się w nim pogubisz. Do deklaracji przykładów stosujemy znak '

Wszystko co znajdzie się po tym znaku, aż do końca linijki jest komentarzem i VB nie zwraca na to najmniejszej uwagi. Komentarze zostają zaznaczone przez VB na zielono. Przykład:

If x=0 then end 'Jeśli zmienna x będzie równa zero to zakończ program

Lub

If x=0 then end 'Jeśli zmienna x będzie równa zero to zakończ program

Jak widzisz oba przypadki są dobra i czytelne. Dobra, to tyle wstępem - zaczynamy pętle.

Pętla, jak sama nazwa mówi to kilkukrotne powtórzenie się tych samych instrukcji kodu. Ile ich będzie, to zależy od warunku pętli. Najprościej jest to wyjaśnić na przykładzie.

Napiszemy program pytający się nas o wiek. Po jego podaniu wyskoczy komunikat "Masz x lat". Oczywiście program musi być głupio-odporny i jeśli podamy, że mamy 0 lub 123 lata powinien zapytać nas jeszcze raz o wiek.

Zabieramy się więc do roboty. Jak zwykle tworzymy przycisk i dodajemy kod:

Dim wiek as string
Dim b,c as byte
wiek = InputBox ("Podaj ile masz lat","Pytanie") 'Tutaj program pyta nas o wiek
If wiek = "" then end ' Jeśli nacisnęliśmy Cancel
wiek = Val(wiek) 'opis poniższej funkcji pod przykładem, na razie musisz wiedzieć, że działa podobnie jak CSng( )
Do While wiek<=0 or wiek>120
b = MsgBox ("Musisz podać prawidłowy wiek",vbCritical,"Błąd")
wiek = InputBox ("Podaj jeszcze raz swój wiek","Pytanie") 'Tutaj program znów pyta nas o wiek
If wiek = "" then end ' Jeśli nacisnęliśmy Cancel
wiek = Val(Wiek)
Loop
c = MsgBox("Masz " & wiek & " lat" , vbInformation, "Odpowiedź")

Ho, ho, ho - trzy nowości w programie. No to przetłumaczenie:

1. Dim wiek - deklarujemy zmienną wiek - czyli naszą odpowiedź.
2. Dim x,y - deklaracja tego co zwraca MsgBox.
3. Pytanie o wiek, który zostaje zapisany do zmiennej wiek.
4. If... - jeśli naciśniemy Cancel to koniec programu.
5. wiek = Val(Wiek) - pierwsza nowość. Jest to funkcja bardzo podobna do CSng(). W przyszłości właśnie ją będziemy używać. Ale czym się rożni? Jeśli byś napisał:
x = "12"
odp = CSng(x)
w zmiennej odp znalazło by się 12. Miałeś zapamiętać, że to co jest np. w polach tekstowych nazywa się stringami. Zapisuje się je właśnie w cudzysłowach. String "12" zostaje przekonwertowany na 12 i wszystko O.K. Ale zobaczmy co się teraz stanie:
x = "Tata i mama"
odp = CSng(x)
i w tym momencie wyskoczy błąd (13). Nie można przekonwertować "Tata i mama" na liczbę 9co jest chyba logiczne). Jednak funkcja VAL to potrafi...
x = "Tata i mama"
odp = Val(x)
teraz w zmiennej odp znajdzie się liczba 0.
No dobra - ale po co to mam stosować. Załóżmy, że użyłeś funkcji CSng. Teraz program pyta się nas o wiek - ty mu podajesz jakiś string np. Ble, ble - i nagle błąd "Type mismath". Aby temu zapobiec zastosowałem funkcję VAL - która zwróci 0 i błędu nie będzie...

6. Do while wiek <= 0 or wiek >120 then - jak widzisz funkcja jest bardzo podobna do funkcji IF - lecz nie oznacza ona jeśli a dopóki. Czyli tłumacząc - dopóki wiek <= 0 lub wiek >120 wykonuj istrukcje do Loop. Innymi słowy mówiąc - jeśli podamy liczbę taką jak trzeba to program przeskoczy aż za funkcję Loop (Odpowiednik End IF). Jeśli jednak podamy, np 140 to...

7. MesageBox, że zły wiek.
8. InputBox - ponawiamy pytanie o wiek...
9. Znów sprawdzenie czy naciśnięto Cancel.
10. Val - znów konwersja stringu Wiek na liczbę.
11. Loop - funkcja która spowrotem przenosi nas do funkcji Do While.

No to wracamy się, aż do linijki 6 i tu znowu rozstrzyga się czy będziemy już kończyć, czy jeszcze nie. Znów rozpatrzymy dwa przypadki:
a) Znów podaliśmy zły wiek, więc program ponownie wykonuje to co jest między Do While a Loop. Gdy dojdzie do końca to znów wraca do linii 6, i po raz kolejny rozstrzyga sprawę.
b) Podaliśmy dobry wiek - program więc przeskakuje przez funkcję Do While - Loop i lądujemy w linijce 12.

12. MsgBox - w końcu dotarliśmy tutaj. Program daje nam odpowiedź ile mamy lat. Ale co tam znowu jest namieszane... Może przestraszyliście się troszkę wyrażenia "Masz " & wiek & " lat" - pamiętacie co robił symbol & - dla tych co zapomnieli:
x = "Mam " & 12 & " lat"
Dawało to w wyniku "Mam 12 lat"
No myślę, że wiesz o co tu chodzi...

Zadanie domowe

Przepisz program który zrobiliśmy dzisiaj na lekcji. Fajnie się zaczyna, co ? No, ale to nie jest celem zadania. Twoim celem jest zmienienie tak kodu, aby po wpisaniu złego wieku program nie wyświetlał - Musisz podać prawidłowy wiek, ale powiedział nam, że wiek który podaliśmy jest za mały, albo za duży.
Podpowiedź:
Musisz zastosować funkcję Case (If też by starczył, ale nie da się go wsadzić między Do While a Loop !!!)

Lekcja 11

Jak tam z zadaniem? Uporaliście się z zadaniem, czy tylko bezmyślnie przepisaliście wszystko z przykładu? Jeśli SAMEMU udało ci się to zrobić, to dobrze. Jeśli skopiowałeś, to i tak się nie przejmuj - po prostu pewnie to było za trudne. Ale jest to oznaka, że za mało chęci wkładasz w moje lekcje VB. Dzisiaj poznamy przeciwność funkcji Do While, będzie to funkcja Do Until. Działa dokłanie odwrotnie. Oto przykład:

Zamiast:

Do While wiek<=0 or wiek>120

możemy zapisać:

Do Until wiek > 0 and wiek <= 120

Pamiętaj, że przeciwnością < jest >=, a <= jest >. Przeciwnością <> jest =.
Pamiętaj także o zmianie operatorów - Or zamienia się na End i odwrotnie.
Linie możemy przetłumaczyć tak:

Dopóki wiek będzie nie większy niż 0 i nie mniejszy niż 120 to...

Myślisz pewnie, że nigdy nie zastosujesz tej funkcji - bo i po co? Skoro można ją zamienić na bardziej zrozumiałą Do While, to po co zaprzątać sobie głowę tym. Sam przyznaję, że funkcję Do Until będziesz używał znacznie rzadziej, ale będziemy pisać takie programy, że będzie ona najwygodniejszym sposobem. I co tu więcej pisać. Praktyczne zastosowanie tej funkcji poznasz już za niedługo. Skoro mowa o pętlach to powiemy jeszcze coś o pętlach odwrotnych.

Pętla: Do While... Loop
Odwrotna: Do... Loop While

Tak samo możemy postąpić z Until... Dobra, ale czym ona się różni od normalnej pętli? Najlepiej zobrazować to na małym schemaciku...

Blok instrukcji (1)
Do While...
Blok instrukcji (2)
Loop
Blok instrukcji (3)

W przypadku normalnej pętli program wykonuje się tak:

Blok instrukcji (1), teraz albo blok instrukcji (2), albo po kilku (lub jednej) pętli blok instrukcji (3)

A teraz funkcja odwrotna do poprzedniej

Blok instrukcji (1)
Do
Blok instrukcji (2)
Loop While...
Blok instrukcji (3)

A teraz program wykonuje się tak:

Blok instrukcji (1), Blok instrukcji (2), teraz albo blok instrukcji (3), albo znów Blok instrukcji (2) i tak kilka razy (lub raz) i na koniec blok instrukcji (3)

Generalnie różni się to tym, że w funkcji Do While - Loop, program może, ale nie musi wykonąć tego co znajduje się między DO - LOOP. Zaś w funkcji odwrotnej program musi wykonać przynajmniej jeden raz instrukcję zawartą między DO - LOOP. Funkcja jest rzadko stosowana (sam nigdy jej nie używałem), zawsze ją można zastąpić zwykłym ułożeniem. Ale warto wiedzieć, że coś takiego jest . Zawsze się może zdarzyć, że akurat będzie ona lepsza.

Pamiętaj, że jeśli masz jakikolwiek problem z wyżej zamieszczonym kursem lub masz jakieś pytanie nie krępuj się - pisz do mnie na adres: slash@ptik.prv.pl Twój list nie zostanie bez odpowiedzi. Jeśli nawet nie masz pytań to i tak napisz czy podoba ci się ten kurs, co chciałbyś w nim zmienić. Napisz w ogóle cokolwiek, abym wiedział, że ktoś ten kurs czyta.

Ufff... Dobrnęliśmy do końca tej lekcji (właściwie to była sama teoria - dopełnienie poprzedniej lekcji). Trzeba by wypić jakieś piwo. Oczywiście bezalkoholowe ;) .Na następnej lekcji będziemy brać ostatnią z pętli... pętlę For. Lekcja będzie bardzo ważna. For jest najczęściej stosowaną pętlą w VB. Przed lekcją dobrze wypocznij.

Slash

Kurs zamieszczony na podstawie wymiany z magazynem @t - www.at.bjn.pl

 

__________________ REKLAMA __________________

System wymiany banerów NetBAN


Poprzednia strona   | 40 |  Następna strona
Spis Treści


Copyright (C) 2001 by Ready. Wszelkie prawa zastrzeżone.