8 Vb.Net pętla Do While, Do Until oraz funkcja Val

Do While

Pętla Do While to pętla która kilkukrotnie powtarza swoją funkcję. Ilość powtórzeń zależy od warunków tej pętli. Pętla Do While ma następującą postać: Pętla Do While działa dopóki warunek jej postawiony jest spełniony.
Do While 'warunek
   'powtarzane instrukcje
Loop 

Jak możemy więc wykorzystać taką pętlę? Stwórzmy program, który będzie pytał nas o liczbę z jakiegoś zakresu, po jej podaniu program odpowie nam co to za liczba w kontrolce MessageBox.
        
Dim liczba As Integer
liczba = Val(InputBox("Wpisz liczbę z zakresu 0-100", "Wpisz Liczbę"))
Do While liczba < 0 Or liczba > 100
   MessageBox.Show("Podałeś nieprawidłową liczbę", "Spróbuj jeszcze raz", MessageBoxButtons.OK, MessageBoxIcon.Warning)
   liczba = Val(InputBox("Spróbuj teraz napisać poprawną liczbę z zakresu 0-100", "Wpisz Liczbę"))
Loop
MessageBox.Show("Twoja liczba to " & liczba & ". Dziękuję !", "Twoja Liczba", MessageBoxButtons.OK, MessageBoxIcon.Information)

No to może teraz kilka słów wyjaśnień co każda linia kodu wykonuje:
  1. Deklaracja zmiennej typu Byte
  2. Przypisanie zmiennej liczba wartość odpowiedzi InputBox'a
  3. Rozpoczęcie pętli Do While z warunkiem < 0 Or liczba > 100 Czyli jeśli wartość zmiennej liczba będzie mniejsza niż 0 lub większa niż 100 to będzie się wykonywał kod do instrukcji Loop
  4. Wyświetlenie MessageBox'a z powiadomieniem o nieprawidłowej wartości.
  5. Ponowne wyświetlenie InputBox'a do pobrania wartości zmiennej liczba
  6. Przeniesienie nas do początku pętli Do While
  7. Jeśli zmienna liczba osiągnie wartość w przedziale 1-100 to pętla się zakończy i wyświetlony zostanie MessageBox, który wyświetli komunikat o powodzeniu.
Jeśli chcemy ustrzec się przed wyjątkami, które mogą pojawić się w aplikacji to można dodatkowo dodać do kodu instrukcję Try Catch lub przekonwertować to co zwraca nam InputBox funkcją Val Przykładem zdarzenia, które może wywołać wyjątek:
  • zamknięcie InputBox'a (wyjątek: "Konwersja z ciągu "" na typ 'Byte' nie jest prawidłowa")
  • nie wpisanie żadnej wartości w InputBox  i naciśnięcie Ok (wyjątek: "Konwersja z ciągu "" na typ 'Byte' nie jest prawidłowa")
  • wciśnięcie anuluj w InputBox (wyjątek: "Konwersja z ciągu "abc" na typ 'Byte' nie jest prawidłowa")
  • wpisanie w InputBox ciągu znaków innego niż liczbowy (wyjątek: "Konwersja z ciągu "abc" na typ 'Byte' nie jest prawidłowa")
Funkcja Val jeśli natrafi na ciąg nie będący cyframi przekonwertuje go na liczbę 0.
Wykonajmy teraz kod, który przekonwertuje nam odpowiedź InputBox do wartości liczbowej.
        
Dim liczba As Byte
liczba = Val(InputBox("Wpisz liczbę z zakresu 0-100", "Wpisz Liczbę"))
Do While liczba < 0 Or liczba > 100
   MessageBox.Show("Podałeś nieprawidłową liczbę", "Spróbuj jeszcze raz", MessageBoxButtons.OK, MessageBoxIcon.Warning)
   liczba = Val(InputBox("Spróbuj teraz napisać poprawną liczbę z zakresu 0-100", "Wpisz Liczbę"))
Loop
MessageBox.Show("Twoja liczba to " & liczba & ". Dziękuję !", "Twoja Liczba", MessageBoxButtons.OK, MessageBoxIcon.Information)

Do Until

Pętla Do Until jest przeciwieństwem pętli Do While. Pętla Do While wykonuje się dopóki warunek będzie spełniony zaś pętla Do Until będzie wykonywać się dopóki jej warunek nie będzie spełniony. By odwrócić sytuację zmieniamy znaki z < na >= i z > na <= oraz operatora logicznego Or zmieniamy na And. Pamiętaj, że przeciwnością < jest >=, a <= jest >. Przeciwnością <> jest =.
Spójrzmy zatem na kod, który jest przeciwnością tego powyżej a działa w ten sam sposób.
        
Dim liczba As Byte
liczba = Val(InputBox("Wpisz liczbę z zakresu 0-100", "Wpisz Liczbę"))
Do Until liczba >= 0 And liczba <= 100
   MessageBox.Show("Podałeś nieprawidłową liczbę", "Spróbuj jeszcze raz", MessageBoxButtons.OK, MessageBoxIcon.Warning)
   liczba = Val(InputBox("Spróbuj teraz napisać poprawną liczbę z zakresu 0-100", "Wpisz Liczbę"))
Loop
MessageBox.Show("Twoja liczba to " & liczba & ". Dziękuję !", "Twoja Liczba", MessageBoxButtons.OK, MessageBoxIcon.Information)

Te pętle zapewne niejednemu do dziś spędzają sen z powiek. Jeśli przebrniesz przez nie i zrozumiesz jak one działają to będziesz na dobrej drodze do sukcesu. Wielu uważa pętle While łatwiejsze od For a inni z kolei lepiej rozumieją For niż While. To chyba kwestia osobistych preferencji. Jedno jest pewne, żeby umieć programować, trzeba umieć posługiwać się pętlami.



Utworzono 08.09.2015

Brak komentarzy:

Prześlij komentarz