V tomto článku sa dozvieme o cykle for v C # a o rôznych spôsoboch ich použitia v programe.
V programovaní je často žiaduce vykonať určitý blok príkazov po zadaný počet opakovaní. Možným riešením bude zadať tieto výpisy požadovaný počet opakovaní. Počet opakovaní však nemusí byť známy vopred (počas kompilácie) alebo nemusí byť dostatočne veľký (napríklad 10 000).
Najlepším riešením tohto problému je slučka. Smyčky sa používajú v programovaní na opakované vykonávanie určitého bloku príkazov, kým nie je splnená určitá podmienka.
V tomto článku sa pozrieme na slučku v C #.
C # pre slučku
Pre kľúčové slovo sa používa na vytvorenie pre slučka v jazyku C #. Syntax pre cyklus for je:
for (initialization; condition; iterator) (// body of for loop)
Ako funguje slučka?
- C # pre sláčiky má tri príkazy:
initialization
,condition
aiterator
. initialization
Vyhlásenie je vykonaný v prvom a iba raz. Tu sa obvykle premenná deklaruje a inicializuje.- Potom
condition
sa vyhodnotí. Thecondition
je boolovský výraz, tj vracia buďtrue
alebofalse
. - Ak
condition
sa hodnotítrue
:- Vykonajú sa príkazy vo vnútri cyklu for.
- Potom
iterator
sa vykoná príkaz, ktorý zvyčajne zmení hodnotu inicializovanej premennej. - Opäť
condition
sa hodnotí. - Proces pokračuje, kým
condition
sa vyhodnotífalse
.
- Ak
condition
sa vyhodnotí akofalse
, slučka for sa ukončí.
pre vývojový diagram slučky
Príklad 1: C # pre slučku
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); ) ) ) )
Keď spustíme program, výstup bude:
C # pre slučku: Iterácia 1 C # pre slučku: Iterácia 2 C # pre slučku: Iterácia 3 C # pre slučku: Iterácia 4 C # pre slučku: Iterácia 5
V tomto programe
initialization
vyhlásenie jeint i=1
condition
vyhlásenie jei<=5
iterator
vyhlásenie jei++
Po spustení programu
- Najskôr sa deklaruje premenná i a inicializuje sa na 1.
- Potom
i<=5
sa vyhodnotí podmienka ( ). - Pretože sa podmienka vráti
true
, program potom vykoná telo cyklu for. Vytlačí daný riadok s iteráciou 1 (iterácia jednoducho znamená opakovanie). - Teraz
i++
sa vyhodnotí iterátor ( ). To zvyšuje hodnotu i na 2. - Podmienka (
i<=5
) sa vyhodnotí znova a na konci sa hodnota i zvýši o 1. Podmienka sa vyhodnotí natrue
prvých 5-krát. - Keď bude hodnota i 6 a podmienka bude
false
, slučka sa ukončí.
Príklad 2: pre slučku na výpočet súčtu prvých n prirodzených čísel
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); ) ) )
Keď spustíme program, výstup bude:
Súčet prvých 5 prirodzených čísel = 15
Tu sa hodnota súčtu a n inicializuje na 0, respektíve 5. Iteračná premenná i je inicializovaná na 1 a zvyšuje sa pri každej iterácii.
Vo vnútri cyklu for je hodnota súčtu zvýšená o i, tj sum = sum + i
. Smyčka for pokračuje, kým i je menšie alebo rovné n (vstup používateľa).
Pozrime sa, čo sa stane v danom programe pri každej iterácii.
Spočiatku i = 1, súčet = 0 an = 3
Pre kroky vykonania slučkyIterácia | Hodnota i | i <= 5 | Hodnota súčtu |
---|---|---|---|
1 | 1 | pravda | 0 + 1 = 1 |
2 | 2 | pravda | 1 + 2 = 3 |
3 | 3 | pravda | 3 + 3 = 6 |
4 | 4 | pravda | 6 + 4 = 10 |
5 | 5 | pravda | 10 + 5 = 15 |
6 | 6 | nepravdivé | Slučka sa končí |
Takže konečná hodnota súčtu bude 15, keď n = 5.
Viaceré výrazy vo vnútri cyklu for
Môžeme tiež použiť viac výrazov vo vnútri cyklu for. To znamená, že v rámci cyklu for môžeme mať viac ako jeden inicializačný a / alebo iteračný príkaz. Pozrime sa na príklad nižšie.
Príklad 3: pre slučku s viacnásobnou inicializáciou a výrazmi iterátora
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); ) ) ) )
Keď spustíme program, výstup bude:
i = 0 a j = 0 i = 1 a j = 1 i = 2 a j = 2
V tomto programe sme deklarovali a inicializovali dve premenné: i a j v inicializačnom príkaze.
V časti iterátora máme tiež dva výrazy. To znamená, že i aj j sa pri každej iterácii zvyšujú o 1.
Pre cyklus bez inicializácie a príkazov iterátora
Inicializácia, podmienka a príkaz iterátora sú voliteľné v cykle for. To znamená, že môžeme spustiť cyklus for aj bez týchto príkazov.
V takýchto prípadoch funguje slučka for ako slučka while. Pozrime sa na príklad nižšie.
Príklad 4: pre slučku bez inicializácie a príkazu iterátora
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++; ) ) ) )
Keď spustíme program, výstup bude:
C # pre slučku: Iterácia 1 C # pre slučku: Iterácia 2 C # pre slučku: Iterácia 3 C # pre slučku: Iterácia 4 C # pre slučku: Iterácia 5
V tomto príklade sme nepoužili príkaz inicializácie a iterátora.
Premenná i sa inicializuje nad slučkou for a jej hodnota sa zvyšuje vo vnútri tela slučky. Tento program je rovnaký ako v príklade 1.
Podobne je podmienkou aj voliteľné vyhlásenie. Pokiaľ však nepoužívame testovací výraz, cyklus for nebude testovať žiadne podmienky a bude fungovať večne (nekonečná slučka).
Nekonečné pre slučku
Ak je podmienka v cykle for vždy pravdivá, cyklus for bude fungovať navždy. Toto sa nazýva nekonečné pre slučku.
Príklad 5: Nekonečné pre slučku
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 inicializované na 1 a podmienka je i>0
. Pri každej iterácii zvyšujeme hodnotu i o 1, takže podmienka nikdy nebude false
. To spôsobí, že sa slučka bude vykonávať nekonečne dlho.
Nekonečnú slučku môžeme vytvoriť aj tak, že podmienku nahradíme medzerou. Napríklad,
for (;;) (// telo cyklu for)
alebo
for (initialization;; iterator) (// body of for loop)