Aller au contenu


Information tutoriel

  • Ajouté le: juil. 05 2016 11:52
  • Date Updated: mars 12 2017 04:56
  • Lectures: 4085
 


* * * * *
3 Notes

Comment structurer ses variables en C

Petit tutoriel permettant de faire un point sur les structures et les union.

Posté par Mike118 on juil. 05 2016 11:52
Ce petit tutoriel vous permettra de voir comment mieux structurer vos variables et donc vos codes. Et pour cela nous alons voir différents objets : la structure ! 
 
Tout d'abord, qu'est ce qu'une structure ? 

Pour faire simple une structure c'est un "super type de variable customisé" qui peut contenir d'autres/plusieurs types de variables ( et donc y compris d'autre structures vu qu'une structure c'est aussi par définition un type de variable ... ) customisé comme vous l'aurez choisis au moment de la création de cette structure. 
Pour rappel pour ceux qui l'ont oublié quand je parle de type de variable je parle bien de ; int, int8_t, char, float etc... qui sont tous des types de variable classique. 

Cas concret d'utilisation : 

Si je veux faire une structure qui va définir des couleurs de LED multicolore définie par 3 dominante Rouge, Vert et Bleu  qui sont chacun des valeurs de types uint8_t par ce que j'en ai envie et bien je peux définir une structure pour cela grâce au mot clef " struct " qui me permet de créer ces super types de variable "custom":
struct COLOR_RVB {

uint8_t R;
uint8_t V;
uint8_t B;

};
En faisant ça j'ai crée un type de variable nommé COLOR_RVB  qui  est un type de variable permettant de ranger 3 variables de types uint8_t. 

Par contre je n'ai pas encore " créer de variable " du type COLOR_RVB ... 

Pour créer une variable de ce type je peux après avoir créer le type COLOR_RVB écrire : 
 
COLOR_RVB leNomDeMaVariable;
Et là vous aurez créer une variable de type COLOR_RVB de nom leNomDeMaVariable qui contient 3 uint8_t. 

Pour lire ou écrire sur ces 3 uint8_t il vous faudra alors écrire :
 
//Exemple d'ecriture  
leNomDeMaVariable.R= 0;  //met 0 pour la case R 

//Pour une lecture 
uint8_t i =100; 
i = leNomDeMaVariable.R;  // i = 0 car on a mis 0 pour la case R juste au dessus. 
Autre exemple un peu plus complet avec des points ...: 

 

// Création de la structure Point
struct POINT {
int16_t x;
int16_t y;
}; 

POINT origine{0,0}; // création et initialisation en même temps en dehors du setup d'un point appelé Origine

POINT positionDuRobot;

POINT pointDePassage[4]; // Tableau de points contenant 4 points ( on peu en mettre plus )

void setup() {
  positionDuRobot.x=0; 
  positionDuRobot.y=100; // initialisation comme on veut obligatoire dans le setup
  pointDePassage[0].x=0;  // exemple d'initialisation du contenu d'un tableau de structure
  pointDePassage[0].y=100;
  pointDePassage[1].x=100;
  pointDePassage[1].y=100;
  pointDePassage[2].x=100;
  pointDePassage[2].y=0;
  pointDePassage[3].x=0;
  pointDePassage[3].y=0;

}

il est tout a fait possible de mettre plusieurs type de variable différent dans une structure, et comme dit plus haut si ça vous chante vous pouvez mettre des structures dans des structures ! 
 
Bon ça va c'est clair ? =) Vous êtes prêt à mettre des structure partout dans vos codes là où ça pourra vous simplifier la vie ?? 
Parfait !  Maintenant amusez vous bien ;)
 
Pour ceux qui souhaitent un exemple un peu plus poussé ou qui s'intéressent aux quadrupède : un exemple avec le  quadrupède testé par jekert  ! =)
 
Et la suite de cette série de tutoriels, avec l'utilisation des " unions" , est maintenant disponible renforcement des structures par l'union  ! =)