Cvičení – kontrola počátečního kódu
V tomto prvním kroku procesu vývoje zkontrolujete kód uvedený ve složce počátečního projektu.
Kontrola obsahu souboru Program.cs
Soubor Program.cs obsahuje předběžnou verzi aplikace, na které pracujete. Kód obsahuje funkce pro vygenerování a zobrazení ukázkových dat pro aplikaci a zobrazí seznam možností nabídky, které definují hlavní funkce aplikace.
Ujistěte se, že máte v editoru Visual Studio Code otevřenou složku "GuidedProject" (Guided-project-Work-with-variable-data-CSharp-main).
Jednotka "Prepare" (předchozí lekce v tomto modulu) obsahuje část Nastavení, která popisuje proces stažení počátečního bodu pro řízený projekt a otevření složky Visual Studio Code. V případě potřeby se vraťte a postupujte podle pokynů k nastavení.
V zobrazení Průzkumník rozbalte složku Starter a pak vyberte Program.cs.
Když vyberete soubor Program.cs, obsah souboru se otevře v hlavní oblasti Editoru napravo od PRŮZKUMNÍKa.
Pokud zobrazení PRŮZKUMNÍKa není otevřené, můžete vybrat nebo otevřít zobrazení PRŮZKUMNÍKa z panelu aktivit na úplně levé straně editoru Visual Studio Code. Explorer je ikona úplně nahoře na panelu aktivit.
Projděte si počáteční deklarace proměnných v horní části souboru 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];Nejprve uvidíte komentář (komentář č. 1) následovaný seznamem proměnných. Tyto proměnné,
animalSpeciesaž doanimalNickname, použité k uložení hodnot charakteristik domácího mazlíčka uvnitř multidimenzionálního řetězcového pole s názvemourAnimals, a které bylo inicializováno tak, aby obsahovalo řetězec""nulové délky. Deklarace poleourAnimalsje v kódu o něco dál.Další skupina proměnných (v komentáři č. 2) je kombinace
stringproměnnýchint, které pomáhají generovat ukázková data, číst uživatelský vstup a stanovit kritéria ukončení hlavní smyčky programu. Všimněte si řádkustring? readResult;kódu. Pomocí znaku?můžete transformovat normálně nenulový typ proměnné (int, string, bool,...) s podporou typu s možnou hodnotou null.Poznámka:
Při čtení hodnot zadaných uživatelem pomocí
Console.ReadLine()metody je nejlepší povolit řetězec typu null, který používástring?, aby kompilátor kódu při sestavování projektu nevygeneroval upozornění.Konečná proměnná (v komentáři č. 3) je dvojrozměrná řetězcová matice s názvem
ourAnimals. Inicializovali jste počet řádků definovaných maxPets na 8. Počet charakteristik, které ukládáte původně, je šest. Šest charakteristik odpovídá počtu řetězcových proměnných, které jste prozkoumali v vzorovém kódu, ale počet charakteristik je potřeba rozšířit a přidat pole prosuggestedDonation.Posuňte se dolů v souboru Program.cs a prozkoumejte smyčku
for, která obsahuje výběrovou konstrukci v rámci bloku kódu.Ukázka kódu je zkrácená verze pro úsporu místa.
// #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; }Všimněte si, že smyčka
forpoužívá proměnnoumaxPetsk určení horní hranice počtu iterací uvedené v komentáři č. 4.Všimněte si také, že
switchkonstrukce selektivně rozdělí kód, aby bylo možné definovat různé charakteristiky zvířat pro vzorová data.Pomocí
switchpříkazu definujete různé hodnoty pro první čtyři iterace smyčkyfor. Po zpracování ukázkových dat jsou všechny vlastnosti prázdné nebo řetězec nulové délky.Hodnoty proměnných charakteristik zvířat jsou přiřazeny k poli ourAnimals na konci smyčky
for.Posuňte se do dolní části souboru kódu v editoru Visual Studio Code. Prozkoumejte kód použitý k zobrazení možností nabídky a zaznamenejte vstup výběru uživatele.
Měli byste sledovat následující kód:
// #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");Věnujte chvilku prohlédnutí těchto dvou
casepříkazů.Existují pouze dvě možnosti nabídky, které fungují s omezenou verzí aplikace. Úvodní aplikace poskytuje pouze kapacity potřebné k provozování a testování prototypu funkcí.
Všimněte si, že za řádkem kódu
readResult = Console.ReadLine();následuje kontrola hodnoty null.Kód, který používá metodu
Console.ReadLine(), má hodnotu nastavenu na nullable řetězecreadResult, aby se zabránilo tomu, že kompilátor kódu vygeneruje upozornění při sestavování projektu.
Zkontroluj svou práci
Otestujte startovací konzolovou aplikaci. Na příkazovém řádku v terminálu sestavte a spusťte kód projektu jedním příkazem tak, že zadáte:
dotnet run.Poznámka:
V úvodní složce musí být otevřen příkaz TERMINAL a terminál by měl vypadat nějak takto:
..\ArrayGuidedProject\starter>Po spuštění kódu se zobrazí dvě položky nabídky.
- Enter: ,
1pro otestování výstupu "Výpis všech aktuálních informací o domácích zvířatech" - Zadejte:
2, pro otestování zprávy zástupce "pod konstrukcí".
- Enter: ,
Enter:
1a potom stisknutím klávesy Enter zobrazte všechny domácí zvířata.Zkontrolujte, že se zobrazí všechny informace o zvířatech.
Při sledování dat všech domácích zvířat by poslední zobrazený domácí mazlíček měl odpovídat následujícímu výstupu:
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 continuePokračujte stisknutím klávesy Enter a vraťte se do nabídky.
V nabídce zadejte
2a poté stiskněte klávesu Enter.Tato volba je zástupný znak pro funkci "Zobrazit všechny psy se zadanou charakteristikou".
Zkontrolujte, že se
UNDER CONSTRUCTIONzobrazí zpráva proDisplay all dogs with a specified characteristicvýběr.Měli byste sledovat následující výstup:
UNDER CONSTRUCTION - please check back next month to see progress. Press the Enter key to continue.Napište
exit, v nabídce aplikace ukončete program a pak zavřete panel terminálu.Program by měl ukončit.
Teď jste připraveni začít vyvíjet nové funkce.