Vous êtes sur la page 1sur 53

2ème Année «Années

ALGORITHMIQUE Préparatoires Intégrés»


2018/2019
Dep. Génie Industriel
Pf. CHERGUI Adil

Aeronautics and Aerospace club of ENSAM Casablanca


Objectifs du chapitre :

CHAPITRE 2
LE PSEUDO-CODE
Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 2
chapitre 2
DÉFINITIONS

Qu’est-ce qu’un Pseudo-code ? Qu’est ce que veut dire « écrire un


algorithme »?
• Le pseudocode est un langage pour exprimer • Analyser et comprendre le problème :
clairement et formellement un algorithme. Etude des données fournies et des résultats
Ce langage est près d'un langage de attendus.
programmation comme Java, C ou C++, sans
• Résoudre le problème :
être identique à l'un ou à l'autre. Il exprime
C’est trouver les structures de données
des idées formelles dans une langue près du
adaptées ainsi que l’enchaînement des
langage naturel de ses usagers (pour nous, le
actions à réaliser pour passer des données
français) en lui imposant une forme
(entrées) aux résultats(sorties).
rigoureuse.

Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 3


chapitre 2
MISE EN FORME D’UN ALGORITHME

Le modèle à respecter

ALGORITHME <nom_algorithme> • Un algorithme doit porter un nom (il est


désirable qu’il soit significatif et réduit).
<déclarations_variables>
• Juste après la déclaration de variables pour
DEBUT
stocker les données.
<instructions>
• Les mots clés doivent être écrites en
FIN majuscule.
• Entre DEBUT et FIN nous mettons l’ensemble
des instructions qui résous le problème.

Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 4


chapitre 2
LES VARIABLES 1/3

Définition des variables Déclaration

Une variables est définies par : La déclaration des variables :


• Un identificateur : suite quelconque de <id1> : TYPE
caractères.
Si plusieurs variables ont le même type nous
• Un type : Booléen, numérique (entier ou pouvons les regrouper :
réel), caractère ou chaîne de caractères.
<id2>,<id3>… : TYPE
• Une valeur : c'est le contenu de l'objet

Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 5


chapitre 2
LES VARIABLES 2/3

Exemple de déclaration de
Les types de variables variables
ALGORITHME : Prix_du_pain
Nom : CHAINE
Types possibles de variables :
Nb : ENTIER
– ENTIER (ex : 14, -138) Prx, Qt, Tot : REEL
– REEL (ex : 3.14, 126.45) DEBUT

– BOOLEEN (Vrai/Faux ou True/False) Instruction1


Instruction2
– CARACTERE (ex : 'a', 'H')
FIN
– CHAINE (ex : ''Bonjour'')

Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 6


chapitre 2
LES VARIABLES 3/3

Les identificateurs
4. Certains noms sont réservés pour les
compilateurs des langages de
Un identificateur est un nom donné à une programmation et ne doivent pas être
variable pour la différencier de toutes les donnés à des identificateurs de variables
autres. Et ce nom, c’est au programmeur de le
choisir. Cependant, il y a quelques limitations à 5. Les identificateurs peuvent être aussi longs
ce choix : que l’on désire, toutefois certains
compilateurs ne tiendra compte que des 32
1. On ne peut utiliser que les 26 lettres de premiers caractères.
l’alphabet latin, les chiffres et le caractère
underscore ( _ ) : pas d’accents, pas de 6. Le nom d'un variable doit être significatif.
ponctuation ni d’espaces. On devrait savoir immédiatement, à partir
de son nom, à quoi sert la variable ou la
2. Un identificateur ne peut pas commencer constante, et quel sens donner à sa valeur
par un chiffre.
3. Deux variables ne peuvent avoir le même
identificateur (le même nom)
Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 7
chapitre 2
AFFECTATION

Règles d’affectation Exemple


ALGORITHME : Prix_du_pain
Nom : CHAINE
• L'instruction d'affectation est l'opération qui
Car : CARACTERE
consiste à attribuer une valeur à une variable
pendant l'exécution du programme. Nb : ENTIER
Prx, Qt, Tot : REEL Une chaine de caractères
• En algorithmique on utilise un opérateur entre " "
d'affectation. Nous le notons ← dans le cadre DEBUT
Un seul caractère
de ce cours. Nom  "Mounir" entre ‘ ’
• L’affectation s’effectue de la droit vers la Car  ‘g’
gauche Prx  10.25 Noter que la virgule
• La valeur de l’expression droite (valeur ou Qt  6
dans la notation des
résultat de calcul) sera stocké dans la réels est noté par un
Tot  Prx* Qt
variable gauche. point « . » et non par
FIN «,»

Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 8


chapitre 2
LECTURE / AFFICHAGE

Définitions Exemple
ALGORITHME : Prix_du_pain
Prx, Qt, Tot : REEL
• Deux méthodes qui permettent de gérer les
DEBUT
entrés et sorties d’un algorithme sont : LIRE
et AFFICHER AFFICHER("donner la quantité de pains" )
LIRE(Qt)
• La méthode LIRE permet de lire des valeurs à
partir du clavier qui représente l’entrée d’un Prx  10.25
algorithme. Elle permet de récupérer la Qt  6
valeur taper au clavier et la stocker dans la
Tot  Prx* Qt
variable entre les parenthéses.
AFFICHER ("le prix total est :",Tot)
• La méthode AFFICHER permet d’afficher les
FIN
messages ou des valeurs de variables à
l’écran qui représente la sortie.

Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 9


chapitre 2
LES COMMENTAIRES

Définitions Exemple
ALGORITHME : Prix_du_pain
Prx, Qt, Tot : REEL
• Les commentaires servent à donner des
DEBUT
explications à une partie de votre pseudo-
code. AFFICHER("donner la quantité de pains" )
LIRE(Qt)
• Un commentaire doit être mis entre /* et */, Ceci est un
tous ce qui se trouve entre ces deux Prx  10.25 /* le prix d’unité*/ commentaire sur une
symboles est considéré comme un Qt  6 seule ligne
commentaire.
Tot  Prx* Qt /* ici nous calculons le
• Un commentaire n’affecte pas les prix totale*/
instructions de votre algorithme. AFFICHER ("le prix total est :",Tot)
Un commentaire sur
• Le commentaire peut s’écrire sur plusieurs FIN plusieurs lignes
lignes.

Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 10


chapitre 2
LES OPÉRATIONS 1/5

Les opérations arithmétiques

• Les opérateurs arithmétiques admis sont les Correct Incorrect


suivants :
pi ← 3.14159 π ← 3,14159
Notation Sens Remarques y ← 2 * x y ← 2x
en pseudocode per ← 2*r*pi vol ← 4/3π×rayon^3
a+b Addition
a-b Soustraction
a*b Produit
a/b Division Indéfini si b =0 L’opération modulo permet de
a%b Modulo Indéfini si b =0 calculer le reste de la division de a
par b, exemple :
17%5=2

Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 11


chapitre 2
LES OPÉRATIONS 2/5

Les opérations relationnelles

Notation Notation Sens


en pseudocode mathématique
a<b a<b a inférieur strictement à b
a>b a>b a supérieur strictement à b
a<=b a≤b a inférieur ou égale à b
a>=b a≥b a supérieur ou égale t à b
a=b a=b a égale à b
a!=b a≠b a différent de b
• Les opérateurs relationnelles permettent d’exprimer des comparaisons entre deux variables ou
expressions.
• Ils sont utilisés pour évaluer des conditions .
Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 12
chapitre 2
LES OPÉRATIONS 3/5

Les opérations logiques

• Les opérateurs logiques permettent • Il est possible de composer plusieurs


d ’exprimer des conditions composées de conditions avec des opérateurs logiques
plusieurs opérateurs relationnelles. différents :
• Les opérateurs logiques admis sont les ((x>=0)ET(x<=10))OU (x>100)
suivants :
:
Notation Sens Exemples
en pseudocode
c1 ET c2 Vrai seulement si c1 et c2 sont tous deux (x>=0)ET(x<=10)
(prix=100)ET(qt>=3)ET(res!=0)
vrais
c1 OU c2 Faux seulement si c1 et c2 sont tous deux (a<b)OU(c>d)
faux

NON c1 Vrai seulement si c1 est faux NON (a<0)


Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 13
chapitre 2
LES OPÉRATIONS 4/5

Priorité des opérations

• Il existe une priorité à respecter entre les


différents opérateurs que nous venons de
voir :
Exemples
Opérations Expression Résultat
NON a5*4+9 A29
Priorité croissante

L’operateurs * a plus de priorité que + donc


* / % l’opération 5*4 sera évaluée, le résultat 20
sera ensuite additionné a 9, l’affectation est
+ - la dernière opération effectuée car sa
= ≠ ≥ ≤ < > priorité est la plus faible.

OU Vrai si
20+x>10 L’addition + est plus prioritaire que >.
ET x>10

Aeronautics
 and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 14
chapitre 2
LES OPÉRATIONS 5/5

Usage de parenthèses Exemples


Expression normale Expression complètement parenthésée
• Pourquoi avoir défini une règle de priorité ? C'est
pour pouvoir écrire les expressions complexes de
manière plus simple, plus lisible. En effet, on peut 7+2*3 (7 + (2 * 3))
très bien se passer de ces règles et utiliser 1-2-3 ((1 - 2) - 3)
systématiquement des parenthèses pour bien
rendre compte de l'ordre dans lequel les 1+2*3/4 (1 + ((2 * 3) / 4))
opérations doivent être effectuées. 3*5-2+1-8/2*3 ((((3 * 5) - 2) + 1) - ((8 / 2) * 3))
• Si nous voulons forcer l'ordinateur à commencer
par un opérateur avec une priorité plus faible,
nous devons (comme en mathématiques) X  2*(A+3)*B+4*C
entourer le terme en question par des l'ordinateur évalue d'abord l'expression entre parenthèses,
parenthèses. ensuite les multiplications, ensuite l'addition et enfin
l'affectation

Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 15


chapitre 2
EXÉCUTION CONDITIONNELLE 1/13

Qu’est-ce l’exécution
conditionnelle ?
• L’exécution conditionnelle permet de faire deux
choses différentes selon le cas qui se produit.
L’instruction ne sera exécutée que sous certaines
conditions. Plus précisément, le programme teste
une condition, si la condition est satisfaite le
programme fait une chose, dans le cas contraire,
le programme fait une autre chose. Une
instruction conditionnelle peut avoir plusieurs
formes.

Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 16


chapitre 2
EXÉCUTION CONDITIONNELLE 2/13

Condition si-alors Organigramme

• Supposons que l’on ait une condition (par


exemple que l’âge du capitaine soit inférieur à 30
ans). Si la condition est vérifiée, on fait quelque
chose, dans le cas contraire, on ne fait rien. En
algorithmique, cela s’écrit :
SI (condition) ALORS
Instructions
FINSI
instructions /* suite d’instructions
du programme hors condition*/

Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 17


chapitre 2
EXÉCUTION CONDITIONNELLE 3/13

Condition si-alors Exemple :

• L’algorithme ci-contre donne un exemple ALGORITHME note_valide


d’utilisation de SI en fonction d’une condition qui note :REEL
dépende de la valeur de la variable note. Les DEBUT Cette instruction ne
instructions entre SI et FINSI serons exécutées LIRE (note) sera exécutée que si la
seulement si la valeurs de note est supérieure ou SI (note>=12) ALORS condition note>=12
égale à 12. les instructions qui sont à l’extérieur de AFFICHER("Module valide") est vrai
ce bloc serons exécutées indépendamment de
FINSI
cette condition.
AFFICHER("Bon courage!") Cette instruction sera
FIN exécutée car elle ne
dépende pas de la
condition. Elle est en
d’hors de la structure
SI

Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 18


chapitre 2
EXÉCUTION CONDITIONNELLE 4/13

Condition alternative :
Organigramme
si-alors sinon
• Une seconde forme plus intéressant est constituée
d’un second bloc d’instructions qui seront
exécutées lorsque la condition n’est pas vérifiée.
Elle aura pour forme :
SI (condition) ALORS
Instructions 1
SINON
Instructions 2
FINSI
Instructions 3 /* suite
d’instructions du programme hors
condition*/
Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 19
chapitre 2
EXÉCUTION CONDITIONNELLE 5/13

Condition alternative :
Exemple :
si-alors sinon
ALGORITHME note_valide Cette instruction ne
• L’algorithme ci-contre donne un exemple sera exécutée que si la
d’utilisation de SI en fonction d’une condition qui note :REEL
DEBUT condition note>=12
dépende de la valeur de la variable note. Les est vrai
instructions entre SI et FINSI serons exécutées que LIRE (note)
si la valeurs de note est supérieure à 12. les SI (note>=12) ALORS
AFFICHER("Module valide") Cette instruction ne
instructions qui sont à l’extérieur de ce bloc serons sera exécutée que si la
exécutées indépendamment de cette condition. SINON
AFFICHER("Module NON valide") condition note>=12
FINSI est Fausse
AFFICHER("Bon courage!")
FIN Cette instruction sera
exécutée car elle ne
dépende pas de la
condition. Elle est en
d’hors de la structure
SI
Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 20
chapitre 2
EXÉCUTION CONDITIONNELLE 6/13

Conditions imbriquées Exemple :

Parfois l’expression d’une structure conditionnelle • Si Temp est entre 75 et 100 degrés alors il
peut contenir plusieurs situations. affiche que l’eau est Très chaud.
Prenons l’exemple d’un algorithme qui donne l’état • Si Temp est supérieure à 100 degrés alors il
de l’eau en fonction de sa température. Il prend en affiche que l’eau est Brûlant.
entrée une variable Temp qui représente la Une première stratégie consiste à utiliser
température de l’eau et puis il affiche des messages: linéairement (indépendamment) la structure
• Si la température est inférieure a 0 degrés alors il SI-ALORS plusieurs fois en combinant des
affiche que l’eau est Gelé. conditions à l’aide d’operateurs logiques.
• Si Temp est entre 0 et 12 degrés alors il affiche Voir l’organigramme suivant :
que l’eau est Froid.
• Si Temp est entre 12 et 25 degrés alors il affiche
que l’eau est Confortable.
• Si Temp est entre 25 et 75 degrés alors il affiche
que l’eau est Chaud.
Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 21
chapitre 2
EXÉCUTION CONDITIONNELLE 7/13
Organigramme de l’algorithme

Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 22


chapitre 2
EXÉCUTION CONDITIONNELLE 8/13

L’algorithme de la structure
conditionnelle non-imbriquées
ALGORITHME Temp_Eau /*suite de l’algorithme*/
Temp :REEL SI ((Temp > 75) ET (Temp <= 100)) ALORS
DEBUT AFFICHER("C'est très chaud")
AFFICHER("Donner la température") FINSI
LIRE(Temp) SI (Temp > 100) ALORS
SI (Temp <= 0) ALORS AFFICHER("C'est brulant")
AFFICHER("C'est gelé") FINSI
FINSI FIN
SI ((Temp > 0) ET (Temp <= 12)) ALORS
AFFICHER("C'est froid")
FINSI
SI ((Temp > 12) ET (Temp <= 25)) ALORS
AFFICHER("C'est confortable")
FINSI
SI ((Temp > 25) ET (Temp <= 75)) ALORS
AFFICHER("C'est chaud")
FINSI
Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 23
chapitre 2
EXÉCUTION CONDITIONNELLE 9/13

Conditions imbriquées Syntaxe :

• L’imbrication des conditions consistes à utiliser la SI (condition 1) ALORS


structure SI-ALORS SINON l’une à l’intérieure Instructions1
d’une autre. SINON
• Elle permet de mieux structurer l’algorithme afin SI(condition 2) ALORS
que cela soit plus clair, mais surtout à réduire le Instructions2
nombre d’opérations de comparaisons effectuées. SINON
Cela permet de réduire la complexité de SI(condition 3) ALORS
l’algorithme. Instructions3
Question? Combien d’opérations de comparaison SINON
sont effectuées par l’algorithme précèdent? …
FINSI
L’algorithme précèdent peut être conçus de manière
FINSI
à utiliser la structure de conditions imbriquées
comme nous pouvons voir dans l’organigramme de la FINSI
page suivante.
Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 24
chapitre 2
EXÉCUTION CONDITIONNELLE 10/13
Organigramme de l’algorithme

Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 25


chapitre 2
EXÉCUTION CONDITIONNELLE 11/13

Conditions imbriquées
ALGORITHME Temp_Eau /*suite de l’algorithme*/
Temp :REEL SI (Temp <= 100) ALORS
DEBUT AFFICHER("C'est très chaud")
AFFICHER("Donner la température") SINON
LIRE(Temp) AFFICHER("C'est brûlant")
SI (Temp <= 0) ALORS FINSI
AFFICHER("C'est gelé") FINSI
SINON FINSI
SI (Temp <= 12) ALORS FINSI
AFFICHER("C'est froid") FINSI
SINON FIN
SI (Temp <= 25) ALORS
AFFICHER("C'est confortable")
SINON
SI (Temp <= 75) ALORS Étudier combien d’opérations de
AFFICHER("C'est chaud") comparaison sont effectuées ?
SINON
Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 26
chapitre 2
EXÉCUTION CONDITIONNELLE 12/13

L’instruction SELON - CAS Syntaxe

Lorsque nous somme dans une situation ou SELON variable


l’algorithme doit régler un problème ou plusieurs
conditions sont liées à un ensemble de valeurs finis CAS valeur 1 :
et bien déterminées, est le problème consiste plutôt Instructions 1
à une liste de choix. Il est possible d’utiliser SI-ALORS
plusieurs fois, mais il existe une structure qui permet CAS valeur 2 :
de résoudre ce problème plus efficacement.
Instructions 2
C’est la structure SELON-CAS
CAS valeur 3 :
Instructions 3

SINON :
Instructions
FINSELON ALGORITHMIQUE
Aeronautics and Aerospace club of ENSAM Casablanca 27
chapitre 2
EXÉCUTION CONDITIONNELLE 13/13
Exemple
L’instruction SELON - CAS ALGORITHME Operations
Choix : ENTIER
a,b,C : REEL
L’exemple de l’algorithme suivant présente DEBUT
l’utilisation de SELON-CAS pour présenter à AFFICHER("donner Deux Valeurs a et b")
l’utilisateur une liste choix d’opération. Il y’a 3 valeurs LIRE(a,b)
AFFICHER("Taper 1 pour Additionner, 2 pour multiplier 3
1,2,3 que l’utilisateur doit tapé chacun dirige pour le modulo de a et b")
l’exécution vers le cas sélectionné. Noter que dans le LIRE(Choix)
cas ou l’utilisateur introduit une valeur outre que les SELON Choix
cas traité l’exécution se dirige directement au bloc CAS 1 :
SINON C ← a+b
AFFICHER("le resultat de l’operation choisie =",C)
CAS valeur 2 :
C ← a*b
AFFICHER("le resultat de l’operation choisie =",C)
CAS valeur 3 :
C ← a%b
AFFICHER("le resultat de l’operation choisie =",C)
SINON :
AFFICHER("Vous avez tapé un mauvais choix")
FINSELON ALGORITHMIQUE 28
Aeronautics and Aerospace club of ENSAM Casablanca FIN chapitre 2
EXÉCUTION RÉPÉTITIVE – ITÉRATION 1/10

BOUCLE pour Syntaxe

Si nous désirons que l’algorithme répète un bloc instructions 1 /* début du programme */


d’instructions un certain nombre de fois (bien POUR (ide initial, condition sur ide, changement de ide)
déterminé). Nous utilisons la boucle Pour En instructions 2 /* instructions répétées */
pseudo-code cela s’exprime par la syntaxe ci- FINPOUR
contre. instructions 3 /* suite du programme */
Lorsque le nombre de fois où un bloc d’instructions
doit être exécuté est connu à l’avance, la boucle
POUR est préférable. L’usage principal de la boucle
POUR est de faire la gestion d’un compteur (ide de
type entier) qui évolue d’une valeur à une autre.
La variable ide est initialisé par une valeur, ensuite
nous mettons une condition sur ide, le changement
de ide consiste la plupart du temps à incrémenter
ou décrémenter la valeur de ide pour que la
condition change au fur et à mesure de
l’avancement des calculs.
Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 29
chapitre 2
EXÉCUTION RÉPÉTITIVE – ITÉRATION 2/10

BOUCLE pour Exemple :

L’exemple ci-contre présente l’algorithme qui ALGORITHME factoriel


permet de calcul le factoriel de n. l’idée est n,i,F :ENTIER
d’effectuer des multiplications successives
DEBUT
jusqu’à ce que la variable i arrive à la valeur de n
la variable i change progressivement avec AFFICHER("Donner la valeur de n")
l’instruction i ← i+1. LIRE(n)
F ← 1 /* initialisation obligatoire */
POUR (i ← 1, i<=n ,i ← i+1)
F ← F*i
FINPOUR
AFFICHER("le factoriel =", F)
FIN

Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 30


chapitre 2
EXÉCUTION RÉPÉTITIVE – ITÉRATION 3/10

BOUCLE pour Exemple :

Lorsque l’ordinateur rencontre cette structure, il ALGORITHME factoriel


procède systématiquement de la manière suivante : n,i,F :ENTIER
La variable i , jouant le rôle de compteur, est DEBUT
initialisée par 1 (cet initialisation s’effectue une et AFFICHER("Donner la valeur de n")
une seul fois). LIRE(n)
L’ordinateur teste si la valeur de i est inférieure ou F ← 1 /* initialisation obligatoire */
égale à la valeur de n : POUR (i ← 1, i<=n ,i ← i+1)
F ← F*i
- Si c’est le cas, l’instruction ou le bloc d’instruction
est effectué (ici FF*i), la variable i jouant le FINPOUR
rôle de compteur est augmentée de 1, et répète AFFICHER("le factoriel =", F)
POUR sans initialiser la valeur de la variable i. FIN
- Si ce n’est pas le cas, l’instruction ou le bloc
d’instruction n’est pas effectuée, et l’ordinateur
passe aux instructions suivantes.
Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 31
chapitre 2
EXÉCUTION RÉPÉTITIVE – ITÉRATION 4/10

BOUCLE tant que Syntaxe

Si nous voulons répété un bloc d’instructions instructions 1 /* début du programme */


cette fois sans savoir explicitement le nombre TANTQUE (condition) /* Etape 1 test de condition*/
de fois que cela va se répéter. Mais plutôt nous
instructions 2 /* instructions répétées */
avons une condition lorsqu’elle vrai, on répète
les instructions de ce bloc. Une autre forme de FINTQ
structure de contrôle itérative est proposée : instructions 3 /* suite du programme */
La boucle Tant que

Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 32


chapitre 2
EXÉCUTION RÉPÉTITIVE – ITÉRATION 5/10

BOUCLE tant que Syntaxe

Lorsque l’ordinateur rencontre cette structure, il instructions 1 /* début du programme */


procède systématiquement de la manière TANTQUE (condition) /* Etape 1 test de condition*/
suivante :
instructions 2 /* instructions répétées */
• La condition est testée (on dit aussi évaluée). FINTQ
• Si la condition est vraie, l’instruction ou les instructions 3 /* suite du programme */
instructions 2 du bloc sont exécutées, et on
recommence à l’étape 1) : test de la
condition.
• Si la condition est fausse, l’instruction ou les
instructions du bloc ne sont pas exécutées et
on passe aux instructions suivantes (après la
structure de contrôle).

Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 33


chapitre 2
EXÉCUTION RÉPÉTITIVE – ITÉRATION 6/10

BOUCLE tant que Exemple

Prenons un exemple. Supposons que l’on veuille ALGORITHME Puissance


faire une fonction qui calcule et affiche 𝒙𝒌 , où x x,P :REEL
est un réel et k est un exposant entier saisi au k,i :ENTIER
clavier. Le résultat doit être un réel.
DEBUT
AFFICHER("Donner la valeur de x est k")
LIRE(x,k)
i ← 0 /* initialisation obligatoire */
P ← 1 /*initialisation à 1 calcul du produit*/
TANTQUE (i < k)
P ← P*k
i ← i+1 /* progression obligatoire */
FINTQ
AFFICHER("x a la puissance k =", P)
FIN
Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 34
chapitre 2
EXÉCUTION RÉPÉTITIVE – ITÉRATION 7/10

BOUCLE tant que Exemple

Au départ, la variable i vaut 0 et P vaut 0 ALGORITHME Puissance


(initialisation). x,P :REEL
Si k est strictement positif, au départ, la k,i :ENTIER
condition d’arrêt i<k est vraie, et on rentre dans DEBUT
TANTQUE. AFFICHER("Donner la valeur de x est k")
À chaque exécution des instructions du LIRE(x,k)
TANTQUE, l’instruction i=i+1 est exécutée, ce qui i ← 0 /* initialisation obligatoire */
augmente la valeur de la variable i (on parle P ← 1 /*initialisation à 1 calcul du produit*/
d’incrémentation lorsqu’on augmente de 1 la TANTQUE (i < k)
valeur d’une variable). P ← P*k
La condition d’arrêt est alors évaluée avant i ← i+1 /* progression obligatoire */
d’effectuer l’itération suivante. Comme la FINTQ
variable i augmente à chaque itération, au bout AFFICHER("x a la puissance k =", P)
d’un moment la condition d’arrêt i<k devient FIN
fausse, et la boucleand
Aeronautics se termine ; onclub
Aerospace passeofàENSAM
la Casablanca ALGORITHMIQUE 35
suite du programme chapitre 2
EXÉCUTION RÉPÉTITIVE – ITÉRATION 8/10

BOUCLE faire - tant que Syntaxe

La structure TANTQUE que nous venons de voir, instructions 1 /* début du programme */


commence par vérifier la condition au départ FAIRE
pour ensuite exécuter le bloc d’instructions
instructions 2 /* instructions répétées */
inclus.
TANTQUE (condition) /* vérification de la
Parfois il est préférable de laisser la vérification condition de répétition après l’exécution des
de la condition de répétition à la fin des instructions2 */
instructions à répéter pour cela nous avons une
autre forme :
instructions 3 /* suite du programme */

Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 36


chapitre 2
EXÉCUTION RÉPÉTITIVE – ITÉRATION 9/10

BOUCLE faire - tant que Exemple

L’algorithme ci-contre calcul le PGCD de 2 ALGORITHME PGCD


nombre es introduit par l’utilisateur en utilisant a,b,r :ENTIER
la boucle faire - tant que
DEBUT
AFFICHER("Donner deux nombres m et n ")
LIRE(a,b)
FAIRE
r ← a%b
a ← b
b ← r
TANTQUE (b != 0)
AFFICHER("le PGCD =", a)
FIN

Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 37


chapitre 2
EXÉCUTION RÉPÉTITIVE – ITÉRATION 10/10

BOUCLE faire - tant que Exemple

Pour comprendre ce que fait cet algorithme, il r a b États de la condition


est préférable de faire des exemples d’exécution --- 260 170 Introduction de valeur
d’algorithme et de voir le changement du
contenu des variables étape par étape. 90 170 90 b!=0 est vrai
Nous appellerons cette simulation d’algorithme 80 90 80 b!=0 est vrai
dans ce cours : une preuve d’algorithme. Vous 10 80 10 b!=0 est vrai
aurez souvent à la faire lorsque un algorithme
inconnu se présente à vous dans les Tds. 0 10 0 b!=0 est faux
ALGORITHME PGCD FINTQ affichage de a
a,b,r:ENTIER
DEBUT Le PGCD = 10
AFFICHER("Donner deux nombres m et n ")
LIRE(a,b)
FAIRE
r ← a%b
a ← b
b ← r
TANTQUE (b != 0)
AFFICHER("le PGCD =", a)
FIN
Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 38
chapitre 2
LES TABLEAUX 1/7

Problème

• Un programme peut être amené à manipuler


de nombreuses variables représentant des
valeurs distinctes mais de même nature. Par
exemple, un relevé de plusieurs
températures en plusieurs endroits et à
plusieurs dates nécessitera autant de valeurs
entières que de températures à stocker.
• Il est difficilement envisageable de définir «
manuellement » autant de variables que de
valeurs à stocker. Les tableaux, en
informatique, permettent de résoudre ce
problème en proposant la création de
plusieurs variables de même type, d’une
manière très compacte.
Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 39
chapitre 2
LES TABLEAUX 2/7 Moyenne des notes
ALGORITHME Moy_note_1
Problème N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,Moy: REEL
DEBUT
AFFICHER(“donner Les 10 notes”)
AFFICHER(“note1”)
• Imaginons que dans un algorithme, nous LIRE(N1)
ayons besoin simultanément de 10 valeurs AFFICHER(“note2”)
LIRE(N2)
(par exemple, des notes pour calculer une AFFICHER(“note3”)
moyenne). Evidemment, la seule solution LIRE(N3)
dont nous disposons à l’heure actuelle AFFICHER(“note4”)
LIRE(N4)
consiste à déclarer dix variables, appelées AFFICHER(“note5”)
par exemple Notea, Noteb, Notec, LIRE(N5)
etc. Bien sûr, on peut opter pour une AFFICHER(“note6”)
LIRE(N6)
notation un peu simplifiée, par exemple N1, AFFICHER(“note7”)
N2, N3, etc. LIRE(N7)
AFFICHER(“note8”)
• Mais cela ne change pas fondamentalement LIRE(N8)
AFFICHER(“note9”)
notre problème, car arrivé au calcul, et après LIRE(N9)
une succession de dix instructions « Lire » AFFICHER(“note10”)
distinctes, cela donnera obligatoirement un LIRE(N10)
algorithme du genre : Moy ← (N1+N2+N3+N4+N5+N6+N7+N8+N9+N10)/10

AFFICHER(“la moyenne est =”,Moy)


FIN
Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 40
chapitre 2
LES TABLEAUX 3/7

Solution Moyenne des notes


ALGORITHME Moy_note_2
• C’est pourquoi les tableaux nous permettent N[10] : REEL /*déclaration d’un
tableaux de 10 valeurs réels*/
de rassembler toutes ces variables en une
Moy : REEL
seule, au sein de laquelle chaque valeur sera
i : ENTIER
désignée par un numéro.
DEBUT
• Un tableau est un ensemble de valeurs AFFICHER(“donner Les 10 notes”)
portant le même nom de variable et repérées POUR(i ← 0, i<10, i ← i+1)
par un nombre (indice). AFFICHER(“note”,i)
LIRE(N[i])
• La déclaration d’un tableau de variables FINPOUR
s’effectue par N[10] : REEL (10 le Moy ← 0
nombre d’éléments est obligatoire dans la POUR(i ← 0,i<10,i ← i+1)
déclaration) Moy ← Moy+N[i]
• L’accès au contenus des éléments du tableau FINPOUR
s’effectue par inand
Aeronautics indice entre les club
Aerospace crochets [ ]. AFFICHER(“la
of ENSAM Casablanca
moyenne est =”,Moy) ALGORITHMIQUE 41
FIN chapitre 2
LES TABLEAUX 4/7
Consignes Composition

• La déclaration d’un tableau de variables


s’effectue par N[10] : REEL (10 le
nombre d’éléments est obligatoire dans la
déclaration).
• L’accès au contenus des éléments du tableau Indice 0 1 2 3 4 5 6 7 8 9
s’effectue par l’indice (un nombre entier) 14 12.5 8.5 5 16 18 10.5 11 17 12
entre les crochets [ ]. N
• Les indices des éléments d’un tableau N[0] N[1] N[2] N[3] N[4] N[5] N[6] N[7] N[8] N[9]
commence toujours par 0 et le dernier
élément dans cet algorithme est N[9]
(puisque nous avons déclaré exactement 10 Les éléments du tableau
éléments).
• Il ne faut pas confondre la valeur notée entre
crochets lors de la déclaration du tableau (la
taille maximale) et la valeur notée entre
crochets lors des instructions (l’indice).
Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 42
chapitre 2
LES TABLEAUX 5/7

Relation entre tableaux et boucles Maximum d’un tableau

Les boucles sont extrêmement utiles pour les ALGORITHME recherche_max

algorithmes associés aux tableaux. En effet, de maxi :ENTIER /* stocke la valeur du maximum*/
tablval[50] :ENTIER /* un tableau stockant des valeurs*/
nombreux algorithmes relatifs au tableau Nb,i,j: ENTIER /* la taille utile du tableau et les indices de
nécessitent de parcourir les éléments du parcourt*/
DEBUT
tableau dans un certain ordre, le plus souvent AFFICHER("entrez le nombre d’elements du tableau ( taille max 50) ")
dans le sens des indices croissant. Le traitement LIRE(Nb)
POUR (i ← 0 , i< Nb , i ← i+1) FAIRE
de chacun des éléments étant souvent le
même, seule la valeur de l’indice est amenée à AFFICHER("entrez une valeur dans le tableau : ")
LIRE(tablval[i])
changer. Une boucle est donc parfaitement
FINPOUR
adaptée à ce genre de traitements. maxi ← tablval[0] /* pour l’instant, le plus grand est dans la case 0
cherchons case par case (de l’indice 1 à Nb)*/
Illustration par un algorithme de recherche de la
POUR (j ← 1 , j< Nb , j ← j+1) FAIRE
plus grande valeur stockée dans un tableau SI (tablval[j] > maxi) ALORS
d’entiers. Cet algorithme représente une maxi ← tablval[j] /* la valeur est mémorisée dans maxi*/
synthèse des notions rencontrées pour les
FINSI
tableaux. FINPOUR
AFFICHER("la valeur maximal de ce tableau: ", maxi)

Aeronautics and Aerospace club of ENSAM FIN


Casablanca ALGORITHMIQUE 43
chapitre 2
LES TABLEAUX 6/7
Multi-dimension Tableau à deux dimensions

Il est possible de définir des tableaux à plusieurs Déclaration du tableau


dimensions en les indiquant dans des crochets de taille 5x5
successifs lors de la définition du tableau. Pour
des propos d’illustration l’exemple se limitera à
deux dimensions, la généralisation à N
dimensions est immédiate.
Certains problèmes (notamment le calcul
matriciel) ont une représentation naturelle en
deux dimensions avec un repérage en
lignes/colonnes ou abscisse/ordonnée.

L’élément tab[3][2]

Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 44


chapitre 2
LES TABLEAUX 7/7
Multi-dimension Somme des éléments
ALGORITHME Moy_note_2
tab[10][10],S : REEL /*déclaration d’un tableaux 2 dimensions de
L’exemple ci-contre, montre comment 10x10 valeurs réels*/
manipuler les élément d’in tableau dans le but i,j,N,M : ENTIER
DEBUT
de remplir un tableau de 2 dimensions, puis de AFFICHER("entrez le nombre de lignes et le nombre de colonnes ")
l’afficher et ensuite calculer la somme de ses LIRE(N,M)
POUR(i ← 0, i<N, i ← i+1) /* Double boucle 1 :parcourt des éléments pour
éléments. POUR(j ← 0, j<M, j ← j+1) remplir le tableau tab*/
LIRE(tab[i][j])
Noter que pour parcourir les éléments du FINPOUR
tableau tab nous avons besoin de deux boucles FINPOUR
imbriquées, chacune a son propre indice de POUR(i ← 0, i<N, i ← i+1) /* Double boucle 2 : parcourt des éléments pour
POUR(j ← 0, j<M, j ← j+1) afficher le tableau tab*/
parcourt (i et j), il faut faire attention au sens AFFICHER(tab[i][j])
des indices pour ils ne soient pas mélangés FINPOUR
dans les boucles imbriquées. FINPOUR
S ← 0
Noter aussi que nous pourront réutiliser les POUR(i ← 0, i<N, i ← i+1) /* Double boucle 3 : parcourt des éléments pour
POUR(j ← 0, j<M, j ← j+1) calculer la somme des éléments du tableau tab*/
indices dans les autres Double boucles, car ils S ← S+tab[i][j])
sont indépendantes cette fois-ci. FINPOUR
FINPOUR
AFFICHER(“la somme des elements = ”,S)
FIN

Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 45


chapitre 2
LES SOUS-PROGRAMMES OU FONCTIONS
Définition

Lorsque l'on progresse dans la conception d'un Le sous-algorithme est écrit séparément du
algorithme, ce dernier peut prendre une taille corps de l'algorithme principal et sera appelé
et une complexité croissante. De même des par celui-ci quand ceci sera nécessaire.
séquences d'instructions peuvent se répéter à
plusieurs endroits. Le sous-algorithme est une partie de
l’algorithme presque indépendante qui a un
Tout algorithme est associé à un système de nom et peut être appelée d’un autre sous-
transitions des instructions jusqu’à maintenant algorithme ou de l’algorithme principal.
séquentielles et monolithique. 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.
.

Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 46


chapitre 2
LES SOUS-ALGORITHMES OU FONCTIONS
Les notions

Nous avons déjà utilisé des sous-algorithmes Ce sous-algorithme fonctionne en « boîte noire »
que nous avons supposé comme prédéfinis et vis-à-vis des autres sous-algorithmes, c’est-à-dire:
prêts à utiliser, tels que AFFICHER() LIRE(), ou
• Qu’ils n’en connaissent que les entrées
encore les fonctions mathématique telles que
(variables et valeurs qui sont fournies à la
RACINE(), SIN(),COS() …
fonction et sur lesquelles son traitement va
Voyons maintenant comment définir nos porter).
propres sous-algorithmes que nous allons
• Les variables déclarées et utilisées à l’intérieur
appelés souvent des fonctions.
de ces sous-algorithmes, ne sont pas reconnus
Une fonction sert à regrouper des instructions à l ’extérieur du sous-algorithme.
auxquelles on peut faire appel, c’est-à-dire
• La sortie qui peut être une valeur fournie par la
utiliser en cas de besoin. Il s’agit en réalité d’un
fonction, récupérée par les autres fonctions ou
petit algorithme qui sera utilisé par un
par l’algorithme principale. Il se peut que la
algorithme principal.
fonction n’a pas de sortie, elle ne retourne
aucune valeur (parfois l’utilité de la fonction
sert à afficher des messages tout simplement)

Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 47


chapitre 2
LES SOUS-PROGRAMMES OU FONCTIONS
Intérêt des sous-programmes

Structuration de l’algorithme Les algorithmes ne font donc plus nécessairement


appel aux instructions élémentaires mais à des
En l’absence de sous-algorithme ou de fonction,
instructions de plus haut niveau avec les fonctions
l’algorithme est monolithique : les instructions
qui, de part leur nom significatif, en améliore la
sont toutes écrites les unes à la suite des autres
compréhension.
et ce ne sont que les commentaires, le style
d’écriture conventionnelle, qui le structure et Réutilisation
permettent de le comprendre. Chaque fonction
Un sous-algorithme décrit un traitement ou le
correspond à une sous-partie (un sous-
calcul d’une information qui peut ensuite être
algorithme) de l’algorithme principal.
utilisé autant de fois que nécessaire dans
Il permet donc de le découper en « morceaux » l’algorithme en cours de construction mais
et donc de le structurer en entités relativement également dans les algorithmes futurs.
indépendantes.
Compréhensibilité de l’algorithme
La structuration permet d’améliorer la
compréhension de l’algorithme, car il est
découpé en fonctions de taille réduite qui sont
donc Aeronautics and Aerospace club of ENSAM Casablanca
plus facile à comprendre. ALGORITHMIQUE 48
chapitre 2
LES SOUS-PROGRAMMES OU FONCTIONS
Intérêt des sous-algorithmes
Factorisation du code Amélioration de la maintenance

Les sous-algorithmes permettent de factoriser des Comme la compréhension d’un algorithme, la


parties de l’algorithme. Par exemple, dans l’algorithme maintenance est automatiquement améliorée, car il sera
de calcul de nombre de combinaison de n par p nous plus facile d’identifier les parties de l’algorithme à
avons trois occurrences des blocks d’instructions pour modifier et d’en évaluer l’impact. L’idéal est bien
calculer les factoriels. L’idée est d’écrire le block entendu que la modification puisse être limitée à un
d’instructions qui sert pour le calcul du factoriel une petit nombre de sous-algorithmes.
seul fois sous la forme d’une fonction. La factorisation améliore également notablement la
Mise au point maintenance. En effet, si une modification est faite dans
un sous-algorithme, elle sera automatiquement prise en
Dès qu’un sous-algorithme est écrit, il peut (et doit) compte dans toutes les autres parties qui utilisent ce
être testé. Ainsi, le programme est testé morceau par sous-algorithme. Si le code avait été dupliqué, il aurait
morceau (sous-algorithme après sous-algorithme). Les fallu le changer à tous les endroits.
erreurs et surtout leur origine sont alors beaucoup
plus facilement identifiées que si l’ensemble du Dans le même ordre d’idée, les sous-algorithmes
l’algorithme était testé d’un seul coup. permettent au programmeur de définir ses propres
instructions et expressions. Ainsi, s’appuyant sur ses
Ceci est également vrai lors de la modification de instructions, il peut écrire des algorithmes indépendants
sous-algorithmes (maintenance corrective ou des instructions élémentaires du processeur.
évolutive).

Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 49


chapitre 2
LES SOUS-PROGRAMMES OU FONCTIONS

L’entête de la fonction
Définir une fonction
Comme de nombreuses entités en informatique, une FONCTION nom_de_fonction(«liste entrées avec leurs types»):type
fonction doit être définie avant d’être utilisée, c’est-à- de la sortie
dire que l’on doit indiquer quelles sont les instructions « Déclarations des variables »
DEBUT
qui la composent : il s’agit de la définition de la
« instructions »
fonction, où l’on associe les instructions à RETOURNER (« la valeurs ou la variable à retourner »)
l’identification de la fonction.
FINFCT
La fonction doit être définie et comporter : un en-tête,
pour l’identifier et un corps contenant ses
instructions, pour la définir.

Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 50


chapitre 2
LES SOUS-PROGRAMMES OU FONCTIONS
L’entête d’une fonction et la
valeur retourner L’entête de la fonction
L’entête de la fonction comporte le nom de la fonction
qui doit être significatif en vérifiant les mêmes règles
de nomination des variables. FONCTION nom_de_fonction(«liste entrées avec leurs types»):type
de la sortie
Entre les parenthèses nous mettons la liste des « Déclarations des variables »
variables requises pour que la fonction réalise les DEBUT
tâches désirées. Pour chaque variable de cette liste on « instructions »
doit écrire sont type. RETOURNER (« la valeurs ou la variable à retourner »)

Il faut noter qu’une fonction peut avoir plusieurs FINFCT


variables dans ses arguments, il se peut aussi que la
fonction n’ai aucun paramètre, dans se cas on écrit
VIDE pour signaler qu’elle ne récupère aucune valeur
de l’extérieur.
Après les parenthèses on écrit le type de la valeur que
la fonction doit retourner avec l’instruction
RETOURNER().
Une fonction ne peut retourner qu’une seule valeur,
ou dans certain cas elle ne retourne rien, dans ce cas
on ne met pas le type de retour et on ne met pas
Aeronautics
l’instruction and Aerospace club of ENSAM Casablanca
RETOURNER. ALGORITHMIQUE 51
chapitre 2
LES SOUS-PROGRAMMES OU FONCTIONS
L’appel de la fonction
ALGORITHME combinaison /*L’algorithme principale*/
L’utilisation de la fonction définie auparavant dans n,p,N,P,NP,C,i : ENTIER
DEBUT
l’algorithme principal ou dans une autre fonction se AFFICHER("donner les valeurs de n et p")
fait à travers des appels de cette fonction on lui FAIRE
LIRE(n,p)
fournissant la liste des paramètres. Si la fonction SI((n<=0)OU(p<=0)OU(p>n)) ALORS
retourne une valeur on doit affecter cette fonction à AFFICHER("veuillez introduire n et p
tels que n>=0 p>=0 n>=p")
une autre variable. FINSI
TANTQUE((n<0)OU(p<0)OU(p>n))
Dans l’exemple ci-contre nous traitons le cas de N ←1
l’algorithme de calcul de nombre de combinaison de n P ←1
NP ←1
par p. Nous avons définis pour cela la fonction SI(n!=0) ALORS
factoriel POUR(i ← 1, i<=n, i ←i+1)FAIRE
N ← N*i
FINPOUR
FINSI
SI(n!=0) ALORS
POUR(i ← 1, i<=p, i ←i+1)FAIRE
P ← P*i
FINPOUR
FINSI
SI(n-p!=0) ALORS
POUR(i ← 1, i<=n-p, i ←i+1)FAIRE
NP ← NP*i
FINPOUR
FINSI
C ← N/(P*NP)
AFFICHER("le nombre de combinaison =",C)
FIN
Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 52
chapitre 2
LES SOUS-PROGRAMMES OU FONCTIONS
L’appel de la fonction
FONCTION factoriel(n : ENTIER) :ENTIER /*la définition de la fonction*/
L’utilisation de la fonction définie auparavant dans i,F : ENTIER
DEBUT
l’algorithme principal ou dans une autre fonction se F ← 1
fait à travers des appels de cette fonction on lui SI(n!=0) ALORS
fournissant la liste des paramètres. Si la fonction POUR(i ← 1, i<=n, i ←i+1)FAIRE
retourne une valeur on doit affecter cette fonction à F ← F*i
une autre variable. FINPOUR
FINSI
Dans l’exemple ci-contre nous traitons le cas de RETOURNER (F)
FINFCT
l’algorithme de calcul de nombre de combinaison de n
par p. Nous avons définis pour cela la fonction
factoriel ALGORITHME combinaison /*L’algorithme principale*/
n,p,C : ENTIER
DEBUT
AFFICHER("donner les valeurs de n et p")
FAIRE
LIRE(n,p)
SI((n<=0)OU(p<=0)OU(p>n)) ALORS
AFFICHER("veuillez introduire n et p
tels que n>=0 p>=0 n>=p")
FINSI
TANTQUE((n<0)OU(p<0)OU(p>n))
C ← factoriel(n)/(factoriel(p)*factoriel(n-p)) /*les appels de la fonction */
AFFICHER("le nombre de combinaison =",C)
FIN

Aeronautics and Aerospace club of ENSAM Casablanca ALGORITHMIQUE 53


chapitre 2

Vous aimerez peut-être aussi