Vous êtes sur la page 1sur 14

1

LSI 1

• Les structures conditionnelles


• L’alternative, la sélective
• Les structures itératives
• Répéter… jusqu’à, Tantque, Pour
2

LSI 1

Les structures conditionnelles


• L’alternative
▫ L’alternative est basée sur l’évaluation d’une condition pour décider les instructions à exécuter

Faux Vrai Faux Vrai


Condition Condition

Traitement1 Traitement2 Traitement1

Fin Fin

SI << Condition(s) >>


SI << Condition(s) >> ALORS
<< Traitement 1 >>
ALORS
<< Traitement 1 >> SINON
<< Traitement 2 >>
FIN SI
FIN SI
3

LSI 1

Les structures conditionnelles


• Application
▫ Ecrire un algorithme permettant de calculer et afficher le maximum de 3 entiers a, b et c donnés par l’utilisateur
▫ Donner la trace de l’algorithme pour le jeu de données (4, 5, 1)
 Solution 1  Solution 2

ALGORITHME Maximum ALGORITHME Maximum


VAR VAR
a, b, c, max : entier
a, b, c, max : entier
DEBUT
DEBUT
Ecrire ("Donnez les trois entiers :")
Ecrire ("Donnez les trois entiers :")
Lire (a, b, c)
Si (a > b) Lire (a, b, c)
alors max  a max a
sinon max  b Si (b > max)
FinSi alors max  b
Si (c>max) FinSi
alors max  c Si (c>max)
FinSi alors max  c
Ecrire (" Le maximum est ", max )
FinSi
FIN
Ecrire (" Le maximum est ", max )
FIN
4

LSI 1

Les structures conditionnelles


• Imbrication des schémas conditionnels
▫ On peut avoir besoin parfois d’imbriquer des schémas conditionnels et ce selon le problème à
résoudre
5

LSI 1

Les structures conditionnelles


• Imbrication des schémas conditionnels : Exemple signe d’un
entier
Si X>0 alors
Ecrire ("X est strictement positif")
sinon
// x est inférieur ou égal à 0
si x = 0 alors
Ecrire ("X est égal à 0")
sinon
// cas ou x est strictement négatif
Ecrire ("X est strictement négatif")
FinSi
FinSi
6

LSI 1

Les structures conditionnelles


• La sélective

• Avec
▫ Sélecteur : est un identificateur d’un objet ou une expression

▫ Traitement i : est une suite d’actions à exécuter

▫ Liste_de_valeur i : peut être donnée sous forme de constante(s) et/ou d’intervalle(s) constante(s) de type compatible avec
celui du <<Sélecteur >>
7

LSI 1

Les structures conditionnelles


• La sélective
▫ La forme SELON provoque l’exécution du traitement correspondant au cas qui contient la valeur de
sélecteur
 Chaque valeur du sélecteur ne peut apparaître qu’une seule fois dans les listes des valeurs.

▫ Si la valeur du sélecteur ne correspond à aucune valeur parmi celles des listes des valeurs, et si la
partie SINON existe, le traitement correspondant à cette partie sera exécuté
 Si la partie SINON n’est pas présente, dans ce cas aucun traitement ne sera exécuté et l’exécution se
poursuivra à l’instruction immédiatement après la FIN SELON

▫ Le sélecteur peut être de type caractère, entier, logique ou autre type scalaire, mais ne peut être ni
de type réel ni chaîne de caractères
8

LSI 1

Les structures conditionnelles


Application
Ecrire un algorithme qui permet de tester la validité d’une date saisie sous la forme de jour, mois et année
Solution
ALGORITHME Validité_Date
VAR
J,M,A: entier
DEBUT
Ecrire ("Donnez la date :") Lire (J,M,A)
Si ( (j<1 ou j>31) ou (M<1 ou M>12) ou ( A<0))
Alors Ecrire(" date non valide ")
Sinon
Selon M faire
1,3,5,7,8,10,12 : Ecrire (" date valide ")
4,6,9,11 : Si (j=31) Alors Ecrire (" date non valide ")
Sinon Ecrire (" date valide ")
FinsSi
2 : Si ((j<29) ou ( j=29 et A mod 4 =0 et A mod 100 <>0))
Alors Ecrire (" date valide ")
Sinon Ecrie (" date non valide ")
FinSi
FinSelon
FinSi
FIN
9

LSI 1

Les structures itératives


• La boucle répéter … Jusqu’à
▫ Syntaxe
Traitement
RÉPÉTER
Traitement
JUSQU'À ( Condition ) Faux Vrai
Condition

▫ L’évaluation et le test de la condition sont réalisés après l’exécution du traitement (ensemble d’instructions
composant le corps de la boucle) : première itération
▫ Si la condition n’est pas satisfaite, le traitement est re-exécuté à nouveau. Il en résulte que le traitement est
exécuté au moins une fois
▫ Dans ce type de boucle, le nombre de répétitions est généralement non déterminé d’avance (non connu a priori).
Il doit exister au moins une instruction (faisant partie du traitement à exécuter) qui doit changer la valeur de la
condition au cours des itérations
10

LSI 1

Les structures itératives


• La boucle Tantque
▫ Syntaxe

TANT QUE ( Condition) FAIRE Traitement

Traitement Vrai Faux


Condition

FIN FAIRE

▫ L’évaluation et le test sur la condition sont réalisés avant l’exécution du traitement


 en conséquence, il est possible que le traitement ne soit jamais exécuté (si la première évaluation de la condition a pour
résultat Faux)

▫ Il est nécessaire alors de s’assurer que les éléments constituant la condition varient de telle manière que la
boucle soit finie
 pour ce faire, on doit avoir au moins une instruction qui permet d’agir sur la condition pour s’assurer que la boucle s’arrête
après un certain nombre d’itérations
11

LSI 1

Les structures itératives


• La boucle Pour

▫ Syntaxe

POUR I de m à n [ PAR PAS DE p] FAIRE


Traitement
FIN FAIRE

▫ L’élément permettant le contrôle de la boucle (I) prendra ses valeurs dans l’intervalle fermé [m..n]
 Le nombre d’itérations dépendra alors du nombre d’éléments de cet ensemble tout en tenant compte du pas p

▫ Cette structure permet de répéter un traitement un nombre de fois déterminé par la formule suivante : ((n-m) div p)+1

▫ Si le pas n’est pas spécifié, il vaut 1 par défaut


 L’initialisation de I à m et son incrémentation / décrémentation de p sont deux instructions qui sont faites automatiquement
12

LSI 1

Les structures itératives


• Transformations ?
▫ Répéter / tant que
 Il est toujours possible de remplacer une structure Répéter par une structure Tant Que

 Le sens inverse n’est possible que si on est certain que le traitement est exécuté au moins une fois avec Tant Que

▫ Pour / Tant que


 Il est toujours possible de remplacer une structure Pour par une structure Tant Que

 Le sens inverse n’est pas toujours évident (si on ne connaît pas le nombre de répétitions)
13

LSI 1

Les structures itératives


• Exemple Soient a=r0, b=r1 deux entiers strictement
▫ Ecrire un algorithme qui permet de calculer positifs, tels que r0=r1.q+r2 avec 0≤r2<r1
et afficher le PGCD de 2 entiers a et b
• Si r2 = 0, pgcd (r0, r1) = r1
• Sinon, rediviser ri par ri+1 tant que ri+1 est
• Présentation informelle différent de 0
• Si rn est le premier reste nul
Soient a, b deux entiers positifs (a>b). alors
Soient q le quotient et r le reste de la
pgcd(r0,r1) = pgcd(r1,r2)
division entière de a par b.
=…
=pgcd(rn-1,rn)
Alors pgcd(a,b) = pgcd(b,r) = pgcd(rn-1,0)
Exemple = rn-1
pgcd(105,30)=pgcd(30,15)=pgcd(15,0)=15
14

LSI 1

Les structures itératives


• Solution • Trace de l’algorithme pour
504 396 a
ALGORITHME PGCD • a=504 et b=396
VAR
108 1
a, b, P : entier
DEBUT
Ecrire ("Donnez les 2 entiers :")
Lire (a, b)
// permutation si nécessiare b 396 108 a
si (a<b) alors
aa+b 72 3
ba-b
a  a-b
finsi

tant que ( b <> 0) faire


b 108 72 a
r  a mod b
ab 36 1
br
Fin Faire
p a 72 36 a
Ecrire (" Le pgcd est ", p ) b
FIN 0 2

Vous aimerez peut-être aussi