Reproduction interdite
Reproduction interdite
M5 - ALGORITHMES & PROGRAMMATION I
M5 - ALGORITHMES & PROGRAMMATION I
Licence informatique (L1)
Licence informatique (L1)
Reproduction interdite
Reproduction interdite
Présentation DE L’ENSEIGNANT
Présentation DE L’ENSEIGNANT
M. Olyvier NZIGHOU
M. Olyvier NZIGHOU
Master 2 Gestion de Projets Informatiques de l’Université de
Strasbourg.
Enseignant vacataire à l’IST, EPL, IAI, ESIITECH
Tél. : 066049840 / 077684285
Email : olyvier.nzighou@gmail.com
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Objectifs du cours
3
3
 Apprendre les concepts de base de l'algorithmique
et de la programmation
 Être capable de mettre en œuvre ces concepts pour
analyser des problèmes simples et écrire les
algorithmes correspondants
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Evaluation
4
4
 Contrôles (70%) inclus
 Devoirs
 Interrogations
 Dont les TP (30%)
 Examen final (40%)
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Enseignement
5
5
 Cours
Magistral
 TD/TP
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
COMPETENCES À ACQUERIR
6
6
 Savoir transcrire un problème en
algorithmes
 Savoir manipuler des structures de
données
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Contenu du cours
7
7
1. Concepts de base
 Structure d’un algorithme
 Variables et constantes
 Types de données
2. Expression et instructions
élémentaires
 Expressions
 Instruction Lire, Ecrire, 
3. Structures de contrôle
 Structures alternatives
 Structures conditionnelles
 Structures itératives
4. Structures de données
 Les tableaux
 Structures
 Les pointeurs
5. Fonctions et procédures
 Déclaration et appel
 Passage de paramètres
 Portée des variables
 Récursivité
 Avantages
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
ALGORITHMES & PROGRAMMATION I
8
8
CHAPITRE I
CHAPITRE I
Introduction
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Historique
9
9
 Le mot algorithme vient du savant perse
ALKHAWARIZMI, Muhammad Ibn Musa al-
Khawarizmi
 Né vers 780 mort vers 850
 Par référence à ALKHAWARIZMI, le mot algorithme
est devenu en latin algorimus avant de devenir
algorithme en français en 1554.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
DEFINITION d’un algorithme
10
10
Dans la vie courante, un algorithme peut par exemple
prendre la forme :
D’une recette de cuisine;
D’un mode d’emploi;
D’une notice de montage d’un meuble;
D’une indication de chemin à un touriste;
Un algorithme est donc une suite d’opérations (ou
instructions) qui doivent être exécutées dans un ordre
déterminé dans le but de résoudre un problème.
Il est écrit en utilisant un Langage de Description
Algorithmique (LDA) appelé aussi pseudo-code
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
L’ALGORITHMIQUE dans le monde informatique
11
11
 L’algorithmique est une branche de
l’informatique qui étudie la rapidité et
l’efficacité des algorithmes dans le but de les
transformer en programme en les traduisant
dans un langage compréhensible par
l’ordinateur (langage de programmation).
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Pourquoi L’ALGORITHMIQUE ?
12
12
 Apprendre l’algorithmique  pour apprendre à
programmer
Algorithme
Programme
Description du problème : suite
d’instructions pour résoudre un problème,
indépendamment des particularités de tel
ou tel langage (pseudo-code)
Programme exécutable (écrit dans un
langage de programmation : C, C++, Java,
Python, PHP…) en respectant la syntaxe
propre à chaque langage
Passage (obligatoire) pour les
programmeurs
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
RESOLUTION d’un PROBLEME en informatique
13
13
Plusieurs étapes sont nécessaires pour résoudre un problème
informatique :
Etape 1 : Définition du problème :
 Il s’agit de déterminer toutes les informations
disponibles et la forme des résultats désirés.
Etape 2 : Analyse du problème :
 Elle consiste a trouver le moyen de passer des données
aux résultats. Dans certains cas on peut être amené à
faire une étude théorique.
 Le résultat de l’analyse est un algorithme.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
RESOLUTION d’un PROBLEME en informatique
14
14
 Etape 3 : Ecriture d’un algorithme avec un langage de
description algorithmique (LDA) :
 Une fois qu’on trouve le moyen de passer des données
aux résultats, il faut être capable de rédiger une solution
claire et non ambiguë. Comme il est impossible de le
faire en langage naturel, l’existence d’un langage
algorithmique s’impose.
 Etape 4 : Traduction de l’algorithme dans un langage de
programmation
 Les étapes 1, 2, 3 se font sans le recours de la machine. Si on
veut rendre l’algorithme concret ou pratique, il faudrait le
traduire dans un langage de programmation.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
RESOLUTION d’un PROBLEME en informatique
15
15
 Etape 5 : Mise au point du programme
 Quand on soumet le programme à la machine, cette
dernière le traite en deux étapes :
1. La machine corrige l’orthographe, c’est ce qu’on
appelle syntaxe dans le jargon de la
programmation.
2. La machine traduit le sens exprimé par le
programme.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
RESOLUTION d’un PROBLEME en informatique
16
16
 Si les résultats obtenus sont ceux attendus, la mise au
point du programme se termine.
 Si nous n’obtenons pas de résultats, on dira qu’il y a
existence des erreurs de logique.
 Le programme soit ne donne aucun résultat, soit des
résultats inattendus soit des résultats partiels. Dans ce
cas, il faut revoir en priorité si l’algorithme a été bien
traduit, ou encore est-ce qu’il y a eu une bonne analyse.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
PROPRIETES D’UN ALGORITHME
17
17
On peut énoncer les cinq propriétés suivantes que doit
satisfaire un algorithme :
1. Généralité : un algorithme doit toujours être conçu
de manière à envisager toutes les éventualités d’un
traitement.
2. Finitude : Un algorithme doit s’arrêter au bout d’un
temps fini.
3. Définitude : toutes les opérations d’un algorithme
doivent être définies sans ambiguïté
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
PROPRIETES D’UN ALGORITHME
18
18
4. Répétitivité : généralement, un algorithme contient
plusieurs itérations, c’est-à-dire des actions qui se
répètent plusieurs fois.
5. Efficacité : Idéalement, un algorithme doit être
conçu de telle sorte qu’il se déroule en un temps
minimal et qu’il consomme un minimum de
ressources.
Remarque :
Attention, certains problèmes n’admettent pas de solution
algorithmique exacte et utilisable. On utilise dans ce cas des
algorithmes heuristiques qui fournissent des solutions
approchées.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Convention D’ECRITURE : L’ORGANIGRAMME
19
19
 Historiquement, plusieurs types de
notation ont représenté les algorithmes;
 Notamment une représentation
graphique (carrés, losanges,
parallélogrammes…) qu’on appelait des
organigrammes
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Convention D’ECRITURE : le pseudo-code ou LDA
20
20AZERY7I90
AZERY7I90
 Une série de conventions appelées « pseudo-
code » avec une syntaxe qui ressemble à un
langage de programmation;
 Ce pseudo-code est aussi appelé LDA (Langage de
Description d’Algorithme);
 Son avantage est de pouvoir être facilement
transcrit dans un langage de programmation.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Convention D’ECRITURE : le pseudo-code ou LDA
21
21
Remarque
importante
Exemples
Ce pseudo-code peut varier d’un ouvrage à un autre puisqu’il
est purement conventionnel (Aucune machine n’est sensé le
reconnaitre)
 Exemple pour déclarer les variables : Var / variables et
Const /constantes
 Affectation : signe égal = / 
 Point virgule ; ou pas à la fin de chaque instruction
 FINSI / fsi / Fin si
 Commentaires : {commentaire} / (*commentaire*) /
%commentaire%
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Convention D’ECRITURE : le pseudo-code ou LDA
22
22
Algorithme Produit_2_nombres
variables a : entier
b : entier
DEBUT
Ecrire("saisir un entier a : ")
Lire(a)
Ecrire("saisir un entier b : ")
Lire(b)
SI ((a=0) OU (b=0)) ALORS
Ecrire ("Le produit est nul")
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 SI
FIN
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Algorithme Produit_2_nombres
variables a : entier
b : entier
DEBUT
Ecrire("saisir un entier a : ")
Lire(a)
Ecrire("saisir un entier b : ")
Lire(b)
SI ((a=0) OU (b=0)) ALORS
Ecrire ("Le produit est nul")
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")
FIN SI
FIN
Convention D’ECRITURE : le pseudo-code ou LDA
23
23
L’entête de
l’algorithme
Déclaration des
variables et
constantes
Corps de
l’algorithme
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
ALGORITHMES & PROGRAMMATION I
24
24
CHAPITRE II
CHAPITRE II
Les types de variables
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
C’est quoi une variable ?
25
25
 Au cours de l’exécution d’un programme informatique on
aura besoin de stocker des informations :
 Saisies par l’utilisateur au clavier
 Résultat d’un programme (intermédiaire ou définitif)
 Ces informations sont stockées dans des variables
 On peut à tout moment durant l’exécution de l’algorithme
changer la valeur de la variable en écrasant l’ancienne à
condition que la nouvelle valeur soit du même type ou
compatible avec.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Les types de DONNEES
26
26
 Les données sont contenues dans des cases mémoires de
l’ordinateur;
 La longueur de la case mémoire dépend du type de
données qu’elle contient
Type de variable
Type de variable Exemple de valeurs à contenir
Exemple de valeurs à contenir
Mot
Mot
clé
clé
Numérique
Entier -50; 0; 600; 1000 Entier
Réel 20; -4; 36,123; 3,14 Réel
Alphanumérique
Caractère ‘a‘; ‘D‘; ‘+‘; ‘1‘ Car
Chaîne de
caractères
˝Algorithme˝; ˝variable˝; Chaîne
Booléen
VRAI; FAUX Boolée
n
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Les types NUMERIQUES
27
27
Type numérique
Type numérique
Plage de valeurs
Plage de valeurs
Taille
Taille
mémoire
mémoire
Byte(octet) 0 à 255 1 octet
Entier simple -32 768 à 32 767 2 octets
Entier long -2 147 483 648 à 2 147 483
647
4 octets
Réel simple -3,40*1038
à 3,40*1038
4 octets
Réel double 1,7*10-308
à 1,7*10308
8 octets
Réel double long 3,4*10-4932 à 3,4*104932 10 octets
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
CHOIX DES IDENTIFICATEURS
28
28
 Le choix des noms de variables est soumis à quelques
règles :
 Un nom de variable doit commencer par une lettre
alphabétique
exemple valide : A1 exemple
invalide : 1A
 Un nom de variable doit être constitué uniquement de
lettres, de chiffres et du soulignement ( _ ) (Eviter les
caractères de ponctuation et les espaces)
valides : Info2022, Info_2022,
infoAlgoProgramme invalides : Info 2022, Info-
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
DECLARATION DES VARIABLES
29
29
 La déclaration des variables se fait au début de
l’algorithme
 Le but est de réserver une case mémoire (allouer de
l’espace mémoire) en précisant ce que l’on veut y mettre
 c’est ce qu’on appelle type de la variable
Syntaxe de déclaration
Syntaxe de déclaration Exemples
Exemples
Variable nomDeLaVariable :
Type
variable pi : Réel
variable prenom : Chaîne
variable age : Entier
variable i,j,k : Entier
variable c : car
variable trouve : Booléen
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Les constantes
30
30
 Servent à donner un nom à une valeur
 La case mémoire portant ce nom ne peut recevoir aucune
autre donnée durant l’exécution de l’algorithme
Syntaxe de déclaration
Syntaxe de déclaration Exemples
Exemples
Constante nomDeLaConstante = valeur
constante pi = 3,14
constante taux = 0,15
constante trouve =
VRAI
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXPRESSION & OPERATEURS
31
31
 Une expression peut être une valeur, une variable ou une opération
constituée de variables reliées par des opérateurs exemples :
exemples : 1, b,
1, b,
a*2, a+3*b-c, …
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)
+, -, *, /, div, % (modulo), ^ (puissance)
• a = b * q + r avec r < b, q = a div b, r = a
a = b * q + r avec r < b, q = a div b, r = a
mod b
mod b
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXPRESSION & OPERATEURS
32
32
 des opérateurs logiques : NON, OU, OU exclusif (XOR), ET
NON, OU, OU exclusif (XOR), ET
 des opérateurs relationnels : =, <, >, <=, >=, <>
=, <, >, <=, >=, <>
 des opérateurs sur les chaînes : &
& (concaténation)
 Une expression est évaluée de gauche à droite mais en tenant
compte de la priorités
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
PRIORITE DES OPERATEURS
33
33
 Pour les opérateurs arithmétiques donnés ci-dessus,
l'ordre de priorité est le suivant (du plus prioritaire au
moins prioritaire) :
1)
1) ^
^ (élévation à la puissance)
2)
2) * , / , div
* , / , div (multiplication, division, division entière)
3)
3) %
% (modulo)
4)
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é
 exemple : (2 + 3) * 7 vaut 35
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
ALGORITHMES & PROGRAMMATION I
34
34
CHAPITRE III
CHAPITRE III
ACTIONS DE BASE
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
L’instruction d’affectation
35
35
 Permet d’attribuer des valeurs aux variables en utilisant le
symbole suivant 
Syntaxe
Syntaxe Exemples de déclaration
Exemples de déclaration Exemples d’affectation
Exemples d’affectation
nomDeLaVariable 
valeur
variable pi : Réel pi  3,14
variable prenom : Chaîne prenom  ˝Sylvie˝
variable age : Entier age  25
variable i,j,k : Entier i0, j5, k-1, ij
variable c : car c‘A‘
variable trouve :
Booléen
Trouve  VRAI
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Les types d’affectation : Type 1
36
36
Nom_variable 
valeur_de_meme_type
Pi3,14
prenom˝Algorithme˝
age24
i0
Facture_payeeVRAI
Choix ‘Y‘;
Exemples :
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Les types d’affectation : Type 2
37
37
Nom_variable 
variable_de_meme_type
prenom1˝Snoopy˝
prenom2˝Daniel˝
Prenom2prenom1
Exemples :
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Les types d’affectation : Type 3
38
38
Nom_variable 
expression_retournant_meme_type
ki+j
consommationnouvel_index –
ancien_index
moyennesomme_notes / nombre_eleves
TVAHT*0,2
Exemples :
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICE SIMPLE SUR L’affectation
39
39
Variables A, B, C: entier
DEBUT
A  -3
B  7
A  B
B  A-5
C  A + B
C  B – A
FIN
 Donnez les valeurs des variables A, B et C après
exécution des instructions suivantes ?
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICE SIMPLE SUR L’affectation
40
40
Variables A, B : entier
DEBUT
A  4
B  9
A  B
B  A
FIN
 Donnez les valeurs des variables A et B après
exécution des instructions suivantes ?
 Les deux dernières instructions permettent-elles
d’échanger les valeurs de A et B ?
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICE SIMPLE SUR L’affectation
41
41
 Ecrire un algorithme permettant d’échanger les
valeurs de deux variables A et B
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Instructions de lecture et d’ecriture
42
42
 Ecriture  afficher à l’écran
Ecrire(˝Entrez la valeur de la
tva :˝)
 Lecture  Saisir au clavier et affecter ce qui
est saisi aux variables déjà définies
Lire(tva)
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
ecriture
43
43
 Ecriture  Afficher à
l’écran
Cas
Cas Syntaxe
Syntaxe Exemples
Exemples
1 Ecrire(˝message˝) Ecrire(˝Entrez la valeur de a :˝)
2 Ecrire(nom_variable) Ecrire(moyenne)
3 Ecrire(˝message˝,nom_variable) Ecrire(˝votre note est :˝,moyenne)
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Lecture
44
44
 lecture  Saisir au clavier et affecter ce qui est saisi aux
variables déjà définies
Syntaxe
Syntaxe Exemples
Exemples
Lire(nom_variable)
Lire(a)
Lire(TVA)
Lire(note)
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Exercice
45
45
 Écrire un algorithme qui demande à l’utilisateur de
saisir deux nombres entiers et de calculer leur
somme et l’afficher à l’écran.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Solution de l’exercice
46
46
Algorithme Somme
Variables a, b, S : Entier
DEBUT
Ecrire(˝Saisir a :˝)
Lire(a)
Ecrire(˝Saisir b :˝)
Lire(b)
Sa+b
Ecrire(˝La somme est :˝,S)
FIN
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
ALGORITHMES & PROGRAMMATION I
47
47
CHAPITRE IV
CHAPITRE IV
Les INSTRUCTIONS CONDITIONELLES
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
LES INSTRUCTIONS CONDITIONNELLES
48
48
 Les instructions conditionnelles servent à n'exécuter
une instruction ou une séquence d'instructions que
si une condition est vérifiée
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
TESTS : LES INSTRUCTIONS CONDITIONNELLES
49
49
 On utilisera la forme
suivante : SI (condition) ALORS
instruction ou suite
d'instructions1
SINON
instruction ou suite
d'instructions2
FINSI
 La condition ne peut ê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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
TESTS : LES INSTRUCTIONS CONDITIONNELLES
50
50
SI (condition) ALORS
instruction ou suite
d'instructions1
SINON
instruction ou suite
d'instructions2
FINSI
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXEMPLE
51
51
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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICE
52
52
 Ecrire un algorithme qui permet de lire et
d'afficher la valeur absolue d'un réel.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
SOLUTION DE L’EXERCICE
53
53
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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
TESTS : LES INSTRUCTIONS CONDITIONNELLES
54
54
 La partie Sinon n'est pas obligatoire, quand elle
n'existe pas et que la condition est fausse, aucun
traitement n'est réalisé
 On utilisera dans ce cas la forme simplifiée
suivante :
SI (condition) ALORS
instruction(s)
FINSI
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXEMPLE
55
55
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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICE
56
56
 Ecrire un algorithme qui demande un nombre
entier à l'utilisateur, puis teste et affiche s'il est
divisible par 3.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
SOLUTION DE L’EXERCICE
57
57
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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Conditions COMPOSEES
58
58
 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)
OU exclusif (XOR) et NON
NON
 Exemples :
 x compris entre 2 et 6 : (x > 2) ET
ET (x < 6)
 n divisible par 3 ou par 2 : (n%3=0) OU
OU (n%2=0)
 L'évaluation d'une condition composée se fait selon
des règles présentées généralement dans ce qu'on
appelle tables de vérité.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
TABLES DE VERITE
59
59
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXEMPLE (1)
60
60
Expression
Expression Résultat
Résultat
(4<7) ET
ET (9>0) Vrai
(1<0) OU
OU (1<>1) Faux
NON
NON(13.4<15) Faux
Priorité : NON est prioritaire sur ET qui est prioritaire
sur OU
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
TESTS IMBRIQUEES
61
61
SI (condition1) ALORS
SI (condition2) ALORS
instructionsA
SINON
instructionsB
FINSI
SINON
SI (condition3) ALORS
instructionsC
FINSI
FINSI
 Les tests peuvent avoir un degré quelconque d'imbrications
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
TESTS IMBRIQUEES : EXEMPLE (VESRION 1)
62
62
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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
TESTS IMBRIQUEES : EXEMPLE (VESRION 2)
63
63
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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
TESTS IMBRIQUEES : EXEMPLE (VESRION 2)
64
64
 Remarque : dans la version 2 on fait trois tests
systématiquement alors que dans la version 1, si le
nombre est négatif on ne fait qu'un seul test
 Conseil : utiliser les tests imbriqués pour limiter le
nombre de tests et placer d'abord les conditions les plus
probables
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICE
65
65
 Ecrivez un algorithme qui demande à l’utilisateur
d’entrer la température de l’eau, et affiche ensuite l’état
de l’eau selon la température (on rappelle que l’état de
l’eau est glace pour une température inférieure ou
égale à 0, est vapeur pour une température supérieure
ou égale à 100 et liquide pour une température
comprise strictement entre 0 et 100).
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
SOLUTION DE L’EXERCICE
66
66
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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICE
67
67
 Ecrire un algorithme qui affiche la mention dans
les bulletins de note des étudiants selon la note
obtenue
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
SOLUTION DE L’EXERCICE
68
68
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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICE
69
69
 Ecrire un algorithme qui lit trois entiers A, B et
C, et affiche le plus grand.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
SOLUTION DE L’EXERCICE
70
70
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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Exercice
71
71
 Ecrire un algorithme qui calcule le carré d’un nombre
entier positif
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Solution de l’exercice
72
72
Algorithme carré
Variables Nombre, Carre : Entier
DEBUT
Ecrire(˝Saisir le nombre :˝)
Lire(Nombre)
SI (Nombre > 0) ALORS
Carre Nombre*Nombre
Ecrire(˝Le carré est˝, Carre)
FINSI
FIN
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Exercice
73
73
 Ecrire un algorithme qui calcule la taxe sur le chiffre
d’affaire sachant qu’elle est de 10% s’il est inférieur
strictement à 100000 XAF et 20% s’il est supérieur à ce
seuil
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Solution de l’exercice
74
74
Algorithme calcul_taxe
Variables CA, 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)
FIN
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
TESTS IMBRIQUEES : AUTRE FORME
75
75
SELON Expression
Valeur1 : action1
Valeur2 : action2
.........
ValeurN : actionN
SINON : action
FINSELON
La structure alternative peut prendre une autre forme qui
permet d’imbriquer plusieurs conditions.
 Si expression est égale à valeuri, on exécute actioni et on passe à la suite
de l’algorithme.
 Sinon on exécute action et on passe à la suite de l’algorithme.
 On l’appelle « structure choix »
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Exercice
76
76
 Ecrire un algorithme permettant de calculer le prix à payer
pour l’abonnement à un club qui décide de faire des
remises sur les prix d’abonnement :
 Ancien abonné : -15%
 Nouvel abonné : -10%
 Etudiant : -20%
 Enfant de moins de 12 ans : -30%
 Le calcul du prix d’abonnement se fait en fonction du tarif
normal d’abonnement et de la qualité de l’abonné, (une
seule qualité est accepté par abonné).
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Solution de l’exercice
77
77
Algorithme calcul_abonnement
Variables QH : Entier (*Qualité
abonné*)
TN : Réel (*Tarif normal*)
TR : Réel (*Taxe de remise*)
R : Réel (*Remise*)
PAP : Réel (*Prix à payer*)
DEBUT
Ecrire(˝***** MENU *****˝)
Lire(TN)
Ecrire(˝Saisir le tarif normal:˝)
Ecrire(˝1: Ancien abonné˝)
Ecrire(˝2: nouvel abonné˝)
Ecrire(˝3: Etudiant˝)
Ecrire(˝4: Enfant de moins de 12 ans˝)
Ecrire(˝Choisir la qualité de l’abonné˝)
Lire(QH)
SELON (QH) FAIRE
1 : TR  -0,15
2 : TR  -0,1
3 : TR  -0,2
4 : TR  -0,3
SINON : Ecrire(˝valeur incorrecte˝)
FINSELON
R  TN * TR
PAP TN + R
Ecrire(˝Le prix à payer est :˝,PAP)
FIN
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
ALGORITHMES & PROGRAMMATION I
78
78
CHAPITRE V
CHAPITRE V
Les instructions ITERATIVES (les
boucles)
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Les instructions ITERATIVES (les boucles)
79
79
 Les boucles servent à répéter l'exécution d'un groupe
d'instructions un certain nombre de fois.
 On distingue trois sortes de boucles en langages de
programmation :
 Les boucles « TANT QUE … FAIRE » : on y répète des
instructions tant qu'une certaine condition est
réalisée.
 Les boucles « REPETER … JUSQU’À » : on y répète
des instructions jusqu'à ce qu’une certaine condition
soit réalisée.
 Les boucles « POUR … FAIRE » ou avec compteur :
on y répète des instructions en faisant évoluer un
compteur (variable particulière) entre une valeur
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
LA boucle « TANT QUE … FAIRE… »
80
80
TANTQUE (condition) FAIRE
Instruction(s)
FINTANTQUE
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
LA boucle « TANT QUE … FAIRE… »
81
81
La condition (dite condition de contrôle de la boucle) est
évaluée avant chaque itération.
Si la condition est vraie, on exécute instructions (corps de la
boucle), puis, on retourne tester la condition. Si elle est
encore vraie, on répète l'exécution, …
Si la condition est fausse, on sort de la boucle et on exécute
l'instruction qui est après FINTANQUE.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
LA boucle « TANT QUE … FAIRE… » : REMARQUES
82
82
Le nombre d'itérations dans une boucle TANTQUE…FAIRE
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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
LA boucle « TANT QUE … FAIRE…» : EXEMPLE 1
83
83
Variable i : entier
DEBUT
i  0
TANTQUE (i < 3)
Ecrire("Bonjour tout le monde ")
i  i + 1
FINTANQUE
FIN
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
LA boucle « TANT QUE … FAIRE… » : EXEMPLE 2
84
84
Variable A : entier
DEBUT
A  10
TANTQUE (A > 0)
A  A - 2
FINTANTQUE
Ecrire(" La valeur de A est : ", A)
FIN
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
LA boucle « REPETER … JUSQU’À...»
85
85
REPETER
Instruction(s)
JUSQU’À
(condition)
 La condition est évaluée après chaque itération
 Les instructions entre REPETER et JUSQU’À sont exécutées
au moins une fois et leur exécution est répétée jusqu’à ce
que condition soit vrai (tant qu'elle est fausse)
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
LA boucle « REPETER … JUSQU’À... » : EXEMPLE 1
86
86
Variables c : entier
DEBUT
REPETER
Lire(c)
c  c*c
Ecrire(c)
JUSQU’À (c = 0)
Ecrire("Fin")
FIN
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
LA boucle « REPETER … JUSQU’À... » : EXEMPLE 2
87
87
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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
La boucle « POUR… FAIRE»
88
88
POUR compteur de initiale à finale pas valeur_de_pas
FAIRE
Instruction(s)
FINPOUR
Remarque : Si la valeur du « pas » n’est pas précisée dans
l’instruction « POUR », elle est par défaut égale à un (1).
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
La boucle « POUR …FAIRE»
89
89
 Remarque : le nombre d'itérations dans une boucle POUR
est connu avant le début de la boucle.
 La variable compteur est en général de type entier. Elle doit
être déclarée.
 Pas est un entier qui peut être positif ou négatif. Pas peut ne
pas être mentionné, car par défaut sa valeur est égal à 1.
Dans ce cas, le nombre d'itérations est égal à finale -
initiale + 1 .
 Initiale et finale peuvent être des valeurs, des variables
définies avant le début de la boucle ou des expressions de
même type que compteur .
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
DEROULEMENT DE La boucle « POUR …FAIRE»
90
90
1) La valeur initiale est affectée à la variable compteur.
2) On compare la valeur du compteur et la valeur de finale :
a) Si la valeur du compteur est >
> à la valeur finale dans le cas
d'un pas positif (ou si compteur est <
< à finale pour un pas
négatif), on sort de la boucle et on continue avec l'instruction
qui suit FINPOUR.
b)Si compteur est <=
<= à finale dans le cas d'un pas positif (ou
si compteur est >=
>= à finale pour un pas négatif), instructions
seront exécutées.
i. Ensuite, la valeur de compteur est incrémentée de la valeur
du pas si pas est positif (ou décrémenté si pas est négatif) .
ii. On recommence l'étape 2 : La comparaison entre compteur
et finale est de nouveau effectuée, et ainsi de suite …
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
La boucle « POUR …FAIRE» : EXEMPLE 1
91
91
 Ecrire un algorithme qui fait le calcul de x à la
puissance n où x est un réel non nul et n un
entier positif ou nul
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
La boucle « POUR …FAIRE» : EXEMPLE 1
92
92
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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
La boucle « POUR …FAIRE» : EXEMPLE 1 (VERSION 2)
93
93
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
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)
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
La boucle « POUR …» : REMARQUE
94
94
 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
Exemple :
POUR i de 1 à 5 FAIRE
i  i-1
Ecrire(" i = ", i)
FINPOUR
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
LIEN ENTRE « POUR …» & « TANT QUE … »
95
95
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
compteur  initiale
TANTQUE (compteur <= finale)
instructions
compteur  compteur + pas
FINTANQUE
Peut être remplacé
par :
(cas d'un pas positif)
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
LIEN ENTRE « POUR …» & « TANT QUE …» : EXERCICE
96
96
 Calcul de x à la puissance n où x est un réel non
nul et n un entier positif ou nul (version avec
TANTQUE…FAIRE)
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
LIEN ENTRE « POUR …» & « TANT QUE …» : SOLUTION
97
97
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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
BOUCLE IMBRIQUEES
98
98
 Les instructions d'une boucle peuvent être des
instructions itératives. Dans ce cas, on aboutit à des
boucles imbriquées
boucles imbriquées
 Exemple 1 : Ecrire un carré de 8 fois 8 caractères
‘x’ POUR i de 1 à 8 FAIRE
POUR j de 1 à 8 FAIRE
Ecrire("x")
FINPOUR
FINPOUR
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
BOUCLE IMBRIQUEES
99
99
Exemple
2
POUR i de 1 à 5 FAIRE
POUR j de 1 à i FAIRE
Ecrire("O")
FINPOUR
Ecrire("X")
FINPOUR
Exécutio
n
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
CHOIX D’UN TYPE DE BOUCLE (1)
100
100
 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 la
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
CHOIX D’UN TYPE DE BOUCLE (2)
101
101
SI nombre d'itérations connu
nombre d'itérations connu ALORS
Boucle
Boucle POUR
POUR
SINON
SI itération exécutée au moins une fois
itération exécutée au moins une fois
ALORS
Boucle
Boucle REPETER JUSQU’À
REPETER JUSQU’À
SINON
Boucle
Boucle TANTQUE
TANTQUE
FINSI
FINSI
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
ALGORITHMES & PROGRAMMATION I
102
102
CHAPITRE VI
CHAPITRE VI
Les tableaux
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
TABLEAUX : DEFINITION
103
103
 Un tableau est un ensemble d'éléments de même
type désignés par un identificateur unique.
 Une variable entière nommée indice permet
d'indiquer la position d’un élément donné au sein
du tableau et de déterminer sa valeur.
 La déclaration d'un tableau s'effectue en précisant
le type de ses éléments et sa dimension (le nombre
de ses éléments).
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
LES TABLEAUX : DECLARATION
104
104
variable tableau identificateur[dimension]
[dimension] :
type
type
Exemple :
variable tableau notes[30]
[30] : réel
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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
TABLEAUX : REMARQUES
105
105
 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.
 Selon les langages, le premier indice du tableau est
soit 0, soit 1. Le plus souvent (au niveau
algorithmique) c'est 1 (c'est ce qu'on va adopter en
pseudo-code).
 Un grand avantage des tableaux est qu'on peut
traiter les données qui y sont stockées de façon
simple en utilisant des boucles.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
TABLEAUX : REMARQUES
106
106
 Un tableau peut être représenté graphiquement par (exemple
Note[15]) :
Note[2]  15 met la valeur 15 dans la 2ème case du tableau.
En considérant le cas où a est une variable de type entier, a 
Note[2] met la valeur de la 2ème case du tableau dans a, c’est- à-
dire 15.
Lire(Note [1]) met l’entier saisi par l’utilisateur dans la première
case du tableau.
Ecrire(Note [1]) affiche la valeur de la première case du tableau.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
TABLEAUX : SAISIE & AFFICHAGE
107
107
 Algorithme qui permet de saisir et d'afficher les
éléments d'un tableau de 30 notes:
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
TABLEAUX : SAISIE & AFFICHAGE (SOLUTION)
108
108
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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
TABLEAUX : EXEMPLE (1)
109
109
 Pour le calcul du nombre d'étudiants ayant une note
supérieure strictement à 10 avec les tableaux, on
peut écrire :
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
TABLEAUX : EXEMPLE (1)
110
110
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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
TABLEAUX : EXEMPLE (2)
111
111
 Soit T un tableau de vingt éléments de types entiers. Un
algorithme qui permet de calculer la somme des
éléments de ce tableau.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
TABLEAUX : EXEMPLE (2)
112
112
Variables i , somme : entier
Tableau T[20] : entier
DEBUT
somme  0
POUR i de 1 à 20 FAIRE
somme  somme + T[i]
FINPOUR
Ecrire(" La somme de tous les éléments du tableau est : " ,
somme)
FIN
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
TABLEAUX : EXERCICE
113
113
 Soit T un tableau de N entiers. Ecrire l’algorithme qui
détermine le plus grand élément de ce tableau.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
TABLEAUX : EXERCICE (SOLUTION)
114
114
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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
TABLEAUX A DEUX DIMENSIONS
115
115
 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
tableau identificateur[dimension1][dimension2]
[dimension1][dimension2] :
type
type
 Exemple : une matrice A de 3 lignes et 4 colonnes dont
les éléments sont réels
variable tableau
tableau A[3][4]
[3][4] : réel
réel
 A[i][j]
A[i][j] permet d'accéder à l’élément de la matrice qui se
trouve à
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
LECTURE D’UNE MATRICE
116
116
 Algorithme qui permet de saisir les éléments
d'une matrice de vingt lignes et cinquante
colonnes :
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
LECTURE D’UNE MATRICE
117
117
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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
AFFICHAGE D’UNE MATRICE
118
118
 Algorithme qui permet d'afficher les éléments
d'une matrice de vingt lignes et cinquante
colonnes :
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
AFFICHAGE D’UNE MATRICE
119
119
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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
SOMME DE DEUX MATRICES
120
120
 Algorithme qui calcule la somme de deux matrices de
vingt lignes et cinquante colonnes :
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
SOMME DE DEUX MATRICES
121
121
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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Tableaux à N dimensions
122
122
 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
Tableau nom_tableau[taille1][taille2] … [tailleN]
[taille1][taille2] … [tailleN] :
type
type
Exemple : Tableau
Tableau T[10][20][50]
[10][20][50] : réel
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 qu’il y a de
dimensions.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
ALGORITHMES & PROGRAMMATION I
123
123
CHAPITRE VII
CHAPITRE VII
Les STRUCTURES
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
DEFINITION
124
124
 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.
 Chaque valeur est rangée dans un champ et repérée par
un identificateur de champ
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
DECLARATION
125
125
 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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXEMPLE
126
126
Type 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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
ACCES AU CHAMPS
127
127
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
procédure ou de fonction : Echanger(elt1.Z,
elt2.Z)
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
DEFINITION DE TYPES
128
128
Type <Nomtype> =
= <définition du type>
 Il peut être pratique de définir des types puis d'utiliser
ces noms dans des déclarations de variables.
Syntaxe pour définir un type :
 Les déclarations qui utilisent un type défini se font
comme avec les types prédéfinis.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
DEFINITIONS DE TYPE & DECLARATION DE VARIABLES
129
129
Définition de type :
Type t_tab = tableau[15] d'entiers
Déclaration de variable :
Variable tab : t_tab
Définition de type :
Type t_matrice = tableau[3][5] de caractères
Déclaration de variable :
Variable mat : t_matrice
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
DEFINITIONS DE TYPE & DECLARATION DE VARIABLES
130
130
Définition de type :
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 de variable :
Variable elt : t_elt
Remarque : les noms de types suivent les règles des
identificateurs. C'est par simple commodité, pour les distinguer
des identificateurs des variables, que ceux des exemples
commencent par t_.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
TYPES COMPLEXES
131
131
 On peut construire des types complexes en
composant tableaux et structures :
 un élément de tableau peut être une structure,
 un champ de structure peut être un tableau
 Il n'y a pas de limite à la composition, les deux
slides suivants donnent des exemples simples.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
TABLEAUX DE STRUCTURES
132
132
Exemple : table des éléments
chimiques
Définitions des types :
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
Variable t_table : tableau[120] de t_elt
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
TABLEAUX DE STRUCTURES
133
133
 Déclaration :
Variable 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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
STRUCTURES AVEC TABLEAUX
134
134
Exemple : liste de températures avec nombre, minimum et
maximum.
Définitions des types :
Type t_temp = tableau[100] de réel
Type t_liste = STRUCTURE
temp : t_mesure /* tableau des températures */
nb : entier /* nombre de
températures */
tmin : réel /* température minimale
*/
tmax : réel /* température maximale
*/
FINSTRUCTURE
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
STRUCTURES AVEC TABLEAUX
135
135
Déclaration :
Variable mesures : t_liste
Accès à un élément :
mesures.nb vaut 5
mesures.temp[3] vaut 6,3
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
CONCLUSION STRUCTURES DE DONNEES
136
136
 Les tableaux et les structures permettent de
composer des structures complexes dans
lesquelles peuvent être organisés des rangements
des données qu'on appelle structures de données.
 D'autres types de données, en particulier des types
de variables dynamiques, peuvent contribuer à
construire des structures de données adaptées au
problème à résoudre.
 Les structures de données et les méthodes
algorithmiques qui les exploitent sont le plus
souvent dépendantes les unes des autres
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
ALGORITHMES & PROGRAMMATION I
137
137
CHAPITRE VIII
CHAPITRE VIII
Les POINTEURS
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
LA MÉMOIRE CENTRALE
138
138
 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.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Relation entre la variable & la MEMOIRE
139
139
 La variable occupe la mémoire, elle « habite » dans la
mémoire.
 Chaque variable occupe les cases mémoires qui lui
sont dédiées.
 Une variable de type caractère occupe 1 case mémoire,
soit 1 octet. Un entier va occuper 4 cases mémoires soit
4 octets, un réel occupe soit 4 soit 8 cases mémoire
selon la précision souhaitée.
Variable x :
entier
DEBUT
x10
10
x
100
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Relation entre la variable & la MEMOIRE
140
140
 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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Relation entre la variable & la MEMOIRE
141
141
 Variable T : tableau [5] d’entier va occuper 5x4
= 20 cases ou octets dans la mémoire.
 Si on suppose que le tableau T commence à partir
de l’octet n°200, on peut déduire que l’adresse du
tableau T est le numéro du premier octet de du
tableau T, c’est-à-dire 200.
 Chaque variable possède 4 caractéristiques :
1) Son nom  x
2) Son type  entier
3) Sa valeur 10
4) Son adresse  100
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
VARIABLES STATIQUES / VARIABLES DYNAMIQUES
142
142
 Variable statique : déclarée dans la partie « Variable
», le système lui réserve l’espace mémoire au
moment de la compilation et reste dans la mémoire
jusqu’à la fin de l’algorithme dans lequel elle est
déclarée.
 Variable dynamique : créée ou supprimée à
l’exécution à travers les pointeurs et les primitives
d’allocation et de libération de l’espace mémoire.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
NOTION DE POINTEUR
143
143
 Un pointeur est une variable qui contient l’adresse
d’une autre variable.
Déclaration :
<NomPointeur> : pointeur vers <TypeVariable> (1)
<NomPointeur> : ˆ <TypeVariable> (2)
Variable x : entier
P : pointeur sur entier (P va contenir l’adresse d’un
entier) ou P : ^Entier
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
NOTION DE POINTEUR
144
144
Exemple :
DEBUT
x  10
P  Adr(x)
On dit que P pointe vers x, ou bien que x est
pointée par P.
P contient l’adresse de x, alors il peut aller
jusqu'à x, il peut travailler sur x.
x = P^
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
NOTION DE POINTEUR
145
145
 Lorsque on dit que P pointe vers x, alors x et Pˆ
sont équivalents. Pˆ c’est le contenu de la variable
pointée par P.
P^  5
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICE 1
146
146
 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)
pt^5
n  7
xpt^
FIN
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
QU’Est-ce QU’ON PEUT FAIRE AVEC UN POINTEUR ?
147
147
 On a modifié la valeur de x en utilisant le pointeur P
(adressage indirect).
 Jusqu’à maintenant la seule manière de modifier x
était par affectation ou lecture d’une autre valeur
dans x (adressage direct).
 Ici on a vu qu’on peut manipuler une variable x en
utilisant un pointeur à condition que le pointeur
contienne l’adresse de x.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
CREER UNE VARIABLE DYNAMIQUE
148
148
Type pEntier = pointeur sur entier (définition du type
pEntier)
Variable P : pEntier //P est une variable statique
1. Création de la variable dynamique
La primitive Allouer(P) va faire deux choses :
1. Elle va créer en mémoire une variable dynamique de
type entier
2. L’adresse de l’espace mémoire sera sauvegarder dans
le pointeur P.
P


Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
CREER UNE VARIABLE DYNAMIQUE
149
149
2) Manipulation de la variable
dynamique
P^  5
3) Suppression de la variable
dynamique
Libérer(P)
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
CREER UNE VARIABLE DYNAMIQUE
150
150
 La primitive Libérer(P) va supprimer la variable
dynamique Pˆ et P va pointer vers une valeur
indéterminée.
 Après Libérer(P), l’instruction suivante Pˆ10
occasionne une erreur à la compilation car la variable
dynamique Pˆ n’existe plus.
 Pour initialiser une variables de type pointeur qui ne
pointe rien on écrit : PNIL
 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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXEMPLE 1
151
151
 Dérouler l’algorithme suivant
Algorithme Exemple
Variable P,Q : pointeur vers entier
DEBUT
Allouer(P)
P^10
Q  P
Q^ = P^+2
Q  NIL
Libérer(P)
FIN
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXEMPLE 2
152
152
 L'algorithme suivant n'a comme seul but que de
faire comprendre la manipulation des pointeurs.
 Avec des schémas, montrez l'état de la mémoire
en plus de ce qui s'affiche à l'écran.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXEMPLE (CORRIGE)
153
153
Variables ptc : pointeur sur chaîne de caractères
ptx1, ptx2 : pointeur vers entier
DEBUT
Allouer(ptc)
ptc^  ‘chat’
Ecrire(ptc^)
Allouer(ptx1)
Lire(ptx1^)
ptX2  ptx1
Ecrire(ptx2^)
Ptx2^  ptx1^ +
ptx2^
Ecrire(ptx1^, ptx2^)
ptx1  NIL
Ecrire(ptx2^)
Libérer(ptx2)
ptx2  NIL
ptc  NIL
FIN
Où est l'erreur ? : on a coupé l'accès à la zone de mémoire sans la libérer. Elle
est irrécupérable
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
VARIABLE DYNAMIQUE DE TYPE TABLEAU
154
154
Type Tab = tableau[100] de réel
pTab = pointeur vers Tab
variable P : pTab
i : entier
DEBUT
//1. Création de la variable dynamique
Allouer(P)
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
VARIABLE DYNAMIQUE DE TYPE TABLEAU
155
155
//2. Manipulation de la variable dynamique
POUR i de 1 à 100 FAIRE
Pˆ[i]  i
FINPOUR
//2. Suppression de la variable dynamique
Libérer(P)
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
VARIABLE DYNAMIQUE DE TYPE STRUCTURE
156
156
Type Date = STRUCTURE
J, m, a : entier
FINSTRUCTURE
pDate = pointeur vers Date
Variable P : pDate
DEBUT
//1. Création de la variable dynamique
Allouer(P)
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
VARIABLE DYNAMIQUE DE TYPE STRUCTURE
157
157
//2. Manipulation de la variable dynamique
Pˆ.j  14
Pˆ.m  09
Pˆ.a  2022
//3. Suppression de la variable dynamique
Libérer(P)
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICE 2
158
158
 Ecrire un algorithme qui calcul la somme de deux
valeurs entières en utilisant des pointeurs.
 Puis interchange leurs valeurs.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICE 2 (CORRIGE)
159
159
Algorithme exemple3 ;
P, Q, Sauv, Som : pointeur vers
entier;
DEBUT
Allouer(P)
Écrire(‘donnez la première
valeur:’)
Lire(P^)
Allouer(Q)
Écrire(‘donnez la deuxième
valeur:’)
Lire(Q^)
Allouer(Som)
Som^  P^ + Q^
Écrire(‘La somme=‘, Som^)
Libérer(Som);
Allouer(Sauv)
Sauv^  P^
P^  Q^
Q^  Sauv^
Libérer(Sauv)
Écrire(‘les nouvelles valeurs sont: P^, ‘et’,
Q^
Libérer(P)
Libérer(Q)
FIN
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
ALGORITHMES & PROGRAMMATION I
160
160
CHAPITRE IX
CHAPITRE IX
PROCEDURES & FONCTIONS
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
INTRODUCTION
161
161
 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 sera nécessaire.
 Il existe deux sortes de sous-algorithmes : les
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
LES PROCEDURES
162
162
 Une procédure est une série d'instructions
regroupées sous un nom, qui permet d'effectuer
des actions par un simple appel de la procédure
dans un algorithme ou dans un autre sous-
algorithme.
 Une procédure ne renvoie aucune valeur.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
DECLARATION D’UNE PROCEDURE
163
163
Syntaxe :
Procédure nom_proc(liste de paramètres)
Variables identificateurs : type
DEBUT
Instruction(s)
FINPROCEDURE
 Après le nom de la procédure, il faut donner la liste
des paramètres (s'il y en a) avec leur type respectif.
 Ces paramètres sont appelés paramètres formels.
 Leur valeur n'est pas connue lors de la création de
la procédure
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXEMPLE
164
164
 Ecrire une procédure qui affiche à l'écran une
ligne de 15 étoiles puis passe à la ligne suivante.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXEMPLE (CORRIGE)
165
165
Procédure Etoile()
Variables i : entier
DEBUT
POUR i de 1 à 15 FAIRE
Ecrire("*")
FINPOUR
Ecrire("retour à la ligne ")
FINPROCEDURE
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
L’APPEL D’UNE PROCEDURE
166
166
 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)
 Les paramètres utilisées lors de l'appel d'une procédure
sont appelés paramètres effectifs. Ces paramètres
donneront leurs valeurs aux paramètres formels.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXEMPLE
167
167
 En utilisant la procédure Etoiles déclarée dans
l'exemple précédent, écrire un algorithme
permettant de dessiner un carré d'étoiles de 15
lignes et de 15 colonnes.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXEMPLE (CORRIGE)
168
168
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(" retour à la ligne ")
FINPROCEDURE
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXEMPLE (CORRIGE)
169
169
//Algorithme principal (Partie principale)
DEBUT
POUR j de 1 à 15 FAIRE
//Appel de la procédure Etoiles
Etoile()
FINPOUR
FIN
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
REMARQUES
170
170
1. Pour exécuter un algorithme qui contient des
procédures et des fonctions, il faut commencer
l'exécution à partir de la partie principale (algorithme
principal)
2. Lors de la conception d'un algorithme deux aspects
apparaissent :
 La définition (déclaration) de la procédure ou
fonction.
 L'appel de la procédure ou fonction au sein de
l'algorithme principal.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
PASSAGE DE PARAMETRES
171
171
 Les échanges d'informations entre une procédure
et le sous algorithme appelant se font par
l'intermédiaire de paramètres.
 Il existe deux principaux types de passages de
paramètres qui permettent des usages différents :
1. Passage par valeur :
Dans ce type de passage, le paramètre formel
reçoit uniquement une copie de la valeur du
paramètre effectif. La valeur du paramètre
effectif ne sera jamais modifiée.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
PASSAGE DE PARAMETRES
172
172
Exemple :
Soit l'algorithme suivant :
Algorithme Passage_par_valeur
Variables N : entier
//Déclaration de la procédure P1
Procédure P1(A : entier)
DEBUT
A  A * 2
Ecrire(A)
FINPROCEDURE
//Algorithme
principal
DEBUT
N  5
P1(N)
Ecrire(N)
FIN
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
PASSAGE DE PARAMETRES
173
173
 Cet algorithme définit une procédure P1 pour laquelle
on utilise le passage de paramètres par valeur.
 Lors de l'appel de la procédure, la valeur du
paramètre effectif N est recopiée dans le paramètres
formel A.
 La procédure effectue alors le traitement et affiche la
valeur de la variable A, dans ce cas 10.
 Après l'appel de la procédure, l'algorithme affiche la
valeur de la variable N dans ce cas 5.
 La procédure ne modifie pas le paramètre qui est
passé par valeur.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
PASSAGE DE PARAMETRES
174
174
2. Passage par référence ou par adresse :
 Dans ce type de passage, la procédure
utilise l'adresse du paramètre effectif.
 Lorsqu'on utilise l'adresse du paramètre, on
accède directement à son contenu. La
valeur de la variable effectif sera donc
modifiée.
 Les paramètres passés par adresse sont
précédés du mot clé Var.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
PASSAGE DE PARAMETRES
175
175
Reprenons l'exemple précédent :
Algorithme Passage_par_référence
Variables N : entier
//Déclaration de la procédure P1
Procédure P1 (Var A : entier)
DEBUT
A  A * 2
Ecrire(A)
FINPROCEDURE
//Algorithme Principal
DEBUT
N  5
P1(N)
Ecrire(N)
FIN
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
PASSAGE DE PARAMETRES
176
176
 A l'exécution de la procédure, l'instruction Ecrire(A)
permet d'afficher à l'écran 10.
 Au retour dans l'algorithme principal, l'instruction
Ecrire(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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
LES FONCTIONS
177
177
 Les fonctions sont des sous algorithmes admettant
des paramètres et retournant un seul résultat (une
seule valeur) de type simple qui peut apparaître
dans une expression, dans une comparaison, à la
droite d’une affectation, etc.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
DECLARATION D’UNE FONCTIONS
178
178
Syntaxe :
Fonction nom_Fonct (liste de paramètres) : type
Variables identificateur : type
DEBUT
Instruction(s)
Retourner (Expression)
FINFONCTION
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
DECLARATION D’UNE FONCTIONS
179
179
 La syntaxe de la déclaration d'une fonction est
assez proche de celle d'une procédure à laquelle
on ajoute un type qui représente le type de la
valeur retournée par la fonction et une
instruction « Retourner Expression ».
 Cette dernière instruction renvoie au
programme appelant le résultat de l'expression
placée à la suite du mot clé Retourner.
Note :
 Les paramètres sont facultatifs, mais s'il n'y pas
de paramètres, les parenthèses doivent rester
présentes.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXEMPLE
180
180
Définir une fonction qui renvoie le plus grand
de deux nombres différents.
//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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
L’APPEL D’UNE FONCTION
181
181
 Pour exécuter une fonction, il suffit de faire appel à
elle en écrivant son nom suivie des paramètres
effectifs.
 C'est la même syntaxe qu'une procédure.
 A la différence d'une procédure, la fonction retourne
une valeur.
 L'appel d'une fonction pourra donc être utilisé dans
une instruction (affichage, affectation, ...) qui utilise
sa valeur.
Syntaxe :
Nom_Fonc(list de paramètres)
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXEMPLE
182
182
Ecrire un algorithme appelant, utilisant la fonction
Max de l'exemple précédent.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXEMPLE (SOLUTION)
183
183
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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXEMPLE (SOLUTION)
184
184
//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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
PORTEE DES VARIABLES
185
185
 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 variable locale. Elle n'est
accessible qu’à l’intérieur de 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 durée d'exécution de la procédure.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
PORTEE DES VARIABLES
186
186
Algorithme Portée
Variables X, Y : entier
Procédure P1()
Variables A : entier
DEBUT
…
FINPROCEDURE
//Algorithme principal
DEBUT
…
FIN
X et Y sont des variables globales
Visibles dans tout l’algorithme.
A est une variable locale
visible uniquement à
l’intérieur de la procédure
Remarque : Les variables globales sont à éviter pour la maintenance des
programmes.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
LA RECURSIVITE
187
187
Le corps d’une fonction peut contenir un appel à cette
même fonction.  La fonction « se rappelle elle-même »
Ceci est très similaire aux suites définies par récurrence,
qui existent en mathématiques.
Exemple d’une suite définie par récurrence :
 C’est plus pratique d’avoir un = …
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
LA RECURSIVITE
188
188
FONCTION u(n : entier) : entier
DEBUT
SI (n=0) ALORS
Renvoyer 5
SINON SI (n≥1) ALORS
Renvoyer (2*u(n-1))
FINSI
FINSI
FINFONCTION
On va écrire une fonction récursive u qui prend en
argument
un entier n et qui renvoie la valeur de un .
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICE
189
189
Ecrire une fonction récursive permettant de calculer la
factorielle d'un entier positif.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICE (CORRIGE)
190
190
//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
n != n * (n-1) ! : La factorielle de n est n fois la factorielle de
n-1
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
commentaires
191
191
 Dans cet exemple, la fonction renvoie 1 si la valeur
demandée est inférieur à 1, sinon elle fait appel à
elle même avec un paramètre inférieur de 1 par
rapport au précédent.
 Les valeurs de ces paramètres vont en décroissant
et atteindront à un moment la valeur une (1).
 Dans ce cas, il n'y a pas d'appel récursif et donc
nous sortons de la fonction.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
NOTE
192
192
 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 interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICE
193
193
Calculez la somme des entier d
1àn :
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
AVANTAGES DES PROCEDURES & FONCTIONS
194
194
 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).
 La mise au point du programme est plus rapide
en utilisant des procédures et des fonctions. En
effet, elle peut être réalisée en dehors du
contexte du programme.
 Une procédure peut être intégrée à un autre
programme, ou elle pourra être rangée dans une
bibliothèque d'outils ou encore utilisée par
n'importe quel programme.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
ALGORITHMES & PROGRAMMATION I
195
195
CHAPITRE X
CHAPITRE X
LES LISTES LINEAIRES CHAINEES
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Notion d’allocation dynamique
196
196
 L’utilisation des tableaux statiques implique que
l’allocation de l’espace se fait tout à fait au début
d’un traitement, c’est à dire que l’espace est connu à
la compilation.
 Pour certains problèmes, on ne connaît pas à
l’avance l’espace utilisé par le programme. On est
donc contraint d’utiliser une autre forme
d’allocation.
 L’allocation de l’espace se fait alors au fur et à
mesure de l’exécution du programme.
 Afin de pratiquer ce type d’allocation, deux
opérations sont nécessaires : allocation et libération
de l’espace.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Exemple
197
197
 Supposons que l’on veuille résoudre le problème
suivant : « Trouver tous les nombres premiers de 1
à n et les stocker en mémoire ».
 Le problème réside dans le choix de la structure de
données. Si on utilise un tableau, il n’est pas
possible de définir la taille de ce tableau avec
précision même si nous connaissons la valeur de n
(par exemple 10000).
 On est donc, ici, face à un problème où la
réservation de l’espace doit être dynamique.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Définition d’une liste LINEAIRE CHAINEE
198
198
 Une liste linéaire chaînée (LLC) est une structure de
données composée d’un ensemble de maillons,
alloués dynamiquement et chaînés entre eux.
 Dans une liste linéaire chaînée on doit avoir :
1. Un pointeur particulier (L) qui pointe sur le
premier élément (contient l’adresse du premier
maillon), appelé tête de liste
5
20
0
0
25
0
-1
30
0
3
NI
L
L=10
0
100 200 250 300
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Définition d’une liste LINEAIRE CHAINEE
199
199
2. Chaque maillon est chaîné avec son suivant
(chaque maillon contient dans son champ suivant,
l’adresse du prochain maillon).
3. Le dernier maillon n’a pas de suivant (son champ
suivant contient NIL)
5
20
0
0
25
0
-1
30
0
3
NI
L
L=10
0
100 200 250 300
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Définition des structures de donnes
200
200
5
20
0
0
25
0
-1
30
0
3
NI
L
L=10
0
100 200 250 300
P
Q
5
20
0
Type : Maillon
Val
(Typeqlq)
Suiv
(pointeur sur
Maillon)
Type Maillon = STRUCTURE
Val : Typeqq
Suiv : Pointeur sur Maillon
FINSTRUCTURE
Type Liste = pointeur sur Mailon
Variable L, P, Q : Liste
Type :
Liste
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
MODELE SUR LES LISTES
201
201
Primitives
Primitives Exemples d’appels
Exemples d’appels Rôle
Rôle
Init
Init Init(P)
Init(P) Initialise le pointeur P à NIL
Allouer
Allouer Allouer(P)
Allouer(P)
Reserve un espace Pour un maillon et retourne son
adresse
Libérer
Libérer Libérer(P)
Libérer(P)
Supprime le maillon pointé par P (P n’est pas
supprimé)
Val
Val x
x 
 Val(P)
Val(P)
Retourne le contenu du champ Val du maillon pointé par
P
Aff_Val
Aff_Val
Aff_val(P,3)
Aff_val(P,3) Affecte une valeur au champ du maillon pointé par P.
(Le premier paramètre est un pointeur vers un maillon,
et le deuxième paramètre est une valeur, ou variable,
une expression ayant le même type que celui du champ
Val du maillon).
Aff_val(P, x)
Aff_val(P, x)
Aff_Val(P, Val(Q))
Aff_Val(P, Val(Q))
Suiv
Suiv
Q
Q 
 P
P
P
P 
 Suiv(P)
Suiv(P)
Q
Q 
 Suiv(P)
Suiv(P)
Retourne le contenu du champ Suiv du maillon pointé
par P.
Aff_Suiv
Aff_Suiv
Aff_Suiv(P,Q)
Aff_Suiv(P,Q) Affecte une adresse du champ Suiv du maillon ponté par
P. (Les deux paramètres doivent être des pointeurs de
type Liste))  Dans ce cas le chaînage du maillon
pointé par P est changé vers un autre maillon ou
supprimé complètement.
Aff_Suiv(P, Suiv(Q))
Aff_Suiv(P, Suiv(Q))
Aff_Suiv(P, NIL)
Aff_Suiv(P, NIL)
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
OPERATIONS ELEMENTAIRES
202
202
100
2)
2) Création d’un maillon :
Création d’un maillon : (Allouer)
(Allouer)
P
10
0
Allouer(P)
P
?
1)
1) Initialisation d’un pointeur :
Initialisation d’un pointeur :
(Allouer)
(Allouer)
P
NI
L
Init(P)
P
?
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
OPERATIONS ELEMENTAIRES
203
203
100
4)
4) Avoir le contenu du champ Val d’un maillon :
Avoir le contenu du champ Val d’un maillon :
(Val)
(Val)
P
10
0
x Val(P) x
5
5
100
P
10
0
x
5
3)
3) Création d’un maillon
Création d’un maillon : (Libérer)
: (Libérer)
P
?
Libérer(P)
100
P
10
0
5
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
OPERATIONS ELEMENTAIRES
204
204
P
Aff_Val(P,x) x
5
5
3
Aff_Val(P,Val(Q))
P x
5
P
Aff_Val(P,3)
3
P
1
Q P
-1 -1
Q P
-1
5)
5) Modifier / Affecter la valeur d’un maillon :
Modifier / Affecter la valeur d’un maillon :
(Aff_Val)
(Aff_Val)
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
OPERATIONS ELEMENTAIRES
205
205
3
Q  P
Q
P
-1
20
0
100
3
Q
P
-1
6)
6) Placement / Déplacement d’un pointeur :
Placement / Déplacement d’un pointeur :
(Suiv)
(Suiv)
10
0
200
100 100
10
0
20
0
20
0
3
P
-1
20
0
100
10
0
20
0
p 
Suiv(P) 3
P
-1
20
0
200
10
0
20
0
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
OPERATIONS ELEMENTAIRES
206
206
Q 
Suiv(P)
Q P
4 200
100
6)
6) Placement / Déplacement d’un pointeur :
Placement / Déplacement d’un pointeur :
(Suiv)
(Suiv)
10
0
200
0 300 3
20
0
30
0
Q
P
4 200
300
10
0
200
0 300 3
20
0
30
0
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
OPERATIONS ELEMENTAIRES
207
207
Aff_Suiv(P,Q)
Q
P
4 NIL
100
7)
7) Affectation / Changement / Suppression du suivant :
Affectation / Changement / Suppression du suivant :
(Aff_Suiv, Suiv)
(Aff_Suiv, Suiv)
10
0
200
0 300 3
20
0
30
0
Q
P
4 200
200
10
0
100
0 300 3
20
0
30
0
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
OPERATIONS ELEMENTAIRES
208
208
Aff_Suiv(P,NIL)
Q
P
4 200
100
7)
7) Affectation / Changement / Suppression du suivant :
Affectation / Changement / Suppression du suivant :
(Aff_Suiv, Suiv)
(Aff_Suiv, Suiv)
10
0
200
0 300 3
20
0
30
0
Q
P
4
200
10
0
100
0 300 3
20
0
30
0
Aff_Suiv(P,Suiv(Q)
)
Q
P
4 200
100
10
0
200
0 300 3
20
0
30
0
Q
P
4 300
200
10
0
100
0 300 3
20
0
30
0
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
MODELE SUR LES LISTES
209
209
Primitives
Primitives Langage algorithmique
Langage algorithmique
Allouer
Allouer
Libérer
Libérer
Val
Val
FONCTION Val(P: Liste) : Typeqld
DEBUT
Retourner (P^.Val)
FINFONCTION
Aff_Val
Aff_Val
PROCEDURE Aff_Val(P: Liste, x: Typeqld)
DEBUT
P^.Valx
FINPROCEDURE
Suiv
Suiv
FONCTION Val(P: Liste) : Liste
DEBUT
Retourner (P^.Suiv)
FINFONCTION
Aff_Suiv
Aff_Suiv
PROCEDURE Aff_Suiv(P: Liste, Q: Liste)
DEBUT
P^.SuivQ
FINPROCEDURE
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICES D’APPLICATION DU MODELE
210
210
Donner la représentation graphique de la liste
après chaque ligne, en précisant les éléments
pointés par P, Q et S
Allouer(S)
Aff_Val(S,2)
QS …ligne 1
Allouer(P)
Aff_Val(P,Val(Q)-1)
Aff_Suiv(S,P) …ligne 2
QSuiv(S) …ligne 3
Aff_Suiv(P,S) …ligne 4
Aff_Suiv(S,NIL) …ligne 5
Aff_Suiv(P,Suiv(S)) …ligne 6
QSuiv(P) …ligne 7
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICES D’APPLICATION DU MODELE(CORRIGE)
211
211
Allouer(S)
Aff_Val(S,2)
QS …ligne 1
S Q P
Allouer(P)
Aff_Val(P,Val(Q)-1)
Aff_Suiv(S,P) …ligne 2
2
S Q P
2 1
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICES D’APPLICATION DU MODELE(CORRIGE)
212
212
QSuiv(S) …ligne 3
Aff_Suiv(P,S) …ligne
4
S Q P
2 1
S Q P
2 1
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICES D’APPLICATION DU MODELE(CORRIGE)
213
213
Aff_Suiv(S,NIL) …ligne 5
S Q P
2 NIL 1
S
Q P
2 NIL
1
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICES D’APPLICATION DU MODELE(CORRIGE)
214
214
QSuiv(P) …ligne 7
S
Q =
NIL
P
2 NIL
1 NIL
Aff_Suiv(P,Suiv(S)) …ligne 6
S
Q P
2 NIL
1 NIL
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICES
215
215
Etant donné une liste d’entiers non vide L.
Ecrire des sous algorithmes pour résoudre les
problèmes suivants :
1.Afficher les éléments de L.
2.Calculer la moyenne des éléments de L.
3.Calculer le maximum et le minimum de L.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICES(COORIGE)
216
216
Etant donné une liste d’entiers non vide L.
1.Afficher les éléments de L
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICES(CORRIGE)
217
217
Etant donné une liste d’entiers non vide L.
2.Calculer la moyenne des éléments de L.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICES(CORRIGE)
218
218
Etant donné une liste d’entiers non vide L.
3.Calculer maximum et le minimum de L.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
CREATION D’UNE LISTE
219
219
L =
NIL
L
3 NIL
5
 A chaque fois
1. On crée un maillon
2. On lui affecte une valeur
3. O met à jour son chaînage
La création d’une liste respecte 3 règles
1. Posséder un pointeur spécifique (L) qui pointe sur le premier
maillon (Dans le cas où la liste est vide L doit être égal à NIL)
2. Chaque maillon doit être chaîné (relié) avec son précédent sauf le
premier
3. Le champ suivant du dernier maillon doit être égal à NIL
0
2
Liste
vide
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICES
220
220
1) Créer une liste chaînée L d’entiers
2) Afficher la liste L
3) Calculer la somme de ses éléments
4) Afficher l’élément de la position R
5) Supprimer l’élément de la position R
6) Insérer un élément dans la position R
7) Donner l’occurrence de la valeur V
8) Libérer la liste L.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
ALGORITHMES & PROGRAMMATION I
221
221
CHAPITRE XI
CHAPITRE XI
LES PILES & FILES
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
ALGORITHMES & PROGRAMMATION I
222
222
CHAPITRE XII
CHAPITRE XII
LES FICHIERS
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
ALGORITHMES & PROGRAMMATION I
223
223
CHAPITRE XIII
CHAPITRE XIII
LA COMPLEXITE ALGORITHMIQUE
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
INTRODUCTION
224
224
 Le but de ce chapitre n'est pas de faire de vous des
experts en la matière, mais plutôt de vous donner une
bonne introduction sur la question de complexité,
comprendre pourquoi certains programmes prennent
beaucoup plus de temps à s'exécuter que d'autres.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
OBJECTIFS
225
225
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EFFICACITE D’UN PROGRAMME
226
226
 L'efficacité d'un programme fait en réalité référence à
une écriture de code intelligente, bien réfléchie. En
d'autres termes un bon algorithme.
 L'efficacité se mesure sur deux dimensions :
l’espace mémoire
et le temps.
 Le plus souvent, on ne peut pas avoir les deux
dimensions en même temps. C'est-à-dire avoir un
programme qui ne prend pas assez d'espace en mémoire
mais qui est moins rapide, ou un programme qui est très
rapide mais qui prend assez d'espace en mémoire.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
ESPACE MEMOIRE (COMPLEXITE SPATIALE)
227
227
 Dans la complexité spatiale, on s’intéresse à la
question suivante :
 De combien de mémoire le programme a t’il besoin ?
 Dans ce cours nous ne nous intéressons pas à la
complexité spatiale, car la mémoire croyez moi ce
n'est pas ce qui manque aux ordinateurs de nos
jours.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
LE TEMPS (COMPLEXITE TEMPORELLE)
228
228
 Dans la complexité temporelle, on s’intéresse à la question
suivante :
Combien de temps d’exécution le programme dure t’il ?
Question :
Supposons que nous aimerions répondre à la question
suivante : Combien de temps un algorithme implémenter par un
programme prend à s'exécuter ?
Réponse :
Méthode Empirique :
On peut par exemple lancer l’exécution du programme
sur un ordinateur et chronométré l'exécution de ce
dernier; et dire plus tard que l'exécution a fait par
exemple 4 minutes.
On peut par la suite, lancer un autre programme pour le
même problème et obtenir par exemple 2 minutes de
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
LE TEMPS (COMPLEXITE TEMPORELLE)
229
229
Conclusion :
On peut conclure que le programme faisant 2 minutes est le
meilleur !!! .  Faux
Concrètement c'est une mauvaise manière de tester l'efficacité
d'un programme car cette méthode dépend :
 de la machine utilisée;
 du jeu d’instructions utilisées
 de l’habileté du programmeur
 du jeu de données générées
 du compilateur choisi
Mais on n’a pas pris en compte la complexité des calculs du
programme.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
LE TEMPS (COMPLEXITE TEMPORELLE)
230
230
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
A QUOI ON S’INTERESSE ?  pire de cas
231
231
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
A QUOI ON S’INTERESSE ?  pire de cas
232
232
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
OPERATIONS ELEMENTAIRES
233
233
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
COMPLEXITE & ORDRE DE GRANDEUR
234
234
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
COMPLEXITE & ORDRE DE GRANDEUR
235
235
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
COMPLEXITE & ORDRE DE GRANDEUR
236
236
Réponses :
1)Cette fonction calcule le factoriel du nombre fourni en argument.
2)C(n) = 1 + 1+ 5(n-1) + 1 = 5n-2
Discussion :
Imaginons que n soit égal à 2000 nous aurons 5*2000 - 2 = 9998
instructions. Malgré ce résultat, il est toujours difficile d'exprimer la
complexité du programme (difficile à classifier les algorithmes).
En effet, on cherche ou plutôt on doit avoir une seule variable de
référence (pas une équation) car ce qui nous intéresse c'est la croissance
de cette variable en fonction des entrées du programme.
 Dans l’exemple précédent : Notre variable de référence est n 
pourquoi ?
 On doit faire une approximation par limite a une fonction connu
: 5n-2 n.
≈ (Voir la parte : ordre de grandeur)
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
COMPLEXITE & ORDRE DE GRANDEUR
237
237
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
COMPLEXITE & ORDRE DE GRANDEUR
238
238
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
MODELE DE CROISSANCE (NOTIONS MATHEMATIQUES)
239
239
 En mathématique, il existe plusieurs modèles de croissance
(selon la forme de la courbe) :
 1 : représente le modèle des fonctions
constantes. Exp : f(n) = 5, f(n) = 8 , f(n) = 35 : (ont tous
la même forme de courbe  une ligne
parallèle avec l’axe desx).
 n : représente le modèle des fonctions linéaire. Exp : f(n)
= 3n+10, f(n) = n+30, f(n) = 12n-5 ...
 n2
: représente le modèle des fonctions quadratique.
 n3
: représente le modèle des fonctions cubique.
 2n
: représente le modèle des fonctions exponentielle.
 Log(n) : représente le modèle des fonctions
logarithmique.
 nLog(n) : représente le modèle des fonctions sous-
quadratique.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
COMMENT TROUVER L’ORDRE DE GRANDEUR D’UN ALGORITHME
240
240
 Pour trouver à quelle modèle de complexité appartient
notre algorithme, on doit :
 Calculer la complexité « C » (le nombre d’instructions)
pour n et pour n+1, et faire la différence entre les
deux. (n : doit être le plus grand possible).
 Calculer f = C(n+1)-C(n) afin de trouver le modèle de
croissance qui limite f.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
COMMENT TROUVER L’ORDRE DE GRANDEUR D’UN ALGORITHME
241
241
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
COMMENT TROUVER L’ORDRE DE GRANDEUR D’UN ALGORITHME
242
242
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
COMMENT TROUVER L’ORDRE DE GRANDEUR D’UN ALGORITHME
243
243
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
COMMENT TROUVER L’ORDRE DE GRANDEUR D’UN ALGORITHME
244
244
Exercice démonstratif N3 :
DEBUT
X 0
POUR i de 1 à n FAIRE
POUR j de 1 n FAIRE
xx+1
FINPOUR
FNPOUR
FIN.
On a deux boucles imbriquées, dont chacune va s’exécuter n
fois  donc on a n*n itérations.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
COMMENT TROUVER L’ORDRE DE GRANDEUR D’UN ALGORITHME
245
245
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
COMMENT TROUVER L’ORDRE DE GRANDEUR D’UN ALGORITHME
246
246
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
PROPRIETES DU LANDAU
247
247
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
ALGORITHMES & PROGRAMMATION I
248
248
CHAPITRE XIV
CHAPITRE XIV
INITIATION A LA COMPLEXITE
ALGORITHMIQUE
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICE INTRODUCTIF
249
249
 Exercice
Ecrire une fonction qui prend en argument une
chaine de caractère et détermine si le caractère ‘a’
est présent dans la chaîne (cette fonction
retourne soit VRAI ou FAUX.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICE INTRODUCTIF (SOLUTION 1)
250
250
Fonction contienta1(x : chaîne) : booléen
DEBUT
k  0
n  long(x)
Res  FAUX
TANTQUE((res=FAUX) ET (k<n)) FAIRE
SI x[k] = ‘a’ ALORS
Res  VRAI
kk+1
FINSI
FINTANTQUE
Retourner(res)
FINFONCTION
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICE INTRODUCTIF (SOLUTION 2)
251
251
Fonction contienta2(x : chaîne) : booléen
DEBUT
POUR i de 1 à long(x) FAIRE
SI (x[i] = ‘a’) ALORS
Retourner(VRAI)
SINON
Retourner(FAUX)
FINSI
FINFONCTION
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICE INTRODUCTIF (SOLUTION 3)
252
252
Fonction contienta3(x : chaîne) : booléen
DEBUT
n  (long(x) = compte(‘a’, x))
Retourner(n)
FINFONCTION
Fonction contienta4(x : chaîne) : booléen
DEBUT
Retourner(present(‘a’, x))
FINFONCTION
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
EXERCICE INTRODUCTIF
253
253
Questions
1.Que remarquez vous concernant cet
exercice ?
2.Le code le plus court ! Est-il meilleur ?
3.Comment peut-on désigner le meilleur code
parmi ces quatre solutions ?
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
DEFINITION DE LA COMPLEXITE D’UN ALGORITHME
254
254
 Généralement, pour le même problème P, on
peut trouver plusieurs algorithmes.
 L’objectif de la complexité est d’évaluer le coût
d’exécution de chaque algorithme afin de choisir le
meilleur.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
DEFINITION DE LA COMPLEXITE D’UN ALGORITHME
255
255
Définition
La complexité d’un problème mathématique est
une mesure de la quantité de ressources nécessaires à
la résolution du problème P.
Cette mesure est basée sur une estimation du
nombre d’opérations de base effectuées par
l’algorithme en fonction de la taille des données en
entrée de l’algorithme.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
PROBLEME
256
256
Comment évaluer le coût
Comment évaluer le coût
d’exécution d’un algorithme
d’exécution d’un algorithme
donné ?
donné ?
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
TYPE DE COMPLEXITE
257
257
 En fonction des ressources utilisées pour évaluer
la complexité d’un algorithme, on sera amené à
distinguer deux types de complexité :
1. Complexité temporelle
2. Complexité spatiale
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
TYPE DE COMPLEXITE
258
258
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
TYPE DE COMPLEXITE
259
259
2. Complexité spatiale (en espace)
La complexité en mémoire donne le nombre
d’emplacements mémoires occupés lors de
l’exécution d’un programme.
Remarque
Dans ce cours, nous nous intéresserons uniquement à la
complexité temporelle.
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
LA NOTATION « grand O »
260
260
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
LA NOTATION « grand O »
261
261
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
LA NOTATION « grand O »
262
262
 Dans les 2 exemples précédents il était facile de
borner le temps d’exécution afin de trouver la
complexité.
 Mais en général il est difficile de trouver le seuil afin
de borner cette complexité.
 Pour cela on applique les règles suivante afin de
simplifier l’expression du temps d’exécution :
1. Tout d’abord on remplace les constante
multiplicative par 1
2. On annule les constantes additives
3. On garde le terme de plus haut degré
 C’est ainsi qu’on peut calculer facilement la
complexité du programme en question
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Le COÛT DES INSTRUCTIONS ELEMENTAIRES
263
263
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Le COÛT DES INSTRUCTIONS ELEMENTAIRES
264
264
Opérations composées :
On appelle opération composée, toute instruction
contenant :
1. L’exécution d’une instruction conditionnelle : Si P est
une instruction conditionnelle du type SI b ALORS
Q1 SINON Q2 FINSI, le nombre d’opération est :
Coût(P) = Coût(test) + max(Coût(Q1), Coût(Q2))
L’exécution d’une boucle : le temps d’une boucle est
égal à la multiplication du nombre de répétition par la
somme du coût de chaque instruction xi du corps de
la boucle :
Coût(Boucle POUR) = Coût(x
∑ i)
Coût(Boucle TANTQUE) = Coût(comparaison) + Coût(x
∑ i)
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Le COÛT DES INSTRUCTIONS ELEMENTAIRES
265
265
3. L’appel d’une fonction : Lorsqu’une fonction ou
une procédure est appelée, le coût de cette
fonction ou procédure est le nombre total
d’opérations élémentaires engendrées par
l’appel de cette fonction.
Exemple 3 : Que vaut le coût de l’algorithme
B
SI(i modulo 2 = 0) ALORS
n  i div 2
SINON
i  i+1
n  i div 2
FINSI
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
Le COÛT DES INSTRUCTIONS ELEMENTAIRES
266
266
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
DIRRERENTES NUANCES DE COMPLEXITE
267
267
 Pour des données de même taille, un algorithme
n’effectue pas nécessairement le même nombre
d’opérations élémentaires.
 Pour cela, on distingue 3 types de complexité :
1. Complexité au pire des cas
2. Complexité dans le meilleur des cas
3. Complexité en moyenne des cas
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
COMPLEXITE AU PIRE DES CAS
268
268
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
COMPLEXITE AU PIRE DES CAS
269
269
Exemple : Recherche d’une élément dans un
tableau
FONCTION trouver(T : tableau d’entiers , x : entier) :
booléen
DEBUT
POUR i de 1 à n FAIRE
SI (i = x) ALORS
Retourner VRAI
SINON
Retourner FAUX
FINSI
FINPOUR
FINFONCTION
 On note n la longueur du tableau T (n = long(T))
 Dans le pire des cas, l’élément recherché x est le dernier (dans la
case n) ou absent.
 Donc la complexité dans le pire des cas est Cmax(n) = n
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
COMPLEXITE DANS LE MEILLEUR DES CAS
270
270
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
COMPLEXITE DANS LE MEILLEUR DES CAS
271
271
Exemple : Recherche d’un élément dans un tableau
 On considère le même exemple précédent.
 Dans le meilleur des cas, l’élément x se trouve en 1ère
position.
 Donc la complexité dans le meilleur des cas est : Cmax(n) =
1
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
COMPLEXITE EN MOYENNE DES CAS
272
272
Reproduction interdite
Reproduction interdite
Muhammad Ibn
Muhammad Ibn
Musa al-
Musa al-
Khawarizmi
Khawarizmi
COMPLEXITE EN MOYENNE DES CAS
273
273

Votre score augmente si vous choisissez une catégorie et que vous rédigez une longue description et ajoutez plus d’étiquettes.

  • 1.
    Reproduction interdite Reproduction interdite M5- ALGORITHMES & PROGRAMMATION I M5 - ALGORITHMES & PROGRAMMATION I Licence informatique (L1) Licence informatique (L1)
  • 2.
    Reproduction interdite Reproduction interdite PrésentationDE L’ENSEIGNANT Présentation DE L’ENSEIGNANT M. Olyvier NZIGHOU M. Olyvier NZIGHOU Master 2 Gestion de Projets Informatiques de l’Université de Strasbourg. Enseignant vacataire à l’IST, EPL, IAI, ESIITECH Tél. : 066049840 / 077684285 Email : olyvier.nzighou@gmail.com
  • 3.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Objectifs du cours 3 3  Apprendre les concepts de base de l'algorithmique et de la programmation  Être capable de mettre en œuvre ces concepts pour analyser des problèmes simples et écrire les algorithmes correspondants
  • 4.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Evaluation 4 4  Contrôles (70%) inclus  Devoirs  Interrogations  Dont les TP (30%)  Examen final (40%)
  • 5.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Enseignement 5 5  Cours Magistral  TD/TP
  • 6.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi COMPETENCES À ACQUERIR 6 6  Savoir transcrire un problème en algorithmes  Savoir manipuler des structures de données
  • 7.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Contenu du cours 7 7 1. Concepts de base  Structure d’un algorithme  Variables et constantes  Types de données 2. Expression et instructions élémentaires  Expressions  Instruction Lire, Ecrire,  3. Structures de contrôle  Structures alternatives  Structures conditionnelles  Structures itératives 4. Structures de données  Les tableaux  Structures  Les pointeurs 5. Fonctions et procédures  Déclaration et appel  Passage de paramètres  Portée des variables  Récursivité  Avantages
  • 8.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi ALGORITHMES & PROGRAMMATION I 8 8 CHAPITRE I CHAPITRE I Introduction
  • 9.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Historique 9 9  Le mot algorithme vient du savant perse ALKHAWARIZMI, Muhammad Ibn Musa al- Khawarizmi  Né vers 780 mort vers 850  Par référence à ALKHAWARIZMI, le mot algorithme est devenu en latin algorimus avant de devenir algorithme en français en 1554.
  • 10.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi DEFINITION d’un algorithme 10 10 Dans la vie courante, un algorithme peut par exemple prendre la forme : D’une recette de cuisine; D’un mode d’emploi; D’une notice de montage d’un meuble; D’une indication de chemin à un touriste; Un algorithme est donc une suite d’opérations (ou instructions) qui doivent être exécutées dans un ordre déterminé dans le but de résoudre un problème. Il est écrit en utilisant un Langage de Description Algorithmique (LDA) appelé aussi pseudo-code
  • 11.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi L’ALGORITHMIQUE dans le monde informatique 11 11  L’algorithmique est une branche de l’informatique qui étudie la rapidité et l’efficacité des algorithmes dans le but de les transformer en programme en les traduisant dans un langage compréhensible par l’ordinateur (langage de programmation).
  • 12.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Pourquoi L’ALGORITHMIQUE ? 12 12  Apprendre l’algorithmique  pour apprendre à programmer Algorithme Programme Description du problème : suite d’instructions pour résoudre un problème, indépendamment des particularités de tel ou tel langage (pseudo-code) Programme exécutable (écrit dans un langage de programmation : C, C++, Java, Python, PHP…) en respectant la syntaxe propre à chaque langage Passage (obligatoire) pour les programmeurs
  • 13.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi RESOLUTION d’un PROBLEME en informatique 13 13 Plusieurs étapes sont nécessaires pour résoudre un problème informatique : Etape 1 : Définition du problème :  Il s’agit de déterminer toutes les informations disponibles et la forme des résultats désirés. Etape 2 : Analyse du problème :  Elle consiste a trouver le moyen de passer des données aux résultats. Dans certains cas on peut être amené à faire une étude théorique.  Le résultat de l’analyse est un algorithme.
  • 14.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi RESOLUTION d’un PROBLEME en informatique 14 14  Etape 3 : Ecriture d’un algorithme avec un langage de description algorithmique (LDA) :  Une fois qu’on trouve le moyen de passer des données aux résultats, il faut être capable de rédiger une solution claire et non ambiguë. Comme il est impossible de le faire en langage naturel, l’existence d’un langage algorithmique s’impose.  Etape 4 : Traduction de l’algorithme dans un langage de programmation  Les étapes 1, 2, 3 se font sans le recours de la machine. Si on veut rendre l’algorithme concret ou pratique, il faudrait le traduire dans un langage de programmation.
  • 15.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi RESOLUTION d’un PROBLEME en informatique 15 15  Etape 5 : Mise au point du programme  Quand on soumet le programme à la machine, cette dernière le traite en deux étapes : 1. La machine corrige l’orthographe, c’est ce qu’on appelle syntaxe dans le jargon de la programmation. 2. La machine traduit le sens exprimé par le programme.
  • 16.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi RESOLUTION d’un PROBLEME en informatique 16 16  Si les résultats obtenus sont ceux attendus, la mise au point du programme se termine.  Si nous n’obtenons pas de résultats, on dira qu’il y a existence des erreurs de logique.  Le programme soit ne donne aucun résultat, soit des résultats inattendus soit des résultats partiels. Dans ce cas, il faut revoir en priorité si l’algorithme a été bien traduit, ou encore est-ce qu’il y a eu une bonne analyse.
  • 17.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi PROPRIETES D’UN ALGORITHME 17 17 On peut énoncer les cinq propriétés suivantes que doit satisfaire un algorithme : 1. Généralité : un algorithme doit toujours être conçu de manière à envisager toutes les éventualités d’un traitement. 2. Finitude : Un algorithme doit s’arrêter au bout d’un temps fini. 3. Définitude : toutes les opérations d’un algorithme doivent être définies sans ambiguïté
  • 18.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi PROPRIETES D’UN ALGORITHME 18 18 4. Répétitivité : généralement, un algorithme contient plusieurs itérations, c’est-à-dire des actions qui se répètent plusieurs fois. 5. Efficacité : Idéalement, un algorithme doit être conçu de telle sorte qu’il se déroule en un temps minimal et qu’il consomme un minimum de ressources. Remarque : Attention, certains problèmes n’admettent pas de solution algorithmique exacte et utilisable. On utilise dans ce cas des algorithmes heuristiques qui fournissent des solutions approchées.
  • 19.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Convention D’ECRITURE : L’ORGANIGRAMME 19 19  Historiquement, plusieurs types de notation ont représenté les algorithmes;  Notamment une représentation graphique (carrés, losanges, parallélogrammes…) qu’on appelait des organigrammes
  • 20.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Convention D’ECRITURE : le pseudo-code ou LDA 20 20AZERY7I90 AZERY7I90  Une série de conventions appelées « pseudo- code » avec une syntaxe qui ressemble à un langage de programmation;  Ce pseudo-code est aussi appelé LDA (Langage de Description d’Algorithme);  Son avantage est de pouvoir être facilement transcrit dans un langage de programmation.
  • 21.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Convention D’ECRITURE : le pseudo-code ou LDA 21 21 Remarque importante Exemples Ce pseudo-code peut varier d’un ouvrage à un autre puisqu’il est purement conventionnel (Aucune machine n’est sensé le reconnaitre)  Exemple pour déclarer les variables : Var / variables et Const /constantes  Affectation : signe égal = /   Point virgule ; ou pas à la fin de chaque instruction  FINSI / fsi / Fin si  Commentaires : {commentaire} / (*commentaire*) / %commentaire%
  • 22.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Convention D’ECRITURE : le pseudo-code ou LDA 22 22 Algorithme Produit_2_nombres variables a : entier b : entier DEBUT Ecrire("saisir un entier a : ") Lire(a) Ecrire("saisir un entier b : ") Lire(b) SI ((a=0) OU (b=0)) ALORS Ecrire ("Le produit est nul") 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 SI FIN
  • 23.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Algorithme Produit_2_nombres variables a : entier b : entier DEBUT Ecrire("saisir un entier a : ") Lire(a) Ecrire("saisir un entier b : ") Lire(b) SI ((a=0) OU (b=0)) ALORS Ecrire ("Le produit est nul") 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") FIN SI FIN Convention D’ECRITURE : le pseudo-code ou LDA 23 23 L’entête de l’algorithme Déclaration des variables et constantes Corps de l’algorithme
  • 24.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi ALGORITHMES & PROGRAMMATION I 24 24 CHAPITRE II CHAPITRE II Les types de variables
  • 25.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi C’est quoi une variable ? 25 25  Au cours de l’exécution d’un programme informatique on aura besoin de stocker des informations :  Saisies par l’utilisateur au clavier  Résultat d’un programme (intermédiaire ou définitif)  Ces informations sont stockées dans des variables  On peut à tout moment durant l’exécution de l’algorithme changer la valeur de la variable en écrasant l’ancienne à condition que la nouvelle valeur soit du même type ou compatible avec.
  • 26.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Les types de DONNEES 26 26  Les données sont contenues dans des cases mémoires de l’ordinateur;  La longueur de la case mémoire dépend du type de données qu’elle contient Type de variable Type de variable Exemple de valeurs à contenir Exemple de valeurs à contenir Mot Mot clé clé Numérique Entier -50; 0; 600; 1000 Entier Réel 20; -4; 36,123; 3,14 Réel Alphanumérique Caractère ‘a‘; ‘D‘; ‘+‘; ‘1‘ Car Chaîne de caractères ˝Algorithme˝; ˝variable˝; Chaîne Booléen VRAI; FAUX Boolée n
  • 27.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Les types NUMERIQUES 27 27 Type numérique Type numérique Plage de valeurs Plage de valeurs Taille Taille mémoire mémoire Byte(octet) 0 à 255 1 octet Entier simple -32 768 à 32 767 2 octets Entier long -2 147 483 648 à 2 147 483 647 4 octets Réel simple -3,40*1038 à 3,40*1038 4 octets Réel double 1,7*10-308 à 1,7*10308 8 octets Réel double long 3,4*10-4932 à 3,4*104932 10 octets
  • 28.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi CHOIX DES IDENTIFICATEURS 28 28  Le choix des noms de variables est soumis à quelques règles :  Un nom de variable doit commencer par une lettre alphabétique exemple valide : A1 exemple invalide : 1A  Un nom de variable doit être constitué uniquement de lettres, de chiffres et du soulignement ( _ ) (Eviter les caractères de ponctuation et les espaces) valides : Info2022, Info_2022, infoAlgoProgramme invalides : Info 2022, Info-
  • 29.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi DECLARATION DES VARIABLES 29 29  La déclaration des variables se fait au début de l’algorithme  Le but est de réserver une case mémoire (allouer de l’espace mémoire) en précisant ce que l’on veut y mettre  c’est ce qu’on appelle type de la variable Syntaxe de déclaration Syntaxe de déclaration Exemples Exemples Variable nomDeLaVariable : Type variable pi : Réel variable prenom : Chaîne variable age : Entier variable i,j,k : Entier variable c : car variable trouve : Booléen
  • 30.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Les constantes 30 30  Servent à donner un nom à une valeur  La case mémoire portant ce nom ne peut recevoir aucune autre donnée durant l’exécution de l’algorithme Syntaxe de déclaration Syntaxe de déclaration Exemples Exemples Constante nomDeLaConstante = valeur constante pi = 3,14 constante taux = 0,15 constante trouve = VRAI
  • 31.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXPRESSION & OPERATEURS 31 31  Une expression peut être une valeur, une variable ou une opération constituée de variables reliées par des opérateurs exemples : exemples : 1, b, 1, b, a*2, a+3*b-c, … 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) +, -, *, /, div, % (modulo), ^ (puissance) • a = b * q + r avec r < b, q = a div b, r = a a = b * q + r avec r < b, q = a div b, r = a mod b mod b
  • 32.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXPRESSION & OPERATEURS 32 32  des opérateurs logiques : NON, OU, OU exclusif (XOR), ET NON, OU, OU exclusif (XOR), ET  des opérateurs relationnels : =, <, >, <=, >=, <> =, <, >, <=, >=, <>  des opérateurs sur les chaînes : & & (concaténation)  Une expression est évaluée de gauche à droite mais en tenant compte de la priorités
  • 33.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi PRIORITE DES OPERATEURS 33 33  Pour les opérateurs arithmétiques donnés ci-dessus, l'ordre de priorité est le suivant (du plus prioritaire au moins prioritaire) : 1) 1) ^ ^ (élévation à la puissance) 2) 2) * , / , div * , / , div (multiplication, division, division entière) 3) 3) % % (modulo) 4) 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é  exemple : (2 + 3) * 7 vaut 35
  • 34.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi ALGORITHMES & PROGRAMMATION I 34 34 CHAPITRE III CHAPITRE III ACTIONS DE BASE
  • 35.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi L’instruction d’affectation 35 35  Permet d’attribuer des valeurs aux variables en utilisant le symbole suivant  Syntaxe Syntaxe Exemples de déclaration Exemples de déclaration Exemples d’affectation Exemples d’affectation nomDeLaVariable  valeur variable pi : Réel pi  3,14 variable prenom : Chaîne prenom  ˝Sylvie˝ variable age : Entier age  25 variable i,j,k : Entier i0, j5, k-1, ij variable c : car c‘A‘ variable trouve : Booléen Trouve  VRAI
  • 36.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Les types d’affectation : Type 1 36 36 Nom_variable  valeur_de_meme_type Pi3,14 prenom˝Algorithme˝ age24 i0 Facture_payeeVRAI Choix ‘Y‘; Exemples :
  • 37.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Les types d’affectation : Type 2 37 37 Nom_variable  variable_de_meme_type prenom1˝Snoopy˝ prenom2˝Daniel˝ Prenom2prenom1 Exemples :
  • 38.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Les types d’affectation : Type 3 38 38 Nom_variable  expression_retournant_meme_type ki+j consommationnouvel_index – ancien_index moyennesomme_notes / nombre_eleves TVAHT*0,2 Exemples :
  • 39.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICE SIMPLE SUR L’affectation 39 39 Variables A, B, C: entier DEBUT A  -3 B  7 A  B B  A-5 C  A + B C  B – A FIN  Donnez les valeurs des variables A, B et C après exécution des instructions suivantes ?
  • 40.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICE SIMPLE SUR L’affectation 40 40 Variables A, B : entier DEBUT A  4 B  9 A  B B  A FIN  Donnez les valeurs des variables A et B après exécution des instructions suivantes ?  Les deux dernières instructions permettent-elles d’échanger les valeurs de A et B ?
  • 41.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICE SIMPLE SUR L’affectation 41 41  Ecrire un algorithme permettant d’échanger les valeurs de deux variables A et B
  • 42.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Instructions de lecture et d’ecriture 42 42  Ecriture  afficher à l’écran Ecrire(˝Entrez la valeur de la tva :˝)  Lecture  Saisir au clavier et affecter ce qui est saisi aux variables déjà définies Lire(tva)
  • 43.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi ecriture 43 43  Ecriture  Afficher à l’écran Cas Cas Syntaxe Syntaxe Exemples Exemples 1 Ecrire(˝message˝) Ecrire(˝Entrez la valeur de a :˝) 2 Ecrire(nom_variable) Ecrire(moyenne) 3 Ecrire(˝message˝,nom_variable) Ecrire(˝votre note est :˝,moyenne)
  • 44.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Lecture 44 44  lecture  Saisir au clavier et affecter ce qui est saisi aux variables déjà définies Syntaxe Syntaxe Exemples Exemples Lire(nom_variable) Lire(a) Lire(TVA) Lire(note)
  • 45.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Exercice 45 45  Écrire un algorithme qui demande à l’utilisateur de saisir deux nombres entiers et de calculer leur somme et l’afficher à l’écran.
  • 46.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Solution de l’exercice 46 46 Algorithme Somme Variables a, b, S : Entier DEBUT Ecrire(˝Saisir a :˝) Lire(a) Ecrire(˝Saisir b :˝) Lire(b) Sa+b Ecrire(˝La somme est :˝,S) FIN
  • 47.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi ALGORITHMES & PROGRAMMATION I 47 47 CHAPITRE IV CHAPITRE IV Les INSTRUCTIONS CONDITIONELLES
  • 48.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi LES INSTRUCTIONS CONDITIONNELLES 48 48  Les instructions conditionnelles servent à n'exécuter une instruction ou une séquence d'instructions que si une condition est vérifiée
  • 49.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi TESTS : LES INSTRUCTIONS CONDITIONNELLES 49 49  On utilisera la forme suivante : SI (condition) ALORS instruction ou suite d'instructions1 SINON instruction ou suite d'instructions2 FINSI  La condition ne peut ê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
  • 50.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi TESTS : LES INSTRUCTIONS CONDITIONNELLES 50 50 SI (condition) ALORS instruction ou suite d'instructions1 SINON instruction ou suite d'instructions2 FINSI
  • 51.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXEMPLE 51 51 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
  • 52.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICE 52 52  Ecrire un algorithme qui permet de lire et d'afficher la valeur absolue d'un réel.
  • 53.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi SOLUTION DE L’EXERCICE 53 53 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
  • 54.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi TESTS : LES INSTRUCTIONS CONDITIONNELLES 54 54  La partie Sinon n'est pas obligatoire, quand elle n'existe pas et que la condition est fausse, aucun traitement n'est réalisé  On utilisera dans ce cas la forme simplifiée suivante : SI (condition) ALORS instruction(s) FINSI
  • 55.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXEMPLE 55 55 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
  • 56.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICE 56 56  Ecrire un algorithme qui demande un nombre entier à l'utilisateur, puis teste et affiche s'il est divisible par 3.
  • 57.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi SOLUTION DE L’EXERCICE 57 57 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
  • 58.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Conditions COMPOSEES 58 58  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) OU exclusif (XOR) et NON NON  Exemples :  x compris entre 2 et 6 : (x > 2) ET ET (x < 6)  n divisible par 3 ou par 2 : (n%3=0) OU OU (n%2=0)  L'évaluation d'une condition composée se fait selon des règles présentées généralement dans ce qu'on appelle tables de vérité.
  • 59.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi TABLES DE VERITE 59 59
  • 60.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXEMPLE (1) 60 60 Expression Expression Résultat Résultat (4<7) ET ET (9>0) Vrai (1<0) OU OU (1<>1) Faux NON NON(13.4<15) Faux Priorité : NON est prioritaire sur ET qui est prioritaire sur OU
  • 61.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi TESTS IMBRIQUEES 61 61 SI (condition1) ALORS SI (condition2) ALORS instructionsA SINON instructionsB FINSI SINON SI (condition3) ALORS instructionsC FINSI FINSI  Les tests peuvent avoir un degré quelconque d'imbrications
  • 62.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi TESTS IMBRIQUEES : EXEMPLE (VESRION 1) 62 62 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
  • 63.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi TESTS IMBRIQUEES : EXEMPLE (VESRION 2) 63 63 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
  • 64.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi TESTS IMBRIQUEES : EXEMPLE (VESRION 2) 64 64  Remarque : dans la version 2 on fait trois tests systématiquement alors que dans la version 1, si le nombre est négatif on ne fait qu'un seul test  Conseil : utiliser les tests imbriqués pour limiter le nombre de tests et placer d'abord les conditions les plus probables
  • 65.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICE 65 65  Ecrivez un algorithme qui demande à l’utilisateur d’entrer la température de l’eau, et affiche ensuite l’état de l’eau selon la température (on rappelle que l’état de l’eau est glace pour une température inférieure ou égale à 0, est vapeur pour une température supérieure ou égale à 100 et liquide pour une température comprise strictement entre 0 et 100).
  • 66.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi SOLUTION DE L’EXERCICE 66 66 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
  • 67.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICE 67 67  Ecrire un algorithme qui affiche la mention dans les bulletins de note des étudiants selon la note obtenue
  • 68.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi SOLUTION DE L’EXERCICE 68 68 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
  • 69.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICE 69 69  Ecrire un algorithme qui lit trois entiers A, B et C, et affiche le plus grand.
  • 70.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi SOLUTION DE L’EXERCICE 70 70 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
  • 71.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Exercice 71 71  Ecrire un algorithme qui calcule le carré d’un nombre entier positif
  • 72.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Solution de l’exercice 72 72 Algorithme carré Variables Nombre, Carre : Entier DEBUT Ecrire(˝Saisir le nombre :˝) Lire(Nombre) SI (Nombre > 0) ALORS Carre Nombre*Nombre Ecrire(˝Le carré est˝, Carre) FINSI FIN
  • 73.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Exercice 73 73  Ecrire un algorithme qui calcule la taxe sur le chiffre d’affaire sachant qu’elle est de 10% s’il est inférieur strictement à 100000 XAF et 20% s’il est supérieur à ce seuil
  • 74.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Solution de l’exercice 74 74 Algorithme calcul_taxe Variables CA, 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) FIN
  • 75.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi TESTS IMBRIQUEES : AUTRE FORME 75 75 SELON Expression Valeur1 : action1 Valeur2 : action2 ......... ValeurN : actionN SINON : action FINSELON La structure alternative peut prendre une autre forme qui permet d’imbriquer plusieurs conditions.  Si expression est égale à valeuri, on exécute actioni et on passe à la suite de l’algorithme.  Sinon on exécute action et on passe à la suite de l’algorithme.  On l’appelle « structure choix »
  • 76.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Exercice 76 76  Ecrire un algorithme permettant de calculer le prix à payer pour l’abonnement à un club qui décide de faire des remises sur les prix d’abonnement :  Ancien abonné : -15%  Nouvel abonné : -10%  Etudiant : -20%  Enfant de moins de 12 ans : -30%  Le calcul du prix d’abonnement se fait en fonction du tarif normal d’abonnement et de la qualité de l’abonné, (une seule qualité est accepté par abonné).
  • 77.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Solution de l’exercice 77 77 Algorithme calcul_abonnement Variables QH : Entier (*Qualité abonné*) TN : Réel (*Tarif normal*) TR : Réel (*Taxe de remise*) R : Réel (*Remise*) PAP : Réel (*Prix à payer*) DEBUT Ecrire(˝***** MENU *****˝) Lire(TN) Ecrire(˝Saisir le tarif normal:˝) Ecrire(˝1: Ancien abonné˝) Ecrire(˝2: nouvel abonné˝) Ecrire(˝3: Etudiant˝) Ecrire(˝4: Enfant de moins de 12 ans˝) Ecrire(˝Choisir la qualité de l’abonné˝) Lire(QH) SELON (QH) FAIRE 1 : TR  -0,15 2 : TR  -0,1 3 : TR  -0,2 4 : TR  -0,3 SINON : Ecrire(˝valeur incorrecte˝) FINSELON R  TN * TR PAP TN + R Ecrire(˝Le prix à payer est :˝,PAP) FIN
  • 78.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi ALGORITHMES & PROGRAMMATION I 78 78 CHAPITRE V CHAPITRE V Les instructions ITERATIVES (les boucles)
  • 79.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Les instructions ITERATIVES (les boucles) 79 79  Les boucles servent à répéter l'exécution d'un groupe d'instructions un certain nombre de fois.  On distingue trois sortes de boucles en langages de programmation :  Les boucles « TANT QUE … FAIRE » : on y répète des instructions tant qu'une certaine condition est réalisée.  Les boucles « REPETER … JUSQU’À » : on y répète des instructions jusqu'à ce qu’une certaine condition soit réalisée.  Les boucles « POUR … FAIRE » ou avec compteur : on y répète des instructions en faisant évoluer un compteur (variable particulière) entre une valeur
  • 80.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi LA boucle « TANT QUE … FAIRE… » 80 80 TANTQUE (condition) FAIRE Instruction(s) FINTANTQUE
  • 81.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi LA boucle « TANT QUE … FAIRE… » 81 81 La condition (dite condition de contrôle de la boucle) est évaluée avant chaque itération. Si la condition est vraie, on exécute instructions (corps de la boucle), puis, on retourne tester la condition. Si elle est encore vraie, on répète l'exécution, … Si la condition est fausse, on sort de la boucle et on exécute l'instruction qui est après FINTANQUE.
  • 82.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi LA boucle « TANT QUE … FAIRE… » : REMARQUES 82 82 Le nombre d'itérations dans une boucle TANTQUE…FAIRE 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
  • 83.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi LA boucle « TANT QUE … FAIRE…» : EXEMPLE 1 83 83 Variable i : entier DEBUT i  0 TANTQUE (i < 3) Ecrire("Bonjour tout le monde ") i  i + 1 FINTANQUE FIN
  • 84.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi LA boucle « TANT QUE … FAIRE… » : EXEMPLE 2 84 84 Variable A : entier DEBUT A  10 TANTQUE (A > 0) A  A - 2 FINTANTQUE Ecrire(" La valeur de A est : ", A) FIN
  • 85.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi LA boucle « REPETER … JUSQU’À...» 85 85 REPETER Instruction(s) JUSQU’À (condition)  La condition est évaluée après chaque itération  Les instructions entre REPETER et JUSQU’À sont exécutées au moins une fois et leur exécution est répétée jusqu’à ce que condition soit vrai (tant qu'elle est fausse)
  • 86.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi LA boucle « REPETER … JUSQU’À... » : EXEMPLE 1 86 86 Variables c : entier DEBUT REPETER Lire(c) c  c*c Ecrire(c) JUSQU’À (c = 0) Ecrire("Fin") FIN
  • 87.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi LA boucle « REPETER … JUSQU’À... » : EXEMPLE 2 87 87 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
  • 88.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi La boucle « POUR… FAIRE» 88 88 POUR compteur de initiale à finale pas valeur_de_pas FAIRE Instruction(s) FINPOUR Remarque : Si la valeur du « pas » n’est pas précisée dans l’instruction « POUR », elle est par défaut égale à un (1).
  • 89.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi La boucle « POUR …FAIRE» 89 89  Remarque : le nombre d'itérations dans une boucle POUR est connu avant le début de la boucle.  La variable compteur est en général de type entier. Elle doit être déclarée.  Pas est un entier qui peut être positif ou négatif. Pas peut ne pas être mentionné, car par défaut sa valeur est égal à 1. Dans ce cas, le nombre d'itérations est égal à finale - initiale + 1 .  Initiale et finale peuvent être des valeurs, des variables définies avant le début de la boucle ou des expressions de même type que compteur .
  • 90.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi DEROULEMENT DE La boucle « POUR …FAIRE» 90 90 1) La valeur initiale est affectée à la variable compteur. 2) On compare la valeur du compteur et la valeur de finale : a) Si la valeur du compteur est > > à la valeur finale dans le cas d'un pas positif (ou si compteur est < < à finale pour un pas négatif), on sort de la boucle et on continue avec l'instruction qui suit FINPOUR. b)Si compteur est <= <= à finale dans le cas d'un pas positif (ou si compteur est >= >= à finale pour un pas négatif), instructions seront exécutées. i. Ensuite, la valeur de compteur est incrémentée de la valeur du pas si pas est positif (ou décrémenté si pas est négatif) . ii. On recommence l'étape 2 : La comparaison entre compteur et finale est de nouveau effectuée, et ainsi de suite …
  • 91.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi La boucle « POUR …FAIRE» : EXEMPLE 1 91 91  Ecrire un algorithme qui fait le calcul de x à la puissance n où x est un réel non nul et n un entier positif ou nul
  • 92.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi La boucle « POUR …FAIRE» : EXEMPLE 1 92 92 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
  • 93.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi La boucle « POUR …FAIRE» : EXEMPLE 1 (VERSION 2) 93 93 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 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)
  • 94.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi La boucle « POUR …» : REMARQUE 94 94  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 Exemple : POUR i de 1 à 5 FAIRE i  i-1 Ecrire(" i = ", i) FINPOUR
  • 95.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi LIEN ENTRE « POUR …» & « TANT QUE … » 95 95 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 compteur  initiale TANTQUE (compteur <= finale) instructions compteur  compteur + pas FINTANQUE Peut être remplacé par : (cas d'un pas positif)
  • 96.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi LIEN ENTRE « POUR …» & « TANT QUE …» : EXERCICE 96 96  Calcul de x à la puissance n où x est un réel non nul et n un entier positif ou nul (version avec TANTQUE…FAIRE)
  • 97.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi LIEN ENTRE « POUR …» & « TANT QUE …» : SOLUTION 97 97 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
  • 98.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi BOUCLE IMBRIQUEES 98 98  Les instructions d'une boucle peuvent être des instructions itératives. Dans ce cas, on aboutit à des boucles imbriquées boucles imbriquées  Exemple 1 : Ecrire un carré de 8 fois 8 caractères ‘x’ POUR i de 1 à 8 FAIRE POUR j de 1 à 8 FAIRE Ecrire("x") FINPOUR FINPOUR
  • 99.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi BOUCLE IMBRIQUEES 99 99 Exemple 2 POUR i de 1 à 5 FAIRE POUR j de 1 à i FAIRE Ecrire("O") FINPOUR Ecrire("X") FINPOUR Exécutio n
  • 100.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi CHOIX D’UN TYPE DE BOUCLE (1) 100 100  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 la
  • 101.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi CHOIX D’UN TYPE DE BOUCLE (2) 101 101 SI nombre d'itérations connu nombre d'itérations connu ALORS Boucle Boucle POUR POUR SINON SI itération exécutée au moins une fois itération exécutée au moins une fois ALORS Boucle Boucle REPETER JUSQU’À REPETER JUSQU’À SINON Boucle Boucle TANTQUE TANTQUE FINSI FINSI
  • 102.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi ALGORITHMES & PROGRAMMATION I 102 102 CHAPITRE VI CHAPITRE VI Les tableaux
  • 103.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi TABLEAUX : DEFINITION 103 103  Un tableau est un ensemble d'éléments de même type désignés par un identificateur unique.  Une variable entière nommée indice permet d'indiquer la position d’un élément donné au sein du tableau et de déterminer sa valeur.  La déclaration d'un tableau s'effectue en précisant le type de ses éléments et sa dimension (le nombre de ses éléments).
  • 104.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi LES TABLEAUX : DECLARATION 104 104 variable tableau identificateur[dimension] [dimension] : type type Exemple : variable tableau notes[30] [30] : réel 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, …
  • 105.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi TABLEAUX : REMARQUES 105 105  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.  Selon les langages, le premier indice du tableau est soit 0, soit 1. Le plus souvent (au niveau algorithmique) c'est 1 (c'est ce qu'on va adopter en pseudo-code).  Un grand avantage des tableaux est qu'on peut traiter les données qui y sont stockées de façon simple en utilisant des boucles.
  • 106.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi TABLEAUX : REMARQUES 106 106  Un tableau peut être représenté graphiquement par (exemple Note[15]) : Note[2]  15 met la valeur 15 dans la 2ème case du tableau. En considérant le cas où a est une variable de type entier, a  Note[2] met la valeur de la 2ème case du tableau dans a, c’est- à- dire 15. Lire(Note [1]) met l’entier saisi par l’utilisateur dans la première case du tableau. Ecrire(Note [1]) affiche la valeur de la première case du tableau.
  • 107.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi TABLEAUX : SAISIE & AFFICHAGE 107 107  Algorithme qui permet de saisir et d'afficher les éléments d'un tableau de 30 notes:
  • 108.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi TABLEAUX : SAISIE & AFFICHAGE (SOLUTION) 108 108 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
  • 109.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi TABLEAUX : EXEMPLE (1) 109 109  Pour le calcul du nombre d'étudiants ayant une note supérieure strictement à 10 avec les tableaux, on peut écrire :
  • 110.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi TABLEAUX : EXEMPLE (1) 110 110 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
  • 111.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi TABLEAUX : EXEMPLE (2) 111 111  Soit T un tableau de vingt éléments de types entiers. Un algorithme qui permet de calculer la somme des éléments de ce tableau.
  • 112.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi TABLEAUX : EXEMPLE (2) 112 112 Variables i , somme : entier Tableau T[20] : entier DEBUT somme  0 POUR i de 1 à 20 FAIRE somme  somme + T[i] FINPOUR Ecrire(" La somme de tous les éléments du tableau est : " , somme) FIN
  • 113.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi TABLEAUX : EXERCICE 113 113  Soit T un tableau de N entiers. Ecrire l’algorithme qui détermine le plus grand élément de ce tableau.
  • 114.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi TABLEAUX : EXERCICE (SOLUTION) 114 114 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
  • 115.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi TABLEAUX A DEUX DIMENSIONS 115 115  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 tableau identificateur[dimension1][dimension2] [dimension1][dimension2] : type type  Exemple : une matrice A de 3 lignes et 4 colonnes dont les éléments sont réels variable tableau tableau A[3][4] [3][4] : réel réel  A[i][j] A[i][j] permet d'accéder à l’élément de la matrice qui se trouve à
  • 116.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi LECTURE D’UNE MATRICE 116 116  Algorithme qui permet de saisir les éléments d'une matrice de vingt lignes et cinquante colonnes :
  • 117.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi LECTURE D’UNE MATRICE 117 117 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
  • 118.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi AFFICHAGE D’UNE MATRICE 118 118  Algorithme qui permet d'afficher les éléments d'une matrice de vingt lignes et cinquante colonnes :
  • 119.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi AFFICHAGE D’UNE MATRICE 119 119 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
  • 120.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi SOMME DE DEUX MATRICES 120 120  Algorithme qui calcule la somme de deux matrices de vingt lignes et cinquante colonnes :
  • 121.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi SOMME DE DEUX MATRICES 121 121 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
  • 122.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Tableaux à N dimensions 122 122  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 Tableau nom_tableau[taille1][taille2] … [tailleN] [taille1][taille2] … [tailleN] : type type Exemple : Tableau Tableau T[10][20][50] [10][20][50] : réel 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 qu’il y a de dimensions.
  • 123.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi ALGORITHMES & PROGRAMMATION I 123 123 CHAPITRE VII CHAPITRE VII Les STRUCTURES
  • 124.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi DEFINITION 124 124  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.  Chaque valeur est rangée dans un champ et repérée par un identificateur de champ
  • 125.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi DECLARATION 125 125  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 :
  • 126.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXEMPLE 126 126 Type 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)
  • 127.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi ACCES AU CHAMPS 127 127 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 procédure ou de fonction : Echanger(elt1.Z, elt2.Z)
  • 128.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi DEFINITION DE TYPES 128 128 Type <Nomtype> = = <définition du type>  Il peut être pratique de définir des types puis d'utiliser ces noms dans des déclarations de variables. Syntaxe pour définir un type :  Les déclarations qui utilisent un type défini se font comme avec les types prédéfinis.
  • 129.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi DEFINITIONS DE TYPE & DECLARATION DE VARIABLES 129 129 Définition de type : Type t_tab = tableau[15] d'entiers Déclaration de variable : Variable tab : t_tab Définition de type : Type t_matrice = tableau[3][5] de caractères Déclaration de variable : Variable mat : t_matrice
  • 130.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi DEFINITIONS DE TYPE & DECLARATION DE VARIABLES 130 130 Définition de type : 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 de variable : Variable elt : t_elt Remarque : les noms de types suivent les règles des identificateurs. C'est par simple commodité, pour les distinguer des identificateurs des variables, que ceux des exemples commencent par t_.
  • 131.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi TYPES COMPLEXES 131 131  On peut construire des types complexes en composant tableaux et structures :  un élément de tableau peut être une structure,  un champ de structure peut être un tableau  Il n'y a pas de limite à la composition, les deux slides suivants donnent des exemples simples.
  • 132.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi TABLEAUX DE STRUCTURES 132 132 Exemple : table des éléments chimiques Définitions des types : 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 Variable t_table : tableau[120] de t_elt
  • 133.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi TABLEAUX DE STRUCTURES 133 133  Déclaration : Variable 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'
  • 134.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi STRUCTURES AVEC TABLEAUX 134 134 Exemple : liste de températures avec nombre, minimum et maximum. Définitions des types : Type t_temp = tableau[100] de réel Type t_liste = STRUCTURE temp : t_mesure /* tableau des températures */ nb : entier /* nombre de températures */ tmin : réel /* température minimale */ tmax : réel /* température maximale */ FINSTRUCTURE
  • 135.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi STRUCTURES AVEC TABLEAUX 135 135 Déclaration : Variable mesures : t_liste Accès à un élément : mesures.nb vaut 5 mesures.temp[3] vaut 6,3
  • 136.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi CONCLUSION STRUCTURES DE DONNEES 136 136  Les tableaux et les structures permettent de composer des structures complexes dans lesquelles peuvent être organisés des rangements des données qu'on appelle structures de données.  D'autres types de données, en particulier des types de variables dynamiques, peuvent contribuer à construire des structures de données adaptées au problème à résoudre.  Les structures de données et les méthodes algorithmiques qui les exploitent sont le plus souvent dépendantes les unes des autres
  • 137.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi ALGORITHMES & PROGRAMMATION I 137 137 CHAPITRE VIII CHAPITRE VIII Les POINTEURS
  • 138.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi LA MÉMOIRE CENTRALE 138 138  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.
  • 139.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Relation entre la variable & la MEMOIRE 139 139  La variable occupe la mémoire, elle « habite » dans la mémoire.  Chaque variable occupe les cases mémoires qui lui sont dédiées.  Une variable de type caractère occupe 1 case mémoire, soit 1 octet. Un entier va occuper 4 cases mémoires soit 4 octets, un réel occupe soit 4 soit 8 cases mémoire selon la précision souhaitée. Variable x : entier DEBUT x10 10 x 100
  • 140.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Relation entre la variable & la MEMOIRE 140 140  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.
  • 141.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Relation entre la variable & la MEMOIRE 141 141  Variable T : tableau [5] d’entier va occuper 5x4 = 20 cases ou octets dans la mémoire.  Si on suppose que le tableau T commence à partir de l’octet n°200, on peut déduire que l’adresse du tableau T est le numéro du premier octet de du tableau T, c’est-à-dire 200.  Chaque variable possède 4 caractéristiques : 1) Son nom  x 2) Son type  entier 3) Sa valeur 10 4) Son adresse  100
  • 142.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi VARIABLES STATIQUES / VARIABLES DYNAMIQUES 142 142  Variable statique : déclarée dans la partie « Variable », le système lui réserve l’espace mémoire au moment de la compilation et reste dans la mémoire jusqu’à la fin de l’algorithme dans lequel elle est déclarée.  Variable dynamique : créée ou supprimée à l’exécution à travers les pointeurs et les primitives d’allocation et de libération de l’espace mémoire.
  • 143.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi NOTION DE POINTEUR 143 143  Un pointeur est une variable qui contient l’adresse d’une autre variable. Déclaration : <NomPointeur> : pointeur vers <TypeVariable> (1) <NomPointeur> : ˆ <TypeVariable> (2) Variable x : entier P : pointeur sur entier (P va contenir l’adresse d’un entier) ou P : ^Entier
  • 144.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi NOTION DE POINTEUR 144 144 Exemple : DEBUT x  10 P  Adr(x) On dit que P pointe vers x, ou bien que x est pointée par P. P contient l’adresse de x, alors il peut aller jusqu'à x, il peut travailler sur x. x = P^
  • 145.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi NOTION DE POINTEUR 145 145  Lorsque on dit que P pointe vers x, alors x et Pˆ sont équivalents. Pˆ c’est le contenu de la variable pointée par P. P^  5
  • 146.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICE 1 146 146  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) pt^5 n  7 xpt^ FIN
  • 147.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi QU’Est-ce QU’ON PEUT FAIRE AVEC UN POINTEUR ? 147 147  On a modifié la valeur de x en utilisant le pointeur P (adressage indirect).  Jusqu’à maintenant la seule manière de modifier x était par affectation ou lecture d’une autre valeur dans x (adressage direct).  Ici on a vu qu’on peut manipuler une variable x en utilisant un pointeur à condition que le pointeur contienne l’adresse de x.
  • 148.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi CREER UNE VARIABLE DYNAMIQUE 148 148 Type pEntier = pointeur sur entier (définition du type pEntier) Variable P : pEntier //P est une variable statique 1. Création de la variable dynamique La primitive Allouer(P) va faire deux choses : 1. Elle va créer en mémoire une variable dynamique de type entier 2. L’adresse de l’espace mémoire sera sauvegarder dans le pointeur P. P  
  • 149.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi CREER UNE VARIABLE DYNAMIQUE 149 149 2) Manipulation de la variable dynamique P^  5 3) Suppression de la variable dynamique Libérer(P)
  • 150.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi CREER UNE VARIABLE DYNAMIQUE 150 150  La primitive Libérer(P) va supprimer la variable dynamique Pˆ et P va pointer vers une valeur indéterminée.  Après Libérer(P), l’instruction suivante Pˆ10 occasionne une erreur à la compilation car la variable dynamique Pˆ n’existe plus.  Pour initialiser une variables de type pointeur qui ne pointe rien on écrit : PNIL  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.
  • 151.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXEMPLE 1 151 151  Dérouler l’algorithme suivant Algorithme Exemple Variable P,Q : pointeur vers entier DEBUT Allouer(P) P^10 Q  P Q^ = P^+2 Q  NIL Libérer(P) FIN
  • 152.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXEMPLE 2 152 152  L'algorithme suivant n'a comme seul but que de faire comprendre la manipulation des pointeurs.  Avec des schémas, montrez l'état de la mémoire en plus de ce qui s'affiche à l'écran.
  • 153.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXEMPLE (CORRIGE) 153 153 Variables ptc : pointeur sur chaîne de caractères ptx1, ptx2 : pointeur vers entier DEBUT Allouer(ptc) ptc^  ‘chat’ Ecrire(ptc^) Allouer(ptx1) Lire(ptx1^) ptX2  ptx1 Ecrire(ptx2^) Ptx2^  ptx1^ + ptx2^ Ecrire(ptx1^, ptx2^) ptx1  NIL Ecrire(ptx2^) Libérer(ptx2) ptx2  NIL ptc  NIL FIN Où est l'erreur ? : on a coupé l'accès à la zone de mémoire sans la libérer. Elle est irrécupérable
  • 154.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi VARIABLE DYNAMIQUE DE TYPE TABLEAU 154 154 Type Tab = tableau[100] de réel pTab = pointeur vers Tab variable P : pTab i : entier DEBUT //1. Création de la variable dynamique Allouer(P)
  • 155.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi VARIABLE DYNAMIQUE DE TYPE TABLEAU 155 155 //2. Manipulation de la variable dynamique POUR i de 1 à 100 FAIRE Pˆ[i]  i FINPOUR //2. Suppression de la variable dynamique Libérer(P)
  • 156.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi VARIABLE DYNAMIQUE DE TYPE STRUCTURE 156 156 Type Date = STRUCTURE J, m, a : entier FINSTRUCTURE pDate = pointeur vers Date Variable P : pDate DEBUT //1. Création de la variable dynamique Allouer(P)
  • 157.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi VARIABLE DYNAMIQUE DE TYPE STRUCTURE 157 157 //2. Manipulation de la variable dynamique Pˆ.j  14 Pˆ.m  09 Pˆ.a  2022 //3. Suppression de la variable dynamique Libérer(P)
  • 158.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICE 2 158 158  Ecrire un algorithme qui calcul la somme de deux valeurs entières en utilisant des pointeurs.  Puis interchange leurs valeurs.
  • 159.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICE 2 (CORRIGE) 159 159 Algorithme exemple3 ; P, Q, Sauv, Som : pointeur vers entier; DEBUT Allouer(P) Écrire(‘donnez la première valeur:’) Lire(P^) Allouer(Q) Écrire(‘donnez la deuxième valeur:’) Lire(Q^) Allouer(Som) Som^  P^ + Q^ Écrire(‘La somme=‘, Som^) Libérer(Som); Allouer(Sauv) Sauv^  P^ P^  Q^ Q^  Sauv^ Libérer(Sauv) Écrire(‘les nouvelles valeurs sont: P^, ‘et’, Q^ Libérer(P) Libérer(Q) FIN
  • 160.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi ALGORITHMES & PROGRAMMATION I 160 160 CHAPITRE IX CHAPITRE IX PROCEDURES & FONCTIONS
  • 161.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi INTRODUCTION 161 161  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 sera nécessaire.  Il existe deux sortes de sous-algorithmes : les
  • 162.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi LES PROCEDURES 162 162  Une procédure est une série d'instructions regroupées sous un nom, qui permet d'effectuer des actions par un simple appel de la procédure dans un algorithme ou dans un autre sous- algorithme.  Une procédure ne renvoie aucune valeur.
  • 163.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi DECLARATION D’UNE PROCEDURE 163 163 Syntaxe : Procédure nom_proc(liste de paramètres) Variables identificateurs : type DEBUT Instruction(s) FINPROCEDURE  Après le nom de la procédure, il faut donner la liste des paramètres (s'il y en a) avec leur type respectif.  Ces paramètres sont appelés paramètres formels.  Leur valeur n'est pas connue lors de la création de la procédure
  • 164.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXEMPLE 164 164  Ecrire une procédure qui affiche à l'écran une ligne de 15 étoiles puis passe à la ligne suivante.
  • 165.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXEMPLE (CORRIGE) 165 165 Procédure Etoile() Variables i : entier DEBUT POUR i de 1 à 15 FAIRE Ecrire("*") FINPOUR Ecrire("retour à la ligne ") FINPROCEDURE
  • 166.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi L’APPEL D’UNE PROCEDURE 166 166  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)  Les paramètres utilisées lors de l'appel d'une procédure sont appelés paramètres effectifs. Ces paramètres donneront leurs valeurs aux paramètres formels.
  • 167.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXEMPLE 167 167  En utilisant la procédure Etoiles déclarée dans l'exemple précédent, écrire un algorithme permettant de dessiner un carré d'étoiles de 15 lignes et de 15 colonnes.
  • 168.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXEMPLE (CORRIGE) 168 168 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(" retour à la ligne ") FINPROCEDURE
  • 169.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXEMPLE (CORRIGE) 169 169 //Algorithme principal (Partie principale) DEBUT POUR j de 1 à 15 FAIRE //Appel de la procédure Etoiles Etoile() FINPOUR FIN
  • 170.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi REMARQUES 170 170 1. Pour exécuter un algorithme qui contient des procédures et des fonctions, il faut commencer l'exécution à partir de la partie principale (algorithme principal) 2. Lors de la conception d'un algorithme deux aspects apparaissent :  La définition (déclaration) de la procédure ou fonction.  L'appel de la procédure ou fonction au sein de l'algorithme principal.
  • 171.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi PASSAGE DE PARAMETRES 171 171  Les échanges d'informations entre une procédure et le sous algorithme appelant se font par l'intermédiaire de paramètres.  Il existe deux principaux types de passages de paramètres qui permettent des usages différents : 1. Passage par valeur : Dans ce type de passage, le paramètre formel reçoit uniquement une copie de la valeur du paramètre effectif. La valeur du paramètre effectif ne sera jamais modifiée.
  • 172.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi PASSAGE DE PARAMETRES 172 172 Exemple : Soit l'algorithme suivant : Algorithme Passage_par_valeur Variables N : entier //Déclaration de la procédure P1 Procédure P1(A : entier) DEBUT A  A * 2 Ecrire(A) FINPROCEDURE //Algorithme principal DEBUT N  5 P1(N) Ecrire(N) FIN
  • 173.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi PASSAGE DE PARAMETRES 173 173  Cet algorithme définit une procédure P1 pour laquelle on utilise le passage de paramètres par valeur.  Lors de l'appel de la procédure, la valeur du paramètre effectif N est recopiée dans le paramètres formel A.  La procédure effectue alors le traitement et affiche la valeur de la variable A, dans ce cas 10.  Après l'appel de la procédure, l'algorithme affiche la valeur de la variable N dans ce cas 5.  La procédure ne modifie pas le paramètre qui est passé par valeur.
  • 174.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi PASSAGE DE PARAMETRES 174 174 2. Passage par référence ou par adresse :  Dans ce type de passage, la procédure utilise l'adresse du paramètre effectif.  Lorsqu'on utilise l'adresse du paramètre, on accède directement à son contenu. La valeur de la variable effectif sera donc modifiée.  Les paramètres passés par adresse sont précédés du mot clé Var.
  • 175.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi PASSAGE DE PARAMETRES 175 175 Reprenons l'exemple précédent : Algorithme Passage_par_référence Variables N : entier //Déclaration de la procédure P1 Procédure P1 (Var A : entier) DEBUT A  A * 2 Ecrire(A) FINPROCEDURE //Algorithme Principal DEBUT N  5 P1(N) Ecrire(N) FIN
  • 176.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi PASSAGE DE PARAMETRES 176 176  A l'exécution de la procédure, l'instruction Ecrire(A) permet d'afficher à l'écran 10.  Au retour dans l'algorithme principal, l'instruction Ecrire(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é.
  • 177.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi LES FONCTIONS 177 177  Les fonctions sont des sous algorithmes admettant des paramètres et retournant un seul résultat (une seule valeur) de type simple qui peut apparaître dans une expression, dans une comparaison, à la droite d’une affectation, etc.
  • 178.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi DECLARATION D’UNE FONCTIONS 178 178 Syntaxe : Fonction nom_Fonct (liste de paramètres) : type Variables identificateur : type DEBUT Instruction(s) Retourner (Expression) FINFONCTION
  • 179.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi DECLARATION D’UNE FONCTIONS 179 179  La syntaxe de la déclaration d'une fonction est assez proche de celle d'une procédure à laquelle on ajoute un type qui représente le type de la valeur retournée par la fonction et une instruction « Retourner Expression ».  Cette dernière instruction renvoie au programme appelant le résultat de l'expression placée à la suite du mot clé Retourner. Note :  Les paramètres sont facultatifs, mais s'il n'y pas de paramètres, les parenthèses doivent rester présentes.
  • 180.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXEMPLE 180 180 Définir une fonction qui renvoie le plus grand de deux nombres différents. //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
  • 181.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi L’APPEL D’UNE FONCTION 181 181  Pour exécuter une fonction, il suffit de faire appel à elle en écrivant son nom suivie des paramètres effectifs.  C'est la même syntaxe qu'une procédure.  A la différence d'une procédure, la fonction retourne une valeur.  L'appel d'une fonction pourra donc être utilisé dans une instruction (affichage, affectation, ...) qui utilise sa valeur. Syntaxe : Nom_Fonc(list de paramètres)
  • 182.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXEMPLE 182 182 Ecrire un algorithme appelant, utilisant la fonction Max de l'exemple précédent.
  • 183.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXEMPLE (SOLUTION) 183 183 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
  • 184.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXEMPLE (SOLUTION) 184 184 //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
  • 185.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi PORTEE DES VARIABLES 185 185  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 variable locale. Elle n'est accessible qu’à l’intérieur de 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 durée d'exécution de la procédure.
  • 186.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi PORTEE DES VARIABLES 186 186 Algorithme Portée Variables X, Y : entier Procédure P1() Variables A : entier DEBUT … FINPROCEDURE //Algorithme principal DEBUT … FIN X et Y sont des variables globales Visibles dans tout l’algorithme. A est une variable locale visible uniquement à l’intérieur de la procédure Remarque : Les variables globales sont à éviter pour la maintenance des programmes.
  • 187.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi LA RECURSIVITE 187 187 Le corps d’une fonction peut contenir un appel à cette même fonction.  La fonction « se rappelle elle-même » Ceci est très similaire aux suites définies par récurrence, qui existent en mathématiques. Exemple d’une suite définie par récurrence :  C’est plus pratique d’avoir un = …
  • 188.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi LA RECURSIVITE 188 188 FONCTION u(n : entier) : entier DEBUT SI (n=0) ALORS Renvoyer 5 SINON SI (n≥1) ALORS Renvoyer (2*u(n-1)) FINSI FINSI FINFONCTION On va écrire une fonction récursive u qui prend en argument un entier n et qui renvoie la valeur de un .
  • 189.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICE 189 189 Ecrire une fonction récursive permettant de calculer la factorielle d'un entier positif.
  • 190.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICE (CORRIGE) 190 190 //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 n != n * (n-1) ! : La factorielle de n est n fois la factorielle de n-1
  • 191.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi commentaires 191 191  Dans cet exemple, la fonction renvoie 1 si la valeur demandée est inférieur à 1, sinon elle fait appel à elle même avec un paramètre inférieur de 1 par rapport au précédent.  Les valeurs de ces paramètres vont en décroissant et atteindront à un moment la valeur une (1).  Dans ce cas, il n'y a pas d'appel récursif et donc nous sortons de la fonction.
  • 192.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi NOTE 192 192  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.
  • 193.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICE 193 193 Calculez la somme des entier d 1àn :
  • 194.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi AVANTAGES DES PROCEDURES & FONCTIONS 194 194  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).  La mise au point du programme est plus rapide en utilisant des procédures et des fonctions. En effet, elle peut être réalisée en dehors du contexte du programme.  Une procédure peut être intégrée à un autre programme, ou elle pourra être rangée dans une bibliothèque d'outils ou encore utilisée par n'importe quel programme.
  • 195.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi ALGORITHMES & PROGRAMMATION I 195 195 CHAPITRE X CHAPITRE X LES LISTES LINEAIRES CHAINEES
  • 196.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Notion d’allocation dynamique 196 196  L’utilisation des tableaux statiques implique que l’allocation de l’espace se fait tout à fait au début d’un traitement, c’est à dire que l’espace est connu à la compilation.  Pour certains problèmes, on ne connaît pas à l’avance l’espace utilisé par le programme. On est donc contraint d’utiliser une autre forme d’allocation.  L’allocation de l’espace se fait alors au fur et à mesure de l’exécution du programme.  Afin de pratiquer ce type d’allocation, deux opérations sont nécessaires : allocation et libération de l’espace.
  • 197.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Exemple 197 197  Supposons que l’on veuille résoudre le problème suivant : « Trouver tous les nombres premiers de 1 à n et les stocker en mémoire ».  Le problème réside dans le choix de la structure de données. Si on utilise un tableau, il n’est pas possible de définir la taille de ce tableau avec précision même si nous connaissons la valeur de n (par exemple 10000).  On est donc, ici, face à un problème où la réservation de l’espace doit être dynamique.
  • 198.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Définition d’une liste LINEAIRE CHAINEE 198 198  Une liste linéaire chaînée (LLC) est une structure de données composée d’un ensemble de maillons, alloués dynamiquement et chaînés entre eux.  Dans une liste linéaire chaînée on doit avoir : 1. Un pointeur particulier (L) qui pointe sur le premier élément (contient l’adresse du premier maillon), appelé tête de liste 5 20 0 0 25 0 -1 30 0 3 NI L L=10 0 100 200 250 300
  • 199.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Définition d’une liste LINEAIRE CHAINEE 199 199 2. Chaque maillon est chaîné avec son suivant (chaque maillon contient dans son champ suivant, l’adresse du prochain maillon). 3. Le dernier maillon n’a pas de suivant (son champ suivant contient NIL) 5 20 0 0 25 0 -1 30 0 3 NI L L=10 0 100 200 250 300
  • 200.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Définition des structures de donnes 200 200 5 20 0 0 25 0 -1 30 0 3 NI L L=10 0 100 200 250 300 P Q 5 20 0 Type : Maillon Val (Typeqlq) Suiv (pointeur sur Maillon) Type Maillon = STRUCTURE Val : Typeqq Suiv : Pointeur sur Maillon FINSTRUCTURE Type Liste = pointeur sur Mailon Variable L, P, Q : Liste Type : Liste
  • 201.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi MODELE SUR LES LISTES 201 201 Primitives Primitives Exemples d’appels Exemples d’appels Rôle Rôle Init Init Init(P) Init(P) Initialise le pointeur P à NIL Allouer Allouer Allouer(P) Allouer(P) Reserve un espace Pour un maillon et retourne son adresse Libérer Libérer Libérer(P) Libérer(P) Supprime le maillon pointé par P (P n’est pas supprimé) Val Val x x   Val(P) Val(P) Retourne le contenu du champ Val du maillon pointé par P Aff_Val Aff_Val Aff_val(P,3) Aff_val(P,3) Affecte une valeur au champ du maillon pointé par P. (Le premier paramètre est un pointeur vers un maillon, et le deuxième paramètre est une valeur, ou variable, une expression ayant le même type que celui du champ Val du maillon). Aff_val(P, x) Aff_val(P, x) Aff_Val(P, Val(Q)) Aff_Val(P, Val(Q)) Suiv Suiv Q Q   P P P P   Suiv(P) Suiv(P) Q Q   Suiv(P) Suiv(P) Retourne le contenu du champ Suiv du maillon pointé par P. Aff_Suiv Aff_Suiv Aff_Suiv(P,Q) Aff_Suiv(P,Q) Affecte une adresse du champ Suiv du maillon ponté par P. (Les deux paramètres doivent être des pointeurs de type Liste))  Dans ce cas le chaînage du maillon pointé par P est changé vers un autre maillon ou supprimé complètement. Aff_Suiv(P, Suiv(Q)) Aff_Suiv(P, Suiv(Q)) Aff_Suiv(P, NIL) Aff_Suiv(P, NIL)
  • 202.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi OPERATIONS ELEMENTAIRES 202 202 100 2) 2) Création d’un maillon : Création d’un maillon : (Allouer) (Allouer) P 10 0 Allouer(P) P ? 1) 1) Initialisation d’un pointeur : Initialisation d’un pointeur : (Allouer) (Allouer) P NI L Init(P) P ?
  • 203.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi OPERATIONS ELEMENTAIRES 203 203 100 4) 4) Avoir le contenu du champ Val d’un maillon : Avoir le contenu du champ Val d’un maillon : (Val) (Val) P 10 0 x Val(P) x 5 5 100 P 10 0 x 5 3) 3) Création d’un maillon Création d’un maillon : (Libérer) : (Libérer) P ? Libérer(P) 100 P 10 0 5
  • 204.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi OPERATIONS ELEMENTAIRES 204 204 P Aff_Val(P,x) x 5 5 3 Aff_Val(P,Val(Q)) P x 5 P Aff_Val(P,3) 3 P 1 Q P -1 -1 Q P -1 5) 5) Modifier / Affecter la valeur d’un maillon : Modifier / Affecter la valeur d’un maillon : (Aff_Val) (Aff_Val)
  • 205.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi OPERATIONS ELEMENTAIRES 205 205 3 Q  P Q P -1 20 0 100 3 Q P -1 6) 6) Placement / Déplacement d’un pointeur : Placement / Déplacement d’un pointeur : (Suiv) (Suiv) 10 0 200 100 100 10 0 20 0 20 0 3 P -1 20 0 100 10 0 20 0 p  Suiv(P) 3 P -1 20 0 200 10 0 20 0
  • 206.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi OPERATIONS ELEMENTAIRES 206 206 Q  Suiv(P) Q P 4 200 100 6) 6) Placement / Déplacement d’un pointeur : Placement / Déplacement d’un pointeur : (Suiv) (Suiv) 10 0 200 0 300 3 20 0 30 0 Q P 4 200 300 10 0 200 0 300 3 20 0 30 0
  • 207.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi OPERATIONS ELEMENTAIRES 207 207 Aff_Suiv(P,Q) Q P 4 NIL 100 7) 7) Affectation / Changement / Suppression du suivant : Affectation / Changement / Suppression du suivant : (Aff_Suiv, Suiv) (Aff_Suiv, Suiv) 10 0 200 0 300 3 20 0 30 0 Q P 4 200 200 10 0 100 0 300 3 20 0 30 0
  • 208.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi OPERATIONS ELEMENTAIRES 208 208 Aff_Suiv(P,NIL) Q P 4 200 100 7) 7) Affectation / Changement / Suppression du suivant : Affectation / Changement / Suppression du suivant : (Aff_Suiv, Suiv) (Aff_Suiv, Suiv) 10 0 200 0 300 3 20 0 30 0 Q P 4 200 10 0 100 0 300 3 20 0 30 0 Aff_Suiv(P,Suiv(Q) ) Q P 4 200 100 10 0 200 0 300 3 20 0 30 0 Q P 4 300 200 10 0 100 0 300 3 20 0 30 0
  • 209.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi MODELE SUR LES LISTES 209 209 Primitives Primitives Langage algorithmique Langage algorithmique Allouer Allouer Libérer Libérer Val Val FONCTION Val(P: Liste) : Typeqld DEBUT Retourner (P^.Val) FINFONCTION Aff_Val Aff_Val PROCEDURE Aff_Val(P: Liste, x: Typeqld) DEBUT P^.Valx FINPROCEDURE Suiv Suiv FONCTION Val(P: Liste) : Liste DEBUT Retourner (P^.Suiv) FINFONCTION Aff_Suiv Aff_Suiv PROCEDURE Aff_Suiv(P: Liste, Q: Liste) DEBUT P^.SuivQ FINPROCEDURE
  • 210.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICES D’APPLICATION DU MODELE 210 210 Donner la représentation graphique de la liste après chaque ligne, en précisant les éléments pointés par P, Q et S Allouer(S) Aff_Val(S,2) QS …ligne 1 Allouer(P) Aff_Val(P,Val(Q)-1) Aff_Suiv(S,P) …ligne 2 QSuiv(S) …ligne 3 Aff_Suiv(P,S) …ligne 4 Aff_Suiv(S,NIL) …ligne 5 Aff_Suiv(P,Suiv(S)) …ligne 6 QSuiv(P) …ligne 7
  • 211.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICES D’APPLICATION DU MODELE(CORRIGE) 211 211 Allouer(S) Aff_Val(S,2) QS …ligne 1 S Q P Allouer(P) Aff_Val(P,Val(Q)-1) Aff_Suiv(S,P) …ligne 2 2 S Q P 2 1
  • 212.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICES D’APPLICATION DU MODELE(CORRIGE) 212 212 QSuiv(S) …ligne 3 Aff_Suiv(P,S) …ligne 4 S Q P 2 1 S Q P 2 1
  • 213.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICES D’APPLICATION DU MODELE(CORRIGE) 213 213 Aff_Suiv(S,NIL) …ligne 5 S Q P 2 NIL 1 S Q P 2 NIL 1
  • 214.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICES D’APPLICATION DU MODELE(CORRIGE) 214 214 QSuiv(P) …ligne 7 S Q = NIL P 2 NIL 1 NIL Aff_Suiv(P,Suiv(S)) …ligne 6 S Q P 2 NIL 1 NIL
  • 215.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICES 215 215 Etant donné une liste d’entiers non vide L. Ecrire des sous algorithmes pour résoudre les problèmes suivants : 1.Afficher les éléments de L. 2.Calculer la moyenne des éléments de L. 3.Calculer le maximum et le minimum de L.
  • 216.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICES(COORIGE) 216 216 Etant donné une liste d’entiers non vide L. 1.Afficher les éléments de L
  • 217.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICES(CORRIGE) 217 217 Etant donné une liste d’entiers non vide L. 2.Calculer la moyenne des éléments de L.
  • 218.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICES(CORRIGE) 218 218 Etant donné une liste d’entiers non vide L. 3.Calculer maximum et le minimum de L.
  • 219.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi CREATION D’UNE LISTE 219 219 L = NIL L 3 NIL 5  A chaque fois 1. On crée un maillon 2. On lui affecte une valeur 3. O met à jour son chaînage La création d’une liste respecte 3 règles 1. Posséder un pointeur spécifique (L) qui pointe sur le premier maillon (Dans le cas où la liste est vide L doit être égal à NIL) 2. Chaque maillon doit être chaîné (relié) avec son précédent sauf le premier 3. Le champ suivant du dernier maillon doit être égal à NIL 0 2 Liste vide
  • 220.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICES 220 220 1) Créer une liste chaînée L d’entiers 2) Afficher la liste L 3) Calculer la somme de ses éléments 4) Afficher l’élément de la position R 5) Supprimer l’élément de la position R 6) Insérer un élément dans la position R 7) Donner l’occurrence de la valeur V 8) Libérer la liste L.
  • 221.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi ALGORITHMES & PROGRAMMATION I 221 221 CHAPITRE XI CHAPITRE XI LES PILES & FILES
  • 222.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi ALGORITHMES & PROGRAMMATION I 222 222 CHAPITRE XII CHAPITRE XII LES FICHIERS
  • 223.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi ALGORITHMES & PROGRAMMATION I 223 223 CHAPITRE XIII CHAPITRE XIII LA COMPLEXITE ALGORITHMIQUE
  • 224.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi INTRODUCTION 224 224  Le but de ce chapitre n'est pas de faire de vous des experts en la matière, mais plutôt de vous donner une bonne introduction sur la question de complexité, comprendre pourquoi certains programmes prennent beaucoup plus de temps à s'exécuter que d'autres.
  • 225.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi OBJECTIFS 225 225
  • 226.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EFFICACITE D’UN PROGRAMME 226 226  L'efficacité d'un programme fait en réalité référence à une écriture de code intelligente, bien réfléchie. En d'autres termes un bon algorithme.  L'efficacité se mesure sur deux dimensions : l’espace mémoire et le temps.  Le plus souvent, on ne peut pas avoir les deux dimensions en même temps. C'est-à-dire avoir un programme qui ne prend pas assez d'espace en mémoire mais qui est moins rapide, ou un programme qui est très rapide mais qui prend assez d'espace en mémoire.
  • 227.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi ESPACE MEMOIRE (COMPLEXITE SPATIALE) 227 227  Dans la complexité spatiale, on s’intéresse à la question suivante :  De combien de mémoire le programme a t’il besoin ?  Dans ce cours nous ne nous intéressons pas à la complexité spatiale, car la mémoire croyez moi ce n'est pas ce qui manque aux ordinateurs de nos jours.
  • 228.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi LE TEMPS (COMPLEXITE TEMPORELLE) 228 228  Dans la complexité temporelle, on s’intéresse à la question suivante : Combien de temps d’exécution le programme dure t’il ? Question : Supposons que nous aimerions répondre à la question suivante : Combien de temps un algorithme implémenter par un programme prend à s'exécuter ? Réponse : Méthode Empirique : On peut par exemple lancer l’exécution du programme sur un ordinateur et chronométré l'exécution de ce dernier; et dire plus tard que l'exécution a fait par exemple 4 minutes. On peut par la suite, lancer un autre programme pour le même problème et obtenir par exemple 2 minutes de
  • 229.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi LE TEMPS (COMPLEXITE TEMPORELLE) 229 229 Conclusion : On peut conclure que le programme faisant 2 minutes est le meilleur !!! .  Faux Concrètement c'est une mauvaise manière de tester l'efficacité d'un programme car cette méthode dépend :  de la machine utilisée;  du jeu d’instructions utilisées  de l’habileté du programmeur  du jeu de données générées  du compilateur choisi Mais on n’a pas pris en compte la complexité des calculs du programme.
  • 230.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi LE TEMPS (COMPLEXITE TEMPORELLE) 230 230
  • 231.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi A QUOI ON S’INTERESSE ?  pire de cas 231 231
  • 232.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi A QUOI ON S’INTERESSE ?  pire de cas 232 232
  • 233.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi OPERATIONS ELEMENTAIRES 233 233
  • 234.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi COMPLEXITE & ORDRE DE GRANDEUR 234 234
  • 235.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi COMPLEXITE & ORDRE DE GRANDEUR 235 235
  • 236.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi COMPLEXITE & ORDRE DE GRANDEUR 236 236 Réponses : 1)Cette fonction calcule le factoriel du nombre fourni en argument. 2)C(n) = 1 + 1+ 5(n-1) + 1 = 5n-2 Discussion : Imaginons que n soit égal à 2000 nous aurons 5*2000 - 2 = 9998 instructions. Malgré ce résultat, il est toujours difficile d'exprimer la complexité du programme (difficile à classifier les algorithmes). En effet, on cherche ou plutôt on doit avoir une seule variable de référence (pas une équation) car ce qui nous intéresse c'est la croissance de cette variable en fonction des entrées du programme.  Dans l’exemple précédent : Notre variable de référence est n  pourquoi ?  On doit faire une approximation par limite a une fonction connu : 5n-2 n. ≈ (Voir la parte : ordre de grandeur)
  • 237.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi COMPLEXITE & ORDRE DE GRANDEUR 237 237
  • 238.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi COMPLEXITE & ORDRE DE GRANDEUR 238 238
  • 239.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi MODELE DE CROISSANCE (NOTIONS MATHEMATIQUES) 239 239  En mathématique, il existe plusieurs modèles de croissance (selon la forme de la courbe) :  1 : représente le modèle des fonctions constantes. Exp : f(n) = 5, f(n) = 8 , f(n) = 35 : (ont tous la même forme de courbe  une ligne parallèle avec l’axe desx).  n : représente le modèle des fonctions linéaire. Exp : f(n) = 3n+10, f(n) = n+30, f(n) = 12n-5 ...  n2 : représente le modèle des fonctions quadratique.  n3 : représente le modèle des fonctions cubique.  2n : représente le modèle des fonctions exponentielle.  Log(n) : représente le modèle des fonctions logarithmique.  nLog(n) : représente le modèle des fonctions sous- quadratique.
  • 240.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi COMMENT TROUVER L’ORDRE DE GRANDEUR D’UN ALGORITHME 240 240  Pour trouver à quelle modèle de complexité appartient notre algorithme, on doit :  Calculer la complexité « C » (le nombre d’instructions) pour n et pour n+1, et faire la différence entre les deux. (n : doit être le plus grand possible).  Calculer f = C(n+1)-C(n) afin de trouver le modèle de croissance qui limite f.
  • 241.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi COMMENT TROUVER L’ORDRE DE GRANDEUR D’UN ALGORITHME 241 241
  • 242.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi COMMENT TROUVER L’ORDRE DE GRANDEUR D’UN ALGORITHME 242 242
  • 243.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi COMMENT TROUVER L’ORDRE DE GRANDEUR D’UN ALGORITHME 243 243
  • 244.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi COMMENT TROUVER L’ORDRE DE GRANDEUR D’UN ALGORITHME 244 244 Exercice démonstratif N3 : DEBUT X 0 POUR i de 1 à n FAIRE POUR j de 1 n FAIRE xx+1 FINPOUR FNPOUR FIN. On a deux boucles imbriquées, dont chacune va s’exécuter n fois  donc on a n*n itérations.
  • 245.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi COMMENT TROUVER L’ORDRE DE GRANDEUR D’UN ALGORITHME 245 245
  • 246.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi COMMENT TROUVER L’ORDRE DE GRANDEUR D’UN ALGORITHME 246 246
  • 247.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi PROPRIETES DU LANDAU 247 247
  • 248.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi ALGORITHMES & PROGRAMMATION I 248 248 CHAPITRE XIV CHAPITRE XIV INITIATION A LA COMPLEXITE ALGORITHMIQUE
  • 249.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICE INTRODUCTIF 249 249  Exercice Ecrire une fonction qui prend en argument une chaine de caractère et détermine si le caractère ‘a’ est présent dans la chaîne (cette fonction retourne soit VRAI ou FAUX.
  • 250.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICE INTRODUCTIF (SOLUTION 1) 250 250 Fonction contienta1(x : chaîne) : booléen DEBUT k  0 n  long(x) Res  FAUX TANTQUE((res=FAUX) ET (k<n)) FAIRE SI x[k] = ‘a’ ALORS Res  VRAI kk+1 FINSI FINTANTQUE Retourner(res) FINFONCTION
  • 251.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICE INTRODUCTIF (SOLUTION 2) 251 251 Fonction contienta2(x : chaîne) : booléen DEBUT POUR i de 1 à long(x) FAIRE SI (x[i] = ‘a’) ALORS Retourner(VRAI) SINON Retourner(FAUX) FINSI FINFONCTION
  • 252.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICE INTRODUCTIF (SOLUTION 3) 252 252 Fonction contienta3(x : chaîne) : booléen DEBUT n  (long(x) = compte(‘a’, x)) Retourner(n) FINFONCTION Fonction contienta4(x : chaîne) : booléen DEBUT Retourner(present(‘a’, x)) FINFONCTION
  • 253.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi EXERCICE INTRODUCTIF 253 253 Questions 1.Que remarquez vous concernant cet exercice ? 2.Le code le plus court ! Est-il meilleur ? 3.Comment peut-on désigner le meilleur code parmi ces quatre solutions ?
  • 254.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi DEFINITION DE LA COMPLEXITE D’UN ALGORITHME 254 254  Généralement, pour le même problème P, on peut trouver plusieurs algorithmes.  L’objectif de la complexité est d’évaluer le coût d’exécution de chaque algorithme afin de choisir le meilleur.
  • 255.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi DEFINITION DE LA COMPLEXITE D’UN ALGORITHME 255 255 Définition La complexité d’un problème mathématique est une mesure de la quantité de ressources nécessaires à la résolution du problème P. Cette mesure est basée sur une estimation du nombre d’opérations de base effectuées par l’algorithme en fonction de la taille des données en entrée de l’algorithme.
  • 256.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi PROBLEME 256 256 Comment évaluer le coût Comment évaluer le coût d’exécution d’un algorithme d’exécution d’un algorithme donné ? donné ?
  • 257.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi TYPE DE COMPLEXITE 257 257  En fonction des ressources utilisées pour évaluer la complexité d’un algorithme, on sera amené à distinguer deux types de complexité : 1. Complexité temporelle 2. Complexité spatiale
  • 258.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi TYPE DE COMPLEXITE 258 258
  • 259.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi TYPE DE COMPLEXITE 259 259 2. Complexité spatiale (en espace) La complexité en mémoire donne le nombre d’emplacements mémoires occupés lors de l’exécution d’un programme. Remarque Dans ce cours, nous nous intéresserons uniquement à la complexité temporelle.
  • 260.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi LA NOTATION « grand O » 260 260
  • 261.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi LA NOTATION « grand O » 261 261
  • 262.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi LA NOTATION « grand O » 262 262  Dans les 2 exemples précédents il était facile de borner le temps d’exécution afin de trouver la complexité.  Mais en général il est difficile de trouver le seuil afin de borner cette complexité.  Pour cela on applique les règles suivante afin de simplifier l’expression du temps d’exécution : 1. Tout d’abord on remplace les constante multiplicative par 1 2. On annule les constantes additives 3. On garde le terme de plus haut degré  C’est ainsi qu’on peut calculer facilement la complexité du programme en question
  • 263.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Le COÛT DES INSTRUCTIONS ELEMENTAIRES 263 263
  • 264.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Le COÛT DES INSTRUCTIONS ELEMENTAIRES 264 264 Opérations composées : On appelle opération composée, toute instruction contenant : 1. L’exécution d’une instruction conditionnelle : Si P est une instruction conditionnelle du type SI b ALORS Q1 SINON Q2 FINSI, le nombre d’opération est : Coût(P) = Coût(test) + max(Coût(Q1), Coût(Q2)) L’exécution d’une boucle : le temps d’une boucle est égal à la multiplication du nombre de répétition par la somme du coût de chaque instruction xi du corps de la boucle : Coût(Boucle POUR) = Coût(x ∑ i) Coût(Boucle TANTQUE) = Coût(comparaison) + Coût(x ∑ i)
  • 265.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Le COÛT DES INSTRUCTIONS ELEMENTAIRES 265 265 3. L’appel d’une fonction : Lorsqu’une fonction ou une procédure est appelée, le coût de cette fonction ou procédure est le nombre total d’opérations élémentaires engendrées par l’appel de cette fonction. Exemple 3 : Que vaut le coût de l’algorithme B SI(i modulo 2 = 0) ALORS n  i div 2 SINON i  i+1 n  i div 2 FINSI
  • 266.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi Le COÛT DES INSTRUCTIONS ELEMENTAIRES 266 266
  • 267.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi DIRRERENTES NUANCES DE COMPLEXITE 267 267  Pour des données de même taille, un algorithme n’effectue pas nécessairement le même nombre d’opérations élémentaires.  Pour cela, on distingue 3 types de complexité : 1. Complexité au pire des cas 2. Complexité dans le meilleur des cas 3. Complexité en moyenne des cas
  • 268.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi COMPLEXITE AU PIRE DES CAS 268 268
  • 269.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi COMPLEXITE AU PIRE DES CAS 269 269 Exemple : Recherche d’une élément dans un tableau FONCTION trouver(T : tableau d’entiers , x : entier) : booléen DEBUT POUR i de 1 à n FAIRE SI (i = x) ALORS Retourner VRAI SINON Retourner FAUX FINSI FINPOUR FINFONCTION  On note n la longueur du tableau T (n = long(T))  Dans le pire des cas, l’élément recherché x est le dernier (dans la case n) ou absent.  Donc la complexité dans le pire des cas est Cmax(n) = n
  • 270.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi COMPLEXITE DANS LE MEILLEUR DES CAS 270 270
  • 271.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi COMPLEXITE DANS LE MEILLEUR DES CAS 271 271 Exemple : Recherche d’un élément dans un tableau  On considère le même exemple précédent.  Dans le meilleur des cas, l’élément x se trouve en 1ère position.  Donc la complexité dans le meilleur des cas est : Cmax(n) = 1
  • 272.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi COMPLEXITE EN MOYENNE DES CAS 272 272
  • 273.
    Reproduction interdite Reproduction interdite MuhammadIbn Muhammad Ibn Musa al- Musa al- Khawarizmi Khawarizmi COMPLEXITE EN MOYENNE DES CAS 273 273

Notes de l'éditeur

  • #9 Introduction La programmation impérative : Programmation structurée, visant à structurer les programmes impératifs pour en supprimer les instructions goto : Pascal, C, C++, Java, Python, PHP, … L’instruction goto permet d’effectuer un saut jusqu’à l’instruction étiquette correspondant. Elle est à proscrire de tout programme C digne de ce nom. Depuis la révolution de la programmation structurée des années 1970, l’instruction goto n’est plus guère appréciée des programmeurs modernes, car elle rend souvent les programmes plus difficiles à comprendre et à maintenir (on parle dans ce cas de programmation spaghetti). On parcourt le code de haut en bas et quand on passe à un autre morceau de code c'est toujours par le début qu'on commence. Programmation procédurale, visant à décomposer un programme en routines et sous routines qui contiennent une série d'étapes : Pascal, C, C++, … L'ordre dans lequel ces fonctions sont appelées n'est pas important. La programmation orientée objet : Programmation consistant en la définition et l’assemblage de briques logicielles appelées objets : C++, Java, Python, PHP, ... La programmation déclarative : Programmation descriptive, qui permet de décrire des structures de données : HTML, XML, LaTeX, ... Programmation fonctionnelle, avec laquelle un programme est une fonction au sens mathématique du terme : Python, Lisp, Eiffel, Scheme…On ne manipule que des fonctions pour produire une grosse fonction (le programme) auquel on passe les paramètres pour obtenir le résultat. Programmation logique, consistant à exprimer les problèmes et les algorithmes sous forme de prédicats : Prolog, Python, ...
  • #10 Introduction La programmation impérative : Programmation structurée, visant à structurer les programmes impératifs pour en supprimer les instructions goto : Pascal, C, C++, Java, Python, PHP, … L’instruction goto permet d’effectuer un saut jusqu’à l’instruction étiquette correspondant. Elle est à proscrire de tout programme C digne de ce nom. Depuis la révolution de la programmation structurée des années 1970, l’instruction goto n’est plus guère appréciée des programmeurs modernes, car elle rend souvent les programmes plus difficiles à comprendre et à maintenir (on parle dans ce cas de programmation spaghetti). On parcourt le code de haut en bas et quand on passe à un autre morceau de code c'est toujours par le début qu'on commence. Programmation procédurale, visant à décomposer un programme en routines et sous routines qui contiennent une série d'étapes : Pascal, C, C++, … L'ordre dans lequel ces fonctions sont appelées n'est pas important. La programmation orientée objet : Programmation consistant en la définition et l’assemblage de briques logicielles appelées objets : C++, Java, Python, PHP, ... La programmation déclarative : Programmation descriptive, qui permet de décrire des structures de données : HTML, XML, LaTeX, ... Programmation fonctionnelle, avec laquelle un programme est une fonction au sens mathématique du terme : Python, Lisp, Eiffel, Scheme…On ne manipule que des fonctions pour produire une grosse fonction (le programme) auquel on passe les paramètres pour obtenir le résultat. Programmation logique, consistant à exprimer les problèmes et les algorithmes sous forme de prédicats : Prolog, Python, ...
  • #11 Introduction La programmation impérative : Programmation structurée, visant à structurer les programmes impératifs pour en supprimer les instructions goto : Pascal, C, C++, Java, Python, PHP, … L’instruction goto permet d’effectuer un saut jusqu’à l’instruction étiquette correspondant. Elle est à proscrire de tout programme C digne de ce nom. Depuis la révolution de la programmation structurée des années 1970, l’instruction goto n’est plus guère appréciée des programmeurs modernes, car elle rend souvent les programmes plus difficiles à comprendre et à maintenir (on parle dans ce cas de programmation spaghetti). On parcourt le code de haut en bas et quand on passe à un autre morceau de code c'est toujours par le début qu'on commence. Programmation procédurale, visant à décomposer un programme en routines et sous routines qui contiennent une série d'étapes : Pascal, C, C++, … L'ordre dans lequel ces fonctions sont appelées n'est pas important. La programmation orientée objet : Programmation consistant en la définition et l’assemblage de briques logicielles appelées objets : C++, Java, Python, PHP, ... La programmation déclarative : Programmation descriptive, qui permet de décrire des structures de données : HTML, XML, LaTeX, ... Programmation fonctionnelle, avec laquelle un programme est une fonction au sens mathématique du terme : Python, Lisp, Eiffel, Scheme…On ne manipule que des fonctions pour produire une grosse fonction (le programme) auquel on passe les paramètres pour obtenir le résultat. Programmation logique, consistant à exprimer les problèmes et les algorithmes sous forme de prédicats : Prolog, Python, ...
  • #12 Introduction La programmation impérative : Programmation structurée, visant à structurer les programmes impératifs pour en supprimer les instructions goto : Pascal, C, C++, Java, Python, PHP, … L’instruction goto permet d’effectuer un saut jusqu’à l’instruction étiquette correspondant. Elle est à proscrire de tout programme C digne de ce nom. Depuis la révolution de la programmation structurée des années 1970, l’instruction goto n’est plus guère appréciée des programmeurs modernes, car elle rend souvent les programmes plus difficiles à comprendre et à maintenir (on parle dans ce cas de programmation spaghetti). On parcourt le code de haut en bas et quand on passe à un autre morceau de code c'est toujours par le début qu'on commence. Programmation procédurale, visant à décomposer un programme en routines et sous routines qui contiennent une série d'étapes : Pascal, C, C++, … L'ordre dans lequel ces fonctions sont appelées n'est pas important. La programmation orientée objet : Programmation consistant en la définition et l’assemblage de briques logicielles appelées objets : C++, Java, Python, PHP, ... La programmation déclarative : Programmation descriptive, qui permet de décrire des structures de données : HTML, XML, LaTeX, ... Programmation fonctionnelle, avec laquelle un programme est une fonction au sens mathématique du terme : Python, Lisp, Eiffel, Scheme…On ne manipule que des fonctions pour produire une grosse fonction (le programme) auquel on passe les paramètres pour obtenir le résultat. Programmation logique, consistant à exprimer les problèmes et les algorithmes sous forme de prédicats : Prolog, Python, ...
  • #13 Sachez aussi qu’il existe des problèmes pour lesquels on ne peut trouver une solution et par conséquent il est impossible de donner l’algorithme correspondant.
  • #14 Introduction La programmation impérative : Programmation structurée, visant à structurer les programmes impératifs pour en supprimer les instructions goto : Pascal, C, C++, Java, Python, PHP, … L’instruction goto permet d’effectuer un saut jusqu’à l’instruction étiquette correspondant. Elle est à proscrire de tout programme C digne de ce nom. Depuis la révolution de la programmation structurée des années 1970, l’instruction goto n’est plus guère appréciée des programmeurs modernes, car elle rend souvent les programmes plus difficiles à comprendre et à maintenir (on parle dans ce cas de programmation spaghetti). On parcourt le code de haut en bas et quand on passe à un autre morceau de code c'est toujours par le début qu'on commence. Programmation procédurale, visant à décomposer un programme en routines et sous routines qui contiennent une série d'étapes : Pascal, C, C++, … L'ordre dans lequel ces fonctions sont appelées n'est pas important. La programmation orientée objet : Programmation consistant en la définition et l’assemblage de briques logicielles appelées objets : C++, Java, Python, PHP, ... La programmation déclarative : Programmation descriptive, qui permet de décrire des structures de données : HTML, XML, LaTeX, ... Programmation fonctionnelle, avec laquelle un programme est une fonction au sens mathématique du terme : Python, Lisp, Eiffel, Scheme…On ne manipule que des fonctions pour produire une grosse fonction (le programme) auquel on passe les paramètres pour obtenir le résultat. Programmation logique, consistant à exprimer les problèmes et les algorithmes sous forme de prédicats : Prolog, Python, ...
  • #15 Nous dirons qu’un programme est un algorithme exprimé dans un langage de programmation
  • #16 Introduction La programmation impérative : Programmation structurée, visant à structurer les programmes impératifs pour en supprimer les instructions goto : Pascal, C, C++, Java, Python, PHP, … L’instruction goto permet d’effectuer un saut jusqu’à l’instruction étiquette correspondant. Elle est à proscrire de tout programme C digne de ce nom. Depuis la révolution de la programmation structurée des années 1970, l’instruction goto n’est plus guère appréciée des programmeurs modernes, car elle rend souvent les programmes plus difficiles à comprendre et à maintenir (on parle dans ce cas de programmation spaghetti). On parcourt le code de haut en bas et quand on passe à un autre morceau de code c'est toujours par le début qu'on commence. Programmation procédurale, visant à décomposer un programme en routines et sous routines qui contiennent une série d'étapes : Pascal, C, C++, … L'ordre dans lequel ces fonctions sont appelées n'est pas important. La programmation orientée objet : Programmation consistant en la définition et l’assemblage de briques logicielles appelées objets : C++, Java, Python, PHP, ... La programmation déclarative : Programmation descriptive, qui permet de décrire des structures de données : HTML, XML, LaTeX, ... Programmation fonctionnelle, avec laquelle un programme est une fonction au sens mathématique du terme : Python, Lisp, Eiffel, Scheme…On ne manipule que des fonctions pour produire une grosse fonction (le programme) auquel on passe les paramètres pour obtenir le résultat. Programmation logique, consistant à exprimer les problèmes et les algorithmes sous forme de prédicats : Prolog, Python, ...
  • #17 Comportement déterministe : qui réagit toujours de la même façon à un évènement
  • #18 Comportement déterministe : qui réagit toujours de la même façon à un évènement
  • #19 Introduction La programmation impérative : Programmation structurée, visant à structurer les programmes impératifs pour en supprimer les instructions goto : Pascal, C, C++, Java, Python, PHP, … L’instruction goto permet d’effectuer un saut jusqu’à l’instruction étiquette correspondant. Elle est à proscrire de tout programme C digne de ce nom. Depuis la révolution de la programmation structurée des années 1970, l’instruction goto n’est plus guère appréciée des programmeurs modernes, car elle rend souvent les programmes plus difficiles à comprendre et à maintenir (on parle dans ce cas de programmation spaghetti). On parcourt le code de haut en bas et quand on passe à un autre morceau de code c'est toujours par le début qu'on commence. Programmation procédurale, visant à décomposer un programme en routines et sous routines qui contiennent une série d'étapes : Pascal, C, C++, … L'ordre dans lequel ces fonctions sont appelées n'est pas important. La programmation orientée objet : Programmation consistant en la définition et l’assemblage de briques logicielles appelées objets : C++, Java, Python, PHP, ... La programmation déclarative : Programmation descriptive, qui permet de décrire des structures de données : HTML, XML, LaTeX, ... Programmation fonctionnelle, avec laquelle un programme est une fonction au sens mathématique du terme : Python, Lisp, Eiffel, Scheme…On ne manipule que des fonctions pour produire une grosse fonction (le programme) auquel on passe les paramètres pour obtenir le résultat. Programmation logique, consistant à exprimer les problèmes et les algorithmes sous forme de prédicats : Prolog, Python, ...
  • #20 Introduction La programmation impérative : Programmation structurée, visant à structurer les programmes impératifs pour en supprimer les instructions goto : Pascal, C, C++, Java, Python, PHP, … L’instruction goto permet d’effectuer un saut jusqu’à l’instruction étiquette correspondant. Elle est à proscrire de tout programme C digne de ce nom. Depuis la révolution de la programmation structurée des années 1970, l’instruction goto n’est plus guère appréciée des programmeurs modernes, car elle rend souvent les programmes plus difficiles à comprendre et à maintenir (on parle dans ce cas de programmation spaghetti). On parcourt le code de haut en bas et quand on passe à un autre morceau de code c'est toujours par le début qu'on commence. Programmation procédurale, visant à décomposer un programme en routines et sous routines qui contiennent une série d'étapes : Pascal, C, C++, … L'ordre dans lequel ces fonctions sont appelées n'est pas important. La programmation orientée objet : Programmation consistant en la définition et l’assemblage de briques logicielles appelées objets : C++, Java, Python, PHP, ... La programmation déclarative : Programmation descriptive, qui permet de décrire des structures de données : HTML, XML, LaTeX, ... Programmation fonctionnelle, avec laquelle un programme est une fonction au sens mathématique du terme : Python, Lisp, Eiffel, Scheme…On ne manipule que des fonctions pour produire une grosse fonction (le programme) auquel on passe les paramètres pour obtenir le résultat. Programmation logique, consistant à exprimer les problèmes et les algorithmes sous forme de prédicats : Prolog, Python, ...
  • #21 Introduction La programmation impérative : Programmation structurée, visant à structurer les programmes impératifs pour en supprimer les instructions goto : Pascal, C, C++, Java, Python, PHP, … L’instruction goto permet d’effectuer un saut jusqu’à l’instruction étiquette correspondant. Elle est à proscrire de tout programme C digne de ce nom. Depuis la révolution de la programmation structurée des années 1970, l’instruction goto n’est plus guère appréciée des programmeurs modernes, car elle rend souvent les programmes plus difficiles à comprendre et à maintenir (on parle dans ce cas de programmation spaghetti). On parcourt le code de haut en bas et quand on passe à un autre morceau de code c'est toujours par le début qu'on commence. Programmation procédurale, visant à décomposer un programme en routines et sous routines qui contiennent une série d'étapes : Pascal, C, C++, … L'ordre dans lequel ces fonctions sont appelées n'est pas important. La programmation orientée objet : Programmation consistant en la définition et l’assemblage de briques logicielles appelées objets : C++, Java, Python, PHP, ... La programmation déclarative : Programmation descriptive, qui permet de décrire des structures de données : HTML, XML, LaTeX, ... Programmation fonctionnelle, avec laquelle un programme est une fonction au sens mathématique du terme : Python, Lisp, Eiffel, Scheme…On ne manipule que des fonctions pour produire une grosse fonction (le programme) auquel on passe les paramètres pour obtenir le résultat. Programmation logique, consistant à exprimer les problèmes et les algorithmes sous forme de prédicats : Prolog, Python, ...
  • #22 Introduction La programmation impérative : Programmation structurée, visant à structurer les programmes impératifs pour en supprimer les instructions goto : Pascal, C, C++, Java, Python, PHP, … L’instruction goto permet d’effectuer un saut jusqu’à l’instruction étiquette correspondant. Elle est à proscrire de tout programme C digne de ce nom. Depuis la révolution de la programmation structurée des années 1970, l’instruction goto n’est plus guère appréciée des programmeurs modernes, car elle rend souvent les programmes plus difficiles à comprendre et à maintenir (on parle dans ce cas de programmation spaghetti). On parcourt le code de haut en bas et quand on passe à un autre morceau de code c'est toujours par le début qu'on commence. Programmation procédurale, visant à décomposer un programme en routines et sous routines qui contiennent une série d'étapes : Pascal, C, C++, … L'ordre dans lequel ces fonctions sont appelées n'est pas important. La programmation orientée objet : Programmation consistant en la définition et l’assemblage de briques logicielles appelées objets : C++, Java, Python, PHP, ... La programmation déclarative : Programmation descriptive, qui permet de décrire des structures de données : HTML, XML, LaTeX, ... Programmation fonctionnelle, avec laquelle un programme est une fonction au sens mathématique du terme : Python, Lisp, Eiffel, Scheme…On ne manipule que des fonctions pour produire une grosse fonction (le programme) auquel on passe les paramètres pour obtenir le résultat. Programmation logique, consistant à exprimer les problèmes et les algorithmes sous forme de prédicats : Prolog, Python, ...
  • #23 Introduction La programmation impérative : Programmation structurée, visant à structurer les programmes impératifs pour en supprimer les instructions goto : Pascal, C, C++, Java, Python, PHP, … L’instruction goto permet d’effectuer un saut jusqu’à l’instruction étiquette correspondant. Elle est à proscrire de tout programme C digne de ce nom. Depuis la révolution de la programmation structurée des années 1970, l’instruction goto n’est plus guère appréciée des programmeurs modernes, car elle rend souvent les programmes plus difficiles à comprendre et à maintenir (on parle dans ce cas de programmation spaghetti). On parcourt le code de haut en bas et quand on passe à un autre morceau de code c'est toujours par le début qu'on commence. Programmation procédurale, visant à décomposer un programme en routines et sous routines qui contiennent une série d'étapes : Pascal, C, C++, … L'ordre dans lequel ces fonctions sont appelées n'est pas important. La programmation orientée objet : Programmation consistant en la définition et l’assemblage de briques logicielles appelées objets : C++, Java, Python, PHP, ... La programmation déclarative : Programmation descriptive, qui permet de décrire des structures de données : HTML, XML, LaTeX, ... Programmation fonctionnelle, avec laquelle un programme est une fonction au sens mathématique du terme : Python, Lisp, Eiffel, Scheme…On ne manipule que des fonctions pour produire une grosse fonction (le programme) auquel on passe les paramètres pour obtenir le résultat. Programmation logique, consistant à exprimer les problèmes et les algorithmes sous forme de prédicats : Prolog, Python, ...
  • #256 Le coût d’exécution d’un programme s’évalue par 2 éléments : Temps d’exécution nécessaire pour que le programme donne son résultat Réservation de la mémoire nécessaire utilisée par le programme au cours de son exécution
  • #257 D’après tout ce qui précède, on peut dire que pour évaluer la complexité d’un algorithme, en fonction des ressources utilisées, on sera amené a distinguer deux types de complexité : la complexité temporelle et la complexité spatiale.
  • #260 Pour arriver à mieux comprendre cette définition, on va procéder par des exemples
  • #261 Comme on peut le constater, dans les 2 exemples il était facile de borner le temps d’exécution afin de trouver la complexité. Mais en général il est difficile de trouver le seuil afin de borner cette complexité. Pour cela on applique les règles suivante afin de simplifier l’expression du temps d’exécution. Tout d’abord on remplace les constante multiplicative par 1 On annule les constantes additives On garde le terme de plus haut degré C’est ainsi qu’on peut calculer facilement la complexité du programme en question Essayons d’appliquer ces règles à nos exemples : Exemple 1 : T(n) = 3n + 6  n+6  n + 0  n T(n) = O(n) Exemple 2 : T(n) = n² + 3n  n² + 3  n² + 0  n² T(n) = O(n²)
  • #262 Comme on peut le constater, dans les 2 exemples il était facile de borner le temps d’exécution afin de trouver la complexité. Mais en général il est difficile de trouver le seuil afin de borner cette complexité. Pour cela on applique les règles suivante afin de simplifier l’expression du temps d’exécution. Tout d’abord on remplace les constante multiplicative par 1 On annule les constantes additives On garde le terme de plus haut degré C’est ainsi qu’on peut calculer facilement la complexité du programme en question Essayons d’appliquer ces règles à nos exemples : Exemple 1 : T(n) = 3n + 6  n+6  n + 0  n T(n) = O(n) Exemple 2 : T(n) = n² + 3n  n² + 3  n² + 0  n² T(n) = O(n²)
  • #273 Si x existe dans le tableau avec une probabilité p, on peut dire que x n’existe pas dans le tableau avec une probabilité de 1-p Si x existe il peut se trouver à la ième case avec une probabilité de 𝑝∗1/𝑛 Si x n’existe pas, toutes les itérations de la boucle POUR seront exécutées La probabilité pour que x n’existe pas est (1−𝑝)∗𝑛 On doit faire la sommation de tous les cas possibles pour obtenir la complexité en moyenne des cas 𝐶𝑚𝑜𝑦 (𝑛)=𝑝∗(1/𝑛+2/𝑛+ …+𝑛/𝑛)+(1−𝑝)∗𝑛=𝑝((𝑛+1)/2)+𝑛(1−𝑝) (E) Si on suppose que x existe dans le tableau, c’est-à-dire que p=1 et si on remplace dans (E) on obtient : 𝐶𝑚𝑜𝑦 (𝑛)= ((𝑛+1)/2)