V tem članku bomo spoznali zanko for v jeziku C # in različne načine njihove uporabe v programu.
Pri programiranju je pogosto zaželeno, da določen blok stavkov izvedemo določeno število krat. Možna rešitev bo vnos teh izjav zahtevano število krat. Vendar število ponovitev morda ni znano vnaprej (v času prevajanja) ali morda dovolj veliko (recimo 10000).
Najboljša rešitev za tak problem je zanka. Zanke se uporabljajo pri programiranju za večkratno izvajanje določenega bloka stavkov, dokler ni izpolnjen neki pogoj.
V tem članku bomo preučili zanko v C #.
C # za zanko
Ključna beseda for se uporablja za ustvarjanje zanke for v C #. Sintaksa for zanke je:
for (inicializacija; pogoj; iterator) (// telo zanke for)
Kako deluje zanka?
- C # za zanke ima tri izjave:
initialization
,condition
initerator
. initialization
Izjava se izvede na prvi in samo enkrat. Tu je spremenljivka običajno deklarirana in inicializirana.- Nato
condition
se ovrednoti. Jecondition
logični izraz, tj. Vrne bodisitrue
alifalse
. - Če
condition
je vrednost ocenjena natrue
:- Izjave v zanki for se izvajajo.
- Nato
iterator
se izvede stavek, ki običajno spremeni vrednost inicializirane spremenljivke. - Spet
condition
se ovrednoti. - Postopek se nadaljuje, dokler se
condition
ne ocenifalse
.
- Če
condition
je vrednost ovrednotena zfalse
, se zanka for zaključi.
za diagram poteka zanke
Primer 1: C # za zanko
using System; namespace Loop ( class ForLoop ( public static void Main(string() args) ( for (int i=1; i<=5; i++) ( Console.WriteLine("C# For Loop: Iteration (0)", i); ) ) ) )
Ko zaženemo program, bo rezultat:
C # za zanko: ponovitev 1 C # za zanko: ponovitev 2 C # za zanko: ponovitev 3 C # za zanko: ponovitev 4 C # za zanko: ponovitev 5
V tem programu
initialization
izjava jeint i=1
condition
izjava jei<=5
iterator
izjava jei++
Ko se program zažene,
- Najprej je spremenljivka i deklarirana in inicializirana na 1.
- Nato
i<=5
se ovrednoti pogoj ( ). - Ker se stanje vrne
true
, program nato izvrši telo zanke for. Dato vrstico natisne z ponovitvijo 1 (ponovitev preprosto pomeni ponovitev). - Zdaj se oceni iterator (
i++
). S tem se vrednost i poveča na 2. - Pogoj (
i<=5
) se ponovno ovrednoti in na koncu se vrednost i poveča za 1. Pogoj botrue
prvih 5-krat ocenil na . - Ko bo vrednost i 6 in bo pogoj, bo
false
zanka končana.
Primer 2: za zanko za izračun vsote prvih n naravnih števil
using System; namespace Loop ( class ForLoop ( public static void Main(string() args) ( int n = 5,sum = 0; for (int i=1; i<=n; i++) ( // sum = sum + i; sum += i; ) Console.WriteLine("Sum of first (0) natural numbers = (1)", n, sum); ) ) )
Ko zaženemo program, bo rezultat:
Vsota prvih 5 naravnih števil = 15
Tu se vrednost vsote in n inicializirata na 0 oziroma 5. Spremenljivka iteracije i se inicializira na 1 in se poveča na vsaki ponovitvi.
Znotraj zanke for se vrednost vsote poveča za i ie sum = sum + i
. Zanka for se nadaljuje, dokler i ni manjši ali enak n (vnos uporabnika).
Poglejmo, kaj se zgodi v danem programu na vsaki ponovitvi.
Sprva je i = 1, vsota = 0 in n = 3
Za korake izvajanja zankePonavljanje | Vrednost i | i <= 5 | Vrednost vsote |
---|---|---|---|
1. | 1. | prav | 0 + 1 = 1 |
2. | 2. | prav | 1 + 2 = 3 |
3. | 3. | prav | 3 + 3 = 6 |
4. | 4. | prav | 6 + 4 = 10 |
5. | 5. | prav | 10 + 5 = 15 |
6. | 6. | napačno | Loop se konča |
Torej, končna vrednost vsote bo 15, če je n = 5.
Več izrazov znotraj zanke for
V zanki for lahko uporabimo tudi več izrazov. To pomeni, da imamo lahko v zanki for več kot en stavek o inicializaciji in / ali iteratorju. Oglejmo si spodnji primer.
Primer 3: za zanko z več izrazi inicializacije in iteratorja
using System; namespace Loop ( class ForLoop ( public static void Main(string() args) ( for (int i=0, j=0; i+j<=5; i++, j++) ( Console.WriteLine("i = (0) and j = (1)", i,j); ) ) ) )
Ko zaženemo program, bo rezultat:
i = 0 in j = 0 i = 1 in j = 1 i = 2 in j = 2
V tem programu smo v inicializacijskem stavku deklarirali in inicializirali dve spremenljivki: i in j.
V iteratorskem delu imamo tudi dva izraza. To pomeni, da se i in j na vsaki ponovitvi povečata za 1.
Za zanko brez inicializacije in stavkov iteratorja
Inicializacija, pogoj in stavek iteratorja niso obvezni v zanki for. To pomeni, da lahko zaženemo for zanko tudi brez teh izjav.
V takih primerih zanka for deluje kot zanka while. Oglejmo si spodnji primer.
Primer 4: za zanko brez inicializacije in stavka iterator
using System; namespace Loop ( class ForLoop ( public static void Main(string() args) ( int i = 1; for ( ; i<=5; ) ( Console.WriteLine("C# For Loop: Iteration (0)", i); i++; ) ) ) )
Ko zaženemo program, bo rezultat:
C # za zanko: ponovitev 1 C # za zanko: ponovitev 2 C # za zanko: ponovitev 3 C # za zanko: ponovitev 4 C # za zanko: ponovitev 5
V tem primeru nismo uporabili stavka inicializacije in iteratorja.
Spremenljivka i je inicializirana nad zanko for in njena vrednost se poveča znotraj telesa zanke. Ta program je enak tistemu v primeru 1.
Podobno je pogoj tudi neobvezna izjava. Če pa ne uporabimo testnega izraza, zanka for ne preizkusi nobenega stanja in bo delovala večno (neskončna zanka).
Neskončno za zanko
Če je pogoj v zanki for vedno resničen, bo zanka za vedno delovala. To se imenuje neskončna zanka.
Primer 5: Neskončno za zanko
using System; namespace Loop ( class ForLoop ( public static void Main(string() args) ( for (int i=1 ; i>0; i++) ( Console.WriteLine("C# For Loop: Iteration (0)", i); ) ) ) )
Tu je i inicializiran na 1 in pogoj je i>0
. Na vsaki ponovitvi povečamo vrednost i za 1, zato pogoj ne bo nikoli false
. To bo povzročilo, da se zanka izvaja neskončno.
Neskončno zanko lahko ustvarimo tudi tako, da pogoj nadomestimo s praznim. Na primer
for (;;) (// telo for zanke)
ali
for (inicializacija;; iterator) (// telo zanke for)