Bonjour à tous,
Je viens de découvrir un nouvel opérateur en langage c (nouveau pour moi) : l'opérateur de séquencement qui permet d'évaluer plusieurs expressions en une seule. (x,y) où x et y sont des sous-expressions quelconques, l'opérateur : , réalise l'exécution séquentielle de x et de y, dans cet ordre.
Du moins c'est ce que moi je comprends. Du coup, voici un petit programme qui le met en évidence, il s'agit de la gestion d'un simple chronomètre :
unsigned long t_chrono;
const int PROGMEM tempsSeconde = 1000;
int heures = 0, minutes = 0, secondes = 0;
void setup() {
Serial.begin(115200);
t_chrono = millis(); // point de depart chrono
}
void affiche() {
secondes = (secondes >= 59) ? (minutes++, 0) : secondes + 1;
if (minutes == 60) {
++heures ;
minutes = 0;
secondes = 0;
} ;
Serial.print(heures) ; Serial.print(":"); Serial.print(minutes); Serial.print(":"); Serial.println(secondes);
t_chrono = millis(); // on repart à zero
}
void loop() {
if ((millis() - t_chrono) == tempsSeconde) affiche();
}
Si secondes est supérieur ou égal à 59, on exécute :
secondes = (minute++,0);
soit :
minute = minute +1;
secondes = 0;
Le résultat final est celui de seconde tandis que le résultat de minute est simplement ignoré même s'il est effectif.
Pour le fait que cet opérateur rende le code illisible, je comprends. Par contre le langage C m'a permis de mieux appréhender le fonctionnement des microcontrôleurs et des ordinateurs. Je le trouve au contraire très clair, il est devenu pour moi une évidence, une référence incontournable ! Même si J'ai encore beaucoup à apprendre.
Je le trouve simple et puissant. Je le conseille à tous les apprentis programmeurs.
"le développeur est parfait et ne doit pas faire d'erreurs" est un adage qui ne tient pas la route.
J'ai écrit du code C pour un système d'ouverture de porte d'un métro (et personne ne veut que la porte s'ouvre pendant la marche, ou du mauvais côté), et crois moi, le client (l'exploitant du métro) ne se satisfait pas du tout de la promesse d'excellence des développeurs. A tel point qu'on s'interdisait (relecture du code par un 2nd développeur) d'utiliser pas mal de figures ambigües du C.
oui le langage est proche du matériel et ça peut conduire à des erreurs, c'est pour cela que des règles de bonne conduites / normes de programmation sont édictées
En C++ il y a C++ Core Guidelines qui vaut le coup d'être regardé par exemple
Vu le nombre d'année que j'exerce, soit la grammaire du C n'est pas exigence, la syntaxe étant géré par le compilateur.
soit je suis plus douer pour la langue C que la langue française