V dnešní lekci se dozvíte základní syntaxi příkazů řízení toku programu: break, continue, goto, if - else a switch.
break
Příkaz 'break' umožňuje vyskočit z právě probíhaného cyklu 'while' nebo 'for' a z příkazu 'switch'. Následující příklad ukazuje možné použití příkazu 'break'. Na výstupu vrátí program čísla od 0 do 4.
int a = 0;
while (true)
{
System.Console.WriteLine(a);
a++;
if (a == 5)
break;
}
continue
Příkaz continue může být použit v jakémkoli druhu cyklu a pokud je proveden, přeruší právě probíhanou smyčku cyklu a přesune se na další. Více můžete vidět v následujícm příkladu, který spočítá počet všech čísel od 0 do 100, která nejsou dělitelná 7.
int y = 0;
for (int x=1; x<101; x++)
{
if ((x % 7) == 0)
continue;
y++;
}
System.Console.WriteLine(y);
goto
Příkaz goto se používá ke skoku na jiné místo v programu, které je označeno návěštím. Také se používá u příkazu switch, který je popsán níže. Příkaz goto můžeme použít ke konstrukci cyklu, jak je ukázáno v následujcím příkladu (ovšem toto použití není doporučeno).
int a = 0;
start:
System.Console.WriteLine(a);
a++;
if (a < 5)
goto start;
if - else
Příkaz 'if-else' se použije pro dělení programu do dvou větví na základě logické podmínky. Pokud je podmínka vyhodnocena jako TRUE, provede se větev za if klauzulí. Pokud je podmínka vyhodnocena jako FALSE, provede se větev programu za klausulí else. Celá větev včetně klíčového slova else je volitelná a pokud ji programátor nepotřebuje, nemusí ji uvádět. Následující příklad ukáže jednoduché použití if - else konstrukce:
if (a == 5)
System.Console.WriteLine("A is 5");
else
System.Console.WriteLine("A is not 5");
Příkaz if může být nahrazen pomocí operátoru podmínky, která vrací jednu ze dvou hodnot v závislosti na podmínce. V příkladu můžete vidět použití operátoru podmínky. Pokud je proměnná myBoolean TRUE, uloží se do proměnné 'i' číslo 1, pokud je FALSE, uloží se do 'i' číslo 0.
int i = (myBoolean) ? 1 : 0 ;
Příkaz 'if' z předchozího příkladu by proto mohl být přepsán použitím operátoru podmínky následovně:
System.Console.WriteLine( a==5 ? "A is 5" : "A is not 5");
switch - default
Příkaz 'switch' nám slouží k větvení programu do více větví. Mohli bychom použít několikanásobné použití příkazu 'if-else', ale to by nebylo přehledné a elegantní jako použití příkazu 'switch'. Následující příklad vrátí 'a>1 and a>0', pokud 'a' je rovno 2. Pokud se rovná 1, bude na výstupu 'a>0' a pokud je proměnná 'a' cokoliv jiného, bude na výstupu oznámení 'a is not set'.
switch(a)
{
case 2:
Console.WriteLine("a>1 and ");
goto case 1;
case 1:
Console.WriteLine("a>0");
break;
default:
Console.WriteLine("a is not set");
break;
}
Každá větev za klíčovým slovem 'case', která obsahuje nějaký příkaz nebo blok příkazů, musí být zakončená příkazem break;
, goto case k;
( kde k je označení jiného case) nebo goto default;
. Pokud za 'case' není žádný příkaz, nemusí se výše zmíněné příkazy použít.
Následující příkaz ilustruje popsané pravidlo chování příkazu switch v jazyku C#. Na výstupu bude "a>0" pro vstup 1 i pro vstup 2.
switch(a)
{
case 1:
case 2:
Console.WriteLine("a>0");
break;
default:
Console.WriteLine("a is not set");
break;
}