Vous êtes sur la page 1sur 18

Plan

Algorithmiques et structures de donnes en C e


Laila AMIR
Fili`re dingnieurs : IRISI e e

Anne universitaire 2011/2012 e

Laila AMIR

Algorithmiques et structures de donnes en C e

Plan

Plan
1 2

Introduction Tableaux Tableau statique ` une dimension a Tableau statique ` deux dimension a Pointeurs Tableau dynamique ` une dimension a Tableau dynamique ` deux dimension a Structures Dnition du type structure e Dclaration dune structure e Utilisation dune structure
Laila AMIR Algorithmiques et structures de donnes en C e

Plan

Plan
1 2

Introduction Tableaux Tableau statique ` une dimension a Tableau statique ` deux dimension a Pointeurs Tableau dynamique ` une dimension a Tableau dynamique ` deux dimension a Structures Dnition du type structure e Dclaration dune structure e Utilisation dune structure
Laila AMIR Algorithmiques et structures de donnes en C e

Plan

Plan
1 2

Introduction Tableaux Tableau statique ` une dimension a Tableau statique ` deux dimension a Pointeurs Tableau dynamique ` une dimension a Tableau dynamique ` deux dimension a Structures Dnition du type structure e Dclaration dune structure e Utilisation dune structure
Laila AMIR Algorithmiques et structures de donnes en C e

Plan

Plan
1 2

Introduction Tableaux Tableau statique ` une dimension a Tableau statique ` deux dimension a Pointeurs Tableau dynamique ` une dimension a Tableau dynamique ` deux dimension a Structures Dnition du type structure e Dclaration dune structure e Utilisation dune structure
Laila AMIR Algorithmiques et structures de donnes en C e

Introduction Tableaux Pointeurs Structures

Part I Algorithmiques et structures de donnes e

Laila AMIR

Algorithmiques et structures de donnes en C e

Introduction Tableaux Pointeurs Structures

Introduction
Quest ce quun algorithme ? Un ensemble des instructions (programmable sur machine) qui permet de rsoudre un probl`me donn : e e e Il lit des donnes en entre; e e Il eectue un calcul; Il crit les rsultats de calcul en sortie e e Quest ce quune structure de donnes ? e Une structure de donnes spcie la faon de reprsenter les donnes e e c e e du probl`me sous forme de variables isoles, tableaux, pointeurs, e e listes cha ees, piles, les, arbres, chiers, graphes, .. ... n

Laila AMIR

Algorithmiques et structures de donnes en C e

Introduction Tableaux Pointeurs Structures

Tableau statique ` une dimension a Tableau statique ` deux dimension a

Tableau statique ` une dimension a


Dclaration dun tableau : e Type NomTableau [nb-elements]; dclare un tableau NomTableau de nb-elements lments du type Type. e ee Exemple : double tab[10]; Acc`s aux lments : e ee On acc`de ` llment dindice i du tableau tab grce ` loprateur e a ee a a e dindexation [], par lexpression tab[i].

Laila AMIR

Algorithmiques et structures de donnes en C e

Introduction Tableaux Pointeurs Structures

Tableau statique ` une dimension a Tableau statique ` deux dimension a

Tableau statique ` deux dimension a


Dclaration dun tableau : e Type NomTableau [nb-lignes][nb-colonnes]; dclare une matrice NomTableau de nb-lignes lignes et nb-colonnes e colonnes. Tous les lments sont du type Type. ee Exemple : double tab[10][30]; Acc`s aux lments : e ee On acc`de ` llment dindices (i, j) du tableau tab par lexpression e a ee tab[i][j].

Laila AMIR

Algorithmiques et structures de donnes en C e

Introduction Tableaux Pointeurs Structures

Tableau dynamique ` une dimension a Tableau dynamique ` deux dimension a

Tableau dynamique ` une dimension a


Dclaration dun pointeur (1D) : e Type * ptr; dclare un pointeur sur des donnes du type Type. e e Allocation dynamique : Lallocation dynamique de mmoire pour un tableau de nb lments de e ee type Type se fait ` laide de malloc: a Type *ptr = (Type *)malloc(nb*sizeof(Type)); La libration de mmoire se fait ` laide de free : free(ptr); e e a Acc`s aux lments : e ee On acc`de ` llment dindice i du tableau par: ptr[i] ou *(ptr + i) e a ee Et on acc`de ` son adresse par : &ptr[i] ou (ptr + i) e a
Laila AMIR Algorithmiques et structures de donnes en C e

Introduction Tableaux Pointeurs Structures

Tableau dynamique ` une dimension a Tableau dynamique ` deux dimension a

Tableau dynamique ` deux dimension a


Dclaration dun pointeur (2D) : e Type ** ptr; dclare un pointeur qui pointe sur un objet de type Type *. e Allocation dynamiques : Allocation dun tableau de nbp pointeurs : ptr = (Type **)malloc(nbp*sizeof(Type *)); Allocation dun tableau de nb lments ` chaque pointeur : ee a for (int i =0; i< nbp; i++) ptr[i] = (Type *)malloc(nb*sizeof(Type));
Laila AMIR Algorithmiques et structures de donnes en C e

Introduction Tableaux Pointeurs Structures

Tableau dynamique ` une dimension a Tableau dynamique ` deux dimension a

Tableau dynamique ` deux dimension (suite) a

Acc`s aux lments : e ee On acc`de ` llment dindices (i,j) du tableau de pointeurs ptr par e a ee lexpression : ptr[i][j] ou *(*(ptr + i)+j). Et on acc`de ` son adresse par : e a &ptr[i][j] ou *(ptr + i)+j.

Laila AMIR

Algorithmiques et structures de donnes en C e

Introduction Tableaux Pointeurs Structures

Dnition du type structure e Dclaration dune structure e Utilisation dune structure

Dnition du type structure e

Une structure est un type qui permet de regrouper plusieurs donnes de types dirents dans une seule variable de type e e structure. Une structure est compose de plusieurs champs, chaque champ e correspond ` une donne. a e

Laila AMIR

Algorithmiques et structures de donnes en C e

Introduction Tableaux Pointeurs Structures

Dnition du type structure e Dclaration dune structure e Utilisation dune structure

Dclaration dune structure e

On peut dclarer une structure par : e

struct nom-structure { Type1 champ1; Type2 champ2; } nom-de-variable;

Laila AMIR

Algorithmiques et structures de donnes en C e

Introduction Tableaux Pointeurs Structures

Dnition du type structure e Dclaration dune structure e Utilisation dune structure

Dclaration dune structure (suite) e


Autrement, struct nom-structure { Type1 champ1; Type2 champ2; };

Et la dclaration de la variable de type struct nom-structure se fait e ensuite comme pour une variable de type standard. struct nom-structure nom-de-variable;

Laila AMIR

Algorithmiques et structures de donnes en C e

Introduction Tableaux Pointeurs Structures

Dnition du type structure e Dclaration dune structure e Utilisation dune structure

Utilisation dune structure

Une fois la variable est dclare, on acc`de aux donnes champ1 et e e e e champ2 de la structure par : nom-de-variable.champ1 (qui est de type Type1) nom-de-variable.champ2 (qui est de type Type2) Et ces donnes seront traites comme nimporte quelle variable de type e e correspondant.

Laila AMIR

Algorithmiques et structures de donnes en C e

Introduction Tableaux Pointeurs Structures

Dnition du type structure e Dclaration dune structure e Utilisation dune structure

Exemple

struct point { oat x, y, z; }; //ne pas oublier la point-virgule main { struct point P; printf(entrer les coordonnes dun point 3D :); e scanf((%f , %f , %f ), &P.x, &P.y, &P.z); printf (lhomothtie(0,3) vaut : (%f , %f , %f ), 3*P.x, 3*P.y, 3*P.z); e }

Laila AMIR

Algorithmiques et structures de donnes en C e

Introduction Tableaux Pointeurs Structures

Dnition du type structure e Dclaration dune structure e Utilisation dune structure

Dnition du type typedef e


La dclaration du type typedef permet de dnir ce quon nomme des e e types synonymes. Exemple : typedef int entier. Les deux syntaxes suivants sont quivalents : e struct toto { int champ1; oat champ2; }; typedef struct toto s-toto; s-toto art1, art2;
Laila AMIR

typedef struct toto { int champ1; oat champ2; } s-toto; s-toto art1, art2;
Algorithmiques et structures de donnes en C e