C-ben ciklusok: For, While, Do Whileping Állítások [Példák]

⚡ Okos összefoglaló

A C nyelvben a ciklusok egy utasításblokkot ismételnek, amíg egy vezérlő feltétel hamissá nem válik, és a nyelv három konstrukciót biztosít – a while ciklust, a do-while ciklust és a for ciklust – a belépéshez és kilépéshez vezérelt ismétléshez.

  • 🔁 Hurok anatómia: Minden C ciklus ismétlődő utasítások egy csoportját párosítja egy vezérlőfeltétellel, amely eldönti, hogy mikor áll le az ismétlődés.
  • 🚪 Belépés kontra kilépés: A belépési pont által vezérelt while és for ciklusok először a feltételt tesztelik, míg a kilépési pont által vezérelt do while ciklus törzse mindig egyszer fut le.
  • ♻️ Hurok közben: A while ciklus minden menet előtt ellenőrzi a feltételét, ami olyan esetekre alkalmas, ahol az iterációk száma előre nem ismert.
  • 🔂 Do-while ciklus: A do-while ciklus a tesztelés előtt végrehajtja a törzset, így garantálja az egyetlen futtatást akkor is, ha a feltétel hamis.
  • 🔢 A hurokhoz: A for ciklus egyetlen sorba csomagolja az inicializálást, a feltételt és a frissítést, ami ideális egy adott tartományon belüli számláláshoz.
  • Megszakítás és folytatás: A break utasítás azonnal kilép a ciklusból, míg a continue utasítás a ciklus elhagyása nélkül ugrik a következő iterációra.

C-ben ciklusok: For, While, Do Whileping Nyilatkozatok

Mi a Loop C-ben?

Vécéping A C nyelvű utasítások többször végrehajtják az utasítássorozatot, amíg a megadott feltétel hamissá nem válik. Egy C nyelvű ciklus két részből áll: egy ciklus törzséből és egy vezérlő utasításból. A vezérlő utasítás bizonyos feltételek kombinációja, amelyek arra utasítják a ciklus törzsét, hogy addig hajtsa végre az utasítást, amíg a megadott feltétel hamissá nem válik. A C nyelvű ciklus célja, hogy ugyanazt a kódot többször ismételje.

A hurkok típusai a C-ben

A programban lévő vezérlő utasítás pozíciójától függően, looping A C nyelven a mondatok két típusba sorolhatók:

  1. Belépésvezérelt hurok
  2. Kilépés a szabályozott hurokból

A C nyelvben a belépési vezérlőhurokban a ciklus törzsének végrehajtása előtt egy feltétel ellenőrzésre kerül. Ezt elő-ellenőrző ciklusnak is nevezik.

Egy kilépésvezérelt ciklusban a feltétel ellenőrzése a ciklus törzsének végrehajtása után történik. Ezt utólagos ellenőrző ciklusnak is nevezik.

A hurkok típusai a C-ben

Minta hurok

A vezérlési feltételeket jól definiálni és specifikálni kell, különben a ciklus végtelen számú alkalommal fog végrehajtódni. Azt a ciklust, amely nem áll meg a végrehajtásban, és az utasításokat többször feldolgozza, végtelen ciklusnak nevezzük. A végtelen ciklust „végtelen ciklusnak” is nevezik. Az alábbiakban a végtelen ciklus néhány jellemzőjét láthatjuk:

  1. Nincs megadva felmondási feltétel.
  2. A megadott feltételek soha nem teljesülnek.

A megadott feltétel határozza meg, hogy végre kell-e hajtani a huroktörzset vagy sem.

A „C” programozási nyelv háromféle hurokkonstrukciót kínál:

  1. A while ciklus
  2. A do-while ciklus
  3. A for ciklus
Sr.sz. Hurok típusa Leírás
1. Míg a hurok A while ciklusban a feltétel kiértékelésre kerül a ciklus törzsének feldolgozása előtt. Ha egy feltétel igaz, akkor és csak akkor kerül végrehajtásra a ciklus törzse.
2. Do-While Loop A do…while ciklusban a feltétel mindig a ciklus törzse után kerül végrehajtásra. Kilépésvezérelt huroknak is nevezik.
3. A hurok számára Egy for ciklusban a kezdeti érték csak egyszer kerül végrehajtásra, majd a feltétel minden iteráció után teszteli és összehasonlítja a számlálót egy fix értékkel, stopping a for ciklus, amikor a visszatérési érték hamis.

Míg a hurok C-ben

A while ciklus a legegyszerűbb looping szerkezet. Míg a C programozási nyelv ciklusszintaxisa a következő:

A While ciklus szintaxisa C-ben

while (condition) {
             statements;
}

Ez egy belépés-vezérelt hurok. A while ciklusban a feltétel kiértékelésre kerül a ciklus törzsének feldolgozása előtt. Ha egy feltétel igaz, akkor és csak akkor kerül végrehajtásra a ciklus törzse. A ciklus törzsének végrehajtása után a vezérlés ismét visszamegy az elejére, és a feltételt ellenőrzi, hogy igaz-e, ugyanazt a folyamatot hajtják végre, amíg a feltétel hamis lesz. Ha a feltétel hamis lesz, a vezérlés kikerül a hurokból.

A ciklusból való kilépés után a vezérlés azokra az utasításokra megy, amelyek közvetlenül a ciklus után vannak. Egy ciklus törzse egynél több utasítást is tartalmazhat. Ha csak egy állítást tartalmaz, akkor a kapcsos zárójelek nem kötelezőek. Jó gyakorlat azonban a göndör fogszabályzó használata, még akkor is, ha egyetlen állítás van a testben.

A while ciklusban, ha a feltétel nem igaz, akkor a ciklus törzse nem kerül végrehajtásra, még egyszer sem. Ez eltér a do while ciklusban, amelyet hamarosan látni fogunk.

A következő program a while ciklust szemlélteti C programozási példában:

#include<stdio.h>
#include<conio.h>
int main()
{
	int num=1;	//initializing the variable
	while(num<=10)	//while loop with condition
	{
		printf("%d\n",num);
		num++;		//incrementing operation
	}
	return 0;
}

output:

1
2
3
4
5
6
7
8
9
10

A fenti program a while ciklus használatát szemlélteti. A fenti programban 1-től 10-ig számsorokat nyomtattunk egy while ciklus segítségével.

Míg a hurok C-ben

Míg a ciklus a C programozásban

  1. Inicializáltunk egy változó num nevű függvény, amelynek értéke 1. 1-től 10-ig fogunk nyomtatni, ezért a változó 1 értékkel van inicializálva. Ha 0-tól szeretne nyomtatni, akkor az inicializálás során rendeljen hozzá 0 értéket.
  2. Egy while ciklusban megadtunk egy feltételt (szám<=10), ami azt jelenti, hogy a ciklus addig hajtja végre a törzset, amíg a num értéke 10 nem lesz. Ezt követően a ciklus megszakad, és a vezérlés a cikluson kívülre kerül.
  3. A ciklus törzsében van egy print függvényünk a számunk kinyomtatására és egy increment művelet a ciklus végrehajtásonkénti értékének növelésére. A num kezdeti értéke 1, a végrehajtás után 2 lesz, a következő végrehajtáskor pedig 3 lesz. Ez a folyamat addig folytatódik, amíg az érték 10 lesz, majd kiírja a sorozatot a konzolra és befejezi a ciklust. .

A '\n' karakter formázási célokra szolgál, ami azt jelenti, hogy az érték új sorban kerül kiírásra.

Do-While ciklus C-ben

A do…while ciklus C-ben hasonló a while ciklushoz, kivéve, hogy a feltétel mindig a ciklus törzse után kerül végrehajtásra. Kilépésvezérelt huroknak is nevezik.

A do while ciklus szintaxisa C programozási nyelvben a következő:

A Do-While ciklus szintaxisa C-ben

 do {
  statements
} while (expression);

Ahogy egy while ciklusban láttuk, a test akkor és csak akkor kerül végrehajtásra, ha a feltétel igaz. Bizonyos esetekben legalább egyszer végre kell hajtanunk a ciklus törzsét, még akkor is, ha a feltétel hamis. Ez a fajta művelet egy do-while ciklus használatával érhető el.

A do-while ciklusban a ciklus törzse mindig legalább egyszer végrehajtásra kerül. A test végrehajtása után ellenőrzi az állapotot. Ha a feltétel igaz, akkor ismét végrehajtja a ciklus törzsét, különben a vezérlés kikerül a ciklusból.

Hasonlóan a while ciklushoz, amint a vezérlő kilép a ciklusból, az utasítások közvetlenül a ciklus végrehajtása után vannak.

A while és a do-while ciklus közötti kritikus különbség az, hogy a while ciklusban a while az elején van írva. A do-while ciklusban a while feltétel a végére kerül, és pontosvesszővel (;) végződik.

A következő ciklusprogram C-ben egy do-while ciklus működését szemlélteti:

Az alábbiakban egy do-while ciklus látható C példában a 2-es számú táblázat nyomtatásához:

#include<stdio.h>
#include<conio.h>
int main()
{
	int num=1;	//initializing the variable
	do	//do-while loop 
	{
		printf("%d\n",2*num);
		num++;		//incrementing operation
	}while(num<=10);
	return 0;
}

output:

2
4
6
8
10
12
14
16
18
20

A fenti példában 2-es szorzótáblát nyomtattunk egy do-while ciklus használatával. Lássuk, hogyan tudta a program kinyomtatni a sorozatot.

Do-While ciklus C-ben

Do-While ciklus a C programozásban

  1. Először inicializáltunk egy 'szám' változót 1 értékkel. Ezután írtunk egy do-while ciklust.
  2. Egy ciklusban van egy nyomtatási függvényünk, amely úgy nyomtatja ki a sorozatot, hogy a num értékét megszorozza 2-vel.
  3. Minden lépés után a num értéke 1-gyel nő, és ez megjelenik a képernyőn.
  4. Kezdetben a num értéke 1. Egy ciklus törzsében a nyomtatási függvény a következőképpen kerül végrehajtásra: 2*num ahol szám=1, majd 2*1=2, tehát a kettes érték kerül kinyomtatásra. Ez addig megy, amíg a num értéke 10 lesz. Ezt követően a ciklus befejeződik, és egy utasítás, amely közvetlenül a ciklus után van, végrehajtódik. Ebben az esetben adja vissza a 0-t.

A ciklushoz C-ben

A for ciklus egy hatékonyabb hurokstruktúra a 'C' programozásban. A for ciklus szintaxisának általános felépítése C-ben a következő:

A For Loop szintaxisa C-ben

for (initial value; condition; incrementation or decrementation ) 
{
  statements;
}
  1. A for ciklus kezdeti értéke csak egyszer kerül végrehajtásra.
  2. A feltétel egy logikai kifejezés, amely minden iteráció után teszteli és összehasonlítja a számlálót egy fix értékkel, stopping a for ciklus, amikor a visszatérési érték hamis.
  3. A növelés/csökkentés egy beállított értékkel növeli (vagy csökkenti) a számlálót.

A következő program a for ciklust szemlélteti C programozási példában:

#include<stdio.h>
int main()
{
	int number;
	for(number=1;number<=10;number++)	//for loop to print 1-10 numbers
	{
		printf("%d\n",number);		//to print the number
	}
	return 0;
}

output:

1
2
3
4
5
6
7
8
9
10

A fenti program a for ciklus segítségével kiírja a számsorokat 1-től 10-ig.

A ciklushoz C-ben

For Loop in C programozáshoz

  1. Deklaráltunk egy int adattípusú változót az értékek tárolására.
  2. A for ciklusban az inicializálási részben 1 értéket rendeltünk a változó számához. A feltétel részben megadtuk a feltételünket, majd a növekedési részt.
  3. A ciklus törzsében van egy print funkciónk, amellyel a számokat a konzol új sorába nyomtathatjuk. Az 2 értéket számban tároljuk, az első iteráció után az érték növekszik, és 2 lesz. Most a szám változó értéke 10. A feltétel újraellenőrzésre kerül, és mivel a feltétel igaz, ciklus végrehajtásra kerül, és kettőt nyomtat a képernyőre. Ez a ciklus addig fut, amíg a változó értéke 1 lesz. Ezt követően a ciklus befejeződik, és egy 10-XNUMX-es sorozat jelenik meg a képernyőn.

C-ben a for ciklusban több kifejezés is szerepelhet, amelyeket vesszővel választanak el minden egyes részében.

Például:

for (x = 0, y = num; x < y; i++, y--) { 
  statements; 
}

Pontosvessző hozzáadásával kihagyhatjuk a kezdeti érték kifejezését, feltételét és/vagy növekményét.

Például:

int i=0;
int max = 10;
for (; i < max; i++) {
  printf("%d\n", i);
}

Figyelje meg, hogy a hurkok beágyazhatók ott is, ahol van egy külső és egy belső hurok. A külső ciklus minden iterációja esetén a belső ciklus megismétli a teljes ciklusát.

Tekintsük a következő példát több feltétellel a for ciklusban, amely a beágyazott for ciklust használja a C programozásban a szorzótábla kimenetére:

#include <stdio.h>
int main() {
int i, j;
int table = 2;
int max = 5;
for (i = 1; i <= table; i++) { // outer loop
  for (j = 0; j <= max; j++) { // inner loop
    printf("%d x %d = %d\n", i, j, i*j);
  }
  printf("\n"); /* blank line between tables */
}}

output:

1 x 0 = 0
1 x 1 = 1
1 x 2 = 2
1 x 3 = 3
1 x 4 = 4
1 x 5 = 5

2 x 0 = 0
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10

A for ciklusok beágyazása bármilyen szintig elvégezhető. A beágyazott ciklusoknak megfelelően behúzottnak kell lenniük, hogy a kód olvasható legyen. A 'C' egyes verzióiban a beágyazás legfeljebb 15 ciklusra korlátozódik, de vannak ennél több verziók is.

A beágyazott hurkokat többnyire tömb alkalmazásokban használják, amelyeket a további oktatóanyagokban látni fogunk.

A három ciklustípuson túl a C nyelv két olyan utasítást kínál, amelyek belülről változtatják meg a ciklus futását.

Törésnyilatkozat C-ben

A break utasítást főleg a switch utasításAzonnali leállításhoz is hasznos.ping egy hurok.

A következő programot vesszük figyelembe, amely szünetet vezet be a while ciklusból való kilépéshez:

#include <stdio.h>
int main() {
int num = 5;
while (num > 0) {
  if (num == 3)
    break;
  printf("%d\n", num);
  num--;
}}

output:

5
4

Nyilatkozat folytatása C-ben

Ha a következő iterációra szeretne ugrani, de a ciklusban marad, akkor használja a turpināt utasítást.

Például:

#include <stdio.h>
int main() {
int nb = 7;
while (nb > 0) {
  nb--;
  if (nb == 5)
    continue;
 printf("%d\n", nb);
}}

output:

6
4
3
2
1

Tehát az 5-ös érték kimarad.

Melyik hurkot válasszam?

A ciklus kiválasztása mindig nehéz feladat egy programozó számára, a ciklus kiválasztásához kövesse az alábbi lépéseket:

  1. Elemezze a problémát, és ellenőrizze, hogy elő- vagy utótesztre van-e szükség.
  2. Ha előtesztelésre van szükség, használj while vagy for ciklust.
  3. Ha utótesztre van szükség, használjon do-while ciklust.

GYIK

Egy végtelen ciklus örökké fut, ha a feltétele soha nem válik hamissá. Ezt úgy előzheted meg, hogy frissíted a ciklus törzsében lévő változót, és gondoskodsz arról, hogy a feltétel végül teljesülhessen, vagy hozzáadsz egy break utasítást védelmi célból.

A break utasítás teljesen leállítja a ciklust, és a vezérlést az azt követő első utasításra helyezi át. A continue utasítás csak az aktuális iterációban fennmaradó utasításokat hagyja ki, és a ciklus következő ciklusára ugrik.

A C szabványban nincs beépített for-each vagy tartományalapú ciklus, mint például C++ or PythonEgy tömböt manuálisan iterálhatsz egy for vagy egy while ciklussal, egy index vagy egy mutató használatával, amely végigmegy az egyes elemeken.

Nem. A goto utasítás feltétel nélküli ugrást hajt végre egy címkézett sorra, és utánozhatja a loo-t.ping, de ez nem egy strukturált ciklus. A for, while vagy do-while használata sokkal olvashatóbbá teszi a kódot.

A vessző operátor lehetővé teszi, hogy egy for ciklus egyszerre több változót kezeljen. A for (x = 0, y = n; x < y; x++, y–) ciklusban mind az inicializáló, mind az update szakasz minden menetben két kifejezést futtat.

Igen. A feltételeket a zárójelben lévő logikai ÉS (&&) és VAGY (||) operátorokkal kombinálhatja. Például, ha a while (a < 10 && b > 0) logikailag változatlan marad, akkor a logikai ÉS (&&) és VAGY (||) operátorok értéke megegyezik a zárójelben lévő értékkel.ping csak amíg mindkét feltétel igaz marad.

Igen. A mesterséges intelligencia által fejlesztett kódolóasszisztensek képesek while, do-while és for ciklusokat rajzolni egy egyszerű leírásból, kiszűrni az egyenkénti hibákat, és megjelölni azokat a feltételeket, amelyek akár örökké is futhatnak. RevA kimenet megtekintése továbbra is elengedhetetlen, mivel a generált logika nem mindig helyes.

GitHub másodpilóta Gépelés közben teljes ciklustörzset javasol, automatikusan kiegészíti a számlálókat és a feltételeket, valamint egy rövid megjegyzésből beágyazott ciklusmintákat javasol. Népszerű szerkesztőkön belül működik, és felgyorsítja az ismétlődő C kódolást.

Foglald össze ezt a bejegyzést a következőképpen: