Go Down

Topic: quanti and posso fare in una unica chiamata if (Read 770 times) previous topic - next topic

Maurotec

Quando c'è la necessità di molte AND o altri operatori logici nelle if il codice diventa un incubo sia da scrivere che modificare. Per fortuna con il C (ma penso anche con altri linguaggi ciò sia possibile), in particolare si usa una struttura dati di n elementi. Ogni elemento viene impiegato per accendere uno o più bit, ciò ci permette di impiegare il costrutto switch case. La realizzazione e semplice quando si opera su una sola variabile di dimensioni opportune, mentre con le strutture dati in cui ogni elemento è una variabile le cose si possono complicare specie se l'applicazione richiede l'annidamento di molti switch case.

In alcuni casi estremi o può tornare utile conoscere il funzionamento della MCU e dei suoi registri e allora si prende spunto da ciò, e quindi si creano n registri, sempre gestiti bit per bit. Ma gira o rigira o si finisce per usare a sproposito switch case oppure nel tentativo di semplificare si sostituiscono con delle lookup table.

Io cerco sempre una soluzione alternativa quando gli AND (o altro) superano le 4 righe, le tollero se nel codice completo c'è solo una if di questa per ogni modulo C (con arduino style il concetto di modulo C svanisce).

Quindi se si tratta di una sola if, anche di 10 righe, la mandi giù, anche perché trovare un'alternativa potrebbe portare via molto tempo.

Ciao.

Go Up