Harjoitus – Suorita haastetoiminto, jotta voit erottaa toisistaan do- ja while-iterointilausekkeet
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. - -
foreachlauseke: 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.
- Ratkaisusi on käytettävä -
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.
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:
Valitse Tiedosto-valikostaAvaa kansio.
Avaa kansio -valintaikkunan avulla voit siirtyä CsharpProjects-kansioon ja avata sen sitten.
Valitse Visual Studio Code EXPLORER -paneelissa Program.cs.
Valitse Visual Studio Code Selection - valikosta Valitse kaikki ja paina sitten Poista-näppäintä.
Kirjoita koodi, joka toteuttaa koodin projektin 1 kunkin ehdon.
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.
- Ratkaisusi on käytettävä -
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.
Kommentoi kaikkea koodia Visual Studio Code Editor -paneelissa
- Valitse kaikki koodirivit koodieditorissa
- Valitse Muokkaa-valikostaLohkokommentti.
Kirjoita koodi, joka toteuttaa koodin projektin 2 kunkin ehdon.
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- taiforsilmukka, jonka avulla voidaan käsitellä matriisin jokainen merkkijonoelementti. Silmukoiden sisällä käsiteltävän merkkijonomuuttujan nimeksi tulee tullamyString.Ulomman silmukan ratkaisun on käytettävä
IndexOf()luokan -menetelmääString, jotta saat muuttujan ensimmäisen kausimerkinmyStringsijainnin. -menetelmäkutsun tulee olla seuraavan kaltainen:myString.IndexOf("."). Jos merkkijonossa ei ole pistemerkkiä, palautetaan arvo -1.Ratkaisun on sisällettävä sisempi
do-whiletaiwhilesilmukka, jota voidaan käyttää muuttujanmyStringkä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()jaTrimStart()-menetelmiä merkkijonotietojen käsittelyyn.
Kommentoi kaikkea koodia Visual Studio Code Editor -paneelissa
- Valitse kaikki koodirivit koodieditorissa
- Valitse Muokkaa-valikostaLohkokommentti.
Kirjoita koodi, joka toteuttaa koodin projektin 3 kunkin ehdon.
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.