9 Ciklus utasítás a paraméterhez
Ciklus a paraméterrel. A záradék
A for loop utasítás végrehajtja a hurok algoritmikus szerkezetét egy paraméterrel (vagy egy számlálóval). A for loop-ot akkor használjuk, ha a programban a hurok utasítások végrehajtása előtt ismeretes (vagy előre meghatározott) a ciklus lépéseinek száma. A folyamatábrán a nyilatkozat a következőképpen jelenik meg:
szintaxis:
Ha van egy utasítás a ciklus testében, akkor <> el lehet hagyni. A hurok (számláló) változó paramétere bármilyen numerikus típus lehet. Ezáltal a C ++ hurok univerzális, mint a hurok. A módosítási szakaszban a postfix vagy prefix növekmény (vagy csökkentés) művelet leggyakrabban használatos, de a ciklusparaméter értékét megváltoztató hozzárendelési kifejezés használható. A ciklus a következőképpen működik:
- Kezdetben a számlálóváltozót deklarálják és inicializálják
- Ezután ellenőrizze az állapotot: ha a kifejezés igaz. iteráció következik be
- A hurok test utasításainak végrehajtása után a számláló értéke módosul
Megjegyzés. A C ++-ban az a szabály, hogy leírja a változószámlálót a hurok fejlécében. Ez azonban nem szükséges, különösen akkor, ha több változót kívánunk inicializálni az inicializálási szakaszban, ahogy azt a 9.2. Azonban a változó-számláló leírása a ciklus fejlécében a helyi változó leírását eredményezi, amely automatikusan megsemmisül, amikor a hurok megszűnik. Ezért, extrém szükségesség nélkül, a for-loopon kívüli változószámláló leírását nem szabad előállítani.
A for hurok során nem ajánlott az operandusok megváltoztatása a ciklusfejléc-kifejezésekben - ez mindenféle hibához vezethet! De maguk a változók (vagy konstansok) értékei, beleértve a változóértékeket (számláló) is használhatók. Tekintsünk egy klasszikus példát.
Program 9.1 A természetes N számmal megadva adja ki a szám összes osztóját.
A folytonos utasítás használata a for hurokban
Amikor a for loop-ban a folytatólagos állítást használjuk, figyelembe kell venni a ciklus munkáját:
- Az utasítások azután folytatódnak. el kell hagyni
- Ezután a számláló frissül
- Menj a következő iterációhoz (ellenkező esetben ellenőrizd a feltételt)
Mutassuk meg egy példát:
Megjegyzés. Megjegyzés: bár a számok kimenőjelenkénti kimenetét kihagyjuk, a számláló növelése megtörténik. Ezt a példát csak illusztrációként adtuk meg, a ciklus programozása nem így lenne! Jobb megoldani ezt a problémát az alábbiak szerint:
Többféle kifejezés az inicializálási és módosítási szakaszban
Amint azt a nyilatkozat fejlécében korábban említettük, három szakaszra lenne szükség. Az ebben a szakaszban szereplő kifejezések kihagyhatók, de nem hagyhatók el ";". A végén csak akkor hagyhatsz. Címsor formájában:
a "végtelen" ciklus feje. (A hurok kilépését programozni kell a hurok testén belül).
A C ++ támogatja a kifejezés utasításban lévő inicializálási és módosítási szakaszokban található több kifejezést. Ebben az esetben a ciklus folytatásának feltétele egy!
Például. A probléma feltérképezése: Számolja ki a szám legfeljebb 20 számot.
Program 9.2
Megjegyzés. Ne feledje, hogy a 12 sorban lévő kimeneti áram nem utal a hurok testére! (A címsor végén -;). Így a testben lévő ciklusnak üres kijelentése van, és minden kifejezést a fejlécben értékelnek. A 9.2 program helyesen számolja a 0-tól 20-ig terjedő szám faktoristáját.
A tartományos ciklus (tartomány-alapú)
Egy tömb vagy konténer elemeinek felsorolásához ugyanolyan típusú műveleteket kell végrehajtania, mint egy terjedelmes kódot. A C ++ konténerekkel való munka egyszerűsítése érdekében a hurok speciális formája a hatótávolság-alapú (hurok tartomány vagy tartomány alapján).
szintaxis:
A tartomány-alapú, például egy C tömb használatával:
Program 9.3
Ahhoz, hogy a tömbelemeket megváltoztassuk, az s változó referencia-változó legyen (mint a fenti példában). Ha a változó nem referencia, az adatokat át kell másolni. Az automatikus gépeléshez ebben a hurokban az automatikus specifikátort használják. tartomány-alapú, a dinamikus tömbökkel való együttműködésre korlátozott: nem támogatja a tömb méretének megváltoztatását, mivel tartalmaz egy rögzített végpont-mutatót. Ha fix méretű tömbökkel dolgozik, a tartomány a kiváló és biztonságos alternatíva a szokásos.
Beágyazott hurkok számára
Ugyanúgy, mint más hurokkifejezések, a támogatja a beágyazott hurokstruktúrát. A kétdimenziós tömbök bemeneteinek és kimenetének megszervezéséhez a hurokba ágyazott rendszerek használata sokkal kompaktabbnak tűnik, mint a hurok használata.
Az ilyen tömbök átkerülésének problémáinak megoldásakor azonban el kell kerülni a feltételes nyilatkozat használatát. Gyakran a feladatot racionálisabban lehet végrehajtani az indexek manipulálásával (az i és j ciklus változói). Ez azt jelenti, hogy egy index változását függesszük egy másik értékétől. Nézzünk két példát.
Program 9.4 Az n méretű négyzetmátrixot, amelynek elemei 0-nak felelnek meg. Töltse ki az alatta levő elemeket és a legfontosabb diagonális egységeket.
Program 9.5 Hozzon létre egy programot, amely kitölt egy tömböt a Pascal háromszög számával, és kiadja ezt a tömböt. A Pascal háromszög így néz ki:
Ebben a háromszögben vannak egységek a tetején és az oldalakon (a 9.5 programban, a háromszög az oldalán van elhelyezve - a háromszög oldalai: az első oszlop és a fő átló). Minden szám megegyezik a fenti két szám összegével. A háromszög vonalai szimmetrikusak a függőleges tengelyhez képest, és tartalmaznak binomiális együtthatókat.
- Lehet-e a for loop utasítást kicserélni egy hurok utasítással? Mindig lehetséges ezt megtenni?
- Mikor kényelmesebb a for utasítás használata a hurkok megszervezéséhez? míg?
- Az utasítás utasítás fejlécében a következő állítások lehetségesek:
- Az i változó a külső hurok paramétere, és j a beágyazott paraméter. A j változó elérhető a külső hurokban? i a beágyazott hurokban?
házi feladat
- Ass. 29. Írj egy olyan programot, amelyben az a és b természetes számokat be kell mutatni. és a kijelzőn az a-b tartományban lévő összes prímszám látható (a 8.5 program algoritmusa)
- Ass. 30. A tökéletes szám az összes osztójának összege, kisebb mint önmagában (például a 6 = 1 + 2 + 3). Írjon egy olyan programot, amely egy természetes N számot vezet be, és meghatározza, hogy az N szám tökéletes.
- Írj egy olyan programot, amely n x n méretű négyzetszám-táblát jelenít meg. amely az alábbi formában van n = 10 értékkel.