Programování
Řídící strukutury
Řídicí struktura je v informatice konstrukce pro zápis počítačového programu. Řídicí struktury jsou používány ve vyšších programovacích a skriptovacích jazycích. Rozhodují o dalším provádění programu: větví jeho běh, vytváří cykly nebo jinak mění běh programu.
Dělí se:
Dělí se:
Větvené
IF podmínka
Podmínky zapisujeme pomocí klíčového slova if, za kterým
následuje logický výraz . Pokud je výraz pravdivý, provede se následující
příkaz. Pokud ne, následující příkaz se přeskočí a pokračuje se až
pod ním.Do if píšeme něco co se jmenuje Boolean expression, což je výraz, který může být pravdivý nebo nepravdivý.
If se bude vyskytovat dále i v cyklech.
== | rovná se |
!= | nerovná se |
> | větší než |
< | menší než |
>= | větší nebo rovno |
<= | menší nebo rovno |
if (Boolean expression (podmínka))
{
// blok kodu, který se vykoná
}
Pokud se podmínka nesplní, můžeme použít klíčové slovo else, které se vykoná, pokud se podmínka nesplní.
if (Boolean expression (podmínka))
{
// blok kodu, který se vykoná
}
else
{
// blok kodu, který se vykoná, pokud se podmínka nesplní
}
Pokud chceme napsat více podmínek, můžeme použít klíčové slovo else if, které se vykoná, pokud se předchozí podmínka nesplní.
if (Boolean expression (podmínka))
{
// blok kodu, který se vykoná
}
else if(Boolean expression (podmínka))
{
// blok kodu, který se vykoná, pokud se podmínka nesplní, ale jiná ano
}
else
{
// blok kodu, který se vykoná, pokud se ani jedna podmínka nesplní
}
Tímto způsobem můžeme zapsat kolik chceme podmínek.
Fun fact
Celý dialog postav ve hře Undertale je udělaný else if a switch podmínkami. Takže pokud si myslíte, že váš kod stojí za nic. Tahle hra je jedná z nejlepších her všech dob.
Zdroj: reddit
Více informací: itnetwork
Nebo anglicky: w3schools
Switch
Konstrukce switch je převzatá z jazyka C (jako většina gramatiky C#). Umožňuje
nám zjednodušit (relativně) zápis více podmínek pod sebou.Switch je vyjimečný v tom, že muže porovnávat 2 typy
- Relační vzor - porovnání výsledku výrazu s konstantou.
- Konstantní vzor - Otestujte, jestli se výsledek výrazu rovná konstantě.
DisplayMeasurement(-4); // Output: Measured value is -4; too low.
DisplayMeasurement(5); // Output: Measured value is 5.
DisplayMeasurement(30); // Output: Measured value is 30; too high.
DisplayMeasurement(double.NaN); // Output: Failed measurement.
void DisplayMeasurement(double measurement)
{
switch (measurement)
{
case < 0.0: // Jeden případ, který existuje
Console.WriteLine($"Measured value is {measurement}; too low.");
break;
case > 15.0:
Console.WriteLine($"Measured value is {measurement}; too high.");
break;
case double.NaN:
Console.WriteLine("Failed measurement.");
break;
default: // Pokud nesplní ani jednu podmínku, tak se provede tohle
Console.WriteLine($"Measured value is {measurement}.");
break;
}
}
Je možné spojit více case dohromady, pokud chceme, aby měli stejný výsledek.
DisplayMeasurement(-4); // Output: Measured value is -4; out of an acceptable range.
DisplayMeasurement(50); // Output: Measured value is 50.
DisplayMeasurement(132); // Output: Measured value is 132; out of an acceptable range.
void DisplayMeasurement(int measurement)
{
switch (measurement)
{
case < 0:
case > 100:
Console.WriteLine($"Measured value is {measurement}; out of an acceptable range.");
break;
default:
Console.WriteLine($"Measured value is {measurement}.");
break;
}
}
[Pokročilé]Lze porovnávat i více prvnků najednou, avšak zápis je tročku složitější.
DisplayMeasurements(3, 4); // Output: First measurement is 3, second measurement is 4.
DisplayMeasurements(5, 5); // Output: Both measurements are valid and equal to 5.
void DisplayMeasurements(int a, int b)
{
switch ((a, b))
{
case (> 0, > 0) when a == b:
Console.WriteLine($"Both measurements are valid and equal to {a}.");
break;
case (> 0, > 0):
Console.WriteLine($"First measurement is {a}, second measurement is {b}.");
break;
default:
Console.WriteLine("One or both measurements are not valid.");
break;
}
}
Více informací: learn.microsoft
Cykly
Jak již slovo cyklus napoví, něco se bude opakovat. Když chceme v
programu něco udělat 100x, jistě nebudeme psát pod sebe 100x ten samý kód,
ale vložíme ho do cyklu. Cyklů máme několik druhů.
For
Tento cyklus má stanovený pevný počet opakování a
hlavně obsahuje tzv.řídící proměnnou (celočíselnou) , ve které se
postupně během běhu cyklu mění hodnoty. Syntaxe (zápis) cyklu for je
následující:
for (promenna; podminka; prikaz)
{
//Blok kodu, který se vykona
}
- promenna - je řídící proměnná cyklu, které nastavíme počáteční hodnotu (nejčastěji 0, protože v programování vše začíná od nuly, nikoli od jedničky). Např. tedy int i = 0. Samozřejmě si můžeme proměnnou i vytvořit někde nad tím a už nemusíme psát slovíčko int, bývá ale zvykem používat právě int i.
- podmínka - je podmínka vykonání dalšího kroku cyklu. Jakmile nebude platit, cyklus se ukončí . Podmínka může být např (i < 10). Boolean expression
- příkaz - nám říká, co se má v každém kroku s řídící proměnnou stát. Tedy zda se má zvýšit nebo snížit. K tomu využijeme speciálních operátorů ++ a --, ty samozřejmě můžete používat i úplně běžně mimo cyklus, slouží ke zvýšení nebo snížení proměnné o 1.
Více informací: ItNetwork
While
Cyklus while funguje jinak, jednoduše opakuje příkazy v
bloku, dokud platí podmínka. Syntaxe cyklu je následující:
while (podminka)
{
//Blok kodu, který se vykona
}
Cyklus for je vlastně speciální případ
while cyklu. Cyklus while se ale používá na trochu
jiné věci, často máme v jeho podmínce např. metodu vracející logickou
hodnotu true/false. Původní příklad z
for cyklu bychom udělali pomocí while
následovně:
int i = 1;
while (i <= 10)
{
Console.Write("{0} ", i);
i++;
}
Console.ReadKey();
Lze to i opačne, z for na while.
for (;podminka;)
{
//Blok kodu, který se vykona
}
Více informací: ItNetwork
Zdroje:
-
Celkově - https://editit.wordpress.com/2016/05/05/4-programovani-ridici-struktury/
-
If - https://en.wikipedia.org/wiki/Boolean_expression
- https://www.itnetwork.cz/cecko/zaklady/cecko-tutroial-podminky-vetveni
- https://www.itnetwork.cz/csharp/zaklady/c-sharp-tutorial-podminky-vetveni-if-switch
-
Switch - https://learn.microsoft.com/cs-cz/dotnet/csharp/language-reference/statements/selection-statements
-
Cykly - https://www.itnetwork.cz/csharp/zaklady/c-sharp-tutorial-cykly-for-while-do-while