<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
Jen úplně nepodstatná poznámka:<br>
právě kvůli nebezpečí nějakého odsunutí nebo naopak dopsání, které
by už bylo mimo podmínku, používám zásadně blokové závorky i při
jediném příkazu v if.<br>
<br>
Tedy ne:<br>
if (kozy>2) splnuje_predpoklady=1;<br>
<br>
ale<br>
<br>
if (kozy>2) {<br>
splnuje_predpoklady=1;<br>
}<br>
<br>
PL<br>
<br>
********************<br>
<br>
<div class="moz-cite-prefix">Dne 6.9.2023 v 22:45 Pavel Hudeček
napsal(a):<br>
</div>
<blockquote type="cite"
cite="mid:bfde7772-53d5-7a5c-5c26-5063149aed84@seznam.cz">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Já si myslím, že tohle je typický příklad umělé konstrukce, kterou
přímo v této podobě nikdo normálně nepoužije. Jenže šedá je teorie
a zelený strom života...<br>
<br>
Měříme na pár kanálech ADC a jednou to uděláme bez přerušení a
podruhé s:<br>
<br>
<b>for (uint8_t mxIdx=AD_chanStart; mxIdx<=AD_chanEnd; mxIdx++)</b>
{<br>
ADC0_MUXPOS = mxIdx;<br>
...<br>
adData[mxIdx-AD_chanStart] = ADC0_RES;<br>
}<br>
<br>
Normální for, v jednom řádku se dozvíme od, do a po jak velkých
krocích.<br>
<br>
Jenže normálně nechci měřit for cyklem a v něm čekat až je
změřeno, takže chci použít přerušení. Ale v něm chci mít taky
takový jeden řádek, kde je jedna konstrukce s od, do a po jakých
krocích.<br>
<br>
ISR (ADC0_RESRDY_vect) {<br>
static uint8_t mxIdx=AD_chanStart;<br>
<br>
adData[mxIdx-AD_chanStart] = ADC0_RES;<br>
<b> if (++mxIdx > AD_chanEnd) mxIdx = AD_chanStart;</b><br>
...<br>
}<br>
Jen je škoda, že ta inicializační hodnota je tam dvakrát. Ale
pořád je to lepší, než rozdělený na řádky ++ a if. Proč? Jednak
když to vidím, tak je to jako vidět ten for, prostě jasná
konstrukce, kde hned vím co dělá a proč. No a hlavně se při nějaké
úpravě nemůže snadno stát, že se z toho omylem kus odsune, vymaže,
či zkopíruje kam nemá.<br>
<br>
Je možné, že když to někdo vidí poprvé, tak mu to chvíli jasné
není. Jakmile to pochopí, tak je to prostě standardní konstrukce s
na první pohled jasným chováním, stejně jako for použitý běžným
způsobem.<br>
<br>
PH<br>
<br>
<div class="moz-cite-prefix">Dne 06.09.2023 v 21:38 Petr Labaj
napsal(a):<br>
</div>
<blockquote type="cite"
cite="mid:722c8265-7f7e-c703-e913-f92a8bf9683f@volny.cz">Myslím,
že jde o to, jak má člověk nastaveno samohodnocení. <br>
Jestli na svém interním žebříčku postoupím výše pokud napíšu
fakt prďáckou konstrukci, kterou nikdo jiný napsat neumí. <br>
Nebo jestli naopak postoupím tehdy, pokud napíšu program, který
je každému jasný na první pohled. <br>
<br>
a=i--; <br>
a=--i; <br>
<br>
je jistě správně. <br>
Ale pokud napíšu <br>
a=i; <br>
i--; <br>
<br>
i--; <br>
a=i; <br>
<br>
tak je to stejné, a zřejmě i kompilátor to přeloží stejně nebo
skoro stejně. <br>
<br>
A otázka: <br>
Který z těch zápisů je na první pohled jasnější, a kde spíš
neudělám chybu? Ne v okamžiku, kdy se soustředím na kvíz, ale
kdy jsem unavený a mám vytahané očí čuměním 10 hodin na monitor.
<br>
Který zápis bude pochopitelnější kolegovi, který sice programuje
PLC, ale C viděl jen z rychlíku? <br>
<br>
PL <br>
<br>
******************** <br>
<br>
Dne 6.9.2023 v 21:22 Jindrich Fucik napsal(a): <br>
<blockquote type="cite">... <br>
Protože pochopitelně i tohle je správný zápis: <br>
a=i--; <br>
a=--i; <br>
a kupodivu "a" se bude lišit. <br>
... <br>
</blockquote>
</blockquote>
<br>
</blockquote>
<br>
</body>
</html>