Seznámení s podmíněnou logikou pomocí příkazů větve a smyčky
V tomto kurzu se naučíte psát kód, který zkoumá proměnné a mění cestu provádění na základě těchto proměnných. V prohlížeči interaktivně napíšete kód v C# a zobrazíte výsledky kompilace a spuštění kódu. Tento kurz obsahuje řadu lekcí, které prozkoumávají konstrukty větvení a smyček v jazyce C#. V těchto lekcích se seznámíte se základy jazyka C#.
Tip
Pokud chcete vložit fragment kódu do detailního režimu, měli byste použít klávesovou zkratku (Ctrl + v nebo cmd + v).
Rozhodování pomocí příkazu if
Spusťte v interaktivním okně následující kód. Vyberte tlačítko Pro zadání detailního režimu . Potom do interaktivního okna zadejte následující blok kódu a vyberte Spustit:
int a = 5;
int b = 6;
if (a + b > 10)
Console.WriteLine("The answer is greater than 10.");
Pokud to používáte ve svém prostředí, měli byste postupovat podle pokynů pro místní verzi .
Upravte deklaraci b
, aby součet byl menší než 10:
int b = 3;
Znovu vyberte tlačítko Spustit. Protože odpověď je menší než 10, nic se nevytiskne. Testovaná podmínka není splněná. Nemáte žádný kód, který by bylo možné provést, protože jste zatím napsali jenom jednu z možných větví příkazu if
: větev pro splnění podmínky.
Tip
Když se budete učit pracovat s C# (nebo každým jiným programovacím jazykem), budete při psaní kódu dělat chyby. Kompilátor tyto chyby odhalí a upozorní vás na ně. Pokud výstup obsahuje chybové zprávy, pečlivě si prohlédněte příklad kódu a kód v interaktivním okně, abyste zjistili, co je potřeba opravit. Toto cvičení vám pomůže seznámit se se strukturou kódu v C#.
Tento první příklad ukazuje sílu příkazu if
a logických typů. Logická proměnná může mít jednu z dvou hodnot: true
nebo false
. C# definuje pro logické proměnné speciální typ bool
. Příkaz if
kontroluje hodnotu typu bool
. Pokud je tato hodnota true
, provede se příkaz následující za if
. Jinak se přeskočí.
Tento proces kontroly podmínek a provádění příkazů na základě těchto podmínek je účinný. Pojďme se na to podívat blíž.
Spolupráce if a else
Chcete-li ve větvích True a False provést různý kód, vytvoříte větev else
, která se provede, když podmínka není splněná. Vyzkoušejte následující:
int a = 5;
int b = 3;
if (a + b > 10)
Console.WriteLine("The answer is greater than 10");
else
Console.WriteLine("The answer is not greater than 10");
Příkaz následující za klíčovým slovem else
se provede jen tehdy, když má testovaná podmínka hodnotu false
. Kombinace if
a else
s logickými podmínkami poskytuje veškerou sílu, kterou potřebujete.
Důležité
Důvodem odsazení pod příkazy if
a else
je snadnější čtení pro uživatele.
Jazyk C# nezachází s odsazením ani prázdným znakem tak významné.
Příkaz následující za klíčovým slovem if
nebo else
se provede na základě podmínky. Všechny ukázky v tomto kurzu se řídí běžným postupem odsazení řádků na základě toku řízení příkazů.
Vzhledem k tomu, že odsazení není významné, musíte použít {
a }
určit, kdy má být více než jeden příkaz součástí bloku, který se spouští podmíněně. Programátoři v C# obvykle používají tyto složené závorky pro všechny klauzule if
a else
. Následující příklad je stejný jako to, co jste vytvořili. Zkuste to.
int a = 5;
int b = 3;
if (a + b > 10)
{
Console.WriteLine("The answer is greater than 10");
}
else
{
Console.WriteLine("The answer is not greater than 10");
}
Tip
Ve zbytku tohoto kurzu obsahují ukázky kódu všechny složené závorky podle přijatých postupů.
Můžete testovat složitější podmínky:
int a = 5;
int b = 3;
int c = 4;
if ((a + b + c > 10) && (a == b))
{
Console.WriteLine("The answer is greater than 10");
Console.WriteLine("And the first number is equal to the second");
}
else
{
Console.WriteLine("The answer is not greater than 10");
Console.WriteLine("Or the first number is not equal to the second");
}
Symbol ==
testuje rovnost. Pomocí ==
rozlišující test rovnosti od přiřazení, které jste viděli .a = 5
Zápis &&
představuje „a zároveň“. To znamená, že když se má provést větev True, musí být splněny obě podmínky. Tyto příklady také ukazují, že můžete mít v každé podmíněné větvi víc příkazů, pokud je uzavřete mezi {
a }
.
Můžete také použít ||
k reprezentaci "nebo":
int a = 5;
int b = 3;
int c = 4;
if ((a + b + c > 10) || (a == b))
{
Console.WriteLine("The answer is greater than 10");
Console.WriteLine("Or the first number is equal to the second");
}
else
{
Console.WriteLine("The answer is not greater than 10");
Console.WriteLine("And the first number is not equal to the second");
}
Upravte hodnoty , a
b
a c
přepínání mezi &&
a ||
prozkoumat. Získáte větší přehled o tom, jak &&
fungují operátory a ||
operátory.
Použití smyček k opakování operací
Dalším důležitým konceptem pro vytváření větších programů jsou smyčky. Smyčky použijete k opakování příkazů, které chcete provést víckrát než jednou. Vyzkoušejte tento kód v interaktivním okně:
int counter = 0;
while (counter < 10)
{
Console.WriteLine($"Hello World! The counter is {counter}");
counter++;
}
Příkaz while
zkontroluje podmínku a provede příkaz následující za while
. Bude opakovaně kontrolovat podmínku a provádět příkaz, dokud bude podmínka splněna.
V tomto příkladu je ještě jeden nový operátor. Zápis ++
za proměnnou counter
je operátor inkrementace. Přičte 1 k hodnotě čítače a uloží hodnotu do proměnné counter.
Důležité
Ověřte, že podmínky smyčky while
se při spuštění kódu přepne na false. Jinak vytvoříte nekonečnou smyčku, ve které program nikdy neskončí. To si nebudeme ukazovat, protože by vypršel časový limit modulu, který spouští váš kód, a neviděli byste žádný výstup.
Smyčka while
otestuje podmínku před spuštěním kódu, který následuje za while
. Smyčka do
... while
nejdřív spustí kód a potom zkontrolujte tuto podmínku. Vypadá takto:
int counter = 0;
do
{
Console.WriteLine($"Hello World! The counter is {counter}");
counter++;
} while (counter < 10);
Tato smyčka do
a dřívější smyčka while
fungují stejně.
Teď přejdeme k poslednímu příkazu smyčky.
Práce se smyčkou for
Dalím běžným příkazem smyčky, se kterým se setkáte v kódu C#, je smyčka for
. Vyzkoušejte tento kód v interaktivním okně:
for (int counter = 0; counter < 10; counter++)
{
Console.WriteLine($"Hello World! The counter is {counter}");
}
Dělá to samé jako smyčky while
a do
, které jste už použili. Příkaz for
má tři části, které řídí jeho fungování.
První částí je inicializační výraz for: int counter = 0;
deklaruje, že counter
je proměnná smyčky a nastavuje její počáteční hodnotu na 0
.
Prostřední část je podmínka for: counter < 10
deklaruje, že tato smyčka for
se bude provádět tak slouho, dokud bude hodnota counter menší než 10.
Poslední část je iterátor for: counter++
určuje, jak upravit proměnnou smyčky po provedení bloku následujícího za příkazem for
. V tomto případě určuje, že counter
se má po každém provedení bloku zvýšit o 1.
Zkuste si s touto ukázkou zaexperimentovat. Vyzkoušejte všechny následující možnosti:
- Změňte inicializační výraz, aby začínal jinou hodnotou.
- Změňte podmínku tak, aby se zastavila při jiné hodnotě.
Až skončíte, přejdeme k tomu, abyste si vyzkoušeli, co jste se naučili, a napsali kus kódu sami.
Existuje jeden další příkaz smyčky, který není popsaný v tomto kurzu: příkaz foreach
. Příkaz foreach
opakuje svůj příkaz pro každou položku v posloupnosti položek. Nejčastěji se používá s kolekcemi, takže se probírá v dalším kurzu.
Vytvořené vnořené smyčky
A while
, do
nebo for
smyčka lze vnořit do jiné smyčky a vytvořit matici pomocí kombinace každé položky ve vnější smyčce s každou položkou ve vnitřní smyčce. Pojďme to udělat, abychom vytvořili sadu alfanumerických párů představujících řádky a sloupce.
Jedna for
smyčka může generovat řádky:
for (int row = 1; row < 11; row++)
{
Console.WriteLine($"The row is {row}");
}
Další smyčka může vygenerovat sloupce:
for (char column = 'a'; column < 'k'; column++)
{
Console.WriteLine($"The column is {column}");
}
Do druhé smyčky můžete vnořit páry:
for (int row = 1; row < 11; row++)
{
for (char column = 'a'; column < 'k'; column++)
{
Console.WriteLine($"The cell is ({row}, {column})");
}
}
Vidíte, že vnější smyčka se pro každé úplné spuštění vnitřní smyčky jednou zvýší. Otočte vnoření řádků a sloupců a prohlédněte si změny sami.
Kombinace větví a smyček
Teď když jste viděli příkaz if
a konstruktory cyklů v jazyce C#, zkuste, jestli dokážete v jazyce C# napsat kód, který zjistí součet všech celých čísel od 1 do 20, která jsou dělitelná 3. Tady je několik tipů:
- Operátor
%
vrací zbytek po operaci dělení. - Příkaz
if
poskytuje podmínku pro zjištění, jestli konkrétní číslo má být součástí tohoto součtu. - Smyčka
for
pomůže zopakovat sérii kroků pro všechna čísla od 1 do 20.
Vyzkoušejte si to sami. A potom se podívejte, jak jste si vedli. Jako výsledek by vám mělo vyjít 63.
Dokončení výzvy
Napsali jste kód podobný tomuto?
int sum = 0;
for (int number = 1; number < 21; number++)
{
if (number % 3 == 0)
{
sum = sum + number;
}
}
Console.WriteLine($"The sum is {sum}");
Gratulujeme!
Dokončili jste interaktivní kurz "větve a smyčky". Výběrem odkazu na kolekci seznamů níže můžete zahájit další interaktivní kurz nebo můžete navštívit web .NET a stáhnout sadu .NET SDK, vytvořit projekt na počítači a pokračovat v kódování. V části Další kroky se vrátíte k těmto kurzům.
Další informace o těchto konceptech najdete v těchto článcích:
Máte s touto částí nějaké problémy? Pokud ano, dejte nám prosím vědět, abychom tuto část mohli vylepšit.