La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Informatique 2A 2009-2010 Langage C 5ème séance. Déroulement de la séance 5 1 ère partie Étude des chaînes de caractères 2 ème partie Les structures 3.

Présentations similaires


Présentation au sujet: "Informatique 2A 2009-2010 Langage C 5ème séance. Déroulement de la séance 5 1 ère partie Étude des chaînes de caractères 2 ème partie Les structures 3."— Transcription de la présentation:

1 Informatique 2A 2009-2010 Langage C 5ème séance

2 Déroulement de la séance 5 1 ère partie Étude des chaînes de caractères 2 ème partie Les structures 3 ème partie Les listes chaînées

3 Les chaînes de caractères En C, une chaîne de caractères est un tableau de caractères (type char) dont le dernier élément est le caractère nul, noté ‘ \0 ’. (\zéro) Comment disposer d’un emplacement pour y ranger une chaîne ? Statiquement : char chaine1[21] ; Permet de ranger une chaîne d’au plus 20 caractères compte tenu de son zéro de fin Dynamiquement : char *chaine2; int n = 20 ; chaine2=malloc(n+1) ; A l’adresse chaine2, on pourra ranger une chaîne d’au plus 20 caractères compte tenu de son zéro de fin

4 Les chaînes de caractères Comment initialiser une chaîne lors de sa réservation ? char chaine1[20] ; chaine1=« bonjour » ; INTERDIT char chaine1[20] =« bonjour »; AUTORISé Réservation de 20 octets à partir de chaine1

5 Pour copier le contenu de chaine2 dans l’emplacement pointé par chaine1, il faut utiliser la fonction strcpy : Fonctions manipulant des chaînes #include char chaine1[100]="eso"; char chaine2[100]="ose"; strcpy(chaine1,chaine2); printf("%s\n%s\n",chaine1,chaine2); Il existe de nombreuses fonctions permettant de manipuler les chaînes de caractères. Elles se trouvent dans la bibliothèque voir poly strlen : longueur d’une chaîne de caractères strcmp : comparaison de 2 chaînes strchr : recherche d’un caractère dans une chaîne sprintf, sscanf: équivalents de printf et scanfc strrev: inverse une chaîne

6 Construction d’une chaîne de caractères int sprintf (char *destination, const char *format) Même utilisation que la fonction printf sauf qu’elle stocke le résultat dans la chaîne de caractères destination Ex : char chaine[100], ext[4]=« tif »; int i=4,val=4; sprintf(chaine, « file_%d_par_%d.%s », i, val, ext); printf(« %s \n », chaine); //affiche « file_4_par_4.tif »

7 Une structure est un exemple de type composite, c’est à dire un type de données formé de plusieurs variables pouvant être de types différents. Les structures Exemple : définition d’un nombre complexe struct complexe { double re; /* Partie réelle */ double im; /* Partie imaginaire */ }; struct complexe z; // Déclaration d'un objet de ce type z.re = 1; z.im =2; // Initialisation des “champs” Le nom du nouveau type de données est “struct complexe” struct : mot réservé du langage complexe : nom de la structure re et im : champs de la structure

8 struct complexe { double re; double im; } typedef struct complexe COMPLEXE;... void main( ) { COMPLEXE z ; //Déclaration de la variable z de type COMPLEXE... } Type synonyme On peut définir le nom du nouveau type de données. Par convention, on note ces nouveaux noms en MAJUSCULES Cette définition se fait hors du main, dans un.h par exemple On peut faire plus court : typedef struct complexe {double re; double im;} COMPLEXE;

9 Structures et fonctions Ce nouveau type de variable peut être utilisé exactement de la même manière que les autres ( int,double, …) COMPLEXE somme(COMPLEXE z1,COMPLEXE z2) { COMPLEXE z; z.re = z1.re + z2.re; z.im = z1.im + z2.im; return z; } typedef struct client { char nom[50]; /* nom du client */ char prenom[50]; /* prénom du client */ double montant; /* somme disponible sur le compte */ } CLIENT; Les éléments d’une structure peuvent ne pas avoir le même type

10 Les listes chaînées Un tableau est une structure pratique, qui permet de manipuler un grand nombre de données à la fois. Mais : sa taille est fixe la position des données est fixe Il est difficile d’augmenter, réduire la taille d’un tableau et d’y insérer des données de manière dynamique Pour résoudre le problème : liste simplement chaînée Donnée Pointeur sur la donnée suivante Maillon ou noeud

11 Les listes chaînées Implémentation à l’aide d’une structure : typedef struct noeud { char val ; struct noeud *suivant; } NOEUD ; Ici, la donnée est un caractère. Ca peut être n’importe quel type de donnée, éventuellement une autre structure. La structure est autoréférencée. C’est une possibilité offerte par le C.

12 Pointeurs et structures NŒUD* n ; n = malloc (sizeof(NŒUD)) ; Pour accéder à la valeur du NŒUD à partir du pointeur n : (*n).val ou (préférable) n->val On peut définir des pointeurs sur des structures :

13 Fonctions primitives Création d’une liste chaînée : debut créer un noeud il pointe sur NULL NOEUD* chr_sll_create () { NOEUD* debut; // Allocation et initialisation de debut debut = malloc(sizeof(NOEUD)); debut->val='0'; debut->suivant=NULL; return debut; } Implémentation : Renvoie un pointeur sur le premier nœud : c’est lui qui définit la chaîne. 0

14 Fonctions primitives Insertion d’un élément après un autre : 0 e m o debut s 1. Création du nœud à ajouter (allocation d’un pointeur) 2. Le nœud ajouté pointe sur le suivant 3. Le nœud courant pointe sur le nœud ajouté courant ajouté suivant

15 NOEUD* chr_sll_insert (char c, NOEUD* n_courant) { NOEUD* n_ajoute; n_ajoute = malloc(sizeof(NOEUD)); n_ajoute->val = c; n_ajoute->suivant =n_courant->suivant; n_courant->suivant = n_ajoute; return(n_ajoute); } Fonctions primitives Implémentation : 1. Création du nœud à ajouter 2. Le nœud ajouté pointe sur le suivant 3. Le nœud courant pointe sur le nœud ajouté

16 Autres fonctions primitives 3. Suppression d’un nœud après un certain noeud 1. Compter le nombre de nœuds d’une liste chaînée 2. Afficher la valeur de tous les nœuds situés après un certain noeud à vous de jouer …


Télécharger ppt "Informatique 2A 2009-2010 Langage C 5ème séance. Déroulement de la séance 5 1 ère partie Étude des chaînes de caractères 2 ème partie Les structures 3."

Présentations similaires


Annonces Google