Základ C# 5 – Kontrola prúdu [Flow Control]

Program, ktorý spraví vždy skoro to isté je zbytočný. Je oveľa lepšie spraviť program, ktorý sa vie rozhodovať.

Pri programovaní je jedná z najdôležitejších schopností ovládať rozhodnutia programu. Napíšem na obrazovku toto, alebo iné? K tomu je využívaný dátový typ boolean (bool). Existujú dva hlavné spôsoby, ako meniť prúd programu.

 

If-Else

Prvím z nich je If-Else, čiže Ak-Inak. Tento postup nám dovolí jednoduchým spôsobom robiť ľubovolné rozhodnutia.

If

Slovíčko If pomáha programu rozhodovať sa, či niečo spraví, alebo nie.

if (5 < 8) Console.WriteLine("Viem matematiku");

Na tomto príklade vidíte základný syntax príkazu If. Najprv napíšete kľúčové slovo if, následne do zátvoriek podmienku, za ktorej bude vykonaný kód, ktorý napíšete nakoniec. Podmienka je v skutočnosti dátový typ bool – výsledok by bol rovnaký, keby ste si vytvorili premennú bool pravda = 5 < 8; , ktorá by mala hodnotu true a následne ju použili v podmienke if (pravda) Console.WriteLine("Toto je pravda"); . Ako podmienku môžete zadať čokoľvek, čo má za výsledok pravdivostnú hodnotu a to aj zložité vzorce.

Po príkaze if je vykonaný len prvý nasledujúci príkaz. Ak chcete aby bolo vykonaných viacej príkazov, je možné to dosiahnuť ich uzavretím do bloku kódu.

if (5 < 8) Console.WriteLine("Viem matematiku."); //Toto sa spracuje ak je podmienka splnená
Console.WriteLine("Nápis"); //Toto sa spracuje vždy

if (5 < 8)
{
   Console.WriteLine("Viem matematiku."); //Toto
   Console.WriteLine("Nápis"); //aj toto sa spracuje len ak je podmienka splnená
}

Nezabudnite, že príkaz končí bodkočiarkou a nie koncom riadku.

Else

Else je slovíčok spojené s funkciou If. Ukazuje na to, čo sa má stať, ak podmienka splnená nebude.

if (moje_peniaze > 0)
{
   Console.WriteLine("Mám penaze");
   Console.WriteLine("Mám presne " + moje_peniaze + "€.");
}
else
{
   Console.WriteLine("Nemám peniaze");
   Console.WriteLine("Som dlžný " + moje_peniaze + "€.");
}

Else zabezpečuje základnú schopnosť. Ak je splnená podmienka if, vykoná sa jej kód, ak však podmienka splnená nie je, vykoná sa kód else. Slovo else nie je povinné, ale ak sa použije, musí nasledovať hneď po prvom vykonanom príkaze podmienky if.

Poznámka: Podľa nastavenia systému môže výstup pre niektoré znaky vypísať ?. V tom prípade odporúčam nastaviť pre konzolový výstup na začiatku programu : Console.OutputEncoding = Encoding.UTF8; pre aktiváciu kódovania textu, ktoré tieto znaky podporuje.

Else if

Kombinácia Else if umožňuje spraviť viacej podmienok. Je to ďalší stupeň rozhodovania.

if (moje_peniaze > 10000) Console.WriteLine("Som bohatý");
else if (moje_peniaze > 0) Console.WriteLine("Mám peniaze");
else if (moje_peniaze == 0) Console.WriteLine("Nemám peniaze");
else Console.WriteLine("Som v mínuse");

Tento kód všetko dokonale vysvetľuje. Ako prvé máme slovíčko if s podmienkou, či má premenná moje_peniaze hodnotu väčšiu alebo rovnú ako 10000. Ak áno, napíšeme text „Som bohatý“. V druhom riadku je kombinácia else if s podmienkou, či máme aspoň nejaké peniaze. V treťom riadku je ukončenie else, zabezpečujúce vykonanie príkazu v poslednej možnosti, a to ak peniaze nemáme.

Slovensky by sa to dalo napísať : „Ak mám viac ako 1000€, tak som bohatý, inak ak mám viac ako 0€, tak mám aspoň nejaké peniaze, inak ak mám 0€, tak nemám peniaze, inak som v mínuse.“

Else if opäť nieje povinné, ale musí nasledovať po prvom vykonanom príkaze podmienky if. Else if je v jednej podmienke možné použiť aj viac krát.

Vnorenie

Podmienky je možné vložiť aj do akcií podmienok.

if (moje_peniaze > 0)
{
   if (moje_peniaze > 10000) Console.WriteLine("Som bohatý");
   else Console.WriteLine("Mám peniaze");
}
else Console.WriteLine("Som v mínuse");

V tomto kóde je vykonaná kontrola, či máme viac ako 10000€ len v prípade, ak vôbec nejaké peniaze máme. Týmto je možné robiť už zložitejšie rozhodovanie, ktoré využijete pri tvorbe vašich programov (a že sa to používa často).

Switch-Case

Switch

Kombinácia Switch-Case je druhý spôsob, ako robiť rozhodnutia, v mnohom elegantnejší, ale menej použiteľný ako if. Je ho možné použiť len na presne definované podmienky. Nie je teda možné zistiť, či je niečo väčšie alebo menšie, ale je možné zistiť či je rovné.

enum Den (Pondelok, Utorok, Streda, Stvrtok, Piatok, Sobota, Nedela)

dnes = Den.Utorok;

switch (dnes)
{
   case Den.Pondelok: Console.WriteLine("Dnes je pondelok."); break;
   case Den.Utorok: Console.WriteLine("Dnes je utorok."); break;
   case Den.Streda: Console.WriteLine("Dnes je streda."); break;
   case Den.Stvrtok: Console.WriteLine("Dnes je štvrtok."); break;
   case Den.Piatok: Console.WriteLine("Dnes je piatok."); break;
   case Den.Sobota: Console.WriteLine("Dnes je sobota."); break;
   case Den.Nedela: Console.WriteLine("Dnes je nedeľa."); break;
}

Switch – Case funguje na systéme výberu správnej odpovedi. V príklade je vidno, akým systémom funguje. Na začiatku vložíme slovo switch a za ním nasleduje v zátvorkách premenná, ktorú chceme overovať. Nasleduje blok kódu, ktorý pokryje jednotlivé prípady.

Case

V tomto bloku kódu sa používa slovíčko case na označenie možnosti. Napríklad ak má premenná dnes hodnotu Pondelok, tak sa vykoná príkaz za case Den.Pondelok:. Každý case končí dvojbodkou a posledný príkaz musí byť break, ktorý značí koniec možnosti. Narozdiel od if-else nemusí byť viacero príkazov uzavretých v bloku kódu, pretože je jasne definovaný začiatok dvojbodkou a koniec slovom break.

Default

Default je špeciálne slovíčko používane namiesto case, pokiaľ by sme chceli dať programu možnosť čo robiť, ak ani jedna z podmienok nieje splnená. Je to také else pre switch.

switch (dnes)
{
   case Den.Sobota: Console.WriteLine("Dnes je sobota."); break;
   case Den.Nedela: Console.WriteLine("Dnes je nedeľa."); break;
   default: Console.WriteLine("Je pracovný týždeň."); break;
}

V tomto prípade je použité, ak nieje ani sobota ani nedeľa, vypíše sa, že je pracovný týždeň.

Toto je na dnešný diel všetko a nabudúce sa pozrieme na Cykly/Slučky.

4 názory na “Základ C# 5 – Kontrola prúdu [Flow Control]”

  1. Máš tam viac chýb, nemyslím gramatické, tých je mnoho.
    Najzávažnejšia:
    „Slovensky by sa to dalo napísať : „Ak mám viac ako 1000€, tak som bohatý, inak ak mám viac ako 0€, tak mám aspoň nejaké peniaze, inak som v mínuse.““
    Nie si v mínuse, ale máš 0 EUR alebo si v mínuse. Je tam podmienka >0, t. j. negácia je: rovné 0 alebo menšie ako 0.

  2. Mňa trochu zmiatlo znamienko <
    Ak sú moje_peniaze < 0 tak nemám peniaze.
    A ešte sa mi stalo keď som si to skúšal, že mi program miesto znaku € vypísal ?
    Neviete mi poradiť čím to je?

    1. Máte pravdu, malo tam byť znamienko >. Je to opravené.
      Po preskúmaní problému s ? som zistil, že v novších verziách systému windows je nastavené ako predvolené kódovanie textu ASCII, ktoré nepodporuje znak €, pridal som o tom poznámku. Dá sa to vyriešiť použitím kódu „Console.OutputEncoding = Encoding.UTF8;“ pred vypísaním textu, ktorý prepne výstup na kódovanie, ktoré tento znak podporuje.

Pridajte Komentár

Vaša e-mailová adresa nebude zverejnená.

Scroll to Top