NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!

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
Avatar
jakoubek.stanislav:10.11.2016 7:24

Jen malá drobnůstka, pro šťouraly ;-) , ale proč by nešla odmocnit nula? %P . Ale jinak výborná učebnice na příkladech, jsem nadšenej

 
Odpovědět
10.11.2016 7:24
Avatar
krepsy3
Tvůrce
Avatar
Odpovídá na jakoubek.stanislav
krepsy3:30.1.2017 22:27

To také nevím, malý moment, nahodím si to do testovacího projektu

...

Tak kód

namespace test
{
    class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine(Math.Sqrt(0));
            Console.ReadKey();
        }
    }
}

Vypíše normálně nulu, což je správný výsledek. Použití příkladu s odmocninou také moc nechápu, možná by bylo lepší dělení nulou. Nebo snad a je větší rovno nule? David Hartinger?

Editováno 30.1.2017 22:30
Odpovědět
30.1.2017 22:27
Programátor je stroj k převodu kávy na kód.
Avatar
krysta24
Člen
Avatar
krysta24:12.2.2017 16:31

Neporadí mi prosím někdo jak se píše a co přesně znamená taková ta prošrtnutá 0?

 
Odpovědět
12.2.2017 16:31
Avatar
Atrament
Člen
Avatar
Odpovídá na krysta24
Atrament:12.2.2017 18:55

To je úplně obyčejná nula - 0 akorát že když ji vložíš do bloku code, který slouží ke vkládání zdrojáků, tak se použije font, který ji zobrazuje s tím proškrtnutím, aby ji bylo jednodušší odlišit od velkého o - O

mimo blok code:
nula - 0
velké o - O

v bloku code:

nula - 0
velké o - O
 
Odpovědět
12.2.2017 18:55
Avatar
krysta24
Člen
Avatar
Odpovídá na Atrament
krysta24:13.2.2017 8:32

Díky, sice jsem na to pak sám přišel, ale kód zlobil a tak jsem pak zapoměl napsat.

 
Odpovědět
13.2.2017 8:32
Avatar
Bruno Schwarzbach:6.3.2017 21:21

Ahoj, prosím o radu, nevím si rady s následujícím programem inspirovaným zdejším tutoriálem. V prvním běhu vše OK. pokud se vrátím volbou na začátek programu, háže to výjimku viz přiložený obr, ani nečeká na zadání a do proměnné vstup1 se jakoby sám dosadí prázdný řetězec. Díky předem za pomoc...

static void Main(string[] args)
        {
            ConsoleKeyInfo klav;
        start:
            float vysledek = 0;
            Console.Clear();
            Console.WriteLine("Pokročilá_kalkulačka s volbou operace!");
            Console.WriteLine("Zadej 1. číslo:");
            string vstup1 = Console.ReadLine();
            float a = float.Parse(vstup1);
            Console.WriteLine("Zadej 2. číslo:");
            string vstup2 = Console.ReadLine();
            float b = float.Parse(vstup2);
            Console.WriteLine();
            Console.WriteLine("Vyber operaci");
            Console.WriteLine("1: součet");
            Console.WriteLine("2: rozdíl");
            Console.WriteLine("3: součin");
            Console.WriteLine("4: podíl");
            int volba = Console.Read();
            switch (volba)
            {
                case 49:
                    vysledek = a + b;
                    break;
                case 50:
                    vysledek = a - b;
                    break;
                case 51:
                    vysledek = a * b;
                    break;
                case 52:
                    vysledek = a / b;
                    break;
            }
            Console.WriteLine("Výsledek:" + vysledek);
            Console.ReadKey(true);
            Console.WriteLine("Další výpočet? A/N");
        volba:
            klav = Console.ReadKey(true);
            if (klav.Key == ConsoleKey.A)
                goto start;
            if (klav.Key == ConsoleKey.N)
                goto konec;
            else
                goto volba;
            konec:;
        }
 
Odpovědět
6.3.2017 21:21
Avatar
pocitac770
Tvůrce
Avatar
Odpovídá na Bruno Schwarzbach
pocitac770:6.3.2017 23:46

Nevím, jestli se nepletu, ale zkustím to vysvtělit takto....
Ty používáš goto, což je sebevražda. Konec vysvětlení :D
Ne, tak trochu normáně, goto je hodně zasralalá technika z dob C, která by se u moderních jazyků neměla používat, ty už obsahují spousty nových možností. Zde možná interpretr zmátlo to, že definuješ proměnnou vstup1, pak se přes goto hnusně vrátíš (není to vnitřně znovu zavolání metody, tak se to nedá počítat jako set nových lokálních proměnných, ale stále práce se starými, a ejhle, ono se tu něco děje divného. To, proč to přeskočí to čtení z konzole mě nenapadá, je to celé divné, ale tak to dopadá, když do virtuálního stroje strčíš statement z prastarého nativního kompileru. Pravděpodobnějsi již dříve dělal v C, ale doporučuji, zkus zahodit tyto staré zkušenosti při učení nového jazyka, to, že se onen jazyk jmenuje hodně podobně neznamená, že se s ním i podobně pracuje, například zde má C# mnohonásobně blíže k např. Javě než k C. Zkrátka si počkej, než se dojde o kousek dál, kde se tyto lepší možnosti tvorby kódu naučíš (stačilo počkat jednu lekci).

Editováno 6.3.2017 23:46
 
Odpovědět
6.3.2017 23:46
Avatar
Odpovídá na pocitac770
Bruno Schwarzbach:7.3.2017 10:54

Děkuji za reakci. Nakonec jsem na příčinu přišel - po náhradě

int volba = Console.Read();

za

Console.ReadLine();

a následném parsování na celé číslo se vše chová i při následných cyklech jak má. Takže vysloveně goto v tomto případě problém není, ale samozřejmě respektuji radu zkušeného a nechám se poučit.

 
Odpovědět
7.3.2017 10:54
Avatar
pocitac770
Tvůrce
Avatar
Odpovídá na Bruno Schwarzbach
pocitac770:7.3.2017 13:29

V tom případě se omlouvám za nedorozumění, již chápu, čím to bylo, celou dobu jsem se při hledání zaměřoval na ReadKey() a nevšiml si toho Read(). Read() přečte jeden znak z bufferu konzole, ale pro načtení toho znaku je ho potřeba odentrovat, čímž se přidají dva (číslo a enter), ale ten enter tam zůstává, tudíž to je to, co způsobí "vyprázdnění" dalšího inputu, čtení proběhne standartně, ale nikoliv tak, jak bys to očekával. Zde byl zakopaný pes...

Editováno 7.3.2017 13:30
 
Odpovědět
7.3.2017 13:29
Avatar
Odpovídá na pocitac770
Bruno Schwarzbach:7.3.2017 15:51

Děkuji za vysvětlení funkce Read(), to se mi na programován ílíbí, vše má nějaké logické vysvětlení... včera mi to tak nepřišlo, jsem v zoufalství zkoušel i měnit klávesnici :-)

 
Odpovědět
7.3.2017 15:51
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 10 zpráv z 172.