Gyakorlat – Do és while iterációs ciklusok létrehozása
- 10 perc
Látszólag a do-while és while utasítások egy további iterációs utasítást képviselnek, amely lehetővé teszi, hogy végigiteráljon egy kódblokkon, és ezáltal módosítsa a kód végrehajtásának menetét. Ha azonban megvizsgáljuk az egyes állítások működését, jobban azonosíthatjuk az egyes iterációs utasítások árnyalatait, és hogy mikor érdemes használni őket.
Mi az a "do-while" utasítás?
Az do-while utasítás utasítást vagy utasításblokkot hajt végre, míg egy megadott logikai kifejezés értéke igaz. Mivel ezt a kifejezést a rendszer a ciklus minden végrehajtása után kiértékeli, egy do-while ciklus egy vagy több alkalommal hajt végre.
do
{
// This code executes at least one time
} while (true);
A végrehajtás folyamata a kapcsos zárójelen belül kezdődik. A kód legalább egyszer végrehajtja, majd kiértékeli a while kulcsszó melletti logikai kifejezést. Ha a logikai kifejezés ad vissza true, a kódblokk ismét végrehajtásra kerül.
A logikai kifejezés truekemény kódolásával egy végtelen hurkot hoztunk létre– egy hurkot, amely soha nem ér véget, legalábbis nem úgy, ahogy éppen meg van írva. Szükségünk lenne egy módszerre, hogy kilépjünk a kódblokkon belüli hurokból. Egy kicsit tárgyaljuk a kilépési do-while feltételeket.
Oké, most készítsük elő a kódolási környezetet, és kezdjük el az utasítást do-while megvalósító kódminták vizsgálatát.
A kódolási környezet előkészítése
Ez a modul gyakorlati tevékenységeket tartalmaz, amelyek végigvezetik a bemutatókód létrehozásának és futtatásának folyamatán. Javasoljuk, hogy fejlesztési környezetként végezze el ezeket a tevékenységeket a Visual Studio Code használatával. Ha a Visual Studio Code-ot használja ezekhez a tevékenységekhez, azzal kényelmesebbé válik a kódírás és -futtatás egy olyan fejlesztői környezetben, amelyet világszerte használnak a szakemberek.
Nyissa meg a Visual Studio Code-ot.
A Visual Studio Code megnyitásához használhatja a Windows Start menüjét (vagy egy másik operációs rendszer egyenértékű erőforrását).
A Visual Studio Code File menüben válassza a Mappa megnyitása lehetőséget.
Mappa megnyitása párbeszédpanelen lépjen a Windows Asztal mappába.
Ha más mappahelyen tartja a kódprojekteket, használhatja inkább ezt a mappahelyet. Ebben a képzésben az a fontos, hogy legyen egy könnyen megtalálható és megjegyezhető hely.
A Mappa megnyitása párbeszédpanelen válassza a Mappa kiválasztása lehetőséget.
Ha megjelenik egy biztonsági párbeszédpanel, amely megkérdezi, hogy megbízik-e a szerzőkben, válassza az Igen lehetőséget.
A Visual Studio Code Terminál menüjében válassza az Új terminál lehetőséget.
Figyelje meg, hogy a Terminál panelen egy parancssor megjeleníti az aktuális mappa elérési útját. Például:
C:\Users\someuser\Desktop>Megjegyzés:
Ha nem tesztkörnyezetben vagy üzemeltetett környezetben, hanem saját PC-n dolgozik, és ebben a C#-sorozatban más Microsoft Learn-modulokat is elvégzett, előfordulhat, hogy már létrehozott egy projektmappát a kódmintákhoz. Ha ez a helyzet, átugorhatja a következő lépést, amellyel konzolalkalmazást hozhat létre a TestProject mappában.
Ha új konzolalkalmazást szeretne létrehozni egy adott mappában a Terminál parancssorában, írja be a következő parancssort:
dotnet new console -o ./CsharpProjects/TestProjectEz a .NET CLI-parancs .NET-programsablon használatával hoz létre egy új C#-konzolalkalmazás-projektet a megadott mappahelyen. A parancs létrehozza Önnek a CsharpProjects és a TestProject mappákat, és a Fájl neveként
.csproja TestProjectet használja.Ha megjelenik egy üzenet, amely közli, hogy a fájlok már léteznek, folytassa a következő lépésekkel. A meglévő projektfájlokat újra felhasználja.
Az EXPLORER nézetben bontsa ki a CsharpProjects mappát.
Ekkor megjelenik a TestProject mappa és két fájl, egy Program.cs nevű C# programfájl és egy TestProject.csproj nevű C# projektfájl.
A Visual Studio Code File menüben válassza a Mappa megnyitása lehetőséget.
A Mappa megnyitása párbeszédpanelen válassza a CsharpProjects mappát, majd válassza a Mappa kijelölése lehetőséget.
Az EXPLORER nézetben bontsa ki a TestProject mappát, majd válassza Program.cs.
Törölje a meglévő kódsorokat.
Ehhez a C# konzol projekthez fogja használni a modul során, hogy kódmintákat hozzon létre, építsen és futtasson.
Zárja be a Terminál panelt.
Írjon egy do-while utasítást a megszakításhoz egy bizonyos véletlenszerű szám létrehozásakor
Írjunk olyan kódot, amely folyamatosan generál véletlenszerű számokat 1 és 10 között, amíg meg nem generáljuk a 7-es számot. A 7-hez csak egy iterációra van szükség, vagy több tucat iterációt is igénybe vehet.
Győződjön meg arról, hogy nyitva van a Visual Studio Code, és a Program.cs jelenik meg a Szerkesztő panelen.
Megjegyzés:
Program.cs üresnek kell lennie. Ha nincs így, jelölje ki és törölje az összes kódsort.
Írja be a következő kódot a Visual Studio Code Editorba.
Random random = new Random(); int current = 0; do { current = random.Next(1, 11); Console.WriteLine(current); } while (current != 7);A Visual Studio Code File menüben válassza a Mentés lehetőséget.
A Program.cs fájlt a kód létrehozása vagy futtatása előtt menteni kell.
Az EXPLORER panelen nyissa meg a Terminált a TestProject mappa helyén, kattintson a jobb gombbal a TestProject elemre, majd válassza a Megnyitás az integrált terminálban lehetőséget.
Ekkor megnyílik egy terminálpanel. A terminálnak tartalmaznia kell egy parancssort, amely azt mutatja, hogy a terminál nyitva van a TestProject mappa helye előtt.
A terminál parancssorában a kód futtatásához írja be a dotnet run parancsot, majd nyomja le az Enter billentyűt.
Megjegyzés:
Ha "Nem található futtatandó projekt" üzenet jelenik meg, győződjön meg arról, hogy a Terminál parancssora megjeleníti a TestProject mappa várt helyét. Például:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Tekintse át a kimenetet.
Mivel a létrehozott számok véletlenszerűek, az eredmények eltérőek lesznek. Az érték
7lesz az utolsó, amelyet kinyomtatnak, mivel a logikai kifejezésfalse-re értékelődik, amikor a 7-es szám létrejön, és a végrehajtási folyamat kilép a kódblokkból.2 5 8 2 7Szánjon egy percet a kód áttekintésére.
Az első feladat egyik legfontosabb tanulsága, hogy a ciklus kódblokkja
do-whilelegalább egyszer végre lesz hajtva. Számos alkalommal iterálhat, és nem valószínű, hogy előre tudjuk, hogy hány iteráció lesz.Azt is fontos megfigyelni, hogy a kódblokkon belüli kód befolyásolja, hogy a kódblokkon keresztül folytatják-e az iterálást. A kilépési feltételeket befolyásoló kódblokk az egyik oka annak, hogy a többi iterációs utasítás helyett a
do-whilevagywhileutasításokat válassza.foreachforA kódblokkon kívül álló tényezőkre is támaszkodhat a kódblokkok iterációinak számának meghatározásához.
Írjon egy while ciklust, amely csak akkor iterál, ha egy véletlenszerű szám nagyobb egy megadott értéknél.
Most vessünk egy pillantást az állításra while .
A Visual Studio Code Editor használatával frissítse a kódot az alábbiak szerint:
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}");Megjegyzés:
Ebben az esetben a kulcsszót és a
whilelogikai kifejezést a kódblokk elé helyezzük. Ez megváltoztatja a kód jelentését, és "kapuként" működik, hogy csak akkor engedélyezze a végrehajtás folyamatát, ha a logikai kifejezés igaz értéket ad vissza.Mentse a kódfájlt, majd a Visual Studio Code használatával futtassa a kódot.
Írja be
dotnet runa terminál parancssorából a kód futtatásához.Tekintse át a felsorolt kimeneti értékeket.
Mivel a számok véletlenszerűek, ezért a kód egy másik sorozatot hoz létre.
9 7 5 Last number: 1Szánjon egy percet a kód áttekintésére.
A felső kódban a
randomhasználjuk, hogy inicializáljuk aintnevűcurrentváltozót. A következő aktív kódsor awhileutasításunk.Az utasítás a
whilelogikai kifejezés(current >= 3)alapján iterál. Nem tudjuk, hogy milyen értéket rendelnek majd hozzácurrent-hez, de vannak lehetőségek, amelyek hatással vannak awhilehurkunkra.- Ha a
currentértéke nagyobb vagy egyenlő3-nél, akkor a logikai kifejezéstrueértéket ad vissza, és a vezérlés belép a kódblokkba. A kódblokkon belül az első dolog, amit teszünk, hogy acurrentértékét kiírjuk a konzolra. Ezután a kódblokkban egy új véletlenszerű értékkel frissítjük az értéketcurrent. Ezen a ponton a vezérlőelem visszamegy annak az utasításnakwhilea elejére, ahol a logikai kifejezés kiértékelése történik. Ez a folyamat addig folytatódik, amíg a logikai kifejezés vissza nem adfalse, és megszakad a kódblokk végrehajtása. - Ha
currentinicializálva van (a kód tetején) egy kisebb3értékre, akkor a logikai kifejezés vissza fog térnifalse, és a kódblokk soha nem lesz végrehajtva.
Az utolsó kódsor a konzolra írja az értéket
current. Ez a kód azt futtatja, hogy az iterációs kódblokk végrehajtása megtörtént-e, és lehetőségünk van a végső érték megírásáracurrenta konzolon.- Ha a
A folytatási utasítás használatával közvetlenül a logikai kifejezésre léphet
Bizonyos esetekben ki szeretnénk hagyni a kódblokk többi részét, és folytatnánk a következő iterációval. Ezt az continue utasítással is megtehetjük.
A Visual Studio Code Editor használatával frissítse a kódot az alábbiak szerint:
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}"); */Szánjon egy percet a kód áttekintésére.
Vegye észre, hogy ismét átváltottunk egy
do-while-re. Az Ado-whilebiztosítja, hogy a hurok legalább egyszer iteráljon.A kódblokkban elsőként egy új véletlenszerű értéket
currentrendelünk hozzá. Ezután ellenőrizzük, hogycurrentnagyobb vagy egyenlő-e8. Ha ez a kifejezés visszaadjatrue, acontinuekulcsszó átviszi a vezérlőt a kódblokk végére, és awhilekiértékeli(current != 7). Tehát a hurok továbbra is iterál, amíg acurrentértéke nem egyenlő7-vel.A gyakorlat e lépésének kulcsa a kulcsszavat
continuetartalmazó kódsor:if (current >= 8) continue;Mivel a konzolra értéket író kódunk a
currentután helyezkedik elif (current >= 8) continue;, a kód biztosítja, hogy egycurrentértéket, amely nagyobb vagy egyenlő8-nál, soha ne írjuk ki a kimeneti ablakba.Próbáljuk ki.
Mentse a kódfájlt, majd a Visual Studio Code használatával futtassa a kódot.
Írja be
dotnet runa terminál parancssorából a kód futtatásához.Tekintse át a felsorolt kimeneti értékeket.
5 1 6 7Valószínűleg más eredményeket fog látni, mint az alább látható eredmények. A kimeneti ablakban azonban nem fog látni
8értéket vagy annál nagyobbat, mielőtt a kód végrehajtása a7értékkel befejeződne.Vegye figyelembe a különbséget a
continueés abreakutasítások között.Ahogy az előző lépésben is láthatta, az utasítás a
continuevégrehajtást az aktuális iteráció végére továbbítja. Ez a viselkedés eltér attól a viselkedéstől, amit a(z)breakutasításnál láttunk. Azbreakutasítás leállítja az iterációt (vagyswitch) és átadja az irányítást a leállított utasítást követő utasításnak. Ha a befejezett utasítás után nincs további utasítás, akkor a vezérlés a fájl vagy a metódus végére kerül.
Összefoglalás
Néhány fontos ötletet el kell vennie ebből a leckéből:
- Az
do-whileutasítás legalább egyszer végighalad egy kódblokkon, és logikai kifejezés alapján tovább iterálhat. A logikai kifejezés kiértékelése általában a kódblokkban létrehozott vagy lekért értéktől függ. - Az
whileutasítás először kiértékel egy logikai kifejezést, majd folytatja az iterálást a kódblokkon, amíg a logikai kifejezés igazra értékelődiktrue. - Az
continuea kulcsszó, amely azonnal a logikai kifejezésre lép.