Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Chapitre 2

Chapitre 2

chapitre2

351064ceb33623d2cd4973bfcd14552c?s=128

Boughida Adil

April 15, 2022
Tweet

More Decks by Boughida Adil

Other Decks in Education

Transcript

  1. 1 Les enregistrements en C

  2. 2 En plus des types de base (entier, réels, charactères,

    etc) il est possible dans la plupart des langages de programmation de définir ses propres types. Il s’agit en fait de rassembler une ou plusieurs variables, qui peuvent être de types différents, et de les regrouper sous un seul nom afin de les manipuler plus facilement. Ce sont les enregistrements qui permettent de faire ça, en langage C, ces enregistrements sont nommées des structures (en anglais struct)
  3. 3 Exemple en C Un nombre complexe est un nombre

    de la forme a + b*i où a et b sont des nombres réels et le symbole i avec i2 = -1 En définit un enregistrement en C comme suit: Pour declarer un variable nommé x de type complexe: x.reel: x.imag: struct complexe x; struct complexe { double reel; double imag; };
  4. 4 Où définir un nouveau type Si on défini un

    nouveau type à l’intérieur d’une function/procédure alors il ne sera visible qu’à l’intérieur de cette fonction. Pour qu’un type composé soit visible dans toutes les fonctions/procédures d’un fichier, il faut le déclarer au début du fichier, à l’extérieur de toute fonction. Note: La même chose s’applique à la déclaration de variables: c’est ce que l’on appelle les variables globales. #include <stdio.h> struct complexe { double reel; double imag; }; int funct1(...){ struct complexe x; …} int funct2(...){ struct complexe x; …} int main(...){ struct complexe x; …}
  5. 5 typedef Dans l’exemple précédent, il est laborieux d’avoir à

    écrire autant de “struct complexe” Le C fournit une fonctionnalité appelée typedef servant à créer des noms de nouveaux types de donnéees. Exemple: Le nom Complexe devient synonyme de struct complexe, CAD que typedef remplace struct complexe par Complexe typedef struct complexe Complexe;
  6. 6 typedef En peut donc définir directement un enregistrement en

    C en utilisant typedef comme suit: Pour déclarer un variable nommé x de type complexe, on peut écrire directement: Complexe x; Au lieu de: typedef struct { double reel; double imag; } Complexe; struct complexe x;
  7. 7 Affectation de structures typedef struct { double reel; double

    imag; } Complexe; Complexe x; x.reel = 5; x.imag = 3; 5 3 x.reel: x.imag:
  8. 8 Accéder aux données d’une structure Complexe x, y, z;

    x.reel = 5; x.imag = 3; y = x; z.reel = x.réel; z.imag = 8; 5 3 x.reel: x.imag: 5 y.reel: 3 y.imag: 5 z.reel: 8 z.imag:  
  9. 9 Comparison des structures Complexe x, y; x.reel = 5;

    x.imag = 3; y.reel = 8; y.imag = 9; if(x == y) { printf(“x et y sont égaux”); } -> Erreur de compilation: On ne peut pas comparer deux enregistrements en C avec l’opérateur de comparaison (==)
  10. 10 Les structures et les fonctions • On peut passer

    des structures en paramètre. •On peut utiliser les structures comme valeur de retour.
  11. 11 Exemple Complexe somme(Complexe x, Complexe y) { Complexe a;

    a.reel = x.reel + y.reel; a.imag = x.imag + y.imag; return a; }
  12. 12 Les structures contenant des structures Les membres d’un type

    composé peuvent être eux mêmes des variables de types composé différents. En C, cela se traduit par le fait qu’une structure peut être membre d’une autre structure.
  13. 13 Exemple typedef struct { int x; int y; }

    Point; Point p1={2, 1}; Point p2={8, 5}; • 0 1 2 3 4 5 6 7 8 9 5 4 3 2 1 0 y x • p1 p2
  14. 14 Exemple typedef struct{ Point p1; Point p2; } Rect;

    Rect r ; r.p1.x = p1.x; r.p1.y = p1.y; r.p2.x = p2.x; r.p2.y = p2.y; • 0 1 2 3 4 5 6 7 8 9 5 4 3 2 1 0 y x • p1 p2
  15. 15 Les tableaux de structures On peut faire des tableaux

    de types composés tout comme on peut faire des tableaux de type de base. Exemple: Complexe tab[1000]; for (i=0; i<1000; i=i+1){ tab[i].reel = 0; tab[i].imag = 0; } tab[0].reel tab[1].reel tab[999].reel ... tab: tab[0].imag tab[1].imag tab[999].imag ...
  16. 16 Exemple Supposons qu’une banque utilise un ordinateur pour conserver

    les principales informations sur ses clients. On associe à chaque client une variable dont le type est une structure (cad un enregistrement) qui pourrais ressembler à ce qui suit. struct client{ char prenom[15]; char nom[15]; int solde; int type_de_compte; int derniere_transaction; };