Øvelse – fuldfør en udfordringsaktivitet for at skelne mellem do og while iteration statements

Fuldført

Kodeudfordringer styrker det, du har lært, og hjælper dig med at få lidt tillid, før du fortsætter.

Undersøg forskellen mellem do og while statement gentagelser

Som du har set, understøtter C# fire typer gentagelsessætninger: for, foreach, do-whileog while. Microsofts dokumentation til sprogreference beskriver disse udsagn på følgende måde:

  • Sætningen for : udfører dens brødtekst, mens et angivet boolesk udtryk (betingelsen) evalueres til sand.
  • Sætningen foreach : Optæller elementerne i en samling og udfører dens brødtekst for hvert element i samlingen.
  • Sætningen do-while : Udfører betinget dens brødtekst en eller flere gange.
  • Sætningen while : udfører betinget nul eller flere gange.

De for og foreach gentagelser synes at være klart adskilt fra hinanden og fra do-while og while gentagelser. Definitionerne for og-sætningerne do-whilewhile ser dog ud til at være ret ens. At vide, hvornår man skal vælge mellem en do-while og en while synes mere vilkårlig, og kan endda være en smule forvirrende. Nogle udfordringsprojekter kan bidrage til at gøre forskellene tydelige.

I denne udfordring får du vist betingelser for tre separate kodningsprojekter. Hvert projekt kræver, at du implementerer en gentagelseskodeblok ved hjælp af enten en do-while eller en while sætning. Du skal evaluere de angivne betingelser for at kunne vælge mellem sætningerne do-while og while . Du kan skifte, når du starter, hvis dit første valg ikke fungerer så godt, som du havde håbet.

Seddel

Betingelserne for dit kodningsprojekt kan bruges til at hjælpe dig med at vælge mellem sætningerne do-while og while . Hvad du ved eller ikke ved om det booleske udtryk, der evalueres, kan nogle gange hjælpe dig med at vælge mellem sætningerne do-while og while . I denne udfordring omfatter projektbetingelserne oplysninger, der skal bruges til at konstruere det booleske udtryk.

Administrer brugerinput under denne udfordring

Når du bruger en Console.ReadLine() sætning til at hente brugerinput, er det almindelig praksis at bruge en typestreng, der kan være null (angivet string?) for inputvariablen, og derefter evaluere den værdi, der er angivet af brugeren. Følgende kodeeksempel bruger en typestreng, der kan være null, til at hente brugerinput. Gentagelsen fortsætter, mens den brugerindgivne værdi er null:

string? readResult;
Console.WriteLine("Enter a string:");
do
{
    readResult = Console.ReadLine();
} while (readResult == null);

Det booleske udtryk, der evalueres af sætningen while , kan bruges til at sikre, at brugerinput opfylder et angivet krav. Hvis en prompt f.eks. beder brugeren om at angive en streng, der indeholder mindst tre tegn, kan følgende kode bruges:

string? readResult;
bool validEntry = false;
Console.WriteLine("Enter a string containing at least three characters:");
do
{
    readResult = Console.ReadLine();
    if (readResult != null)
    {
        if (readResult.Length >= 3)
        {
            validEntry = true;
        }
        else
        {
            Console.WriteLine("Your input is invalid, please try again.");
        }
    }
} while (validEntry == false);

Hvis du vil bruge Console.ReadLine() input til numeriske værdier, skal du konvertere strengværdien til en numerisk type.

Metoden int.TryParse() kan bruges til at konvertere en strengværdi til et heltal. Metoden bruger to parametre, en streng, der evalueres, og navnet på en heltalsvariabel, der tildeles en værdi. Metoden returnerer en boolesk værdi. Følgende kodeeksempel viser, hvordan du int.TryParse() bruger metoden :

// capture user input in a string variable named readResult

int numericValue = 0;
bool validNumber = false;

validNumber = int.TryParse(readResult, out numericValue);

Hvis den strengværdi, der er tildelt til readResult , repræsenterer et gyldigt heltal, tildeles værdien til heltalsvariablen med navnet numericValueog true tildeles til den booleske variabel med navnet validNumber. Hvis den værdi, der er tildelt til readResult , ikke repræsenterer et gyldigt heltal, validNumber tildeles en værdi på false. Hvis readResult f.eks. er lig med "7", tildeles værdien 7 til numericValue.

Kodeprojekt 1 – skrivekode, der validerer heltalsinput

Her er de betingelser, som dit første kodningsprojekt skal implementere:

  • Din løsning skal indeholde enten en do-while eller while gentagelse.

  • Før gentagelsesblokken: Din løsning skal bruge en Console.WriteLine() sætning til at bede brugeren om en heltalsværdi mellem 5 og 10.

  • Inde i gentagelsesblokken:

    • Din løsning skal bruge en Console.ReadLine() sætning til at hente input fra brugeren.
    • Din løsning skal sikre, at inputtet er en gyldig repræsentation af et heltal.
    • Hvis heltalsværdien ikke er mellem 5 og 10, skal din kode bruge en Console.WriteLine() sætning til at bede brugeren om en heltalsværdi mellem 5 og 10.
    • Din løsning skal sikre, at heltalsværdien er mellem 5 og 10, før gentagelsen afsluttes.
  • Nedenfor (efter) iterationskodeblokken: Din løsning skal bruge en Console.WriteLine() sætning til at informere brugeren om, at deres inputværdi er blevet accepteret.

  1. Sørg for, at du har åbnet en tom Program.cs fil i Visual Studio Code.

    Hvis det er nødvendigt, skal du åbne Visual Studio Code og derefter udføre følgende trin for at forberede en Program.cs fil i Editor:

    1. Vælg Åbn mappe i menuen Filer.

    2. Brug dialogboksen Åbn mappe til at navigere til og derefter åbne mappen CsharpProjects .

    3. Vælg Program.cs i panelet Visual Studio Code EXPLORER.

    4. I menuen Visual Studio Code Selection skal du vælge Select All og derefter trykke på Delete.

  2. Skriv den kode, der implementerer hver betingelse for kodeprojekt 1.

  3. Kør programmet, og bekræft, at din kode validerer brugerinput baseret på de angivne krav.

    Når du f.eks. kører dit program, bør det afvise inputværdier som f.eks. "to" og "2", men det bør acceptere en inputværdi på "7".

    Det eksempel, der er beskrevet ovenfor, bør konsoloutputtet ligne følgende:

    Enter an integer value between 5 and 10
    two
    Sorry, you entered an invalid number, please try again
    2
    You entered 2. Please enter a number between 5 and 10.
    7
    Your input value (7) has been accepted.
    

Kodeprojekt 2 – skrivekode, der validerer strenginput

Her er de betingelser, som dit andet kodningsprojekt skal implementere:

  • Din løsning skal indeholde enten en do-while eller while gentagelse.

  • Før gentagelsesblokken: Din løsning skal bruge en Console.WriteLine() sætning til at bede brugeren om et af tre rollenavne: Administrator, Leder eller Bruger.

  • Inde i gentagelsesblokken:

    • Din løsning skal bruge en Console.ReadLine() sætning til at hente input fra brugeren.
    • Din løsning skal sikre, at den angivne værdi stemmer overens med en af de tre rolleindstillinger.
    • Din løsning skal bruge Trim() metoden på inputværdien til at ignorere foranstillede og efterstillede mellemrumstegn.
    • Din løsning skal bruge ToLower() metoden på inputværdien til at ignorere forskel på små og små bogstaver.
    • Hvis den angivne værdi ikke svarer til en af rolleindstillingerne, skal koden bruge en Console.WriteLine() sætning til at bede brugeren om en gyldig post.
  • Nedenfor (efter) iterationskodeblokken: Din løsning skal bruge en Console.WriteLine() sætning til at informere brugeren om, at deres inputværdi er blevet accepteret.

  1. Kommenter al koden i panelet Visual Studio Code Editor

    1. Vælg alle kodelinjerne i kodeeditoren
    2. Vælg Slå blokkommentar til/fra i menuen Rediger.
  2. Skriv den kode, der implementerer hver betingelse for kodeprojekt 2.

  3. Kør programmet, og bekræft, at din kode validerer brugerinput baseret på de angivne krav.

    Når du f.eks. kører dit program, bør det afvise en inputværdi, f.eks. "Administrator", men den bør acceptere inputværdien " administrator ".

    Konsoloutputtet til dette eksempel skal ligne følgende:

    Enter your role name (Administrator, Manager, or User)
    Admin
    The role name that you entered, "Admin" is not valid. Enter your role name (Administrator, Manager, or User)
       Administrator
    Your input value (Administrator) has been accepted.
    

Kodeprojekt 3 – Skriv kode, der behandler indholdet af en strengmatrix

Her er de betingelser, som dit tredje kodningsprojekt skal implementere:

  • din løsning skal bruge følgende strengmatrix til at repræsentere inputtet til din kodningslogik:

    string[] myStrings = new string[2] { "I like pizza. I like roast chicken. I like salad", "I like all three of the menu choices" };
    
  • Din løsning skal deklarere en heltalsvariabel med navnet periodLocation , der kan bruges til at holde placeringen af periodetegnet i en streng.

  • Din løsning skal indeholde en ydre foreach eller for løkke, der kan bruges til at behandle hvert strengelement i matrixen. Den strengvariabel, du vil behandle i løkkerne, skal navngives myString.

  • I den ydre løkke skal din løsning bruge IndexOf() metoden for String klassen til at hente placeringen af det første periodetegn i variablen myString . Metodekaldet skal ligne: myString.IndexOf("."). Hvis der ikke er et punktumtegn i strengen, returneres en værdi på -1.

  • Din løsning skal indeholde en indre do-while eller while løkke, der kan bruges til at behandle variablen myString .

  • I den indre løkke skal din løsning udtrække og vise (skrive til konsollen) hver sætning, der er indeholdt i hver af de strenge, der behandles.

  • I den indre løkke må din løsning ikke vise punktumtegnet.

  • I den indre løkke skal din løsning bruge metoderne Remove(), Substring()og TrimStart() til at behandle strengoplysningerne.

  1. Kommenter al koden i panelet Visual Studio Code Editor

    1. Vælg alle kodelinjerne i kodeeditoren
    2. Vælg Slå blokkommentar til/fra i menuen Rediger.
  2. Skriv den kode, der implementerer hver betingelse, der er angivet for kodeprojekt 3.

  3. Kør programmet, og kontrollér, at outputtet opfylder kravene.

    Hvis din kodelogik fungerer korrekt, bør outputtet se ud som følger:

    I like pizza
    I like roast chicken
    I like salad
    I like all three of the menu choices
    

Uanset om du sidder fast og har brug for at kigge på løsningen, eller du er færdig, skal du fortsætte med at se løsningsprojekterne for denne udfordring.