Ćwiczenie — przeglądanie kodu początkowego

Ukończone

W tym pierwszym kroku procesu programowania zapoznasz się z kodem podanym w folderze projektu Starter.

Przejrzyj zawartość pliku Program.cs

Plik Program.cs zawiera wstępną wersję aplikacji, nad którą pracujesz. Kod zawiera funkcje służące do generowania i wyświetlania przykładowych danych dla aplikacji oraz wyświetla listę opcji menu, które definiują główne funkcje aplikacji.

  1. Upewnij się, że masz otwarty folder "GuidedProject" (Guided-project-Work-with-variable-data-CSharp-main) w programie Visual Studio Code.

    Lekcja "Przygotowanie" (poprzednia lekcja w tym module) zawiera sekcję konfiguracji, która opisuje proces pobierania początkowego punktu startowego dla projektu według instrukcji i otwierania folderu programu Visual Studio Code. W razie potrzeby wróć i postępuj zgodnie z instrukcjami instalacji.

  2. W widoku "EXPLORER" rozwiń folder "Starter", a następnie wybierz pozycję "Program.cs".

    Po wybraniu pliku Program.cs zawartość pliku zostanie otwarta w głównym obszarze Edytor po prawej stronie eksploratora.

    Jeśli widok EKSPLORATORa nie jest otwarty, możesz wybrać/otworzyć widok EKSPLORATORa z paska działań po lewej stronie programu Visual Studio Code. EKSPLORATOR to najbardziej górna ikona na pasku działań.

  3. Poświęć kilka minut na przejrzenie początkowych deklaracji zmiennych w górnej części pliku Program.cs.

    // #1 the ourAnimals array will store the following: 
    string animalSpecies = "";
    string animalID = "";
    string animalAge = "";
    string animalPhysicalDescription = "";
    string animalPersonalityDescription = "";
    string animalNickname = "";
    
    // #2 variables that support data entry
    int maxPets = 8;
    string? readResult;
    string menuSelection = "";
    
    // #3 array used to store runtime data, there is no persisted data
    string[,] ourAnimals = new string[maxPets, 6];
    

    Najpierw zostanie wyświetlony komentarz (komentarz nr 1), po którym następuje lista zmiennych. Te zmienne, od animalSpecies do animalNickname, są używane do przechowywania wartości cech zwierząt domowych w wielowymiarowej tablicy ciągów o nazwie ourAnimals, które są zainicjowane jako ciąg o zerowej długości "". Deklaracja ourAnimals tablicy znajduje się nieco niżej w kodzie.

    Następna grupa zmiennych (w ramach komentarza nr 2) to mieszanka zmiennych string i int, używanych do generowania danych przykładowych, odczytywania danych wejściowych użytkownika oraz ustalania kryteriów zakończenia dla pętli głównego programu. Zwróć uwagę na wiersz kodu string? readResult;. Używasz znaku ? do przekształcenia normalnie niezmienialnego typu zmiennej (int, string, bool,...) z obsługą typów dopuszczających wartości null.

    Uwaga / Notatka

    Podczas odczytywania wartości wprowadzonych przez użytkownika z pomocą metody Console.ReadLine(), najlepiej włączyć ciąg znaków dopuszczający wartość null przy użyciu string?, aby uniknąć generowania ostrzeżeń przez kompilator podczas budowania projektu.

    Końcowa zmienna (w komentarzu nr 3) to dwuwymiarowa tablica ciągów o nazwie ourAnimals. Zainicjowano liczbę wierszy zdefiniowanych przez parametr maxPets do 8. Liczba właściwości, które przechowujesz początkowo, wynosi sześć. Sześć cech odpowiada liczbie zmiennych ciągu, które zostały zbadane w przykładowym kodzie, ale liczba cech musi zostać zwiększona, aby dodać pole dla suggestedDonation.

  4. Przewiń w dół plik Program.cs, aby zbadać pętlę for zawierającą instrukcję wyboru switch w bloku kodu.

    Przykładowy kod jest skróconą wersją, aby zaoszczędzić miejsce.

    // #4 create sample data ourAnimals array entries
    for (int i = 0; i < maxPets; i++)
    {
        switch (i)
        {
            case 0:
                animalSpecies = "dog";
                animalID = "d1";
                animalAge = "2";
                animalPhysicalDescription = "medium sized cream colored female golden retriever weighing about 45 pounds. housebroken.";
                animalPersonalityDescription = "loves to have her belly rubbed and likes to chase her tail. gives lots of kisses.";
                animalNickname = "lola";
                break;
    
            case 1:
                animalSpecies = "dog";
                animalID = "d2";
                animalAge = "9";
                animalPhysicalDescription = "large reddish-brown male golden retriever weighing about 85 pounds. housebroken.";
                animalPersonalityDescription = "loves to have his ears rubbed when he greets you at the door, or at any time! loves to lean-in and give doggy hugs.";
                animalNickname = "gus";
                break;
    
            // case 2: deleted for brevity
            // case 3: deleted for brevity
    
            default:
                animalSpecies = "";
                animalID = "";
                animalAge = "";
                animalPhysicalDescription = "";
                animalPersonalityDescription = "";
                animalNickname = "";
                break;
        }
        ourAnimals[i, 0] = "ID #: " + animalID;
        ourAnimals[i, 1] = "Species: " + animalSpecies;
        ourAnimals[i, 2] = "Age: " + animalAge;
        ourAnimals[i, 3] = "Nickname: " + animalNickname;
        ourAnimals[i, 4] = "Physical description: " + animalPhysicalDescription;
        ourAnimals[i, 5] = "Personality: " + animalPersonalityDescription;
    }
    
  5. Zwróć uwagę, że pętla for używa zmiennej maxPets do ustanowienia górnej granicy liczby iteracji po komentarzu nr 4.

  6. Zwróć również uwagę, że switch konstrukcja selektywnie rozgałęzia kod, aby można było zdefiniować różne cechy zwierząt domowych w przykładowym zestawie danych.

    Używasz instrukcji switch do zdefiniowania różnych wartości dla pierwszych czterech iteracji pętli for. Po przetworzeniu przykładowych danych wszystkie cechy są puste lub ciąg o zerowej długości.

    Wartości zmiennych cech zwierząt są przypisywane do tablicy ourAnimals u dołu for pętli.

  7. Przewiń do dołu pliku kodu w programie Visual Studio Code. Sprawdź kod używany do wyświetlania opcji menu i przechwyć dane wejściowe wyboru użytkownika.

    Należy obserwować następujący kod:

    // #5 display the top-level menu options
    do
    {
        // NOTE: the Console.Clear method is throwing an exception in debug sessions
        Console.Clear();
    
        Console.WriteLine("Welcome to the Contoso PetFriends app. Your main menu options are:");
        Console.WriteLine(" 1. List all of our current pet information");
        Console.WriteLine(" 2. Display all dogs with a specified characteristic");
        Console.WriteLine();
        Console.WriteLine("Enter your selection number (or type Exit to exit the program)");
    
        readResult = Console.ReadLine();
        if (readResult != null)
        {
            menuSelection = readResult.ToLower();
        }
    
        // use switch-case to process the selected menu option
        switch (menuSelection)
        {
            case "1":
                // list all pet info
                for (int i = 0; i < maxPets; i++)
                {
                    if (ourAnimals[i, 0] != "ID #: ")
                    {
                        Console.WriteLine();
                        for (int j = 0; j < 6; j++)
                        {
                            Console.WriteLine(ourAnimals[i, j]);
                        }
                    }
                }
                Console.WriteLine("\n\rPress the Enter key to continue");
                readResult = Console.ReadLine();
                break;
    
            case "2":
                // Display all dogs with a specified characteristic");
                Console.WriteLine("\nUNDER CONSTRUCTION - please check back next month to see progress.");
                Console.WriteLine("Press the Enter key to continue.");
                readResult = Console.ReadLine();
                break;
    
            default:
                break;
        }
    
    } while (menuSelection != "exit");
    
  8. Poświęć minutę, aby przejrzeć dwa case oświadczenia.

    Istnieją tylko dwie opcje menu działające z ograniczoną wersją aplikacji. Aplikacja startowa udostępnia tylko możliwości potrzebne do uruchamiania i testowania prototypu funkcji.

  9. Zwróć uwagę, że po wierszu kodu następuje readResult = Console.ReadLine(); sprawdzenie wartości null.

    Kod używający Console.ReadLine() metody zawiera wartość ustawioną na ciąg readResult dopuszczający wartość null, aby uniknąć generowania ostrzeżenia przez kompilator kodu podczas kompilowania projektu.

Sprawdź swoją pracę

  1. Przetestuj aplikację konsolową startowego kodu, w wierszu polecenia terminalu zbuduj i uruchom kod projektu za pomocą jednego polecenia, wpisując: dotnet run.

    Uwaga / Notatka

    Monit terminalu musi zostać otwarty w folderze startowym, a terminal powinien wyglądać podobnie do następującego: ..\ArrayGuidedProject\starter>

    Po uruchomieniu kodu zostaną wyświetlone dwa elementy menu.

    • Wprowadź: 1, aby przetestować dane wyjściowe "Wyświetl wszystkie nasze bieżące informacje o zwierzętach domowych"
    • Wprowadź: 2, aby przetestować komunikat zastępczy "w budowie".
  2. Enter: 1, a następnie naciśnij "Enter", aby "wyświetlić wszystkie zwierzęta".

  3. Sprawdź, czy są wyświetlane wszystkie informacje o zwierzętach domowych.

    Jak obserwujesz dane dotyczące wszystkich zwierząt domowych, ostatnie wyświetlane zwierzę powinno być zgodne z następującymi danymi wyjściowymi:

    ID #: c4
    Species: cat
    Age: 3
    Nickname: Lion
    Physical description: Medium sized, long hair, yellow, female, about 10 pounds. Uses litter box.
    Personality: A people loving cat that likes to sit on your lap.
    
    Press the Enter key to continue
    
  4. Naciśnij Enter, aby kontynuować i wrócić do menu.

  5. W menu wprowadź 2 i naciśnij klawisz "Enter".

    Ten wybór jest zastępczym elementem dla funkcji "Wyświetl wszystkie psy o określonej charakterystyce".

  6. Sprawdź, czy UNDER CONSTRUCTION komunikat jest wyświetlany dla Display all dogs with a specified characteristic wyboru.

    Powinny zostać wyświetlone następujące dane wyjściowe:

    UNDER CONSTRUCTION - please check back next month to see progress.
    Press the Enter key to continue.
    
  7. Wpisz exit, w menu aplikacji, aby zakończyć program, a następnie zamknąć panel terminalu.

    Program powinien zakończyć działanie.

Teraz możesz rozpocząć tworzenie nowych funkcji.