samedi 23 octobre 2010


                  Algorithme et technique de programmation
          Def : algorithme est un ensemble des actions réalisées d’une façon successive pour aboutir un résultat bien définit (le résultat est connue  avant de commencer a écrire l algorithme)
 maintenant on commences  les exercices
          Notes                      :
  _  Chaque algorithme doit avoir un début  et fin
  _  Chaque algorithme doit avoir un nom (somme, pourcentage……..)
          A _ notion variable :
Un variable est un objet qui se caractérise par trois éléments :
*nom
*contenu         
*type contenu

Type possible d une variable
Entier, réel ; texte (chaîne de caractère),……..
          Déclaration             :                       
Variable
A : entier                       
B : réel
C : chaîne
Variable
A, b, c : entier
           B _ constante           :
Une constante est un objet dont la valeur reste stable durant l exécution d’algorithme
           C _affectation          :
Soient a et b deux variables de type entier
Variable
A, b : entier
On  schématise l’affectation par  ←
Exemple :
1_     a ← b : a reçoit b : affecter le contenu de a dans b
 Rq :    a= 10, b=16
Action
       a ← b 
Finalement
        a=16, b=16 #  b n est pas changé, le variable A a été écrasé par le contenu de la case b #
2_    soit  a= 5, b=0
     A     ←      a+b
     B     ←      a
     A     ←      a+b

Finalement a=10et b=5
3_ au départ
       A, b, c : réel a=1, b=2, c=-1
      Actions
     a      ←     b+c           a=1, b=2, c=-1
     b      ←     a               a=1, b=1, c=-1
     c      ←     a+b           a=1, b=1, c=2 
     d      ←     c-b+2        a=3, b=1, c=2
Finalement                       a=3, b=1, c=2
             D_ structure d’un algorithme :
Algorithme                 nom algorithme
Constante
Variable
Début
                         Ensemble des actions
Fin
Ex1 : donnez l’ algo qui permet de permuter (inverser) le contenu de deux variables de type entier a et b ?
Sol 1 :
Algorithme  permuter
Variable  a, b, c : entier

Début
    
       C ←  a  # on a ajouté le variable c pour éviter l écrasement, pour sauvegarder le
                                             Variable a #
       A ←  b
       B ←  c
Fin                 
Ex2 : réaliser un algorithme qui permet de permuter entre variables entier a, b, c ?
a→b→c→a
Sol 2 :
Algorithme                 permuter_2
Variable           a, b, c, d : entier
Début
      d  ←  a            
      a   ←  c
      c   ← b
      b   ← d
Fin
           E _ les opérations d entrées sorties
Les opérations d entrées sorties sont les opérations qui permettent soit a saisir le contenu d’une variable, soit a afficher le contenu d’une variable a l’écran,
Les deux opérations se basent sur le dialogue homme_machine
Par exemple
   Écrire ("donnez un nombre : ") #  le message qui s affiche sur l écran  sera (donnez un nombre) #
  Quand l observateur veut entrer un nombre on écrit
  Lire (nb) # nb est un exemple #
Ne t inquiétez pas  si vous n avez pas compris écrire ( ) et lire ( )  dans la suite je vous promis que tout va bien
Exemple :
Algorithme                     somme
Variable    a.b : entier
                 s     : entier
Début
        Écrire (" donnez la valeur de a ")
        Lire (a)
        Écrire (" donnez la valeur de  ")
        Lire (b)
        s ←a+b
        écrire(" la somme de a et b est :",s)
fin
Fais attention  au              écrire (" la somme de a et b est :", s)  on écrit virgule S pour que la valeur de s qu il soit affiché pas s comme alphabet
Ex 3 : donnez l’algo qui permet de calculer la moyenne de trois variables entier a .b et c
Sol   :
Algorithme          moyenne
Variable   :        a.b.c : réel
      Écrire ("saisir a  :")
      Lire (a)
      Écrire ("saisir b :")
      Lire (b)
      Écrire ("saisir c:")
      Lire(c)
      m ←(a+b+c)/3
      Écrire ("la moyenne est" , s)
Fin
Ex 4 : donnez l’algorithme qui permet de calculer la surface d’un carré
sol    :
Algorithme            surface
Variable   a, s : réel
Début
      Écrire (" saisir la longueur d’arrêt a ")
      Lire (a)
      s← a*a
      Écrire ("la surface du carré :", s)
Fin
Ex 5 : donnez l’algorithme qui permet de calculer le volume d’un cylindre
Sol
Algorithme                   volume cylindre
 Const  pi=3,14
 Variable  h, r, v : réel
Début
      Écrire (" donnez la hauteur h :")
      Lire (h)
      Écrire (" donnez le rayon r :")
      Lire (r)
      v ← r*r*h*pi
      Écrire (" le volume du cylindre est :",v)
Fin
Ex  6 : donnez l’algorithme qui permet de convertir une distance du km en métre et en cm
Sol    :
Algorithme      convertir_distance
Variable m, d, c : réel
Début
       Écrire (" donnez une distance en km:",s)
       Lire c d)
       m←d*1000
      c←m*100
          Écrire (" la distance en m :", m)
          Écrire (" la distance en cm :", c)
Fin
        f _ la structure conditionnelle : si
syntaxe1 :   si   condition     alors
                Actions  i
                    Fin si
Exemple    a= 10
     Si            a> 10             alors
          Écrire (" bravo")
Fin
Les actions i seront réalisées sauf si la condition est vraie
Si la condition est fausse, les actions i ne seront  pas réalisées
Syntaxe 2 : si          condition              alors
               Actions i
 Sinon
          Actions j
Fin si
si la condition est vraie alors les actions i seront réalisés sinon les actions j les seront
Exemple :    écrire (" donnez un nombre :")
                    Lire (a)
                    Écrire (" donnez un autre nombre")
                    Lire (b)
Si                a>b                      alors
             Écrire (" le max est   :",a)
         Sinon
Si                a<b                       alors
             Écrire (" le max est :",b)
         Sinon
             Écrire (" les deux nombre sont égaux")
Fin  si
Fin  si
Ex  7 : donnez l’algorithme qui permet de calculer le max de 3 variables a,b et c
sol    :
Algorithme    maximum
Variable   a, b, c, max : entier
Début
            Écrire (" donnez un nombre ")
            Lire (a)
            Écrire (" donnez un deuxième nombre")
            Lire (b)
            Écrire (" donnez le troisième nombre")
            Lire( c)
Si                a>b                     alors
            max ←a
      Sinon
            max←  b
Fin si
Si         max < c            alors
            max ← c
Fin si
           Écrire (" le maximum est :", max)
Fin si
Remarque : on peut utiliser 
                 P=a-b
si p< 0 alors ………………….. Etc.
Ex 8 : donnez l’algo qui permet de résoudre une équation du second degré ax2 +bx +c =0
Sol   :
Algorithme     resolution_equ
Variable  a, b, c, delta : réel
Début
        Écrire (" donnez a, b, c")
        Lire (a, b, c) # c est faux d’écrire a, b, c mais j ai fait comme ça seulement pour la réduction comme vs savez ce n est pas facile d écrire toute l algo avec le clavier #
si            a=0                      alors
         Écrire (" ce n’est pas une equ de 2 éme degré")
      Sinon
              Delta = (b*b)-(4*a*c)
si            delta = 0               alors
         Écrire (" la somme de a et b est :"-b/ (2*a))
      Sinon
Si        delta<0                    alors
          Écrire (" pas de solution dans R")
Sinon
Écrire (" solution 1:", (-b-√delta)/ (2*a))
Écrire (" solution 2:", (-b+√delta)/ (2*a))
Fin si
Fin si
Fin si
Fin
Ex 9 : donnez l algorithme qui retourne la date de demain  on donne le jour le mois et l’année on suppose que tous les mois ont 30 jours
Sol :
Algorithme     date_demain
Variable   j, m, a : entier
Début
Écrire (" donnez j, m, a:")
Lire (j, m, a)
j←si j>30alors
      j←1
m←m+1
fin si
si m>12alors
m←1
a←a+1
Fin si
Écrire (" demain c’est le:", j,m,a)
Fin
Ex : donnez la date d’hier

           f  _ Les boucles
1 :La boucle pour :
Syntaxe         
Pour               i=vi             à              vf                 faire
                                 Actions
Fin pour
Exemple
Pour   i=1     à          10               faire
             Écrire (" bravo")
Fin pour
Bravo va  s'afficher 10-1+1=10 fois
Ex : afficher les entiers entre 1 et 100
Sol :
Pour i=1 à 100 faire
          Ecrire (i)
Fin pour
Ex  10  : afficher les entiers pairs entre 1et 100
Sol       :
Pour   i= 1      à           100 faire
         Ecrire (i*2)
Fin pour
Ex    11  : fait la somme s=1+2+3+….+10
sol      :
S=0 # la valeur initiale de s est 0 on dit qu’on initialisé s#
Pour  i=1    à      10     faire
             s←s+i #  donnez a s zéro et chaque fois on va ajouter à i 1 le pas #
Fin pour
Écrire (" la somme est:", s)
Ex  12   : fait le produit P=1*2*3*….*10
Sol :
S=1
Pour  i =1     à   10          faire
           p← p*i
fin pour
    Écrire (" le produit est:", p)
Ex 12 : la somme du nombre paire entre 1 et 100
Sol :
S=0
Pour i=1à100 faire
    s← s + (2*i)fin pour
Écrire (" la somme est:", s)
Ex 13 : donnez l’algorithme qui permet de faire la somme ,la différence et la moyenne de deux nombre réel a et b
Ex 14 : donnez l’algorithme qui permet de résoudre une équation de premier degré ax +b=0, tester le cas a=0
Ex  15 : donnez  l, algorithme qui permet de retourner le maximum de 4 variables a, b, c, et d
Ex16 : donnez l’algorithme qui permet de déterminer si un nombre nb est pair ou impair
Sol du dernier exercice
 Algorithme            test
Variable   nb : entier
debut
    Écrire (" donnez un nombre :")
    Lire (nb)
    r←nbmod2 # r reçoit le reste de la division de nb par 2#
   si    r=0      alors
            Écrire (" le nombre", nb, " est paire" )
    Sinon
            Écrire (" le nombre",nb, " est impaire" ) # ce qui est entre les  ( " ) s’affiche tel k il est au contraire du nb le programme va afficher le nombre qu’on a entré#
Fin
Ex 17 : afficher la table de multiplication d’un nombre entier
Sol : algorithme      table_de_multiplication
Variable   nb : entier
                    i : entier
Début
     Écrire (" donnez un nombre :")
     Lire (nb)
Pour   i=1   à  10    faire
         Écrire (nb," *",i,"= ",nb*i)
Fin pour
Fin
Ex 18 : Si vous souvenez les tables de multiplication existant dans la dernière page du cahier de 12 pages , et bah oui, écrivez un algorithme qui permet d’ afficher du tel tableau c est a dire les tables de multiplication de 1 à 10
Sol :
Algorithme     tables _de multiplication
Variable  i,j : entier
 Pour    j=1  à  10   faire
  Pour    i=1  à  10 faire
      Écrire (j," *",i,"= ",j*i)
 Fin pour
Fin pour
Fin
Une boucle pour dans une autre boucle pour s’appelle pour impriqué
Remarque : on peut avoir une boucle pour de la forme suivante
Pour k = vi à vf faire
   Actions
Fin pour
Exemple
Pour i= 100 à 1 faire
   Ecrire (i)
Fin pour
Le i dans une boucle s’incrémonte de 1 par défaut
On peut modifier le pas d’incrémentation par
Pour  i =vi  (pas r) à vf  faire
   Actions
Fin pour
2 : La boucle répéter
Exemple
Répéter
      Écrire (" donnez un nombre :")
      Lire (nb)
      s← nb*nb
      Écrire (" le carré de ",nb, " est " , s)
      Ecrire (" voulez vous continuez oui/ non "
      Lire (réponse)
Jusqu'à réponse = "non"
chaque fois l'opérateur fé entrer oui l’opération se répète jusqu il saisi non 
Exemple 2 :
Algorithme  somme
Variable  a, b, c : réel
                 S : réel
                R : chaîne
Début
Répéter
     Ecrire ("donnez a,b ,c")
     Lire (a, b, c)
     s← a+b+c
     Écrire ("la somme est " , s)
     Écrire (" autre opération o/n")
     Lire( r )
Jusqu’à r="n"
Fin
Les menus
Exemple :
Algorithme
1 _ somme de 2 nombres
2 _  max de 3 nombres
3 _ surface cercle
4 _ quitter
    Votre choix  [ ]
Algorithme     menu
Début
Répéter
        Écrire (" 1_ somme de  2 nombre " )
        Écrire ("2_max de 3 nombres" )
        Écrire ("3_surface cercle ")
      Écrire (" 4 _ quitter  ")
  Répéter
      Écrire ("votre choix  ")
      Lire ( ch )
Jusqu'à ch in [1…4]
Cas ch de
A : début
Écrire ("donnez deux nombres a et  " )
Lire( a, b )
s← a+b
Écrire ("la somme est " , s)
Fin
2 : début
         .
         .
         .
      Fin
  3 : début
        .
        .
        .
     Fin
Jusqu'à ch = 4
Remarque : on peut utiliser la boucle di à la place de cas ( case en anglais ) par exemple
Si ch = 1 alors
…………..
Fin si
3 : La boucle tant que
Syntaxe :
Tant que < condition > faire
    Actions i
Fin tant que
Rq  on quitte la boucle tant que la condition est fausse
Tant que la condition est vraie le programme continuera de boucler
Exemple
Ch = " oui "
Tant  que Ch = " oui " faire
Écrire ("donnez un nombre  ")
Lire (nb)
Écrire ("le carré est ",nb*nb)
Fin tant que
Le programme va boucler à l’infini parce que ch est toujours égale à oui  on n’a pas une moyenne pour l’arrêter dans notre algorithme
Pour ranger le problème 
Ch = " oui "
Tant  que Ch = " oui " faire
Écrire ("donnez un nombre  ")
Lire( nb )
Écrire ("le carré est ",nb*nb)
Écrire ("autre opération oui/non")
Lire (ch)
Fin tant que
Ch  2 :   les tableaux
A _tableau à une seule dimension
Soit t un tableau à dimension 1 de taille n
On schématise t comme suit










t
             1       2       3      4                                        j                                 n-2    n-1  n

la case j est présenté par t(j)
Exemple :
            

9
10
7
-5
   t
              1        2           3          4 
t : tableau de dimension 1 de taille 4 et de type réel
Écrire (t (1)) # pour afficher le contenu de t(1)#
t(3)←    3 # pour changé le contenu de la troisième case par 3#
Comment déclarer un tableau :
Variable
t : tableau( n) : entier
m : tableau (m) : chaîne (10)
Comment remplir un tableau :
pour i=1  à   n faire
Écrire ("donner le contenu de la case   ", i)
Lire ( t(i))
Fin pour
Comment faire pour afficher d’un tableau (supposons que le tableau est déjà rempli)
Pour  i=1  à n faire
   Écrire (t(i))
Fin pour
Ex 19 : soit t un tableau de taille 10 de type entier, écrire l’algorithme qui permet de faire la somme de toute les case du tableau
Sol
Variable i, s : entier
           T : tableau (10) : entier
S=0
Pour       i=1   à  10      faire
     S ← s +t(i)
Fin pour
Écrire ("la somme est ", s)
Fin
Ex 20 : donnez la moyenne d’un tableau de taille 20  de type entier
Variable  i, s : entier
                  T : tableau (20) : entier
             M : réel
Début
S=0
Pour  i=1  à  20      faire
     S ← s+ t(i)
Fin pour
m← s/20
Écrire ("la moyenne est  ", m)
Fin
Exercice 21 : donnez l’algorithme qui donne le maximum d’un tableau (20)
Sol
m← t(1)
Pour  i=2 à 20 faire
        Si    t(i)>m        alors
              m  ← t(i)
        Fin si
Fin pour