Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 6. diel - Podmienky (vetvenia) v C# .NET

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej 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.

Editované
Avatar
DarkCoder
Člen
Avatar
Odpovedá 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í.

Odpovedať
"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. decembra 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"
Odpovedať
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 3 správy z 173.