Transcript Algorithme et structure de données
Algorithme et structure de données
CPGE
plan
Définition et rôle des structures de données en programmation Les enregistrements
–
Allocation statique L ’allocation dynamique de la mémoire
–
Les pointeurs Les listes
– –
Pile File
Objectifs
Connaître les structures de données élémentaires, tableaux, piles, files, listes chaînées, arbres Être sensibilisé aux problèmes algorithmiques et leur complexité Modélisation et résolution d’un problème
Définition et rôle des structures de données en programmation
CPGE
Structures de données
Une S.D indépendante de tout langage de programmation Une S.D modéliser au mieux les informations à traiter
Programme = algorithme + données
Une S.D.A. est un ensemble organisé d’informations (ou données) reliées logiquement et pouvant être manipulées non seulement individuellement mais aussi comme un tout
Exemple
Un vecteur est un formalisme mathématique d’espace vectoriel sur un corps K qui contient n coordonnées (éléments de K ) (structure abstraite) En programmation un vecteur peut être modélisé par un tableau de n éléments (structure concrète )
Les enregistrements
Les éléments d’un tableau sont de même type Dans la réalité les modèles sont plus complexe Un enregistrement est un extension de la notion de type simple (type primitive) Un enregistrement = variable
Déclaration de la structure d’un enregistrement
Non standardisé Mot clé : structure ou enregistrement
Type Structure NomStruct
var1: type var2: type var3: type ……
FinStruct
Exemple
La définition Type structure date j:entier m:entier a:entier finStruct Type structure personne Nom: chaine Prenom:chaine DN:date finStruct {DN: date de naissance} Variable …….
Debut …… Fin
Exemple
Instanciation et manipulation Variables D :date P :personne TP Début D.j <- 30 {manipulation par champs} D.m<- 1 D.a<- 1999 lire(P.nom) P.prenom< ’’ali’’ P.DN<-D {manipulation globale de la structure date } Fin P nom prenom j m a DN
Tableaux d’nregistrements
Déclaration – Tableaux TP(3):personne Manipulation: TP(0).nom< ’’alaoui’’ ecrire(TP( 1).nom, TP( 1).prenom) lire(TP) lire(TP(0)) ou evrire(TP(0))
Manipulation des enregistrement
le nom d'un champ est TOUJOURS précédé du nom de l'enregistrement auquel ilappartient Les champs d'un enregistrement, tout comme les éléments d'un tableau, sont des variables à qui on peut faire subir les mêmes opérations (affectation, saisie, affichage,… ).
il est possible d'affecter un enregistrement à un autre de même type(affectation par champs)
les enregistrements en langage C
Exemple – struct personne{ char nom[20]; char prenom[20]; struct date dn; };//le point virgule est obligatoire struct date { int j,m,a;};
les enregistrements en langage C
} Void main(){ struct personne p;date p printf(‘’nom=? ’’);scanf(‘’%s’’,&p.nom); p.prenom=’’ali’’; d.j=1;d.m=1;d.a=1999; p.dn=p; p.dn.j=10; printf(’’%s , %s ’’,p.nom,p.prenom);
Instruction typedef
Pour créer des types synomime –
typedef int Entier; Entier a; int a; typedef PI 3.14; typedef if Si;
Masqué le mot clé struct typedef struct personne{ …… } personne ; personne P;
Manipulation en langages C
void affiche(personne p){ – printf(’’ % s %s , %d//%d//%d ’’,p.nom,p.prenom,p.dn.j, p.dn.m, p.dn.a); } personne tp[5]; Void main(){personne p; scanf(’’%s’’,&p.nom);gets(p.prenom); …… affiche(p);affiche(tp(2));}