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.