<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>