Exerciții - Crearea și configurarea buclelor de iterație
- 14 minute
Pe suprafață, instrucțiunea este o altă instrucțiune de iterație care vă permite să iterați printr-un bloc de cod și, astfel, for 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.
Care este instrucțiunea for ?
Instrucțiunea for iterează printr-un cod blochează un anumit număr de ori. Acest nivel de control face instrucțiunea for unică între celelalte instrucțiuni de iterație. Instrucțiunea foreach iterează un bloc de cod o dată pentru fiecare element dintr-o secvență de date, cum ar fi o matrice sau o colecție. Instrucțiunea while iterează printr-un bloc de cod până când este îndeplinită o condiție.
În plus, declarația for vă oferă mult mai mult control asupra procesului de iterație, expunând condițiile pentru iterație.
În acest exercițiu, veți utiliza instrucțiunea for , aflați cum să controlați condiția iterației, condiția de finalizare, modelul său de iterație și multe altele. De asemenea, veți afla despre cazurile de utilizare uzuale for pentru declarație.
Bine, acum să ne pregătim mediul de codificare și să începem examinarea eșantioanelor de cod care implementează o for 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 de bază pentru
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.
for (int i = 0; i < 10; i++) { Console.WriteLine(i); }Acest cod prezintă o instrucțiune simplă
forcare parcurge blocul de cod de 10 ori, imprimând valoarea curentă ai.Î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>Ar trebui să vedeți următoarea ieșire.
0 1 2 3 4 5 6 7 8 9Faceți un minut pentru a identifica cele șase părți ale declarației
for.Instrucțiunea
forinclude următoarele șase părți:- Cuvântul cheie
for. - Un set de paranteze care definește condițiile de
foriterație. Parantezele conțin trei părți distincte, separate de sfârșitul operatorului de instrucțiune, punct și virgulă. - Prima parte definește și inițializează variabila iterator. În acest exemplu:
int i = 0. Această secțiune este denumită inițializator. - A doua parte definește condiția de finalizare. În acest exemplu:
i < 10. Cu alte cuvinte, modulul runtime va continua să itereze peste codul din blocul de cod de subforinstrucțiunea în timp ceieste mai mică decât10. Cândidevine egal cu10, modulul runtime oprește executareaforblocului de cod al declarației. Documentele se referă la această secțiune ca condiție. - A treia parte definește acțiunea de efectuat după fiecare iterație. În acest caz, după fiecare iterație,
i++va incrementa valoarea cui1. Documentele se referă la această secțiune ca iterator. - În cele din urmă, blocul de cod. Blocul de cod conține codul care va fi executat pentru fiecare iterație. Observați că valoarea
ieste menționată în interiorul blocului de cod. Documentele se referă la această secțiune ca corp.
Având în vedere regulile noastre pentru denumirea variabilelor, vă puteți întreba dacă
ieste un nume valid pentru variabila care conține iterația curentă. În acest caz,ieste considerat ca fiind valabil cel mai mult. Alte alegeri populare suntxșicounter.jNumele este utilizat și în aceste situații atunci când aveți o instrucțiune exterioarăforcare utilizeazăiși trebuie să creați o variabilă de iterație pentru o instrucțiune internăfor.Notă
Toate cele trei secțiuni (inițializator, condiție și iterator) sunt opționale. Cu toate acestea, în practică, se utilizează, de obicei, toate cele trei secțiuni.
- Cuvântul cheie
Modificarea condițiilor de iterație
După cum am spus la început, afirmația for are două calități unice între declarațiile de iterație.
- Instrucțiunea
forar trebui utilizată atunci când știți de câte ori trebuie să iterați printr-un bloc de cod din timp. - Instrucțiunea
forvă permite să controlați modul în care se gestionează fiecare iterație.
Ce se întâmplă dacă aveam nevoie să iterăm printr-un bloc de cod, dar doriți să contorizați numărul în loc să contorizați?
Utilizați Visual Studio Code Editor pentru a actualiza codul după cum urmează:
for (int i = 10; i >= 0; i--) { Console.WriteLine(i); }Citiți un minut pentru a revizui codul actualizat.
Prin modificarea celor trei părți ale angajamentului
for, îi schimbăm comportamentul.- Inițializăm variabila de iterație la 10.
- Modificăm condiția de finalizare pentru a ieși din instrucțiunea
forcândieste mai mică decât0. - Schimbăm modelul iteratorului pentru a scădea
1deifiecare dată când terminăm o iterație.
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.Observați că ieșirea s-a modificat.
Atunci când rulați codul, veți vedea următoarea ieșire.
10 9 8 7 6 5 4 3 2 1 0
Experimentați cu modelul iteratorului
Ce se întâmplă dacă am vrut să ignorăm trecute anumite valori în variabila iterator?
Utilizați Visual Studio Code Editor pentru a actualiza codul după cum urmează:
for (int i = 0; i < 10; i += 3) { Console.WriteLine(i); }Citiți un minut pentru a revizui codul actualizat.
În loc să incrementăm sau să decrementăm valoarea variabilei
1iterator după , utilizămi += 3pentru a ignora două valori după fiecare iterație.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.Observați cum s-a modificat rezultatul.
Atunci când rulați codul, veți vedea următoarea ieșire.
0 3 6 9Desigur, nu veți face acest fel de lucru de multe ori, dar să sperăm că puteți aprecia că aveți un nivel fin de control asupra iterațiilor ar trebui să aveți vreodată nevoie de ea.
Utilizați cuvântul cheie întrerupere pentru a întrerupe instrucțiunea de iterație
Ce se întâmplă dacă trebuie să ieșim prematur din instrucțiunea de iterație pe baza unor condiții? Putem utiliza break cuvântul cheie.
Utilizați Visual Studio Code Editor pentru a actualiza codul după cum urmează:
for (int i = 0; i < 10; i++) { Console.WriteLine(i); if (i == 7) break; }Citiți un minut pentru a revizui utilizarea cuvântului
breakcheie în codul actualizat.Am văzut
breakpentru prima dată cuvântul cheie în modulul "Ramificație fluxul de cod utilizând construirea de litere mari și mici în C#". După cum se pare, putem utilizabreakcuvântul cheie pentru a ieși și din declarațiile de iterație.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.Observați cum s-a modificat rezultatul.
Atunci când rulați codul, veți vedea următoarea ieșire.
0 1 2 3 4 5 6 7
Buclă prin fiecare element al unei matrice
O utilizare obișnuită pentru for instrucțiunea este să iterați printr-o matrice de elemente, mai ales dacă aveți nevoie de un control asupra modului în care are loc iterația.
foreach Deși iterează prin fiecare element al matricei, instrucțiunea for poate fi reglată pentru a oferi mai multe particularizări.
Utilizați Visual Studio Code Editor pentru a actualiza codul după cum urmează:
string[] names = { "Alex", "Eddie", "David", "Michael" }; for (int i = names.Length - 1; i >= 0; i--) { Console.WriteLine(names[i]); }Citiți un minut pentru a revizui codul actualizat.
În primul rând, observați că am instanțiat o matrice de șiruri numită
namescare conține patru nume.În continuare, observați că utilizăm
Array.Lengthproprietatea pentru a obține numărul de elemente din matrice și că utilizăm această valoare pentru a inițializa variabila iterator (int i = names.Length - 1). Scădem 1 din valoare, deoarece numărul indexului pentru elementele matrice este bazat pe zero (numerele indexului celor patru elemente sunt 0-3).În cele din urmă, observați că am ales iterarea prin matricea inversă- ceva ce nu putem face cu instrucțiunea
foreach. Utilizăm valoarea variabilei de iterație din interiorul blocului de cod pentru a specifica numărul de index al elementelor matrice (names[i]).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.Observați că elementele matrice sunt listate în ordine inversă (așa cum intenționăm).
Atunci când rulați codul, veți vedea următoarea ieșire.
Michael David Eddie AlexNotă
Am fi putut iteevalua înainte prin elementele matrice prin construirea declarației
fordupă cum urmează:for (int i = 0; i < names.Length; i++).
Examinați limitarea declarației de prim-ajutor
Ce se întâmplă dacă doriți să actualizați o valoare din matrice în timpul unei foreach iterații?
Utilizați Visual Studio Code Editor pentru a actualiza codul după cum urmează:
string[] names = { "Alex", "Eddie", "David", "Michael" }; foreach (var name in names) { // Can't do this: if (name == "David") name = "Sammy"; }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.Observați mesajul de eroare afișat.
Dacă încercați să compilați și să rulați acest cod, veți vedea o excepție.
Cannot assign to name because it is a 'foreach iteration variable'Cu alte cuvinte, nu puteți reatribui valoarea
name, deoarece face parte dinforeachimplementarea internă a iterației.
Depășirea limitării declarației foreach folosind
Să încercăm să folosim o for instrucțiune pentru a modifica conținutul unei matrice din interiorul blocului de cod de iterație.
Utilizați Visual Studio Code Editor pentru a actualiza codul după cum urmează:
string[] names = { "Alex", "Eddie", "David", "Michael" }; for (int i = 0; i < names.Length; i++) if (names[i] == "David") names[i] = "Sammy"; foreach (var name in names) Console.WriteLine(name);Citiți un minut pentru a revizui codul actualizat.
Observați că am eliminat acoladele din blocurile de cod care conțineau doar o singură linie de cod. Această revizuire utilizează aceeași tehnică despre care am vorbit în modulul "Control domeniu variabil și logică utilizând blocuri de cod în C#". Mulți dezvoltatori consideră acest stil greu de citit, în timp ce alții preferă acest stil abreviat, deoarece îi ajută să scrie mai succint și mai expresiv. Dacă vi se pare greu de citit acest cod sau dacă pur și simplu nu preferați acest stil, fiți sigur că acoladele pot fi utilizate întotdeauna în blocurile de cod. Dacă doriți, actualizați codul din panoul Editor cu următorul cod:
string[] names = { "Alex", "Eddie", "David", "Michael" }; for (int i = 0; i < names.Length; i++) { if (names[i] == "David") { names[i] = "Sammy"; } } foreach (var name in names) { Console.WriteLine(name); }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.Observați că codul rulează fără eroare și generează rezultatul dorit.
Atunci când rulați codul, veți vedea următoarea ieșire.
Alex Eddie Sammy MichaelDeoarece matricea nu face parte direct din implementarea instrucțiunii de iterație, puteți modifica valorile din interiorul matricei.
Recapitula
Iată câteva dintre decolările de la această unitate:
- Instrucțiunea
forde iterație vă permite să iterați printr-un bloc de cod de un anumit număr de ori. - Instrucțiunea
foriterației vă permite să controlați fiecare aspect al mecanicii iterației prin modificarea celor trei condiții din paranteze: inițializatorul, condiția și iteratorul. - Este comun să utilizați instrucțiunea
foratunci când trebuie să controlați modul în care doriți să iterați prin fiecare element dintr-o matrice. - Dacă blocul de cod are o singură linie de cod, puteți elimina acoladele curbate și spațiul alb, dacă doriți.
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?