Vous êtes sur la page 1sur 62

Département des classes préparatoires ST

Ecole Nationale Polytechnique d’Oran

CHAPITRE 5: ALGORITHMIQUE
1

Mlle S.FELLAH
Cours N° 1

Plan
 Introduction
 Algorithme
 Représentation d’un Algorithme
Organigramme

Langage algorithmique

 Variables et constantes
 Instructions
2
 Expression
INTRODUCTION

 Pour résoudre un problème donné en informatique, l'utilisateur de


l'ordinateur doit mettre au point un programme et le faire exécuter par la
machine.

 Pour écrire un programme il faut :


 Bien connaître le problème.

 Savoir le découper logiquement en un ensemble d'opérations élémentaires


(actions).
 Connaître un langage compréhensible par la machine.

 La résolution d'un problème en informatique nécessite une approche


structurée en plusieurs étapes :

3
INTRODUCTION

Enoncé informel du problème

Enoncé formel :
Consiste à poser le problème. On définit tous les éléments du
problème : les données, les résultats, les opérations à effectuer. En
revanche, on ne se préoccupe pas de l’ordre dans lequel ces tâches Analyse
seront exécutées.

Algorithme :
On détermine une méthode de résolution du problème qui consiste à
fixer l’ordre dans lequel doivent être effectuées les opérations.

Programmation

Programme :
On va confier l’algorithme à un ordinateur. Il faut donc le traduire 4
dans un langage qui pourra être pris en compte par la machine : un
langage de programmation qui suit des règles de syntaxe très strictes.
INTRODUCTION

 Un algorithme est donc un moyen de description des étapes à suivre


pour résoudre un problème.

 Provient du nom du mathématicien persan Al-Khawarizmi, le père de


l'algèbre

5
ALGORITHMES

Définition
 Procédure de calcul bien définie qui prend en entrée une valeur, ou un
ensemble de valeurs, et qui donne en sortie une valeur, ou un ensemble
de valeurs.

 Un algorithme est donc une séquence d’étapes de calcul qui


transforment l’entrée en sortie.

 Un algorithme est dit correct si, pour chaque instance en entrée, il se


termine en produisant la bonne sortie. L’on dit qu’un algorithme
correct résout le problème donné.

6
ETAPES D’UN ALGORITHME

Préparation du traitement
données nécessaires à la résolution du problème
Traitement
résolution pas à pas, après décomposition en sous-problèmes si
nécessaire.
Edition des résultats impression à l’écran, dans un fichier, etc.

7
REPRÉSENTATION D’UN ALGORITHME
Un algorithme peut être :
 représenté graphiquement par un organigramme,

 écrit sous forme littérale, avec un langage algorithmique.

Organigramme
Définition: un organigramme de programmation (quelquefois nommé
algorigramme ou ordinogramme) est une représentation graphique
normalisée de l'enchaînement des opérations et des décisions effectuées par un
programme d'ordinateur.

 La représentation graphique permet une lecture aisée des algorithmes mais


présente toutefois l’inconvénient de consommer une place importante.

 Les principaux symboles sont les suivants :


8
ORGANIGRAMME
 Principaux symboles utilisés pour la construction d’un organigramme

Symboles normalisés Signification

Début, Fin Le début, la fin d'un programme.

Les opérations ou groupes d'opérations à effectuer sur les


Traitement données, les instructions, …, ou opération pour laquelle il
n'existe aucun symbole.

Non Pour représenter une décision ou un après un test

Oui

Lecture,
Mise à disposition d'une information à traiter ou
Ecriture enregistrement d'une information traitée.

Sous- Appel de sous programme.


programme 9
ORGANIGRAMME

Exemple: porte automatique d'un magasin.


A l'entrée d'un magasin, un système automatisé se charge de l'ouverture et de la
fermeture des portes.

La procédure est la suivante :


1. Mise en marche du système.
2. Détection d'une personne.
3. Si une personne est détectée, le système actionne le vérin d'ouverture de la
porte et maintient la porte ouverte jusqu'à ce que la personne soit passée, puis
actionne le vérin de fermeture de la porte. Si le système ne détecte rien, la
porte est maintenue fermée.
4. Le système se remet en état de détection d'une présence (étape 1). 

10
ORGANIGRAMME

11
LANGAGE ALGORITHMIQUE

Langage algorithmique :
Un langage algorithmique (pseudo-langage) permet la description de la
résolution d'un problème en utilisant des opérations et des enchaînements
d'opérations qui sont ceux des ordinateurs sans toutefois être particulier à
un ordinateur précis.

langage d'algorithmes = langage de description des données, des actions et


des enchaînements

Structure d’un algorithme


Algorithme nom
        Définition des objets : variables et constantes
DEBUT
        Définition du corps : suite d’instructions 12
FIN
LANGAGE ALGORITHMIQUE

Algorithme NomAlgorithme Algorithme Bonjour


{ ceci est un commentaire} {il dit juste bonjour…}
Début Début
... Actions afficher('Hello world !!!')
Fin
Fin

Règles:
 Il faut avoir une écriture rigoureuse

 Il faut avoir une écriture soignée : respecter l’indentation


 Il est nécessaire de commenter les algorithmes
 Il existe plusieurs solutions algorithmiques à un problème posé
 Il faut rechercher l’efficacité de ce que l’on écrit
13
VARIABLES ET CONSTANTES

 Un algorithme opère sur des objets. A tout objet est associé un nom qui permet de
l'identifier de façon unique. C'est une suite de caractères alphanumériques dont le premier
est alphabétique.

 On distingue deux types d'objets :


 Des objets qui peuvent varier durant le déroulement d'un algorithme : Variables.
 Des objets qui ne peuvent pas variés par le déroulement d'un algorithme :
Constantes. 

14
VARIABLES ET CONSTANTES

On peut répartir l'ensemble des objets en sous ensembles appelés classe ou type.
Il existe 4 types standards :
 ENTIER : l’ensemble des entiers relatifs

 REEL : l’ensemble des réels

 BOOLEEN : les valeurs Vrai et Faux. Le type booléen est très économique
en termes de place mémoire occupée, puisque pour stocker une telle
information binaire, un seul bit suffit.
 CARACTÈRE  : l’ensemble des caractères.

 CHAÎNE : chaînes de caractères.

15
DÉCLARATION DES DONNÉES
 En langage algorithmique, on définit les objets comme suit : 
variable <nom de donnée>: type
variables Nom1, Nom2, … : Type //Déclaration de plusieurs variables
• Instruction permettant de réserver de l’espace mémoire pour stocker des données.
Exemples
Variables val, unNombre: entiers
nom, prénom : chaînes de caractères

Constante <nom de donnée>: type <-- valeur ou expression


constantes Type Nom=valeur  // Déclaration d’une constante
• Instruction permettant de réserver de l’espace mémoire pour stocker une constante dont
la valeur ne varie pas.
Exemples
Constante PI=3.14 , MAXI=32
Ou bien
16
Constante PI=3.14 : réel, MAXI=32 : entier
LES INSTRUCTIONS
Instruction de lecture
 Une instruction de lecture permet à l’utilisateur de rentrer des valeurs au clavier pour
qu’elles soient utilisées par le programme :
Lire(variable1, variable2…)
Remarques :
1. La saisie se fait uniquement dans des variables.
2. La donnée à introduire doit être de même type que la variable réceptrice.

Instruction d’écriture
 Une instruction d’écriture permet au programme de communiquer des valeurs à
l’utilisateur en les affichant à l’écran :
Ecrire (paramètre1,paramètre2…)
paramètre = variable | expression | constante

Exemple:
17
Ecrire(" La valeur de 3*2 est égale à ", 3*2)
  Ecrire(" La moyenne est = ", MOY)
LES INSTRUCTIONS
Instruction d’affectation
Affecter une variable c’est lui attribuer une valeur.
variable  valeur ou expression
Exemple : note18
note A+B
moyenne  (note1+note2)/2

Remarques :
 Comptabilité entre le contenant et le contenu

 Une variable désigné doit être au préalable déclarée

18
LES INSTRUCTIONS

Question1 : Quelles seront les valeurs des variables A et B après exécution des
instructions suivantes ?

Algorithme affectation
variables A, B : Entier
Début
A←2
B ← 14
C←A+B
B←A+B
A←C
Fin
 
Réponse1 : A = 16        B = 16        C = 16
19
LES INSTRUCTIONS
Question2 : écrire un algorithme permettant d’échanger les valeurs de deux
variables A et B, et ce quel que soit leur contenu préalable.

Réponse2 :
Algorithme Permutation
variables A, B, C : Entier
Début
lire(A,B)
C←A
A← B
B←C
Fin

 On est obligé de passer par une variable dite temporaire (la variable C).
20
EXPRESSIONS
Expressions
Expression sur les objets : Une expression est une suite d’opérandes reliés par des opérateurs.
 
Une expression peut être
 arithmétique : on utilisera les opérateurs +,-,/, *, ^
 logique : les opérateurs utilisés sont ET, OU, et NON

 relationnelle : les opérateurs utilisés sont <, <=, >, >=, =, <>

Ordre de priorité
Les opérateurs suivants sont ordonnés du plus prioritaire au moins prioritaire dans
l'évaluation
d'une expression arithmétique.
1- Les parenthèses
2-  "- " un aire
3-  Les fonctions
4-  Les opérateurs de multiplication " * " et de division " / " 21
5-  Les opérateurs d'addition " + " et de soustraction " - "
EXPRESSIONS
Remarque
Si l'ordre entre les opérateurs dans une expression est le même, on évalue
l'expression de gauche à droite.

Exemples
• 3*2+4 = 6+4=10

• 3*(2+4)=3*6 car les parenthèses sont plus prioritaires


• 17 MOD 10 DIV 3=(17MOD10)DIV3=7DIV3=2

22
EXPRESSIONS
Remarques Importantes
 Toute variable utilisée dans un algorithme doit être déclarée au début de l'algorithme,
une fois et une seule.

 L'affectation de valeur à une variable peut être effectuée autant de fois que l'on veut au
cours d'un algorithme. La valeur de la variable sera alors modifiée à chaque affectation.

 Lorsqu'une variable apparaît en partie droite d'une action d'affectation, c'est que l'on
suppose qu'elle contient obligatoirement une valeur. Cette valeur devra lui avoir été
affectée auparavant (par initialisation ou saisie), sinon l'on dira que la valeur est
indéfinie, et le résultat de l'affectation ne sera pas défini.

 La variable réceptrice d'une affectation doit être de même type que de la valeur à
affecter ou de type compatible. Le type est dit compatible s'il est inclus dans le type de
la variable réceptrice.
Exemple : REEL ¬ ENTIER est possible mais pas l'inverse.
23
EXERCICE
 Ecrire un programme qui demande un nombre à l’utilisateur, puis qui calcule et
affiche le carré de ce nombre.

Algorithme carré
Variables nb, carr : Entier
Début
Ecrire (”Entrez un nombre :”)
Lire nb
carr  nb * nb
Ecrire (”Son carré est : ”, carr)
Fin

 En fait, on pourrait tout aussi bien économiser la variable carr en remplaçant les
deux avant-dernières lignes par :
Ecrire ”Son carr´e est : ”, nb*nb
24
Cours N° 2

Plan
 Structure alternative
 Les structures répétitives (boules)

25
LA STRUCTURE ALTERNATIVE 
 L’instruction Si …alors ... Fin Si
Si condition Alors
Instruction (ou suite d'instructions)
Fin si

Exemple
Algorithme égalité
Variables nb1, nb2 : Entier
Début
Ecrire (”Entrez deux nombres :”)
Lire (nb1, nb2)
si nb1=nb2 alors
Ecrire (”égalité”)
Fin si
Fin

 L’instruction Si …alors …Sinon …Fin Si


Si condition Alors
Instruction (ou suite d'instructions)
Sinon 26
Instruction (ou suite d'instructions)
Fin si
LA STRUCTURE ALTERNATIVE 
Exercice
Etant donné deux entiers a et b, trouver le maximum m=max(a,b) et afficher le
résultat à l’écran.

Réponse:
Algorithme max2
variables a , b, m: Entier

Début
lire(a,b)
si a>b alors
m  a
sinon
m  b 
fin si
écrire(m) 27
Fin
L'INSTRUCTION CAS
Lorsque l’on doit comparer une même variable avec plusieurs valeurs, comme par
exemple :

si a=1 alors
instructions1
sinon
si a=2 alors
instructions2
sinon
si a=4 alors
instructions3
sinon
...
finsi
finsi
finsi
28

 On peut remplacer cette suite de si par l’instruction cas


L'INSTRUCTION CAS
cas où v vaut
v1 : action1
v2 : action2
...
vn : actionn
autre : action autre
fincas

 v1,. . . ,vn sont des constantes de type scalaire (entier, naturel, enuméré,
ou caractère)
 actioni est exécutée si v = vi (on quitte ensuite l’instruction cas)

action autre est exécutée si quelque soit i, v ≠ vi

29
L'INSTRUCTION CAS
Exemple

Algorithme
Variables c : caractère
Début
Ecrire(”entrer un caractère”)
Lire (c)
Si( (c>=’A’) et (c<=‘Z’) ) alors
cas où c vaut
‘A’,’E’, ‘I’, ‘O’, ‘U’, ‘Y’ : ecrire(c, ”est une voyelle majuscule”)
autre : ecrire(c, ”est une consonne majuscule”)
fincas
sinon ecrire(c, ”n’est pas une lettre majuscule”)
Finsi
Fin 30
LES STRUCTURES RÉPÉTITIVES 
 La structure Pour
pour compteur  val_initial à val_final faire
Instructions à répéter
Fin pour

Exemple
Ecrire un algorithme qui demande un nombre, et qui calcule la somme des entiers jusqu'à ce
nombre. Si l'on tape 4, le résultat= 1+2+3+4=10

Algorithme Somme_Nombres
variables i, val, s : Entier
Début
Ecrire (" entrer un nombre entier:")
Lire (val)
s 0
pour i  1 à val faire
s  s+i
31
Finpour
Ecrire (" la somme des nombres de 1 à ", val, "est ", s)
Fin
LES STRUCTURES RÉPÉTITIVES 
 La structure tant que
Tantque condition de continuation Faire
Instructions à répéter
FinTantque

Exemple
Contrôle de saisie d'une lettre alphabétique jusqu’à ce que le caractère entré soit valable.

Algorithme lettre
Variable C : caractère
Début
Écrire (" Entrez une lettre majuscule ")
Lire (C)
TantQue (C < 'A' ou C > 'Z')
Ecrire ("Saisie erronée. Recommencez")
Lire (C)
FinTantQue 32

Ecrire ("Saisie valable")


Fin
LIEN ENTRE POUR ET TANTQUE
Pour compteur initiale à finale par pas valeur du pas
instructions
FinPour

peut être remplacé par :

compteur ← initiale (cas d'un pas positif)


TantQue compteur <= finale
instructions
compteur ← compteur+pas
FinTantQue

33
LES STRUCTURES RÉPÉTITIVES 
 La structure répéter
Répéter
Instruction à répéter
Jusqu’à condition

Exemple
Un algorithme qui détermine le premier nombre entier N tel que la somme
de 1 à N dépasse strictement 100 (version avec répéter jusqu'à)

Algorithme somme
Variables som, i : entier
Début
som ← 0
i←0
Répéter
i ← i+1
som ← som+i
34
Jusqu'à ( som > 100)
Ecrire (" La valeur cherchée est N= ", i)
Fin
DIFFÉRENCES ENTRE LES BOUCLES TANT QUE ET RÉPÉTER JUSQU'

 la séquence d'instructions est exécutée au moins une fois dans la boucle


Répéter jusqu'à, alors qu'elle peut ne pas être exécutée dans le cas du Tant
que.

 la séquence d'instructions est exécutée si la condition est vraie pour Tant


que et si la condition est fausse pour Répéter jusqu'à.

 Dans les deux cas, la séquence d'instructions doit nécessairement faire


évoluer la condition, faute de quoi on obtient une boucle infinie.

35
CHOIX D'UN TYPE DE BOUCLE
 Si on peut déterminer le nombre d'itérations avant l'exécution de la boucle,
il est plus naturel d'utiliser la boucle Pour

 S'il n'est pas possible de connaître le nombre d'itérations avant


l'exécution de la boucle, on fera appel à l'une des boucles TantQue ou répéter
jusqu'à

 Pour le choix entre TantQue et jusqu'à :


• Si on doit tester la condition de contrôle avant de commencer les
instructions de la boucle, on utilisera TantQue
• Si la valeur de la condition de contrôle dépend d'une première exécution
des instructions de la boucle, on utilisera répéter
jusqu'à

36
LES STRUCTURES RÉPÉTITIVES 
Exercice
Ecrire un algorithme qui demande un nombre de départ, et qui calcule la
somme des entiers jusqu’à ce nombre.
Par exemple, si l’on entre 5, le programme doit calculer :
1 + 2 + 3 + 4 + 5 = 15

Proposer 3 réponse avec les trois boucles.

37
LES STRUCTURES RÉPÉTITIVES
R1 :
Algorithme Somme
variables nombre, s : Entier
Début
lire(nombre)
s  0
pour i  1 à nombre faire
s  s + i 
fin pour
Fin
--------------------------------------------------------------------------------------------------------------
R2 :
Algorithme Somme
variables nombre , s, i: Entier
Début
lire(nombre)
s  0
i0
tant que i <= nombre faire
38
s  s + i 
fin tant que
Fin
LES STRUCTURES RÉPÉTITIVES
R3 :
Algorithme Somme
variables nombre , s, i: Entier
Début
lire(nombre)
s  0
i 1
répéter
s  s + i 
jusqu’à i = nombre
Fin

39
Cours N° 3

Plan
 Les tableaux
 Les enregistrements

40
TABLEAUX INTRODUCTION

 Supposons qu'on veut conserver les notes d'une classe de 30 étudiants pour
extraire quelques informations. Par exemple : calcul du nombre d'étudiants
ayant une note supérieure à 10

 Le seul moyen dont nous disposons actuellement consiste à déclarer 30


variables, par exemple N1, …, N30. Après 30 instructions lire, on doit écrire
30 instructions Si, pour faire le calcul

nbre ← 0
Si (N1 >10) alors nbre ←nbre+1 FinSi
….
Si (N30>10) alors nbre ←nbre+1 FinSi
c'est lourd à écrire

 Heureusement, les langages de programmation offrent la possibilité de


rassembler toutes ces variables dans une seule structure de donnée appelée
tableau
41
TABLEAUX

 Un tableau est une variable structurée composée d’un nombre de variables


simples de même type désignées par un seul identificateur

 Ces variables simples sont appelées éléments ou composantes du tableau,


elles sont stockées en mémoire à des emplacements contigus (l’un après
l’autre)

 Le type des éléments du tableau peut être :


 simple : caractère, entier, réel…..
 pointeur ou structure (chapitres suivants)

 On peut définir des tableaux :


 à une dimension (tableau unidimensionnel ou vecteur)
 à plusieurs dimensions (tableau multidimensionnel , matrice)

42
DÉCLARATION D'UN TABLEAU
Une variable de type tableau est déclarée selon la syntaxe suivante :
Type-elem nom-tableau[borne_inf . . borne_sup]

type-elem : le type des éléments du tableau,


nom-tableau : le nom du tableau,
borne_inf : indices du premier élément,
borne_sup : indices du dernier élément

Si borne_inf > borne_sup alors le tableau est vide.


Nous pouvons utiliser également la déclaration suivante :
nom-tableau : tableau[dimension du tableau] de Type-elem
Exemples
entier tab1[1..10]
réel tab2[12..44]
Notes : tableau[1..9] de réel
Notes : tableau[9] de réel 43
entier tab1[10]
DÉCLARATION DES TABLEAUX

Variables de
type entier
Exemple
entier tab1[1..10] tab1: 21 100 6 ....
réel tab2[12..44] 1 2 .... 8 9 10

indices
Variables de
type réel

Tab2: 4,5 10 12,5 ....


12 13 14 .... 42 43 44

indices

44
ACCÈS À UN ÉLÉMENT DU TABLEAU
 tab1[8] : désigne l'élément d'indice 8 dans le tableau tab1, autrement dit le
8ème élément du tableau.
 tab2[14] désigne l'élément d'indice 14 dans le tableau tab2, autrement dit le
3ème élément du tableau.

 Les instructions de lecture, écriture et affectation s'appliquent aux tableaux


comme aux variables.
 x ← tab1[1] La variable x prend la valeur du premier élément du tableau,
c'est à dire :21
tab1: 21 100 6 ....
1 2 .... 8 9 10
 tab1[2] ← 43 la valeur de la case indice 2 est remplacée par 43

tab1: 21 43 6 ....
1 2 .... 8 9 10
45
PARCOURS DES ÉLÉMENTS D'UN TABLEAU

Algorithme InitTableau
Variables i : entier
entier tab[0..19]

Début
pour i de 0 à 19 faire
tab[i] ← i
Ecrire(tab[i] )
fpour
Fin
0 1 2 3 .. .. 19

46
TABLEAU
Exercice
Ecrire un algorithme qui demande à l’utilisateur de saisir 30 valeurs pour initialiser un tableau et
calcule la somme des ses éléments.
Algorithme tableau_somme
Variables i,S : entier
entier tab[1..30]
Début
//Chargement du tableau
pour i ← 1 à 30 faire
ecrire("saisir la valeur numero", i)
lire(tab[i])
Fpour
//Calcul de la somme des éléments du tableau
S← 0
pour i ← 1 à 30 faire
S ← S+tab[i]
fpour
ecrire(S) 47

Fin
LES TABLEAUX À DEUX DIMENSIONS

Les tableaux à deux dimensions ou matrices

Ce tableau a 3 lignes et 4 colonnes.


Les éléments du tableau sont repérés par leur numéro de ligne et leur numéro de colonne.

0 1 2 3

0 34 3 67 76
1 7 67 33 56
2 89 12 133 75

Déclaration de la matrice:
Type-elem nom-tableau[Première dimension, Deuxième dimension]
Exemple:
entier Tab[3,4]
Tab[2, 1] = 12 48
LES TABLEAUX À DEUX DIMENSIONS
Algorithme InitTableau2D
Variables i , j : entier
entier tab[2,4]
Début
pour i de 0 à 1 faire
pour j de 0 à 3 faire
tab[i,j] ← 0
Ecrire(tab[i,j])
fpour
fpour
Fin

Exercice: écrire un algorithme qui demande à l’utilisateur de saisir 12


valeurs pour initialiser un tableau avec 4 lignes et 3 colonnes et calcule la 49
somme des éléments de chaque ligne.
LES TABLEAUX À DEUX DIMENSIONS
Exercice: écrire un algorithme qui permet de déclarer un tableau de 4
lignes et 3 colonnes, de saisir les 12 valeurs du tableau et de calculer la
somme des éléments de chaque ligne et del’afficher

Algorithme somme_Tableau2D pour i de 0 à 3 faire


Variables i , j : entier Somme ← 0
entier tab[4,3] pour j de 0 à 2 faire
entier v[4] somme ← somme+(tab[i,j])
Somme: entier fpour
Début V[i] ← Somme
pour i de 0 à 3 faire fpour
pour j de 0 à 2faire
ecrire("tab[" ,i, ", ",j, "j] = " ) Pour i de 1 à 4 faire
lire (tab[i,j]) ecrire (" somme ligne ",i, "=",v[i-1])
fpour fpour
50
fpour Fin
EXERCICES TABLEAUX A UNE DIMENSION
Ecrire un algorithme permettant de résoudre le problème suivant :
– Données : un tableau tableau contenant 100 entiers
– Résultat : “vrai” si le tableau est trié du plus petit au plus grand et “faux” sinon

Algorithme tri
variables
entier tableau[100], i
trié : booléen
début
triévrai
i0
tant que (trié = vrai) et (i < 99) faire
Si (tableau[i ] > tableau[i+1]) alors
trié faux
finsi
i  i +1
finTantQue

Si (trié=vrai) alors
écrire ("vrai, le tableau est trié du plus petit nombre au plus grand")
Sinon écrire ("tableau non trié" )
51
finsi
fin
EXERCICES TABLEAUX A UNE DIMENSION
Ecrire un algorithme permettant de résoudre le problème suivant :
– Données : un tableau tableau contenant 100 entiers
– Résultat : “vrai” si les entiers sont consécutifs et “faux” sinon
Rappel : deux entiers x et y sont consécutifs si et seulement si y= x+1.
Algorithme Consécutifs
variables
entier tableau[100]
i: entier
Consécutifs : booléen
début
Consécutifs vrai
i0
tant que (Consécutifs = vrai) et (i < 99) faire
Si (tableau[i +1] ≠ tableau[i ] + 1) alors
Consécutifs faux
finsi
i  i +1
finTantQue
Si (Consécutifs = vrai) alors
écrire (‘‘vrai, les entiers sont consécutifs’’)
Sinon écrire (‘‘faux’’)
finsi 52
fin
ENREGISTREMENT (VARIABLES STRUCTURÉES)
Définition
Un enregistrement(appelé aussi article ou record en englais) est une structure composée d’un
nombre fixe d’éléments qui peuvent être de types différents.les éléments d’un enregistrement
sont appelés champs, et peuvent être à leur tour des structures(tableaux, enregistrements…)

Déclaration de l’enregistrement
Type
Nom_type = Enregistrement
Champ_1 : Type_ Champ_1
: :
Champ_n : Type_ Champ_n
Fin Nom_type

Déclaration d’une variable structurée


Variable
nom_variable : Nom_type

53
ENREGISTREMENT
Exemple: déclaration d’un enregistrement ‘étudiant’ et des variables ‘étudiant1’ et ‘étudiant2’.
Enregistrement
Type
étudiant = enregistrement
nom, prénom : Chaîne
sexe : Caractère
numéro : Entier
moyenne : Réel
Fin étudiant

Objet (variable)
Variables
étudiant1 : étudiant
étudiant2 : étudiant 54
ENREGISTREMENT
Accès aux champs d'un enregistrement

 les champs d'un enregistrement sont accessibles à travers leur nom, grâce à
l'opérateur '.'
nom_enregistrement.nom_champ : représente la valeur mémorisée dans le champ
de l'enregistrement
 Pour accéder au nom de la variable étudiant2, on utilise l'expression:

étudiant2.nom

55
ENREGISTREMENT
Exemple
Type
Etud = enregistrement
Nom, prénom:chaine
Notes [1..9] : réel { le champ notes est de type tableau }
Moy_générale :réel
Resutat: (admis,ajourné) { variable de type énuméré}
FinEtud

Variable
PV: tableau[1..600] de ETUD {exemple de tableau dont les éléments sont des
enregistrements}

56
ENREGISTREMENT
Exemple: algorithme de saisie des données concernant les personnes pers1 et pers2, puis affichage de la différence
d'âge entre ces deux personnes.

Algorithme âge
Type
tpersonne=enregistrement
nom : chaîne
prénom : chaîne
âge : entier
Fintpersonne

Variables
pers1, pers2 : tpersonne
Début
écrire ("Entrez le nom puis l‘âge de la personne 1")
lire (pers1.nom, pers1.age) {il est impossible d'écrire lire pers1}
écrire ("Entrez le nom puis l'âge de la personne 2")
lire (pers2.nom , pers2.age)
écrire ("La différence d'âge entre ", pers1.nom, " et ", pers2.nom , " est de " )
Si (pers1.age > pers2.age) Alors
écrire (pers1.age – pers2.age , " ans ")
Sinon 57
écrire(pers2.age– pers1.age , " ans ")
FinSi
Fin
ENREGISTREMENT
Un type structuré peut être utilisé comme type pour des champs d'un autre type structuré
TYPE
date = enregistrement
jour: entier
mois: chaîne Une autre manière de
année: entier déclarer le type
enregistrement
Findate

personne = enregistrement
nom: chaîne
ddn: date
Finpersonne

Pour accéder à l'année de naissance d'une personne, il faut utiliser deux fois l'opérateur '.'
pers1.ddn.année

Il faut lire une telle variable de droite à gauche : l'année de la date de naissance de la
personne 1. 58
UN TABLEAU COMME CHAMP D’UN ENREGISTREMENT

Il est possible aussi qu'un champ de type structuré soit de type tableau,
voire tableau structuré !

Exemple d'un type structuré (enregistrement) contenant un tableau simple


Imaginons une structure mémorisant des critères géographiques de villes
(altitude, type de climat, …).
Certains de ces critères pourraient pertinemment être mémorisés pour
chaque mois de l'année (par exemple température moyenne,
précipitations moyennes, …)

59
UN TABLEAU COMME CHAMP DE STRUCTURE
 Algorithme
Type
Écrire("Veuillez entrer successivement les
Ville= enregistrement températures moyennes sur les 12 mois" )
Nom : chaîne //on utilise une boucle pour remplir le tableau des
Alt : entier //Altitude moyenne températures
Climat : Chaîne //type de climat Pour i de 1 jusqu'à 12 Faire
Temp : tableau[1..12] de réel //température écrire("mois ", i )
moyenne par mois lire MaVille.Temp[i]
Précip : tableau[1..12] de réel //précipitations FinPour
moyennes par mois
//idem pour les précipitations
FinVille
Fin
variable
Si on veut afficher par exemple la température
MaVille : Ville moyenne au mois de juillet de MaVille, on
Début écrit tout simplement :
écrire("Nom de la ville? " )
lire MaVille.Nom écrire MaVille.Temp[7] // vu que le tableau
//idem pour l'altitude et le climat commence à 1, 7 est l'indice de juillet
LES TABLEAUX D'ENREGISTREMENTS (OU TABLES)
Il arrive souvent que l’on veuille traiter non pas un seul enregistrement mais plusieurs.
Par exemple, on veut pouvoir traiter un groupe de personne. On ne va donc pas créer autant
de variables du type personne qu’il y a de personnes.
On va créer un tableau regroupant toutes les personnes du groupe.
Il s’agit alors d’un tableau d’enregistrements, autrement appelé « table ». Une table en
algorithmique a beaucoup de points communs avec une table d’une base de donnée. Les
colonnes sont appelées champs et les lignes enregistrements.
Exemple
Type
Structure personne
nom: chaîne
age: entier
FinStruct
Var
groupe: tableau[1..20] de personnes
Chaque élément du tableau est un enregistrement, contenant plusieurs variables de type
différent.
61
LES TABLEAUX D'ENREGISTREMENTS (OU TABLES)
On accède à un enregistrement par son indice dans le tableau.
groupe[2] représente la deuxième personne du groupe
groupe[2].nom représente le nom de la deuxième personne du groupe

Attention!
groupe.nom[3] n'est pas valide.
Pour accéder au nom de la troisième personne du tableau, il faut écrire 62
groupe[3].nom

Vous aimerez peut-être aussi