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.