IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Je zajmavý, že jednom "if" nejde použít dvakrát

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
gripen wo.cz
Člen
Avatar
gripen wo.cz:28.10.2021 9:23

Je zajmavý, že jednom "if" nejde použít dvakrát "<". Když napíšu:

using System;

namespace A
{
    class Program
    {
        static void Main(string[] args)
        {
            int prvni = 17;
            int druha = 8;
            int treti = 39;
            int pomocna = 0;

            if (prvni < druha)
        }
    }
}

Neřve to. Když to změním na "if (prvni < druha < treti)" tak prej "Operátor < nejde použít na operandy typu bool a int.". V čem je problém? I předtím jsem tam pracoval s proměnnými typu int...

 
Odpovědět
28.10.2021 9:23
Avatar
Martin Suchodol:28.10.2021 10:23

Musíš to rozstřelit logickým operátorem && = a(and), nebo || = nebo(or). Takhle to snad nejde udelat v zadnem jazyce.

Po prekladu do "lidstiny" tva soucasna podminka rika ze pokud je prvni mensi nez druha a druha je mensi nez treti tak neco proved. Pokud tento preklad lidstiny prevedes zpet do kodu tak ti vyjde neco jako

if ((prvni < druha) && (druha < treti)) //Zde je true pokud jsou platne vsechny podminky
//resp
if ((prvni < druha) || (druha < treti)) //Zde je true pokud je platna jen jedna cast podminky
 
Nahoru Odpovědět
28.10.2021 10:23
Avatar
Martin Suchodol:28.10.2021 10:47

Sem ti odpovim i na dalsi tvuj problem.

Timhle v podstate vyresis i ostatni tve problemy kdy na tri ciselne hodnoty pouzijes trikrat if na porovnani kazde hodnoty s kazdou. Ale jelikoz hledas nejvetsi cislo tak pouzijes odpovidajici operator tedy >= nebo jen >, pokud je hodnota vetsi nez, nebo pokud je hodnota vetsi nebo rovna cislu misto <= resp <

Tedy:

if (prvni >= druha && prvni >= treti){
        Console.WriteLine("nejvetsi hodnota je " + prvni);
}
if (druha >= prvni && druha >= treti){
        Console.WriteLine("nejvetsi hodnota je " + druha);
}
if (treti >= druha && treti >= prvni){
        Console.WriteLine("nejvetsi hodnota je " + treti);
}

Jde to i pomoci if else a noreneho if, ale tam je to o kapku slozitejsi . Kdy v hlavni cyklu porovnas prvni s druhou, pokud to projde tak porovnas prvni s treti, pokud ne tak porovnas druho s treti. Tedy neco jako

if (prvni >= druha) {
        if(prvni >= treti)
                Console.WriteLine("nejvetsi hodnota je " + prvni);
        else
                Console.WriteLine("nejvetsi hodnota je " + treti);
}else{
        if (druha >= treti)
                Console.WriteLine("nejvetsi hodnota je " + druha);
        else
                Console.WriteLine("nejvetsi hodnota je " + treti);
}
 
Nahoru Odpovědět
28.10.2021 10:47
Avatar
Martin Suchodol:28.10.2021 11:29

Jinak jak již rekl kolega Matúš v jinych tvych dotazech projdi si zdejsi vyukove materialy. Nainstaluj si poradne IDE, to ti dost pomuze. A to hlavni pokud ti neco nejde nelamej to pres koleno, dej si oddych. Uvar si caj, dej cigaro, zajdi si na prochazku se psem. Nebo cokoliv jineho. Az se vratis tak pokracuj, nebo to nech na druhy den. Nejeden programator ti rekne neco podobneho.

Neni nic horsiho nez kdyz na necim sedis x hodin, a druhej den rano si k tomu sednes a problem vyresis za pul minuty. Ale zaroven je to takovou nedilnou soucasti programovani.

 
Nahoru Odpovědět
28.10.2021 11:29
Avatar
gripen wo.cz
Člen
Avatar
gripen wo.cz:28.10.2021 14:11

Nainstaluj si poradne IDE, to ti dost pomuze.

VisualStudio 2019 je nedostačující?

Uvar si caj, dej cigaro, zajdi si na prochazku se psem. Nebo cokoliv jineho. Az se vratis tak pokracuj, nebo to nech na druhy den.

Nejde odkládat každý problém, nebo dopadnu jako Rimmel (viz. díl, kde se setkal s Eso Rimmelem z jiné dimenze :-) )

Neni nic horsiho nez kdyz na necim sedis x hodin, a druhej den rano si k tomu sednes a problem vyresis za pul minuty. Ale zaroven je to takovou nedilnou soucasti programovani.

Vzorové úlohy jsou od známého, co dělá profesora na VŠ, a je jich zhruba třicet. Kdybych to "řešil" takto, nedosáhnu asi ničeho. To je takové to mañana, a všichni víme, jak ta latinská Amerika vypadá.

 
Nahoru Odpovědět
28.10.2021 14:11
Avatar
Martin Suchodol:28.10.2021 15:11

Nemyslel jsem tím aby jsi každý problém hned odložil. Ale situaci kdy sedíš několik hodina nad mnohdy triviálním problémem. Kde máš chybně napsanou třeba jen tečku. Ne vše ti IDE zobrazí, a nebo naopak někdy ti IDE může zobrazit chybu tam kde není. Pak je nutné doplňkové nastavení. Ve chvíli kdy nad tím sedíš dlouho tak problém zkrátka nemusíš vidět. A po nějaké odmlce chybu uvidíš na první dobrou. Nerikam že musíš během té doby uběhnou maraton nebo složit sonátu. Někdy stačí fakt jen pár minut.

Mimochodem tři tvé posty jsou naprosté základy, všechny se týkají podmínek, bez kterých reálnou aplikaci prostě nevytvoříš, jelikož potřebuješ reagovat na různé situace. A to nemluvím o dalších věcech, jako jsou cykly pole atp.

Píšeš že používáš visual studio 2019, v tom případě máš buď vyplé upozornění na chyby typu warning a error. Nebo nevím. Když veškeré své kódy co si jsem postnul spustis v nějakém sandboxu např.: zde , tak se ti to rozsvítí jako vánoční stromecek díky chybám typu warning a error.

Další věc je kompilátor ten by ti měl zobrazit chyby stejně jako IDE.

Takže shrnu-li to. Ano toto IDE by mělo stačit, případně jej lze vylepšit o resharper. A ano ne vse a vždy lze odkládat, nicméně v tomto případě bych všechny vzorové příklady odložil na neurčito. A to do doby než si projdeš nějaké články. A důrazně doporučuji nějaké ucelené seriály, jako ti nabídne learn2code, udemy, itnetwork apod. Ne vše je zde na IT networku placené, naopak základy jsou vždy free.

Chápu že se chceš vše naučit co nejdřív, ale tudy taky cesta nevede, především při učení.

 
Nahoru Odpovědět
28.10.2021 15:11
Avatar
DarkCoder
Člen
Avatar
Odpovídá na gripen wo.cz
DarkCoder:28.10.2021 15:35

Vzorové úlohy jsou od známého, co dělá profesora na VŠ, a je jich zhruba třicet.

Samotné vzorové úlohy nestačí pro plné pochopení a použití v praxi. Všechny tři dotazy k úlohám, které si na fóru napsal, se totiž týkají pochopení teoretické části. Celý proces učení by se mělo skládat ze tří hlavních částí:

  1. Teorie
  2. Ukázkové příklady
  3. Vypracování cvičení

Pokud něco z toho vynecháš, budeš se potýkat s problémy. Viz. tvé dotazy na fóru.

U dotazu s if-else vytváříš prázdný příkaz a sekce else-if už je oddělena jiným příkazem, proto Ti překladač hází chybu že k else neexistuje příkaz if.
U dotazu inkrementace nevztahuješ operátor inkrementace k proměnné, kterou chceš inkrementovat.
U dotazu s if musíš znát, že výraz uvnitř if vytváří boolovskou hodnotu a ta se vytváří pomocí relačních operátorů. Spojování výsledků relačních výrazů se zase provádí pomocí logických operátorů.

Zde vidíš, jak je teoretická část učení nezbytná pro pochopení dané látky. Na ukázkových příkladech pak vidíš, jak se to provádí v praxi. Na vypracovaných cvičení pak si ověřuješ, jak dobře si pochopil danou látku. Budeš-li se řídit tímto postupem, dosáhneš velmi brzy úspěchů. Jinak rady, které zde byly zmíněny, jsou skutečně dobré a je určitě dobré je brát v potaz.

Nahoru Odpovědět
28.10.2021 15:35
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
gripen wo.cz
Člen
Avatar
gripen wo.cz:30.10.2021 11:59

"Zde vidíš, jak je teoretická část učení nezbytná pro pochopení dané látky. "
To teoreticky ano, ale nic to nemění na tom, že za A mi "teorie" letí jedním okem dovnitř, druhým ven, a za B ti každej řekne, že nejlíp se učí praxí.

 
Nahoru Odpovědět
30.10.2021 11:59
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 8 zpráv z 8.