Académique Documents
Professionnel Documents
Culture Documents
1- Enregistrement
3- Complexité algorithmique
www.u-picardie.fr/~furst/algo_prog.php
Algorithmique et Programmation 1
Enregistrement
Algorithmique et Programmation 2
Énumération
Algorithmique et Programmation 3
Type de données structuré
Types structurés : une valeur n’est pas atomique mais constituée d’autres
valeurs
entier montableau[300];
pour (i allant de 0 à montableau.longueur pas de 1) faire
montableau[i] <- 0;
finpour
montableau[0] <- 7;
Attention : un type tableau est un type, un tableau est une valeur d’un type
tableau.
montype toto;
truc tab = {2.3,4.0};
Algorithmique et Programmation 4
Enregistrement
enregistrement Personne
chaine nom, prenom;
entier age;
finenregistrement
Personne p1;
p1.nom <- "Duchmol";
p1.prenom <- "Robert";
p1.age <- 32;
Personne p2 <- {"Tartempion", "Marcel", 54};
Algorithmique et Programmation 5
Enregistrement en C
En C, il faut toujours indiquer avant le nom du type enregistrement qu'il s'agit
d'un type enregistrement, sauf si on utilise le mot-clé typedef.
struct Personne{
char *nom, *prenom;
int age;
};
typedef struct{
char *nom, *prenom;
int numero;
} Etudiant;
Etudiant e;
...
Algorithmique et Programmation 6
Visibilité des champs
Un identifiant de champ n’a donc aucun sens s’il n’est pas préfixé par l’identifiant
d’un enregistrement :
enregistrement Personne
chaine nom, prenom;
entier age;
finenregistrement
Personne p;
p.nom <- "Dupuis";
nom <- "Duchemin";
int age <- 34;
p.age <- 32;
enregistrement Etudiant
chaine surnom, numero;
entier numero, age;
finenregistrement
Algorithmique et Programmation 7
Combinaison d'enregistrements
Les champs d’un type enregistrement peuvent être de tout type, y compris
enregistrement.
enregistrement Inscription
entier annee; // année dans le diplome
diplome dip;
entier dispense_assiduite;
finenregistrement
enregistrement Etudiant
entier numero;
chaine nom;
Inscription inscrip;
finenregistrement
Algorithmique et Programmation 8
Enregistrement récursif
Il est possible qu’un type enregistrement contienne un champ typé par lui-même.
enregistrement Personne
entier age;
chaine nom;
Personne pere, mere;
finenregistrement
Algorithmique et Programmation 9
Enregistrements et tableaux
Il est possible qu’un champ d’un type enregistrement soit de type tableau.
enregistrement Etudiant
entier numero;
chaine nom;
Inscription inscrip;
réel notesSemestre[];
finenregistrement
Attention : en C, un champ de type tableau dont la taille n'est pas fixée doit être
déclaré à la fin de l'enregistrement !
Etudiant tab[200];
tab[0].nom <- "Dupont";
tab[0].notesSemestres[0] <- 14.5 ;
...
Algorithmique et Programmation 10
Tableau multidimensionnel
caractère morpion[3][3];
morpion[1][1] <- 'o';
chaine we[2] <- {"samedi","dimanche"};
morpion morpion
'
o
'
'
o
'
Algorithmique et Programmation 11
Structures de données
Structurer les données facilite l’écriture des programmes et l’échange des données
entre parties des programmes (fonctions).
enregistrement Note
entier n, coef;
finenregistrement
enregistrement Etudiant
entier numero;
chaine nom;
Inscription inscrip;
Note notesSemestre[];
finenregistrement
numero : 2 numero : 3
nom : "Dupont" nom : "Durand"
inscrip : inscrip : ... ... ...
notesSemestre : notesSemestre :
annee : 1 annee : 1
dip : licence dip : licence
dispense_assiduite : 0 dispense_assiduite : 0
struct Oeuf;
struct Poule{
Oeuf aPondu;
};
struct Oeuf{
Poule ponduPar;
}
Algorithmique et Programmation 13
Affectation globale d'enregistrement
struct Etudiant{
int numero, annee;
char *nom;
};
Algorithmique et Programmation 14
Valeurs par défaut des champs
Dans de nombreux langages, il est possible de donner des valeurs par défaut
aux champs.
enregistrement Etudiant
entier numero, annee <- 1;
chaine nom;
finenregistrement
struct Etudiant{
int numero, annee;
char *nom;
}Etudiant_defaut={0,1,""};
Remarques :
- les valeurs servant à initialiser les champs doivent être des constantes
- il est possible de ne pas donner de nom au type (mais alors on ne peut
plus l’utiliser dans le reste du code)
Algorithmique et Programmation 15
Paramètre de type enregistrement
Les enregistrements peuvent être transmis aux fonctions par valeur ou par
référence :
struct Etudiant{
int numero, annee;
char *nom;
};
Algorithmique et Programmation 16
Valeur de retour de type enregistrement
Les enregistrements peuvent être retournés par les fonctions :
enregistrement Etudiant
entier numero, annee;
chaine nom;
finenregistrement
Algorithmique et Programmation 17
Retour de type enregistrement en C
struct Etudiant{
int numero, annee;
char *nom;
};
Algorithmique et Programmation 18