Jak můžu opustit funkci

balki

Re:Jak můžu opustit funkci
« Odpověď #165 kdy: 16. 07. 2018, 22:18:41 »
Tak puvodne jsem do teto diskuze nechtel prispivat, protoze je to zbytecne, ale toto jsem si nemohl nechat ujit. Kdyz se ten kod od PetrM prepise bez break a if-return, cte se to od shora dolu jako pohadka.

Kód: [Vybrat]
int main(args) {
  if (argValid(arg)) {
     progInit(args);     // Inicializace programu
     while (!isEnd()) {  // Hlavni smycka
       process(args);
     }
     progDeInit();
     return 0;
  } else {
    return -1; // Chybne parametry
  }
}

Laskavy ctenar si udela obrazek sam, ktery kod mu prijde hezci a srozumitelnejsi.

Este return presunut na koniec, a je to v ramci balkiho hlupej dogmy :)


Re:Jak můžu opustit funkci
« Odpověď #166 kdy: 16. 07. 2018, 22:29:04 »
Takze vlastne budeme pouzivat strukturovane programovanie tak, ze poprieme cyklus, vetvenie a sekvenciu.
Ne, to tady nikdo netvrdí.

Cize cyklus nie je cyklus, ale len tak ho v polke sekneme breakom, miesto miesta, kde sa ma.(lebo kod je dlhy, naco by sme vytvarali dalsie procedury)
Když v půlce cyklu zjistíte, že nemá smysl (nebo se dokonce nesmí) zbytek těla cyklu provádět, tak iteraci ukončíte a pokračujete na další. Nechápu, co vám na tom připadá divného. Tím, že celý zbytek cyklu dáte do ifu, na kódu nic nevylepšíte, nanejvýš to bude nepřehledné – a ten cyklus tím „seknete v půlce“ úplně stejně. Tím, že obsah toho ifu dáte do samostatné funkce, si ne vždycky pomůžete. Zaprvé jste tím ifem pořád „seknul cyklus v půlce“, za druhé to může znepřehledňovat kód, za třetí to kód může zpomalovat. Protože volání funkce není zadarmo, zvlášť když k tomu budete potřebovat další data, která se budou muset do funkce zkopírovat. Také může volání funkce zabránit odrolování smyčky optimalizátorem. Nespoléhejte na to, že vám kompilátor funkci pokaždé inlinuje, zvlášť když používáte divné konstrukce svého vlastního programovacího paradigmatu.

A je to vpohode, lebo c-cko a java napriklad obsahuje break vo switchi.(Co je jazykovo specificke a sposobuje to bugy)
Ne, C ani Java neobsahují break ve switchi. C i Java obsahují break, který vyskočí z aktuálně prováděného bloku kódu – přičemž tím blokem může být například cyklus, switch nebo blok s návěštím. Ten break je ale pořád úplně stejný, ve všech třech variantách – break ve switchi není ničím zvláštní. Tváříte se jak mistr světa, chcete ostatní poučovat o strukturovaném programování, ale break je pro vás zjevně obestřen tajemstvím…

Trosku preskocime nieco s goto, vsak nic sa nedeje.
goto sem pořád motáte akorát vy.

A mame 10 returnov z  funkcie, aby smudla hladal, ze ktory to bol.
Proč by to měl hledat? Z venku má funkce dělat jednu věc a jestli je v ní jeden return nebo 10 returnů má být volajícímu jedno. Pokud to pro volajícího jedno není, je ta funkce špatně napsaná.

Potom odchytime vynimku na poslednom moznom mieste, lebo zvysny kod nie je dolezity a koder si moze dohladavat, preco sa veci nevykonali.
To, že se nějaký kód po vyvolání výjimky nezavolal, je správně, je to záměr – třeba když se vám nepodaří alokovat paměť, bylo by špatně do ní zapisovat.

Nemusíte nám dokazovat, že neumíte naprogramovat rozumný kód, to už víme z vašich předchozích komentářů.

Vsak kompilator to vsetko aj tak prelozi na skok.
Jistě. Už jsem vám to psal několikrát, že bez skoků byste toho moc nenaprogramoval.

If je aj tak skok, dame tam goto.
goto tam dáváte jenom vy, nikdo jiný tady o něm nepíše.

Ano, je to ono, vlastne mate pravdu, to len ja zle interpretujem.  (To bola ironia).
No, ono to spíš vypadá, že problém není v interpretaci, ale v tom, že strukturovanému programování prostě vůbec nerozumíte. break je pro vás záhadou, netušíte, co dělá, tak jste si radši zavedl pravidlo „break nepoužívat“. Pak jste někde zaslechl, že se nemá používat ani goto, a teď si kvůli tomu goto a break pletete. A asi jste zrovna objevil, co dělá return, tak jste se hned v diskusi chtěl pochlubit „dobrou“ radou – no a ten break jste k tomu přihodil, protože netušíte, co dělá, tak co kdyby se s ním dalo i vyskočit z funkce.

Podla mna mate v hlave len nejaky neurcity obraz o strukturovanom programovani. Aby ste boli kludny, nazvem to "Jirsakove strukturovane programovanie", aby sa to neplietlo.
O balkiho strukturovaném programování mám zatím opravdu jen velmi neurčitý obraz. Zatím o balkiho strukturovaném programování vím jistě akorát to, že z procedury lze vyskočit returnem i breakem a že break ve switchi má speciální chování, ale když se použije někde jinde, změní se na goto.

No, myslím, že kašpara už jste ze sebe udělal dostatečně, tak až zase budete mít potřebu někde poučovat, nezapomeňte, že hrozí, že se tam najdou lidé, kteří tomu na rozdíl od vás opravdu aspoň trochu rozumí. Pozdravujte na ignorlistu BonaFluta – myslím, že si s ním budete rozumět.

Re:Jak můžu opustit funkci
« Odpověď #167 kdy: 16. 07. 2018, 22:37:36 »
Tak puvodne jsem do teto diskuze nechtel prispivat, protoze je to zbytecne, ale toto jsem si nemohl nechat ujit. Kdyz se ten kod od PetrM prepise bez break a if-return, cte se to od shora dolu jako pohadka.
Mohl byste jmenovat aspoň jednu pohádku, která má takhle blbou strukturu? Všechny pohádky, které znám já, mají jeden oblouk od začátku do konce. Ta vše pohádky by musel vy padat takhle nějak:

Citace: ded.kenediova pohádka
Žili byli v jednom království princ a princezna. Princezna byla krásná … zlá královna … zrcadlo … otrávené jablko … princezna spí … švarný princ ji políbil … princezna se probudila. Byla veliká převeliká svatba,a žili spolu šťastně až do smrti. Zazvonil zvonec, a pohádky je konec. Jo aha, ještě ten princ ze začátku pohádky. Ten žil taky šťastně až do smrti. Pohádky je konec.

balki

Re:Jak můžu opustit funkci
« Odpověď #168 kdy: 16. 07. 2018, 22:38:29 »
@Jirsak Napisem to takto. Switch bez breaku sa neda v C ani napriklad v jave rozumne pouzivat. Pascalovske "case" ano.

Neviem, ci ste ozaj nechapavy, alebo sa tak len tvarite.

balki

Re:Jak můžu opustit funkci
« Odpověď #169 kdy: 16. 07. 2018, 22:44:55 »
Tak puvodne jsem do teto diskuze nechtel prispivat, protoze je to zbytecne, ale toto jsem si nemohl nechat ujit. Kdyz se ten kod od PetrM prepise bez break a if-return, cte se to od shora dolu jako pohadka.
Mohl byste jmenovat aspoň jednu pohádku, která má takhle blbou strukturu? Všechny pohádky, které znám já, mají jeden oblouk od začátku do konce. Ta vše pohádky by musel vy padat takhle nějak:

Citace: ded.kenediova pohádka
Žili byli v jednom království princ a princezna. Princezna byla krásná … zlá královna … zrcadlo … otrávené jablko … princezna spí … švarný princ ji políbil … princezna se probudila. Byla veliká převeliká svatba,a žili spolu šťastně až do smrti. Zazvonil zvonec, a pohádky je konec. Jo aha, ještě ten princ ze začátku pohádky. Ten žil taky šťastně až do smrti. Pohádky je konec.

Pan jirsak, vy sa o 10 rokov pozriete na tento flame a budete sa len za hlavu chytat, ze ako ste mohli byt tak strasne ustipacny a k tomu bezdovodne.  (ak budete este vtedy nazive, neviem ako ste stary, ale tipujem tak 65, predpokladam prvy jazyk Fortran)


totalbreak

Re:Jak můžu opustit funkci
« Odpověď #170 kdy: 16. 07. 2018, 22:58:38 »
@Jirsak Napisem to takto. Switch bez breaku sa neda v C ani napriklad v jave rozumne pouzivat. Pascalovske "case" ano.

Prosímtě balki, přestaň už vymýšlet hovadiny, už jsi nám všem dostatečně ukázal, že jsi jenom obyčejný lepič a cargo cult programátor.
Kód: [Vybrat]
switch (a) {
    case 1:
        return "jsem";
    case 2:
        return "lopata";
}
A teď kvízová otázka, je to tajuplná magická formule, nebo switch bez break? Za správnou odpověď získáváš dva bludišťáky.

balki

Re:Jak můžu opustit funkci
« Odpověď #171 kdy: 16. 07. 2018, 23:05:34 »
..., že jsi jenom obyčejný lepič a cargo cult programátor.

Ah, toto ma normalne zahrialo pri srdiecku :) Ste mi dali truthersky redpill priamo do tvare :)

Kód: [Vybrat]
switch (a) {
    case 1:
        return "jsem";
    case 2:
        return "lopata";
}
A teď kvízová otázka, je to tajuplná magická formule, nebo switch bez break? Za správnou odpověď získáváš dva bludišťáky.


Neprudte prosim :)

Re:Jak můžu opustit funkci
« Odpověď #172 kdy: 16. 07. 2018, 23:08:07 »
Este return presunut na koniec, a je to v ramci balkiho hlupej dogmy :)

Takže celý to bude odsazený. Zbytečně. Super.


@PetrM - for(;;) je taky "smysluplné", je nějaký důvod proč nepoužít while?

totalbreak

Re:Jak můžu opustit funkci
« Odpověď #173 kdy: 16. 07. 2018, 23:10:49 »
Ah, toto ma normalne zahrialo pri srdiecku :) Ste mi dali truthersky redpill priamo do tvare :)
Neprudte prosim :)

Protiargument? Já vím, došly... Víš, mně nevadí, že tomu nerozumíš. Mně vadí, že tady ty svoje cargo cult bludy hlásáš jako nějakou univerzální pravdu. Jenomže jsi bohužel mimo a celkem hodně pro smích.

balki

Re:Jak můžu opustit funkci
« Odpověď #174 kdy: 16. 07. 2018, 23:14:12 »
Ah, toto ma normalne zahrialo pri srdiecku :) Ste mi dali truthersky redpill priamo do tvare :)
Neprudte prosim :)

Protiargument? Já vím, došly... Víš, mně nevadí, že tomu nerozumíš. Mně vadí, že tady ty svoje cargo cult bludy hlásáš jako nějakou univerzální pravdu. Jenomže jsi bohužel mimo a celkem hodně pro smích.

Aha, toto mal byt argument?

Prosímtě balki, přestaň už vymýšlet hovadiny, už jsi nám všem dostatečně ukázal, že jsi jenom obyčejný lepič a cargo cult programátor.

Javaman, ty vies aj lepsie trollit, vzchop sa :)

Kit

Re:Jak můžu opustit funkci
« Odpověď #175 kdy: 16. 07. 2018, 23:19:09 »
Potom odchytime vynimku na poslednom moznom mieste, lebo zvysny kod nie je dolezity a koder si moze dohladavat, preco sa veci nevykonali. Vsak kompilator to vsetko aj tak prelozi na skok.
Tohle už je čirá demagogie, tohle nikdo netvrdil, tak netroll.
Ok, sorry, to tvrdil Kit, dohladal som si to.

To není můj výrok.

totalbreak

Re:Jak můžu opustit funkci
« Odpověď #176 kdy: 16. 07. 2018, 23:19:30 »
Aha, toto mal byt argument?

Tohle byl argument, na který nemáš odpověď:
Kód: [Vybrat]
switch (a) {
    case 1:
        return "jsem";
    case 2:
        return "lopata";
}
Ale já vím, je to pro tebe magická formule, switche bez breaku v cargo cultu nedávají smysl...

balki

Re:Jak můžu opustit funkci
« Odpověď #177 kdy: 16. 07. 2018, 23:23:30 »
A vynimky nie su strukturovane programovanie, to je len goto na iny sposob, to je vam hadam jasne.  Tie je vhodne vcas odchytit (tie predvidatelne) a riadenie programu robit pomocou chybovych hodnot.

Výjimky naopak zachycuji tak pozdě, jak jen to jde. Jejich nespornou výhodou je, že v sobě nesou všechny informace, které potřebuji k jejich zpracování. Používat něco takového ke generování chybových hodnot je podle mne hloupost, neboť se tím velké množství předávaných informací ztratí. Řízení programu podle výjimek nebo stavových kódů je uznávaným antipatternem.

Kit

Re:Jak můžu opustit funkci
« Odpověď #178 kdy: 16. 07. 2018, 23:29:03 »
@Jirsak Napisem to takto. Switch bez breaku sa neda v C ani napriklad v jave rozumne pouzivat. Pascalovske "case" ano.

Neviem, ci ste ozaj nechapavy, alebo sa tak len tvarite.

Už jsem napsal hodně switchů, ve kterých nebyl ani jediný break. Od jisté doby tak píši všechny.

balki

Re:Jak můžu opustit funkci
« Odpověď #179 kdy: 16. 07. 2018, 23:34:54 »
@Jirsak Napisem to takto. Switch bez breaku sa neda v C ani napriklad v jave rozumne pouzivat. Pascalovske "case" ano.

Neviem, ci ste ozaj nechapavy, alebo sa tak len tvarite.

Už jsem napsal hodně switchů, ve kterých nebyl ani jediný break. Od jisté doby tak píši všechny.

Bojim sa opytat na dovod.