Eléments de base du langage C Pour atelier E1 Novembre 2018 j.Callot l.Piedfort
Types de base Les types peuvent être déclarés en: unsigned char 8 bits Caractère 1 octet short 16 bits Entier 2 octet Int 32 bits 16 bits pour Arduino Entier 4 octets Entier 2 octets long float Réel 4 octets void Ensemble vide Les types peuvent être déclarés en: unsigned Novembre 2018 j.Callot l.Piedfort
Operateurs arithmétiques = assignation + addition - soustraction * multiplication / division % modulo Novembre 2018 j.Callot l.Piedfort
Operateurs logiques bit à bit & et | ou ^ ou exclusif ~ complément à 1 >> décalage droit << décalage gauche Novembre 2018 j.Callot l.Piedfort
Opérateurs relationnels > strictement supérieur < strictement inferieur >= supérieur ou égal <= inferieur ou égal == égal != différent Retournent vrai ou faux (1 ou 0) Novembre 2018 j.Callot l.Piedfort
Operateurs logiques booléens && et logique || ou logique ! non If ((i>0) && ( i<9)) //vrai si les 2 conditions sont vraies { } If ((i>0) || ( j<0)) //vrai si au moins 1 condition est vraie If (!x) //vrai si x=0 Novembre 2018 j.Callot l.Piedfort
Caractères ‘c’ caractère c " chaine de caractères " \n passer a la ligne suivante \r retour en début de ligne \0 fin de chaine printf (" \n \r Hello Word " ); Suivant l’hyperterminal \n peut suffire Novembre 2018 j.Callot l.Piedfort
Format d’impression char car='A'; int i=10; float fl=15.7; printf ("\n car= %c i_deci= %d i_hex= %0x fl= %f",car,i,i,fl ); Resultat car= A i_deci= 10 i_hex= a fl= 15.700000 Novembre 2018 j.Callot l.Piedfort
Le if int note=15; if(note == 20) { printf("\n 1_felicitations"); } else if ((note >=15) && (note<20 )) printf("\n continuer a faire des efforts"); else printf("\n il faut travailler plus"); Resultat continuer a faire des efforts Novembre 2018 j.Callot l.Piedfort
Boucle for int i=0; for(i=0;i<5;i++) { printf("\n i= %d",i); Résultat i= 0 i= 1 i= 2 i= 3 i= 4 Novembre 2018 j.Callot l.Piedfort
While int i=0; while( i<5) { printf("\n i= %d",i); i++; } Résultat Novembre 2018 j.Callot l.Piedfort
Boucles infinies for(;;) { ………..; } While(1) Novembre 2018 j.Callot l.Piedfort
Do while int i=0; do { printf("\n valeur de i= %d",i); i++; } Resultat valeur de i= 0 valeur de i= 1 valeur de i= 2 valeur de i= 3 valeur de i= 4 Novembre 2018 j.Callot l.Piedfort
Le scanf int i; printf("\n\n entrer un nombre en Hexa\n"); scanf("%0x",&i); printf("\n i= %d",i); Résultat entrer un nombre en Hexa ff i= 255 Novembre 2018 j.Callot l.Piedfort
switch int i; for(;;) { printf("\n entrer un nombre entre 1 et 3\n"); scanf("%d", &i); switch(i) case 1 : printf("\n i= 1"); break; } case 2 : printf("\n i= 2"); case 3 : { printf("\n i= 3"); break; } default: printf("\n erreur"); }//fin switch }//fin for Novembre 2018 j.Callot l.Piedfort
Résultat switch entrer un nombre entre 1 et 3 2 i= 2 1 i= 1 5 erreur Novembre 2018 j.Callot l.Piedfort
Tableau int i; int tab[4]={5,6,7,8}; for (i=0;i<4;i++) { printf("\n val de tab[i]= %d",tab[i]); } Résultat val de tab[i]= 5 val de tab[i]= 6 val de tab[i]= 7 val de tab[i]= 8 Novembre 2018 j.Callot l.Piedfort
Pointeur Int i=3;//déclaration d’un entier valant 3 Int *p; //déclaration d’un pointeur sur un entier P= &i; //p prend la valeur: adresse de i *p lit la valeur pointée par p, donc la valeur de i Novembre 2018 j.Callot l.Piedfort
Fonction type nom_fonction (type arg1,type arg 2…..) Le prototype de la fonction doit être défini avant le main Une fonction se termine par Return si fonction de type void Return(expression) type # void Novembre 2018 j.Callot l.Piedfort
Exemple de fonction int SOM(int,int); //prototype void Main_task(uint32_t initial_data) { int a=5, b=2,c=0; c=SOM(a,b); //appel de la fonction printf("\n valeur de c= %d",c); } int SOM(int x,int y) int res; res=x+y; return(res); Resultat valeur de c= 7 Novembre 2018 j.Callot l.Piedfort
Spécificités environnement Arduino et Energia Novembre 2018 j.Callot l.Piedfort
IDE Fonction setup() Sert a la configuration du hardware (pins I/O, liaison série, interruptions…) Fonction loop() Exécutée en permanence Novembre 2018 j.Callot l.Piedfort
Energia Novembre 2018 j.Callot l.Piedfort
Variable locale Novembre 2018 j.Callot l.Piedfort
Variable globale Novembre 2018 j.Callot l.Piedfort
Variable locales et while(1) Novembre 2018 j.Callot l.Piedfort
Fonction som Novembre 2018 j.Callot l.Piedfort