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 – 14. diel - Cykly v C# .NET druhýkrát - do-while, break a continue

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
David Novák
Tvůrce
Avatar
Odpovedá na Jaroslav Drobek
David Novák:28.9.2023 6:25

Ahoj Jaroslave, děkujeme za podnět. Chybu jsme opravili.

Avatar
Jindřich Kopáček:28.1.2024 16:38

článek v pořádku, jen mám jiný názor na break v cyklu. Přijde mi užitečný, jepší jjak na každý prd extra metoda.

Avatar
DarkCoder
Člen
Avatar
DarkCoder:28.1.2024 17:13

Na úvod by bylo dobré podotknout, že dnešní lekce obsahuje méně používané praktiky a slouží hlavně k tomu, aby vás nepřekvapily v cizím kódu. Není příliš důležité, abyste je sami uměli používat.

To doufám nemyslíte vážně.

Příkaz break se v praxi často nahrazuje příkazem return za předpokladu, že je kód v naší vlastní metodě.

Příkaz return rozhodně nesupluje příkaz break!

Odpovedať
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Pavla Sklenářová:17.10.2024 17:23

Rozdíl mezi while a do-while stručně a jasně v přiloženém obrázku :-)

Odpovedať
Nepropadejte panice.
Avatar
Michal Marek
Člen
Avatar
Michal Marek:26.11.2024 14:06

Příklad na continue funguje stejně i bez !negace a continue, tudíž je tam continue zbytečně.

Avatar
DarkCoder
Člen
Avatar
Odpovedá na Michal Marek
DarkCoder:26.11.2024 15:36
using System;

class Program
{
    static void Main()
    {
        string cislaRetezec = "10,50,abcd,30,9";
        string[] cislaPole = cislaRetezec.Split(',');
        int soucet = 0;

        foreach (string cislo in cislaPole)
        {
            int celeCislo;

            if (!int.TryParse(cislo, out celeCislo))
                continue;

            soucet += celeCislo;
        }

        Console.WriteLine("Soucet je: " + soucet);
    }
}

Pokud zakomentuješ řádky:

if (!int.TryParse(cislo, out celeCislo))
    continue;

dojde k běhové chybě

Odpovedať
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Jan Ráž
Člen
Avatar
Jan Ráž:22. januára 15:36

Toto upozornění:"Ač dnešní lekce obsahovala standardní gramatiku C# .NET pro
cykly, z nových konstrukcí používejte pouze
do-while a continue. Přechodně ještě
můžete používat break, než se dostaneme k objektům." je docela matoucí. Evokuje, že v případě použití OOP bychom neměli používat break. Přitom i při OOP je spoustu situací, kdy není vhodné pro každý "vyhledávací" cyklus dělat samostatnou metodu končící return;.

Avatar
DarkCoder
Člen
Avatar
Odpovedá na Jan Ráž
DarkCoder:22. januára 16:19

Téměř všechny tipy v této lekci jsou dosti mimo mísu. Je tedy dobré je vůbec nebrat v potaz. Autor se zkrátka nesetkal s jejich užitečností.

Oba výše deklarované cykly běží donekonečna a můžete se s nimi setkat ve špatně napsaných zdrojových kódech spolu s příkazy break, které z nich potom za nějakých podmínek vyskakují.

Toto je další perla..

Odpovedať
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Michal Marek
Člen
Avatar
Odpovedá na DarkCoder
Michal Marek:2. novembra 16:04

Neodstraníš celou podmínku ale odstraníš negaci "!" a "continue" zbytek necháš. Výsledek je stejnej.

Avatar
DarkCoder
Člen
Avatar
Odpovedá na Michal Marek
DarkCoder:2. novembra 17:32

Pokud máme následující úryvek kódu:

if (!int.TryParse(cislo, out celeCislo))
        continue;

soucet += celeCislo;

a odstranímě negaci (!) a continue

if (int.TryParse(cislo, out celeCislo))
        ;

soucet += celeCislo;

tak to dělá to samé, ale je to jen shoda náhod. Logicky je to špatně. Jde o to, že při neúspěchu bude hodnota celeCislo = 0 a soucet se tak nezmění. To je důvod, proč to vypadá tak že je to správně, ikdyž vlastně není.

Správně by mělo být:

if (int.TryParse(cislo, out celeCislo))
        soucet += celeCislo;

Tedy příkaz pro aktualizaci souctu by měl být součástí úspěšné části příkazu if.

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é 10 správy z 20.