M106 Programmation structurée
ISTA BENAHMED
Introduction
Un ensemble d’instructions exécutées dans un ordre
spécifique en manipulant des données pour avoir un
résultat précis.
Données + Instructions == Programmes
• Développeur : programmer les applications (PC,
Tablette, smartphone)
• administrateur réseau et système # développeur
• Initiation à la programmation
Pocessus
Problème
Algorithme
Analyse de
Programme
problème, étapes à Représentation de
suivre, → Données, la solution en pseu-
Traduction en
Instructions code langage de
(Développeur) programmation C,
C++, Java, Python
(Machine)
Ch1: ALGORITHMIQUE
• Algorithme:
– Objets : Variables ou Constantes
Identificateur, type, valeur
Exemple: somme de deux nombres
✓Une variable qui contient la valeur du premier
nombre:
▪ identificateur: N1
▪ type: Numérique (Entier)
▪ valeur : 3
Ch1: ALGORITHMIQUE
• Algorithme:
– Objets : Variables ou Constantes
Identificateur, type, valeur
Exemple: somme de deux nombres
✓Une variable qui contient la valeur du second
nombre:
▪ identificateur: N2
▪ type: Numérique (Entier)
▪ valeur : 7
Ch1: ALGORITHMIQUE
• Algorithme:
– Objets : Variables ou Constantes
Identificateur, type, valeur
Exemple: somme de deux nombres
✓Une variable qui contient la somme des deux
nombres N1 et N2:
▪ identificateur: S
▪ type: Numérique (Entier)
▪ valeur : 10
Ch1: ALGORITHMIQUE
• Algorithme:
– Objets : Variables ou Constantes
Critères de l’objet: Identificateur, type, valeur
Environnement de l’algorithme: entrée, sortie,
intermédiaire, constante(ne change jamais sa valeur)
Exemple: somme de deux nombres
N1: entrée
N2: entrée
S: sortie
Ch1: ALGORITHMIQUE
• Algorithme:
– Instructions:
• Affectation:
Assigner une valeur à une variable: variable valeur
(valeur, objet, instructions)
N10 RAM (mémoire vive)
N27
N1 8
N2 8 N2 8
N1 N2 S 16
S N1+N2
Ch1: ALGORITHMIQUE
• Algorithme:
– Instructions:
• Lecture: LIRE
Assigner une valeur à une variable par l’utilisateur
(clavier): LIRE variable
RAM (mémoire vive)
LIRE N1 N1 5
LIRE N2 N2 6
S N1+N2 S 11
Ch1: ALGORITHMIQUE
• Algorithme:
– Instructions:
• Affichage: AFFICHER
Afficher à l’écran les résultats de l’algorithme: AFFICHER
variable
RAM (mémoire vive)
LIRE N1 N1 5
LIRE N2 N2 6
S N1+N2 S 11
AFFICHER « La Somme est: » La Somme est:
AFFICHER S 11
Ecran
Ch1: ALGORITHMIQUE
• Exemple : calculer la somme de deux nombres.
Algorithme Somme
3
//Déclaration des variables Somme est: 10
7
ENTIER: N1,N2,S;
Clavier //Lecture des données Ecran
Lire N1 Sortie
Entrée Lire N2
Deux nombres //Traitement Résultat S
N1 et N2 S N1 + N2
//Affichage des résultats Afficher les
AFFICHER « Somme est: », S résultats
Lecture des
variables
d’entrée
traitement
Ch1: ALGORITHMIQUE
• Exercice 1 :
• Ecrire un algorithme qui calcule la somme de trois nombres
entiers (ENTIER).
• Ecrire un algorithme qui calcule la produits de trois nombres
réels (REEL) .
• Ecrire un algorithme qui calcule la différence de deux nombres
entiers (ENTIER).
• Ecrire un algorithme qui calcule le quotient et le reste de la
division de deux nombres entiers.
• Ecrire un algorithme qui calcule le périmètre d’un cercle de
rayon R donné par l’utilisateur.
• Ecrire un algorithme qui permute deux nombres X et Y.
Ch1: ALGORITHMIQUE
• Algorithme:
– Instructions Conditionnelles:
Le quotient est : 5
• SI ALORS FINSI
Au revoir
Algorithle Division
VAR:
FLOAT: N1,N2,D Ecran
DEBUT
LIRE N1
LIRE N2 RAM (mémoire vive)
SI N2 # 0
//2#0: VRAI → Bloc Alors exécuté N1 10
ALORS
D N1/N2 N2 2
AFFICHER « Le quotient est: »
AFFICHER D D 5
FINSI
AFFICHER « Au revoir »
FIN
Ch1: ALGORITHMIQUE
• Algorithme:
– Instructions Conditionnelles:
• SI ALORS FINSI Au revoir
Algorithle Division
VAR:
FLOAT: N1,N2,D Ecran
DEBUT
LIRE N1
LIRE N2
SI N2 # 0
//0#0: FAUX→ Bloc Alors ne sera pas exécuté
ALORS
D N1/N2
AFFICHER « Le quotient est: » RAM (mémoire vive)
AFFICHER D
FINSI N1 10
AFFICHER « Au revoir »
N2 0
FIN D
Ch1: ALGORITHMIQUE
• Algorithme:
– Instructions Conditionnelles:
• SI ALORS SINON FINSI Le quotient est : 2
Algorithle Division Au revoir
VAR:
FLOAT: N1,N2,D Ecran
DEBUT
LIRE N1
LIRE N2
SI N2 # 0
//5#0: VRAI→ Bloc ALORS sera exécuté
ALORS
D N1/N2
Condition VRAI AFFICHER « Le quotient est: »
AFFICHER D
SINON RAM (mémoire vive)
AFFICHER « Division par 0 impossible»
Condition FAUX
N1 10
FINSI
AFFICHER « Au revoir » N2 5
D 2
FIN
Ch1: ALGORITHMIQUE
• Algorithme:
– Instructions Conditionnelles:
• SI ALORS SINON FINSI Division par 0 impossible
Algorithle Division Au revoir
VAR:
FLOAT: N1,N2,D Ecran
DEBUT
LIRE N1
LIRE N2
SI N2 # 0
//0#0: FAUX→ Bloc SINON sera exécuté
ALORS
D N1/N2
Condition VRAI AFFICHER « Le quotient est: »
AFFICHER D
SINON RAM (mémoire vive)
AFFICHER « Division par 0 impossible»
Condition FAUX
N1 10
FINSI
AFFICHER « Au revoir » N2 0
D
FIN
Ch1: ALGORITHMIQUE
• Algorithme:
– Instructions Conditionnelles:
Comment écrire une condition?
1/ Opérateurs de comparaison
#: différent, Exemples (N2#0, X#Y, A#B+C, A+B#C+D)
=: égal, Exemples (N2=0, X=Y, A=B+C, A+B=C+D)
>: strictement supérieur , Exemples (N2>0)
<: strictement inférieur
>= : supérieur ou égal
<=: inférieur ou égal
Ch1: ALGORITHMIQUE
• Algorithme:
– Instructions Conditionnelles:
Comment écrire une condition?
2/ Opérateurs Logiques
ET: Exemple (A ET B: VRAI si A VRAI et B VARI)
Si (Age<36) ET (Bac=« Scientifique »)
ALORS
AFFICHER « Admis en TRI »
SINON
AFFICHER « Non Admis en TRI »
FINSI
OU: Exemple (A OU B: FAUX si A FAUX et B FAUX)
NON: Exemple (A est VRAI, NON A est FAUX )
Ch1: ALGORITHMIQUE
• Exercice 2:
• Ecrire un algorithme qui calcule le quotient et le reste de
la division de deux nombres entiers, (la division par 0
impossible).
• Ecrire un algorithme qui demande à l’utilisateur deux
nombres réels X et Y et retourne le plus grand des deux
nombres.
• Ecrire un algorithme qui demande à l’utilisateur deux
nombres réels X et Y et Z et retourne le plus grand des
trois nombres.
• Ecrire un algorithme qui donne le signe (+ ou -) du
produit de deux nombres A et B sans faire le calcul du
produit (A*B ).
Ch1: ALGORITHMIQUE
• Exercice 2: (Correction)
Algorithme Division
VAR: ENTIER: N1,N2,Q,R
DEBUT
LIRE N1
LIRE N2
SI N2 # 0
ALORS
Q N1/N2
R N1-(Q*N2)
AFFICHER « Le Quotient est: » , Q
AFFICHER « Le Reste est: » , R
SINON
AFFICHER « DIVISION PAR 0 IMPOSSIBLE»
FINSI
FIN
Ch1: ALGORITHMIQUE
• Exercice 2: (Correction)
Algorithme Max
VAR:
REEL: X,Y
DEBUT
LIRE X
LIRE Y
SI X>=Y (2 cas possibles → besoin d’une seule instruction SI)
ALORS
// Commentaire:(X>=Y VRAI → max :X)
AFFICHER « Le plus grand nombre est: » , X
SINON
//Commentaire: (X>=Y FAUX → Y>X → max :Y)
AFFICHER « Le plus grand nombre est: » , Y
FINSI
FIN
Ch1: ALGORITHMIQUE
• Exercice 2: (Correction)
Algorithme Max
VAR: ENTIER: X,Y,Z,Max
DEBUT
LIRE X, Y, Z X: 10
Max X
Y: 90
SI Max < Y
Z: 100
ALORS
MAX: 100
Max Y
FINSI Le plus grand nombre est:100
SI Max < Z
ALORS
Max Z
FINSI
AFFICHER « Le plus grand nombre est: » , Max
FIN
Ch1: ALGORITHMIQUE
• Exercice 2: (Correction)
Algorithme Signe_Produit
VAR: ENTIER: A,B
DEBUT
LIRE A
LIRE B
SI (A>=0 ET B>=0) OU (A<0 ET B<0)
ALORS
AFFICHER « Le signe est positif»
SINON
// (A>0 ET B<0) OU (A<0 ET B>0)
AFFICHER « Le signe est négatif»
FINSI
FIN
Imbrication des SI
Si x>y
Alors
afficher y
SINON
si x>z
alors
affciher z
FINSI
FINSI
T.A.F
• Ecrire un algorithme qui calcule le Minimum
de deux nombres.
• Ecrire un algorithme qui calcule le Minimum
de quatre nombres.
• Ecrire un algorithme qui affiche la décision sur
le bulletin d’un stagiaire selon sa moyenne
Moy:
o Moy <9 : afficher « redoublant »
o 9<= Moy <10: afficher « Racheté »
o Moy >=10: afficher « Admis »
Ch1: ALGORITHMIQUE
• Exercice 3: (Correction)
Algorithme Décision
VAR: Réel:Moy
DEBUT
LIRE Moy
SI Moy <9 0 9 10 20
ALORS
AFFICHER « Redoublant »
SINON
// Moy >=9 : VRAI dans le bloc SINON
SI Moy <10
// a . 1 = a
ALORS
AFFICHER « Racheté »
SINON
Ch1: ALGORITHMIQUE
• Exercice 3: (Correction)
// Moy >= 9 ET Moy >= 10 : VRAI
// Moy >= 10:VRAI
AFFICHER « Admis »
FINSI
FINSI
FIN
Exercice
• Ecrire un algorithme qui lit le numéro du mois
et affiche le Nombre de jour de ce mois:
mois: 8
Nombre de jour du mois 5: 30
Variables :
* NumeroMois (1,2,3,…, 12)
* NbreJour (30,31,28)
Algorithme NbJourMois
Var: ENTIER: NumeroMois, NbJour
Début
Lire NumeroMois
Si NumeroMois =1 OU NumeroMois =3
ALORS
NbJour 31
SINON
SI NumeroMois = 4 OU NumeroMois =6
ALORS
NbJour 30
SINON
SI NumeroMois = 2
ALORS
NbJour = 28
SINON
AFFICHER « SVP tapez une valeur entre 1 et 12 »
FINSI
FINSI
FINSI
FIN
• LIRE AFFICHER AFFECTATION
• SI: Instructions conditionnelle
• BOUCLES : Instructions itératives
BOUCLES
• BOUCLES : Instructions itératives
Répéter l’exécution d’un bloc d’instructions un
nombre de fois (nombre d’itérations).
nombre d’itérations:
1/ connu: Boucle POUR
2/ Inconnu: BOUCLES Répéter ou bien FAIRE
BOUCLES
• POUR
• Afficher « Bonjour TRI101 » dix fois
AFFICHER « Bonjour TRI101 »
AFFICHER « Bonjour TRI101 »
AFFICHER « Bonjour TRI101 »
AFFICHER « Bonjour TRI101 »
AFFICHER « Bonjour TRI101 »
AFFICHER « Bonjour TRI101 »
AFFICHER « Bonjour TRI101 »
AFFICHER « Bonjour TRI101 »
AFFICHER « Bonjour TRI101 »
AFFICHER « Bonjour TRI101 »
BOUCLES
• POUR
• Afficher « Bonjour TRI101 » dix fois
Pour i allant de 1 jusqu’à 10 Pas 1 Faire
AFFICHER « Bonjour TRI101 »
FinPour
i=1 i=i+Pas=2 i=3 ….. i=10
BOUCLES
• POUR
Exemple:
Pour i allant de 1 jusqu’à 10 Pas 1 Faire
AFFICHER i
FinPour
→1 2 3 4 5 6 7 8 9 10
BOUCLES
• POUR
Exemple:
Pour i allant de 0 jusqu’à 10 Pas 2 Faire
AFFICHER i
FinPour
→0 2 4 6 8 10
AFFICHER LES VALEURS PAIRS DE 0 JUSQU’AU 10
BOUCLES
• POUR
Exemple:
Pour i allant de 1 jusqu’à 10 Pas 2 Faire
AFFICHER i
FinPour
→1 3 5 7 9
AFFICHER LES VALEURS IMPAIRS < 10
BOUCLES
• POUR
Exemple: [pair = 2*k impair=2*k+1 k :[0,10]
Pour i allant de 0 jusqu’à 5 Pas 1 Faire
AFFICHER 2*i → 0 2 4 6 8 10
AFFICHER 2*i+1 → 1 3 5 7 9 11
FinPour
→1 3 5 7 9
AFFICHER LES VALEURS IMPAIRS < 10
Var
ENTIER: i,VI,VF,p
Début
VI 0; VF 10; p1
Pour i allant de VI jusqu’au VF Pas p
// bloc à répéter
FINPour
N.B.: Pour chaque itération
1ère itération:
i =VI;
i<=VF : VRAI j’exécute le bloc à répéter; ii+p
2ème itération:
i<=VF : VRAI j’exécute le bloc à répéter; ii+p
……
Nème itération:
i<=VF :FAUX ; quitter la boucle
EXERCICES
1. Ecrire un algorithme qui calcule la somme
S=0+1+2+3+4+5+…+N. avec N donné par
l’utilisateur.
2. Ecrire un algorithme qui calcule la factorielle de
N. F=1*2*3*….*N
3. Ecrire un algorithme qui calcule le maximum de
N nombres donnés par l’utilisateur.
4. Ecrire un algorithme qui affiche la table de
multiplication du nombre 5.
5. Ecrire un algorithme qui affiche un triangle des
étoiles.
EXERCICES: Correction
1. Ecrire un algorithme qui calcule la somme
S=0+1+2+3+4+5+…+N. avec N donné par l’utilisateur.
ALGORITHME SOMME • N=4
VAR: i,N,S • 1ère itération: i=1
• S=0+1
Début • 2ème itération: i=2
LIRE N • S=0+1+2
S0 • 3ème itération: i=3
• S=0+1+2+3
POUR i allant de 1 JUSQU’AU N PAS 1 FAIRE • 4ème itération: i=4
SS+i • S=0+1+2+3+4
FINPOUR • S=10
→ Cumuler la somme
AFFICHER « SOMME EST: » , S des valeurs de la
FIN variable i dans S;
EXERCICES : Correction
1. Ecrire un algorithme qui calcule la factorielle de N.
F=1*2*3*….*N
ALGORITHME FACTORIELLE
VAR: i,N,F
Début
LIRE N
// N>=0
F1
POUR i allant de 1 JUSQU’AU N PAS 1 FAIRE
FF*i
FINPOUR
AFFICHER « FACTORIELLE EST: » , F
FIN
EXERCICES : Correction
1. Ecrire un algorithme qui calcule le maximum de N nombres donnés par
l’utilisateur.
ALGORITHME MAX
N=4
VAR: i,N,V, MAX
V=10 MAX=10
Début
• 1ére itération, i=2
LIRE N
• V=5 (MAX<V : FAUX)
LIRE V
• 2éme itération, i=3
MAXV // Max est la première valeur de V
• V=15 (MAX<V : VRAI)
POUR i allant de 2 JUSQU’AU N PAS 1 FAIRE
• MAX=15
LIRE V
• 3ème itération, i=4
SI MAX < V
• V=0 (MAX<V : FAUX)
ALORS
MAX V
• → Max est: 15
FINSI
FINPOUR
AFFICHER « MAX EST: » , MAX
FIN
• Ecrire un algorithme qui affiche un triangle des
étoiles.
i=1
I=2 *
I=3 ***
I=4 *****
• N=4 : NOMBRE DE LIGNE DU TRIANGLE
• AFFICHER DANS CHAQUE LIGNE i étoiles
• Algorithme triangle N=4
• Var: entier: N,i,j • 1ère itération i=1
• J: 1 -- 1
• Début • 1ère itération j=1
LIRE N • *
POUR i allant de 1 JUSQU’AU N PAS 1 FAIRE • 2ème itération i=2
// pour chaque ligne numéro i: afficher i étoiles • J: 1 – 2
Pour j allant de 1 jusqu’au i pas 1 faire • 1ère itération j=1
• *
AFFICHER « * » • 2ème itération j=
FINPOUR //j • *
AFFICHER « \n » // retour à la ligne • 3ème itération i=3
FINPOUR //i J: 1 – 3
***
FIN • 4ème itération i=3
J: 1 –4
****
BOUCLE TANT QUE
i5
TANT QUE i>=0 FAIRE
// à exécuter quand condition VRAI
AFFICHER i 5
4
i-- //i=i-1 , i -=1 3
2
FTQ 1
0
AFFICHER « AU REVOIR » AU REVOIR
BOUCLE FAIRE
• I=5 5
• FAIRE 4
3
2
AFFICHER I 1
I-=1 0
AU REVOIR
JUSQU’À I<0
// CONDITION VRAI
AFFICHER « AU REVOIR »
DIFFERENCE ENTRE TANT QUE ET
FAIRE
• Le nombre d’itération minimal:
– FAIRE: 1
– TANT QUE: 0
DIFFERENCE ENTRE TANT QUE ET
FAIRE
• I-5
• FAIRE
-5
AFFICHER I AU REVOIR
I-=1
JUSQU’À I<0
// Quitter la boucle si CONDITION VRAI
AFFICHER « AU REVOIR »
DIFFERENCE ENTRE TANT QUE ET
FAIRE
i-5
TANT QUE i>=0 FAIRE
// à exécuter quand condition VRAI
AFFICHER i
i-- //i=i-1 , i -=1
AU REVOIR
FTQ
AFFICHER « AU REVOIR »
EXERCICES
• ECRIRE UN ALGORITHME QUI CALCULE
S=1+2+3+4….+N avec la boucle FAIRE.
• ECRIRE UN ALGORITHME QUI CALCULE LA
SOMME DES NOMBRES IMPAIRS <=N
S=1+3+5+….+N avec la boucle TANT QUE.
EXERCICES
• ECRIRE UN ALGORITHME QUI LIT une suite de nombres
et affiche leur somme. La saisie s’arrête lorsque
l’utilisateur tape la valeur 999. L’algorithme doit
afficher la somme des nombre saisis (à part 999)
• Exemple:
Entrer un nombre: 1
Entrer un nombre: 2
Entrer un nombre: 5
Entrer un nombre: 999
La somme est: 8