Formation en Algorithmique et Programmation
Formation en Algorithmique et Programmation
Reproduction interdite
Objectifs du cours
Reproduction 2
Evaluation
Reproduction 3
Enseignement
Cour magistral
TD/TP
Reproduction 4
COMPETENCES À ACQUERIR
Reproduction 5
Contenu du cours
1. Concepts de base 4. Types structurés
Structure d’un algorithme Les tableaux
Variables et constantes Les matrices
Les pointeurs
Types de données
Les listes
2. Expression et instructions Les files
élémentaires Les piles
Expressions
5. Fonctions et
Instruction Lire, Ecrire, procédures
3. Structures de contrôle 6. Enregistrements et
Structures alternatives les fichiers
Structures conditionnelles 7. Optimisation des
Structures itératives algorithmes
Reproduction 6
Cours d’algorithmique
CHAPITRE I
Introduction
Reproduction 7
Historique
Reproduction 10
Pourquoi L’ALGORITHMIQUE ?
Reproduction 11
LA DEMARCHE ALGORITHMIQUE
Elle se déroule en deux grande phases :
1.Phase d’analyse :
Comprendre et/ou analyser la nature du
problème posé pour :
Préciser les données fournies (Entrées)
Préciser les résultats que l’on désire obtenir
(Sorties)
Déterminer le processus de transformation
ou les traitements des données en résultats.
2.Phase de conception :
Organiser les traitements définis en phase
précédente dans l’ordre convenable de telle
Reproduction
sorte que leur exécution aboutisse au résultat 12
PROPRIETE D’UN ALGORITHME
Un algorithme doit:
avoir un nombre fini d’étapes,
avoir un nombre fini d’opérations par étape,
se terminer après un nombre fini d’opérations,
fournir un résultat.
les séquences (étapes) se succèdent dans un certain
ordre
Chaque opération doit être définie rigoureusement et
sans ambiguïté
Un algorithme est caractérisé par un début et une fin
Le comportement
Reproduction
d'un algorithme est déterministe. 13
ALGORITHME & PROGRAMME
L’élaboration d’un algorithme précède l’étape de programmation
Un programme est un algorithme
Un langage de programmation est un langage compris par
l'ordinateur
Comment exécuter un algorithme sur ordinateur ?
Il faut traduire cet algorithme à l’aide d’un langage de
programmation connu par l’ordinateur.
L’élaboration d’un algorithme est une démarche de résolution de
problème exigeante
La rédaction d’un algorithme est un exercice de réflexion qui se
fait sur papier
L'algorithme est indépendant du langage de programmation
Par exemple, on utilisera le même algorithme pour une
implantation en Java, ou bien en C ou en PHP
Reproduction 14
Convention D’ECRITURE : L’ORGANIGRAMME
Reproduction 15
Convention D’ECRITURE : le pseudo-code ou LDA
Reproduction 16
Convention D’ECRITURE : le pseudo-code ou LDA
Remarque
importante
Ce pseudo-code peut varier d’un ouvrage à un autre
puisqu’il est purement conventionnel (Aucune machine
n’est sensé le reconnaitre)
Exemples
Reproduction 18
Convention D’ECRITURE : le pseudo-code ou LDA
Algorithme Produit_2_nombres L’entête de
variables a : entier l’algorithme
Déclaration des
b : entier
variables et
DEBUT constantes
Ecrire("saisir un entier a : ")
Lire(a)
Ecrire("saisir un entier b : ")
Lire(b)
SI ((a=0) OU (b=0)) ALORS Corps de
Ecrire ("Le produit est nul") l’algorithme
SINON SI ((a<0) ET (b<0) OU (a>0) ET (b>0))
ALORS
Ecrire ("Le produit est
positif")
SINON Ecrire ("Le produit est négatif")
FINSI
FIN Reproduction 19
Cours d’algorithmique
CHAPITRE II
Les types de variables
Reproduction 20
C’est quoi une variable ?
Reproduction 21
Les types de DONNEES
Reproduction 22
Les types NUMERIQUES
Reproduction 23
CHOIX DES IDENTIFICATEURS
Le choix des noms de variables est soumis à quelques
règles :
Reproduction 25
Les constantes
Reproduction 26
EXPRESSION & OPERATEURS
Une expression peut être une valeur, une variable ou une
opération constituée de variables reliées par des opérateurs
exemples : 1, b, a*2, a+3*b-c, …
L'évaluation de l'expression fournit une valeur unique qui est le
résultat de l'opération
Les opérateurs dépendent du type de l'opération, ils peuvent
être :
des opérateurs arithmétiques :
+, -, *, /, div, % (modulo), ^ (puissance)
a = b * q + r avec r < b, q = a div b, r = a mod
b
des opérateurs logiques : NON, OU, exclusif (XOR), ET
des opérateurs relationnels : =, <, >, <=, >=, <>
des opérateurs sur les chaînes : & (concaténation)
Reproduction 27
Une expression est évaluée de gauche à droite mais en tenant
PRIORITE DES OPERATEURS
Pour les opérateurs arithmétiques donnés ci-
dessus, l'ordre de priorité est le suivant (du plus
prioritaire au moins prioritaire) :
1) ^ : (élévation à la puissance)
2) * , / , div (multiplication, division, division
entière)
3) % (modulo)
4) + , - (addition, soustraction)
exemple : 2 + 3 * 7 vaut 23
En cas de besoin (ou de doute), on utilise les
parenthèses pour indiquer les opérations à
effectuer en priorité
Reproduction 28
Cours d’algorithmique
CHAPITRE III
L’instruction d’affectation
Reproduction 29
L’instruction d’affectation
Reproduction 30
Les types d’affectation : Type 1
Nom_variable
valeur_de_meme_type
Exemples Pi3,14
:
prenom˝Algorithme˝
age24
i0
Facture_payeeVRAI
Choix ‘Y‘;
Reproduction 31
Les types d’affectation : Type 2
Nom_variable
variable_de_meme_type
Exemples prenom1˝Snoopy˝
:
prenom2˝Daniel˝
Prenom2prenom1
Reproduction 32
Les types d’affectation : Type 3
Nom_variable
expression_retournant_meme_type
Exemples ki+j
:
consommationnouvel_index –
ancien_index
moyennesomme_notes / nombre_eleves
TVAHT*0,2
Reproduction 33
EXERCICE SIMPLE SUR L’affectation
Donnez les valeurs des variables A, B et C
après exécution des instructions suivantes ?
Variables A, B, C: entier
DEBUT
A -3
B 7
A B
B A-5
C A + B
C B – A
FIN
Reproduction 34
EXERCICE SIMPLE SUR L’affectation
Donnez les valeurs des variables A et B après
exécution des instructions suivantes ?
Variables A, B : entier
DEBUT
A 4
B 9
A B
B A
FIN
Reproduction 35
EXERCICE SIMPLE SUR L’affectation
Reproduction 36
Cours d’algorithmique
CHAPITRE IV
Lecture & ECRITURE
Reproduction 37
Instructions de lecture et d’ecriture
Reproduction 38
ecriture
Ecriture Afficher à
l’écran
Reproduction 39
Lecture
lecture Saisir au clavier et affecter ce qui est saisi aux
variables déjà définies
Syntaxe Exemples
Lire(a)
Lire(nom_variable)
Lire(TVA)
Lire(note)
Reproduction 40
Exercice
Reproduction 41
Solution de l’exercice
Algorithme Somme
Variables a : Entier
b : Entier
S : Entier
DEBUT
Ecrire(˝saisir a :˝)
Lire(a)
Ecrire(˝saisir b :˝)
Lire(b)
Sa+b
Ecrire(˝La somme est :˝,S)
FIN
Reproduction 42
Cours d’algorithmique
CHAPITRE V
Les INSTRUCTIONS CONDITIONELLES
Reproduction 43
LES INSTRUCTIONS
CONDITIONNELLES
Reproduction 44
TESTS : LES INSTRUCTIONS CONDITIONNELLES
On utilisera la forme
suivante : SI (condition) ALORS
instruction ou suite
d'instructions1
SINON
instruction ou suite
d'instructions2
La condition ne peut
FINSIêtre que vraie ou fausse
Si la condition est vraie, se sont les instructions1 qui
seront exécutées
Si la condition est fausse, se sont les instructions2 qui
seront exécutées
La condition peut être une condition simple ou une
condition composée de plusieurs conditions
Reproduction 45
TESTS : LES INSTRUCTIONS CONDITIONNELLES
SI (condition) ALORS
instruction ou suite
d'instructions1
SINON
instruction ou suite
d'instructions2
FINSI
Reproduction 46
EXEMPLE
Algorithme : Test
Variable X : entier
DEBUT
Écrire(" Saisir un entier X ")
Lire(X)
SI (x > 0) ALORS
Écrire(" X est un nombre positif ")
SINON
Écrire(" X est un nombre négatif ou nul
")
FINSI
FIN
Reproduction 47
EXERCICE
Reproduction 48
SOLUTION DE L’EXERCICE
Algorithme Affichage_Valeur_Absolue (version1)
Variable x : réel
DEBUT
Ecrire(" Entrez un réel : ")
Lire(x)
SI (x < 0) ALORS
Ecrire("La valeur absolue de ", x,
"est :",-x)
SINON
Ecrire("La valeur absolue de ", x,
"est :",x)
FINSI
FIN
Reproduction 49
TESTS : LES INSTRUCTIONS CONDITIONNELLES
SI (condition) ALORS
instruction ou suite
d'instructions1
FINSI
Reproduction 50
EXEMPLE
Algorithme Affichage_Valeur_Absolue
(version2)
Variable x,y : réel
DEBUT
Ecrire(" Entrez un réel : ")
Lire(x)
y x
SI (x < 0) ALORS
y -x
FINSI
Ecrire("La valeur absolue de ", x, "est :",y)
FIN
Reproduction 51
EXERCICE
Reproduction 52
SOLUTION DE L’EXERCICE
Algorithme Divsible_par3
Variable n : entier
DEBUT
Ecrire(" Entrez un entier : ")
Lire(n)
SI (n%3=0) ALORS
Ecrire(n," est divisible par 3")
SINON
Ecrire(n," n'est pas divisible par 3")
FINSI
FIN
Reproduction 53
Conditions COMPOSEES
Une condition composée est une condition
formée de plusieurs conditions simples reliées
par des opérateurs logiques :
ET,
ET OU,
OU OU exclusif (XOR) et NON
Exemples :
Reproduction 55
EXEMPLE (1)
Expression Résultat
(4<7) ET (9>0) Vrai
(1<0) OU (1<>1) Faux
NON(13.4<15)
NON Faux
Reproduction 56
TESTS IMBRIQUEES
Les tests peuvent avoir un degré quelconque
d'imbrications
SI condition1 ALORS
SI condition2 ALORS
instructionsA
SINON
instructionsB
FINSI
SINON
SI condition3 ALORS
instructionsC
FINSI
FINSI
Reproduction 57
TESTS IMBRIQUEES : EXEMPLE (VESRION
1) Variable n : entier
DEBUT
Ecrire("entrez un nombre : ")
Lire(n)
SI (n < 0) ALORS
Ecrire("Ce nombre est négatif")
SINON
SI (n = 0) ALORS
Ecrire("Ce nombre est nul")
SINON
Ecrire("Ce nombre est positif")
FINSI
FINSI
FIN
Reproduction 58
TESTS IMBRIQUEES : EXEMPLE (VESRION
2) Variable n : entier
DEBUT
Ecrire("entrez un nombre : ")
Lire(n)
SI (n < 0) ALORS
Ecrire("Ce nombre est négatif")
FINSI
SI (n = 0) ALORS
Ecrire("Ce nombre est nul")
FINSI
SI (n > 0) ALORS
Ecrire("Ce nombre est positif")
FINSI
FIN
Reproduction 59
TESTS IMBRIQUEES : EXEMPLE (VESRION
2)
Reproduction 60
EXERCICE
Reproduction 61
SOLUTION DE L’EXERCICE
Variable Temp : réel
DEBUT
Ecrire(" Entrez la température de l’eau : ")
Lire (Temp)
SI (Temp <= 0 ) ALORS
Ecrire("C’est de la glace ")
SINON
SI (Temp < 100) ALORS
Ecrire("C’est du liquide ")
SINON
Ecrire("C’est de la vapeur ")
FINSI
FINSI
FIN
Reproduction 62
EXERCICE
Reproduction 63
SOLUTION DE L’EXERCICE
Algorithme mention
Variables note : Réel
mention : Chaîne
DEBUT
Ecrire(˝saisir la note :˝)
Lire(note)
SI (note < 10) ALORS mention ˝Ajourné˝
SINON SI (note < 12) ALORS mention ˝Passable˝
SINON SI (note < 14) ALORS mention ˝Assez
Bien˝
SINON SI (note < 16) ALORS mention
˝Bien˝
SINON mention ˝Très Bien˝
FINSI
FINSI
FINSI
FINSI
Ecrire(˝La mention est:˝, mention)
FIN
Reproduction 64
EXERCICE
Reproduction 65
SOLUTION DE L’EXERCICE
Variables A, B, C : entiers
DEBUT
Ecrire("Donner A, B et C ") ;
Lire(A, B, C) ;
SI (A > B) ALORS
SI (A > C) ALORS
Ecrire("Le plus grand nombre est : ", A)
SINON
Ecrire ("Le plus grand nombre est : ", C)
FINSI
SINON
SI (B > C) ALORS
Ecrire("Le plus grand nombre est : ", B)
SINON
Ecrire("Le plus grand nombre est : ", C)
FINSI
FINSI
FIN
Reproduction 66
Exercice
Reproduction 67
Solution de l’exercice
Algorithme carré
Variables Nombre : Entier
Carre : Entier
DEBUT
Ecrire(˝saisir le nombre :˝)
Lire(Nombre)
SI (Nombre > 0) ALORS
Carre Nombre*Nombre
Ecrire(˝Le carré est˝, Carre)
FINSI
FIN
Reproduction 68
Exercice
Reproduction 69
Solution de l’exercice
Algorithme calcul_taxe
Variables CA : Réel
taxe : réel
DEBUT
Ecrire(˝saisir le chiffre d’affaire :˝)
Lire(CA)
SI (CA < 100000) ALORS
taxe CA*0,1
SINON
taxe CA*0,2
FINSI
Ecrire(˝La taxe est˝, taxe)
FINSI
FIN
Reproduction 70
TESTS IMBRIQUEES : AUTRE
FORMELa structure alternative peut prendre une autre forme
qui permet d’imbriquer plusieurs conditions.
SELON Expression
Valeur1 : action1
Valeur2 : action2
.........
ValeurN : actionN
SINON : action
FINSELON
Reproduction 72
Solution de l’exercice
Algorithme calcul_abonnement
Variables QH : Entier (*Qualité SELON (QH) FAIRE
abonné*)
1 : TR -0,15
TN : Réel (*Tarif normal*)
2 : TR -0,1
TR : Réel (*Taxe de remise*)
3 : TR -0,2
R : Réel (*Remise*)
4 : TR -0,3
PAP : Réel (*Prix à payer*)
SINON : Ecrire(˝valeur incorrecte˝)
DEBUT
FINSELON
Ecrire(˝***** MENU *****˝)
R TN * TR
Lire(TN)
PAP TN + R
Ecrire(˝saisir le tarif normal:˝)
Ecrire(˝Le prix à payer est :˝,PAP)
Ecrire(˝1: Ancien abonné˝)
FIN
Ecrire(˝2: nouvel abonné˝)
Ecrire(˝3: Etudiant˝)
Ecrire(˝4: Enfant de moins de 12 ans˝)
Ecrire(˝Choisir la qualité de l’abonné˝)
Lire(QH)
Reproduction 73
Cours d’algorithmique
CHAPITRE VI
Les instructions ITERATIVES (les
boucles)
Reproduction 74
Les instructions ITERATIVES (les boucles)
Reproduction 76
LA boucle « TANT QUE … FAIRE… »
Reproduction 77
LA boucle « TANT QUE … FAIRE… » : REMARQUES
Le nombre d'itérations dans une boucle TANTQUE n'est
pas connu au moment d'entrée dans la boucle. Il
dépend de l'évolution de la valeur de condition.
Une des instructions du corps de la boucle doit
absolument changer la valeur de condition de vrai à
faux (après un certain nombre d'itérations), sinon le
programme tourne indéfiniment.
Exemple de boucle infinie :
i 2
TANTQUE (i > 0)
i i+1 (attention aux erreurs de frappe : + au lieu
de -)
FINTANQUE
Reproduction 78
LA boucle « TANT QUE … FAIRE…» : EXEMPLE 1
Variable i : entier
DEBUT
i 0
TANTQUE (i < 3)
Ecrire("Bonjour tout le monde ")
i i + 1
FINTANQUE
FIN
Reproduction 79
LA boucle « TANT QUE … FAIRE… » : EXEMPLE 2
Variable A : entier
DEBUT
A 10
TANTQUE (A > 0)
A A - 2
FINTANTQUE
Ecrire(" La valeur de A est : ", A)
FIN
Reproduction 80
LA boucle « REPETER … JUSQU’À...»
REPETER
Instruction(s)
JUSQU’À
(condition)
Variables c : entier
DEBUT
REPETER
Lire(c)
c c*c
Ecrire(c)
JUSQU’À (c = 0)
Ecrire("Fin")
FIN
Reproduction 82
LA boucle « REPETER … JUSQU’À... » : EXEMPLE 2
Variables a , somme , moyenne , compteur : entier
DEBUT
compteur 0
somme 0
REPETER
Ecrire(" Entrez un nombre : " )
Lire(a)
compteur compteur + 1
somme somme + a
JUSQU’À (a = 0)
Moyenne somme / compteur
Ecrire(" La moyenne de valeurs saisies est : " ,
moyenne)
FIN
Reproduction 83
La boucle « POUR… FAIRE»
POUR compteur de initiale à finale pas valeur_de_pas
FAIRE
Instruction(s)
FINPOUR
Reproduction 87
La boucle « POUR …FAIRE» : EXEMPLE 1
Variables x, puiss : réel
n, i : entier
DEBUT
Ecrire(" Entrez la valeur de x ")
Lire(x)
Ecrire(" Entrez la valeur de n ")
Lire(n)
puiss 1
POUR i de 1 à n FAIRE
Puiss puiss*x
FINPOUR
Ecrire(x, " à la puissance ", n, " est égal à ",
puiss)
FIN
Reproduction 88
La boucle « POUR …FAIRE» : EXEMPLE 1 (VERSION 2)
Calcul de x à la puissance n où x est un réel non nul et n
un entier positif ou nul (version 2 avec un pas
négatif)
Variables x, puiss : réel
n, i : entier
DEBUT
Ecrire(" Entrez respectivement les valeurs de x et n
")
Lire(x,n)
puiss 1
POUR i de n à 1 pas -1 FAIRE
puiss puiss*x
FINPOUR
Ecrire(x, " à la puissance ", n, " est égal à ",
puiss)
FIN Reproduction 89
La boucle « POUR …» : REMARQUE
Il faut éviter de modifier la valeur du compteur (et de
finale) à l'intérieur de la boucle. En effet, une telle action
:
Perturbe le nombre d'itérations prévu par la boucle
POUR
Rend difficile la lecture de l'algorithme
Présente le risque d'aboutir à une boucle infinie
POUR i de 1 à 5 FAIRE
Exemple :i i-1
Ecrire(" i = ", i)
FINPOUR
Reproduction 90
LIEN ENTRE « POUR …» & « TANT QUE
… » La boucle POUR est un cas particulier de TANTQUE (cas où le
nombre d'itérations est connu et fixé) . Tout ce qu'on peut
écrire avec POUR peut être remplacé avec TANTQUE (la
réciproque est fausse)
POUR compteur de initiale à finale pas valeur_de_pas FAIRE
Instruction(s)
FINPOUR
Peut être compteur initiale
remplacé par : TANTQUE (compteur <= finale)
(cas d'un pas
instructions
positif)
compteur compteur + pas
FINTANQUE
Reproduction 91
LIEN ENTRE « POUR …» & « TANT QUE …» :
EXERCICE
Reproduction 92
LIEN ENTRE « POUR …» & « TANT QUE …» :
SOLUTION
Variables x, puiss : réel
n, i : entier
DEBUT
Ecrire(" Entrez la valeur de x ")
Lire(x)
Ecrire(" Entrez la valeur de n ")
Lire(n)
puiss 1
i 1
TANTQUE (i<=n)
Puiss puiss*x
i i+1
FINTANTQUE
Ecrire(x, " à la puissance ", n, " est égal à ",puiss)
FIN
Reproduction 93
BOUCLE IMBRIQUEES
Les instructions d'une boucle peuvent être des
instructions itératives. Dans ce cas, on aboutit à
des boucles imbriquées
Reproduction 94
BOUCLE IMBRIQUEES
Exempl Exécuti
e2 on
POUR i de 1 à 5 FAIRE
POUR j de 1 à i FAIRE
Ecrire("O")
FINPOUR
Ecrire("X")
FINPOUR
Reproduction 95
CHOIX D’UN TYPE DE BOUCLE
(1) 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 REPETER
JUSQU’À.
Pour le choix entre TANTQUE et REPETER 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
Reproduction 96
CHOIX D’UN TYPE DE BOUCLE
(2)
SI nombre d'itérations connu ALORS
Boucle POUR
SINON
SI itération exécutée au moins une fois
ALORS
Boucle REPETER JUSQU’À
SINON
Boucle TANTQUE
FINSI
FINSI
Reproduction 97
Cours d’algorithmique
CHAPITRE VII
Les tableaux
Reproduction 98
TABLEAUX : DEFINITION
Reproduction 99
LES TABLEAUX : DECLARATION
variable tableau identificateur[dimension] :
type
Exemple :
variable tableau notes[30] : réel
On peut définir des tableaux de tous types :
tableaux d'entiers, de réels, de caractères, de
booléens, de chaînes de caractères, …
Reproduction 100
TABLEAUX : REMARQUES
L'accès à un élément du tableau se fait au
moyen de l'indice. Par exemple, notes[i] donne
la valeur de l'élément i du tableau notes.
Reproduction 101
TABLEAUX : REMARQUES
Un tableau peut être représenté graphiquement par
(exemple Note[15]) :
Reproduction 103
TABLEAUX : SAISIE & AFFICHAGE
(SOLUTION)
Variables i : entier
Tableau notes[30] : réel
DEBUT
POUR i de 1 à 30 FAIRE
Ecrire("Saisie de l'élément ", i )
Lire(notes[i] )
FINPOUR
POUR i de 1 à 30 FAIRE
Ecrire(" notes[",i, "] =", notes[i])
FINPOUR
FIN
Reproduction 104
TABLEAUX : EXEMPLE (1)
Reproduction 105
TABLEAUX : EXEMPLE (1)
Variables i, nbre : entier
Tableau notes[30] : réel
DEBUT
nbre 0
POUR i de 1 à 30 FAIRE
SI (notes[i] >10) ALORS
nbre nbre+1
FINSI
FINPOUR
Ecrire(" Le nombre de notes supérieures à 10 est : ",
nbre)
FIN
Reproduction 106
TABLEAUX : EXEMPLE (2)
Reproduction 107
TABLEAUX : EXEMPLE (2)
Reproduction 108
TABLEAUX : EXERCICE
Reproduction 109
TABLEAUX : EXERCICE (SOLUTION)
Variables i , max : entier
Tableau T[N] : entier
DEBUT
max T[1]
POUR i de 2 à N FAIRE
SI (T[i] > max) ALORS
max T[i]
FINSI
FINPOUR
Ecrire(" Le plus grand élément de ce tableau : " ,
max)
FIN
Reproduction 110
TABLEAUX A DEUX DIMENSIONS
Les langages de programmation permettent de déclarer
des tableaux dans lesquels les valeurs sont repérées
par deux indices. Ceci est utile par exemple pour
représenter des matrices.
matrices
En pseudo code, un tableau à deux dimensions se
déclare ainsi :
variable tableau identificateur[dimension1][dimension2] :
type
Exemple : une matrice A de 3 lignes et 4 colonnes
dont les éléments sont réels
variable tableau A[3][4] : réel
A[i][j] permet d'accéder à l’élément de la matrice qui
se trouve à
Reproduction 111
LECTURE D’UNE MATRICE
Reproduction 112
LECTURE D’UNE MATRICE
Algorithme Saisie_Matrice
variables i, j : entier
Tableau A[20][50] : réel
DEBUT
POUR i de 1 à 20 FAIRE
Ecrire("saisie de la ligne ", i )
POUR j de 1 à 50 FAIRE
Ecrire("Entrez l'élément de la ligne ", i , " et de la colonne
", j)
Lire(A[i][j])
FINPOUR
FINPOUR
FIN
Reproduction 113
AFFICHAGE D’UNE MATRICE
Reproduction 114
AFFICHAGE D’UNE MATRICE
Algorithme Affiche_Matrice
Variables i, j : entier
Tableau A[20][50] : réel
DEBUT
POUR i de 1 à 20 FAIRE
POUR j de 1 à 50 FAIRE
Ecrire("A[",i, "] [",j,"]=", A[i][j])
FINPOUR
FINPOUR
FIN
Reproduction 115
SOMME DE DEUX MATRICES
Reproduction 116
SOMME DE DEUX MATRICES
Algorithme Somme_Matrices
Variables i, j : entier
Tableau A[20][50] , B[20][50] , C[20][50] :
réel
DEBUT
POUR i de 1 à 20 FAIRE
POUR j de 1 à 50 FAIRE
C[i][j] A[i][j]+B[i][j]
FINPOUR
FINPOUR
FIN
Reproduction 117
Tableaux à N dimensions
Les tableaux à n dimensions (n>2), peuvent être utilisés
pour diverses raisons telles que la création et le traitement
des objets 3D par exemple qui nécessitent des tableaux de
3 dimensions au minimum.
La déclaration de ce type de tableaux est comme suit :
Syntaxe :
Tableau nom_tableau[taille1][taille2] … [tailleN] :
type
Exemple : Tableau T[10][20][50] : réel (*un tableau T
à 3 dimensions*)
La manipulation d’un tableau à plusieurs dimensions suit le
même principe que celle des tableaux à deux dimensions.
Ceci s’appuie sur l’utilisation des boucles imbriquées pour
parcourir le tableau, de sorte qu’il y aura autant de boucles
Reproduction 118
qu’il y a de dimensions.
Cours d’algorithmique
CHAPITRE VIII
Les STRUCTURES
Reproduction 119
DEFINITION
Un autre type de variable structurée dite Structure
est caractérisée par un identificateur, qui peut
contenir, à un instant donné, plusieurs valeurs de
types différents.
Reproduction 120
DECLARATION
Déclarer une variable structure revient à déclarer
chaque champ sous la forme d’un identificateur et
d'un type.
Syntaxe de la déclaration :
Reproduction 121
EXEMPLE
elt : STRUCTURE
nom : chaîne de caractères /* nom de
l'élément */
symbole : chaîne de caractères /* symbole
chimique */
Z : entier /* numéro atomique */
masse : réel /* masse atomique
*/
FINSTRUCTURE
Remarque : il est utile d'indiquer les rôles des
champs (comme pour les variables simples)
Reproduction 122
ACCES AU CHAMPS
Syntaxe<identificateur>.<identificateur champ>
:
Règle générale : un champ d'une variable structure
se manipule comme une variable simple.
On peut le trouver :
dans une instruction de lecture :
Lire(elt.symbole)
dans une instruction d'écriture :
Ecrire(elt.symbole)
à gauche d'une flèche d'affectation : elt.symbole
'Na'
dans une expression : m elt.masse * 4
à la place d'un paramètre réel dans un appel de
Reproduction 123
procédure ou de fonction : Echanger(elt1.Z,
DEFINITION DE TYPES
Reproduction 124
DEFINITIONS DE TYPE & DECLARATION DE VARIABLES
Définition de type :
t_tab = tableau[0..15] d'entiers
Déclaration de variable :
tab : t_tab
Définition de type :
t_matrice = tableau[0..3, 0..5] de caractères
Déclaration de variable :
mat : t_matrice
Reproduction 125
DEFINITIONS DE TYPE & DECLARATION DE VARIABLES
Définition de type :
t_elt = STRUCTURE
nom : chaîne de caractères /* nom de
l'élément */
symbole : chaîne de caractères /* symbole
chimique */
Z : entier /* numéro atomique */
masse : réel /* masse atomique
*/
FINSTRUCTURE
Déclaration
Remarque : lesde noms
variable :
de types suivent les règles des
identificateurs.
elt : t_elt C'est par simple commodité, pour les
distinguer des identificateurs des variables, que ceux des
exemples commencent par t_.
Reproduction 126
TYPES COMPLEXES
Reproduction 127
TABLEAUX DE STRUCTURES
Exemple : table des éléments
chimiques
Déclaration :
table_periodique : t_table
Accès à un élément :
table_periodique[4].masse //Contient la valeur 10,8
table_periodique[2].symbole //Contient la valeur 'Li'
Reproduction 129
STRUCTURES AVEC TABLEAUX
Exemple : liste de températures avec nombre,
minimum et maximum.
Reproduction 130
STRUCTURES AVEC TABLEAUX
Déclaration :
mesures : t_liste
Accès à un élément :
mesures.nb vaut 5
Reproduction 131
CONCLUSION STRUCTURES DE DONNEES
CHAPITRE IX
Les POINTEURS
Reproduction 133
LA MÉMOIRE CENTRALE
La mémoire centrale (MC), qui peut
être vue comme un vecteur, est
formée de plusieurs cases ou cellules
numérotées (0, 1, 2, 3, 4, 5, etc.)
Chaque case peut stocker 1 octet (8
bits ou 1 byte).
Toutes les variables et instructions
utilisées existent en mémoire
centrale.
Il y a en mémoire centrale, des zones
déjà occupées, elles ont déjà un
certain contenu. Les autres sont des
espaces mémoires vides.
Reproduction 134
Relation entre la variable & la MEMOIRE
Reproduction 135
Relation entre la variable & la MEMOIRE
x étant une variable de type entier, elle nécessite
4 cases ou 4 octets dans un espace contigüe pour
la représenter dans la mémoire.
Supposons que le numéro de la première cellule
de la variable x soit 100, x occupe donc les
cellules ou les octets n°100, 101, 102, 103.
On dit que la variable x se trouve à partir de
l’adresse 100.
La mémoire est tellement grande qu’on a intérêt
à avoir l’adresse de chaque variable.
Adresse ? : l’adresse est le numéro du
premier octet de la variable.
Reproduction 136
Relation entre la variable & la MEMOIRE
Reproduction 138
NOTION DE POINTEUR
Un pointeur est une variable qui contient
l’adresse d’une autre variable.
Déclaration :
<NomPointeur> : pointeur sur <TypeVariable> (1)
<NomPointeur> : ˆ <TypeVariable> (2)
Variable x : entier
P : pointeur sur entier (P va contenir l’adresse d’un
entier)
Reproduction 139
NOTION DE POINTEUR
Exemple :
DEBUT
x 10
P Adr(x)
Reproduction 140
NOTION DE POINTEUR
P^ 5 ou Valeur(P) 5
Reproduction 141
EXERCICE 1
Décrire l’évolution de chaque variable après
chaque instruction
Algorithme exemple1
Variable x, n : entier
pt : pointeur sur entier
DEBUT
pt Adr(n)
Valeur(pt) 5
n 7
x Valeur(pt)
FIN
Reproduction 142
QU’Est-ce QU’ON PEUT FAIRE AVEC UN
POINTEUR ?
Reproduction 143
CREER UNE VARIABLE DYNAMIQUE
Type pEntier = pointeur sur entier (définition du type
pEntier)
Variable P : pEntier //P est une variable statique
Reproduction 144
CREER UNE VARIABLE DYNAMIQUE
2) Manipulation de la variable
dynamique
P^ 5 ou Valeur(P) 5
3) Suppression de la variable
dynamique
Libérer(P)
Reproduction 145
CREER UNE VARIABLE DYNAMIQUE
La primitive Libérer(P) va supprimer la variable dynamique
Pˆ ou Valeur(P) et P va pointer vers une valeur
indéterminée.
Après Libérer(P), l’instruction suivante Pˆ10 ou
Valeur(P) 10 occasionne une erreur à la compilation car
la variable dynamique Pˆ ou Valeur(P) n’existe plus.
Pour initialiser une variables de type pointeur qui ne pointe
rien on écrit : PNIL
Attention, le fait de mettre NIL dans un pointeur ne libère
pas l'emplacement sur lequel il pointait. L'emplacement
devient irrécupérable car le lien vers cet emplacement a été
coupé par la valeur NIL.
Il faut libérer avant d'affecter le pointeur avec NIL.
Reproduction 146
EXEMPLE 1
Dérouler l’algorithme suivant
Algorithme Exemple
Variable P,Q : pointeur sur entier
DEBUT
Allouer(P)
Valeur(P) 10
Q P
Valeur(Q) valeur(P)+2
Q NIL
Libérer(P)
FIN.
Reproduction 147
EXEMPLE 2
Reproduction 148
EXEMPLE (CORRIGE)
Variables ptc : pointeur sur chaîne de caractères
ptx1, ptx2 : pointeur sur entier
DEBUT Ptx2^ ptx1^ +
Allouer(ptc) ptx2^
Allouer(ptx1) Ecrire(ptx2^)
Lire(ptx1^) Libérer(ptx2)
Reproduction 150
VARIABLE DYNAMIQUE DE TYPE TABLEAU
//2. Manipulation de la variable dynamique
POUR i de 1 à 100 FAIRE
Pˆ[i] i
FINPOUR
Reproduction 151
VARIABLE DYNAMIQUE DE TYPE
STRUCTURE
Type STRUCTURE = Date
J, m, a : entier
FINSTRUCTURE
pDate = pointeur sur Date
Variable P : pDate
DEBUT
//1. Création de la variable dynamique
Allouer(P)
Reproduction 152
VARIABLE DYNAMIQUE DE TYPE
STRUCTURE
//2. Manipulation de la variable
dynamique
Pˆ.j 14 ou Valeur(P, j)
Pˆ.m 09 ou Valeur(P, m)
Pˆ.a 2022 ou Valeur(P, a)
Libérer(P)
Reproduction 153
EXERCICE 2
Reproduction 154
EXERCICE 2 (CORRIGE)
Algorithme exemple3 ; Allouer(Sauv)
P, Q, Sauv, Som : pointeur sur Valeur(Sauv)Valeur(P)
entier;
Valeur(P)Valeur(Q);
DEBUT
Valeur(Q) Valeur(Sauv)
Allouer(P)
Libérer(Sauv)
Écrire(‘donnez la première
Écrire(‘les nouvelles valeurs sont:
valeur:’)
Valeur(P), ‘et’, Valeur(Q))
Lire(Valeur(P))
Libérer(P)
Allouer(Q)
Libérer(Q)
Écrire(‘donnez la deuxième
FIN
valeur:’)
Lire(Valeur(Q))
Allouer(Som)
Valeur(Som)=Valeur(P)+Valeur(Q);
Écrire(‘La somme=‘, Valeur(Som))
Libérer(Som);
Reproduction 155
Cours d’algorithmique
CHAPITRE X
PROCEDURES & FONCTIONS
Reproduction 156
INTRODUCTION
Lorsque l'on progresse dans la conception d'un
algorithme, ce dernier peut prendre une taille et
une complexité croissante.
De même des séquences d'instructions peuvent se
répéter à plusieurs endroits.
Un algorithme écrit d'un seul tenant devient
difficile à comprendre et à gérer dès qu'il dépasse
deux pages.
La solution consiste alors à découper l'algorithme
en plusieurs parties plus petites. Ces parties sont
appelées des sous-algorithmes.
Le sous-algorithme est écrit séparément du corps
de l'algorithme principal et sera appelé par celui-ci
quand ceci seraReproduction
nécessaire.
157
LES PROCEDURES
Reproduction 158
DECLARATION D’UNE PROCEDURE
Syntaxe :
Procédure nom_proc(liste de paramètres)
Variables identificateurs : type
DEBUT
Instruction(s)
FINPROCEDURE
Reproduction 160
EXEMPLE (CORRIGE)
Procédure Etoile()
Variables i : entier
DEBUT
POUR i de 1 à 15 FAIRE
Ecrire("*")
FINPOUR
//\n : retour à la ligne
Ecrire("\n")
FINPROCEDURE
Reproduction 161
L’APPEL D’UNE PROCEDURE
Pour déclencher l'exécution d'une procédure dans
un programme, il suffit de l'appeler.
L'appel de procédure s'écrit en mettant le nom de la
procédure, puis la liste des paramètres, séparés par
des virgules.
A l'appel d'une procédure, le programme interrompt
son déroulement normal, exécute les instructions de
la procédure, puis retourne au programme appelant
et exécute l'instruction suivante.
Nom_Proc(liste de paramètres)
Reproduction 163
EXEMPLE (CORRIGE)
Algorithme carré_étoiles
Variables j : entier
//Déclaration de la procédure Etoiles()
Procédure Etoile()
Variables i : entier
DEBUT
POUR i de 1 à 15 FAIRE
Ecrire("*")
FINPOUR
Ecrire("\n")
FINPROCEDURE
Reproduction 164
EXEMPLE (CORRIGE)
Reproduction 165
REMARQUES
Reproduction 168
PASSAGE DE PARAMETRES
Cet algorithme définit une procédure P1 pour
laquelle on utilise le passage de paramètres par
valeur.
Reproduction 170
PASSAGE DE PARAMETRES
Exemple :
Reprenons l'exemple précédent
: //Algorithme Principal
Algorithme Passage_par_référence DEBUT
N 5
Variables N : entier
P1(N)
//Déclaration de la procédure P1
Ecrire(N)
Procédure P1 (Var A : entier) FIN
DEBUT
A A * 2
Ecrire(A)
FINPROCEDURE
Reproduction 171
PASSAGE DE PARAMETRES
A l'exécution de la procédure, l'instruction
Afficher(A) permet d'afficher à l'écran 10.
Au retour dans l'algorithme principal,
l'instruction Afficher(N) affiche également 10.
Dans cet algorithme le paramètre passé
correspond à la référence (adresse) de la
variable N. Elle est donc modifiée par
l'instruction : A A*2
Remarque :
Lorsqu'il y a plusieurs paramètres dans la
définition d'une procédure, il faut absolument
qu'il y en ait le même nombre à l'appel et que
l'ordre soit respecté.
Reproduction 172
LES FONCTIONS
Reproduction 173
DECLARATION D’UNE FONCTIONS
Syntaxe :
Fonction nom_Fonct (liste de paramètres) : type
Variables identificateur : type
DEBUT
Instruction(s)
Retourner (Expression)
FINFONCTION
Reproduction 174
DECLARATION D’UNE FONCTIONS
Note :
Les paramètres sont facultatifs, mais s'il n'y
pas de paramètres, les parenthèses doivent
Reproduction 175
rester présentes.
EXEMPLE
Définir une fonction qui renvoie le plus grand
de deux nombres différents.
Solution :
//Déclaration de la fonction Max
Fonction Max(X: réel, Y: réel) : réel
DEBUT
SI (X > Y) ALORS
Retouner(X)
SINON
Retouner(Y)
FINSI
FINFONCTION
Reproduction 176
L’APPEL D’UNE FONCTION
Pour exécuter une fonction, il suffit de faire appel
à elle en écrivant son nom suivie des paramètres
effectifs.
Syntaxe :
Reproduction 177
Nom_Fonc(list de paramètres)
EXEMPLE
Reproduction 178
EXEMPLE (SOLUTION)
Algorithme Appel_fonction_Max
Variables A, B, M : réel
//Déclaration de la fonction Max
Fonction Max(X: réel, Y: réel) : réel
DEBUT
SI (X > Y) ALORS
Retourner(X)
SINON
Retourner(Y)
FINSI
FINFONCTION
Reproduction 179
EXEMPLE (SOLUTION)
//Algorithme principal
DEBUT
Ecrire("Donnez la valeur de A : ")
Lire(A)
Ecrire("Donnez la valeur de B : ")
Lire(B)
//Appel de la fonction Max
M Max(A,B)
Ecrire("Le plus grand de ces deux nombres est : ",
M)
FIN
Reproduction 180
PORTEE DES VARIABLES
La portée d'une variable désigne le domaine de
visibilité de cette variable. Une variable peut être
déclarée dans deux emplacements distincts.
Une variable déclarée dans la partie déclaration de
l'algorithme principale est appelée variable
globale. Elle est accessible de n'importe où dans
l'algorithme, même depuis les procédures et les
fonctions. Elle existe pendant toute la durée de vie
du programme.
Une variable déclarée à l'intérieur d'une procédure
(ou une fonction) est dite locale. Elle n'est
accessible qu'à la procédure au sein de laquelle elle
définit, les autres procédures n'y ont pas accès. La
durée de vie d'une variable locale est limitée à la
Reproduction 181
durée d'exécution de la procédure.
PORTEE DES VARIABLES
Algorithme Portée
Variables X, Y : entier X et Y sont des variables globales
Visibles dans tout l’algorithme.
Procédure P1()
Variables A : entier
DEBUT
A est une variable locale
… visible uniquement à l’intérieur
de la procédure
FINPROCEDURE
//Algorithme principal
DEBUT
…
FIN
Reproduction 183
EXERCICE
Reproduction 184
EXERCICE (CORRIGE)
n != n * (n-1) ! : La factorielle de n est n fois la factorielle de
n-1
//Déclaration de la fonction Factorielle (Fact)
Fonction Fact(n : entier) : entier
DEBUT
SI (n > 1) ALORS
Retourner(Fact(n-1)*n)
SINON
Retourner 1
FINSI
FINFONCTION
Reproduction 185
commentaires
Reproduction 186
commentaires
Note :
Toute procédure ou fonction récursive
comporte une instruction (ou un bloc
d'instructions) nommée « point terminal »
permettant de sortir de la procédure ou de la
fonction.
Le « point terminal » dans la fonction
récursive Fact est : retourner 1.
Reproduction 187
AVANTAGES DES PROCEDURES &
FONCTIONS
Les procédures ou fonctions permettant de ne
pas répéter plusieurs fois une même
séquence d'instructions au sein du
programme (algorithme).