Exerciții - Creați o activitate de făcut și în timp ce iterați buclele
- 10 minute
Pe suprafață, instrucțiunile și do-while încă while declarație de iterație care vă permite să iterați printr-un bloc de cod și, astfel, să modificați fluxul de execuție a codului. Cu toate acestea, odată ce examinăm modul în care funcționează fiecare, putem identifica mai bine nuanțele fiecărei instrucțiuni de iterație și când să le utilizăm.
Ce este instrucțiunea do-while?
Instrucțiunea do-while execută o instrucțiune sau un bloc de instrucțiuni în timp ce o expresie booleană specificată se evaluează ca adevărată. Deoarece expresia este evaluată după fiecare execuție a buclei, o buclă de făcut se execută de una sau mai multe ori.
do
{
// This code executes at least one time
} while (true);
Fluxul de execuție începe în interiorul acoladei curbate. Codul se execută cel puțin o dată, apoi expresia Boolean de lângă cuvântul while cheie este evaluată. Dacă expresia Boolean returnează true, blocul de cod este executat din nou.
Codând din greu expresia booleană în true, am creat o buclă infinită-o buclă care nu se va termina niciodată, cel puțin, nu așa cum este scris în prezent. Am avea nevoie de o modalitate de a ieși din bucla din interiorul blocului de cod. Vom discuta despre criteriile de ieșire ale unui do-while pic.
Bine, acum să ne pregătim mediul de codificare și să începem examinarea eșantioanelor de cod care implementează o do-while declarație.
Pregătirea mediului de codificare
Acest modul include activități practice care vă ghidează în procesul de creare și de rulare a codului demonstrativ. Vă încurajăm să finalizați aceste activități utilizând Visual Studio Code ca mediu de dezvoltare. Utilizarea Codului Visual Studio pentru aceste activități vă va ajuta să deveniți mai confortabil să scrieți și să rulați cod într-un mediu de dezvoltator utilizat de profesioniști din întreaga lume.
Deschideți Visual Studio Code.
Puteți utiliza meniul Start Windows (sau resursa echivalentă pentru un alt sistem de operare) pentru a deschide Visual Studio Code.
În meniul Fișier Visual Studio Code, selectați Deschidere folder.
În caseta de dialog Deschidere folder, navigați la folderul Desktop Windows.
Dacă aveți o altă locație de folder în care păstrați proiectele de cod, puteți utiliza acea locație de folder în schimb. Pentru această instruire, lucrul important este să aveți o locație ușor de găsit și de reținut.
În caseta de dialog Deschidere folder, selectați Selectare folder.
Dacă vedeți o casetă de dialog de securitate care vă întreabă dacă aveți încredere în autori, selectați Da.
În meniul Terminal Visual Studio Code, selectați Terminal nou .
Observați că o linie de comandă din panoul Terminal afișează calea folderului pentru folderul curent. De exemplu:
C:\Users\someuser\Desktop>Notă
Dacă lucrați pe propriul PC, nu într-un sandbox sau într-un mediu găzduit și ați finalizat alte module Microsoft Learn din această serie C#, este posibil să fi creat deja un folder de proiect pentru eșantioane de cod. În acest caz, puteți trece peste pasul următor, care este utilizat pentru a crea o aplicație consolă în folderul TestProject.
În linia de comandă Terminal, pentru a crea o aplicație consolă nouă într-un folder specificat, introduceți următoarea solicitare:
dotnet new console -o ./CsharpProjects/TestProjectAceastă comandă .NET CLI utilizează un șablon de program .NET pentru a crea un nou proiect de aplicație consolă C# în locația de folder specificată. Comanda creează folderele CsharpProjects și TestProject pentru dvs. și utilizează TestProject ca nume al fișierului
.csproj.Dacă se afișează un mesaj care vă spune că fișierele există deja, continuați cu pașii următori. Veți reutiliza fișierele de proiect existente.
În vizualizarea EXPLORER, extindeți folderul CsharpProjects .
Ar trebui să vedeți folderul TestProject și două fișiere, un fișier program C# denumit Program.cs și un fișier de proiect C# numit TestProject.csproj.
În meniul Fișier Visual Studio Code, selectați Deschidere folder.
În caseta de dialog Deschidere folder , selectați folderul CsharpProjects , apoi selectați Selectare folder.
În vizualizarea EXPLORER, extindeți folderul TestProject, apoi selectați Program.cs.
Ștergeți liniile de cod existente.
Veți utiliza acest proiect de consolă C# pentru a crea, a construi și a rula eșantioane de cod în timpul acestui modul.
Închideți panoul Terminal.
Scrieți o instrucțiune do-while pentru a întrerupe atunci când este generat un anumit număr aleator
Să scriem cod care va continua să genereze numere aleatoare între 1 și 10 până când generăm numărul 7. Ar putea dura doar o iterație pentru a obține un 7, sau ar putea dura zeci de iterații.
Asigurați-vă că aveți visual Studio Code deschis și Program.cs afișat în panoul Editor.
Notă
Program.cs ar trebui să fie goală. Dacă nu este, selectați și ștergeți toate liniile de cod.
Tastați următorul cod în Visual Studio Code Editor.
Random random = new Random(); int current = 0; do { current = random.Next(1, 11); Console.WriteLine(current); } while (current != 7);În meniul Fișier Visual Studio Code, selectați Salvare.
Fișierul Program.cs trebuie salvat înainte de construirea sau rularea codului.
În panoul EXPLORER, pentru a deschide un Terminal la locația folderului TestProject, faceți clic dreapta pe TestProject, apoi selectați Deschidere în terminal integrat.
Se va deschide un panou terminal. Terminalul ar trebui să includă o linie de comandă care arată că Terminal este deschis în locația folderului TestProject.
În linia de comandă Terminal, pentru a rula codul, tastați run dotnet apoi apăsați pe Enter.
Notă
Dacă vedeți un mesaj care spune "Nu s-a găsit un proiect de rulat", asigurați-vă că linia de comandă Terminal afișează locația așteptată a folderului TestProject. De exemplu:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Revizuiți rezultatul.
Deoarece numerele generate sunt aleatoare, rezultatele dvs. vor fi diferite. Cu toate acestea, valoarea
7va fi ultimul număr de imprimat, deoarece expresia booleană se va evalua lafalsemomentul când este generată 7, iar fluxul de execuție va ieși din blocul de cod.2 5 8 2 7Acordați-vă un minut pentru a vă revizui codul.
O învățare cheie pentru această primă activitate este că blocul de cod al unei bucle se va executa cel puțin o
do-whiledată. Ar putea itera un număr mare de ori, și este puțin probabil să știm dinainte câte iterații vor exista.De asemenea, este important să observați că codul din interiorul blocului de cod influențează dacă să continue sau nu iterarea prin blocul de cod. Un bloc de cod care influențează criteriile de ieșire este un motiv principal pentru a selecta o
do-whileinstrucțiune sauwhileinstrucțiuni, nu una dintre celelalte instrucțiuni de iterație. Atât factoriiforeachcare sunt externi blocului de cod, cât șiforbazați-vă pe factori care determină numărul de iterații de blocare a codului.
Scrieți o instrucțiune în timp ce iterează doar un număr aleator este mai mare decât o valoare
Acum să aruncăm o privire la while declarație.
Utilizați Visual Studio Code Editor pentru a actualiza codul după cum urmează:
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}");Notă
În acest caz, poziționăm
whilecuvântul cheie și expresia Boolean înaintea blocului de cod. Acest lucru modifică semnificația codului și acționează ca o "poartă" pentru a permite doar fluxului de execuție să introducă dacă expresia booleană se evaluează ca adevărată.Salvați fișierul de cod, apoi utilizați Visual Studio Code pentru a rula codul.
Introduceți
dotnet rundin linia de comandă Terminal pentru a rula codul.Revizuiți valorile de ieșire listate.
Deoarece numerele sunt aleatoare, deci codul va produce o altă secvență.
9 7 5 Last number: 1Acordați-vă un minut pentru a vă revizui codul.
În codul de sus, utilizăm
randompentru a inițializa variabila noastrăintdenumităcurrent. Următoarea linie de cod activă este instrucțiunea noastrăwhile.Instrucțiunea noastră
whilese va itera pe baza expresiei(current >= 3)booleene . Nu știm ce valoare va fi atribuită ,currentdar există posibilități care afectează bucla noastrăwhile:- Dacă
currenteste inițializată la o valoare mai mare sau egală cu3, expresia booleană va returnatrue, iar fluxul de execuție va introduce blocul de cod. În interiorul blocului de cod, primul lucru pe care îl facem este să scriem valoareacurrentpe consolă. În continuare, încă în interiorul blocului de cod, actualizăm valoareacurrentcu o nouă valoare aleatoare. În acest moment, controlul revine în partea de sus a declarațieiwhileîn care se evaluează expresia booleană. Acest proces continuă până când expresia Boolean returneazăfalseși fluxul de execuție se întrerupe din blocul de cod. - Dacă
currenteste inițializat (în partea de sus a codului) la o valoare mai mică decât3, expresia booleană va returnafalse, iar blocul de cod nu se va executa niciodată.
Linia de cod finală scrie valoarea consolei
current. Acest cod rulează dacă blocul de cod de iterație a fost executat sau nu și este șansa noastră de a scrie valoareacurrentfinală a consolei.- Dacă
Utilizați instrucțiunea continue pentru a trece direct la expresia booleană
În anumite cazuri, dorim să scurtăm restul codului din blocul de cod și să continuăm cu următoarea iterație. Putem face acest lucru folosind declarația continue .
Utilizați Visual Studio Code Editor pentru a actualiza codul după cum urmează:
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}"); */Acordați-vă un minut pentru a vă revizui codul.
Observați că am trecut înapoi la un
do-while. Odo-whileasigură că bucla se va itera cel puțin o dată.Primul lucru pe care îl facem în interiorul blocului de cod este să atribuim o nouă valoare aleatoare lui
current. În continuare, verificăm dacăcurrenteste mai mare sau egal cu8. Dacă această expresie returneazătrue,continuecuvântul cheie va transfera controlul la sfârșitul blocului de cod și sewhileva evalua(current != 7). Așadar, bucla va continua să se itereze atât timp cât valoarea luicurrentnu este egală cu7.Cheia acestui pas al exercițiului este linia de cod care conține
continuecuvântul cheie:if (current >= 8) continue;Deoarece codul nostru care scrie valoarea consolei
currentse află dupăif (current >= 8) continue;, codul nostru asigură că o valoare acurrentacesteia este mai mare sau egală cu8nu va fi scrisă niciodată în fereastra de ieșire.Să încercăm.
Salvați fișierul de cod, apoi utilizați Visual Studio Code pentru a rula codul.
Introduceți
dotnet rundin linia de comandă Terminal pentru a rula codul.Revizuiți valorile de ieșire listate.
5 1 6 7Este posibil să vedeți rezultate diferite decât cele afișate mai jos. Cu toate acestea, nu veți vedea nicio valoare
8sau mai mare în fereastra de ieșire înainte ca executarea codului să se termini cu valoarea7.Luați în considerare diferența dintre
continuedeclarații șibreak.După cum ați văzut în acest ultim pas, instrucțiunea
continuetransferă execuția la sfârșitul iterării curente. Acest comportament este diferit de comportamentul pe care l-am văzut cu afirmațiabreak. Instrucțiuneabreakoprește iterația (sauswitch) și transferă controlul către instrucțiunea care urmează după instrucțiunea încheiată. Dacă nu există nicio instrucțiune după instrucțiunea încheiată, atunci controlul se transferă la sfârșitul fișierului sau metodei.
Recapitulare
Există câteva idei importante pe care ar trebui să le luați de la această unitate:
- Instrucțiunea
do-whileiterează printr-un bloc de cod cel puțin o dată și poate continua să se itereze pe baza unei expresii booleene. Evaluarea expresiei booleene depinde de obicei de unele valori generate sau regăsite în interiorul blocului de cod. - Instrucțiunea
whileevaluează mai întâi o expresie booleană și continuă să se itereze prin blocul de cod atât timp cât expresia booleană se evaluează latrue. - Cuvântul
continuecheie pentru a trece imediat la expresia booleană.
Verificarea cunoștințelor
Feedback
Această pagină a fost utilă?
Nu
Aveți nevoie de ajutor cu acest subiect?
Doriți să încercați să utilizați Întrebați Microsoft Learn pentru a clarifica sau primi îndrumări privind acest subiect?