14 Vb.Net tablice i pętla For Each

Tablica


Witam w kolejnym dziale mojego poradnika. Dziś zobaczymy jak można utworzyć tablicę. Wyobraźmy sobie sytuację; Mamy jakiś zbiór różnych danych załóżmy że będą to numery zapisane w łańcuchu tekstowym. W pewnej chwili mamy potrzebę, aby poruszać się w tym zbiorze, np żeby coś z niego wyciągnąć albo sprawdzić czy to czego szukamy jest w nim zawarte. I co ? no i do tego właśnie służą tablicę kolekcji. A dzięki pętli For Each nauczymy się po niej poruszać. Do roboty !
zadeklarujemy sobie tablicę stringów:
        Private TablicaStringow As String() = {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", _
                        "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", _
                        "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", _
                        "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", _
                        "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", _
                        "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", _
                        "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", _
                        "85", "86", "87", "88", "89", "90", "91", "92", "93", "94", "95", "96", _
                        "97", "98", "99", "100"}

Jak nietrudno zauważyć, tablica składa się z kolekcji stringów zawierającej 100 elementów. To dosyć pokaźna liczba. Można zatem wypróbować na niej pętlę For Each. Układamy na formie jeden TextBox, do którego będziemy wpisywać dane i jeden Button, który uzbroimy w następujący kod:
        Dim str As String = TextBox1.Text
        Dim jest As Boolean = False
        For Each i As String In TablicaStringow
            If str = i Then
                MessageBox.Show("wpisany string znajduje się w tablicy " & i)
                jest = True
            End If
        Next
        If jest = False Then
            MessageBox.Show("Tablica nie zawiera podanego stringu")
        End If

Wyjaśnimy sobie teraz po kolei co robi każda linia kodu:
  1. deklaracja zmiennej str typu String dla pobrania łańcucha z TextBox'a
  2. deklaracja zmiennej jest typu Boolean dla pobrania wartości "True" w przypadku znalezienia przez pętlę w tablicy szukanego stringa.
  3. deklaracja pętli For Each ze zmienną i typu String szukającej w TablicaStringow
  4. instrukcja jeśli zmienna str (tekst pobrany z TextBox'a) będzie równa zmiennej i pętli to  wtedy
  5. komunikat o znalezieniu 
  6. przypisanie zmiennej jest wartość True
  7. zakończenie pętli
  8. warunek jeśli zmienna jest ma wartość False to wtedy
  9. komunikat że nie zawiera
  10. koniec warunku
Ale dlaczego zrobiłem to w ten sposób ? czemu w pętli For Each nie dałem dodatkowego warunku Else i nie wyświetliłem tam MessageBox'a z komunikatem, że nie znaleziono wartości. Ano dlatego, że Pętla For Each sprawdza po kolei każdą wartość z tablicy. Więc jeśli nawet wpisałbyś do TextBox'a string, który znajduje się w środku tablicy, to zanim pętla powie Ci, że on tam jest to 49x wyświetli komunikat że nie ma, następnie jeden komunikat, że znalazł a później znów 50 komunikatów, że nie ma. Dlatego powstała zmienna jest typu Boolean, która jeśli nie zmieni wartości na True, to na koniec procedury wyświetli komunikat, że tablica nie zawierała szukanego stringu. Zmienna i to jest ta zmienna, która sprawdza po kolei wszystkie stringi wewnątrz tablicy i porównuje łańcuchy tekstowe ze zmienną str


Mam nadzieję, że w miarę przystępnie to wytłumaczyłem i, że nie będzie z tym problemów. Wszak jest to jedno z prostszych zagadnień IMHO :) Ale pierwsze wrażenie podejrzewam "nie dość, że Pętle to jeszcze na tablicach...", ktoś mógłby pomyśleć, że to jakiś kosmos a okazuje się, że sprawa jest trywialna.

Pozdrawiam i zapraszam do kolejnych działów poradnika :)


Utworzono 13.09.2015

Brak komentarzy:

Prześlij komentarz