VB - Instrukcje warunkowe

Transkrypt

VB - Instrukcje warunkowe
VB - Instrukcje warunkowe
1. Komenda MsgBox(…) przesyła informacje w dwie strony. Informuje użytkownika o
działaniu programu, ale również informuje program o reakcjach użytkownika.
Dokładnie zwraca numer klikniętego w oknie komunikatu przycisku zgodnie ze
schematem:
OK
–
1
Anuluj
2
Przerwij
3
Ponów próbę 4
Zignoruj
5
Tak
6
Nie
7
Aby sterować działaniem programu w zależności od reakcji użytkownika potrzebne są
tzw. instrukcje warunkowe:
If warunek Then
Instrukcje które mają być wykonane gdy warunek jest spełniony
Else instrukcje gdy warunek niespełniony
End If
Przetestuj działanie instrukcji If na poniższym przykładzie
Sub warunek()
Dim n As Integer
n = MsgBox("Odpowiedź Tak lub Nie", 4, "Pytanie")
If n = 6 Then
MsgBox ("Odpowiedziałeś Tak")
Else
MsgBox ("Odpowiedziałeś Nie")
End If
End Sub.
Gdy w wypadku niespełnienia warunku nie oczekujemy wykonania żadnej instrukcji
pomijamy część Else komendy.
2. Udoskonalimy Makro3.
a. Zastąp komunikat w linii blad: na komunikat pytający „Czy chcesz ponownie
wprowadzić dane?”. Odpowiedź użytkownika program musi odebrać i gdzieś
zapamiętać. Konieczne jest więc zadeklarowanie zmiennej do której
będziemy przypisywać wartości zwrotnej komunikatu (podobnie jak linie 2 i 3
powyższego przykładu.)
b. Jeżeli odpowiedz brzmi Tak skieruj instrukcją GoTo ponownie do linii
wprowadzania danych InputBox (należy uprzednią tę linię nazwać).
c. Sprawdź działanie programu, spróbuj dwukrotnie wprowadzić błąd.
Przy powtórnym popełnieniu błędu wpisywania danych Komenda On Error
GoTo blad nie przekierowuje już do linii blad. Wyjaśnia to sposób działania
Obiektu Error:
Komenda On Error GoTo blad sprawdza wartość obiektu Error. W momencie popełnienia
błędu do obiektu Error zostaje wprowadzony numer błędu (w naszym wypadku błąd numer
13 czyli tzw. TypeMismatch). Komenda On Error zauważa to, wykonuje przejście do linii blad i
kończy działanie. Należałoby zatem ponownie zadeklarować On Error GoTo blad. Nie jest to
jednak możliwe ponieważ obiekt Error zawiera już numer błędu. Problem ten można
rozwiązać metodą submakr opisaną w kolejnym punkcie.
3. Do przywoływania w makropoleceniach innych makropoleceń służy komenda Call
nazwa makra.
Napiszemy makropolecenie które kontroluje popełnienie błędu, informuje o tym
użytkownika i odnotowuje jego reakcję:
Sub blad()
On Error GoTo blad
X = InputBox("…………….")
Y=……
Exit Sub
blad: n = MsgBox(………..)
End Sub
Następnie Makro główne (poniżej) przywołuje makro blad, podejmuje działanie w
zależności od rezultatu działania makra blad. Jeżeli odpowiedz użytkownika brzmiała
Tak, makro główne ponownie uruchamia makro blad. Obiekt Error w „świeżo”
uruchomionym makro nie ma już wpisanego numeru błędu.
Sub Makro4()
n=7
start: Call blad
If n = 6 Then GoTo start
End Sub
4. Instrukcję If można rozbudować tak, aby rozstrzygała więcej niż jeden warunek:
If warunek_1 Then
Instrukcje które mają być wykonane gdy warunek_1 jest spełniony
ElseIf warunek_2 Then
instrukcje gdy warunek_2 jest spełniony (a warunek_1 niespełniony)
ElseIf …….
……………..
Else instrukcje gdy żaden z warunków nie jest spełniony
End If
Napisz Makropolecenie (z numerem 5) które pobiera liczbę punktów (z przedziału 0100) a następnie na jej podstawie wystawia ocenę zgodnie ze schematem:
80-89
db,
<60
ndst,
90-94
pdb,
60-74
dst,
95-100
bdb.
75-79
pdst,
5. Funkcja If… używa wielu warunków ale rozłącznych. Gdy warunek_1 Jest spełniony
nie bierze pod uwagę pozostałych. Dla rozważenia równoczesnego zajścia dwóch
warunków, lub co najmniej jednego z dwóch warunków służą funkcje logiczne:
Koniunkcja warunków:
warunek1 and warunek2
Alternatywa warunków:
warunek1 or warunek2
Napisz Makropolecenie które na podstawie informacji o zaliczeniu i wyniku
pierwszego terminu egzaminu dopuszcza do drugiego terminu egzaminu.
6. W pewnym sensie alternatywną do instrukcji If jest instrukcja wyboru:
Select Case zmienna_sterująca
Case przypadek_1
Instrukcje
Case przypadek_2
Instrukcje
………….
Case przypadek_n
Instrukcje
Case else
Instrukcje
End Select
Napisz z wykorzystaniem instrukcji Select Case funkcję rozkładu
prawdopodobieństwa zmiennej losowej która wynikowi rzutu na dwóch kostkach
przypisuje moduł ich różnicy (liczbom 1,2,…,5 przypisuje prawdopodobieństwa).
7. Przeanalizuj poniższy przykład a następnie napisz ponownie makropolecenie z punktu
1, ale tym razem użyj funkcji Select Case.
Przykład:
Select Case n
Case 1,2,5
Instrukcje_1
Case 6 To 8
Instrukcje_2
Case else
Instrukcje_3
End Select
Funkcja wykona instrukcje_1 dla wartości n=1 lub n=2 lub n=5, Instrukcje_2 dla
wartości n z przedziału <6,8>, instrukcje_3 dla wartości pozostałych (np. n=4).
8. Zapisz plik.