Hledáš dárek, který neskončí v koši? Nyní 90 % extra kreditů ZDARMA s promo kódem PREKVAPENI90. Zjisti více:
NOVINKA: Staň se datovým analytikem od 0 Kč a získej jistotu práce, lepší plat a nové kariérní možnosti. Více informací:

Diskuze – Lekce 6 - Podmínky (větvení) v C# .NET

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Nejnovější komentáře jsou na konci poslední stránky.
Avatar
Ivo Hury
Člen
Avatar
Ivo Hury:9.4.2024 3:12

Nechápu logiku kódu u prvního příkladu funkce switch (je to funkce?). Proč testuji správnost zadání operátoru 1-4 na konci kódu? Proč není výstup z této podmínky rovnou návazný na vykonání funkce switch?

if ((volba > 0) && (volba < 5))
{
    switch (volba)
 {
    case 1:
        vysledek = a + b;
        break;
    case 2:
        vysledek = a - b;
        break;
    case 3:
        vysledek = a * b;
        break;
    case 4:
        vysledek = a / b;
        break;
 }
    Console.WriteLine("Výsledek: {0}", vysledek);
}
else
    Console.WriteLine("Neplatná volba");

Dokonce bych se nebál rovnou využít default namísto následného else, kde předpokládám vykonání čehokoliv jiného, co nespadá do podmínky 1-4.

Editováno
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Ivo Hury
DarkCoder:9.4.2024 5:18

Switch není funkce, je to řídící příkaz.

Ano, testování volby na platný rozsah nabídek menu na konci je nevhodný. Při neplatné volbě se zbytečně prochází celý switch, což je neefektivní.

Použití default oproti else není vhodné. Pokud by kontrola rozsahu volby předtím nebyla, pak se zbytečně provádí průchod celým switch. Pokud by kontrola rozsahu volby předtím byla, pak sekce default se nikdy neprovede.

Test platné volby na začátku a použití if-else je nejvhodnější řešení.

Odpovědět
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
DarkCoder
Člen
Avatar
DarkCoder:2. prosince 13:05

Pár připomínek k článku:

Logická negace ! není relační operátor ale logický unární operátor.

Podmínky zapisujeme pomocí klíčového slova if, za kterým následuje logický výraz.

Tohle je nepřesné, správně je: if očekává výraz, který lze vyhodnotit jako bool.

Odmocnina lze i z 0. Podmínka by tedy měla být a >= 0

Příklad s přepínáním 0/1 lze řešit lépe nežli pomocí if.

a = 1 - a;

nebo pomocí bitové operace

a ^= 1;

Ale jako upozornění na to chybný zápis je to ok.

V odstavci switch, chybí ošetření dělení 0.

Zabývat se v odstavci pro switch deklarací a inicializací proměnné je akorát odbočování od tématu. Tohle je třeba řešit jinde.

Naopak chybí řádné vysvětlení částí konstrukce switch.

Příkaz break rozhodně nenahrazuje blok {}. jeho funkce je akorát ukončit příslušný case. V konstrukci switch každý case vymezuje svůj vlastní blok.

Switch expression je dnes preferovaný způsob zápisu oproti staršímu switch.

U příkladu s teplotou dochází k překrývání patternů.

ukázka, kde se nahrazuje default pomocí _ není správně. Správně by mělo být:

_ => "Nevalidní hodnota"
Odpovědět
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Nejnovější komentáře jsou na konci poslední stránky.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 173.