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.
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 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.
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
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.
|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
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.
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.
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.
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).
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.
Voici une série d’exercices conçus pour perfectionner vos compétences Excel. Les corrigés sont inclus pour…
Excel offre plusieurs méthodes pour calculer une moyenne tout en tenant compte des filtres ou…
Excel propose plusieurs fonctions pour insérer ou manipuler la date actuelle. Voici les principales méthodes…
Lorsque des nombres sont stockés sous forme de texte dans Excel, ils ne peuvent pas…
Extraire uniquement les chiffres d'une cellule contenant du texte et des nombres mélangés est une…
Pour supprimer plusieurs caractères spécifiques (par exemple, des symboles, chiffres ou lettres indésirables) dans des…
This website uses cookies.