<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
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>
</body>
</html>