Docstoc

3 me partie _II_ algorithmique

Document Sample
3 me partie _II_ algorithmique Powered By Docstoc
					Résumer de programmation VBA
    Celato- HEG Fribourg


             Selon les cours HEC des professeurs
    Arnaud Dufour & Yves Pigneur & Solange Ghernaouti-Hélie
Partie: programmation
                                                                  Visual Basic
                                                                   for Application
   séquence
        Faire ceci
        Faire cela
   condition
        raisonnement par test Boolean (si ... alors ... sinon)
        Raisonnement par cas (cas ... parmis)
   itération
        raisonnement par récurrence (I - faire x fois)
        raisonnement par récurrence (II - faire tant que)
        Raisonnement par récurrence (III - répéter jusqu’à)
Construction d’un programme
à partir d’un énoncé                algorithme

 choix du dialogue
 construction d’un algorithme
        GNS
   programmation de l’algorithme
        à l’aide du language VBA
   expérimentation du programme
Algorithme
   Un algorithme est une marche à suivre
        dont les opérations sont toutes définies et portent sur
         des objets appelés informations
        dont l’ordre d’exécution des opérations est défini sans
         ambiguïté
        et qui est réputée résoudre de manière certaine un
         problème ou une classe de problèmes
Programme
   Un programme est un algorithme
       représenté dans un langage artificiel ou formel
         –   toute phrase syntaxiquement correcte a un seul sens
         –   une phrase syntaxiquement incorrecte n’a pas de sens
       compris par un ordinateur

                                                           langage de
                                                         programmation
I. Séquence
   Toutes les opérations
        apparaissant dans le texte du programme
   sont accomplies une seule fois
        par l’ordinateur
   dans l’ordre où elles figurent dans le texte
Somme
énoncé


   Etant donné
       deux nombres donnés par l’utilisateur
   on demande de construire un programme
       qui calcule leur somme
       et la communique à l’utilisateur


                                      Notre premier programme ...
Somme
algorithme




lire Nombre1
lire Nombre2
Somme = Nombre1 + Nombre2
afficher Somme
Somme
expérimentation


                          Nombre1   Nombre2   Somme
       Entrez un nombre       1
             1
                          Lire nombre1
                          lire nombre2
                          Somme = Nombre1 + nombre2
                          Afficher Somme


Ecran/Clavier

                          Mémoire centrale
Somme
expérimentation (2)


                          Nombre1   Nombre2   Somme
       Entrez un nombre       1         2
             2
                          Lire nombre1
                          lire nombre2
                          Somme = Nombre1 + nombre2
                          Afficher Somme


Ecran/Clavier

                          Mémoire centrale
Somme
expérimentation (3)


                      Nombre1   Nombre2   Somme
                          1         2        3
          2
                      Lire nombre1
                      lire nombre2
                      Somme = Nombre1 + nombre2
                      Afficher Somme


Ecran/Clavier

                      Mémoire centrale
Somme
expérimentation (4)


                       Nombre1   Nombre2   Somme
       La somme vaut       1         2        3
             3
                       Lire nombre1
                       lire nombre2
                       Somme = Nombre1 + nombre2
                       Afficher Somme


Ecran/Clavier

                       Mémoire centrale
Somme
programme

                                                                Visual Basic
 Sub Somme()
 'somme de 2 nombres
 'à l'aide de deux boîtes de dialogue

 'déclarations:
 Dim Nombre1 As Integer, Nombre2 As Integer, Somme As Integer

 'saisie
 Nombre1 = InputBox("Entrez un nombre")
 Nombre2 = InputBox("Entrez un second nombre")
 'calcul
 Somme = Nombre1 + Nombre2
 'affichage
 MsgBox ("La somme de ces deux nombres vaut " & Somme)

 End Sub
Procédure                                                         Sub <nom> (…)
                                                                    …
                                                                    <instructions>
                                                                    …
   Une procédure                                                 end sub

       porte un nom
       accepte éventuellement des arguments
         –   d’un certain type (domaine de valeur)

       contient des instructions
         –   à exécuter
         –   lorsqu’elle est appelée



Sub Somme ()       nom de la procédure (et arguments éventuels)
    ...            instructions
end sub
Variable                                        Dim   <nom>   as   <type>




   Une variable est déclarée
        avec un nom
        et un type
          –   domaine de valeurs




Dim Nombre1 as Integer             variable: son nom et son type
Affectation                                   <variable>   =   <valeur>




   Affectation d’une valeur à une variable
        constante
        issue d’un calcul
        saisie à l’écran



Nombre1 = 3                                 constante
Somme    = Nombre1 + Nombre2                calcul
Nombre1 = InputBox («Entrez:»)   fonction d’entrée
                                                      MsgBox (<caractères>)
Entrée/sortie
                                                      InputBox (<caractères>)



   Une fonction de sortie
        affiche quelque chose à l’écran
   Une fonction d ’entrée
        affiche quelque chose à l’écran (prompt)

        accepte une donnée saisie au clavier
        et l’affecte à une variable

MsgBox («Bonjour»)                              fonction de sortie
Nombre1 = InputBox («Entrez:»)                  fonction d’entrée
Somme                                             VBA
édition
Dans Excel:   Tools/Macro …/Visual Basic Editor
Somme
exécution
Somme (Variante 1)
Enoncé                                         Fonction Excel



   même énoncé
   mais dialogue différent
        pas de boîte de dialogue
        feuille de calcul Excel
        les deux nombres se trouvent déjà dans deux cellules
        la somme est affichée dans la cellule où est invoquée la
         fonction
Somme (Variante 1)
Ecriture de la fonction dans Visual Basic
                                   Function      <nom>   (<arguments>) as   <type>
                                     …
Fonction                              <instructions>
                                     …
                                   end function
   Une fonction
       accepte des arguments
         –   d’un certain type (domaine de valeur)
       donne un résultat
         –   d’un certain type (domaine de valeur)
         –   à l’issue d’une série d ’instructions

Function Somme2Nombres (
    Nombre1 as Integer                       premier argument et son type
    Nombre2 as Integer)                      second argument et son type
    as Integer                    type du résultat
…
Somme (Variante 1)
Utilisation de la fonction dans Excel




                                        Choix de la fonction
Somme (Variante 1)
Utilisation de la fonction dans Excel




                                        Choix des 2 arguments
Somme (Variante 1)
Utilisation de la fonction dans Excel




                                                   Formule (fonction)




                                        Résultat
Somme (Variante 2)
énoncé


   même énoncé
   mais dialogue différent
        pas de boîte de dialogue
        les deux nombres se trouvent déjà dans deux cellules
          –   A1 et A2
        la somme est affichée dans une cellule
          –   A3
        lorsqu’on presse sur un bouton
Somme (Variante 2)
édition
                                                     Cells (<ligne>,<colonne>)
Cellule
                                                     <cellule>.value



   On peut adresser une cellule
        par une coordonnée
           –   en ligne et en colonne

   On peut obtenir la valeur d’une cellule



Nombre1 = Cells(1,1).value
Nombre1 prend la valeur de la cellule de la 1ère ligne et de la 1ère colonne
Cells(3,1).value = Somme
La cellule de la 3ème ligne et de la 1ère colonne prend la valeur de Somme
Somme (Variante 2)
interface homme-machine




Dans Excel: View/Toolbars/Forms
Somme (Variante 2)
exécution




                2


            1




                     3
Somme (Variante 3)
énoncé


   même énoncé
   dialogue semblable (à la variante 1)
   mais les deux nombres sont dans
        la cellule courante et
        la cellule en-dessous
   la cellule qui contient le résultat devient la
    cellule courante
Somme (Variante 3)
édition
                                                     <cellule>.offset       (<ligne>,<colonne>)
Cellule
suite
                                                     <cellule>.select



   On peut adresser une cellule par rapport à une
    autre
        avec un déplacement
           –   en ligne et en colonne

   Une cellule peut devenir la cellule courante


ActiveCellule.Offset(1,0).select
la cellule suivant la cellule courante dans la même colonne devient la cellule courante
Somme (Variante 3)
exécution




            1   2




                     3
Echanger
énoncé


   Etant donné
       deux nombres, placés dans deux cellules
         –   la cellule courante et la suivante sur la même ligne

   on demande de construire un programme qui
    échange le contenu
       de ces deux cellules
Echanger
édition
Echanger
exécution




                2
            1




                    3
Moyenne
énoncé


   Etant donné
       les notes de 5 cours
       rangées en colonne
         –   avec les libellés de cours intercalés

   on demande de calculer la moyenne de ces 5
    notes
       et de l’afficher en dessous de ces notes
Moyenne
édition
Moyenne
exécution




            1

                2




                    3
Echauffement
a = 10
b = 5
C = b
b = a
a = b
afficher a, b
Entraînement
   Ecrire un programme qui, partant du prix hors
    TVA d’un article, donne pour résultat le prix de
    cet article, TVA 6.5 % comprise

   Même exercice, mais en supposant qu’il y a 3
    articles et qu’on désire obtenir le prix total,
    TVA comprise, des 3 articles
échauffement
 a = 3          lire a         8
 si a=7 alors   si a=7 alors
   a = 0          a = 0
 afficher a     sinon
                  a = 1
                afficher a
Salaire                                            entraînement
énoncé


    Etant donné le montant du salaire horaire d’un employé et le
     nombre d’heures prestées au cours d’une journée par cet ouvrier,
     on demande d’écrire un programme qui affiche
       le nombre d’heures normales prestées
        le nombre d’heures supplémentaires prestées
       le salaire à payer
    On conviendra que les heures prestées au-delà de 8 heures/jour
     sont considérées comme supplémentaires et sont payées 50%
     plus cher que les autres
Salaire
édition
Salaire
édition
Salaire
édition (variante)
Examen                                                           compétition
énoncé

   Les cotes attribuées aux étudiants étant des nombres dont le maximum est
    10, le règlement d’un jury d’examens stipule qu’un étudiant sera réputé
    avoir échoué
        lorsque la moyenne de ses cotes est strictement inférieure à 5.5
        ou lorsqu’apparaissent, dans l’ensemble des cotes de l’étudiant, un
         certain nombre de cotes inférieures à 5, à savoir:
          –   une cote strictement inférieure à 4
          –   ou trois cotes égales à 4
          –   ou deux cotes égales à 4 et une cote égale à 4.5
          –   ou une cote égale à 4 et deux cotes égales à 4.5
          –   ou quatre cote égales à 4.5
          –   ou des résultats inférieurs
Examen
énoncé


 On demande de concevoir un programme qui
  étant donné

     la moyenne des cotes d’un étudiant
         le nombre de ses cotes strictement inférieures à 4
         le nombre de ses cotes égales à 4
         le nombre de ses cotes égales à 4.5
    affiche
         soit le message “a échoué”
         soit le message “a réussi”
Examen
Arbre de décision binaire (1)
                  Moyenne < 5.5
                  vrai            faux

                 E                NbInf > 0
                           vrai               faux
                          E               NbQuatre et NbQatreDemi=0
                                              vrai                 faux
                                          R                     NbQuatre >=3
                                                            vrai              faux
                                                                      NbQuatre >=2
                                                                     vrai              faux

                                                     NbQatreDemi >=1                 NbQuatre >=1

                                                         vrai               faux

                                                     E                R
Examen
Arbre de décision binaire (2)


                                  NbQuatre >=2
                               vrai              faux

                     NbQatreDemi >=1       NbQuatre >=1
              vrai         faux           vrai           faux
          E                R          NbQatreDemi >=2      NbQatreDemi >=4
                                  vrai            faux      vrai      faux
                                  E               R         E          R
Examen
édition
Examen
exécution




              moyenne
            <4
            4
            4.5
II. Condition
   une opération est conditionnée

   si son exécution est soumise
    à la réalisation d’une condition exprimée


à l’exécution,
cette opération sera donc exécutée 0 ou 1 fois
Retenue
énoncé                                                  programmation
                                                        avec condition
   Etant donné
        le montant du salaire brut d’un salarié
   on demande de construire un programme
        qui calcule et communique à l’utilisateur la retenue fiscale à
         opérer
   sachant que
        il n’y a pas de retenue si le montant du salaire brut est inférieur ou
         égal à 20’000 francs
        la retenue est de 15% du montant excédant 20’000 francs si le
         montant du salaire brut est supérieur à 20’000 francs
Retenue
algorithme

lire Salaire

si salaire <= 20000 alors
 retenue = 0
sinon
 excédent = salaire - 20000
 retenue = excédent * 0.15

afficher Retenue
Retenue
expérimentation


                            salaire     excédent   retenue
        Entrez le salaire       12000
          12000

                             Lire salaire
                             si salaire <= 20000 alors
                                retenue = 0
                             sinon
                                excédent = salaire - 20000
                                retenue = excédent * 0.15
                             fin si
Ecran/Clavier                Afficher retenue

                            Mémoire centrale
Retenue
expérimentation (2)


                            salaire     excédent   retenue
        Entrez le salaire       12000                   0
          12000

                             Lire salaire
                             si salaire <= 20000 alors
                                retenue = 0
                             sinon
                                excédent = salaire - 20000
                                retenue = excédent * 0.15
                             fin si
Ecran/Clavier                Afficher retenue

                            Mémoire centrale
Retenue
expérimentation (3)


                         salaire     excédent   retenue
        La retenue ...       12000                   0
               0

                          Lire salaire
                          si salaire <= 20000 alors
                             retenue = 0
                          sinon
                             excédent = salaire - 20000
                             retenue = excédent * 0.15
                          fin si
Ecran/Clavier             Afficher retenue

                         Mémoire centrale
Retenue (II)
expérimentation


                            salaire     excédent   retenue
        Entrez le salaire       30000
          30000

                             Lire salaire
                             si salaire <= 20000 alors
                                retenue = 0
                             sinon
                                excédent = salaire - 20000
                                retenue = excédent * 0.15
                             fin si
Ecran/Clavier                Afficher retenue

                            Mémoire centrale
Retenue (II)
expérimentation (2)


                            salaire     excédent   retenue
        Entrez le salaire       30000    10000
          30000

                             Lire salaire
                             si salaire <= 20000 alors
                                retenue = 0
                             sinon
                                excédent = salaire - 20000
                                retenue = excédent * 0.15
                             fin si
Ecran/Clavier                Afficher retenue

                            Mémoire centrale
Retenue (II)
expérimentation (3)


                            salaire     excédent   retenue
        Entrez le salaire       30000    10000       1500
          30000

                             Lire salaire
                             si salaire <= 20000 alors
                                retenue = 0
                             sinon
                                excédent = salaire - 20000
                                retenue = excédent * 0.15
                             fin si
Ecran/Clavier                Afficher retenue

                            Mémoire centrale
Retenue (II)
expérimentation (4)


                         salaire     excédent   retenue
        La retenue ...       30000    10000       1500
           1500

                          Lire salaire
                          si salaire <= 20000 alors
                             retenue = 0
                          sinon
                             excédent = salaire - 20000
                             retenue = excédent * 0.15
                          fin si
Ecran/Clavier             Afficher retenue

                         Mémoire centrale
Retenue
programme                                          Visual Basic

 sub CalculRetenue()
 'calcule la retenue fiscale d'un salaire
 Dim Salaire as Currency; Excédent as Currency; Retenue as Currency
 Salaire = InputBox("Entrez le salaire: ")
 if Salaire <= 20000 then
      Retenue = 0
 else
      Excédent = Salaire - 20000
      Retenue = Excédent * 0.15
 end if
 MsgBox ("La retenue sur un salaire de " & Salaire &
          " francs est de " & Retenue)
 end sub
Retenue   Visual Basic
édition
Retenue              oui     Salaire inférieur   non
                                à 20 ’000
exécution

            Pas de retenue




                                                   Retenue
                                                     if    <condition> then
Instruction conditionnelle                           else
                                                          <instructions>

                                                          <instructions>
                                                     end if


   selon la valeur prise par une condition
    des instructions différentes sont éxécutées


if Salaire <= 20000 then          condition
     Retenue = 0                  instruction exécutée quand la condition est vraie
else
     Excédent = Salaire - 20000   instructions exécutées quand la condition est fausse
     Retenue = Excédent * 0.15
end if
Retenue (variante 1)
énoncé


   même énoncé
   mais dialogue différent :
        pas de boîte de dialogue
        le salaire se trouve déjà dans une cellule
          –   A1
        la retenue est affichée dans une cellule
          –   A2
Retenue (variante 1)   Visual Basic
édition
Retenue (variante 1)
dialogue
Retenue (variante 1)            oui     Salaire inférieur
                                           à 20 ’000
                                                            non


exécution

                       Pas de retenue




                                                              Retenue
Retenue (variante 1)
édition bis
Facture                                                            Arbre de
énoncé                                                             décision


   Etant donné
       le montant d’une facture
   on demande de concevoir un programme qui
    calcule et affiche
       le montant de la ristourne éventuelle accordée au client
       le montant final à payer
         –   le montant de la facture diminué de la ristourne éventuelle
Facture
énoncé (2)


   sachant que
       le montant de la ristourne est de
         –   10% du montant de la facture si ce montant est supérieur à 7’500 frs
         –   5% du montant s’il est compris entre 4’000 et 7’500 frs
         –   2% du montant s’il est supérieur ou égal à 2’000 frs et inférieur à
             4’000 frs
       aucune ristourne n’est accordée si le montant est
        inférieur à 2’000 frs
Facture
algorithme



lire Montant
<calculer la ristourne>
MontantFinal = Montant - Ristourne
afficher Ristourne, MontantFinal
Facture
algorithme (2)


     Séparation des cas:

  Montant < 2000            Ristourne = 0
  2000 <= Montant < 4000    Ristourne = Montant * 0.02
  4000 <= Montant <= 7500   Ristourne = Montant * 0.05
  Montant > 7500            Ristourne = Montant * 0.1
Arbre binaire

    un graphe
        constitué de nœuds
        reliés entre eux par des arcs ou branches
    à chaque nœud aboutit une branche
        sauf au premier nœud, appelé racine
    de chaque nœud part au plus 2 branches
    les nœuds d’où ne part aucune branche sont
     appelés feuilles
Arbre binaire
                racine


                    branche


                          nœud




                                 feuille
Arbre de décision binaire
                     condition


            vrai                 faux


        condition                 suite d’opérations

 vrai               faux                               feuille
Facture
algorithme (3) - arbre de décision binaire


                   Montant < 2000
                  vrai          faux


        Ristourne = 0          Montant < 4000
                            vrai          faux


  Ristourne = Montant * 0.02             Montant <= 7500
                                         vrai       faux


            Ristourne = Montant * 0.05             Ristourne = Montant * 0.1
Facture
algorithme (3) - arbre de décision binaire


                   si Montant < 2000
                alors           sinon

        Ristourne = 0          si Montant < 4000
                          alors            sinon

  Ristourne = Montant * 0.02             si Montant <= 7500
                                        alors        sinon

            Ristourne = Montant * 0.05              Ristourne = Montant * 0.1
Facture
algorithme (4)


<calcul de la ristourne>

si Montant < 2000 alors
      Ristourne = 0
sinon si Montant < 4000 alors
             Ristourne = Montant * 0.02
      sinon si Montant <= 7500 alors
                   Ristourne = Montant * 0.05
             sinon
                   Ristourne = Montant * 0.1
Facture
algorithme final

lire Montant

si Montant < 2000 alors
      Ristourne = 0
sinon si Montant < 4000 alors
             Ristourne = Montant * 0.02
      sinon si Montant <= 7500 alors
                   Ristourne = Montant * 0.05
             sinon
                   Ristourne = Montant * 0.1


MontantFinal = Montant - Ristourne
afficher Ristourne, MontantFinal
Facture
édition
Facture
jeu de tests

Montant < 2000                 Ristourne <- 0
Montant= 1000                  Ristourne = 0
                               MontantFinal = 1000


2000 <= Montant < 4000 Ristourne <- Montant * 0.02
Montant= 3000                  Ristourne = 60
                               MontantFinal = 2940


4000 <= Montant <= 7500        Ristourne <- Montant * 0.05
Montant= 5000                  Ristourne = 250
                               MontantFinal = 4750


Montant > 7500                 Ristourne <- Montant * 0.1
Montant= 8000                  Ristourne = 800
                               MontantFinal = 7200
Facture
exécution

1. Montant 1000 frs



                                                3. Montant 5000 frs




         ristourne 0 frs



                       2. Montant 3000 frs
                                                        ristourne 250 frs



                                                          4. Montant 8000 frs




                             ristourne 60 frs



                                                                   ristourne 800 frs
Facture
édition bis
échauffement
 a = 3          lire a         8
 si a=7 alors   si a=7 alors
   a = 0          a = 0
 afficher a     sinon
                  a = 1
                afficher a
Salaire                                            entraînement
énoncé


    Etant donné le montant du salaire horaire d’un employé et le
     nombre d’heures prestées au cours d’une journée par cet ouvrier,
     on demande d’écrire un programme qui affiche
       le nombre d’heures normales prestées
        le nombre d’heures supplémentaires prestées
       le salaire à payer
    On conviendra que les heures prestées au-delà de 8 heures/jour
     sont considérées comme supplémentaires et sont payées 50%
     plus cher que les autres
Examen                                                           compétition
énoncé

   Les cotes attribuées aux étudiants étant des nombres dont le maximum est
    10, le règlement d’un jury d’examens stipule qu’un étudiant sera réputé
    avoir échoué
        lorsque la moyenne de ses cotes est strictement inférieure à 5.5
        ou lorsqu’apparaissent, dans l’ensemble des cotes de l’étudiant, un
         certain nombre de cotes inférieures à 5, à savoir:
          –   une cote strictement inférieure à 4
          –   ou trois cotes égales à 4
          –   ou deux cotes égales à 4 et une cote égale à 4.5
          –   ou une cote égale à 4 et deux cotes égales à 4.5
          –   ou quatre cote égales à 4.5
          –   ou des résultats inférieurs
Examen
énoncé


 On demande de concevoir un programme qui
  étant donné

     la moyenne des cotes d’un étudiant
         le nombre de ses cotes strictement inférieures à 4
         le nombre de ses cotes égales à 4
         le nombre de ses cotes égales à 4.5
    affiche
         soit le message “a échoué”
         soit le message “a réussi”
III. Itération
   une ou plusieurs opérations sont à répéter
        zéro, une ou plusieurs fois
        consécutivement
        pour une exécution du programme
   le programmeur précise
        soit le nombre de fois
        soit une condition de continuation (ou d’arrêt)
Moyenne
énoncé
                                         répétition
   Etant donné
       une suite de cinq nombres
   on demande de construire un programme qui
    calcule et communique à l’utilisateur
       la moyenne de ces cinq nombres
Moyenne
algorithme                  première
                            intuition

lire a
lire b
lire c
lire d
lire e
Moyenne = (a+b+c+d+e) / 5
afficher Moyenne
Construction d’une itération

1. <corps de la boucle>

lire Nombre
Somme = Somme + Nombre
2. <instruction de répétition>

faire 5 fois
3. <initialisation>

Somme = 0
Moyenne
algorithme
                              boucle
<initialisation>

Somme = 0
<instruction de répétition>

faire 5 fois
  <corps de la boucle>

 lire Nombre
 Somme = Somme + Nombre
 suivant
Moyenne = Somme / 5
afficher Moyenne
Moyenne
expérimentation


                  nombre      somme      moyenne

                                     0


                  Somme <- 0
                  faire 5 fois
                     lire nombre
                     somme <- somme + nombre
                     suivant
                  moyenne <- somme / 5
                  Afficher moyenne
Ecran/Clavier

                  Mémoire centrale
Moyenne
expérimentation (2)


                               nombre      somme       moyenne
        Entrez un nombre           10             10
             10

                               Somme <- 0
                               faire 5 fois
                                  lire nombre
                           1      somme <- somme + nombre
                                  suivant
                               moyenne <- somme / 5
                               Afficher moyenne
Ecran/Clavier

                               Mémoire centrale
Moyenne
expérimentation (3)


                               nombre      somme       moyenne
        Entrez un nombre           20             30
             20

                               Somme <- 0
                               faire 5 fois
                                  lire nombre
                           2      somme <- somme + nombre
                                  suivant
                               moyenne <- somme / 5
                               Afficher moyenne
Ecran/Clavier

                               Mémoire centrale
Moyenne
expérimentation (4)


                               nombre      somme       moyenne
        Entrez un nombre           30             60
             30

                               Somme <- 0
                               faire 5 fois
                                  lire nombre
                           3      somme <- somme + nombre
                                  suivant
                               moyenne <- somme / 5
                               Afficher moyenne
Ecran/Clavier

                               Mémoire centrale
Moyenne
expérimentation (5)


                               nombre      somme        moyenne
        Entrez un nombre           40             100
             40

                               Somme <- 0
                               faire 5 fois
                                  lire nombre
                           4      somme <- somme + nombre
                                  suivant
                               moyenne <- somme / 5
                               Afficher moyenne
Ecran/Clavier

                               Mémoire centrale
Moyenne
expérimentation (6)


                               nombre      somme        moyenne
        Entrez un nombre           50             150
             50

                               Somme <- 0
                               faire 5 fois
                                  lire nombre
                           5      somme <- somme + nombre
                                  suivant
                               moyenne <- somme / 5
                               Afficher moyenne
Ecran/Clavier

                               Mémoire centrale
Moyenne
expérimentation (7)


                      nombre      somme        moyenne

                          50             150      30


                      Somme <- 0
                      faire 5 fois
                         lire nombre
                         somme <- somme + nombre
                         suivant
                      moyenne <- somme / 5
                      Afficher moyenne
Ecran/Clavier

                      Mémoire centrale
Moyenne
expérimentation (8)


                          nombre      somme        moyenne
        La moyenne est:       50             150      30
              30

                          Somme <- 0
                          faire 5 fois
                             lire nombre
                             somme <- somme + nombre
                             suivant
                          moyenne <- somme / 5
                          Afficher moyenne
Ecran/Clavier

                          Mémoire centrale
Moyenne                                      Visual Basic
programme


 sub Moyenne()
 'moyenne de 5 nombres
 Dim i as Integer
 Dim Nombre, Somme, Moyenne
 Somme = 0
 For i = 1 To 5
    Nombre = InputBox("Entrez un nombre ")
    Somme = Somme + Nombre
 Next i
 Moyenne = Somme / 5
 MsgBox ("La moyenne vaut: " & Moyenne)
 End Sub
Répétion                                            for   <var> = <var>   To   <var>
                                                       <instructions>
                                                        next


   en fonction d’un intervalle de valeurs
        avec utilisation d’une variable indice
   des instructions sont exécutées plusieurs fois



For i = 1 To 5                          intervalle de valeurs
     Nombre = InputBox("Entrez")        instructions à répéter
     Somme = Somme + Nombre
Next i                       fin des instructions à répéter
suite …
Moyenne
édition
                  Somme = 0
Moyenne
exécution   oui
                   5 fois ?
                        non


                     Lire Nombre
                     Somme = Somme + Nombre




            Moyenne = Somme/5
            Afficher Moyenne
Moyenne (variante 1)
énoncé


   même énoncé
   mais dialogue différent
        pas de boîte de dialogue
        les nombres se trouvent dans 5 cellules en colonnes
          –   A1:A5
        la moyenne est affichée dans une cellule
          –   A6
Moyenne (variante 1)   Visual Basic
édition
Moyenne (variante 1)
dialogue
Moyenne (variante 1)
exécution
Epargne
énoncé                                              répétition

   Etant donné
        une période d’investissement (en années)
        un taux d’intérêt annuel (%)
        un montant initial déposé (Frs)
   on demande de concevoir un programme qui calcule et
    affiche, pour chaque année:
        l’année
        le montant annuel de l’intérêt
        le montant du dépôt en fin d’année
Epargne
énoncé (2)


   sachant que
       le montant annuel de l’intérêt =
        (montant du dépôt en début d’année) x (taux d’intérêt)
       le montant de dépôt en fin d’année = (montant du dépôt
        en début d’année) + (montant annuel de l’intérêt)
Epargne
algorithme


 lire Période, Taux, Dépôt
 pour Année de 1 à Période répéter
  Intérêt = Dépôt * Taux / 100
  Dépôt   = Dépôt + Intérêt
  afficher Année, Intérêt, Dépôt
  suivant
Epargne
édition
Epargne
exécution




période
   taux
 dépôt
Epargne
édition (Variante)
Garnir (variante)                    répétition
énoncé



   On demande de construire un programme qui
       garnit une matrice 3x3

         –   10 20 30
         –   40 50 60
         –   70 80 90
Garnir (variante)
édition
Garnir (variante)
exécution
Article
énoncé                                          entraînement

    Un client achète des articles dans un magasin
        dont le nombre sera précisé par la caisière
    les quantités de chaque article ainsi que les prix étant donnés par
     la caisiére,
    on demande d’écrire un programme qui calcule et affiche
        les montants correspondant à chaque article ainsi que
         le montant total à payer
Article
édition
Article
exécution
Article
édition (Variante)
Echauffement
lire n                    lire a
a = 0                     y = 0
pour i de 1 à n répéter   pour j de 1 à a répéter
  lire x                     lire t
  si x > 0 alors             si t > 0 alors
       a = a + 1                y = y + t
  suivant
                             suivant
afficher a
                          afficher y


5                         4
7, 9, 0, 6, -2            4, -2, 8, 6
Entraînement
   Etant donné le salaire horaire et le nombre d’heures prestées
    chaque jour de la semaine (5 jours) par un ouvrier,
   on demande de concevoir un programme qui détermine
      le nombre d’heures de prestations normales,
      le nombres d’heures supplémentaires et
      le salaire brut de la semaine de cet ouvrier,

   sachant que les heures supplémentaires (au delà de 8h par jour)
    sont payées 50% plus cher que les heures de prestations normales




                                                                 ...
Entraînement suite
le dialogue utilisateur-ordinateur se présente comme suit:

Salaire horaire?   40
Heures prestées chaque jour:
lundi        8
mardi        10
mercredi     10
jeudi        9
vendredi     8

Prestations normales:           40 heures
Heures supplémentaires:         5 heures
Salaire brut:                   1’900 Frs
Division
énoncé                                                  modulo


   Etant donné
       deux nombres entiers strictement positifs appelés
        dividende et diviseur
   on demande de construire un programme qui
    calcule et communique à l’utilisateur
       le quotient et le reste de la division entière de ces deux
        nombres
Division
algorithme                           première
                                     intuition


lire Dividende
lire Diviseur

<calculer le quotient et le reste>


afficher Quotient
afficher Reste
Idée de solution
Dividende = 22
Diviseur = 4

22   -   4   =   18
18   -   4   =   14
14   -   4   =   10
10   -   4   =   6
6    -   4   =   2       Quotient = 5 (soustractions)


                 Reste (= différence) = 2
Construction de l’itération
situation de départ                                        relayeur

  22 - 4 = 18
  18 - 4 = 14                 différences déjà calculées

  14 - 4 = 10             différences restant à calculer
  10 - 4 = 6
  ...
           différence connue

Informations connues (pour progresser)
  Différence = 14
  Diviseur = 4
  Nsoustr = 2
Construction de l’itération
corps de la boucle




différence = différence - diviseur
nsoustr    = nsoustr + 1
Construction de l’itération
situation après une itération (=de départ pour la suivante)



     22 - 4 = 18
     18 - 4 = 14
     14 - 4 = 10               différences déjà calculées

                               différences restant à calculer
     10 - 4 = 6
     ...
                   différence connue

   Informations connues
     Différence = 10
     Diviseur = 4
     Nsoustr = 3
Construction de l’itération
initialisation



                                  différences déjà calculées

      22 - 4 = 18              différences restant à calculer
      18 - 4 = 14
      ...
              différence connue


   Informations connues
     Différence = 22
     Diviseur = 4
     Nsoustr = 0
Construction de l’itération
initialisation & condition



   Initialisation
         –   pour se mettre dans les bonnes conditions la première fois
différence = dividende
nsoustr = 0



   condition de continuation
         –   on répète les instructions ...

tant que différence >= diviseur
Construction d’une itération

 1. <corps de la boucle>
 Différence = Différence - Diviseur
 Nsoustr    = Nsoustr + 1
 2. <instruction de répétition>
 tant que Différence >= Diviseur
 3. <initialisation>
 Différence = Dividende
 Nsoustr    = 0
Division
algorithme                               boucle

  lire Dividende
  lire Diviseur

  Différence = Dividende
  Nsoustr    = 0
  tant que Différence >= Diviseur
    Différence = Différence - Diviseur
    Nsoustr    = Nsoustr + 1

  afficher Nsoustr
  afficher Différence
Division
expérimentation


                  dividende     diviseur     nsoustr




                   lire Dividende
                   lire Diviseur
                   Différence = Dividende
                   Nsoustr    = 0
                   tant que Différence >= Diviseur
                      Différence = Différence - Diviseur
                      Nsoustr    = Nsoustr + 1
                   afficher Nsoustr
Ecran/Clavier      afficher Différence


                  Mémoire centrale
Division
programme                                        Visual Basic

 Sub Division()
 'division entière
 Dim Dividende As Integer, Diviseur As Integer
 Dim Différence As Integer, Nsoustr As Integer

 Dividende = InputBox("Entrez le dividende: ")
 Diviseur = InputBox("Entrez le diviseur: ")
 Différence = Dividende
 Nsoustr = 0
 While Différence >= Diviseur
     Différence = Différence - Diviseur
     Nsoustr = Nsoustr + 1
     wend
 MsgBox ("Le quotient vaut: " & Nsoustr)
 Msgbox ("Le reste vaut: " & Différence)
 End Sub
Répétion (I)                                           while    <condition>
                                                          <instructions>
                                                            wend


   tant qu’une condition (de continuation) reste vraie
   des instructions sont exécutées
        donc plusieurs fois possibles

While Différence >= Diviseur       condition
     Différence = …                            instructions à répéter
     Nsoustr    = …
     wend                                      fin des instructions à répéter
suite …
Division
édition
Division
exécution     non           Différence
                           >= Diviseur

                                 oui


                                Différence = …
                                nsoustr = ...



            Afficher ...
Division (variante 1)
énoncé


   même énoncé
   mais dialogue différent
        pas de boîte de dialogue
        les nombres se trouvent dans 2 cellules
          –   A1:B1
        le quotient et le reste sont affichés dans deux cellules
          –   C1:C2
Division (variante 1)
édition
                        Visual Basic




  Exercice ...
Jeu
énoncé

   Etant donné
      un nombre entier tiré au hasard (entre 1 et 10) et
       inconnu de l’utilisateur
   on demande de concevoir un programme de jeu qui
    permette à l’utilisateur
   de deviner ce nombre
Jeu
construction de l’itération: situation de départ
                                                               relayeur
  2   “plus grand”
  8   “plus petit”
                              propositions déjà traitées

  7                           propositions restant à traiter
  …
                 proposition déjà lue



Informations connues (pour progresser)
  proposition = 7
  solution = 6
Jeu
construction de l’itération


  corps de la boucle
  si solution < proposition alors
    afficher “plus petit”
  sinon
    afficher “plus grand”
  lire proposition
  initialisation
  solution = <nombre tiré au hasard entre 1 et 10>
  lire proposition
  répétition
  tant que proposition <> solution répéter ...
Jeu
algorithme


  solution = <nombre tiré au hasard entre 1 et 10>
  lire proposition

  tant que proposition <> solution répéter
    si solution < proposition alors
        afficher “plus petit”
    sinon
        afficher “plus grand”
    lire proposition
  afficher “vous avez trouvé”
Jeu       La fonction Rnd renvoie une valeur de type
          Single contenant un nombre aléatoire. Cette
édition   valeur est inférieure à 1 mais supérieure ou
          égale à zéro.
 Jeu
 édition (Variante dans la fonction Rnd)
Formule pour générer des entiers aléatoires dans une plage donnée:
Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
Soit : Int((10 - 1 + 1) * Rnd + 1)
Jeu
exécution
Plus petit
énoncé
                                            répétition
   Etant donné
        une suite de nombres
   on demande de concevoir un programme qui cherche
    et affiche:
        le plus petit nombre de la suite
             La fonction IsEmpty renvoie une valeur de type

Plus Petit   Boolean (booléen) indiquant si une variable a été
             initialisée. La fonction IsEmpty renvoie la valeur
édition      True si la variable n'est pas initialisée
Plus Petit
exécution
Recherche
énoncé
                                                     répétition
   Etant donné
       une suite de nombres
       un nombre
   on demande de construire un programme qui
       signale si le nombre appartient à la suite
       et s’il appartient, donne sa position dans la suite
Recherche
édition
Recherche
exécution
Recherche
exécution
Cotes
énoncé                                                entrainement


    Etant donné
       une suite de cotes d’élèves
    on demande de construire un programme qui donne
       le pourcentage de cotes inférieures à 5
    sachant que
       les valeurs des cotes sont comprises entre 0 et 10
         le nombres de cotes que comporte la suite est a priori inconnu
Cotes
Cotes
exécution
Echauffement
a = 2
tant que a > 0 répéter   x = 10
  a 0 a - 1              c = 0
afficher a               tant que x<10 répéter
                                x = x - 1
                                c = c + 1
                         afficher c
Entraînement
   Un client achète une série d’articles dans un magasin
   Les quantités de chaque article ainsi que les prix étant donnés par
    la caissière,
   on demande d’écrire un programme qui calcule et affiche
       les montants correspondant à chaque article ainsi que
        le montant total à payer




                                                                    ...
Entraînement (II)
   Etant donné, pour chaque école d’une commune,
      le numéro de code de l’école (>0),
      le nombre d’élèves inscrits en section primaire et
      le nombre d’élèves en section secondaire
   on demande de construire un programme qui détermine,
   pour l’ensemble de la commune,
         –   les nombres d’élèves inscrits en sections primaire et secondaire

				
DOCUMENT INFO