Académique Documents
Professionnel Documents
Culture Documents
:
La structure de données TABLEAU nous a permet de regrouper plusieurs éléments de même type,
Exemple: soit T un tableau de 30 éléments qui contient les températures enregistrées au cours du mois de
juin,
Maintenant, si on veut regrouper un ensemble d’éléments pas forcément de même type ,
Exemple : soit une structure qui permet de regrouper les caractéristiques d’une voiture (numéro de série,
marque, nombre de places, puissance, type d’énergie, année de fabrication, pays d’origine)
Quelle est la structure de données adéquate ?
Les enregistrements
Un enregistrement est un type de données défini par l'utilisateur et qui permet de grouper un nombre fini
d'éléments de types éventuellement différents.
Enregistrement Champ1 Champ2 Champ3 … Champ n
Définition : Un enregistrement est une structure de données, définie par l’utilisateur qui permet de
regrouper un ensemble fini d’éléments (champs) qui peuvent être de types différents auxquels on accède
grâce à un nom.
I. En algorithmique
1) Déclaration en algorithmique
Enregistrement Champ1 Champ2 Champ3 … Champ n
Exemple 2:déclarer le type voiture comme étant un enregistrement composé des champs numéro de
série(chaine), marque(chaine), nombre de places(entier), puissance(réel), type d’énergie(chaine), année de
fabrication(entier), pays d’origine (chaine)
1
Voiture Num_série puissance Marque Nbre_places Année Énergie
Lecture
Syntaxe Exemple
Lire (Variable.Champ) Lire (n.valeur) , Lire(n.coeff) , lire(n.matiere)
Ecriture
Syntaxe Exemple
Ecrire (n.valeur)
Ecrire ( Variable.Champ ) Ecrire(n.coeff)
Ecrire(n.matiere)
Il est possible d’affecter à un enregistrement le contenu d’un autre enregistrement défini à partir du même
modèle.
2
Exemple:
c) Tableau d’enregistrement
Type Exemple :
Nom_typenreg = Enregistrement
Nom_champ1 : Type_champ1 Tableau de déclaration des
Nom_champ2 : Type_champ2 nouveaux types
... Type
note = Enregistrement
valeur : réel
coeff : réel
matiere : chaine de
caractères
Fin note
Tabnote=Tableau de 30 note
Fin
Nomtypetab= Tableau de N Nom_typenreg
tdo
Objet Type / Nature
nomvar Tableau de N Nom_typenreg
Exemple :
T1 Tableau de 30 note
T Tabnote
Type Exemple 1
Type <nom_enrg1>= enregistrement Tableau de déclaration des nouveaux types
champ1: <type_champ1> Type
. Type Adresse= enregistrement
. Numéro: entier
Fin Rue: Chaine[30]
Type <nom_enrg2>= enregistrement Ville: chaine[25]
champ1: <type_champ1> Fin
champ2: <nom_enreg1> Type Employe= enregistrement
. Nom, Prénom: chaine[25]
Fin Adr: Adresse
Fin
3
e employe
Exemple 2 :
On vous demande de déclarer la structure élève, sachant qu'il est caractérisé par un nom, une classe, une
moyenne et une date de naissance . Le champ DN (date de naissance) est de type date et que date est un
enregistrement formé de 3 champs jour, mois et année :
Solution :
Tableau de déclaration des nouveaux types
Type
Exercice :
Nous voulons constituer une base de données des étudiants de notre section. Un étudiant est caractérisé
par les informations suivantes:
• Mat: entier
• Nom, prénom: chaine
• Note_S1, Note_S2, Moy_annuelle: réel
Avec Moy_annuelle=(Note_S1+Note_S2)/2
Les étudiants de la section seront stockés dans un vecteur T de N étudiants (N≤100),
Ecrire l’algorithme qui permet de:
1. Déterminer les structures de données nécessaires
2. Lire le nombre d’étudiants N.
3. Remplir le vecteur T.
4. Calculer et afficher la moyenne générale de la section
5. Afficher la liste des étudiants ayant une moyenne annuelle supérieure ou égale à 10.
6. Calculer la meilleure moyenne annuelle.
7. Afficher le(s) majors de la section
8. Effectuer une recherche d’un étudiant par matricule (si l’étudiant existe alors afficher ses
informations, sinon afficher un message de non existence).
II. En Python
Le type enregistrement n’existe pas en lui-même en python. On peut utiliser les tuples, les dictionnaires
(dict) ou les classes, dans la suite de notre cour on va utiliser les dictionnaires
4
. Dictionnaire (dictionary, map)
Définition : Un dictionnaire est une structure de données dite associative, car elle permet de stocker une
valeur en lui associant une clé. Cette clé permet ensuite de retrouver la valeur associée. C’est une sorte de
liste permettant de stocker des couples (clé: valeur) avec un accès très rapide à la valeur à partir de la
clé, la clé(objet) ne pouvant être présente qu’une seule fois.
Pour définir un type Note composé d’une valeur, d’un coefficient et d’une matière, on pourra alors utiliser
un dictionnaire et trois clés (“valeur”, “coefficient” et “matiere”) pour stocker et accéder aux trois valeurs de
la note.
1) Déclaration :
dic1={} ou dic1=dict() #dictionnaire vide
déclaration avec initialisation
n= { n= { n= dict() n=dict()
n["valeur "]=0
:
"valeur " int(),
"Coeff ":float(),
"valeur " :0
"Coeff" :0.0, =
n["valeur "] int(), n["Coeff" ]=0.0,
"Matiere ": "" n["Coeff "]=float(), n["Matiere "]=""
"Matiere" :str() n["Matiere "]=str()
} }
n=dict()
n["valeur"] =15
n["coefficient"] =1.5
n["matiere"] ="programmation"
Exemple 2 : Exemple :
Définir, lire, modifier et afficher une variable E de type enregistrement représentant une fiche d’un étudiant
contenant les informations suivantes :
Num : numéro de l’étudiant (entier)
Nom : nom de l’étudiant (chaîne des caractères)
Moy : moyenne de l’étudiant (réel)
5
Série d’exercices
Exercice1 :
On se propose de gérer une suite finie de N points du plan définis par leurs abscisses et leurs ordonnées. Un
point Ai (xi , yi) du plan a pour abscisse xi et ordonnée yi (avec 1<= i <=N et N un entier compris entre 5 et
30).
1) Pour stocker ces points, on vous propose les deux solutions ci-dessous et on vous demande de déclarer
en algorithmique, dans chaque cas, le ou les type(s) adéquat(s) à utiliser :
Première solution :
Les coordonnées de ces points seront sauvegardées dans une matrice M contenant deux lignes. Sa première
ligne contiendra les abscisses et la deuxième contiendra les ordonnées. Les coordonnées xi et yi d’un point
Ai du plan seront stockés respectivement dans les cases M[1,i] et M[2,i]
Deuxième solution :
Les coordonnées de ces points seront sauvegardées dans un tableau d’enregistrements à une seule dimension
nommé T. L’enregistrement contient les deux champs suivants :
Abs : pour stocker l’abscisse xi du point Ai
Ord : pour stocker l’ordonné yi du même point Ai
2) En supposant que la méthode de stockage choisie est celle proposée dans la deuxième solution, on vous
demande d’écrire :
a) L’algorithme du module intitulé Remplir qui permet de saisir les coordonnées de ces N points
b) L’algorithme du module intitulé Nombre qui permet de déterminer le nombre des points du tableau T
situés sur la droite d’équation ax+by+c=0 (avec a, b et c sont des réels donnés, x et y sont les coordonnées
d’un point appartenant à cette droite)
Exercice2 :
Un employé d’une société est caractérisé par son nom, son prénom, son numéro de carte d’identité
nationale (chaîne numérique de 8 caractères), son âge (entier compris entre 15 et 60), son sexe (M ou m
pour masculin et F ou f pour féminin et l’année d’embauche (entier positif de 4 chiffres)
On désire informatiser la gestion des employés de cette société en réalisant les tâches ci-dessous :
Saisir les informations des N employés ) dans un tableau T
Former et afficher, à partir de T, un tableau d’enregistrements nommé T1, chaque élément de T1 est
composé des champs suivant :
Matricule de l’employé correspondant dans T1, formée par la première lettre du nom de l’employé suivie
par la première lettre de son prénom suivie par son numéro de la carte d’identité nationale suivie par le
sexe suivie par les 2 derniers chiffres de l’année de l’embauche en partant de la gauche
Son âge
Travail demandé :
1. Ecrire l’algorithme du programme principal qui permet d’effectuer les tâches décrites auparavant (la
décomposition en modules est obligatoire)
2. Ecrire l’algorithme de chaque module envisagé en 1)
3. Implémenter la solution algorithmique obtenue en utilisant le langage Python
Exercice3 :
Pour gérer ses clients, la société OOREDOO enregistre les fiches de ses N clients dans un tableau. Chaque
fiche client contient les informations suivantes :
Num : numéro mobile du client, chaîne numérique composée nécessairement de 8 chiffres
6
Sol: solde disponible, entier positif
A l’occasion de l’Aïd, le directeur de cette société veut offrir un bonus de 10 dinars aux clients ayant un
numéro qui vérifie la condition suivante :
La somme des chiffres pairs figurant dans le numéro du client correspondant est > à celle des chiffres
impairs
Exemples :
1) Le client ayant le numéro "22112122" est favorisé car :
Exercice4 :
Ecrire un programme en Python qui permet de :
1) Remplir un tableau T par n chaines des caractères non vides, comportant une expression arithmétique
d’addition qui ne contient que des nombres positifs et l’opérateur "+", ne commence pas, ne se
termine pas par le caractère "+ " et les nombres sont séparés par un seul "+ " ( 3 <N<21)