Harjoitus – Suorita haastetoiminto, jotta voit erottaa toisistaan do- ja while-iterointilausekkeet

Valmis

Koodin haasteet vahvistavat oppimiasi asioita ja auttavat sinua luottamaan siihen ennen jatkamista.

Tutki do- ja while-lausekkeen iteraatioiden eroa

Kuten olet nähnyt, C# tukee neljänlaisia iterointilausekkeita: for, , foreachdo-whileja while. Microsoftin kieliviitedokumentaatio kuvailee nämä lausekkeet seuraavasti:

  • Lauseke for : suorittaa sen leipätekstin, kun määritetty totuusarvolauseke (ehto) antaa tulokseksi true.
  • - foreach lauseke: luetteloi kokoelman elementit ja suorittaa sen leipätekstin kokoelman jokaiselle elementille.
  • Lauseke do-while : suorittaa leipätekstin ehdollisesti yhden tai useamman kerran.
  • Lauseke while : suorittaa leipätekstin ehdollisesti nolla kertaa tai useammin.

Iteraatiot for ja foreach iteraatiot näyttävät selvästi poikkeavan toisistaan ja ja do-while iteraatioistawhile. - ja do-while -whilelausekkeiden määritelmät vaikuttavat kuitenkin melko samankaltaisilta. Tieto siitä, milloin ja do-while milloin while valitaan, vaikuttaa mielivaltaisemmalta, ja se voi jopa olla hieman hämmentävää. Jotkin haasteprojektit saattavat auttaa selkeyttämään eroja.

Tässä haasteessa esität ehdot kolmelle erilliselle koodausprojektille. Jokainen projekti edellyttää iterointikoodilohkon käyttöönottoa joko -lausekkeen tai - do-while lausekkeen while avulla. Sinun on arvioitava määritetyt ehdot, jotta voit valita - ja do-while -whilelausekkeiden välillä. Voit vaihtaa aloittamisen jälkeen, jos ensimmäinen valintasi ei toimi niin hyvin kuin olit toivonut.

Huomautus

Koodausprojektin ehtojen avulla voit valita - ja do-while -whilelausekkeiden välillä. Se, mitä tiedät tai et tiedä arvioitavasta totuusarvolausekkeesta, voi joskus auttaa sinua valitsemaan - ja do-while -whilelausekkeiden välillä. Tässä haasteharjoituksessa projektin ehdot sisältävät tietoja, joita käytetään totuusarvolausekkeen muodostamiseen.

Hallitse käyttäjän syötettä tämän haasteen aikana

Kun lauseketta käytetään Console.ReadLine() käyttäjän syötteen hankkimiseen, on yleinen käytäntö käyttää syötemuuttujalle tyhjäarvoja sallivaa tyyppimerkkijonoa (nimetty string?) ja arvioida sitten käyttäjän antama arvo. Seuraava koodimalli käyttää tyhjäarvoja sallivaa tyyppimerkkijonoa käyttäjän syötteen sieppaamiseen. Iterointi jatkuu, kun taas käyttäjän antama arvo on tyhjäarvo:

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

Lausekkeen laskeman totuusarvolausekkeen while avulla voidaan varmistaa, että käyttäjän syöte täyttää määritetyn vaatimuksen. Jos esimerkiksi kehote pyytää käyttäjää antamaan merkkijonon, joka sisältää vähintään kolme merkkiä, voit käyttää seuraavaa koodia:

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);

Jos haluat käyttää Console.ReadLine() syötettä numeerisissa arvoissa, sinun on muunnettava merkkijonon arvo numeerinenksi tyypiksi.

- int.TryParse() menetelmän avulla merkkijonoarvo voidaan muuntaa kokonaisluvuksi. -menetelmä käyttää kahta parametria, laskettavaa merkkijonoa ja kokonaislukumuuttujan nimeä, jolle määritetään arvo. -menetelmä palauttaa totuusarvon. Seuraava koodiesimerkki esittelee -menetelmän int.TryParse() käyttöä:

// capture user input in a string variable named readResult

int numericValue = 0;
bool validNumber = false;

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

Jos -kohteelle readResult määritetty merkkijonoarvo edustaa kelvollista kokonaislukua, arvo määritetään kokonaislukumuuttujalle nimeltä numericValue, ja true se määritetään totuusarvomuuttujalle nimeltä validNumber. Jos arvo, jolle on määritetty readResult , ei ole kelvollinen kokonaisluku, validNumber saa arvon false. Jos esimerkiksi readResult on yhtä suuri kuin "7", arvo 7 määritetään kohteelle numericValue.

Koodiprojekti 1 – kirjoita koodi, joka vahvistaa kokonaislukusyötteen

Tässä ovat ehdot, jotka ensimmäisen koodausprojektin on täytettävä:

  • Ratkaisusi on sisällettävä joko - tai do-while -whileiterointi.

  • Ennen iterointilohkoa: ratkaisusi on käytettävä lauseketta, joka Console.WriteLine() kehottaa käyttäjää antamaan kokonaislukuarvon 5–10.

  • Iterointilohkon sisällä:

    • Ratkaisusi on käytettävä - Console.ReadLine() lauseketta syötteen saamiseksi käyttäjältä.
    • Ratkaisusi on varmistettava, että syöte on kelvollinen kokonaisluvun esitys.
    • Jos kokonaislukuarvo ei ole välillä 5–10, koodisi on käytettävä -lauseketta, joka Console.WriteLine() kehottaa käyttäjää antamaan kokonaislukuarvon 5–10.
    • Ratkaisun on varmistettava, että kokonaislukuarvo on 5–10 ennen iteraation poistumista.
  • Alla (jälkeen) iteroinnin koodilohko: ratkaisusi on käytettävä Console.WriteLine() -lauseketta ilmoittamaan käyttäjälle, että hänen syötearvonsa on hyväksytty.

  1. Varmista, että visual studio codessa on avattuna tyhjä Program.cs tiedosto.

    Avaa tarvittaessa Visual Studio Code ja valmistele Program.cs -tiedosto editorissa suorittamalla seuraavat vaiheet:

    1. Valitse Tiedosto-valikostaAvaa kansio.

    2. Avaa kansio -valintaikkunan avulla voit siirtyä CsharpProjects-kansioon ja avata sen sitten.

    3. Valitse Visual Studio Code EXPLORER -paneelissa Program.cs.

    4. Valitse Visual Studio Code Selection - valikosta Valitse kaikki ja paina sitten Poista-näppäintä.

  2. Kirjoita koodi, joka toteuttaa koodin projektin 1 kunkin ehdon.

  3. Suorita sovelluksesi ja varmista, että koodisi vahvistaa käyttäjän syötteen määritettyjen vaatimusten perusteella.

    Kun esimerkiksi suoritat sovelluksesi, sen tulisi hylätä syötearvot, kuten "kaksi" ja "2", mutta sen tulisi hyväksyä syötearvo "7".

    Yllä kuvatun esimerkin mukaan konsolin tulosteen pitäisi näyttää seuraavankaltaiselta:

    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.
    

Koodiprojekti 2 – kirjoita koodi, joka vahvistaa merkkijonosyötteen

Toisen koodausprojektin on täytettävä seuraavat ehdot:

  • Ratkaisusi on sisällettävä joko - tai do-while -whileiterointi.

  • Ennen iterointilohkoa: ratkaisusi on käytettävä lauseketta, joka Console.WriteLine() kehottaa käyttäjää antamaan jonkin kolmesta roolinimestä: järjestelmänvalvoja, esimies tai käyttäjä.

  • Iterointilohkon sisällä:

    • Ratkaisusi on käytettävä - Console.ReadLine() lauseketta syötteen saamiseksi käyttäjältä.
    • Ratkaisusi on varmistettava, että annettu arvo vastaa jotakin kolmesta roolivaihtoehdosta.
    • Ratkaisusi tulee käyttää Trim() syötearvon -menetelmää alussa ja lopussa olevien välilyöntimerkkien ohittamiseen.
    • Ratkaisusi tulee käyttää ToLower() syötearvon -menetelmää tapauksen ohittamiseen.
    • Jos annettu arvo ei vastaa jotakin rooliasetusta, koodisi on käytettävä -lauseketta, joka Console.WriteLine() kehottaa käyttäjää antamaan kelvollisen merkinnän.
  • Alla (jälkeen) iteroinnin koodilohko: Ratkaisusi on käytettävä Console.WriteLine() -lauseketta ilmoittamaan käyttäjälle, että hänen syötearvonsa on hyväksytty.

  1. Kommentoi kaikkea koodia Visual Studio Code Editor -paneelissa

    1. Valitse kaikki koodirivit koodieditorissa
    2. Valitse Muokkaa-valikostaLohkokommentti.
  2. Kirjoita koodi, joka toteuttaa koodin projektin 2 kunkin ehdon.

  3. Suorita sovelluksesi ja varmista, että koodisi vahvistaa käyttäjän syötteen määritettyjen vaatimusten perusteella.

    Kun esimerkiksi suoritat sovelluksesi, sen tulisi hylätä syötearvo, kuten "Järjestelmänvalvoja", mutta sen tulisi hyväksyä syötearvo "järjestelmänvalvoja".

    Tämän esimerkin konsolitulosteen pitäisi näyttää seuraavankaltaiselta:

    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.
    

Koodiprojekti 3 – Kirjoita koodi, joka käsittelee merkkijonomatriisin sisällön

Kolmannen koodausprojektin on täytettävä seuraavat ehdot:

  • Ratkaisusi on käytettävä seuraavaa merkkijonomatriisia edustamaan syötettä koodauslogiikkaasi:

    string[] myStrings = new string[2] { "I like pizza. I like roast chicken. I like salad", "I like all three of the menu choices" };
    
  • Ratkaisusi on määritettävä kokonaislukumuuttuja nimeltä periodLocation , jonka avulla kausimerkin sijainti voidaan säilyttää merkkijonossa.

  • Ratkaisusi on sisällettävä ulko foreach - tai for silmukka, jonka avulla voidaan käsitellä matriisin jokainen merkkijonoelementti. Silmukoiden sisällä käsiteltävän merkkijonomuuttujan nimeksi tulee tulla myString.

  • Ulomman silmukan ratkaisun on käytettävä IndexOf() luokan -menetelmää String , jotta saat muuttujan ensimmäisen kausimerkin myString sijainnin. -menetelmäkutsun tulee olla seuraavan kaltainen: myString.IndexOf("."). Jos merkkijonossa ei ole pistemerkkiä, palautetaan arvo -1.

  • Ratkaisun on sisällettävä sisempi do-while tai while silmukka, jota voidaan käyttää muuttujan myString käsittelyyn.

  • Sisemmän silmukan ratkaisu tulee poimia ja näyttää (kirjoittaa konsoliin) jokainen lause, joka sisältyy jokaiseen käsiteltävään merkkijonoon.

  • Sisemmssä silmukassa ratkaisusi ei saa näyttää pistemerkkiä.

  • Sisemmän silmukan ratkaisussa on käytettävä -, Remove()- Substring()ja TrimStart() -menetelmiä merkkijonotietojen käsittelyyn.

  1. Kommentoi kaikkea koodia Visual Studio Code Editor -paneelissa

    1. Valitse kaikki koodirivit koodieditorissa
    2. Valitse Muokkaa-valikostaLohkokommentti.
  2. Kirjoita koodi, joka toteuttaa koodin projektin 3 kunkin ehdon.

  3. Suorita sovelluksesi ja varmista, että tulosteesi täyttää vaatimukset.

    Jos koodilogiikkasi toimii oikein, tulosteesi pitäisi näyttää seuraavanlaiselta:

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

Olitpa jumissa ja sinun täytyy kurkistaa ratkaisuun tai suorittaa loppuun onnistuneesti, jatka tämän haasteen ratkaisuprojektien tarkastelemista.