Vous êtes sur la page 1sur 27

Université de THIES

UFR SI
Les types de données composés
Dr Pascal FAYE
pfmfaye@gmail.com

Dr Pascal FAYE 1 09/10/2016


PLAN
Les énumérations
Les tableaux

Les structures

Dr Pascal FAYE 2 09/10/2016


Les énumérations
 Une énumération est un type de données dont les valeurs sont des constantes
nommées.
 Elles permettent de définir un ensemble de constantes, parmi lesquelles les
variables de ce type prendront leur valeur.
 La syntaxe de définition d’un type énuméré est la suivante :
• type
• nom_type = { constante1, constante2, …, constanteN }
 où nom_type est l’identificateur du nouveau type
 et constante1, constante2, …, constanteN est une liste d’identificateurs donnant
l’ensemble des valeurs possible de ce type.

Dr Pascal FAYE 3 09/10/2016


Définition des types énumérés
 Exemple:
type
/*définition du type couleur*/
couleur = {bleu, blanc, rouge, vert, jaune, noir}
/* définition du type jour*/
jour = {lundi, mardi, mercredi, jeudi, vendredi, samedi,
dimanche}

NB: Après avoir défini un type énuméré, on peut l'utiliser comme un


type normal pour déclarer une ou plusieurs variables de ce type.

Dr Pascal FAYE 4 09/10/2016


Déclaration d’une variable de type énuméré
Exemple :
Programme couleur
type
/*définition du type couleur*/
couleur = {bleu, blanc, rouge, vert, jaune, noir}
/* définition du type jour*/
jour = {lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche}
variable
c : couleur // déclaration de la variable c de type couleur
Début

c = bleu // utilisation de la variable c
.....…
Fin

Dr Pascal FAYE 5 09/10/2016


Les tableaux
 Un tableau est un outil qui permet de regrouper sous le même nom
un ensemble de variables de même type.

 On appelle tableau une variable composée de données de même


type, stockée de manière contiguë en mémoire (les unes à la suite
des autres).

 Un tableau est donc une suite de cases (espace mémoire) de même


taille. La taille de chacune des cases est conditionnée par le type de
donnée que le tableau contient.

Dr Pascal FAYE 6 09/10/2016


Les tableaux unidimensionnels
 Un tableau à une dimension peut être vu comme une liste
d'éléments.
 On le représente souvent comme une suite de cases contenant
chacune une valeur.
 Exemple: Tableau notes

15 13 9 17 5 10
1ère case 4ème case

 Un tableau possède un nom (ici notes) et un nombre d'éléments


(de cases) qui représente sa taille (ici 6).

Dr Pascal FAYE 7 09/10/2016


Déclaration d’un tableau à une dimension

 Pour déclarer un tableau dont les éléments ont un type


de base :
• commencer par la déclaration d’une variable ayant un
type de base ;
• ajouter entre parenthèse le nombre d'éléments du
tableau après le nom.
 En algorithme, la syntaxe de la définition d'un
tableau unidimensionnel est la suivante :
• nom_tableau: tableau (N) de type

Dr Pascal FAYE 8 09/10/2016


Déclaration d’un tableau à une dimension
 type définit le type d'élément que contient le tableau, c'est-à-dire qu'il définit la
taille d'une case du tableau en mémoire
 nom_tableau est le nom que l'on décide de donner au tableau, le nom du tableau
suit les mêmes règles qu'un nom de variable
 N est un nombre entier qui détermine le nombre de cases que le tableau doit
comporter

 Exemple
• variable
• salaires : tableau(6) de réel
• étudiants: tableau (25) de chaîne
• notes : tableau (8) d’entier

Dr Pascal FAYE 9 09/10/2016


Accéder aux éléments

 Pour accéder à un élément du tableau, le nom que l'on a donné à


celui-ci ne suffit pas car il comporte plusieurs éléments. Ainsi, on
définit un nombre appelé indice qui, combiné avec le nom du
tableau, permet de décrire exactement chaque élément.

 Pour accéder à un élément du tableau, il suffit donc de donner le


nom du tableau, suivi de l'indice de l'élément entre crochets :

 Nom_du_tableau[indice]

Dr Pascal FAYE 10 09/10/2016


Accéder aux éléments

 Un élément particulier du tableau est désigné en précisant son


indice (son numéro).
 Le premier élément du tableau correspond à l’indice 0 et est
désigné par nom_tableau[0].
 Le deuxième élément du tableau correspond à l’indice 1 et est
désigné par nom_tableau[1].
 Le dernier élément du tableau correspond à l’indice N-1 et est
désigné nom_tableau[N-1].
 Quelque soit sa forme, la valeur de l'indice doit être entière et
comprise entre les valeurs minimale et maximale déterminées à la
déclaration du tableau.

Dr Pascal FAYE 11 09/10/2016


Manipulation d’un tableau à 1 dimension

 Les éléments d'un tableau sont des variables appelées variables


indicées qui s'utilisent exactement comme n'importe quelle autre
variable classique. Autrement dit, elles peuvent faire l'objet d'une
affectation, elles peuvent figurer dans une expression
arithmétique, dans une comparaison, elles peuvent être affichées
et saisies…

 On ne peut pas manipuler un tableau de manière globale


(affectation à un autre tableau, affichage, saisie…). Il faut le
manipuler élément par élément (en le parcourant avec une boucle
Pour par exemple).

Dr Pascal FAYE 12 09/10/2016


Manipulation d’un tableau à 1 dimension
 Exemple:

Dr Pascal FAYE 13 09/10/2016


Les tableaux multidimensionnels

 Les tableaux multidimensionnels sont des tableaux qui


contiennent des tableaux.
 Par exemple le tableau bidimensionnel (3 lignes, 4 colonnes)
suivant, est en fait un tableau comportant 3 éléments, chacun
d'entre eux étant un tableau de 4 éléments :

a b c d
e f g h
i j k l

Dr Pascal FAYE 14 09/10/2016


Les tableaux multidimensionnels

 Un tableau à plusieurs dimensions se déclare en ajoutant une


paire de crochets et une taille pour chaque dimension.
 Par exemple, pour un tableau à deux dimensions, la syntaxe est
la suivante:
• variable
• nom_tableau: tableau(N1)(N2) de type
 Un tableau à deux dimensions est aussi appelé matrice.
 Exemple :
 tab : Tableau(3)(2) de Réel // matrice de 3 lignes et deux colonnes

Dr Pascal FAYE 15 09/10/2016


Les tableaux multidimensionnels

 L’accès à un élément se fait en précisant un indice entre crochets


pour chaque dimension.
 Le premier indice de chaque dimension est 0.
• tab[0][0] désigne l'élément du tableau tab situé à l ligne 0 et à la colonne 0
• tab[2][1] désigne l'élément du tableau tab situé à l ligne 2 et à la colonne 1.

 Remarque :
Pour parcourir tous les éléments d’un tableau à deux dimensions, on peut utiliser
deux boucles Pour imbriquées : la première boucle pour une dimension et la deuxième
pour l’autre dimension.

Dr Pascal FAYE 16 09/10/2016


Les tableaux:
Notion de chaîne de caractères

 Une chaîne de caractères n’est ni plus ni moins qu’un tableau de caractères.


 Elle se déclare de la façon suivante:
NomChaine: Tableau (Taille) de Caractère

Exemple:
LaChaine: Tableau (80) de Caractère
 Cette déclaration réserve en mémoire un tableau de 80 caractères.
Remarque:
 Elle se différencie des autres types de tableau par le fait que la fin se matérialise par
un caractère particulier (exemple; \0 en langage C ....)
 Pour l’instant dans le context de l’algorithme il est considéré qu’il y a une fonction
Longueur(NomTableau) qui retourne la taille du tableau (chaine de caractères) passé
en paramètre

Dr Pascal FAYE 17 09/10/2016


Les tableaux:
Notion de chaîne de caractères

Exemple d’utilisation de la fonction longueur:

LaChaine:Tableau (80) de Caractere


LaTaille: Nombre
LaChaine  “Bonjour”
LaTaille  Longueur(LaChaine)

La variable LaTaille contient la valeur 7

Dr Pascal FAYE 18 09/10/2016


Les tableaux: Les méthodes de Tries
Il existe plusieurs façons de trier un tableau les plus usuels sont:
Le tri par insertion:
A chaque lecture d’un nouveau nombre, on parcourt les valeurs qui se trouvent déjà dans le
tableau concerné jusqu’à trouver une valeur plus grande ou jusqu’à atteindre la fin de la
liste des nombres déjà traités. Dès que l’on a trouvé une place, on décale toutes les
valeurs nécessaire, de manière à libérer l’emplacement et y insérer la nouvelle valeur. Le
tableau continue ainsi à être ordonné.

Le tri bulle:
Ce tri consiste à prendre une série de nombres, puis en comparant les valeurs deux à deux, il
effectue des permutations éventuelles de manière à amener la plus grande de la liste à la
fin de la série. On recommence avec une sous-série correspondant à la série précédente
moins le dernier élément car il est déjà en place. Le tri s’arrête lorsque la sous-série n’est
plus composée que d’un élément.

Dr Pascal FAYE 19 09/10/2016


Notion de structure (Record)

 Il est habituel en programmation d'avoir besoin d'un mécanisme


permettant de grouper un certain nombre de variables de types
différents au sein d'une même entité.
 On travaille par exemple sur un fichier de personnes et on
voudrait regrouper une variable de type chaîne de caractères pour
le nom, une variable de type entier pour le numéro d'employé,
etc.
 La réponse à ce besoin est le concept d'enregistrement : un
enregistrement est un ensemble d'éléments de types différents
repérés par un nom.
 Les éléments d'un enregistrement sont appelés des champs.

Dr Pascal FAYE 20 09/10/2016


Déclaration d’un type structure (Record)

 La syntaxe de déclaration d’un type structure est la suivante :


• type
• nom_type = Structure
• champ1 : type1
• ...
• champN : typeN
• FinStructure

 nom_type est l’identificateur du nouveau type


 type1, …, typeN sont les types respectifs des champs champ1, …,
champN

Dr Pascal FAYE 21 09/10/2016


Déclaration d’un type structure (Record)

 type
• date = Structure
• jour : entier
• mois : chaîne
• année : entier
• FinStructure
 variable
 d : date // d est une variable de type date.

Dr Pascal FAYE 22 09/10/2016


Les opérations sur les structures (Record)

 On accède aux différents champs d'une structure grâce à


l'opérateur point, noté ''.''.
 Par exemple, le champ appelé champ1 d’une variable structure x
est désigné par l'expression x.champ1
 On peut effectuer sur le champ d'une structure toutes les opérations
valides sur des variables de même type que ce champ.
 On peut appliquer l'opérateur d'affectation à une structure (à la
différence d’un tableau). Cela permet de copier tous les champs de
la structure.

Dr Pascal FAYE 23 09/10/2016


Les opérations sur les structures (Record)
24

Programme GestionPersonne
Exemple 1: Constante
NB_Personnes=20
Type
Personne = Structure
Nom : Tableau (10) de Caractères
Prenom : Chaine de Caractères
Age : entier
FinStructure
Variable
Pers: Personne

Debut
Ecrire (“Entrez le nom”)
Lire(Pers.Nom)
Ecrire (“Entrez le Prénom”)
Lire(Pers.Prenom)
Ecrire (“Entrez l’age”)
Lire(Pers.Age)
……..
Fin
Dr Pascal FAYE 09/10/2016
Les opérations sur les structures (Record)
imbriqués
25

Debut
Exemple 1: Ecrire (“Donnez le nom”)
Lire(Pers.Nom)
Programme GestionPersonne Ecrire (“Donnez le Prénom”)
Constante Lire(Pers.Prenom)
NB_Personnes=20
Type Ecrire (“ Donnez le jour de naissance”)
Date = Structure Lire(Pers.Date_Naissance.jour)
jour : entier
Ecrire (“ Donnez le mois de naissance”)
Lire(Pers.Date_Naissance.mois)
mois : chaîne de caracteres
Ecrire (“ Donnez l’année de naissance”)
annee : entier
Lire(Pers.Date_Naissance.annee)
FinStructure

Personne = Structure Ecrire (“Affichage du résultat de la siasie:”)


Nom : Tableau (10) de Caractères Ecrire (“Pers.Nom”)
Prenom : Chaine de Caractères Ecrire (“Pers.Prenom”)
Date_Naissance : Date
FinStructure Ecrire(Pers.Date_Naissance.jour)
Variable Ecrire(Pers.Date_Naissance.mois)
Pers: Personne Ecrire(Pers.Date_Naissance.annee)
Fin
Dr Pascal FAYE 09/10/2016
Exercices
26

 Exercice1:
L’algorithme demande à l’utilisateur de saisir une phrase au clavier
puis il compte le nombre de fois où apparaissent les différents
lettres contenues dans la phrase?
 Exercice 2:
Ecrire un algorithme qui permet de mémorisé dans un tableau
l’ensemble des informations d’un étudiant donné. Les
informations sont saisies au clavier par l’utilisateur jusqu’à ce
qu’il ne veille plus saisir d’étudiant ou que la taille du tableau est
atteint?

Dr Pascal FAYE 09/10/2016


Exercices
27

 Exercice 3:
L’algorithme demande à l’utilisateur de saisir des nombres au
clavier jusqu’à ce que l’utilisateur ai fini, et puis qui fait le tri des
chiffres par ordre croissant avant de les afficher?

Dr Pascal FAYE 09/10/2016

Vous aimerez peut-être aussi