<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=CS link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Přesně tak. Prostě jako obvykle všechno závisí na okolnostech a má své meze rozumnosti. Aneb proč by se řídící proměnná foru co má 3 řádky nemohla jmenovat n, nebo i (akorát teda malé L nedoporučuji).</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Jinak ten diskutovaný řádek kódu s podmínkama jsem kolem roku 2000 použil a to hned asi 5x v jednom programu. Cílem bylo nahradit celkem velkou desku, která měla hromadu vstupů zapojených na komparátory a potenciometry, ty byly svedené přes odpory do dalších komparátorů. Odpory měly prodloužené nožičky a byly natažené všelijak křížem nad jednostrannou deskou. Původně jsem to měl opravit, ale dospěl jsem k závěru, že bude lepší to nahradit procesorem, když jsem k tomu dostal tak hezký popis co to má dělat.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Výsledkem byl program, co se vejde na 2 obrazovky 800*600, nebo co jsem tehdy měl. Jedno byla inicializace, většinu druhé tvořily dvojice, kdy jsem zkopíroval větu ze zadání, dal jako komentář a o řádek níž dal totéž, jen upravené stylem „místo čárky dát ) + (“</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Názvy proměnných byly tedy přesně dle zadání. Nic neříkající, ale v zadání taky nebylo vysvětleno co mají znamenat. Milovníci dlouhých názvů by si je mohli prodloužit o pár dovymyšlených slov a podtržítek, ale užitek by to mělo 0.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Bylo to tak měsíc po tom, co jsem se začal učit C, ale myslím že ani dnes by nebyl důvod to udělat jinak:-)</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>PH</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal style='border:none;padding:0cm'><b>Od: </b><a href="mailto:konfera@efton.sk">Jan Waclawek</a><br><br><o:p></o:p></p></div><p class=MsoNormal>Ja som po urcitom case prisiel na to, ze privela pismeniek je rovnako zle</p><p class=MsoNormal>ako primalo. Samozrejme je tazke utrafit nejaky zlaty stred; a co je este</p><p class=MsoNormal>tazsie, je utrafit tie spravne pismenka a ich spravnu polohu tak, aby to</p><p class=MsoNormal>pomohlo mojmu buducemu ja prip. niekomu inemu.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>A tie "coding standards" typu hlavicka funkcie a rozbijanie do funkcii su</p><p class=MsoNormal>podla mna vo vacsine pripadov kontraproduktivne (to je samozrejme slovo do</p><p class=MsoNormal>bitky, rovnako zbytocnej ako su napr. diskusie o zatvorkovaco-zalamovacich</p><p class=MsoNormal>styloch (zbytocnej, pretoze sa ma pouzivat len a len One True,</p><p class=MsoNormal>samzorejme)).</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>V tomto konkretnom pripade by som ja asi pouzil tu pomocnu premennu; ale co</p><p class=MsoNormal>je podla mna ovela dolezitejsie je, ze ak by som aj zachoval ten vyraz tak</p><p class=MsoNormal>ako je, rozbil by som ho do jednotlivych riadkov a kazdy riadok by som</p><p class=MsoNormal>okomentoval; vratane toho finalneho porovnania s cislom 3.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>----- Original Message ---------------</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>preco chcete setrit pismenkami?</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>podla mna je dolezitejsie aby to bolo lahko citatelne komukolvek.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>lebo ak chcete mat portovatelny kod tak musi byt trocha odolny, taktiez </p><p class=MsoNormal>pri testovani ked potrebujete vediet ktory vyraz ma aku hodnotu, alebo </p><p class=MsoNormal>pre logovanie.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>je kopec rieseni ktore na prvy pohlad zjednodusuju program ale nakoniec </p><p class=MsoNormal>sa mozu skaredo vypomstit</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>>>>A bylo by docela zajímavé se podívat jak  se liší zkompilovaný kód v obou pøípadech.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>>>>Myslím že by tam velké rozdíly nebyly.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>to by aj mna by zaujimalo :)</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>On 21. 4. 2020 12:39, Pavel Hudecek wrote:</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> No jo, ale to pak na místì použití není vidìt, jak頞e ty podmínky </p><p class=MsoNormal>> jsou. Pøedpokládám, že funkce bude dle firemních pravidel definována </p><p class=MsoNormal>> v nìjakém externím souboru. Nedej bože, když takových sad podmínek </p><p class=MsoNormal>> bude víc. To pak budou názvy tìch funkcí tak dlouhé, že urèitì poruší </p><p class=MsoNormal>> nìjaké délkové pravidlo, ohlednì délky øádku:-)</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Normálnì bych pro zvýšení pøehlednosti dal mezery okolo + (což jsem </p><p class=MsoNormal>> ale pro zabránìní zalomení v mailu vynechal). Uvažoval bych ještì o </p><p class=MsoNormal>> další závorce okolo souètu.</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Použití funkce pro mì pøehlednost jasnì snižuje:-) Navíc MIN_A_COUNT a </p><p class=MsoNormal>> REMAING_COUNT jsou vyloženì matoucí názvy pro podmínky nesouvisející s </p><p class=MsoNormal>> count:-) Jinak teda proti použití define nic nenamítám, bìžnì </p><p class=MsoNormal>> používám, ale zas je to zbyteèná komplikace do ukázky typu kódu v mailu.</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> K èemu teda máme rùzné jazyky, když bychom nemohli využívat jejich výhod?</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> PH</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> *Od: *TomᚠHamouz <mailto:tomas.hamouz@divesoft.com></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Myslím že lepší otázka zní, jak to napsat tak aby bylo na první pohled </p><p class=MsoNormal>> jasné co daný výraz vyhodnocuje,</p><p class=MsoNormal>> bez ohledu na poèet písmenek.</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Abych planì nekritizoval, nejsp횠bych to udìlal takhle, ale protože </p><p class=MsoNormal>> nevím úèel celé konstrukce,</p><p class=MsoNormal>> tak by bylo tøeba lepší zahrnout i porovnání s trijkou. Podmínku </p><p class=MsoNormal>> malého poètu písmenek zcela zjevnì</p><p class=MsoNormal>> nesplòuju, ale to zcela zámìrnì, protže bych se v tom rád vyznal i po </p><p class=MsoNormal>> nìkolika letech kdy jsem to nevidìl.</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> #define   MIN_A_COUNT               2            // vyznam teto konstanty</p><p class=MsoNormal>> #define   REMAING_COUNT       12        // vyznam teto konstanty</p><p class=MsoNormal>> #define   MINIMAL_COND_COUNT   3        // vyznam teto konstanty</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> static inline int count_test_conditions(int a, int b, int x, int y)</p><p class=MsoNormal>> {</p><p class=MsoNormal>>     int count = 0;</p><p class=MsoNormal>>     if (a < MIN_A_COUNT) {++count;}        // oduvodneni teto podminky</p><p class=MsoNormal>>     if (a > b) {++count;}                  // oduvodneni teto podminky</p><p class=MsoNormal>>     if (x < y) {++count;}                  // oduvodneni teto podminky</p><p class=MsoNormal>>     if ((a%x) == REMAING_COUNT) {++count;} // oduvodneni teto podminky</p><p class=MsoNormal>>     if (b < y) {++count;}                  // oduvodneni teto podminky</p><p class=MsoNormal>>     return count;</p><p class=MsoNormal>> }</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> if (count_test_conditions(a, b, x, y) > 3) {</p><p class=MsoNormal>> }</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> A bylo by docela zajímavé se podívat jak se liší zkompilovaný kód v </p><p class=MsoNormal>> obou pøípadech.</p><p class=MsoNormal>> Myslím že by tam velké rozdíly nebyly.</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>>             </p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Otázka tedy zní, jak ho upravit, aby prošel a pøibylo co nejménì </p><p class=MsoNormal>> písmenek:-)</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> PH</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> *Od: *as5sgm@gmail.com <mailto:as5sgm@gmail.com></p><p class=MsoNormal>> >>> If ((a<2)+(a>b)+(x<y)+(a%x==12)+(b<y) > 3) {</p><p class=MsoNormal>> Tento riadok kodu by nepresiel review a ani MISRA rules, vsade kde su </p><p class=MsoNormal>> aspon dvaja vyvojari :)</p><p class=MsoNormal>> Miro</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> On 21. 4. 2020 10:37, Pavel Hudecek wrote:</p><p class=MsoNormal>> Vzhledem ke komutativnosti sèítání by poøadí mìlo bejt irelevantní, </p><p class=MsoNormal>> kromì toho posledního >, ale to má nižší prioritu než +, takže se musí </p><p class=MsoNormal>> vyhodnotit jako poslední.</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> No a že to nebude fungovat v jiných jazycích? To je snad normální. </p><p class=MsoNormal>> Nebo všechny mají ++, printf, pointery jako Delphi, nepotøebují </p><p class=MsoNormal>> deklarovat promìnné jako VB6, … ?</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Pøíkazù je tam 0, takže omezení na max. jeden na øádek to taky </p><p class=MsoNormal>> nepøekraèuje.</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> PH</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> *Od: *Michal Gregor <mailto:a2x1nptda8@email.cz></p><p class=MsoNormal>> Spravne se maji slozite podminky prevest do funkci. Plati zasada jeden</p><p class=MsoNormal>> radek jeden prikaz. A nespolehat se na interni "tajne" funkce</p><p class=MsoNormal>> compilatoru. Co kdyz to nekdo skopiruje do C++? Nebo do uplne jineho </p><p class=MsoNormal>> jazyja.</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Dne 21.04.2020 v 8:46 Jan Waclawek napsal(a):</p><p class=MsoNormal>> > A nemohlo to byt skor o tom, ze v takychto vyrazoch</p><p class=MsoNormal>> ></p><p class=MsoNormal>> >>> If ((a<2)+(a>b)+(x<y)+(a%x==12)+(b<y) > 3) {</p><p class=MsoNormal>> ></p><p class=MsoNormal>> > nie je zarucene poradie vyhodnotenia pod-vyrazov, aj keby mali vedlajsie</p><p class=MsoNormal>> > efekty?</p><p class=MsoNormal>> ></p><p class=MsoNormal>> > wek</p><p class=MsoNormal>> ></p><p class=MsoNormal>> ></p><p class=MsoNormal>> > ----- Original Message ---------------</p><p class=MsoNormal>> >> Sa vam dvom do toho zamontujem, som nieco nasiel vo svojom archive, ale</p><p class=MsoNormal>> >> Ty si mimo podozreni :)</p><p class=MsoNormal>> >> Skor si ja pofajcim, ze uz kedy som daval do placu citat z normy, ktory</p><p class=MsoNormal>> >> si teraz dal aj Ty :-D</p><p class=MsoNormal>> >></p><p class=MsoNormal>> >> https://list.hw.cz/pipermail/hw-list/2011-July/399004.html</p><p class=MsoNormal>> >></p><p class=MsoNormal>> >> miro</p><p class=MsoNormal>> >></p><p class=MsoNormal>> >> On 21.4.2020 1:17, Jan Waclawek wrote:</p><p class=MsoNormal>> >>> Hm, tak ja vidim vyhody skor v tych 6 ifoch a 1 pomocnej premennej...</p><p class=MsoNormal>> >>></p><p class=MsoNormal>> >>> Ale ak by si nahodou nasiel odkaz, kde ten JW z minulosti povedal, ze</p><p class=MsoNormal>> >>> vysledkom podmienky nemusi byt 0 alebo 1, tak by som Ti bol vdacny.</p><p class=MsoNormal>> >>></p><p class=MsoNormal>> >>> wek</p><p class=MsoNormal>> >>></p><p class=MsoNormal>> >>></p><p class=MsoNormal>> >>> ----- Original Message ---------------</p><p class=MsoNormal>> >>> Tak?e se po pár misících mu?u vrátit k tomu, ?e jedna z výhod C je </p><p class=MsoNormal>> mo?nost</p><p class=MsoNormal>> >>> dilat vici, jako:</p><p class=MsoNormal>> >>></p><p class=MsoNormal>> >>> If ((a<2)+(a>b)+(x<y)+(a%x==12)+(b<y)>  3) {</p><p class=MsoNormal>> >>></p><p class=MsoNormal>> >>> Co? v jiných jazycích vede na 6 ifu a 1 pomocnou prominnou.</p><p class=MsoNormal>> >>></p><p class=MsoNormal>> >>> PH</p><p class=MsoNormal>> >>></p><p class=MsoNormal>> >>> Od: Jan Waclawek</p><p class=MsoNormal>> >>></p><p class=MsoNormal>> >>> Hm, tak potom by som mal asi tomu JW z minulosti jednu tresnut...</p><p class=MsoNormal>> >>></p><p class=MsoNormal>> >>> Konkretne teda, C99, 6.5.8 Relational operators #6:</p><p class=MsoNormal>> >>> Each of the operators<  (less than),>  (greater than),<= (less than or</p><p class=MsoNormal>> >>> equal to), and>=</p><p class=MsoNormal>> >>> (greater than or equal to) shall yield 1 if the specified relation </p><p class=MsoNormal>> is true</p><p class=MsoNormal>> >>> and 0 if it is false. 92)</p><p class=MsoNormal>> >>> The result has type int.</p><p class=MsoNormal>> >>></p><p class=MsoNormal>> >>> Ten footnote 92) je kuzelny:</p><p class=MsoNormal>> >>>    The expression a<b<c is not interpreted as in ordinary </p><p class=MsoNormal>> mathematics. As the</p><p class=MsoNormal>> >>> syntax indicates, it</p><p class=MsoNormal>> >>> means (a<b)<c; in other words, ??if a is less than b, compare 1 to c;</p><p class=MsoNormal>> >>> otherwise, compare 0 to c??.</p><p class=MsoNormal>> >>></p><p class=MsoNormal>> >>> wek</p><p class=MsoNormal>> >>></p><p class=MsoNormal>> >>></p><p class=MsoNormal>> >>> ----- Original Message ---------------</p><p class=MsoNormal>> >>></p><p class=MsoNormal>> >>> Mil jsem nijak za to, ?e to byl právi jistý JW, kdo mi tu onehdá </p><p class=MsoNormal>> vyeetl, ?e</p><p class=MsoNormal>> >>> spoléhat se, ?e výsledkem podmínky je 0 nebo 1 není správné:-)</p><p class=MsoNormal>> >>></p><p class=MsoNormal>> >>> PH</p><p class=MsoNormal>> >>></p><p class=MsoNormal>> >>> Od: Jan Waclawek</p><p class=MsoNormal>> >>></p><p class=MsoNormal>> >>>> A jinak teda ten kód udilá to, ?e pokud je splnina podmínka v </p><p class=MsoNormal>> závorce, nastaví se bit 0 na výstupní (zda to bude bit 0 není </p><p class=MsoNormal>> zarueeno, ale jinak skoro jisté).</p><p class=MsoNormal>> >>></p><p class=MsoNormal>> >>> Preco by to nemal byt bit 0?</p><p class=MsoNormal>> >>></p><p class=MsoNormal>> >>> _______________________________________________</p><p class=MsoNormal>> >>></p><p class=MsoNormal>> >>>>></p><p class=MsoNormal>> >>>>>     DDRB |=(1<CLK_UP);</p><p class=MsoNormal><o:p> </o:p></p></div></body></html>