cours algorithme /NSTRUCTIONS CONDITIONNELLES & ALTERNATIVES
Dans ce cours algorithme, nous intéressons aux instructions conditionnelles & alternatives.
Maîtriser le fonctionnement et la logique est le point de départ pour s’initier à la programmation et être un bon porgrammeur.
cours gratuit algorithme / cours initiation à la programmation / cours Algorithmique et techniques de programmation.
NOTION DE PRIMITIVES DE BASE STRUCTUREES.
Tous les algorithmes que l’on a vus, jusqu’à présent, ont un enchaînement d’exécution des instructions séquentiel et linéaire du début jusqu’à la fin.
Dans de nombreuses applications, on exige une exécution par morceau des sauts ou des répétitions d’un même bloc d’instructions. C’est le rôle des primitives de base structurées.
Ces primitives possèdent des structures de blocs et s’appellent aussi instructions composées.
On distingue deux grandes familles d’instructions composées:
-les primitives de choix qui permettent de choisir les instructions à exécuter selon les valeurs courantes de certaines variables ; elles sont de deux types:
- les instructions conditionnelles
- les instructions alternatives
les primitives d’itération qui sont utilisées lorsque l’on souhaite exécuter plusieurs fois le même traitement.
Les notions de choix et d’itération sont deux notions fondamentales de l’algorithmique.
Syntaxe :
L’instruction sera exécutée si et seulement si la condition est vérifiée (valeur booléennes Vrai).
Exemple 1:
Si “il pleut” Alors
“je prend mon parapluie”;
Finsi
Exemple 2 : Valeur absolue d’un nombre réel
x=/x/ si X est sup à 0
|x|=-X si X<0
Algorithme valeur_absolue1;
Var
X: réel;
Début
Lire(X);
Si X<0 Alors
Finsi
x ← -X
Ecrire(‘la valeur absolue est :’,X);
Fin
L’instruction Si…Alors…Sinon…Finsi.
Syntaxe :
Si condition Alors Instruction1 |
Sinon |
Instruction2; |
Finsi |
Organigramme :
Instructionl est exécutée si la condition est vérifiée,sinon c’est Instruction2 qui sera exécutée.
Exemple3:
Si “Il fait beau” Alors
“Vous pouvez sortir en pique-nique”
Sinon
“Vous restez chez vous”;
Finsi
Exemple 4 : Valeur absolue de la différence de deux nombres réels.
Ecrire un algorithme qui permet d’afficher la valeur absolue de la différence entre deux nombres réels saisis au clavier.
—–Cours Algorithmique et techniques de programmation——–
|X-Y|=X-Y siX>Y
|X-Y| =-(X-Y)=Y-X si X<Y
Donc on va calculer X-Y si X>Y et Y-X si X<Y
Algorithme valeur_absolue2;
Var
Début
X,Y,Z:réels;
Lire(X);
Lire(Y);
Si X>Y Alors
Z ← X-Y
Sinon
Z ← Y-X;
Finsi
Ecrire(‘la valeur absolue de la différence est :’,Z);
Fin
Imbrication de Si
Dans de nombreuses applications, on peut avoir plusieurs cas d’exécution selon différentes conditions. Il faut donc exprimer beaucoup de Si les uns à la suite des autres pour englober tous les cas.
Un Si peut être exprimé à la suite d’un Alors d’un autre Si et/ou à la suite de son Sinon.
Exemple 5:
Un moniteur d’auto-école veut apprendre à un candidat au permis de conduire ce qu’il faut faire dans un croisement avec feu.Il y a trois possibilités :
– si le feu est vert, le candidat peut passer,
-si le feu est orange, le candidat doit ralentir et se préparer pour s’arrêter,
– si le feu est rouge, le candidat doit s’arrêter.
On va proposer un algorithme de résolution de ce problème.
Algorithme croisement_feu;
Var
Couleur_feu:chaîne de caractères;
Début
Ecrire(‘Observer la couleur du feu’);
Lire(Couleur_feu);
Si Couleur_feu = “rouge” Alors
Ecrire(‘Arrêtez-vous immédiatement’)
Sinon Si Couleur_feu = “Orange” Alors
Ecrire(‘Ralentissez et préparez-vous pour
vous arrêter’)
Sinon
Ecrire(‘Passez’);
Finsi
Finsi
Fin
Dans cet exemple, on remarque l’utilisation d’un Si après SINON d’un autre SI.
Etude d’un exemple.
Exemple 6:
On désire écrire un algorithme qui permet d’afficher le jour correspondant à un chiffre allant de 1 à 7, entré au clavier.
On peut résoudre ce problème en utilisant 7 Si imbriquées.
Dans cet algorithme, on remarque beaucoup d’imbrications de plusieurs Si, ce qui peut être à l’origine d’ambiguïté et d’erreurs d’oubli d’un Sinon ou d’un Finsi, et donc d’un mauvais fonctionnement de l’algorithme.
Solution : avec la primitive Cas, nous allons résoudre complètement le problème.
Syntaxe
Cas variable
Valeur_1: instruction_1;
Valeur_2:instruction_2;
Valeur_N:instruction_N
Sinon
instruction_par_defaut;
Fincas
La machine aura le choix parmi N valeurs.
L’instruction qui sera exécutée est celle qui correspondra à la valeur courante de la variable testée.
Lorsque cette exécution est achevée, on va ignorer toutes les instructions suivantes à l’intérieur de Cas et passer directement à l’instruction venant immédiatement après celle-ci.
Les choix sont exclusifs l’un de l’autre (une même valeur ne peut pas entraîner deux traitements différents).
Par contre deux valeurs différentes peuvent entraîner un même traitement. Nous pouvons alors les regrouper séparées par des virgules avant de décrire le traitement.
Les valeurs peuvent se présenter sous forme d’un intervalle.
Si la variable n’est égale à aucune des valeurs testées, c’est instruction_par_défaut qui est exécutée.
L’instruction par défaut n’est pas obligatoire. Dans ce cas,si la variable n’est égale à aucune des valeurs testées alors on ignore purement et simplement l’instruction Cas et on passe à l’instruction suivante.
Les instructions i peuvent être simples ou composées.
La variable de sélection doit être déclarée, et ne doit avoir qu’un type discret (entier ou caractère mais pas réel).
Algorithme salut
Var
Heure:entier;
Début
Lire(Heure);
Cas Heure
6,7,8,9, 10, 11, 12 : Ecrire(‘Bonjour’);
13..18 :Ecrire(‘Bon après-midi’);
Sinon Ecrire(‘Bonsoir’);
Fincas
Fin
Dans cet exemple on a supposé, que l’utilisateur n’introduit qu’un nombre entier compris entre 0 et 23. Nous verrons dans le prochain chapitre, comment faire ce genre de contrôle dans le cas général.