Lekce 5: Cykly v C# – For, While a Do-While smyčky
Programování je často o opakování úkolů, což může být únavné, pokud by se muselo psát stejné části kódu opakovaně. Naštěstí v programovacím jazyce C# existují nástroje, které nám pomáhají efektivně opakovat operace – tyto nástroje nazýváme cykly nebo smyčky. Cykly umožňují vykonávat určitý blok kódu několikrát, dokud není splněna nějaká podmínka. V této lekci se zaměříme na tři hlavní typy cyklů v C#: for, while a do-while smyčky.
Proč potřebujeme cykly?
Cykly nám umožňují provádět určité akce opakovaně bez nutnosti psát stále stejný kód. Představme si situaci, kdy bychom měli vypisovat čísla od 1 do 100. Bez cyklů bychom museli psát 100 řádků kódu, což by bylo neefektivní a náchylné k chybám. Pomocí cyklů můžeme tento úkol zjednodušit na několik řádků, přičemž program provede stejnou akci s každým opakováním.
Typy cyklů v C
V C# máme k dispozici několik typů cyklů, které se používají podle toho, jak chceme cyklus řídit. Mezi hlavní patří:
- For smyčka – Používá se, když víme, kolikrát chceme cyklus opakovat.
- While smyčka – Používá se, když nevíme přesný počet opakování a chceme cyklus opakovat, dokud je splněna nějaká podmínka.
- Do-While smyčka – Podobná smyčce
while
, ale zajistí, že kód se provede alespoň jednou, i když podmínka není splněna.
Nyní si každý z těchto typů cyklů rozebereme podrobněji.
1. For smyčka
Smyčka for je pravděpodobně nejčastěji používaný typ cyklu. Používá se v situacích, kdy víme, kolikrát chceme smyčku opakovat. Typicky se používá pro procházení posloupností, jako jsou pole nebo seznamy, nebo pro jednoduché opakování pevně stanoveného počtu iterací.
Syntaxe smyčky for
:
for (inicializace; podmínka; aktualizace)
{
// Blok kódu, který se opakuje
}
- Inicializace: Tento krok se provede jednou, na začátku cyklu, a obvykle se v něm nastaví počáteční hodnota počítadla (např.
int i = 0
). - Podmínka: Smyčka se bude opakovat, dokud je tato podmínka splněna (tj. true). Pokud podmínka není splněna (tj. false), smyčka se ukončí.
- Aktualizace: Tento krok se provede po každé iteraci smyčky. Obvykle se zde upravuje hodnota počítadla (např.
i++
).
Příklad:
for (int i = 1; i <= 5; i++)
{
Console.WriteLine("Iterace číslo: " + i);
}
V tomto příkladu se smyčka for
spustí 5krát. Na začátku se nastaví proměnná i
na 1. Smyčka se bude opakovat, dokud je i
menší nebo rovno 5. Po každé iteraci se hodnota i
zvýší o 1. Výstupem tohoto kódu bude:
Iterace číslo: 1
Iterace číslo: 2
Iterace číslo: 3
Iterace číslo: 4
Iterace číslo: 5
2. While smyčka
Smyčka while je vhodná pro situace, kdy nevíme předem, kolikrát se smyčka bude opakovat, ale víme, že chceme pokračovat, dokud je splněna určitá podmínka. Smyčka while
kontroluje podmínku před každým opakováním, což znamená, že pokud je podmínka na začátku nepravdivá, smyčka se nemusí vykonat vůbec.
Syntaxe smyčky while
:
while (podmínka)
{
// Blok kódu, který se opakuje, dokud je podmínka true
}
- Podmínka: Smyčka se bude opakovat, dokud je podmínka pravdivá (tj. true). Pokud je podmínka nepravdivá (tj. false), smyčka se ukončí.
Příklad:
int i = 1;
while (i <= 5)
{
Console.WriteLine("Iterace číslo: " + i);
i++;
}
V tomto příkladu začínáme s proměnnou i
nastavenou na hodnotu 1. Smyčka se bude opakovat, dokud je i
menší nebo rovno 5. Po každé iteraci se hodnota i
zvýší o 1. Výstupem bude opět:
Iterace číslo: 1
Iterace číslo: 2
Iterace číslo: 3
Iterace číslo: 4
Iterace číslo: 5
3. Do-While smyčka
Smyčka do-while je velmi podobná smyčce while
, ale s jedním důležitým rozdílem: smyčka do-while
vždy provede svůj blok kódu alespoň jednou, i když je podmínka na začátku nepravdivá. Kontrola podmínky se totiž provádí až po první iteraci.
Syntaxe smyčky do-while
:
do
{
// Blok kódu, který se opakuje
}
while (podmínka);
- Podmínka: Smyčka se opakuje, dokud je podmínka pravdivá (tj. true). Podmínka se kontroluje po provedení kódu, což znamená, že smyčka proběhne minimálně jednou.
Příklad:
int i = 1;
do
{
Console.WriteLine("Iterace číslo: " + i);
i++;
}
while (i <= 5);
Tento kód je podobný příkladu s while
, ale v tomto případě se kód uvnitř smyčky provede alespoň jednou, bez ohledu na to, zda je podmínka pravdivá. Výstup bude stejný:
Iterace číslo: 1
Iterace číslo: 2
Iterace číslo: 3
Iterace číslo: 4
Iterace číslo: 5
Kdybychom ale změnili počáteční hodnotu proměnné i
na 6, smyčka by se vykonala jen jednou, protože podmínka se kontroluje až po první iteraci:
int i = 6;
do
{
Console.WriteLine("Iterace číslo: " + i);
i++;
}
while (i <= 5);
V tomto případě by výstup byl:
Iterace číslo: 6
4. Zanořené cykly
V některých případech je třeba použít zanořené cykly – to znamená použít jeden cyklus uvnitř druhého. To je velmi užitečné například při práci s vícerozměrnými poli nebo při generování kombinací dat.
Příklad zanořených cyklů:
for (int i = 1; i <= 3; i++)
{
for (int j = 1; j <= 2; j++)
{
Console.WriteLine("i = " + i + ", j = " + j);
}
}
Tento kód obsahuje dva cykly for
– vnější a vnitřní. Vnější cyklus běží třikrát (pro i
od 1 do 3) a pro každou hodnotu i
proběhne vnitřní cyklus dvakrát (pro j
od 1 do 2). Výstup bude následující:
i = 1, j = 1
i =
1, j = 2
i = 2, j = 1
i = 2, j = 2
i = 3, j = 1
i = 3, j = 2
Zanořené cykly jsou výkonný nástroj, ale je důležité je používat opatrně, protože mohou zvýšit složitost a výpočetní náročnost programu.
5. Ukončení a pokračování v cyklech: Break a Continue
V některých případech je třeba předčasně ukončit smyčku nebo přeskočit určité iterace. K tomu slouží příkazy break a continue.
- Break: Ukončí cyklus úplně a přesune tok programu za smyčku.
- Continue: Přeskočí zbytek aktuální iterace a pokračuje na další iteraci.
Příklad s příkazem break
:
for (int i = 1; i <= 5; i++)
{
if (i == 3)
{
break; // Ukončí smyčku, jakmile i je rovno 3
}
Console.WriteLine(i);
}
Výstup:
1
2
Příklad s příkazem continue
:
for (int i = 1; i <= 5; i++)
{
if (i == 3)
{
continue; // Přeskočí aktuální iteraci, když i je rovno 3
}
Console.WriteLine(i);
}
Výstup:
1
2
4
5
Závěr
Cykly jsou základním nástrojem pro opakování operací v programování. V C# máme několik typů cyklů – for
, while
a do-while
– které umožňují opakovaně provádět bloky kódu na základě určitých podmínek. Kromě základních cyklů jsme se seznámili s jejich zanořováním a naučili se, jak pomocí příkazů break
a continue
kontrolovat průběh smyček.
Správné používání cyklů je klíčové pro efektivní psaní kódu, zejména při práci s větším množstvím dat nebo při opakování složitých operací. V dalších lekcích budeme na tyto základy navazovat a podíváme se na pokročilejší techniky v C# pro zpracování dat.