Harjoitus – Tee-toiminto ja iterointisilmukoiden luominen
- 10 minuuttia
Pinnan ja - do-whilewhile lausekkeet ovat jälleen yksi iterointilauseke, jonka avulla voit iteroida koodilohkon läpi ja siten muuttaa koodin suorittamisen työnkulkua. Kuitenkin, kun tutkimme, miten kukin toimii, voimme paremmin tunnistaa kunkin iterointilausekkeen vivahteet ja milloin niitä kannattaa käyttää.
Mikä on "tee aikaa" -lausunto?
- do-while lauseke suorittaa lausekkeen tai lauselohkon, kun taas määritetty totuusarvolauseke antaa tulokseksi tosi. Koska tämä lauseke arvioidaan silmukan jokaisen suorittamisen jälkeen, do-while-silmukka suorittaa yhden tai useamman kerran.
do
{
// This code executes at least one time
} while (true);
Suorituksen työnkulku alkaa aaltosulkeen sisällä. Koodi suoritetaan vähintään kerran, sitten avainsanan vieressä oleva while totuusarvolauseke arvioidaan. Jos ehtolauseke palauttaa truearvon , koodilohko suoritetaan uudelleen.
Koodaamalla totuusarvolausekkeen arvoksi true, olemme luoneet päättymättömän silmukan, joka ei lopu koskaan, ei ainakaan tällä hetkellä kirjoitettuun muotoon. Tarvitsemme tavan irtautua koodilohkon silmukasta. Keskustellaan hieman poistumiskriteereistä do-while .
Valmistelemme nyt koodausympäristömme ja aloitamme koodinäytteiden tutkimisen do-while .
Koodausympäristön valmisteleminen
Tämä moduuli sisältää käytännönläheisiä toimintoja, jotka opastavat esittelykoodin luonti- ja suorittamisprosessissa. Suosittelemme, että suoritat nämä toimet käyttämällä Visual Studio Codea kehitysympäristönäsi. Visual Studio Coden käyttäminen näitä toimintoja varten auttaa sinua tulemaan mukavammaksi kirjoittaa ja suorittaa koodia kehittäjäympäristössä, jota ammattilaiset ympäri maailmaa käyttävät.
Avaa Visual Studio Code.
Voit avata Visual Studio Coden Windowsin Käynnistä-valikon (tai toisen käyttöjärjestelmän vastaavan resurssin) avulla.
Valitse Visual Studio Code Tiedoston -valikosta Avaa kansio -.
Siirry Avaa kansio -valintaikkunassa Windows Desktop -kansioon.
Jos sinulla on eri kansiosijainti, jossa koodiprojekteja pidetään, voit käyttää sen sijaan kyseisen kansion sijaintia. Tätä koulutusta varten on tärkeää saada sijainti, joka on helppo paikantaa ja muistaa.
Valitse Avaa kansio -valintaikkunassa Valitse kansio.
Jos näyttöön tulee suojausvalintaikkuna, jossa kysytään, luotatko tekijöihin, valitse Kyllä.
Valitse Visual Studio Code Terminal -valikosta Uusi pääte -.
Huomaa, että päätepaneelin komentokehote näyttää nykyisen kansion kansiopolun. Esimerkiksi:
C:\Users\someuser\Desktop>Huomautus
Jos työskentelet omalla tietokoneellasi eristyksen tai isännöityjen ympäristöjen sijaan ja olet suorittanut muita Microsoft Learn -moduuleja tässä C#-sarjassa, olet ehkä jo luonut projektikansion koodinäytteitä varten. Tässä tapauksessa voit ohittaa seuraavan vaiheen, jota käytetään konsolisovelluksen luomiseen TestProject-kansioon.
Jos haluat luoda uuden konsolisovelluksen määritettyyn kansioon Terminal-komentokehotteen kautta, anna seuraava kehote:
dotnet new console -o ./CsharpProjects/TestProjectTämä .NET CLI -komento luo .NET-ohjelmamallin avulla uuden C#-konsolisovellusprojektin määritettyyn kansiosijaintiin. Komento luo puolestasi CsharpProjects- ja TestProject-kansiot ja käyttää tiedoston nimenä TestProject-projektia
.csproj.Jos näyttöön tulee viesti, jossa kerrotaan, että tiedostot ovat jo olemassa, jatka seuraavasti. Käytät uudelleen olemassa olevia projektitiedostoja.
Laajenna CSharpProjects-kansio EXPLORER-näkymässä .
Sinun pitäisi nähdä TestProject-kansio ja kaksi tiedostoa, C#-ohjelmatiedosto Program.cs ja C#-projektitiedosto nimeltä TestProject.csproj.
Valitse Visual Studio Code Tiedoston -valikosta Avaa kansio -.
Valitse Avaa kansio -valintaikkunassa CsharpProjects-kansio ja valitse sitten Valitse kansio.
Laajenna RESURSSIENHALLINTA-näkymän TestProject-kansio ja valitse sitten Program.cs.
Poista olemassa olevat koodirivit.
Käytät tätä C#-konsoliprojektia koodinäytteiden luomiseen, luomiseen ja suorittamiseen tämän moduulin aikana.
Sulje Päätepaneeli.
Kirjoita do-while-lauseke keskeytymään, kun tietty satunnaisluku luodaan.
Kirjoitetaan koodi, joka luo satunnaislukuja välillä 1–10, kunnes luku 7 luodaan. Seitsemän saaminen voi kestää vain yhden iteroinnin, tai se voi kestää kymmeniä iteraatioita.
Varmista, että Visual Studio Code on avoinna ja Program.cs näkyvissä editorin paneelissa.
Huomautus
Program.cs pitäisi olla tyhjä. Jos ei ole, valitse ja poista kaikki koodirivit.
Kirjoita seuraava koodi Visual Studio Code Editoriin.
Random random = new Random(); int current = 0; do { current = random.Next(1, 11); Console.WriteLine(current); } while (current != 7);Valitse Visual Studio Code Tiedoston -valikosta Tallenna.
Program.cs tiedosto on tallennettava ennen koodin rakentamista tai suorittamista.
Avaa EXPLORER-paneelin TestProject-kansion sijainnissa Terminal napsauttamalla hiiren kakkospainikkeella TestProjectja valitsemalla sitten Avaa Integroidussa päätteessä -.
Päätepaneeli avautuu. Päätteen tulee sisältää komentokehote, joka näyttää, että Terminal on avoinna TestProject-kansiosi sijaintiin.
Suorita koodi Terminal-komentorivillä kirjoittamalla dotnet run ja painamalla enter.
Huomautus
Jos näyttöön tulee sanoma "Suoritettavaa projektia ei löytynyt", varmista, että Terminal-komentokehote näyttää odotetun TestProject-kansion sijainnin. Esimerkiksi:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Tarkista tuloste.
Koska luodut luvut ovat satunnaisia, tuloksesi ovat erilaiset. Arvo
7on kuitenkin viimeinen luku, joka tulostetaan, kun totuusarvolauseke laskeefalse, kun 7 on muodostettu, ja suorituksen työnkulku sulkee koodilohkon.2 5 8 2 7Tarkastele koodiasi minuutin ajan.
Tämän ensimmäisen tehtävän keskeisenä oppimisena on, että silmukan
do-whilekoodilohko suoritetaan vähintään kerran. Se voi iteroida useita kertoja, ja on epätodennäköistä, että tiedämme etukäteen, kuinka monta iteraatiota tulee olemaan.On myös tärkeää huomata, että koodilohkon sisäinen koodi vaikuttaa siihen, pitääkö iterointiä jatkaa koodilohkon läpi vai ei. Koodilohko, joka vaikuttaa poistumiskriteereihin, on ensisijainen syy valita
do-whiletaiwhile-lausekkeet muiden iterointilausekkeiden sijaan. Sekä -foreachforettä -luottaminen koodilohkon ulkopuolisiin tekijöihin koodilohkon iteraatioiden määrän määrittämiseksi.
Kirjoita lauseke, joka iteroi vain, kun satunnaisluku on suurempi kuin jokin arvo
Katsotaanpa nyt lausuntoa while .
Päivitä koodisi Visual Studio Code -editorin avulla seuraavasti:
Random random = new Random(); int current = random.Next(1, 11); /* do { current = random.Next(1, 11); Console.WriteLine(current); } while (current != 7); */ while (current >= 3) { Console.WriteLine(current); current = random.Next(1, 11); } Console.WriteLine($"Last number: {current}");Huomautus
Tässä tapauksessa sijoitamme
whileavainsanan ja totuusarvolausekkeen koodilohkon eteen. Tämä muuttaa koodin merkitystä ja toimii porttina niin, että suorituksen työnkulku sallitaan vain, jos totuusarvolausekkeen arvoksi tulee tosi.Tallenna kooditiedosto ja suorita sitten koodisi Visual Studio Coden avulla.
Suorita koodi kirjoittamalla
dotnet runTerminal-komentokehotteesta.Tarkista luetteloidut tulostearvot.
Koska luvut ovat satunnaisia, koodi tuottaa eri jakson.
9 7 5 Last number: 1Tarkastele koodiasi minuutin ajan.
Yläkoodissa alustamme
randommuuttujammeintnimeltäcurrent. Seuraava aktiivinen koodirivimmewhileon lauseke.Lauseke
whileiteroidaan totuusarvolausekkeen(current >= 3)perusteella. Emme tiedä, mikä arvo määritetään kohteellecurrent, mutta on olemassa mahdollisuuksia, jotka vaikuttavatwhilesilmukkaan:- Jos
currenton alustettu arvoon, joka on suurempi tai yhtä suuri3kuin , totuusarvolauseke palauttaatruearvon , ja suorituksen työnkulku antaa koodilohkon. Ensimmäinen tehtävämme on kirjoittaa -arvo konsoliin koodilohkoncurrentsisällä. Seuraavaksi päivitämme -arvoncurrentuudella satunnaisarvolla koodilohkon sisällä. Tässä vaiheessa ohjausobjekti siirtyy takaisin sen lausekkeenwhileyläosaan, jossa ehtolauseke arvioidaan. Tätä prosessia jatketaan, kunnes totuusarvolauseke palautuufalseja suorituskatkot ovat peräisin koodilohkosta. - Jos
currentvalmistellaan (koodin yläosassa) arvoon, joka on pienempi kuin3, totuusarvolauseke palauttaafalsearvon , ja koodilohkoa ei suorita koskaan.
Lopullinen koodirivi kirjoittaa -konsolin
currentarvon. Tämä koodi suorittaa sen, suoritettiinko iteroinnin koodilohko vai ei, ja on mahdollisuus kirjoittaa konsolincurrentlopullinen arvo.- Jos
Jatka-lausekkeen käyttö suoraan totuusarvolausekkeeseen
Joissakin tapauksissa haluamme oikosuljea koodilohkossa olevan koodin loppuosan ja jatkaa seuraavaan iterointiin. Voimme tehdä sen käyttämällä -lauseketta continue .
Päivitä koodisi Visual Studio Code -editorin avulla seuraavasti:
Random random = new Random(); int current = random.Next(1, 11); do { current = random.Next(1, 11); if (current >= 8) continue; Console.WriteLine(current); } while (current != 7); /* while (current >= 3) { Console.WriteLine(current); current = random.Next(1, 11); } Console.WriteLine($"Last number: {current}"); */Tarkastele koodiasi minuutin ajan.
Huomaa, että olemme vaihtaneet takaisin kohteeseen
do-while.do-whileVarmistaa, että -silmukka iteroi vähintään kerran.Ensimmäiseksi koodilohkossa määritetään uusi satunnaisarvo kohteelle
current. Seuraavaksi tarkistamme, onkocurrentsuurempi vai yhtä suuri8kuin . Jos tämä lauseke palauttaatruearvon , avainsanacontinuesiirtää ohjausobjektin koodilohkon loppuun jawhilelaskee tuloksen(current != 7). Silmukka jatkaa siis iteroimista, kunhan -arvocurrentei ole yhtä suuri kuin7.Tämän harjoituksen vaiheen avain on koodirivi, joka sisältää
continueavainsanan:if (current >= 8) continue;Koska koodimme, joka kirjoittaa -arvon
currentkonsolille, sijaitsee -if (current >= 8) continue;arvon jälkeen, koodimme varmistaa, että -arvoacurrent, joka on suurempi tai yhtä suuri kuin8, ei koskaan kirjoiteta tulosikkunaan.Kokeillaanpa sitä.
Tallenna kooditiedosto ja suorita sitten koodisi Visual Studio Coden avulla.
Suorita koodi kirjoittamalla
dotnet runTerminal-komentokehotteesta.Tarkista luetteloidut tulostearvot.
5 1 6 7Näet todennäköisesti eri tuloksia kuin mitä alla näytetään. Tulosikkunassa ei kuitenkaan näy arvoja tai suurempia arvoja
8, ennen kuin koodin suorittaminen päättyy arvoon7.Ota huomioon - ja
continue-breaklausekkeiden välinen ero.Kuten näit tässä viimeisessä vaiheessa,
continuelauseke siirtää suorituksen nykyisen iteraation loppuun. Tämä toiminta poikkeaa lausekkeessa näkemästämmebreaktoiminnasta. Lausekebreaklopettaa iteraation (taiswitch) ja siirtää hallinnan lausekkeeseen, joka seuraa lopetettua lauseketta. Jos lausekkeen loppulausekkeen jälkeen ei ole lauseketta, ohjausobjekti siirretään tiedoston tai menetelmän loppuun.
Yhteenveto
Tässä osiossa tulee ottaa pois pari tärkeää ideaa:
- -
do-whilelauseke iteroi koodilohkon läpi vähintään kerran, ja se voi jatkua totuusarvolausekkeen perusteella. Totuusarvolausekkeen arviointi riippuu yleensä arvosta, joka luodaan tai noudetaan koodilohkosta. -
whileLauseke arvioi ensin ehtolausekkeen ja jatkaa koodilohkon läpi iteroimista, kunhan ehtolausekkeen arvoksi tuleetrue. - Avainsana
continue, joka lisätään heti totuusarvolausekkeeseen.