Re: Sloené podmínky

Pavel Hudeček edizon na seznam.cz
Čtvrtek Duben 11 11:04:06 CEST 2024


To s 1 na začátku je super nápad, asi taky začnu používat, díky:-)

Ale vyrábět si AND kterej nevypadá jako and v žádném mnou běžně 
používaném jazyce a editor ho ani specificky nezvýrazní?
Předpokládám, že je tam překlep, mělo bejt AND. Ale kde není && je 
zpravidla and, ne AND. Jenže dělat define začínající malejma, to se mi 
taky nelíbí. A i kdyby, tak vzdávat se dobrovolně toho, že základní 
operátor vypadá jako základní operátor a ne jako kus textu?

PH

Dne 11.04.2024 v 10:42 Jan Waclawek napsal(a):
> Ja to pisem zasadne takto:
> #define ANL &&
>
>    if (1
>      ANL podmienka1
>      ANL podmienka2
>      ANL podmienka3
>    ) {
>      podmieneny kod;
>    }
>
> tymto sposobom sa totiz da slusne urobit aj odsadzovanie (a podla potreby
> riadkove vykomentovanie) vnorenych vyrazov.
>
> Ale nepouzivam vyhradne zlozene vyrazy, pouzivam aj tu kaskadu if-ov.
>
> Rozhodovanie, ktore z toho pouzijem, je viacmenej o tom, ci tie jednotlive
> podmienky maju podobny charakter (napr. vsetko su to nejake stavove bity),
> alebo nie (napr. ak niektora podmienka hovori o variante vyrobku, tak ta
> obvykle je ako prva a nie je sucastou zlozeneho vyrazu).
>
> Nikdy nekompilujem bez optimalizacie, a tento druh vyrazov sa optimalizuje
> ako prvy, lebo je to lahke a jednoznacne. Citaj: na vysledny binar ten
> zapis nema vplyv.
>
> wek
>
>
> ----- Original Message ---------------
>
> Subject: Re: Složené podmínky
>     From: Pavel Hudeček <edizon na seznam.cz>
>     Date: Thu, 11 Apr 2024 10:25:57 +0200
>       To: hw-list na list.hw.cz
>
>> Pokud jde jen o komentování, tak se dá i jeden if rozdělit na víc řádků
>> a odpadne hromada bloků:
>>
>> if (podmínka1 // koment 1
>>     && podmínka2 // koment 2
>>     && podmínka3 { // koment 3
>>        podmíněný kód
>> }
>>
>> Tohle teda spíš používám když jsou podmínky moc dlouhé. Třeba u nových
>> AVR nic neobvyklého, tam má snad i většina knihovních definů od bitů 10+
>> znaků.
>>
>> V C je možné cokoli, jen dát pozor, jestli je to přehledné pro ty co to
>> pak někdy budou číst. Případně jestli je to v souladu s podmínkami
>> zadavatele, třeba jestli požaduje MISRA, nebo má nějaké speciální
>> preference. Já třeba nerad používám nadbytečné závorky ve výrazech typu
>> if (a && b || c), ale když zadavatel chce, mu je tam klidně dám: if ((a
>> && b) || c)
>>
>> PH
>>
>> Dne 11.04.2024 v 9:39 Jaroslav Buchta napsal(a):
>>> Ale nemelo by se aspon zapomenout na to, ze pravidla psani bezpecneho
>>> kodu doporucuji (nebo narizuji? ) pouzivat bloky i pro jeden prikaz.
>>> takze spis
>>>
>>> if (podminka1)
>>>
>>> {   // komentář1
>>>
>>>    if (podminka2)
>>>
>>>    { // komentář2
>>>
>>>      if (podminka3)
>>>
>>>      { // komentář3
>>>
>>>       }
>>>    }
>>> }
>>>
>>> a to uz je trosku roztahane...
>>>
>>> Dne 11.04.2024 v 7:28 Martin Záruba napsal(a):
>>>> Mě ten druhý zápis připadá přehlednější, protože lze udělat zápis:
>>>>
>>>> if (podminka1)   // komentář1
>>>>
>>>>    if (podminka2) // komentář2
>>>>
>>>>      if (podminka3) // komentář3
>>>>
>>>>        {};
>>>>
>>>>
>>>> a navíc při ladění pokud chci na zkoušku podmínku vyhodit, stačí na
>>>> začátek napsat //
>>>>
>>>> Martin Záruba
>>>> Dne 10.4.2024 v 21:46 Jaroslav Buchta napsal(a):
>>>>> I v prvním případě je přesně definováno pořadí a pravidla vyhodnocení.
>>>>> Druhý zápis jsem snad nikdy nikde neviděl, že by někoho napadlo použít.
>>>>>
>>>>> Dne 10.04.2024 v 21:44 Pavel Hudeček napsal(a):
>>>>>> V prvním případě necháte na překladači, jaké pořadí vyhodnocení
>>>>>> zvolí, ve druhém zajistíte pořadí, takže např. při nesplnění
>>>>>> podmínky 1 nevadí, že na podmínce 2 by to zrovna teď zhavarovalo.
>>>>>>
>>>>>> PH
>>>>>>
>>>>>> Dne 10.04.2024 v 18:17 Martin Záruba napsal(a):
>>>>>>> Jestliže potřebujete vyhodnotit, že je splněno více podmínek
>>>>>>> současně, používáte zápis
>>>>>>>
>>>>>>> if (podminka1 && podminka2 && podminka3 .....) {};
>>>>>>>
>>>>>>> nebo
>>>>>>>
>>>>>>> if (podminka1) if (podminka2) if (podminka2) ..... {};
>>>>>>>
>>>>>>> Je v přeloženém kódu nějaký rozdíl nebo je to jedno?


Další informace o konferenci Hw-list