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.