Hva er nestede løkker i C ++ med eksempler?

Hva er nestede løkker i C ++ med eksempler?
Først av alt, hva er en sløyfe? En sløyfe er en konstruksjon som utfører utsagn gjentatte ganger til en spesifisert tilstand er oppfylt. Uttalelsene er i blokken til loopen. I C ++, hvis det bare er en uttalelse som skal gjentas, vil det ikke være noen blokk (seler). Det er do-mens-sløyfen, mens du er-loop og for-loopen. Slike konstruksjoner kalles sammensatte utsagn.

Do-mens Loop

En enkel do-mens Loop er:

int m = 0;
gjøre

cout << m << ";
++m;
mens (m<5);

Det er en innledende tilstand som egentlig ikke er en del av løkken. Denne innledende tilstanden er "int m = 0;". Løkken begynner med det reserverte ordet, gjør og slutter med en semikolon, etter at tilstanden, “(m<5)”. The loop means to print out integers, beginning from zero until m is equal to 5. When m is equal to 5, no printing takes place.

Med do-mens-sløyfen utføres blokken først, før tilstanden blir sjekket. Tilstanden er oppfylt når M er lik 5. Før da utføres blokken 5 ganger, fra en telling fra 0 til 4. Så utgangen er:

0 1 2 3 4

mens du er sløyfe

Med do-mens-sløyfen utføres blokken hver gang før tilstanden blir sjekket. På den annen side, med While-loop, blir tilstanden sjekket først, hver gang, før blokken utføres. Følgende mens-loop gjør det ovennevnte sløyfe ovenfor har gjort:

int m = 0;
mens (m<5)

cout << m << ";
++m;

Det er en innledende tilstand som egentlig ikke er en del av løkken. Denne innledende tilstanden er "int m = 0;". Løkken begynner med det reserverte ordet og slutter ved andre og lukkende stag for blokken. Det er ingen "gjør" reservert ord her. Mens tilstanden er “(m<5)”, same as in the above code. When the while-condition is false, that is, m equals 5, the block is not executed, and that is the end of the loop. Note that the loop does not end with a semicolon in this case. The output is the same as in the previous code, that is:

0 1 2 3 4

for-loop

Ovennevnte mens-sløyfe er det fem hovedkomponenter. Den første er initialiseringsuttalelsen,

int m = 0;

Gjentakelse av utførelsen av sløyfeblokken foregår for 5 tall, begynner når M er null. Neste komponent er mens tilstanden (m<5). No repetition (no execution of the block) occurs when the while condition results in false. The third component is the loop compound statement itself, which can be imagined as the block. The fourth component is inside the loop compound statement. It is:

cout << m << ";

Det skriver ut verdien av m. Og den femte komponenten er trinnserklæringen,

++m;

Som er i blokken, på slutten. Dette forårsaker repetisjon av utførelsen av blokken. Det introduserer neste nummer for gjentatt utførelse av blokken. Repetisjon vil imidlertid ikke finne sted hvis mens tilstanden resulterer i falsk.

De forskjellige fem komponentene kan omorganiseres i en for-loop som følger:

for (int m = 0; m<5; ++m)

cout << m << ";

Utgangen er den samme, jeg.e.

0 1 2 3 4

Det er tre uttalelser i parentesene til For-loop: det er initialiseringsuttalelsen, det er mens tilstanden, som er en kort uttalelse, og det er trinnserklæringen. I blokken, denne gangen, er det bare en uttalelse, som er kjerneuttalelsen. Økningserklæringen, som var i blokken, er tatt opp i parentesene. Flere uttalelser kan legges til noen av de ovennevnte blokkeringene.

Do-mens Loop og While Loop er grunnleggende den samme som for-loopen. For-loop setter looping i en klassisk og forenklet form. Enhver sløyfe trenger en initialiseringstilstand, en stund tilstand, og kode for å forårsake neste repetisjon, som ikke vil oppstå når mens tilstanden resulterer i falsk.

Når du hekker en sløyfe, bør disse tre funksjonene tas i betraktning. Denne artikkelen forklarer forskjellige måter å hekke løkker i C++. De grunnleggende sløyfeskjemaene er forklart ovenfor.

Artikkelinnhold

  • Hekkende do-mens løkker
  • Hekker mens løkker
  • Hekker for-løkker
  • Konklusjon

Hekkende do-mens løkker

Fra følgende program vises en tabell med 5 rader og 4 kolonner med tegn. I C ++ kan sekvensen av store bokstaver eller sekvensen med små bokstaver hver sammenlignes når hele tall sammenlignes, som illustrert i den følgende nestede sløyfen:

#inkludere
ved hjelp av navneområdet STD;
int main ()

int i = 0;
char j = 'a';
gjøre

gjøre

cout << j << ";
J ++;
mens (j < 'E');
j = 'a';
cout << endl;
i ++;
mens jeg < 5);
retur 0;

Utgangen er:

A B C D
A B C D
A B C D
A B C D
A B C D

Den første linjen i programmet inkluderer iostream -biblioteket i programmet. Dette biblioteket er nødvendig for å skrive ut tekst. Den neste linjen er en uttalelse, som sikrer at ethvert navn som brukes er fra standardnavnområdet med mindre annet er angitt.

Det er nyttig å tenke på en nestet sløyfe i to dimensjoner. Begge løkker opptrer på hver celle. Den indre sløyfen er ansvarlig for kolonnene, mens den ytre sløyfen er ansvarlig for radene.

Det går slik: Mens den ytre sløyfen peker på den første raden, skriver den indre sløyfen ut en celleverdi, per kolonne, for første rad. Mens den ytre sløyfen peker på den andre raden, skriver den indre sløyfen ut en celleverdi, per kolonne, for andre rad. Dette fortsetter til den siste raden er skrevet ut.

I programmet ovenfor er initialiseringstilstanden for den ytre sløyfen,

int i = 0;

Initialiseringstilstanden for den indre sløyfen er,

char j = 'a';

Legg merke til at hele den indre sløyfen er plassert like etter åpningsstaget til den ytre sløyfen. Bare en uttalelse skriver ut hvert tegn, og denne uttalelsen må være i den indre sløyfen. Dette er fordi løkker får tilgang til en celle per kombinert iterasjon. Uttalelsen er:

cout << j << ";

Det store alfabetet kan håndteres som hele tall (positive heltall).

Mens betingelsen for den indre sløyfen er,

mens (j < 'E')

På slutten av den indre sløyfekjernen, men ikke på slutten av den indre sløyfekoden. Dette betyr at den femte bokstaven 'E' og utover ikke må vises. Etter at den indre sløyfen har vist 4 elementer på rad, tilbakestilles starttilstanden eller re-initialiseres med uttalelsen,

j = 'a';

som ikke er gitt av det reserverte ordet, røye. Forut for det med det reserverte ordet, vil Char erklære en ny variabel, som ikke vil være en del av den todimensjonale iterasjonen. Uttalelsen etter det, jeg.e.

cout << endl;

tvinger markøren på skjermen til neste linje slik at neste rad kan skrives ut på neste linje.

Etter denne uttalelsen begynner den essensielle koden for den ytre sløyfen. Mens betingelsen for den ytre sløyfen er,

(Jeg < 5)

noe som betyr at radene telles som 0, 1, 2, 3, 4, fremdeles fem tall.

Koden for den indre sløyfen, for å forårsake utskrift av neste tegn (kolonne repetisjon) i samme rad, er:

J ++;

Når mens betingelsen for den indre sløyfen resulterer i falsk, skrives det ingen ytterligere karakter. Koden for den ytre sløyfen for å forårsake utskrift av neste rad (linje repetisjon) er:

i ++;

Når mens betingelsen for den ytre sløyfen resulterer i falsk, skrives ingen ytterligere rad.

Og så, variabelen, jeg har blitt brukt til den ytre sløyfen, radene; Og variabelen, J har blitt brukt til den indre sløyfen, linjekarakterene.

Hekker mens løkker

Følgende program gjør det samme som programmet ovenfor:

#inkludere
ved hjelp av navneområdet STD;
int main ()

int i = 0;
char j = 'a';
mens jeg < 5)

mens (j < 'E')

cout << j << ";
J ++;
;
j = 'a';
cout << endl;
i ++;
;
retur 0;

Utgangen er:

A B C D
A B C D
A B C D
A B C D
A B C D

Algoritmen til denne koden er nesten den samme som for den forrige. Hovedforskjellen er at her, for hver iterasjon for den indre eller ytre sløyfen, er mens tilstanden blir sjekket før sløyfens kropp blir utført. I den forrige koden blir kroppen utført før mens tilstanden er sjekket.

Hekker for-løkker

Følgende program gjør det samme som programmet ovenfor:

#inkludere
ved hjelp av navneområdet STD;
int main ()

for (int i = 0; i < 5; i++)

for (char j = 'a'; j < 'E'; j++)

cout << j << ";

cout << endl;

retur 0;

Utgangen er:

A B C D
A B C D
A B C D
A B C D
A B C D

Det er visse ting å merke seg her: den nestede for-loopen er kortere i høyden enn deres andre kolleger. Den økende uttalelsen for den indre sløyfen er fjernet fra kroppen og ført inn i parentesene for sin for-loop. Den økende uttalelsen for den ytre sløyfen er fjernet fra kroppen og ført inn i parentesene for sin for-loop. Re-initialiseringen (tilbakestilling) av den indre loopvariabelen, J er ikke lenger nødvendig som en uttalelse for den ytre sløyfen; Fordi initialiseringsuttalelsen for den indre for-loopen initialiserer seg for hver iterasjon av den ytre sløyfen.

Ikke glem at For-loop er en klassisk og forenklet form av de to andre løkkene.

Konklusjon

En sløyfe har tre viktige funksjoner: en initialiseringstilstand, mens tilstanden og presset for neste repetisjon av sløyfens kropp. Når en sløyfe er nestet i en annen, må disse tre funksjonene vurderes for hver av de tilsvarende løkkene. Alle ovennevnte løkker er hekkende løkker på ett nivå. Det er nyttig å tenke på en hekkende nivå, av løkker, som en todimensjonal layout. Koden til den nestede sløyfen er det som får tilgang til hver celle for 2D -oppsettet. Denne opplæringen har gitt leseren det grunnleggende om hekking av loop.