Enseignant: TINDANO Y.
Olivier /Enseignant à
l‟Université Norbert Zongo de Koudougou
tindanolivier83@[Link]
Cours d'Algorithmique par Tindano Olivier 1
Qu‟est ce qu‟un ordinateur?
Machine qui saisit (périphériques d‟entrée), stocke
(mémoire), traite (programmes) et restitue
(périphériques de sortie) des informations
Quel langage utilise l‟ordinateur?
Toutes communications à l'intérieur de l'ordinateur
sont faites avec des signaux électriques
0: éteint (absence de signal électrique)
1: allumé (présence de signal électrique)
C‟est le Binaire
Difficultés pour l‟homme de raisonner en binaire
Cours d'Algorithmique par
Tindano Olivier 2
Les applications de l‟ordinateur sont très
nombreuses.
En voici quelques exemples :
• accès à Internet ;
• envoi de courrier électronique ;
• création de sites Web ;
• lecture de CD-Rom ou de DVD ;
• archivage et retouche de photos ;
• jeux vidéo ;
Cours d'Algorithmique par
Tindano Olivier 3
• bureautique : traitement de texte, tableur,
gestion de bases de données... ;
• gestion et comptabilité : facturation, paye,
stocks…
• analyse numérique ;
• prévisions météorologiques ;
• aide à la conception électronique (CAO) ou
graphique (DAO) ;
• pilotage de satellites, d‟expériences...
Cours d'Algorithmique par
Tindano Olivier 4
Cours d'Algorithmique par
Tindano Olivier 5
Cours d'Algorithmique par
Tindano Olivier 6
Définition
Un algorithme, c‟est une suite
d‟instructions, qui une fois exécutée
correctement, conduit à un résultat donné
Dans notre quotidien nous faisons ou
suivons des algorithme (Par exemple suivre
une notice pour monter une cuisinière, faire
notre planning …)
Cours d'Algorithmique par
Tindano Olivier 7
• Présenter l'activité de programmation
• Introduire la notion d'algorithme
– Justification et outils de base
• Sensibiliser à une méthode de
programmation
Cours d'Algorithmique par
Tindano Olivier 8
Avez-vous déjà eu l‟occasion de faire la cuisine ?
Exemple
On donne les ingrédients suivants :
• Thym laurier
• persil
• ail
• huile
• vinaigre
• sel
• poivre
• citron
• et une carpe de 3kg.
Résultat: Préparer une marinade de
carpe.
Cours d'Algorithmique par
Tindano Olivier 9
Le mot algorithme vient du nom du mathématicien
Al Khuwarizmi (Muhammad ibn Mūsā
alKhuwārizmī), savant persan du IXème siècle,
auteur d‟un ouvrage appelé "La transposition et la
réduction", Aljabrwa‟lmuqābalah
Une définition simple d‟un algorithme : c‟est une
suite d‟instructions qui, quand elles sont
exécutées correctement aboutissent au résultat
attendu. C‟est un énoncé dans un langage clair,
bien défini et ordonné qui permet de résoudre
un problème, le plus souvent par calcul
Cours d'Algorithmique par
Tindano Olivier 10
• donner des indications à quelqu‟un
pour qu‟il trouve son chemin;
• conduire sa voiture;
• faire une recette de cuisine;
• placer un appel téléphonique;
• concevoir un plan architectural;
• descendre un escalier;
Cours d'Algorithmique par
Tindano Olivier 11
Fondamentalement, un ordinateur exécute le
travail qu‟on lui fournit et non pas « ce qu‟on
pense lui avoir fourni » !
• Il ne doit exister aucune ambiguïté dans la
séquence des instructions du programme;
• Après l‟exécution d‟une instruction, il ne doit
subsister aucun doute sur le choix de la
prochaine instruction à exécuter.
Cours d'Algorithmique par
Tindano Olivier 12
Principales difficultés
Ainsi, les difficultés pour réaliser un
algorithme peuvent provenir
principalement de l‟ensemble des détails
d‟une activité complexe dont il faut
probablement tenir compte et ne pas
oublier !
Cours d'Algorithmique par
Tindano Olivier 13
Un algorithme est la spécification précise et
non ambiguë d‟une séquence d‟étapes,
formée d'un nombre fini d'opérations
pouvant être exécutées de façon automatique
par un ordinateur. Il est exprimé
de manière formelle dans un langage de
programmation ou dans un style informel en
langage naturel.
Il doit avoir les propriétés suivantes :
Cours d'Algorithmique par
Tindano Olivier 14
Il est exprimé de manière formelle dans un
langage de programmation ou dans un style
informel en langage naturel.
Il doit avoir les propriétés suivantes :
• avoir un nombre fini d‟étapes;
• avoir un nombre fini d‟opérations par étape;
• formulé en une suite d‟opérations primitives;
• se termine après un nombre fini d‟opérations;
• fourni un résultat;
Cours d'Algorithmique par
Tindano Olivier 15
Chaque opération doit être:
définie rigoureusement et sans ambiguïté
effective, c-à-d réalisable par une machine
L‟exécution d‟un algorithme sur un ordinateur
consomme des ressources :
• en temps de calcul : complexité temporelle
• en espace-mémoire occupé : complexité
spatiale
Cours d'Algorithmique par
Tindano Olivier 16
Cours d'Algorithmique par
Tindano Olivier 17
Notion de variables, type et valeurs
Les instructions s'appliquent à des variables
En programmation, une variable est donc un nom qui sert
à repérer un emplacement donné de la mémoire
centrale.
Une variable est caractérisée par :
son identificateur (son nom)
son type (par exemple numérique)
son contenu ( valeur prise par la variable à un niveau
donné de l'algorithme)
L'identificateur est le nom de la case réservée en
mémoire, le type est la catégorie.
Cours d'Algorithmique par
Tindano Olivier 18
• Le type Caractère: contient un seul caractère,
• Le type chaine : contient plusieurs caractères
Caractère „a‟
Chaine „arbre‟
Entier 12
Cours d'Algorithmique par
Tindano Olivier 19
Les instructions élémentaires (affectation, lecture
et écriture)
Une instruction est la spécification d'une ou de
plusieurs actions portant sur une ou des
variables.
L'instruction la plus commune est l'affectation.
Elle consiste à doter une variable d'une valeur
appartenant à son domaine, c'est à dire à lui
donner une première valeur ou à changer sa
valeur courante. Elle se note
Instructions d'entrée
Affectation :A reçoit 15, noté A 15 ou A:=15
Cours d'Algorithmique par
Tindano Olivier 20
Les instructions élémentaires (affectation,
lecture et écriture)
Une expression est une suite finie bien
formée d'opérateurs portant sur des variables
ou des valeurs et qui a une valeur. La valeur
de l'expression doit être conforme au
domaine de la variable affectée.
Exemple:
y←x+4
Cours d'Algorithmique par
Tindano Olivier 21
Les instructions élémentaires (affectation,
lecture et écriture)
Lecture d'une donnée :
Lire une donnée entrée au clavier notée,
LIRE X (met dans la case appelée X les données
entrées au clavier).
Ecriture d‟une donnée:
Cours d'Algorithmique par
Tindano Olivier 22
Les instructions élémentaires (affectation, lecture et écriture)
Instruction d'écriture
L'instruction de restitution de résultats sur le
périphérique de sortie (en général l'écran) est :
Ecrire (liste d'expressions)
Cette instruction réalise simplement l'affichAge des valeurs des
expressions décrites dans la liste. Ces instructions peuvent être
simplement des variables ayant des valeurs ou même des
nombres ou des commentaires écrits sous forme de chaînes de
caractères.
Exemple:Ecrire(‟‟bonjour‟‟)ou
Afficher(‟‟Bonjour‟‟) / /Affiche bonjour
Cours d'Algorithmique par
Tindano Olivier 23
Les types d‟une variable
• entier : représentation exacte d‟une partie
des nombres entiers relatifs,
• réel : représentation (généralement
approchée) d‟une partie des nombres réels,
• caractère : représentation d‟un (seul)
caractère.
• Chaine de caractère: représentation d‟une
chaine de caractère
Cours d'Algorithmique par
Tindano Olivier 24
Déclaration de type
Généralement, le type d‟une variable est choisi,
une fois pour toutes, à l‟aide d‟une instruction
particulière nommée « déclaration de type »
entier n, p
Elle signifiera que les variables n et p sont du type
entier. De même :
caractère c1, c2, c
signifiera que les variables nommées c1, c2 et c
seront de type caractère.
Cours d'Algorithmique par
Tindano Olivier 25
L‟instruction d‟affectation
Son rôle consiste simplement à placer une
valeur dans une variable. Ainsi, une
instruction permettra de dire :
• affecter à la variable nombre la valeur 5
c‟est-à-dire : ranger dans nombre la valeur 5
Notation: nombre 5 ou nombre:= 5
Cours d'Algorithmique par
Tindano Olivier 26
Opérateur d‟affectation := ou
La valeur à placer dans une variable pourra
également provenir d‟une autre variable
Exemple: affecter à la variable b la valeur de la
variable a
Notation: variable a; variable b
variable b a ou variable b:=a
on pourra demander de ranger dans une variable
le résultat d‟un calcul
affecter à la variable b la valeur de l‟expression
Exemple: b := a+4
Nb: les deux variables(a et b) doivent être du
même type
Cours d'Algorithmique par
Tindano Olivier 27
Opérateur d‟affectation
• à gauche du symbole :=, on trouve le nom d‟une
variable destinée à recevoir une valeur,
• à droite du symbole :=, on trouve « quelque
chose » qui précise la valeur en question. Nous
dirons qu‟il s‟agit d‟une expression.
Nous pouvons alors dire qu‟une instruction
d‟affectation possède un double rôle :
• elle détermine la valeur de l‟expression située à
droite de :=,
• elle range le résultat dans la variable située à
gauche
Cours d'Algorithmique par
Tindano Olivier 28
Opérateur d‟affectation
Ainsi l‟expréssion b := a + 3
détermine la valeur de l‟expression a + 3, sans
modifier la valeur de la variable a.
En revanche, si la variable réceptrice (ici b)
comporte déjà une valeur, celle-ci est
purement et simplement remplacée par celle
qui vient d‟être déterminée.
Cours d'Algorithmique par
Tindano Olivier 29
Opérateur d‟affectation
Evaluer les expressions suivantes:
Cours d'Algorithmique par
Tindano Olivier 30
Opérateur d‟affectation
Exercice 2.1
En procédant comme précédemment , dites
quelles seront les valeurs des variables a,b et c,
après l‟exécution de chacune des instructions :
a := 5
b := 3
c := a + b
a := 2
c := b - a
Cours d'Algorithmique par
Tindano Olivier 31
Opérateur d‟affectation
Quelques précautions
En mathématiques, on travaille avec des
relations. Ainsi :
b=a+1
signifie que, tout au long de vos calculs, a et b
vérifieront cette relation. Autrement dit, quel
que soit a, b sera toujours égal à a + 1.
Cours d'Algorithmique par
Tindano Olivier 32
Opérateur d‟affectation
Quelques précautions
En informatique, on travaille avec des
[Link], si vous considérez ces trois
instructions :
a := 5
b := a + 1
a := 2
la seconde donne à b la valeur de a + 1, c‟est-à-
dire 6. En revanche, la troisième donne à a la
valeur 2, sans que la valeur de b ne soit changée.
L‟action de b := a + 1 est donc purement
instantanée. Cette instruction n‟a rien à voir avec
une relation mathématique
Cours d'Algorithmique par
Tindano Olivier 33
Opérateur d‟affectation
Quelques précautions
L‟instruction :
a := a + 1
signifie : évaluer l‟expression a + 1 et ranger le
résultat dans a. Cela revient à augmenter de un la
valeur de a. Ce type d‟instruction où la même
variable apparaît de part et d‟autre du symbole
de l‟affectation sera à la base de la solution à de
nombreux problèmes de programmation.
Notez qu‟en mathématiques, a = a + 1 est une
relation fausse.
Cours d'Algorithmique par
Tindano Olivier 34
Opérateur d‟affectation
Quelques précautions
Enfin, par définition de l‟instruction d‟affectation,
l‟écriture :
a + 5 := 3
n‟a pas de sens. On ne peut pas affecter une valeur
à une expression, mais seulement à une
variable.
Par contre, en mathématiques l‟écriture :
a+5=3
a bien un sens, puisqu‟il s‟agit alors d‟une
équation.
Cours d'Algorithmique par
Tindano Olivier 35
Opérateur d‟affectation
Quelques précautions
Application: Qu‟obtiendra-t-on dans les
variables a et b, après exécution des
instructions suivantes (dans cet ordre) ?
a := 5
b := a + 4
a := a + 1
b := a - 4
Cours d'Algorithmique par
Tindano Olivier 36
Opérateur d‟affectation
Quelques précautions
Application
a) Qu‟obtiendra-t-on dans les variables n1 et n2 après exécution des instructions ?
n1 := 5
n2 := 7
n1 := n2
n2 := n1
b) Même question avec les instructions :
n1 := 5
n2 := 7
n2 := n1
n1 := n2
Cours d'Algorithmique par
Tindano Olivier 37
Échanger les valeurs de deux variables
a := b
cette instruction détruit l‟ancienne valeur de a.
Une solution consiste à utiliser une variable
supplémentaire, destinée à contenir
temporairement une copie de la valeur de a,
avant que cette dernière ne soit remplacée par
la valeur de b
Cours d'Algorithmique par
Tindano Olivier 38
Échanger les valeurs de deux variables
Algorithme inversion_stockAge
Variables
a : entier
b : entier
temp : entier (* variable dans laquelle on stockera le contenu
d'une variable pour ne pas l'écraser au moment
de la première assignation *)
Début
temp := a (* on sauvegarde a qui sera effacée à la ligne suivante
pour pouvoir la placer dans b plus tard *)
a := b
b := temp
Fin
Cours d'Algorithmique par
Tindano Olivier 39
Échanger les valeurs de deux variables
Cours d'Algorithmique par
Tindano Olivier 40
Exercice 1.1
Quelles seront les valeurs des variables A et B
après exécution des instructions suivantes ?
Variables A, B en Entier
Début
A←1
B←A+3
A←3
Fin
Cours d'Algorithmique par
Tindano Olivier 41
Exercice 1.2
Quelles seront les valeurs des variables A, B et C
après exécution des instructions suivantes ?
Variables A, B, C en Entier
Début
A←5
B←3
C←A+B
A←2
C←B–A
Fin
Cours d'Algorithmique par
Tindano Olivier 42
Exercice 1.3
Que produit l‟algorithme suivant ?
Variables A, B, C en Caractères
Début
A ← "423"
B ← "12"
C←A+B
Fin
Cours d'Algorithmique par
Tindano Olivier 43
Exercice 1.4
Variables A, B, C en Caractères
Début
A ← "423"
B ← "12"
C←A&B
Fin
Cours d'Algorithmique par
Tindano Olivier 44
Les instructions élémentaires (affectation,
lecture et écriture)
1. Les opérateurs :
Cours d'Algorithmique par
Tindano Olivier 45
Les instructions élémentaires (affectation, lecture
et écriture)
1. Les opérateurs :
Expressions de type entier
Nous conviendrons que nous disposons des quatre
opérateurs usuels :
• + pour l‟addition, comme dans n + 3 ou n + p;
• - pour la soustraction, comme dans n - p;
• * pour la multiplication, comme dans n * 5 ou n *
p;
• / pour la division comme dans n/3 ou n/p ; nous
conviendrons qu‟il s‟agira de la « division
entière »
Cours d'Algorithmique par
Tindano Olivier 46
2. Priorité des opérateurs
Nous conviendrons que :
• l‟opérateur opposé –(monadyque) est
prioritaire sur tous les autres ;
• viennent ensuite au même niveau les
opérateurs * et / ;
• enfin, au dernier niveau, on trouve les
opérateurs + et –(dyadique).
Cours d'Algorithmique par
Tindano Olivier 47
2. Priorité des opérateurs
Enfin, des parenthèses permettront
d‟outrepasser ces règles de priorité,
en forçant le calcul préalable de
l‟expression qu‟elles contiennent.
Notez que ces parenthèses peuvent
également être employées pour
assurer une meilleure lisibilité d‟une
expression.
Cours d'Algorithmique par
Tindano Olivier 48
2. Priorité des opérateurs
Parenthèses superflues
a + b * c ou a + ( b * c )
2 * n + p ou (2 * n ) + p
-a+b ou (- a) + b
- a / - b + c ou ( ( - a ) / ( - b ) ) + c
- a / - ( b + c ) ou ( - a ) / ( - ( b + c ) )
Cours d'Algorithmique par
Tindano Olivier 49
2. Priorité des opérateurs
Exercice 1.5
En supposant que les variables n, p et q sont de
type entier et qu‟elles contiennent respectivement
les valeurs 8, 13 et 29, déterminer les valeurs des
expressions suivantes :
n+p/q
n+q/p
(n + q) / p
n+p/n+p
(n + p) / (n + p)
Cours d'Algorithmique par
Tindano Olivier 50
2. Priorité des opérateurs
Exercice 1.6 Que font ces instructions ?
entier n, p, q
n := 5
p := 5
q := n / (n-p)
Exercice 1.7 Que font ces instructions ?
entier n, p
n := 10
p := 4
n := n * p ;
p := n / p
Cours d'Algorithmique par
Tindano Olivier 51
Cours d'Algorithmique par
Tindano Olivier 52
Cours d'Algorithmique par
Tindano Olivier 53
Cours d'Algorithmique par
Tindano Olivier 54
Cours d'Algorithmique par
Tindano Olivier 55
Structured'un algorithme
La Séquence
Instructions dans l'ordre dans lequel elles
apparaissent (énumération)
Cours d'Algorithmique par
Tindano Olivier 56
1. La structure conditionnelle
Les exemple précédents montrent des algorithmes
dont les instructions doivent s'exécuter dans
l'ordre, de la première à la dernière. Nous allons
introduire une instruction précisant que le
déroulement ne sera plus séquentiel. Cette
instruction est appelée une conditionnelle. Il s'agit
de représenter une alternative où, selon les cas, un
bloc d'instructions est exécuté plutôt qu'un autre.
La syntaxe de cette instruction est :
si condition
alors liste d'instructions
sinon liste d'instructions
finsi
Cours d'Algorithmique par
Tindano Olivier 57
1. La structure conditionnelle
Les structures de contrôle conditionnelles,
Cette instruction est composé de trois partie distinctes :
la condition introduite par si, la clause alors et la
clause sinon. La condition est une expression dont la
valeur est de type booléen. Elle est évaluée. Si elle est
vraie, les instructions de la clause alors sont
exécutées. Dans le cas contraire, les instructions de la
clause sinon sont exécutées.
On peut utiliser une forme simplifiée de la
conditionnelle, sans clause sinon. La syntaxe est alors
si condition
alors liste d'instructions
finsi
Cours d'Algorithmique par
Tindano Olivier 58
Structure d'un algorithme
La structure conditionnelle (ou alternative)
SI (condition) ALORS (instructions 1) SINON
(instructions 2) FIN SI
SINON est facultatif.
Si la condition énoncée est réalisée faire
instructions 1 sinon faire instructions 2.
Cours d'Algorithmique par
Tindano Olivier 59
Cours d'Algorithmique par
Tindano Olivier 60
Cours d'Algorithmique par
Tindano Olivier 61
Si il fait trop chaud ET il ne pleut pas Alors
Ouvrir la fenêtre
Sinon
Fermer la fenêtre
Finsi
Ou alors équivalent
Si il ne fait pas trop chaud OU il pleut Alors
Fermer la fenêtre
Sinon
Ouvrir la fenêtre
Finsi
Cours d'Algorithmique par
Tindano Olivier 62
Exercice
Écrire un programme qui donne des valeurs à
deux variables entières nommées a et b, et
qui en affiche les valeurs, le produit et la
somme, sous cette forme :
a = 3, b = 5
a*b = 15
a+b = 8
Cours d'Algorithmique par
Tindano Olivier 63
Exercice : Solution
Variable :entier a, b
Début
a := 3
b := 5
écrire " a = ", a, " b = ", b
écrire " a*b = ", a*b
écrire " a+b = ", a+b
Fin
Cours d'Algorithmique par
Tindano Olivier 64
Cours d'Algorithmique par
Tindano Olivier 65
EXEMPLE
Ecrire un algorithme qui permet d„afficher le
résultat d'un étudiant à un module sachant
que ce module est sanctionné par une note
d'oral de coefficient 1 et une note d'écrit de
coefficient 2. La moyenne obtenue doit être
supérieure ou égale à 10 pour valider le
module.
Cours d'Algorithmique par
Tindano Olivier 66
Les structures de contrôle conditionnelles,
Données : la note d'orale et la note d'écrit
Résultat : impression du résultat pour le
module (reçu ou refusé)
Principe : on calcule la moyenne et on la
compare à 10
Cours d'Algorithmique par
Tindano Olivier 67
Les structures de contrôle conditionnelles,
Les structures de contrôle conditionnelles,
Algorithme
VARIABLE Moy,ne,no: Réel
début
ne := lire( )
no := lire( )
moy := (2 * ne + no)/3
si moy < 10
alors écrire (« ECHEC »)
sinon écrire (« RECU »)
finsi
fin
Lexique
- ne : réel, note d'écrit (coefFicient 2)
- no : réel, note d'oral (coefficient 1)
- moy : réel, moyenne du module
Cours d'Algorithmique par
Tindano Olivier 68
Les structures de contrôle conditionnelles,
Exemple: Supposons par exemple que l‟on
souhaite écrire un programme qui lit deux
nombres et une lettre. Si cette lettre est un s
(pour somme), il calcule et écrit la somme des
deux nombres ;dans le cas contraire, il
calcule et écrit le produit. Ce programme
pourrait commencer de cette
manière :
Cours d'Algorithmique par
Tindano Olivier 69
Les structures de contrôle conditionnelles,
Exemple: Il nous faut alors examiner la condition op = ‟s‟ et, si elle est vraie,
exécuter ces deux instructions :
entier a, b, res
caractère op
écrire «donnez deux entiers et un caractère :»
lire a, b, op
si op = ‟s‟ alors
{
res := a + b
écrire " somme= ", res
}
sinon
{
res := a * b
écrire " produit= ", res
}
Cours d'Algorithmique par
Tindano Olivier 70
Les structures de contrôle conditionnelles
entier a, b, res
caractère op
Début
écrire «donnez deux entiers et un caractère :»
lire a, b, op
si op = ‟s‟ alors
res := a + b
écrire «somme=», res
Sinon
res := a * b
écrire «produit=», res
écrire «fin du programme»
Fin
donnez deux entiers et un caractère :
15 25 s
somme=40
fin du programme
Cours d'Algorithmique par
Tindano Olivier 71
Expression Booléenne
Si booléen Alors
Instructions
Finsi
Si booléen Alors
Instructions 1
Sinon
Instructions 2
Finsi
Cours d'Algorithmique par
Tindano Olivier 72
Expression Booléenne
Ceci mérite quelques explications.
Un booléen est une expression dont la valeur est
VRAI ou FAUX. Cela peut donc être (il n‟y a que
deux possibilités) :
une variable (ou une expression) de type booléen
une condition
Cours d'Algorithmique par
Tindano Olivier 73
Expression Booléenne
Qu‟est ce qu‟une condition ?
Une condition est une comparaison
Cette définition est essentielle ! Elle signifie qu‟une
condition est composée de trois éléments :
une valeur
un opérateur de comparaison
une autre valeur
Les valeurs peuvent être a priori de n‟importe quel
type (numériques, caractères…). Mais si l‟on veut
que la comparaison ait un sens, il faut que les deux
valeurs de la comparaison soient du même type !
Cours d'Algorithmique par
Tindano Olivier 74
Expression Booléenne
Qu‟est ce qu‟une condition ?
Les opérateurs de comparaison sont :
égal à…
différent de…
strictement plus petit que…
strictement plus grand que…
plus petit ou égal à…
plus grand ou égal à…
Cours d'Algorithmique par
Tindano Olivier 75
Expression Booléenne
Qu‟est ce qu‟une condition ?
Exemple
“t” < “w” 116<119 VRAI
“Maman”(490) > “Papa“(386) VRAI
“maman”(522) > “papa” (418) VRAI
Cours d'Algorithmique par
Tindano Olivier 76
Expression Booléenne
Exemple
Allez tout droit jusqu‟au prochain carrefour
Si la rue à droite est autorisée à la circulation
Alors
Tournez à droite
Avancez
Prenez la deuxième à gauche
Sinon
Continuez jusqu‟à la prochaine rue à droite
Prenez cette rue
Prenez la première à droite
Finsi
Cours d'Algorithmique par
Tindano Olivier 77
Correction Test de Niveau1
Exo3
Variable Age en Entier
Début
Ecrire "Entrez l‟âge de l‟enfant : "
Lire Age
Si Age >= 12 Alors
Ecrire "Catégorie Cadet"
SinonSi Age >= 10 Alors
Ecrire "Catégorie Minime"
SinonSi Age >= 8 Alors
Ecrire "Catégorie Pupille"
SinonSi Age >= 6 Alors
Ecrire "Catégorie Poussin"
Finsi
Fin
Cours d'Algorithmique par
Tindano Olivier 78
Exercice 4.1 Lire deux nombres entiers et
déterminer s‟il sont rangés ou non par ordre
croissant.
Exercice 4.2 Lire deux nombres entiers.
Déterminer s‟ils sont rangés ou non par ordre
croissant et, dans tous les cas, afficher leur
différence (entre le plus grand et le plus petit).
Cours d'Algorithmique par
Tindano Olivier 79
Correction Test de Niveau1
Exo4
entier a, b, c
écrire " donnez 3 nombres entiers "
lire a, b, c
si a<b et b<c alors écrire " ils sont rangés par
ordre croissant "
sinon écrire " ils ne sont pas rangés par ordre
croissant "
Cours d'Algorithmique par
Tindano Olivier 80
Correction Test de Niveau1
Exo4
Début
entier a, b, dif
écrire «donnez deux nombres entiers»
lire a, b
si a<=b alors { écrire «ils sont rangés par ordre croissant»
dif := b-a
}
sinon { écrire «ils ne sont pas rangés par ordre croissant»
dif := a-b
}
écrire «et leur différence est : », dif
fin
Cours d'Algorithmique par
Tindano Olivier 81
Structures conditionnelles
Exemple
Voici un programme qui lit un nombre entier et qui
précise s‟il est ou non compris entre 10
(exclus) et 20 (inclus).
entier n
écrire " donnez un nombre entier : "
lire n
si (n > 10) et (n <= 20) alors écrire " dans la fourchette "
sinon écrire " en dehors de la fourchette "
--------Affichage------------
donnez un nombre entier :
26
en dehors de la fourchette
Cours d'Algorithmique par
Tindano Olivier 82
Structures conditionnelles
Exemple
Supposez que, dans un programme de calcul
d‟une facture, il nous faille effectuer une remise
de 1% lorsque son montant dépasse 2000 Franc
CFA
Cours d'Algorithmique par
Tindano Olivier 83
Exo4
Ecrire un algorithme qui calcule la surface et le
périmètre d‟un cercle.
Cours d'Algorithmique par
Tindano Olivier 84
Solution EXO4
PROGRAMME CERCLE
VARIABLE
r, PI, surface,perimetre:Réels
DEBUT
PI←3,1415927(constante)
r←5,2
surface←PI * r * r
perimetre←2 * PI * r
Afficher surface,perimetre
FIN
Cours d'Algorithmique par
Tindano Olivier 85
EXO5
Ecrire un algorithme qui calcule la solution
d‟une équation du second degré
ax²+bx+c=0
Δ=b²-4ac
Cours d'Algorithmique par
Tindano Olivier 86
SOLUTION EXO5
PROGRAMME EQUATION
VARIABLES
a,b,c,delta,x1,x2 :réels
DEBUT
a←3
b←6
c←-10
delta←( b * b ) - ( 4 * a * c )
x1←( -b + racine(delta) ) / ( 2 * a )
x2←( -b - racine(delta) ) / ( 2 * a )
Afficher "les résultats sont :"
Afficher "x1=",x1
Afficher "x2=",x2
FIN
Cours d'Algorithmique par
Tindano Olivier 87
Exo6
Les élections législatives, dans le Gondwana, obéissent à la
règle suivante :
• lorsque l'un des candidats obtient plus de 50% des suffrages,
il est élu dès le premier tour.
• en cas de deuxième tour, peuvent participer uniquement les
candidats ayant obtenu au moins 12,5% des voix au premier
tour.
Vous devez écrire un algorithme qui permette la saisie des
scores de quatre candidats au premier tour. Cet algorithme
traitera ensuite le candidat numéro 1 (et uniquement lui) : il
dira s'il est élu, battu, s'il se trouve en ballottage favorable (il
participe au second tour en étant arrivé en tête à l'issue du
premier tour) ou défavorable (il participe au second tour sans
avoir été en tête au premier tour).
Cours d'Algorithmique par
Tindano Olivier 88
Exo7
Calcul de remise :
Ecrire un programme qui détermine un
montant net à partir d‟un montant brut (entré
par l‟utilisateur) en appliquant une remise de
:
• 5% si le montant brut est compris entre 200
et 500 FCFA
• 10% si le montant brut est supérieur à 500
FCFA
Cours d'Algorithmique par
Tindano Olivier 89
2)Les structures de contrôle répétitives
a) Les répétitions conditionnelles(ou «
indéfinies ») : la poursuite de la répétition
des instructions concernées dépend d‟une
certaine condition qui peut être examinée :
– soit après les instructions à répéter : on parle
généralement de répétition jusqu‟à ;
– soit avant les instructions à répéter : on parle
généralement de répétition tant que.
Cours d'Algorithmique par
Tindano Olivier 90
2)Les structures de contrôle répétitives
b) Les répétitions inconditionnelles
Ils sont ou « avec compteur » ou « définies » :
les instructions concernées sont répétées un
nombre donné de fois.
Cours d'Algorithmique par
Tindano Olivier 91
i) La répétition jusqu‟à‟
Exemple: voici un exemple introductif
entier n
Début
répéter
écrire «donnez un nombre entier :»
lire n
écrire «voici son carré : », n*n
jusqu‟à n = 0
écrire «fin du programme»
Fin
Cours d'Algorithmique par
Tindano Olivier 92
i) La répétition jusqu‟à‟
Les mots répéter et jusqu‟à encadrent le bloc
d‟instructions :
écrire «donnez un nombre entier :»
lire n
écrire «voici son carré : », n*n
Ils signifient que ces instructions doivent être
répétées autant de fois qu‟il est nécessaire et
ceci jusqu‟à ce que la condition n=0 soit vraie.
Cours d'Algorithmique par
Tindano Olivier 93
i) La répétition jusqu‟à‟
Exemple d‟exécution pour les valeurs 3, 12 et 0
donnez un nombre entier :
3
voici son carré : 9
donnez un nombre entier :
12
voici son carré : 144
donnez un nombre entier :
0
voici son carré : 0
fin du programme
Cours d'Algorithmique par
Tindano Olivier 94
i) La répétition jusqu‟à‟
Convention d‟écriture
répéter
instruction
jusqu‟à condition
• instruction : instruction de base, bloc
d‟instructions ou instruction structurée telle
que choix ou une boucle
• condition : expression booléenne.
Cours d'Algorithmique par
Tindano Olivier 95
i) La répétition jusqu‟à‟
Écrire un programme qui demande à
l‟utilisateur de lui fournir un nombre entier
positif et inférieur à 100 et ceci jusqu‟à ce que
la réponse soit satisfaisante. Le dialogue avec
l‟utilisateur se présentera ainsi :
donnez un entier positif inférieur à 100 :
453
donnez un entier positif inférieur à 100 :
25
merci pour le nombre 25
Cours d'Algorithmique par
Tindano Olivier 96
i) La répétition jusqu‟à‟
Exemple: solution
nombre: Entier
répéter
{ écrire «donnez un entier positif inférieur à 100»
lire nombre
}
jusqu‟à nombre>0 et nombre<100
écrire «merci pour le nombre », nombre
Cours d'Algorithmique par
Tindano Olivier 97
ii)La répétition Tant que
TantQue booléen ou expréssion
…
Instructions
…
FinTantQue
Cours d'Algorithmique par
Tindano Olivier 98
ii)La répétition Tant que
Variable Rep en Caractère
Début
Ecrire "Voulez vous un café ? (O/N)"
Lire Rep
TantQue Rep != "O" et Rep != "N"
Ecrire "Vous devez répondre par O ou N.
Recommencez"
Lire Rep
FinTantQue
Ecrire "Saisie acceptée"
Fin
Cours d'Algorithmique par
Tindano Olivier 99
ii)La répétition Tant que
1) Boucler en comptant, ou compter en bouclant
Variable Truc en Entier
Début
Truc ← 0
TantQue Truc < 15
Truc ← Truc + 1
Ecrire "Passage numéro : ", Truc
FinTantQue
Fin
Cours d'Algorithmique par 10
Tindano Olivier 0
iii)La répétition Pour
Variable Truc en Entier
Début
Pour Truc ← 1 à 15
Ecrire "Passage numéro : ", Truc
Truc Suivant
Fin
Truc Suivant idem Truc ← Truc+1
Pour Compteur ← Initial à Final Pas ValeurDuPas
…
Instructions
…
Compteur suivant
Cours d'Algorithmique par 10
Tindano Olivier 1
iii)La répétition Pour
Application1
Ecrire un algorithme qui demande un nombre de
départ, et qui ensuite écrit la table de
multiplication de ce nombre, présentée comme
suit (cas où l'utilisateur entre le nombre 7) :
Table de 7 :
7x1=7
7 x 2 = 14
7 x 3 = 21
…
7 x 10 = 70
Cours d'Algorithmique par 10
Tindano Olivier 2
iii)La répétition Pour
Réponse Application1
Variables N, i en Entier
Debut
Ecrire "Entrez un nombre : "
Lire N
Ecrire "La table de : " ,N
Pour i ← 1 à 10
Ecrire N, " x ", i, " = ", N*i
i Suivant
FinPour
Fin
Cours d'Algorithmique par 10
Tindano Olivier 3
iii)La répétition Pour
Application2
Ecrire un algorithme qui demande un nombre
de départ, et qui calcule la somme des
entiers jusqu‟à ce nombre. Par exemple, si
l‟on entre 5, le programme doit calculer :
1+2+3+4+5
Cours d'Algorithmique par 10
Tindano Olivier 4
iii)La répétition Pour
Réponse Application2
Variables N, i, Som en Entier
Debut
Ecrire "Entrez un nombre : "
Lire N
Som ← 0
Pour i ← 1 à N
Som ← Som + i
i Suivant
Ecrire "La somme est : ", Som
Fin
Cours d'Algorithmique par 10
Tindano Olivier 5
iii)La répétition Pour
Application3
Ecrire un algorithme qui demande un nombre
de départ, et qui calcule sa factorielle.
NB : la factorielle de 8, notée 8 !, vaut
1x2x3x4x5x6x7x8
Cours d'Algorithmique par 10
Tindano Olivier 6
iii)La répétition Pour
Réponse Application3
Variables N, i, F en Entier
Debut
Ecrire "Entrez un nombre : "
Lire N
F←1
Pour i ← 2 à N
F←F*i
i Suivant
Ecrire "La factorielle est : ", F
Fin
Cours d'Algorithmique par 10
Tindano Olivier 7
iv)Les Tableaux
a) Imaginons que dans un programme, nous
ayons besoin simultanément de 12 valeurs
(par exemple, des notes pour calculer une
moyenne). Evidemment, la seule solution
dont nous disposons actuellement consiste
à déclarer douze variables, appelées par
exemple Note1, Note2, Note3, etc
Moy← (N1+N2+N3+N4+N5+N6+N7+N8+N9+N10+N11+N12)/12
Cours d'Algorithmique par 10
Tindano Olivier 8
iv)Les Tableaux
b. Notation et utilisation algorithmique
Un tableau doit être déclaré comme tel, en
précisant le nombre et le type de valeurs qu‟il
contiendra.
Tableau Note(11) en Entier
les "cases" sont numérotées à partir de zéro,
autrement dit ; le plus petit indice est zéro. lors
de la déclaration d'un tableau, on précise la
plus grande valeur de l'indice (différente, donc,
du nombre de cases du tableau, puisque si on
veut 12 emplacements, le plus grand indice
sera 11)
Cours d'Algorithmique par 10
Tindano Olivier 9
iv)Les Tableaux
Réponse à notre problème
Tableau Note(11) en Numérique
Variables Moy, Som en Numérique
Début
Pour i ← 0 à 11
Ecrire "Entrez la note n°", i
Lire Note(i)
i Suivant
FinPour
Som ← 0
Pour i ← 0 à 11
Som ← Som + Note(i)
i Suivant
FinPour
Moy ← Som / 12
Fin
Cours d'Algorithmique par 11
Tindano Olivier 0
iv)Les Tableaux
c. Tableaux dynamiques
Il arrive fréquemment que l‟on ne connaisse pas à
l‟avance le nombre d‟éléments que devra
comporter un tableau
Aussi, pour parer à ce genre de situation, a-t-on la
possibilité de déclarer le tableau sans préciser au
départ son nombre d‟éléments. Ce n‟est que dans un
second temps, au cours du programme, que l‟on va
fixer ce nombre via une instruction de
redimensionnement : Redim.
Notez que tant qu‟on n‟a pas précisé le nombre
d‟éléments d‟un tableau, d‟une manière ou d‟une
autre, ce tableau est inutilisable.
Cours d'Algorithmique par 11
Tindano Olivier 1
iv)Les Tableaux
c. Tableaux dynamiques
Tableau Notes() en Numérique
Variable nb en Numérique
Début
Ecrire "Combien y a-t-il de notes à saisir ?"
Lire nb
Redim Notes(nb-1)
…………
Cours d'Algorithmique par 11
Tindano Olivier 2
iv)Les Tableaux
Application1
Ecrire un algorithme qui déclare et remplisse un
tableau de 7 valeurs numériques en les mettant
toutes à zéro.
Cours d'Algorithmique par 11
Tindano Olivier 3
iv)Les Tableaux
Rép Application1
Tableau Tab(6) en Numérique
Variable i en Numérique
Debut
Pour i ← 0 à 6
Tab(i) ← 0
i Suivant
Fin
Cours d'Algorithmique par 11
Tindano Olivier 4
iv)Les Tableaux
Application2
Ecrire un algorithme qui déclare et remplisse un
tableau contenant les six voyelles de l‟alphabet
latin.
Cours d'Algorithmique par 11
Tindano Olivier 5
iv)Les Tableaux
Rép Application2
Tableau Truc(5) en Caractère
Debut
Truc(0) ← "a"
Truc(1) ← "e"
Truc(2) ← "i"
Truc(3) ← "o"
Truc(4) ← "u"
Truc(5) ← "y"
Fin
Cours d'Algorithmique par 11
Tindano Olivier 6
v) Les Tableaux à plusieurs dimensions
a) Tableau à deux dimensions
Un tel tableau se déclare ainsi :
Tableau Cases(7, 7) en Numérique
Cela veut dire : réserve moi un espace de mémoire pour 8 x 8 entiers,
et quand j‟aurai besoin de l‟une de ces valeurs, je les repèrerai par
deux indices
Application1: Ecrivez un algorithme remplissant un tableau de 6 sur
13, avec des zéros.
Tableau Truc(5, 12) en Entier
Debut
Pour i ← 0 à 5
Pour j ← 0 à 12
Truc(i, j) ← 0
j Suivant
i Suivant
Fin
Cours d'Algorithmique par 11
Tindano Olivier 7
v) Les Tableaux à plusieurs dimensions
a) Tableau à deux dimensions
Application2:
Quel résultat produira cet algorithme ?
Tableau X(1, 2) en Entier
Variables i, j, val en Entier
Début
Val ← 1 Cet algorithme remplit un tableau de la manière
Pour i ← 0 à 1
Pour j ← 0 à 2 suivante:
X(i, j) ← Val
Val ← Val + 1 X(0, 0) = 1
j Suivant X(0, 1) = 2
i Suivant
Pour i ← 0 à 1 X(0, 2) = 3
Pour j ← 0 à 2 X(1, 0) = 4
Ecrire X(i, j) X(1, 1) = 5
j Suivant X(1, 2) = 6
i Suivant
Fin
Cours d'Algorithmique par 11
Tindano Olivier 8
v) Les Tableaux à plusieurs dimensions
b) Tableau à n dimensions
Si vous avez compris le principe des tableaux à deux
dimensions, sur le fond, il n‟y a aucun problème à
passer au maniement de tableaux à trois, quatre, ou
pourquoi pas neuf dimensions. C‟est exactement la
même chose. Si je déclare un tableau Toto(2, 4, 3, 3), il
s‟agit d‟un espace mémoire contenant 3 x 5 x 4 x 4 =
240 valeurs. Chaque valeur y est repérée par quatre
coordonnées.
Cours d'Algorithmique par 11
Tindano Olivier 9
1) Les Fonctions et les procédures
a) Définition
Exemple: Supposons ces instructions:
écrire «Nombre de points obtenus»
écrire «au cours de cette partie»
La notion de fonction nous permet de regrouper ces deux
instructions sous un nom unique,par exemple message. Ici, nous
conviendrons de les placer dans un bloc (nommé corps de la
fonction) précédé d‟une ligne (nommée en-tête de la fonction)
précisant le nom choisi :
fonction message // en-tête
Début
écrire «Nombre de points obtenus» // corps de la fonction
écrire «au cours de cette partie»
FinFonction
Cours d'Algorithmique par 12
Tindano Olivier 0
1) Les Fonctions et les procédures
a) Définition
Il suffira alors d‟une simple instruction dite d‟appel de
cette fonction, telle que :
Message pour provoquer l‟exécution des instructions
qu‟elle contient. Ainsi, notre programme précédent
pourra-t‟il se simplifier comme suit// le programme
précédent utilisant la fonction message
Début
.....
Message
Fin
Cours d'Algorithmique par 12
Tindano Olivier 1
1) Les Fonctions et les procédures
b) Notion de paramètres
Considérons maintenant un programme contenant
ces instructions :
// un exemple de programme sans fonction
entier n := 20, p := 25
écrire «Nombre de points obtenus : »
écrire n
.....
écrire «Nombre de points obtenus : »
écrire p
.....
Cours d'Algorithmique par 12
Tindano Olivier 2
1) Les Fonctions et les procédures
b) Notion de paramètres
On voit que les instructions ne diffèrent que par la
valeur affichée (celle de n, puis celle
de p)
Là encore, nous allons pouvoir en faire une fonction,
nommée par exemple affiche, mais cette fois, celle-ci
devra disposer de ce que l‟on nomme un paramètre :
il s‟agit d‟une valeur qu‟on transmet à la fonction au
moment de son appel. Nous conviendrons que cet
appel seprésentera ainsi :
affiche (x) // x : valeur entière à fournir à la fonction
Cours d'Algorithmique par 12
Tindano Olivier 3
1) Les Fonctions et les procédures
b) Notion de paramètres
// le programme précédent utilisant la fonction
affiche
entier n := 20, p := 25
affiche (n) // appel de la fonction affiche, avec
en paramètre la valeur de n
.....
affiche (p) // appel de la fonction affiche, avec
en paramètre la valeur de p
.....
Cours d'Algorithmique par 12
Tindano Olivier 4
1) Les Fonctions et les procédures
b) Notion de paramètres
fonction affiche (entier nb) // ici nb représente la
//valeur entière qui sera fournie en paramètre lors
//de l‟appel
Début
écrire «Nombre de points obtenus : »
écrire nb
FinFonction
L‟en-tête précise que la fonction s‟attend à recevoir un
paramètre de type entier et que sa valeur sera
désignée par le symbole nb dans les instructions de
la fonction. Ce symbole s‟utilisera alors comme un
nom de variable usuel
Cours d'Algorithmique par 12
Tindano Olivier 5
1) Les Fonctions et les procédures
b) Notion de paramètres
// le programme précédent utilisant la fonction affiche
entier n := 20, p := 25
affiche (n) // appel de la fonction affiche, avec en paramètre la
valeur de n
.....
affiche (p) // appel de la fonction affiche, avec en paramètre la
valeur de p
.....
// définition de la fonction affiche
fonction affiche (entier nb) // ici nb représente la valeur entière
qui
// sera fournie en paramètre lors de l‟appel
{ écrire «Nombre de points obtenus : »
écrire nb
}
Exemple de fonction disposant d‟un paramètre
Cours d'Algorithmique par 12
Tindano Olivier 6
1) Les Fonctions et les procédures
b) Notion de paramètres
i. Paramètres formels ou effectifs
Les paramètres figurant dans l‟en-tête d‟une fonction se nomment des
paramètres formels.
Ceux fournis lors de l‟appel de la fonction se nomment paramètres
effectifs
Dans l‟exemple du paragraphe précédent, le paramètre effectif était
une variable (n, puis p), mais on pourrait très bien utiliser une
constante ou une expression, comme dans :
affiche (5)
affiche (2*n + 3)
Cours d'Algorithmique par 12
Tindano Olivier 7
1) Les Fonctions et les procédures
b) Notion de paramètres
i. Paramètres formels ou effectifs
Les paramètres figurant dans l‟en-tête d‟une fonction se nomment des
paramètres formels.
Ceux fournis lors de l‟appel de la fonction se nomment paramètres
effectifs
Dans l‟exemple du paragraphe précédent, le paramètre effectif était
une variable (n, puis p), mais on pourrait très bien utiliser une
constante ou une expression, comme dans :
affiche (5)
affiche (2*n + 3)
Cours d'Algorithmique par 12
Tindano Olivier 8
1) Les Fonctions et les procédures
b) Notion de paramètres
i. Paramètres formels ou effectifs
Une telle liberté (variable, constante, expression) n‟aurait
aucun sens pour les paramètres formels. Ainsi, on ne
pourrait pas écrire l‟en-tête de affiche, sous l‟une de
ces formes :
affiche (entier nb +5) // en-tête incorrrect
affiche (entier 3) // en-tête incorrrect
pas plus qu‟en mathématiques, on ne peut définir une
fonction f par f(nb+5)=8 ou f(5)=12 !
Cours d'Algorithmique par 12
Tindano Olivier 9
1) Les Fonctions et les procédures
b) Notion de paramètres
ii) Notion de variable locale
// programme utilisant la fonction salut
écrire «Utilisons une première fois la fonction salut»
salut (3)
écrire «Utilisons une seconde fois la fonction salut»
salut (2)
// la fonction salut
fonction salut (entier n)
{ entier i
répéter pour i := 1 à n
écrire «bonjour à tous»
}
Mais nous voyons que nous avons besoin en outre d‟une variable
entière i destinée à jouer le rôle de compteur dans notre boucle
pour. Nous conviendrons qu‟il est possible de la déclarer dans les
instructions de la fonction et nous dirons qu‟il s‟agit d‟une variable
locale à la fonction.
Cours d'Algorithmique par 13
Tindano Olivier 0
1) Les Fonctions et les procédures
b) Notion de paramètres
iii) Application
Écrivez une fonction qui renvoie la somme de cinq
nombres entier fournis en argument.
Fonction Sum(entier a, b, c, d, e)
Renvoyer a + b + c + d + e
FinFonction
Cours d'Algorithmique par 13
Tindano Olivier 1
1) Les Fonctions et les procédures
c) Exemple de fonctions à plusieurs paramètres
Cette fonction renvoie le maximum de trois nombres passés en
paramètre
entier fonction max (entier a, entier b, entier c)
{ entier m
m := a
si b > m alors m := b
si c > m alors m := c
retourne m
}
Cours d'Algorithmique par 13
Tindano Olivier 2
1) Les Fonctions et les procédures
c) Exemple de fonctions à plusieurs paramètres
// programme utilisant la fonction max
entier n, p, q, m
n := 3
p := 5
q := 2
m := max (n, p, q)
écrire «maximum de », n, p, «et », q, « = » , m
m := max (2*n, p, q+2)
écrire «maximum de », 2*n, p, «et », q+2, « = », m
// la fonction max
entier fonction max (entier a, entier b, entier c)
{ entier m
m := a
si b > m alors m := b
si c > m alors m := c
Cours d'Algorithmique par 13
retourne m Tindano Olivier 3
1) Les Fonctions et les procédures
c) Exemple de fonctions à plusieurs paramètres
Résultat
maximum de 3 5 et 2 = 5
maximum de 6 5 et 4 = 6
Cours d'Algorithmique par 13
Tindano Olivier 4
2) Différence entre Les Fonctions et les procédures
En informatique, une fonction est une portion de code
effectuant une tâche ou un calcul relativement indépendant
du reste du programme, et qui peut renvoyer une valeur ou
un compte-rendu d'exécution.
En programmation impérative, une fonction comporte une
séquence d'instructions réalisant un calcul ou une tâche. En
programmation fonctionnelle, la fonction est l'artifice qui
permet de découper le problème global en éléments plus
simples
Une fonction qui ne renvoie aucun résultat se nomme
procédure (ou sous-programme).
Une fonction s'appelant elle-même se nomme fonction
récursive.
Cours d'Algorithmique par 13
Tindano Olivier 5
2) Introduction a la récursivité
Faire une fonction qui calcul le factoriel d‟un entier naturel n positif
entré au clavier. Ça se note n!
Exemple Classique
entier Fonction fact1(n:entier )
début
Entier j
j := 1
si n sup 0 alors
Pour i allant de 2 à n Faire
j := j*i
i Suivant
FinPour
Retourner j
fin
Cours d'Algorithmique par 13
Tindano Olivier 6
2) Introduction a la récursivité
Définition
Si l‟on doit programmer cela, on peut alors imaginer une
fonction Fact, chargée de calculer la factorielle. Cette fonction
effectue la multiplication du nombre passé en argument par
la factorielle du nombre précédent. Et cette factorielle du
nombre précédent va bien entendu être elle-même calculée
par la fonction Fact.
Autrement dit, on va créer une fonction qui pour fournir son
résultat, va s‟appeler elle-même un certain nombre de fois.
C‟est cela, la récursivité.
Cours d'Algorithmique par 13
Tindano Olivier 7
2) Introduction a la récursivité
Fonction factorielle
Fonction Fact (N en Numérique)
Si N = 0 alors
Renvoyer 1
Sinon
Renvoyer Fact(N-1) * N
Finsi
Fin Fonction
Cours d'Algorithmique par 13
Tindano Olivier 8
2) Introduction a la récursivité
Conclusion
Pour conclure sur la récursivité, trois remarques fondamentales.
la programmation récursive, pour traiter certains problèmes,
est très économique pour le programmeur ; elle permet de
faire les choses correctement, en très peu d'instructions.
en revanche, elle est très dispendieuse de ressources
machine. Car à l‟exécution, la machine va être obligée de
créer autant de variables temporaires que de « tours » de
fonction en attente.
tout problème formulé en termes récursifs peut également
être formulé en termes itératifs !
Cours d'Algorithmique par 13
Tindano Olivier 9