Ćwiczenie — tworzenie i testowanie pętli na potrzeby wprowadzania nowych danych zwierząt domowych

Zakończone

W tym ćwiczeniu utworzysz kod, który kontroluje dane wejściowe nowych ourAnimals danych tablicy. Obliczasz początkowe wartości zmiennych sterujących pętli i konstruujesz pętlę, która zbiera dane określone przez użytkownika dla zwierząt. Szczegółowe zadania wykonywane w tym ćwiczeniu to:

  1. Oblicz petCount: napisz kod, który zlicza liczbę zwierząt domowych w ourAnimals tablicy, która ma przypisane dane.
  2. Komunikaty warunkowe: napisz kod, aby wyświetlić dane wyjściowe komunikatu, gdy petCount wartość jest mniejsza niż maxPets.
  3. Pętla zewnętrzna: utwórz strukturę pętli, która będzie używana do wprowadzania nowych ourAnimals danych tablicy.
  4. Kryteria zakończenia: napisz kod, który ocenia warunek zakończenia dla pętli "wprowadź nowe dane tablicy ourAnimals".
  5. Test weryfikacyjny: wykonaj testy weryfikacyjne dla kodu opracowywany w tym ćwiczeniu.

Ważne

Przed rozpoczęciem tego ćwiczenia należy wykonać poprzednie ćwiczenie w tym module.

Zlicz liczbę zwierząt domowych w tablicy ourAnimals

W tym zadaniu ustanowisz kryteria wyjścia dla pętli wprowadzania danych i utworzysz pętlę for , która może służyć do zliczenia liczby zwierząt domowych w ourAnimals przypisanych danych.

  1. Upewnij się, że program Visual Studio Code jest otwarty i że plik Program.cs jest widoczny w edytorze.

  2. Znajdź instrukcję switch(menuSelection) , a następnie znajdź case "2": wiersz kodu.

  3. Znajdź instrukcję Console.WriteLine() wyświetlającą komunikat "najbliższy wkrótce", a następnie zastąp go pustym wierszem kodu.

  4. W pustym wierszu kodu, który został utworzony, aby zadeklarować anotherPet zmienne i petCount , wprowadź następujący kod:

    string anotherPet = "y";
    int petCount = 0;
    

    Te dwie zmienne kontrolują iterację pętli używanej while do wprowadzania nowych danych zwierząt domowych. Zainicjuj obie zmienne w ramach deklaracji.

    • anotherPet jest inicjowany z wartością y przed rozpoczęciem while pętli. Otrzyma ona przypisaną przez użytkownika wartość lub yn wewnątrz while pętli.

    • petCount reprezentuje liczbę zwierząt z przypisanymi cechami zwierząt domowych. Zostanie przypisana wartość obliczeniowa poza while pętlą i będzie zwiększana przez 1 wewnątrz while pętli za każdym razem, gdy nowe zwierzę zostanie dodane do tablicy ourAnimals .

    Ważne

    Zakres zmiennych powinien być zawsze tak wąski, jak to możliwe. W aplikacji Contoso Pets można ograniczyć zakres petCount na poziomie aplikacji zamiast określania case "2": zakresu do bloku kodu. Większy zakres umożliwia dostęp petCount z dowolnego miejsca w aplikacji. Jeśli petCount zakres został objęty zakresem na poziomie aplikacji, można przypisać jej wartość podczas tworzenia przykładowych danych i programowo zarządzać jej wartością w pozostałej części aplikacji. Na przykład, gdy znajdziesz dom dla zwierzaka i usuniesz zwierzę z ourAnimals tablicy, możesz zmniejszyć o petCount1wartość . Pytanie brzmi: na jakim poziomie należy określić zakres zmiennej, gdy nie masz pewności, czy będzie ona używana w innych częściach aplikacji? W takim przypadku warto ograniczyć zakres petCount na poziomie aplikacji, mimo że nie używasz go nigdzie indziej. W końcu określenie zakresu petCount na poziomie aplikacji gwarantuje, że jest ona dostępna, jeśli zdecydujesz się na jej użycie w innym miejscu. Być może możesz również ograniczyć zakres innych zmiennych na poziomie aplikacji. Dzięki temu zmienne są zawsze w zakresie i są dostępne. Dlaczego więc nie określać zakresu zmiennych na poziomie aplikacji, jeśli sądzisz, że mogą one być używane później w aplikacji? Określanie zakresu zmiennych na wyższym poziomie niż jest to konieczne może prowadzić do problemów. Podwyższony zakres zwiększa wymagania dotyczące zasobów aplikacji i może uwidaczniać aplikację niepotrzebnym zagrożeniom bezpieczeństwa. W miarę zwiększania się coraz większych i bardziej złożonych aplikacji wymagają większej ilości zasobów. Telefony i komputery przydzielają pamięć dla tych zasobów, gdy są w zakresie. Gdy twoje aplikacje stają się bardziej "rzeczywiste", stają się bardziej dostępne. Aplikacje są często dostępne z chmury lub innych aplikacji. W związku z tymi problemami aplikacje są często uruchamiane, gdy nie są używane. Ważne jest, aby wymagania dotyczące zasobów aplikacji były pod kontrolą i możliwie najmniejszym zużyciem zabezpieczeń. Mimo że dzisiejsze systemy operacyjne wykonują świetną robotę w zakresie zarządzania zasobami i zabezpieczania aplikacji, nadal najlepszym rozwiązaniem jest zachowanie zakresu zmiennych do poziomu, w którym są one rzeczywiście potrzebne. Jeśli zdecydujesz się używać petCount bardziej szeroko w aplikacji, możesz zaktualizować kod w celu określenia zakresu petCountna wyższym poziomie w aplikacji. Pamiętaj, aby zachować zakres zmiennych tak wąsko, jak to możliwe, i zwiększyć ich zakres tylko wtedy, gdy stanie się to konieczne.

  5. W wierszu kodu poniżej deklaracji zmiennych, aby utworzyć pętlę, która iteruje przez zwierzęta w ourAnimals tablicy, wprowadź następujący kod:

    for (int i = 0; i < maxPets; i++)
    {
    }
    

    Ten kod powinien wyglądać znajomo. Użyjesz tej for pętli za każdym razem, gdy iterujesz przez tablicę ourAnimals .

  6. W bloku for kodu pętli, aby sprawdzić, czy dane cech zwierząt domowych zostały przypisane do zwierzęcia, wprowadź następujący kod:

    if (ourAnimals[i, 0] != "ID #: ")
    {
    }
    

    Ponownie ten kod powinien wyglądać znajomo. Użyjesz tej if instrukcji za każdym razem, gdy sprawdzisz, czy przypisano cechy zwierząt domowych.

  7. W bloku if kodu, który został utworzony, aby zwiększać o petCount 1, wprowadź następujący kod:

    petCount += 1;
    
  8. Pośmiń minutę, aby zbadać ukończoną for pętlę.

    Ukończona for pętla powinna wyglądać podobnie do następującego kodu:

    for (int i = 0; i < maxPets; i++)
    {
        if (ourAnimals[i, 0] != "ID #: ")
        {
            petCount += 1;
        }
    }
    

    Ten kod przeprowadzi pętlę przez sprawdzanie tablicy dla przypisanych ourAnimals danych. Gdy znajdzie zwierzę z przypisanymi danymi, zwiększa petCounterwartość .

  9. W menu Plik programu Visual Studio Code wybierz pozycję Zapisz.

  10. Otwórz panel Zintegrowany terminal w programie Visual Studio Code i wprowadź polecenie w celu skompilowania programu.

    Aby otworzyć terminal integrowania z widoku EKSPLORATOR, kliknij prawym przyciskiem myszy pozycję Starter, a następnie wybierz polecenie Otwórz w zintegrowanym terminalu. Możesz również użyć menu Widok lub Terminal , aby otworzyć panel Zintegrowany terminal.

    Aby skompilować dotnet build program, wprowadź polecenie w wierszu polecenia terminalu.

  11. Napraw wszelkie zgłoszone błędy kompilacji przed kontynuowaniem.

    Uwaga / Notatka

    Na razie możesz zignorować komunikat Ostrzeżenie o anotherPet przypisaniu, ale nigdy nie był używany. Dodasz kod, który będzie używany anotherPet w dalszej części tego ćwiczenia.

    Jeśli występują błędy kompilacji, pamiętaj, że komunikaty o błędach kompilacji i ostrzeżeniach informują o tym, czym jest problem i gdzie można go znaleźć. Jeśli zaktualizujesz kod, pamiętaj, aby zapisać zmiany przed ponowną kompilacją.

  12. Zamknij panel Terminal.

Wyświetlanie danych wyjściowych komunikatów, gdy parametr petCount jest mniejszy niż maxPets

W tym zadaniu sprawdzasz, czy petCount wartość jest mniejsza niż maxPets i czy jest, zostanie wyświetlony komunikat dla użytkownika.

  1. W pustym wierszu kodu poniżej utworzonej for pętli, aby sprawdzić, czy petCount wartość jest mniejsza niż maxPets, wprowadź następujący kod:

    if (petCount < maxPets)
    {
    }
    
  2. W bloku kodu instrukcji if , aby wyświetlić komunikat dla użytkownika, wprowadź następujący kod:

    Console.WriteLine($"We currently have {petCount} pets that need homes. We can manage {(maxPets - petCount)} more.");
    

    Użytkownicy aplikacji mają wprowadzać cechy zwierząt domowych. Ten komunikat zawiera ważny kontekst.

  3. Pośmiń minutę, aby przejrzeć case "2": gałąź kodu instrukcji switch .

    Na tym etapie case "2": gałąź kodu powinna wyglądać podobnie do następującego kodu:

    case "2":
        // Add a new animal friend to the ourAnimals array
        string anotherPet = "y";
        int petCount = 0;
        for (int i = 0; i < maxPets; i++)
        {
            if (ourAnimals[i, 0] != "ID #: ")
            {
                    petCount += 1;
            }
    
        }
    
        if (petCount < maxPets)
        {
            Console.WriteLine($"We currently have {petCount} pets that need homes. We can manage {(maxPets - petCount)} more.");
        }
    
        Console.WriteLine("Press the Enter key to continue.");
        readResult = Console.ReadLine();
        break;
    
  4. W menu Plik programu Visual Studio Code wybierz pozycję Zapisz.

  5. Otwórz panel Zintegrowany terminal w programie Visual Studio Code i wprowadź polecenie w celu skompilowania programu.

  6. Napraw wszelkie zgłoszone błędy kompilacji przed kontynuowaniem.

    Ponownie możesz zignorować komunikat Ostrzeżenie o anotherPet przypisaniu, ale nigdy nie był używany. W następnym zadaniu rozpoczniesz tworzenie pętli używanej while do wprowadzania danych dla co najmniej jednego zwierzaka. Wyrażenie utworzone dla while pętli będzie używane anotherPet , a ten komunikat ostrzegawczy zniknie.

    Pamiętaj, że komunikaty ostrzegawcze to rzeczy, o które należy się martwić, ale nie uniemożliwią ci uruchamiania programu.

  7. W wierszu polecenia terminalu wprowadź polecenie, aby uruchomić program.

    dotnet run Wprowadź polecenie w wierszu polecenia terminalu, aby uruchomić kod programu.

    Jeśli kod nie generuje błędu środowiska uruchomieniowego, główne menu aplikacji powinno być teraz wyświetlane na panelu terminalu.

  8. W wierszu polecenia terminalu wprowadź wartość 2

    Ta wartość odpowiada case "2": gałęzi kodu.

  9. Sprawdź, czy w terminalu jest wyświetlany następujący komunikat.

    We currently have 4 pets that need homes. We can manage 4 more.
    Press the Enter key to continue.
    

    Jeśli nie widzisz oczekiwanego komunikatu, przejrzyj kod, aby zidentyfikować i rozwiązać problem. Zapisz zmiany, ponownie skompiluj i ponownie uruchom aplikację. Przed kontynuowaniem upewnij się, że kod działa zgodnie z oczekiwaniami.

  10. W wierszu polecenia terminalu naciśnij Enter, aby kontynuować uruchamianie aplikacji.

  11. Zamknij aplikację, a następnie zamknij panel Terminal.

Tworzenie struktury pętli, która będzie używana do wprowadzania nowych danych tablicy ourAnimals

W tym zadaniu utworzysz pętlę while , która będzie nadal iterować tak długo, jak anotherPet jest równa y i petCount jest mniejsza niż maxPets.

  1. W edytorze kodu utwórz pusty wiersz kodu poniżej if (petCount < maxPets) bloku kodu.

  2. Aby rozpocząć proces tworzenia nowej while pętli, wprowadź następujący kod:

    while (anotherPet == "y" && petCount < maxPets)
    {
    }
    
  3. W menu Plik programu Visual Studio Code wybierz pozycję Zapisz.

  4. Otwórz panel Zintegrowany terminal w programie Visual Studio Code i wprowadź polecenie w celu skompilowania programu.

  5. Zwróć uwagę, że komunikat Ostrzeżenie anotherPet nie jest już używany.

    Jeśli zgłoszono jakiekolwiek błędy kompilacji lub ostrzeżenia, rozwiąż problemy przed kontynuowaniem.

Sprawdzanie warunku wyjścia dla nowej pętli zwierząt domowych

W tym zadaniu zaktualizujesz while (anotherPet == "y" && petCount < maxPets) blok kodu. Nowy kod zwiększa petCount się, a następnie sprawdza, czy petCount wartość jest mniejsza niż maxPets. Jeśli petCount wartość jest mniejsza niż maxPets, pytasz użytkownika, czy chce wprowadzić informacje dla innego zwierzaka, i upewnij się, że odpowiedź to y lub n. while (anotherPet == "y" && petCount < maxPets) Po bloku kodu sprawdzasz wartość petCount. Jeśli petCount wartość jest równa maxPets, informujesz użytkownika, że nie można dodać więcej zwierząt domowych.

Uwaga / Notatka

Kod używany do wprowadzania danych zwierząt domowych jest opracowywany w następnym ćwiczeniu. Na razie zwiększa się tak, petCount jakby dane były wprowadzane i zapisywane w tablicy ourAnimals . Dzięki temu można zakończyć tworzenie logiki kodu skojarzonej z pętlą while .

  1. Utwórz pusty wiersz kodu wewnątrz bloku while (anotherPet == "y" && petCount < maxPets) kodu pętli utworzonej w poprzednim zadaniu.

  2. Aby zwiększać petCountwartość , wprowadź następujący kod:

    // increment petCount (the array is zero-based, so we increment the counter after adding to the array)
    petCount = petCount + 1;
    
  3. Aby sprawdzić, czy petCount wartość jest mniejsza niż maxPets, wprowadź następujący kod:

    // check maxPet limit
    if (petCount < maxPets)
    {
    }
    
  4. W bloku kodu utworzonej if instrukcji, aby zapytać użytkownika, czy chcesz dodać innego zwierzaka, wprowadź następujący kod:

    // another pet?
    Console.WriteLine("Do you want to enter info for another pet (y/n)");
    
  5. Poniżej wprowadzonego komunikatu WriteLine() , aby odczytać odpowiedź użytkownika i upewnić się, że użytkownik wprowadził ciąg "y" lub "n", wprowadź następujący kod:

    do
    {
        readResult = Console.ReadLine();
        if (readResult != null)
        {
            anotherPet = readResult.ToLower();
        }
    
    } while (anotherPet != "y" && anotherPet != "n");
    
  6. Znajdź instrukcję break oddzielającą case "2"; się od case "3"; instrukcji w instrukcji switch .

  7. Zwróć uwagę na instrukcje Console.WriteLine() i Console.ReadLine() na końcu kodu case "2"; .

    Ten kod wyświetla użytkownikowi komunikat, a następnie wstrzymuje aplikację.

  8. Aby ująć instrukcje Console.WriteLine() i Console.ReadLine() wewnątrz if instrukcji , zaktualizuj kod w następujący sposób:

    
    if (petCount >= maxPets)
    {
        Console.WriteLine("Press the Enter key to continue.");
        readResult = Console.ReadLine();
    }
    
    break;
    
    case "3":
    

    Wartość petCount elementu jest zwiększana wewnątrz while pętli. Jeśli petCount wartość jest równa maxPets, do tablicy ourAnimals nie można dodać więcej zwierząt domowych. Jeśli tak się dzieje, należy poinformować użytkownika.

  9. Aby poinformować użytkownika, że użytkownik Contoso Pets osiągnął swoją pojemność, zaktualizuj kod w następujący sposób:

    
        if (petCount >= maxPets)
        {
            Console.WriteLine("We have reached our limit on the number of pets that we can manage.");
            Console.WriteLine("Press the Enter key to continue.");
            readResult = Console.ReadLine();
        }
    
        break;
    
    case "3":
    
  10. Pośmiń chwilę, aby przejrzeć kod w while pętli i komunikat użytkownika, który został utworzony.

    Pętla while (anotherPet == "y" && petCount < maxPets) i kod, który wyświetla komunikat użytkownika, powinien wyglądać podobnie do następującego kodu:

    while (anotherPet == "y" && petCount < maxPets)
    {
        // increment petCount (the array is zero-based, so we increment the counter after adding to the array)
        petCount = petCount + 1;
    
        // check maxPet limit
        if (petCount < maxPets)
        {
            // another pet?
            Console.WriteLine("Do you want to enter info for another pet (y/n)");
            do
            {
                readResult = Console.ReadLine();
                if (readResult != null)
                {
                    anotherPet = readResult.ToLower();
                }
    
            } while (anotherPet != "y" && anotherPet != "n");
        }
    }
    
    if (petCount >= maxPets)
    {
        Console.WriteLine("We have reached our limit on the number of pets that we can manage.");
        Console.WriteLine("Press the Enter key to continue.");
        readResult = Console.ReadLine();
    }
    
  11. W menu Plik programu Visual Studio Code wybierz pozycję Zapisz.

  12. Otwórz panel Zintegrowany terminal w programie Visual Studio Code i wprowadź polecenie w celu skompilowania programu.

  13. Napraw wszelkie zgłoszone błędy kompilacji lub ostrzeżenia przed kontynuowaniem.

Sprawdź swoją pracę

W tym zadaniu uruchomisz aplikację ze zintegrowanego terminalu i sprawdzisz, czy utworzona logika pętli i rozgałęziania działa zgodnie z oczekiwaniami.

  1. W razie potrzeby otwórz panel zintegrowany terminal programu Visual Studio Code.

  2. W wierszu polecenia terminalu wprowadź polecenie dotnet run

  3. W wierszu polecenia terminalu wprowadź wartość 2

  4. Sprawdź, czy są wyświetlane następujące komunikaty:

    We currently have 4 pets that need homes. We can manage 4 more.
    Do you want to enter info for another pet (y/n)
    
  5. W wierszu polecenia terminalu wprowadź n

  6. Sprawdź, czy kod kończy pętlę wprowadzania nowych zwierząt domowych po wprowadzeniu ciągu "n".

    Jeśli logika kodu działa zgodnie z oczekiwaniami, powinno zostać wyświetlone menu główne w terminalu.

    Jeśli kod nie zamyka pętli w oczekiwany sposób, naciśnij Ctrl + C w terminalu, aby wymusić zatrzymanie wykonywania. Należy ręcznie przejść przez kod i śledzić wartości zmiennych kryteriów zakończenia. Zaktualizuj kod, jeśli to konieczne, aby upewnić się, że wyjdą while z pętli po wprowadzeniu ciągu "n". Zapisz zmiany, skompiluj program i uruchom test weryfikacyjny, aby wrócić do tego momentu.

  7. W wierszu polecenia terminalu wprowadź wartość 2

    Po raz kolejny zobaczysz następujące komunikaty:

    We currently have 4 pets that need homes. We can manage 4 more.
    Do you want to enter info for another pet (y/n)
    
  8. W wierszu polecenia terminalu wprowadź y

  9. Pośmiń chwilę, aby zastanowić się, jak petCount jest używany w kodzie.

    Zanim będzie można zweryfikować kod, musisz zrozumieć logikę kodu.

    W takim przypadku logika kodu opiera się na relacji między petCount i maxPets. Wiesz, że maxPets przypisano wartość 8, ale co z petCount? Następujące elementy pomagają ocenić zaimplementowaną logikę:

    • Wiesz, że petCount po 4 wprowadzeniu pierwszej iteracji while pętli.

    • Wiesz, że petCount jest zwiększany za każdym razem, gdy pętla while iteruje.

    • Wiesz, że przypisana petCount wartość i sposób, w jaki zwiększa się, wpływają na sposób petCount przechowywania danych w tablicy ourAnimals . Poniższe elementy wyjaśniają relację między danymi przechowywanymi petCount w programie ourAnimals:

      • Aplikacja dodaje cztery zwierzęta do tablicy ourAnimals podczas tworzenia przykładowych danych.
      • Aplikacja przechowuje nowe dane w tablicy ourAnimals , gdy wartość petCount to 4. To nie jest usterka. Kod ma sens, gdy pamiętasz, że elementy tablicy są oparte na zera. Na przykład ourAnimals[0,0] zawiera identyfikator zwierzęcia dla zwierząt 1 i ourAnimals[3,0] zawiera identyfikator zwierzęcia dla zwierząt 4. W związku z tym, kiedy petCount4 przechowujesz dane dla piątego zwierzaka.
      • Aplikacja będzie przechowywać dane zwierząt domowych w tablicy, zanim zwiększy petCountwartość .
      • Aplikacja zwiększa petCount się przed wyświetleniem monitu użytkownika o dodanie innego zwierzaka.
      • Gdy aplikacja wyświetla monit Czy chcesz wprowadzić informacje dla innego zwierzaka (y/n) monit po raz pierwszy, petCount jest już ustawiony na 5wartość .
    • Jeśli użytkownik wprowadzi wartość y w pierwszym wierszu Czy chcesz wprowadzić informacje dla innego zwierzaka (y/n), wiesz, że:

      • Pętla while (anotherPet == "y" && petCount < maxPets) będzie iterować. Wiesz, że pętla będzie iterować, ponieważ anotherPet == "y" i petCount < maxPets.
      • Wartość przypisana do petCount elementu zostanie zwiększana (gdy pętla while iteruje).
      • Wartość przypisana do petCount będzie (6po pierwszym wprowadzeniu przez użytkownika).

    Pamiętaj o tej analizie logiki kodu podczas kontynuowania testowania aplikacji.

  10. Zwróć uwagę, że panel terminalu aktualizuje ten sam komunikat "inny zwierzę?", ale kod nie wyświetla zaktualizowanego petCountelementu .

    Panel Terminal powinien teraz wyświetlić następujące dane wyjściowe:

    We currently have 4 pets that need homes. We can manage 4 more.
    Do you want to enter info for another pet (y/n)
    y
    Do you want to enter info for another pet (y/n)
    
  11. W wierszu polecenia terminalu wprowadź y

    Po drugim wprowadzeniu ypetCount parametr jest zwiększany do 7wartości . Tak więc petCount jest nadal mniej niż maxPets

  12. W wierszu polecenia terminalu wprowadź y

    Po wprowadzeniu y po raz petCount trzeci wartość jest zwiększana do 8wartości . Więc petCount jest teraz równe maxPets

  13. Sprawdź, czy kod kończy pętlę while po raz trzeci.

    Panel Terminal powinien teraz wyświetlić następujące dane wyjściowe:

    We currently have 4 pets that need homes. We can manage 4 more.
    Do you want to enter info for another pet (y/n)
    y
    Do you want to enter info for another pet (y/n)
    y
    Do you want to enter info for another pet (y/n)
    y
    We have reached our limit on the number of pets that we can manage.
    Press the Enter key to continue.
    

    Jeśli kod nie zamyka pętli w oczekiwany sposób, wykonaj kroki przez kod ręcznie i prześledź wartości zmiennych kryteriów zakończenia. Zaktualizuj kod, aby upewnić się, że zamykasz pętlę, gdy petCount osiągnie wartość równą maxPetswartości . Zachowaj odpowiedź na "y", dopóki nie wiesz, że petCount jest równa maxPetswartości , która ma wartość 8domyślną .

  14. W wierszu polecenia terminalu naciśnij Enter, aby kontynuować uruchamianie aplikacji.

  15. Zamknij aplikację, a następnie zamknij panel Terminal.