INFO LISTE 2 D’EXERCICES D’ALGORITHME Début octobre 2011 BTS1
Algorithmique n° 2
Conditionnelle Si ....... Alors ....
• Exercice n° 1
Ecrire un algorithme qui détermine le plus grand des trois
nombres X , Y , Z et qui affiche ce résultat .
----------------------------------------------------------------------------------------------
Réponse: Voici un premier algorithme qui répond avec une variable A auxiliaire.
VARIABLES
X EST_DU_TYPE NOMBRE
Y EST_DU_TYPE NOMBRE
Z EST_DU_TYPE NOMBRE
A EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE X
LIRE Y
LIRE Z
AFFICHER "X = "
AFFICHER X
AFFICHER* " "
AFFICHER "Y = "
AFFICHER Y
AFFICHER* " "
AFFICHER "Z = "
AFFICHER Z
SI ( X>Y ) ALORS
DEBUT_SI
A PREND_LA_VALEUR X
FIN_SI
SINON
DEBUT_DE_SINON
A PREND_LA_VALEUR Y
FIN_SINON
SI (Z>A) ALORS
DEBUT_SI
A PREND_LA_VALEUR Z
FIN_SI
AFFICHER* " "
AFFICHER "Le plus grand des trois nombres est "
AFFICHER A
FIN_ALGORITHME
-------------------------
Autre algorithme possible sans la variable auxiliaire A
mais avec l’utilisation de ET au niveau de la condition.
VARIABLES
X EST_DU_TYPE NOMBRE
Y EST_DU_TYPE NOMBRE
Z EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE X
LIRE Y
LIRE Z
AFFICHER "X = "
AFFICHER* X
AFFICHER "Y = "
AFFICHER* Y
AFFICHER "Z = "
AFFICHER* Z
SI (X>Y ET X>Z) ALORS
DEBUT_SI
AFFICHER "LE PLUS GRAND EST X ="
AFFICHER* X
FIN_SI
SINON
DEBUT_SINON
SI (Y>X ET Y>Z) ALORS
DEBUT_SI
AFFICHER "LE PLUS GRAND EST Y ="
AFFICHER Y
FIN_SI
SINON
DEBUT_SINON
SI (Z>X ET Z>Y) ALORS
DEBUT_SI
AFFICHER "LE PLUS GRAND EST Z = "
AFFICHER Z
FIN_SI
SINON
DEBUT_SINON
SI (X==Y OU X==Z OU Y==Z) ALORS
DEBUT_SI
AFFICHER "LE PLUS GRAND EST N’IMPORTE LEQUEL"
FIN_SI
FIN_SINON
FIN_SINON
FIN_SINON
FIN_ALGORITHME
-------------------------------------------------------------------------------------------------------------
• Exercice n° 2
Ecrire un algorithme qui saisit deux nombres X et Y , puis qui
range dans X la plus petite valeur et dans Y la plus grande valeur .
-----------------------------------------------------------------------------------------------
Réponse:
Algorithme possible avec une variable auxiliaire A.
( Voir après un autre algorithme sans variable auxiliaire A. )
VARIABLES
X EST_DU_TYPE NOMBRE
Y EST_DU_TYPE NOMBRE
A EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
AFFICHER "Entrer deux nombres"
LIRE X
LIRE Y
SI (X>=Y) ALORS
DEBUT_SI
A PREND_LA_VALEUR X
X PREND_LA_VALEUR Y
Y PREND_LA_VALEUR A
AFFICHER* " "
AFFICHER "X= "
AFFICHER X
AFFICHER* " "
AFFICHER "Y= "
AFFICHER Y
FIN_SI
AFFICHER* " "
AFFICHER "X = "
AFFICHER X
AFFICHER* " "
AFFICHER "Y = "
AFFICHER Y
FIN_ALGORITHME
-------------
Autre possibilité plus simple car sans variable auxiliaire A
VARIABLES
X EST_DU_TYPE NOMBRE
Y EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE X
LIRE Y
AFFICHER "X = "
AFFICHER* X
AFFICHER "Y = "
AFFICHER* Y
SI (X>=Y) ALORS
DEBUT_SI
AFFICHER "X = "
AFFICHER* Y
AFFICHER "Y = "
AFFICHER X
FIN_SI
SINON
DEBUT_SINON
AFFICHER "X = "
AFFICHER* X
AFFICHER "Y = "
AFFICHER Y
FIN_SINON
FIN_ALGORITHME
---------------------------------------------------------------
• Exercice n° 3
Ecrire un algorithme qui saisit trois nombres et qui les classe dans l’ordre croissant .
( On saisira les trois nombres X , Y et Z et l’exécution du programme donnera à X , Y et Z
dans cet ordre les mêmes valeurs mais ordonnées ) .
-------------------------------------------------------------------------------------------------------
Réponse: Algorithme possible. Il est intéressant de faire un arbre
pour préparer l’écriture logique de l’algorithme
Il est possible de remplacer A , B , C par X , Y ,Z.
VARIABLES
A EST_DU_TYPE NOMBRE
B EST_DU_TYPE NOMBRE
C EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE A
LIRE B
LIRE C
AFFICHER "A = "
AFFICHER* A
AFFICHER "B = "
AFFICHER* B
AFFICHER "C = "
AFFICHER* C
SI (A<B) ALORS
DEBUT_SI
SI (B<C) ALORS
DEBUT_SI
AFFICHER "A B C"
FIN_SI
SINON
DEBUT_SINON
SI (A<C) ALORS
DEBUT_SI
AFFICHER "A C B"
FIN_SI
SINON
DEBUT_SINON
AFFICHER "C A B"
FIN_SINON
FIN_SINON
FIN_SI
SINON
DEBUT_SINON
SI (A<C) ALORS
DEBUT_SI
AFFICHER "B A C"
FIN_SI
SINON
DEBUT_SINON
SI (B<C) ALORS
DEBUT_SI
AFFICHER "B C A "
FIN_SI
SINON
DEBUT_SINON
AFFICHER "C B A"
FIN_SINON
FIN_SINON
FIN_SINON
FIN_ALGORITHME
----------------------------------------------------------------------------------------------------------
• Exercice n° 4
Ecrire un algorithme qui vérifie si trois nombres lus à l’écran peuvent
être les mesures des côtés d’un triangle .
------------------------------------------------------------
Réponse: Trois nombres positifs sont les mesures des cotés d’un triangle quand
la somme de deux d’entre eux est toujours supérieure au troisième.
( Cela fait trois inégalités à respecter )
Voici un algorithme qui répond.
VARIABLES
a EST_DU_TYPE NOMBRE
b EST_DU_TYPE NOMBRE
c EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE a
LIRE b
LIRE c
AFFICHER "La longueur de [BC] est a = "
AFFICHER* a
AFFICHER "La longueur de [AC] est b = "
AFFICHER* b
AFFICHER "La longueur de [AB] est c = "
AFFICHER* c
SI (a+b>c ET a+c>b ET c+b>a) ALORS
DEBUT_SI
AFFICHER "a , b , c sont bien les longueurs des trois cotés du triangle ABC"
FIN_SI
SINON
DEBUT_SINON
AFFICHER "Non. a , b, c ne sont pas les longueurs des cotés du triangle ABC."
FIN_SINON
FIN_ALGORITHME
-------------------------------------------------------------------------------------
• Exercice n° 5
Un robot conduit une voiture . Il peut effectuer trois actions : "s’arrêter " , " ralentir " , " passer"
en fonction de la couleur du feu tricolore qui sera saisie à l’écran .
Ecrire l’algorithme qui saisit la couleur du feu et affiche l’ action à effectuer .
On pourra faire vérifier que la voie est libre avant de passer quand le feu est vert .
--------------------------------------------------------------------------------------------------------------
Réponse:
Voici un algorithme qui répond au problème. On utilise une variable chaine car
rouge , orange , vert n’est pas un nombre.
VARIABLES
Couleur EST_DU_TYPE CHAINE
DEBUT_ALGORITHME
AFFICHER "Dites si le feu est rouge ou orange ou vert "
LIRE Couleur
AFFICHER* " "
AFFICHER "Le feu est "
AFFICHER* Couleur
SI (Couleur=="rouge") ALORS
DEBUT_SI
AFFICHER " S’arrêter"
FIN_SI
SINON
DEBUT_SINON
SI (Couleur=="orange") ALORS
DEBUT_SI
AFFICHER " Ralentir"
FIN_SI
SINON
DEBUT_SINON
SI (Couleur=="vert") ALORS
DEBUT_SI
AFFICHER " Passer"
FIN_SI
FIN_SINON
FIN_SINON
---------------------------------------------------------------