Cours: Algorithmique I - A. Oubelkacem - Département d'Informatique

La page est créée Dominique Bertrand
 
CONTINUER À LIRE
Cours: Algorithmique I - A. Oubelkacem - Département d'Informatique
Université de Moulay Ismail
                                           Faculté des Sciences Meknès

Filière: SMIA
                                 Département d‘Informatique

                Cours: Algorithmique I

                                                                A. Oubelkacem
                    Cours d'algorithmique- SMIA2- 2020/2021                     1
Introduction à l’informatique

Introduction à la programmation

Algorithmique: Outils de base

Structures d’un algorithme

Instructions conditionnelles et alternatives

Instructions répétitives (les boucles)

Les chaines de caractères

Les variables dimensionnés ( les tableaux)

    Cours d'algorithmique- SMIA2- 2020/2021
Introduction à l’informatique

                           L’informatique ?

                                                           Computer Science
                             INFORMATIQUE ?                en anglais

             INFORMATION                         AUTOMATIQUE

                                 Art d’entraîner automatiquement des actions
Science de l’information

    Traitement automatique de l’information
                                                            ORDINATEUR
                           Machine automatique
Ordinateur
  • Machine qui permet de traiter de l’information :
        d’acquérir et de conserver de l’information (acquisition,
       stockage)
        d’effectuer des traitements (calcul),
        de restituer les informations stockées (restitution)
  • Permet de lier «information»  «données» (0 ou 1)
  • Différents types d’informations : valeurs numériques,
  textes, images, sons, …: tout cela avec des 0 ou 1
Schéma de principe du traitement de l’information
 Données à l’état brut

        ENTREE
                                                Données corrigées
                            TRAITEMENT          Résultats
                             Par ordinateur

                                                    SORTIE
Domaines de l’informatique
Domaine du matériel (hardware)
   • partie physique de l’ordinateur
   • composants constituant un ordinateur (microprocesseur …)
   • support du traitement de l’information (disque dur …)
Domaine du logiciel (software)
   • instructions expliquant à l’ordinateur comment traiter un
   problème.
   • Cela nécessite de décrire des : algorithmes et
   représentations informatiques de ces instructions pour
   aboutir à un programme.
Introduction à la programmation

I.1 Généralités
Pour résoudre un problème donné en informatique,
l’utilisateur doit mettre au point un programme et le faire
exécuter par la machine
Un programme est une succession logique et ordonnée d’instructions.

La programmation est l’ensemble des taches qui permettent d’élaborer un
programme.
Pour écrire un programme il faut:
         Bien connaitre le problème;

         Savoir le découper logiquement en un ensemble d’opérations
          élémentaires ( actions)

         Connaitre un langage compréhensible par la machine
Introduction à la programmation

La démarche a suivre dans la résolution d’un problème en informatique est
donc:

                 Analyse du pb              Traduction
      Problème                    Algorithme                Programme

                 Recherche des                 De l’algorithme
                 outils de résolution          dans un langage
                 et décomposition              compréhensible
                 en étapes                     par la machine
                 élémentaires

Question: qu’est ce qu’un algorithme alors?
Introduction à la programmation

Exemples
Considérons la suite d'instructions suivante :
  1. Faites chauffer de l'eau dans une casserole
  2. Une fois que l'eau boue, placez les pâtes dans
     l'eau
  3. Attendez dix minutes
  4. Versez le tout dans un écumoire
  5. Vos pâtes sont prêtes.
Vous l'aurez deviné, il s'agit des grandes lignes de la recette
permettant de préparer des pâtes!! Il s'agit seulement d'une suite
d'instructions devant être exécutées a la lettre. Si vous ne les
suivez pas, vous prenez le risque que le résultat ne soit pas celui
que vous attendez!!!
Introduction à la programmation

Définition

 On conclut de de la façon suivante : nous avons vu qu'il
 existait des séquences d'instructions faites pour être exécutée
 a la lettre et sans se poser de questions, c'est le principe de
 l'algorithme.
 Nous retiendrons donc qu’un algorithme est une
 séquence d'instructions exécutée de façon logique mais
 non intelligente.

    Logique parce que la personne (ou la machine) qui exécute les
     instructions est capable de comprendre et exécuter sans erreur
     chacune d'elles.
    Non intelligente parce que la personne qui exécute l'algorithme n'est
     pas supposée apte a comprendre pourquoi la succession d‘étapes
     décrite par l'algorithme donne bien un résultat correct.
Introduction à la programmation

I.2. Origine du mot « algorithme »?

Le mot Algorithme prend étymologiquement ses racines
dans le nom d’un célèbre mathématicien arabe,
Musulman, géographe, astronome, perse du IX ème
siècle appelé Mohammed Ibn Musa Al Khawarizmi.

Les algorithmes sont extrêmement puissants : en
concevant un algorithme, vous pouvez décomposer un
calcul compliqué en une succession d‘étapes
compréhensibles,
I.3 Définition d’un algorithme

 Un algorithme se compose d’un ensemble fini d’étapes,
chaque étape étant formée d’un ensemble fini d’opérations
dont chacune est définie d’une façon rigoureuse

 Un algorithme est un moyen de description des étapes à
suivre pour résoudre un problème. Il doit:
    Contenir un nombre fini d’actions exécutables par la
   machine.
    Ne demander à l’utilisateur que des données connues
   par celui-ci.
    Proposer des résultats intéressants pour l’utilisateur.
    Etre exécutable par une personne utilisant des moyens
   manuels( stylo, papier,…).
I.3 Définition d’un algorithme

              Etape 1                 Etape n   Opération 1
                        Opération 1
Algorithme:                                     Opération 2
                        Opération 2
                                                ….
                        ….
                                                Opération L
                        Opération m

 Un algorithme utilise un certain nombre d’objets pour
 fonctionner.

 Cet ensemble s’appelle: Environnement de l’algorithme.
 Cet environnement est constitué:
   Des objets d’entrée (OE) qui représentent l’ensemble
  de données que l’utilisateur doit introduire à l’algorithme
   Des objets de sortie (OS) qui représentent l’ensemble
  des résultats produits par l’algorithme
I.3 Définition d’un algorithme
 Des objets constants (OC) qui représentent
l’ensemble des objets dont les valeurs ne change pas
au cours de toute l’exécution de l’algorithme
 Des objets intermédiaires (OI) qui représentent l’ensemble
des objets de traitements internes, ils ne sont ni entrés ni
sortis, mais ils sont soit:
- des compteurs,
- calculés à partir des objets d’entrée et des objets constants et serviront
pour produire les objets de sortie.
                             Objets Constants
                             (OC)
    Objets                                               Objets de
    d’Entrées (OE)               ALGORITHME              Sortie (OS)
                             Objets
                             Intermédiaires (OI)
I.4 Qu’est ce qu’un bon algorithme
Un algorithme informatique se ramène donc toujours au
bout du compte à la combinaison de quatre petites
briques de base:
       •L’affectation de variables
       •La lecture/ écriture
       •Les tests
       •Les boucles
Dans un algorithme on peut avoir quelques unes,
quelques dizaines, et jusqu’à plusieurs centaines dans
certains programmes.
La taille d’un algorithme ne conditionne pas en soi sa
complexité: de longs algorithmes peuvent être
finalement assez simple, et de petits algorithme
peuvent être très compliqués.
                       Cours d'algorithmique- SMIA2- 2020/2021
I.4 Qu’est ce qu’un bon algorithme
On peut noter qu’un bon algorithme est un schéma de
résolution possédant les caractéristiques suivantes:
    Correct: s’il répond au problème posé.
    Précis: s’il fournit exactement les résultats attendus.
    Rapide: s’il utilise un temps d’exécution minimal
   indépendamment de la vitesse de la machine.
    Efficace: s’il utilise le moins        d’espace mémoire
   possible.
    Clair et lisible: s’il ne présente pas de difficulté de
   compréhension pour un autre programmeur désirant le
   maintenir ou le développer.
    Résistant: s’il est capable de détecter les cas de
   mauvaise utilisations.
I.4 Qu’est ce qu’un bon algorithme

Exemple de résistance d’un algorithme

Dans la résolution d’une équation de premier degré:
                       a.x+b=0

Pour laquelle: x=-b/a

Un algorithme de résolution de cette équation doit réagir si
on lui introduit une valeur a=0 ( mauvaise utilisation), en
refusant de calculer la solution et en affichant par
conséquent un message d’erreur, sinon la machine va se
bloquer car elle ne sait pas faire des divisions par zéro.
I. 5. Objectifs de l’algorithmique
L’objectif de l’algorithmique est de permettre une bonne
analyse du problème afin de proposer la meilleure
solution, celle-ci doit être correcte, rapide, précise et
moins couteuse en utilisant un ensemble de
techniques de programmation.
L’analyse d’un problème en informatique peut prendre
jusqu’à 90% du temps alloué à la résolution du
problème.
Cette analyse permet:

 De transformer le texte du problème en un ensemble d’étapes
élémentaires
 De revoir les outils élémentaires utilisés dans la solution pour essayer
d’optimiser, si possible, ce schéma avant de procéder à sa traduction
dans un langage de programmation
I. 5. 1 Structure simplifiée d’ l’algorithmique
Rappelons qu’:
 Un algorithme est un ensemble formé par un
   environnement et des actions
 L’environnement d’un algorithme est l’ensemble formé
   par tous les objets utilisés par celui-ci.
Pour utiliser un objet dans un algorithme, il faut le déclarer
à la machine afin que celle-ci puisse lui réserver la place
mémoire nécessaire pour le loger.
On distinguera trois parties dans un algorithme:
 Le titre, tout algorithme porte un titre. Choisissez un titre qui
  permet de comprendre ce que fait l'algorithme.
 une partie déclaration de tous les objets utilisés par
  l’algorithme ( CONST, VAR)
 une partie exécutable contenant toutes les actions permettant
  d’agir sur ces objets délimitée par les mots DEBUT et FIN
I.5. 2 Présentation d’un algorithme

Un algorithme pourra se présenter par un langage
algorithmique (pseudo code) de la manière suivante:

          Algorithme nom_algorithme;
               (Déclaration)
          Const
               NOM_DE_CONST=valeur_de_const;
          Var
               nom_var: nom_type_var;
          Début
               (Corps de l’algorithme)
               (Actions)
          Fin
Remarque: si plusieurs objets variables sont de même type,
  nous pouvons alors les regrouper tous ensembles séparés
  par des virgules.
Exemple des variables et constantes:
    CONST    ANNEE_COURS=2018;
            TAILLE_MIN=1.75;
             REPONSE=‘’OUI’’;
    VAR   Nom, Prenom : chaine de caractère;
          Age : entier;
          Etat_civil : booléen;
Exemple: algorithme de calcul et affiche la somme, le produit
  et la moyenne de trois nombres entiers a,b et c.
Exemple: algorithme de calcul du périmètre et de la surface
  d’un cercle de rayon R.
I. 6. 2 Les organigrammes

   Définition:
   Un organigramme est une représentation schématique ou
   graphique d’un algorithme mettant en valeur sa structure.

   Un organigramme permet de mieux présenter les
   différents modules de traitement et d’exploiter la
   succession des opérations d’un travail
 Liste des symboles les plus utilisé dans un ogranigramme

Séquence                          Instruction
           Test et    Opération                 Sortie     Début ou fin
           décision   : calcul    d’entrée ou   disque
                                  de sortie     magnétique
I. 6. 2 Les organigrammes
Exemple:
Traduction schématique de l’algorithme de calcule du
périmètre d’un cercle de rayon R:
                          Début

                          Lecture
                         du rayon
                             R

                      P=2*3.14*R

                       Affichage
                           du
                       résultat P

                            Fin
2. Les outils de base de l’algorithmique

2.1 Notion d’objet
 Un algorithme est constitué d’un:

     Ensemble fini d’objets appelé environnement,

     Ensemble fini d’actions permettant de traiter ces objets.

 Un objet peut se présenter sous deux formes différentes:

     Objet constant

     Objet variable
Une variable est un emplacement dans la mémoire ou est stockée une
valeur. Une variable porte un nom, ce nom est laisse au choix du
concepteur de l'algorithme, il doit commencer par une lettre et ne pas
comporter d'espace.
Les outils de base de l’algorithmique

Pour définir parfaitement un objet (une variable) en vue de sa
manipulation par une machine, il faut spécifier les
caractéristiques suivantes:
     Son identificateur,
     Sa valeur,
     Son type.
2. 2. Identificateur d’un objet
 C’est un nom symbolique que nous attribuons à l’objet
 représenté par une suite de caractères. Il doit obéir aux
 exigences suivantes:

     Il doit commencer obligatoirement par une lettre.
Les outils de base de l’algorithmique

 La suite des caractères peut être composés soit:

   des lettres non accentuées( a,b,...z,A,B,…Z),
   des chiffres ( 0,1,2,….9),
   du caractère soulignement « _ ».

 Il ne doit contenir ni espace ni caractères spéciaux.
Exemple 1
temps, calcul_vectoriel, mois1, a54b2:
    sont des identificateurs corrects.
1temps, calcul vectoriel, a54/b2:
    sont des identificateurs non corrects.
Remarque: de préférence le nom (identificateur) est choisi
en rapport avec le rôle de l’objet.
Les outils de base de l’algorithmique

Exemple 2
 Si dans un algorithme de gestion d’une entreprise, on veut
 nommer un objet représentant le nombre d’employés, on
 peut utiliser:

 A:             qui est une mauvaise appellation,
 NE:            qui est une appellation moyenne,
 Nbre_employes: qui est une bonne appellation.
2. 3 Valeur d’un objet
  C’est le contenu courant d’un objet. Ce contenu peut être:
      Constant: s’il ne peut pas être modifié par les
     instructions de l’algorithme tout au long de son
     exécution.
      Variable: dans le cas contraire.
Les outils de base de l’algorithmique

2.4 Type d’objet
A chaque variable utilisée dans le programme, il faut associer
un type qui permet de définir :
• l’ensemble des valeurs que peut prendre la variable
• l’ensemble des opérations qu’on peut appliquer sur la
variable.
La syntaxe de l’action de déclaration est la suivante :
          Variable 1, Variable 2, … : Type

Les principaux types utilisés en algorithmique sont :
       - le type entier
       - le type réel
       - le type caractère
       - le type chaîne de caractères
       - le type logique ou booléen.
Les outils de base de l’algorithmique

Le type Entier
Une variable est dite entière si elle prend ses valeurs dans Z
(ensemble des entiers relatifs) et qu’elle peut supporter les
opérations suivantes :

Exemples
           17 div 5 = 3
           17 mod 5 = 2
Remarque: L’ensemble de valeurs que peut prendre un entier varie
selon le langage de programmation utilisé.
Les outils de base de l’algorithmique

Le type réel ou décimal
Il existe plusieurs types de réels représentant chacun un
ensemble particulier de valeurs prises dans IR (ensemble des
nombres réels). Ici encore, cette distinction se justifie par le
mode de stockage des informations dans le langage de
programmation.
Il existe deux formes de représentation des réels :
 la forme usuelle avec le point comme symbole décimal.
Exemples :
 -3.2467     2      12.7     +36.49
 la notation scientifique selon le format aEb, où :
a est la mantisse, qui s’écrit sous une forme usuelle
b est l’exposant représentant un entier relatif.
Exemple :
 325 = 3.25E2 = 0.325E+3 = 3250E-1 = ...
Les outils de base de l’algorithmique

Les opérations définies sur les réels sont :

Le type caractère
 Un caractère peut appartenir au domaine des chiffres de ”0” à ”9”,
 des lettres (minuscules et majuscules) et des caractères spéciaux
 (”*”, ”/”, ”{”, ”$”, ”#”, ”%” …). Un caractère sera toujours noté
 entre des guillemets. Le caractère espace (blanc) sera noté ” ”.
 Les opérateurs définis sur les données de type caractère sont :
Les outils de base de l’algorithmique

Les opérations définies sur les caractères sont :

Remarque: La comparaison entre les caractères se fait selon leur
codes ASCII.
Exemple
               ” ” < ”0” < ”1” < ”A” < ”B” < ”a” < ”b” < ”{”
                34    48   49      65    66     97   98
Les outils de base de l’algorithmique
Les outils de base de l’algorithmique

Le type logique ou booléen
 Une variable logique ne peut prendre que les valeurs ”Vrai” ou
 ”Faux”. Elle intervient dans l’évaluation d’une condition.
 Les principales opérations définies sur les variables de type
 logique sont :
 la négation (NON), l’intersection (ET) et l’union (OU).
 L’application de ces opérateurs se fait conformément à la table
 de vérité suivante :
Les outils de base de l’algorithmique

Remarque : le domaine {vrai, faux} est équivalent au domaine
  {0,1}

  Les tables de vérité des opérateurs logiques peuvent s’écrire:
     A    B       L=A ET B            A     B       L=A OU B         A     L=NON A

     0    0       0                   0     0       0                0     1

     0    1       0                   0     1       1                1     0

     1    0       0                   1     0       1

     1    1       1                   1     1       1

L’op. ET peut être matérialisé   L’op. OU peut être matérialisé   L’op.    NON      peut   être
physiquement      par   deux     physiquement      par   deux     matérialisé physiquement par
interrupteurs en série pour      interrupteurs en // pour         un interrupteur normalement
allumer une ampoule L            allumer une ampoule L            fermé au départ pour allumer
                                                                  une ampoule L
Les outils de base de l’algorithmique

Type Chaîne de caractère : pour manipuler des chaînes
  de caractères permettant de représenter des mots ou
  des phrases.

Exemple : "bonjour, Monsieur" (une chaîne de caractère
  est toujours notée entre guillemet

Remarque: En pseudo-code, une chaîne de caractères
  est toujours notée entre guillemets " ", car, il
peut y avoir une confusion entre des nombres et des
  suites de chiffres. Par exemple, 423
peut représenter :
• le nombre 423 (quatre cent vingt-trois),
• ou la suite de caractères 4, 2, et 3 notée : "423"
2. 5 les expressions
Ce sont des combinaisons entre des variables et des
constantes à l’aide d’opérateurs. Elles expriment un calcul
(expressions arithmétiques) ou une relation (expressions
logiques).
1. Les expressions arithmétiques:
Exemple : x* 53.4 / (2 + pi)
L’ordre selon lequel se déroule chaque opération de calcul
est important.
Afin d’éviter les ambiguïtés dans l’écriture, on se sert des
parenthèses et des relations de priorité entre les opérateurs
arithmétiques :

                         Ordre de priorité des opérateurs arithmétiques
2. 5 les expressions
Remarque: En cas de conflit entre deux opérateurs de même
priorité, on commence par celui situé le plus à gauche.
2. Les expressions logiques:
Ce sont des combinaisons entre des variables et des
constantes à l’aide d’opérateurs relationnels (=, =,
#) et/ou des combinaisons entre des variables et des
constantes logiques à l’aide d’opérateurs logiques (NON , ET,
OU, …).
Ici encore, on utilise les parenthèses et l’ordre de priorité
entre les différents opérateurs pour résoudre les problèmes
de conflits.

       opérateurs logiques
                                             opérateurs relationnels
2. 6 Applications
1- Quel est l’ordre de priorité des différents opérateurs de
l’expression suivante :
            ((3 * a) – x ^ 2) – (((c – d) / (a / b)) / d)
2- Ecrire la formule suivante sous forme d’une expression
arithmétique :

 Réponses:

           2-
3. Instructions élémentaires en algorithmique

3. 1 Introduction

Les instructions élémentaires sont les instructions qui
figurent le plus souvent dans tous les algorithmes. Elles
sont au nombre de trois:

    L’affectation,

    Les instructions d’entrée de données,

    Les instructions de sortie de données.
3. Instructions élémentaires en algorithmique

3. 2 l’affectation
L’opération affectation permet d’assigner une valeur à un
objet. Elle est représenté en algorithmique par une flèche
orientée de droite vers la gauche: 

Syntaxe : Identificateur_objet  valeur

L’opération d’affectation présente certaines possibilités et
impose certaines conditions.
1.1 Possibilités
Le membre droite d’une affectation ( valeur) peut être soit:

 Une variable de même type que Identificateur_objet: V  A

 Une constante de même type que Identificateur_objet: V 4
3. Instructions élémentaires en algorithmique

 Une expression dont l’évaluation produit un
  résultat final de même type que Identificateur_objet:
        V  3*A+2*B-4

1.2 Conditions
 Une affectation est exécutable si et seulement si:
  Le membre gauche de l’affectation( identificateur_objet) est
 une variable déclarée.
 Par conséquent les écritures suivantes n’ont pas de sens:
  8 A        ou A+B  C
  La partie droite de l’affectation représente une quantité
    bien définie
 Par conséquent la 2ème affectation dans l’exemple suivant
    n’est pas exécutable:
 A  0;
 V  1/A;
3. Instructions élémentaires en algorithmique

   Les types de deux parties de l’affectation sont les mêmes.
  Par conséquent la 2ème affectation dans l’exemple suivant
  n’est pas exécutable:

  Var     A: entier;
          C: caractère;
  Début
          A  6;
          C  A;
  fin
Exemples d’utilisation de l’affectation

  En mémoire si A=6 et B=4,
 alors après affectation A  B; on aura
      A=4 et B=4
3. Instructions élémentaires en algorithmique
Exemples d’utilisation de l’affectation

  A  3;
       donc A=3.
   B  A;
       on aura donc B=3.
  C  (A+B)*2;
  on aura donc C=12.
  i  4;
        donc i=4.
  i  i+1;
       on aura donc i=5;

  Remarque: l’affectation détruit complètement et
  définitivement le contenu précédent de la variable
  affectée si elle en avait un.
3. Instructions élémentaires en algorithmique

3. 1 Instructions d’entrée/ sortie
 Pour bien fonctionner, un algorithme doit en général
 acquérir des données( entrées) sur un périphérique(
 exemple de clavier) et fournir en conséquence des
 résultats ( sorties) sur un autre périphérique( écran).
 Pour réaliser ces taches fondamentales en
 programmation, on a donc besoin de deux opérations
 distinctes:

 Lire(v): qui permet d’affecter à la variable (v) , la valeur
 lue sur le périphérique d’entrée,
 Ecrire(v1): qui permet de transformer la valeur ( v1) vers
 le périphérique de sortie
3. Instructions élémentaires en algorithmique

Remarques
  L’identificateur (v) doit être une variable déclarée. Par
 conséquent les écritures suivantes n’ont pas de sens:

           Lire(8); !!
           Lire(A+B); !!

  La valeur (v1) peut être soit:
 Une variable déclarée: exemple: Ecrire(A);
 Une constante: exemple : Ecrire(8);
 Une expression : exemple: Ecrire( 3*B+4*D-2).

  Un algorithme doit être interactif. Pour faciliter l’utilisation
 de l’algorithme en affiche des messages explicatifs qui
 doivent être écrits entre apostrophes (” ”).
3. Instructions élémentaires en algorithmique

Exemple 1
Qu’obtient t-on à l’écran après l’exécution des instructions suivantes
:
   x5
   Ville  ”Meknes”
   Ecrire(x)
   Ecrire(x*x)
   Ecrire(”Ville”)
   Ecrire(”Ville = ”,Ville)

                                       5
                                       25
                                       Ville
                                       Ville = Meknes
3. Instructions élémentaires en algorithmique
Exemples 2
 1. Quelles sont les valeurs successives prises par les
 variables X et Y suite aux instructions suivantes:
 X 1;
 Y  -4;     X      1      1     4      -9     -9    -9
 X  X+ 3;
             Y      ----   -4    -4     -4     -7    -13
 X Y-5;
 Y X+2;
 Y Y-6

 2. Soit 2 variables quelconque( nombre ou caractère) x et y
 ayant respectivement comme valeur a et b. Quelles sont
 les affectations qui donneront à x la valeur b et à y la valeur
 a?                                           xy;
 Analyse: la première idée est d’écrire :     yx;
 Mais ça ne marche pas, les deux variables se retrouvent
 avec la même valeur b! Il faut mettre la valeur de x de coté
 dans une autre variable auxiliaire pour ne pas la perdre.
3. Instructions élémentaires en algorithmique
 algorithme
 Algorithme permutation;
 Var
    x, y, z: entier;
 Début
 Ecrire(”Entrez deux valeurs pour x et y ”);
 Lire(x,y);
 z x
 xy;
 yz
 Ecrire(”la valeur de x et y après permutation est:”,x,y);
 Fin             X 1; X=1            Y=             Z=
Vérification! Y  -4; X=1             Y=-4           Z=

               z  X;   X=1           Y=-4            Z=1

                        X=-4          Y=-4            Z=1
               X Y;
                        X=-4          Y=1             Z=1
3. Instructions élémentaires en algorithmique

Exemple 3 : Donner toutes les raisons pour lesquelles
l’algorithme suivant est incorrect :

Algoritme Incorrect         Cet algorithme est incorrect pour
 x, y : Entier;             plusieurs raisons :
                            • ligne 1 : Le mot Algorithme s’écrit avec
     z : Réel;              un « h » au milieu
Début                       • ligne 2 : La déclaration des variables
z  x + 2;                  commence par le mot « Var »
y  z;                      • ligne 5 : La valeur de x est
x*2  3 + z;                indéterminée
                            • Ligne 6 : incompatibilité de type (un
y 5y + 3;                  résultat réel affecté à une variable de
Fin                         type entier)
                            • Ligne 7 : Le membre gauche d’une
                            affectation doit être une variable
                            • Ligne 8 : Il faut écrire 5*y et non 5y.
3. Instructions élémentaires en algorithmique

Exemple 4 : Ecrire un algorithme qui permet de calculer la
somme de deux nombres réels A et B.
Solution

     Algorithme somme;
     Var
        a, b, S: réels;
     Début
     Ecrire(”Entrez deux nombres”);
     Lire(a,b);
     S  a+ b;
                                             ,
     Ecrire(”la somme de nombres a et b est:” S);
     Fin
3. Instructions élémentaires en algorithmique

Remarque : la dernière instruction de l’algorithme précédent
peut être modifier comme suite:

  Ecrire(”la somme de deux nombres”,a, ” et ,b, ” est :   ”,S);
  Exemple: si a=3 et b=8, l’instruction ci-dessus s’exécutera
  ainsi:

       La somme de deux nombres 3 et 8 est :11

Exemple 5: Ecrire un algorithme qui demande un nombre
entier à l'utilisateur, puis qui calcule et affiche le double de ce
nombre.
3. Instructions élémentaires en algorithmique
                         Algorithme doubleDevaleure;
                         Var
                            val, dval: entiers;
                         Début                                    Mauvais
Exécution
12 24                    val 12;
                         dvalval*2
                         Ecrire (val, dval);
                         Fin
                         Algorithme doubleDevaleure;
                         Var
                            val, dval: entiers;
                         Début
Exécution:               Ecrire(”donner un entier: ”);
Donner un entier: 12     Lire(val);
Le double est 24         dvalval*2                                    Mieux
Le double de 12 est 24   Ecrire (”le double est ” , dval);
                         Ecrire(”le double de :”,val, ”est ”, dval);
                         Fin
Instructions
Conditionnelles
et Alternatives
4. Instructions conditionnelles et alternatives

4. 1. Notion de primitives de base structurées

Les algorithmes vus , jusqu’à présent, ont un
enchainement d’exécution des instructions séquentiel et
linéaire.

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

 On distingue     deux    grandes    familles   d’instructions
 composées:
4. Instructions conditionnelles et alternatives

4. 1. Notion de primitives de base structurées

  Les primitives de choix qui permet de choisir les
 instructions à exécuter selon les valeurs courantes de
 certaines variables; elle 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.(
 chapitre suivant)

Remarque: Les notions de choix et d’itération sont deux
notions fondamentales de l’algorithmique.
4. Instructions conditionnelles et alternatives

 4. 1 Instructions conditionnelles

 4. 1. 1 l’instruction   Si …Alors…. Finsi
 Syntaxe:
      Si (condition) alors

           Instruction( ou suite d’instructions);
       Finsi
 organigramme:
                                               Oui
                             Condition

                                                     Instruction
                                  Non
4. Instructions conditionnelles et alternatives

 4. 1. 1 l’instruction   Si …Alors…. Finsi
 Si la condition est vraie alors le  est
exécuté.
 Si la condition est fausse alors le 
n’est pas exécuté. On passe à l’instruction qui se trouve
après Finsi

Exemple:
(A=1) la condition A=1 est vérifiée si la valeur contenu dans A
est 1
(A=B) est vérifié si les valeurs contenu dans A et B sont les
mêmes
(B  5) est vérifié si B contient une valeur différent de 5
(1>5) est vérifié si 1>5, donc jamais cette condition est donc
fausse et ne dépend pas des valeurs des variables.
4. Instructions conditionnelles et alternatives

Exemple 1

    La valeur absolue d’un nombre réel
    |x|=x si x>0
    |x|=-x si x
4. Instructions conditionnelles et alternatives

Organigramme       Début

                   Lire(x)

                                Oui
                    x
4. Instructions conditionnelles et alternatives

Algorithme :

     Algorithme valeur_absolue1;
     Var
         x: réel;
     Début
     Lire(x);
     Si (x
4. Instructions conditionnelles et alternatives
Exemple 2
  Ecrire un algorithme qui calcule le salaire d’un
  employé à partir du nombre d’heures (nh) travaillées,
  du taux horaire (th) et du nombre d’années de
  service. Les employés ayant une ancienneté (anc)
  de plus de 10 ans bénéficient
  d’une allocation supplémentaire de 150 Dh.
 Analyse du problème                                 Les variables d’entrées:
 1- Données du problème                              nh, th,anc
 · nh : nombre d’heures travaillées                  Les variables de sorties:
 · th : taux horaire (en Dirhams)                    salaire
 · anc : ancienneté (en Année)
 2- Résultat recherché
 · salaire : salaire net de l’employé (en Dirhams)
 3- Comment faire ?
 Salaire       nh * th
 Si (anc > 10) Alors
 Salaire      salaire + 150
 FinSi
4. Instructions conditionnelles et alternatives
Exemple 2
              Forme 1          Forme2

 Algorithme calcul_salaire;            Algorithme calcul_salaire;
 Var nh, th, anc, salaire : Réel;      Const ALL=150;
 Début                                 Var nh, th, anc, salaire : Réel;
 Ecrire(”NH travaillées : ”) ;         Début
 Lire(nh);                             Ecrire(”NH, Taux horaire, Anc : ”) ;
 Ecrire(”Taux horaire : ”);            Lire(nh,th,anc);
 Lire(th);                             salaire       nh * th;
 Ecrire(”Ancienneté : ”);                 Si (anc > 10) Alors
 Lire(anc);                                   Salaire      salaire + ALL;
 salaire  nh * th;                       FinSi
    Si (anc > 10) Alors                Ecrire (”Salaire de l’employé = ”, salaire);
       salaire  salaire + 150;        Fin.
     FinSi
 Ecrire (”Salaire de l’employé = ”, salaire);
 Fin.
4. Instructions conditionnelles et alternatives

4. 1. 2 l’instruction    Si …Alors…. Sinon…Finsi
Syntaxe
              Si (condition) alors
                  Instruction 1;
              Sinon
                   Instruction 2;
              Finsi

                   Oui                   Non
                             Condition

                                                  Instruction 2
        Instruction 1
4. Instructions conditionnelles et alternatives
Instruction 1 est exécutée si la condition est vérifiée,
sinon c’est l’Instruction 2 qui sera exécutée.
Exemple 1

 Algorithme saisi;
 Var
     a,b: entier;
 Début
 Ecrire(”donner deux nombres entiers a et b”);
 Lire(a,b);
 si (a=b) alors
 Ecrire(”vous avez saisi deux fois la même valeur, à savoir”, a);
 Sinon
 Ecrire(”vous avez saisi deux valeurs différents”, a, ” et” , b,);
 Finsi
 Fin
4. Instructions conditionnelles et alternatives
 Instruction 1 est exécutée si la condition est vérifiée,
 sinon c’est l’Instruction 2 qui sera exécutée.
Exemple 2 : le plus grand et le plus petit nombre entre x et y

Première forme   Algorithme exemple5;
                 Var
                     x,y: réel;
                 Début
                 Ecrire(”donner deux nombres x et y”);
                 Lire(x,y);
                 si (x>y) alors
                    Ecrire(”le plus grand est”, x);
                 Sinon
                    Ecrire(”le plus grand est”, y);
                 Finsi
                 Fin
4. Instructions conditionnelles et alternatives
Deuxième forme

Exemple 2bis: le plus grand et le plus petit nombre entre x et y.
     Algorithme exemple5bis;
     Var
         x,y: réel;
           z: booléen;
     Début
     Ecrire(”donner deux nombres x et y”);
     Lire(x,y);
     z      x>y;
     si (z) alors
        Ecrire(”le plus grand est”, x);
     Sinon
        Ecrire(”le plus grand est”, y);
     Finsi
     Fin
4. Instructions conditionnelles et alternatives
Exemple 3 La valeur absolue de la différence de deux
            nombres réels: |x-y|=x-y si x>y
algorithme                  |x-y|=y-x si xy) alors                     Lire(x,y);
         z      x-y;               z     x-y;
Sinon                              Si (z
4. Instructions conditionnelles et alternatives
 Conditions composées

 Une condition composée est une condition formée de
 plusieurs conditions simples reliées par des opérateurs
 logiques: ET, OU, OU exclusif (XOR) et NON

EXEMPLES:
 - Si x est compris entre 2 et 5:
       si ((x>=2) ET (x
4. Instructions conditionnelles et alternatives
Exemple 4 Ecrire un algorithme qui demande deux
           nombres à l’utilisateur et l’informe ensuite si
           leur produit est négatif ou positif (on laisse de
           côté le cas où le produit est nul).

     Algorithme signe_produit;
     Var
         n,m: réel;
     Début
      Ecrire(”donner deux nombres n et m”);
      Lire(n,m);
       Si ((n>0 ET m>0) OU (n
4. Instructions conditionnelles et alternatives
Exemple Ecrire un algorithme qui demande un nombre
4bis       entier puis qui teste et affiche s’il est divisible
           par 3 ou non.
    Algorithme divisible_par3;
    Var
        n: entier;
    Début
     Ecrire(‘’entrez un entier‘’);
     Lire(n);
       Si (n MOD 3=0) alors
        Ecrire(n, ‘’ est divisible par 3 ‘’);
       Sinon
        Ecrire(n, ‘’ n’est pas divisible par 3 ‘’);
       Finsi
    Fin
4. Instructions conditionnelles et alternatives

  4. 1. 3 l’instruction   Si …Alors…. Sinon Si…alors …Finsi

syntaxe          Si (condition1) alors
                     Instruction 1;
                 Sinon Si (condition2) alors
                          Instruction 2;
                        Sinon
                          Instruction3;
                        Finsi
                 Finsi

 Si la condition1 est vraie, alors le 
 est exécuté. Si elle est fausse ( la condition1), alors on
 teste la condition2, si elle est vraie, on exécute le
4. Instructions conditionnelles et alternatives
Exemple 5a: algorithme qui permet d’afficher le signe d’un nombre saisie par
l’utilisateur( nombre positif, négatif ou nul)
Algorithme exemple5a;                    Algorithme exemple5aa;
Var                                      Var
    n: réel;                                 n: réel;
Début                                    Début
 Ecrire(”entrez un nombre”);              Ecrire(”entrez un nombre”);
 Lire(n);                                 Lire(n);
  si (n
4. Instructions conditionnelles et alternatives
  4. 1. 4 Imbrication de Si.
Dans de nombreuse 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.
  Si (a < 0) alors
      Si (b < 0) alors
         Ecrire( "a et b sont négatifs " );
     sinon
         Ecrire("a est négatif, b est positif ou b est nul ");
      fin si
  sinon
       Si b < 0 alors
         Ecrire( "b est négatif, a est positif ou a est nul");
       sinon
         Ecrire( "a positif ou a est nul, b positif ou b est nul " );
       fin si
  fin si
  Rq: Si par exemple a et b sont tous deux positifs, alors aucun des deux tests ne sera
  vraie, et c'est donc le sinon du sinon qui sera exécuté, a savoir Afficher " a positif
  ou a est nul, b positif ou b est nul
4. Instructions conditionnelles et alternatives

  4. 1. 4 Imbrication de Si.

 Dans de nombreuse 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.
Exemple 1:
Ecrire un algorithme permettant de résoudre une équation du
premier degré ax+b=0.
 Exemple 2:
Ecrire un algorithme permettant de résoudre une équation du
seconde degré ax 2+bx+c=0 dans R.

 Solution:
4. Instructions conditionnelles et alternatives
Algorithme equationPremierDgr;
Var a,b, x: réels;
Début
  Ecrire( ‘’Donner deux nombres a et b’’);
  Lire (a,b);
     Si (a=0) alors
           Si (b=0) alors
                 Ecrire( ‘’Tous réel est solution de l’équation’’);
           Sinon
                 Ecrire( ‘’ Impossible ’’);
           Finsi
     Sinon
               x    -b/a;
                 Ecrire (” La solution de l’équation est x=”, x);
     Finsi
Fin
4. Instructions conditionnelles et alternatives
Algorithme equationSecondDgr;
Var a,b,c x,x1,x2,delta: réels;
Début
  Ecrire( ‘’saisir les valeurs des nombres a,b et c’’);
  Lire (a,b,c);
     Si (a=0) ET(b=0)ET(c=0) alors
                 Ecrire( ‘’Tous réel est solution de l’équation’’);
     Sinon Si (a=0)ET(b=0) alors
                 Ecrire( ‘’ Impossible ’’);
            Sinon Si (a=0) alors
                Ecrire (” résolution de l’équation de premier
                          degré bx+c=0”);
                 x  -c/b;
                 Ecrire (” x=”, x);
                    Sinon
                      delta  b*b-4*a*c;
4. Instructions conditionnelles et alternatives

   si (delta
4. Instructions conditionnelles et alternatives

  4. 2 Instructions alternative: la primitive Selon
Syntaxe   selon  faire
              liste de valeur1: ;
              liste de valeur2 :;
              liste de valeur3 : ;
             …………..
             liste de valeurN>: ;
          Sinon :;
          Finselon

Organigramme                             variable          Sinon
            Valeur 1
                           Valeur 2        Valeur N
                                                               Instru par
                Instru 1      Instru 2          Instru N
                                                                 defaut
4. Instructions conditionnelles et alternatives

Remarques importantes

 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 séquences instructions suivantes.

 Deux valeurs différentes peuvent entrainer un même
 traitement. Nous pouvons alors les regrouper séparées par
 des virgules avant de décrire le traitement.
Si la variable n’est égale a aucune des valeurs testées, c’est
l’instruction par défaut qui est exécutée.

la variable de sélection doit être déclarée, et ne doit avoir
q’un type discret( entier ou caractère mais pas un réel).
4. Instructions conditionnelles et alternatives

 4. 2 Instructions alternative: la primitive Selon

Exemple: Ecrire un algorithme qui permet de lire un
numéro compris entre 1 et 12 et d’afficher le nom du mois
correspondant. Si le numéro entré est en dehors de cet
intervalle, un message d’erreur doit être affiché.
4. Instructions conditionnelles et alternatives
 4. 2 Instructions alternative: la primitive Selon
Exemple: Ecrire un algorithme qui permet de lire un numéro
compris entre 1 et 12 et d’afficher le nom du mois
correspondant. Si le numéro entré est en dehors de cet
intervalle, un message d’erreur doit être affiché.
   Algorithme mois;
   Variables n : Entier
   Début
      Ecrire(”Entrer le numéro du mois : ”);
      Lire(n)
      Selon n Faire
         1 : Ecrire(”janvier”)
         2 : Ecrire(”février”)
         …
        12 : Ecrire(”décembre”)
      Sinon
             Ecrire(”numéro de mois erroné... ”)
      FinSelon
   Fin.
4. Instructions conditionnelles et alternatives
  4. 2 Instructions alternative: la primitive Selon
Remarque :L’exercice précédent peut être résolu en utilisant
plusieurs instructions « Si » imbriquées, mais l’algorithme sera
très lourd :    Algorithme mois; (* version Si *)
                    Variables n : Entier
                    Début
                       Ecrire(”Entrer le numéro du mois : ”);
                       Lire(n)
                       Si (n=1) alors
                           Ecrire(”janvier”)
                       Sinon
                             Si(n=2) alors
                                  Ecrire(”février”)
                             Sinon
                                   Si(n=3) alors
                                  Ecrire(”mars”)
                                     …
                    Fin.
Exemple: Ecrire un algorithme qui permet de lire un numéro compris entre 1 et 7
et d’afficher le nom du jour correspondant.
4. 2. 2 En utilisant l’instruction Cas (selon)
Algorithme Affiche_jour;
Var
    jour: entier;
Début
      Ecrire(‘’ entrer le chiffre de jour’’);
      Lire(jour);
selon (jour) Faire
           1: Ecrire(‘’ Lundi’’);
           2: Ecrire(‘’ Mardi’’);
           3: Ecrire(‘’ Mercredi’’);
           4: Ecrire(‘’ Jeudi’’);
           5: Ecrire(‘’ Vendredi’’);
           6: Ecrire(‘’ Samedi’’);
           7: Ecrire(‘’ Dimanche’’);
Sinon \\ (Autre cas)
               Ecrire(‘’n’est pas un jour de la semaine’’);
FinSelon
Fin
Exemple2 ( version 1)
Ecrivons un algorithme demandant a l'utilisateur le jour de la
semaine. Affichons ensuite le jour correspondant au lendemain.
Algorithme lendemain;
Var erreur: entier;
        jour, lendemain: chaine de caracrtère;
Début
       Ecrire(‘’ saisir un jour de la semaine’’);
       Lire(jour);
Erreur0;
Selon jour faire
           ‘’ Lundi’’: lendemain ‘’ Mardi’’;
           ‘’ Mardi’’: lendemain ‘’ Mercredi’’;
           ‘’ Mercredi’’: lendemain ‘’ Jeudi’’;
           ‘’ Jeudi’’: lendemain ‘’ Vendredi’’;
           ‘’ Vendredi’’: lendemain ‘’ Samedi’’;
           ‘’ Samedi’’: lendemain ‘’ Dimanche’’;
           ‘’ dimanche’’: lendemain ‘’ lundi’’;
          Sinon: Erreur1;          \\ErreurVrai;
FinSelon
  Si (erreur=1)
    Ecrire ("erreur de saisie");
  Sinon
    Ecrire("Le lendemain du ", jour, " est ", lendemain, ".")
finsi
Fin
Version 2
On considère une variable booleen.
Algorithme lendemain;
Var erreur: booleen;
        jour, lendemain: chaine de caracrtère;
Début
       Ecrire(‘’ saisir un jour de la semaine’’);
       Lire(jour);
Erreurfaux;
selon jour faire
           ‘’ Lundi’’: lendemain ‘’ Mardi’’;
           ‘’ Mardi’’: lendemain ‘’ Mercredi’’;
           ‘’ Mercredi’’: lendemain ‘’ Jeudi’’;
           ‘’ Jeudi’’: lendemain ‘’ Vendredi’’;
           ‘’ Vendredi’’: lendemain ‘’ Samedi’’;
           ‘’ Samedi’’: lendemain ‘’ Dimanche’’;
           ‘’ dimanche’’: lendemain ‘’ lundi’’;
          sinon ErreurVrai;
FinSelon
   Si (erreur)
         Ecrire ("erreur de saisie");
  Sinon
         Ecrire("Le lendemain du ", jour, " est ", lendemain, "."
  finsi
Fin
REMARQUES

Il y a une grande différence entre cet algorithme et celui
utilisant les imbrications de Si. Ce dernier semble plus
claire et lisible et il n’y a pas de risque d’erreurs
5. 3 Incrémentation et décrémentation

 -Incrémentation: C’est l’augmentation de la valeur d’une
 variable à chaque phase de l’exécution d’un programme
 (algorithme).
 -Décrémentation: C’est la diminution de la valeur d’une
 variable à chaque phase de l’exécution d’un programme
 (algorithme).

 Syntaxe:       x ←x+step où ‘’step’’        est   le   pas
 d’incrémentation (ou de décrémentation).
Vous pouvez aussi lire