SlideShare une entreprise Scribd logo
1  sur  42
Télécharger pour lire hors ligne
DUT SRC – IUT de Marne-la-Vallée
            25/11/2011
      INF120 - Algorithmique




          Cours 4
Les tableaux et les boucles




                                     Philippe Gambette
Sources

 • Le livre de Java premier langage, d'A. Tasso
 • Cours INF120 de J.-G. Luque
 • Cours de J. Henriet : http://julienhenriet.olympe-network.com/Algo.html
Plan du cours 4 – Tableaux et boucles

 • Résumé des épisodes précédents
 • Les tableaux
 • Les boucles while et for
Plan du cours 4 – Tableaux et boucles

 • Résumé des épisodes précédents
 • Les tableaux
 • Les boucles while et for
Résumé de l'épisode précédent

 Méthodologie pour :
 - comprendre un algorithme :
     - repérer les variables en entrée, en sortie, leur type,
     - choisir un exemple pour faire la trace de l'algorithme.
Résumé de l'épisode précédent

 Méthodologie pour :
 - comprendre un algorithme :
     - repérer les variables en entrée, en sortie, leur type,
     - choisir un exemple pour faire la trace de l'algorithme.




                           SousChaine("blabla",2,Longueur("blabla")-1)
                                                            6
                                                            5

                                               “labl”
Résumé de l'épisode précédent

 Méthodologie pour :
 - comprendre un algorithme :
     - repérer les variables en entrée, en sortie, leur type,
     - choisir un exemple pour faire la trace de l'algorithme.
 - écrire un algorithme :
      - repérer les variables en entrée, en sortie, leur type, choisir un exemple
        pour voir le comportement attendu de l'algorithme sur un exemple,
      - trouver comment résoudre le problème sur un exemple, étape par
        étape,
      - généraliser ces étapes en utilisant les structures algorithmiques à
        disposition (boucles, tests, appels d'autres algorithmes) et des variables
        pour stocker des valeurs qui varient à chaque étape.


 Rappels sur la syntaxe (vocabulaire et façon de l'utiliser) Java et pseudo-code.
A garder en tête

 DM à rendre pour le 12 décembre
 Notes des TD2 et 3 à venir. Si pas satisfaits, rendez le TD4 même si vous n'êtes
 pas dans la liste.
 Séance facultative d'exercices d'entraînement du 2 décembre.
 Pourront y participer ceux qui ont travaillé sur le DM1 ou l'exercice
 supplémentaire au bas de la page http://tinyurl.com/INF120-2011S1.
Plan du cours 4 – Tableaux et boucles

 • Résumé des épisodes précédents
 • Les tableaux
 • Les boucles while et for
Le nombre d'utilisations d'un mot dans un texte

• Écrivez un algorithme TrouveMot qui prend en entrée une chaîne de
caractères mot et une chaîne de caractères texte, et compte le nombre
de fois que mot apparaît dans texte.

Exemple : mot = “fuck”
  texte=“ Nobody's fuckin' screaming, Craig! Wake the fuck up! ”


Algorithme TrouveMot :
Entrées : chaîne de caractères mot, chaîne de caractères texte
Sorties : nombre de fois (entier) que mot apparaît dans texte
Début
      i←1
      compteur ← 0
      Tant que i<Longueur(texte)-Longueur(mot)+2 faire :
            Si mot = SousChaine(texte,i,i+Longueur(mot)-1) alors :
                  compteur ← compteur+1
            i ← i+1
            FinSi
      Fin TantQue
      renvoyer compteur
Fin
Le nombre d'utilisations d'un mot dans un texte

    La “minute culturelle”
    Comment compter plusieurs mots dans un texte ?
    Méthode naïve :
    appliquer l'algorithme TrouveMot pour chaque mot à compter
        autant de lectures du texte que de mots distincts à compter
Le nombre d'utilisations d'un mot dans un texte

    La “minute culturelle”
    Comment compter plusieurs mots dans un texte ?
    Méthode naïve :
    appliquer l'algorithme TrouveMot pour chaque mot à compter
        autant de lectures du texte que de mots distincts à compter
    Méthode astucieuse plus rapide :
    faire une lecture du texte en construisant un dictionnaire
         compter tous les mots au fur et à mesure
         ensuite, pour avoir le nombre d'apparitions d'un mot,
         simplement aller voir dans le dictionnaire
         (pas besoin de reparcourir le texte)
    Texte : “Nobody's fuckin' screaming, Craig! Wake the fuck up!”
    Dictionnaire : N o b d y ' s f u c k i n r e a m g , C ! W t h p No ob bo od dy y' 's sf fu ...

                   1 2 1 1 1 2 2 2 3 3 3 3 2 2 3 3 1 2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 2 ...
Le nombre d'utilisations d'un mot dans un texte

    La “minute culturelle”
    Comment compter plusieurs mots dans un texte ?
    Problèmes d'“Algorithmique du texte”
        des experts au LIGM dans le
        bâtiment Copernic !




                                            http://igm.univ-mlv.fr/~mac/CHL/CHL.html
Les tableaux

   Les tableaux sont des variables qui contiennent plusieurs variables de
   même type, stockées chacune dans une des cases du tableau.
   Par exemple,
   Un tableau d'entiers :        Un tableau de chaînes de caractères :
       4                             “chaine1”
       5                             “chaine2”
       1                             “blabla”
       23                            “toto”
       8
       9
Les tableaux

   Les tableaux sont des variables qui contiennent plusieurs variables de
   même type, stockées chacune dans une des cases du tableau.
   Par exemple,
   Un tableau d'entiers :        Un tableau de chaînes de caractères :
       4            case 1           “chaine1”
       5            case 2           “chaine2”      longueur d'un tableau
       1            case 3           “blabla”       = nombre de cases
       23           case 4           “toto”
       8            case 5
                                     longueur 4
       9            case 6
   longueur 6
Les tableaux
                                                                 en pseudo-code
   Les tableaux sont des variables qui contiennent plusieurs variables de
   même type, stockées chacune dans une des cases du tableau.
                          Variables :      tableau1, un tableau d'entiers,
   Par exemple,
                                           tableau2, un tableau de chaînes de caractères
   Un tableau d'entiers :               Un tableau de chaînes de caractères :
       4              case 1                “chaine1”
       5              case 2                “chaine2”        longueur d'un tableau
       1              case 3                “blabla”         = nombre de cases
       23             case 4                “toto”             Longueur(tableau2)
       8              case 5
                                           longueur 4
       9              case 6                                 tableau2=NouveauTableau(4)
                                                             Case(tableau2,1)←”chaine1”
   longueur 6     tableau1=NouveauTableau(6)                 Case(tableau2,2)←”chaine2”
                  Case(tableau1,1)←4                         Case(tableau2,3)←”blabla”
                  Case(tableau1,2)←5                         Case(tableau2,4)←”toto”
                  Case(tableau1,3)←1
                  Case(tableau1,4)←23
                  Case(tableau1,5)←8
                  Case(tableau1,6)←9
Les tableaux
                                                                         en Java
   Les tableaux sont des variables qui contiennent plusieurs variables de
   même type, stockées chacune dans une des cases du tableau.
                          int[] tableau1; String[] tableau2;
   Par exemple,
   Un tableau d'entiers :             Un tableau de chaînes de caractères :
       4             case 1                 “chaine1”
       5             case 2                 “chaine2”           longueur d'un tableau
       1             case 3                 “blabla”            = nombre de cases
       23            case 4                 “toto”                tableau2.length
       8             case 5
                                           longueur 4
       9             case 6                                    tableau2=new String[4];
   longueur 6                                                  tableau2[0]=”chaine1”;
                  tableau1=new int[6];                         tableau2[1]=”chaine2”;
                  tableau1[0]=4;                               tableau2[2]=”blabla”;
                  tableau1[1]=5;                               tableau2[3]=”toto”;
                  tableau1[2]=1;
                  tableau1[3]=23;
                  tableau1[4]=8;          Attention, cases du tableau t numérotées
                  tableau1[5]=9;          de 0 à t.length-1 en Java.
Les tableaux

   Les tableaux sont des variables qui contiennent plusieurs variables de
   même type, stockées chacune dans une des cases du tableau.
   Par exemple,
   Un tableau d'entiers :        Un tableau de chaînes de caractères :
       4            case 1           “chaine1”
       5            case 2           “chaine2”      longueur d'un tableau
       1            case 3           “blabla”       = nombre de cases
       23           case 4           “toto”
       8            case 5
                                     longueur 4
       9            case 6
   longueur 6
                              //Afficher les cases du tableau tableau1
                              int i
                              i = 0
                              while (i<tableau1.length){
                                  System.out.println(tableau1[i]);
                                  i = i+1
                              }
Les tableaux

   Les tableaux sont des variables qui contiennent plusieurs variables de
   même type, stockées chacune dans une des cases du tableau.
   Par exemple,
   Un tableau d'entiers :        Un tableau de chaînes de caractères :
       4            case 1           “chaine1”
       5            case 2           “chaine2”      longueur d'un tableau
       1            case 3           “blabla”       = nombre de cases
       23           case 4           “toto”
       8            case 5
                                     longueur 4
       9            case 6
   longueur 6
                                 noté {“chaine1”,“chaine2”,“blabla”,“toto”}
   noté {4,5,1,23,8,9}
Les tableaux

   Pour lire le contenu d'un tableau...
   il faut une boucle pour aller lire chaque case !


   Si le tableau a été prévu trop court au début, impossible de changer sa
   longueur... il faut une boucle pour le recopier dans un tableau plus grand !


   Possibilité de créer des tableaux de tableaux...


   Manipulation et expériences en TD/TP...
Graphique du nombre d'apparitions des mots d'un texte




                            J'ai cueilli ce brin de bruyère
                            L'automne est morte souviens-t'en
                            Nous ne nous verrons plus sur terre
                            Odeur du temps brin de bruyère
                            Et souviens-toi que je t'attends
Graphique du nombre d'apparitions des mots d'un texte
                 j          1
                 ai         1
      Un tableau cueilli    1
   de chaînes de ce         1
 caractères Mots brin       2
                 de         2
                 bruyère    2          J'ai cueilli ce brin de bruyère
                 l          1          L'automne est morte souviens-t'en
                 automne    1
                 est        1          Nous ne nous verrons plus sur terre
                 morte      1          Odeur du temps brin de bruyère
                 souviens   2          Et souviens-toi que je t'attends
                 t          2
                 en         1
                 nous       2
                 ne         1
                 verrons    1
                 plus       1
                 sur        1
                 terre      1
                 odeur      1
                 du         1
                 temps      1
                 et         1
                 toi        1
                 que        1
                 je         1
                 attends    1   Un tableau d'entiers NbApparitions
Graphique du nombre d'apparitions des mots d'un texte
                 j          1               Résultat voulu :
                 ai         1
      Un tableau cueilli    1
   de chaînes de ce         1
 caractères Mots brin       2
                 de         2
                 bruyère    2
                 l          1
                 automne    1
                 est        1
                 morte      1
                 souviens   2
                 t          2
                 en         1
                 nous       2
                 ne         1
                 verrons    1
                 plus       1
                 sur        1
                 terre      1
                 odeur      1
                 du         1
                 temps      1
                 et         1
                 toi        1
                 que        1
                 je         1
                 attends    1   Un tableau d'entiers NbApparitions
Graphique du nombre d'apparitions des mots d'un texte
                    j            1
                    ai           1
         Un tableau cueilli      1
      de chaînes de ce           1
    caractères Mots brin         2
                    de           2
                    bruyère      2
                    l            1
                    automne      1
                    est          1
                    morte        1
                    souviens     2
                    t            2
                    en           1
                    nous         2
                    ne           1
                    verrons      1
                    plus         1
                    sur          1
 (0,0) Résultat voulu :
                    terre        1
                    odeur        1
                    du (16,30)   1
 (4,40)             temps        1
(0,40)              et           1
                    toi          1
                    que          1
 (0,50)             je           1
                    attends      1   Un tableau d'entiers NbApparitions
Graphique du nombre d'apparitions des mots d'un texte
                 j          1      (0,0)    Résultat voulu :
                 ai         1
      Un tableau cueilli    1                            (16,30)
   de chaînes de ce         1      (4,40)
 caractères Mots brin       2
                 de         2     (0,40)
                 bruyère    2
                 l          1
                 automne    1      (0,50)
                 est        1
                 morte      1     Algorithme DessineHistogramme
                 souviens   2     Entrée : tableau de chaînes de caractères Mots et
                 t          2
                                  tableau d'entiers NbApparitions.
                 en         1
                 nous       2     Variable :
                 ne         1     Début
                 verrons    1     ...
                 plus       1          dessineRectanglePlein(0,40,4,10,
                 sur        1                couleurRGB(0,0,255))
                 terre      1
                 odeur      1     …
                 du         1          dessineRectanglePlein(16,30,4,20,
                 temps      1                couleurRGB(0,0,255))
                 et         1     ...
                 toi        1     Fin
                 que        1
                 je         1
                 attends    1   Un tableau d'entiers NbApparitions
Graphique du nombre d'apparitions des mots d'un texte
                 j          1      (0,0)    Résultat voulu :
                 ai         1
      Un tableau cueilli    1                            (16,30)
   de chaînes de ce         1      (4,40)
 caractères Mots brin       2
                 de         2     (0,40)
                 bruyère    2
                 l          1
                 automne    1      (0,50)
                 est        1               i:123
                 morte      1     Algorithme DessineHistogramme
                 souviens   2     Entrée : tableau de chaînes de caractères Mots et
                 t          2
                                  tableau d'entiers NbApparitions.
                 en         1
                 nous       2     Variable :            x
                 ne         1     Début                            y
                 verrons    1     ...
                 plus       1          dessineRectanglePlein(0,40,4,10,
                 sur        1                couleurRGB(0,0,255)) h
                 terre      1
                 odeur      1     …
                 du         1          dessineRectanglePlein(16,30,4,20,
                 temps      1                couleurRGB(0,0,255))
                 et         1     ...
                 toi        1     Fin
                 que        1
                 je         1
                 attends    1   Un tableau d'entiers NbApparitions
Graphique du nombre d'apparitions des mots d'un texte
                 j          1      (0,0)    Résultat voulu :
                 ai         1
      Un tableau cueilli    1                            (16,30)
   de chaînes de ce         1      (4,40)
 caractères Mots brin       2
                 de         2     (0,40)
                 bruyère    2
                 l          1
                 automne    1      (0,50)
                 est        1               i:123
                 morte      1     Algorithme DessineHistogramme
                 souviens   2     Entrée : tableau de chaînes de caractères Mots et
                 t          2
                                  tableau d'entiers NbApparitions.
                 en         1
                 nous       2     Variable :            x = 4(i-1)
                 ne         1     Début                            y = 50-10*Case
                                                                      (NbApparitions,i)
                 verrons    1     ...
                 plus       1          dessineRectanglePlein(0,40,4,10,
                 sur        1                couleurRGB(0,0,255)) h = 10*Case
                 terre      1
                 odeur      1     …                                      (NbApparitions,i)
                 du         1          dessineRectanglePlein(16,30,4,20,
                 temps      1                couleurRGB(0,0,255))
                 et         1     ...
                 toi        1     Fin
                 que        1
                 je         1
                 attends    1   Un tableau d'entiers NbApparitions
Graphique du nombre d'apparitions des mots d'un texte
                 j          1      (0,0)    Résultat voulu :
                 ai         1
      Un tableau cueilli    1                            (16,30)
   de chaînes de ce         1      (4,40)
 caractères Mots brin       2
                 de         2     (0,40)
                 bruyère    2
                 l          1
                 automne    1      (0,50)
                 est        1
                 morte      1     Algorithme DessineHistogramme
                 souviens   2     Entrée : tableau de chaînes de caractères Mots et
                 t          2
                                  tableau d'entiers NbApparitions.
                 en         1
                 nous       2     Variable : entier compteur
                 ne         1     Début
                 verrons    1     compteur ← 1
                 plus       1     Tant que ... faire :
                 sur        1          dessineRectanglePlein(compteur*4-4,
                 terre      1
                 odeur      1                50-10*Case(NbApparitions,compteur),
                 du         1                4,10*Case(NbApparitions,compteur),
                 temps      1                couleurRGB(0,0,255))
                 et         1
                 toi        1     Fin TantQue
                 que        1
                 je         1
                                  Fin
                 attends    1   Un tableau d'entiers NbApparitions
Graphique du nombre d'apparitions des mots d'un texte
                 j          1      (0,0)    Résultat voulu :
                 ai         1
      Un tableau cueilli    1                            (16,30)
   de chaînes de ce         1      (4,40)
 caractères Mots brin       2
                 de         2     (0,40)
                 bruyère    2
                 l          1
                 automne    1      (0,50)
                 est        1
                 morte      1     Algorithme DessineHistogramme
                 souviens   2     Entrée : tableau de chaînes de caractères Mots et
                 t          2
                                  tableau d'entiers NbApparitions.
                 en         1
                 nous       2     Variable : entier compteur
                 ne         1     Début
                 verrons    1     compteur ← 1
                 plus       1     Tant que compteur < Longueur(Mots)+1 faire :
                 sur        1           dessineRectanglePlein(compteur*4-4,
                 terre      1
                 odeur      1                50-10*Case(NbApparitions,compteur),
                 du         1                4,10*Case(NbApparitions,compteur),
                 temps      1                couleurRGB(0,0,255))
                 et         1           compteur ← 1 + compteur
                 toi        1     Fin TantQue
                 que        1
                 je         1
                                  Fin
                 attends    1   Un tableau d'entiers NbApparitions
Le nombre d'apparitions d'un mot dans un texte

   La “minute mathématique”
   La loi de Zipf prédit la courbe du nombre d'apparitions des mots les plus
   fréquents d'un texte.
               y = nombre d'apparitions du x-ième
               mot le plus fréquent dans le texte
             140

             120

             100

             80
                                                                           Nombre réel d'apparition des mots
             60                                                            Nombre estimé d'apparition des
                                                                           mots

             40

             20

              0                                                                   x = numéro du mot (1
                    3 7 11 15 19 23 27 31 35 39 43 47 51 55 59 63 67 71
                   1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73
                                                                                  pour le plus fréquent, 2
                                                                                  pour le 2° plus
                                                                                  fréquent...)
Le nombre d'apparitions d'un mot dans un texte

   La “minute mathématique”
   La loi de Zipf prédit la courbe du nombre d'apparitions des mots les plus
   fréquents d'un texte.
               y = nombre d'apparitions du x-ième
               mot le plus fréquent dans le texte
             140

             120

             100

             80
                                                                           Nombre réel d'apparition des mots
             60                                                            Nombre estimé d'apparition des
                                                                           mots

             40
                                                                                      y=250/(x+1)
             20

              0                                                                   x = numéro du mot (1
                    3 7 11 15 19 23 27 31 35 39 43 47 51 55 59 63 67 71
                   1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73
                                                                                  pour le plus fréquent, 2
                                                                                  pour le 2° plus
                                                                                  fréquent...)


          Fonctionne pour n'importe quel texte assez long...
Plan du cours 4 – Tableaux et boucles

 • Résumé des épisodes précédents
 • Les tableaux
 • Les boucles while et for
La boucle “for” / “Pour tout...”

 La boucle “for” / “Pour tout”
 Une boucle pour parcourir tous les entiers entre deux valeurs entières.
La boucle “for” / “Pour tout...”

  La boucle “for” / “Pour tout”
  Une boucle pour parcourir tous les entiers entre deux valeurs entières.

Algorithme DessineHistogramme                       Algorithme DessineHistogramme
Entrée : tableau de chaînes de caractères Mots et   Entrée : tableau de chaînes de caractères Mots et
tableau d'entiers NbApparitions.                    tableau d'entiers NbApparitions.
Variable : entier compteur                          Variable : entier compteur
Début                                               Début
compteur ← 1                                        Pour compteur de 1 à Longueur(Mots) faire :
Tant que compteur < Longueur(Mots)+1 faire :             dessineRectanglePlein(compteur*4-4,
      dessineRectanglePlein(compteur*4-4,                      50-10*Case(NbApparitions,compteur),
           50-10*Case(NbApparitions,compteur),                 4,10*Case(NbApparitions,compteur),
           4,10*Case(NbApparitions,compteur),                  couleurRGB(0,0,255))
           couleurRGB(0,0,255))                          compteur ← 1 + compteur
      compteur ← 1 + compteur                       Fin Pour
Fin TantQue                                         Fin
Fin
La boucle “for” / “Pour tout...”

  La boucle “for” / “Pour tout”
  Une boucle pour parcourir tous les entiers entre deux valeurs entières.

Algorithme DessineHistogramme                       Algorithme DessineHistogramme
Entrée : tableau de chaînes de caractères Mots et   Entrée : tableau de chaînes de caractères Mots et
tableau d'entiers NbApparitions.                    tableau d'entiers NbApparitions.
Variable : entier compteur                          Variable : entier compteur
Début                                               Début
compteur ← 1                                        Pour compteur de 1 à Longueur(Mots) faire :
Tant que compteur < Longueur(Mots)+1 faire :             dessineRectanglePlein(compteur*4-4,
      dessineRectanglePlein(compteur*4-4,                      50-10*Case(NbApparitions,compteur),
           50-10*Case(NbApparitions,compteur),                 4,10*Case(NbApparitions,compteur),
           4,10*Case(NbApparitions,compteur),                  couleurRGB(0,0,255))
           couleurRGB(0,0,255))                          compteur ← 1 + compteur
      compteur ← 1 + compteur                       Fin Pour
Fin TantQue                                         Fin
Fin

En Java :
int compteur;
compteur=1;
while(compteur<mots.length+1) {            for(int compteur=1;compteur<mots.length+1;compteur++){
     …                                          …
}                                          }
La boucle “for” / “Pour tout...”

  La boucle “for” / “Pour tout”
  Une boucle pour parcourir tous les entiers entre deux valeurs entières.

Algorithme DessineHistogramme                           Algorithme DessineHistogramme
Entrée : tableau de chaînes de caractères Mots et       Entrée : tableau de chaînes de caractères Mots et
tableau d'entiers NbApparitions.                        tableau d'entiers NbApparitions.
Variable : entier compteur                              Variable : entier compteur
Début                                                   Début
compteur ← 1                                            Pour compteur de 1 à Longueur(Mots) faire :
Tant que compteur < Longueur(Mots)+1 faire :                 dessineRectanglePlein(compteur*4-4,
      dessineRectanglePlein(compteur*4-4,                          50-10*Case(NbApparitions,compteur),
           50-10*Case(NbApparitions,compteur),                     4,10*Case(NbApparitions,compteur),
           4,10*Case(NbApparitions,compteur),                      couleurRGB(0,0,255))
           couleurRGB(0,0,255))                              compteur ← 1 + compteur
      compteur ← 1 + compteur                           Fin Pour
Fin TantQue                                             Fin
Fin
                                                    déclaration +
En Java :
int compteur;                                       initialisation
compteur=1;
while(compteur<mots.length+1) {            for(int compteur=1;compteur<mots.length+1;compteur++){
     …                                          …
}                                          }
La boucle “for” / “Pour tout...”

  La boucle “for” / “Pour tout”
  Une boucle pour parcourir tous les entiers entre deux valeurs entières.

Algorithme DessineHistogramme                           Algorithme DessineHistogramme
Entrée : tableau de chaînes de caractères Mots et       Entrée : tableau de chaînes de caractères Mots et
tableau d'entiers NbApparitions.                        tableau d'entiers NbApparitions.
Variable : entier compteur                              Variable : entier compteur
Début                                                   Début
compteur ← 1                                            Pour compteur de 1 à Longueur(Mots) faire :
Tant que compteur < Longueur(Mots)+1 faire :                 dessineRectanglePlein(compteur*4-4,
      dessineRectanglePlein(compteur*4-4,                          50-10*Case(NbApparitions,compteur),
           50-10*Case(NbApparitions,compteur),                     4,10*Case(NbApparitions,compteur),
           4,10*Case(NbApparitions,compteur),                      couleurRGB(0,0,255))
           couleurRGB(0,0,255))                              compteur ← 1 + compteur
      compteur ← 1 + compteur                           Fin Pour
Fin TantQue                                             Fin
Fin
                                                    déclaration +
En Java :                                                               condition d'arrêt
int compteur;                                       initialisation
compteur=1;
while(compteur<mots.length+1) {            for(int compteur=1;compteur<mots.length+1;compteur++){
     …                                          …
}                                          }
La boucle “for” / “Pour tout...”

  La boucle “for” / “Pour tout”
  Une boucle pour parcourir tous les entiers entre deux valeurs entières.

Algorithme DessineHistogramme                           Algorithme DessineHistogramme
Entrée : tableau de chaînes de caractères Mots et       Entrée : tableau de chaînes de caractères Mots et
tableau d'entiers NbApparitions.                        tableau d'entiers NbApparitions.
Variable : entier compteur                              Variable : entier compteur
Début                                                   Début
compteur ← 1                                            Pour compteur de 1 à Longueur(Mots) faire :
Tant que compteur < Longueur(Mots)+1 faire :                 dessineRectanglePlein(compteur*4-4,
      dessineRectanglePlein(compteur*4-4,                          50-10*Case(NbApparitions,compteur),
           50-10*Case(NbApparitions,compteur),                     4,10*Case(NbApparitions,compteur),
           4,10*Case(NbApparitions,compteur),                      couleurRGB(0,0,255))
           couleurRGB(0,0,255))                              compteur ← 1 + compteur
      compteur ← 1 + compteur                           Fin Pour
Fin TantQue                                             Fin
Fin
                                                    déclaration +
En Java :                                                               condition d'arrêt    mise à jour
int compteur;                                       initialisation
compteur=1;
while(compteur<mots.length+1) {            for(int compteur=1;compteur<mots.length+1;compteur++){
     …                                          …
}                                          }
La boucle “for” / “Pour tout...”

  La boucle “for” / “Pour tout”
  Une boucle pour parcourir tous les entiers entre deux valeurs entières.

Algorithme DessineHistogramme                           Algorithme DessineHistogramme
Entrée : tableau de chaînes de caractères Mots et       Entrée : tableau de chaînes de caractères Mots et
tableau d'entiers NbApparitions.                        tableau d'entiers NbApparitions.
Variable : entier compteur                              Variable : entier compteur
Début                                                   Début
compteur ← 1                                            Pour compteur de 1 à Longueur(Mots) faire :
Tant que compteur < Longueur(Mots)+1 faire :                 dessineRectanglePlein(compteur*4-4,
      dessineRectanglePlein(compteur*4-4,                          50-10*Case(NbApparitions,compteur),
           50-10*Case(NbApparitions,compteur),                     4,10*Case(NbApparitions,compteur),
           4,10*Case(NbApparitions,compteur),                      couleurRGB(0,0,255))
           couleurRGB(0,0,255))                              compteur ← 1 + compteur
      compteur ← 1 + compteur                           Fin Pour
Fin TantQue                                             Fin
Fin
                                                    déclaration +
En Java :                                                               condition d'arrêt    mise à jour
int compteur;                                       initialisation
compteur=1;
while(compteur<mots.length+1){             for(int compteur=1;compteur<mots.length+1;compteur++){
     …                                          …
}                                          }                   compteur=compteur+1
                                                                                   compteur+=1
Comptage des mots d'un texte

 Prétraitement du texte : remplacer ' et – par un espace.

                                             entrée :
                                             j'ai cueilli ce brin de bruyère
                                             l'automne est morte souviens-t'en
                                             nous ne nous verrons plus sur terre
                                             odeur du temps brin de bruyère
                                             et souviens-toi que je t'attends




                                             sortie :
                                             j ai cueilli ce brin de bruyère
                                             l automne est morte souviens t en
                                             nous ne nous verrons plus sur terre
                                             odeur du temps brin de bruyère
                                             et souviens toi que je t attends
Comptage des mots d'un texte

 Prétraitement du texte : remplacer ' et – par un espace.

                                                       entrée :
 Algorithme RemplacePonctuation                        j'ai cueilli ce brin de bruyère
 Entrée : chaîne de caractères texte                   l'automne est morte souviens-t'en
 Sortie : chaîne de caractères                         nous ne nous verrons plus sur terre
 Variable : entier i                                   odeur du temps brin de bruyère
 Début                                                 et souviens-toi que je t'attends
 i←1
 Pour tout i de 1 à Longueur(texte) faire :
       Si Caractère(texte,i)=”'” OU Caractère(texte,i)=”-” alors :
          texte ← ...
       FinSi
       i←i+1
 FinPour                                                   sortie :
 renvoyer texte                                            j ai cueilli ce brin de bruyère
 Fin                                                       l automne est morte souvienst en
                                                       nous ne nous verrons plus sur terre
                                                       odeur du temps brin de bruyère
                                                       et souviens toi que je t attends
Comptage des mots d'un texte

 Prétraitement du texte : remplacer ' et – par un espace.

                                                       entrée :
 Algorithme RemplacePonctuation                        j'ai cueilli ce brin de bruyère
 Entrée : chaîne de caractères texte                   l'automne est morte souviens-t'en
 Sortie : chaîne de caractères                         nous ne nous verrons plus sur terre
 Variable : entier i                                   odeur du temps brin de bruyère
 Début                                                 et souviens-toi que je t'attends
 i←1
 Pour tout i de 1 à Longueur(texte) faire :
       Si Caractère(texte,i)=”'” OU Caractère(texte,i)=”-” alors :
          texte ← SousChaine(texte,1,i-1)+” “+SousChaine(texte,i+1,Longueur(texte))
       FinSi
       i←i+1
 FinPour                                                   sortie :
 renvoyer texte                                            j ai cueilli ce brin de bruyère
 Fin                                                       l automne est morte souvienst en
                                                       nous ne nous verrons plus sur terre
                                                       odeur du temps brin de bruyère
                                                       et souviens toi que je t attends

Contenu connexe

En vedette

INF220 - Algo DUT SRC1 - Cours 1
INF220 - Algo DUT SRC1 - Cours 1INF220 - Algo DUT SRC1 - Cours 1
INF220 - Algo DUT SRC1 - Cours 1
PGambette
 
INF120 - Algo DUT SRC1 - Cours 2 (2012)
INF120 - Algo DUT SRC1 - Cours 2 (2012)INF120 - Algo DUT SRC1 - Cours 2 (2012)
INF120 - Algo DUT SRC1 - Cours 2 (2012)
PGambette
 
INF240 - Bases de données DUT SRC1 - Cours 2
INF240 - Bases de données DUT SRC1 - Cours 2INF240 - Bases de données DUT SRC1 - Cours 2
INF240 - Bases de données DUT SRC1 - Cours 2
PGambette
 
INF240 - Bases de données DUT SRC1 - Cours 1
INF240 - Bases de données DUT SRC1 - Cours 1INF240 - Bases de données DUT SRC1 - Cours 1
INF240 - Bases de données DUT SRC1 - Cours 1
PGambette
 
M1202 Algorithmique & programmation Java - Cours 1 2013
M1202 Algorithmique & programmation Java - Cours 1 2013M1202 Algorithmique & programmation Java - Cours 1 2013
M1202 Algorithmique & programmation Java - Cours 1 2013
PGambette
 
INF240 - Bases de données DUT SRC1 - Cours 3
INF240 - Bases de données DUT SRC1 - Cours 3INF240 - Bases de données DUT SRC1 - Cours 3
INF240 - Bases de données DUT SRC1 - Cours 3
PGambette
 
57934829 hydrologie-cycle-de-l-eau-et-modelisation-pluie-debit
57934829 hydrologie-cycle-de-l-eau-et-modelisation-pluie-debit57934829 hydrologie-cycle-de-l-eau-et-modelisation-pluie-debit
57934829 hydrologie-cycle-de-l-eau-et-modelisation-pluie-debit
Adnen79
 

En vedette (20)

INF120 - Algo DUT SRC1 - Cours 1
INF120 - Algo DUT SRC1 - Cours 1INF120 - Algo DUT SRC1 - Cours 1
INF120 - Algo DUT SRC1 - Cours 1
 
INF220 - Algo DUT SRC1 - Cours 1
INF220 - Algo DUT SRC1 - Cours 1INF220 - Algo DUT SRC1 - Cours 1
INF220 - Algo DUT SRC1 - Cours 1
 
INF120 - Algo DUT SRC1 - Cours 2 (2012)
INF120 - Algo DUT SRC1 - Cours 2 (2012)INF120 - Algo DUT SRC1 - Cours 2 (2012)
INF120 - Algo DUT SRC1 - Cours 2 (2012)
 
INF240 - Bases de données DUT SRC1 - Cours 2
INF240 - Bases de données DUT SRC1 - Cours 2INF240 - Bases de données DUT SRC1 - Cours 2
INF240 - Bases de données DUT SRC1 - Cours 2
 
INF240 - Bases de données DUT SRC1 - Cours 1
INF240 - Bases de données DUT SRC1 - Cours 1INF240 - Bases de données DUT SRC1 - Cours 1
INF240 - Bases de données DUT SRC1 - Cours 1
 
INF220 - Algo DUT SRC1 - Cours 2
INF220 - Algo DUT SRC1 - Cours 2INF220 - Algo DUT SRC1 - Cours 2
INF220 - Algo DUT SRC1 - Cours 2
 
M1202 Algorithmique & programmation Java - Cours 1 2013
M1202 Algorithmique & programmation Java - Cours 1 2013M1202 Algorithmique & programmation Java - Cours 1 2013
M1202 Algorithmique & programmation Java - Cours 1 2013
 
INF240 - Bases de données DUT SRC1 - Cours 3
INF240 - Bases de données DUT SRC1 - Cours 3INF240 - Bases de données DUT SRC1 - Cours 3
INF240 - Bases de données DUT SRC1 - Cours 3
 
juin2005
juin2005juin2005
juin2005
 
Tunisia_En
Tunisia_EnTunisia_En
Tunisia_En
 
pjuin2005
pjuin2005pjuin2005
pjuin2005
 
mars2005_SIG
mars2005_SIGmars2005_SIG
mars2005_SIG
 
mars2005_BD
mars2005_BDmars2005_BD
mars2005_BD
 
fev2004rgph2004
fev2004rgph2004fev2004rgph2004
fev2004rgph2004
 
Oct2004presentSIG
Oct2004presentSIGOct2004presentSIG
Oct2004presentSIG
 
Chap III : Cours de Modélisation & Simulation des systèmes
Chap III : Cours de Modélisation & Simulation des systèmesChap III : Cours de Modélisation & Simulation des systèmes
Chap III : Cours de Modélisation & Simulation des systèmes
 
Le bassin versant
Le bassin versantLe bassin versant
Le bassin versant
 
Access 2007 verrou
Access 2007 verrouAccess 2007 verrou
Access 2007 verrou
 
57934829 hydrologie-cycle-de-l-eau-et-modelisation-pluie-debit
57934829 hydrologie-cycle-de-l-eau-et-modelisation-pluie-debit57934829 hydrologie-cycle-de-l-eau-et-modelisation-pluie-debit
57934829 hydrologie-cycle-de-l-eau-et-modelisation-pluie-debit
 
Modelisation conception SI
Modelisation conception SIModelisation conception SI
Modelisation conception SI
 

Dernier

Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
ikospam0
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
AmgdoulHatim
 

Dernier (19)

les_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhkles_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhk
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
 
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
 
Les roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxLes roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptx
 
Neuvaine de la Pentecôte avec des textes de saint Jean Eudes
Neuvaine de la Pentecôte avec des textes de saint Jean EudesNeuvaine de la Pentecôte avec des textes de saint Jean Eudes
Neuvaine de la Pentecôte avec des textes de saint Jean Eudes
 
L application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxL application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptx
 
python-Cours Officiel POO Python-m103.pdf
python-Cours Officiel POO Python-m103.pdfpython-Cours Officiel POO Python-m103.pdf
python-Cours Officiel POO Python-m103.pdf
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaire
 
Formation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxFormation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptx
 
Cours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiquesCours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiques
 
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
 
Télécommunication et transport .pdfcours
Télécommunication et transport .pdfcoursTélécommunication et transport .pdfcours
Télécommunication et transport .pdfcours
 
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetFormation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
 
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANKRAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
 
Echos libraries Burkina Faso newsletter 2024
Echos libraries Burkina Faso newsletter 2024Echos libraries Burkina Faso newsletter 2024
Echos libraries Burkina Faso newsletter 2024
 
L'expression du but : fiche et exercices niveau C1 FLE
L'expression du but : fiche et exercices  niveau C1 FLEL'expression du but : fiche et exercices  niveau C1 FLE
L'expression du but : fiche et exercices niveau C1 FLE
 
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxIntégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
 

INF120 - Algo DUT SRC1 - Cours 4

  • 1. DUT SRC – IUT de Marne-la-Vallée 25/11/2011 INF120 - Algorithmique Cours 4 Les tableaux et les boucles Philippe Gambette
  • 2. Sources • Le livre de Java premier langage, d'A. Tasso • Cours INF120 de J.-G. Luque • Cours de J. Henriet : http://julienhenriet.olympe-network.com/Algo.html
  • 3. Plan du cours 4 – Tableaux et boucles • Résumé des épisodes précédents • Les tableaux • Les boucles while et for
  • 4. Plan du cours 4 – Tableaux et boucles • Résumé des épisodes précédents • Les tableaux • Les boucles while et for
  • 5. Résumé de l'épisode précédent Méthodologie pour : - comprendre un algorithme : - repérer les variables en entrée, en sortie, leur type, - choisir un exemple pour faire la trace de l'algorithme.
  • 6. Résumé de l'épisode précédent Méthodologie pour : - comprendre un algorithme : - repérer les variables en entrée, en sortie, leur type, - choisir un exemple pour faire la trace de l'algorithme. SousChaine("blabla",2,Longueur("blabla")-1) 6 5 “labl”
  • 7. Résumé de l'épisode précédent Méthodologie pour : - comprendre un algorithme : - repérer les variables en entrée, en sortie, leur type, - choisir un exemple pour faire la trace de l'algorithme. - écrire un algorithme : - repérer les variables en entrée, en sortie, leur type, choisir un exemple pour voir le comportement attendu de l'algorithme sur un exemple, - trouver comment résoudre le problème sur un exemple, étape par étape, - généraliser ces étapes en utilisant les structures algorithmiques à disposition (boucles, tests, appels d'autres algorithmes) et des variables pour stocker des valeurs qui varient à chaque étape. Rappels sur la syntaxe (vocabulaire et façon de l'utiliser) Java et pseudo-code.
  • 8. A garder en tête DM à rendre pour le 12 décembre Notes des TD2 et 3 à venir. Si pas satisfaits, rendez le TD4 même si vous n'êtes pas dans la liste. Séance facultative d'exercices d'entraînement du 2 décembre. Pourront y participer ceux qui ont travaillé sur le DM1 ou l'exercice supplémentaire au bas de la page http://tinyurl.com/INF120-2011S1.
  • 9. Plan du cours 4 – Tableaux et boucles • Résumé des épisodes précédents • Les tableaux • Les boucles while et for
  • 10. Le nombre d'utilisations d'un mot dans un texte • Écrivez un algorithme TrouveMot qui prend en entrée une chaîne de caractères mot et une chaîne de caractères texte, et compte le nombre de fois que mot apparaît dans texte. Exemple : mot = “fuck” texte=“ Nobody's fuckin' screaming, Craig! Wake the fuck up! ” Algorithme TrouveMot : Entrées : chaîne de caractères mot, chaîne de caractères texte Sorties : nombre de fois (entier) que mot apparaît dans texte Début i←1 compteur ← 0 Tant que i<Longueur(texte)-Longueur(mot)+2 faire : Si mot = SousChaine(texte,i,i+Longueur(mot)-1) alors : compteur ← compteur+1 i ← i+1 FinSi Fin TantQue renvoyer compteur Fin
  • 11. Le nombre d'utilisations d'un mot dans un texte La “minute culturelle” Comment compter plusieurs mots dans un texte ? Méthode naïve : appliquer l'algorithme TrouveMot pour chaque mot à compter autant de lectures du texte que de mots distincts à compter
  • 12. Le nombre d'utilisations d'un mot dans un texte La “minute culturelle” Comment compter plusieurs mots dans un texte ? Méthode naïve : appliquer l'algorithme TrouveMot pour chaque mot à compter autant de lectures du texte que de mots distincts à compter Méthode astucieuse plus rapide : faire une lecture du texte en construisant un dictionnaire compter tous les mots au fur et à mesure ensuite, pour avoir le nombre d'apparitions d'un mot, simplement aller voir dans le dictionnaire (pas besoin de reparcourir le texte) Texte : “Nobody's fuckin' screaming, Craig! Wake the fuck up!” Dictionnaire : N o b d y ' s f u c k i n r e a m g , C ! W t h p No ob bo od dy y' 's sf fu ... 1 2 1 1 1 2 2 2 3 3 3 3 2 2 3 3 1 2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 2 ...
  • 13. Le nombre d'utilisations d'un mot dans un texte La “minute culturelle” Comment compter plusieurs mots dans un texte ? Problèmes d'“Algorithmique du texte” des experts au LIGM dans le bâtiment Copernic ! http://igm.univ-mlv.fr/~mac/CHL/CHL.html
  • 14. Les tableaux Les tableaux sont des variables qui contiennent plusieurs variables de même type, stockées chacune dans une des cases du tableau. Par exemple, Un tableau d'entiers : Un tableau de chaînes de caractères : 4 “chaine1” 5 “chaine2” 1 “blabla” 23 “toto” 8 9
  • 15. Les tableaux Les tableaux sont des variables qui contiennent plusieurs variables de même type, stockées chacune dans une des cases du tableau. Par exemple, Un tableau d'entiers : Un tableau de chaînes de caractères : 4 case 1 “chaine1” 5 case 2 “chaine2” longueur d'un tableau 1 case 3 “blabla” = nombre de cases 23 case 4 “toto” 8 case 5 longueur 4 9 case 6 longueur 6
  • 16. Les tableaux en pseudo-code Les tableaux sont des variables qui contiennent plusieurs variables de même type, stockées chacune dans une des cases du tableau. Variables : tableau1, un tableau d'entiers, Par exemple, tableau2, un tableau de chaînes de caractères Un tableau d'entiers : Un tableau de chaînes de caractères : 4 case 1 “chaine1” 5 case 2 “chaine2” longueur d'un tableau 1 case 3 “blabla” = nombre de cases 23 case 4 “toto” Longueur(tableau2) 8 case 5 longueur 4 9 case 6 tableau2=NouveauTableau(4) Case(tableau2,1)←”chaine1” longueur 6 tableau1=NouveauTableau(6) Case(tableau2,2)←”chaine2” Case(tableau1,1)←4 Case(tableau2,3)←”blabla” Case(tableau1,2)←5 Case(tableau2,4)←”toto” Case(tableau1,3)←1 Case(tableau1,4)←23 Case(tableau1,5)←8 Case(tableau1,6)←9
  • 17. Les tableaux en Java Les tableaux sont des variables qui contiennent plusieurs variables de même type, stockées chacune dans une des cases du tableau. int[] tableau1; String[] tableau2; Par exemple, Un tableau d'entiers : Un tableau de chaînes de caractères : 4 case 1 “chaine1” 5 case 2 “chaine2” longueur d'un tableau 1 case 3 “blabla” = nombre de cases 23 case 4 “toto” tableau2.length 8 case 5 longueur 4 9 case 6 tableau2=new String[4]; longueur 6 tableau2[0]=”chaine1”; tableau1=new int[6]; tableau2[1]=”chaine2”; tableau1[0]=4; tableau2[2]=”blabla”; tableau1[1]=5; tableau2[3]=”toto”; tableau1[2]=1; tableau1[3]=23; tableau1[4]=8; Attention, cases du tableau t numérotées tableau1[5]=9; de 0 à t.length-1 en Java.
  • 18. Les tableaux Les tableaux sont des variables qui contiennent plusieurs variables de même type, stockées chacune dans une des cases du tableau. Par exemple, Un tableau d'entiers : Un tableau de chaînes de caractères : 4 case 1 “chaine1” 5 case 2 “chaine2” longueur d'un tableau 1 case 3 “blabla” = nombre de cases 23 case 4 “toto” 8 case 5 longueur 4 9 case 6 longueur 6 //Afficher les cases du tableau tableau1 int i i = 0 while (i<tableau1.length){ System.out.println(tableau1[i]); i = i+1 }
  • 19. Les tableaux Les tableaux sont des variables qui contiennent plusieurs variables de même type, stockées chacune dans une des cases du tableau. Par exemple, Un tableau d'entiers : Un tableau de chaînes de caractères : 4 case 1 “chaine1” 5 case 2 “chaine2” longueur d'un tableau 1 case 3 “blabla” = nombre de cases 23 case 4 “toto” 8 case 5 longueur 4 9 case 6 longueur 6 noté {“chaine1”,“chaine2”,“blabla”,“toto”} noté {4,5,1,23,8,9}
  • 20. Les tableaux Pour lire le contenu d'un tableau... il faut une boucle pour aller lire chaque case ! Si le tableau a été prévu trop court au début, impossible de changer sa longueur... il faut une boucle pour le recopier dans un tableau plus grand ! Possibilité de créer des tableaux de tableaux... Manipulation et expériences en TD/TP...
  • 21. Graphique du nombre d'apparitions des mots d'un texte J'ai cueilli ce brin de bruyère L'automne est morte souviens-t'en Nous ne nous verrons plus sur terre Odeur du temps brin de bruyère Et souviens-toi que je t'attends
  • 22. Graphique du nombre d'apparitions des mots d'un texte j 1 ai 1 Un tableau cueilli 1 de chaînes de ce 1 caractères Mots brin 2 de 2 bruyère 2 J'ai cueilli ce brin de bruyère l 1 L'automne est morte souviens-t'en automne 1 est 1 Nous ne nous verrons plus sur terre morte 1 Odeur du temps brin de bruyère souviens 2 Et souviens-toi que je t'attends t 2 en 1 nous 2 ne 1 verrons 1 plus 1 sur 1 terre 1 odeur 1 du 1 temps 1 et 1 toi 1 que 1 je 1 attends 1 Un tableau d'entiers NbApparitions
  • 23. Graphique du nombre d'apparitions des mots d'un texte j 1 Résultat voulu : ai 1 Un tableau cueilli 1 de chaînes de ce 1 caractères Mots brin 2 de 2 bruyère 2 l 1 automne 1 est 1 morte 1 souviens 2 t 2 en 1 nous 2 ne 1 verrons 1 plus 1 sur 1 terre 1 odeur 1 du 1 temps 1 et 1 toi 1 que 1 je 1 attends 1 Un tableau d'entiers NbApparitions
  • 24. Graphique du nombre d'apparitions des mots d'un texte j 1 ai 1 Un tableau cueilli 1 de chaînes de ce 1 caractères Mots brin 2 de 2 bruyère 2 l 1 automne 1 est 1 morte 1 souviens 2 t 2 en 1 nous 2 ne 1 verrons 1 plus 1 sur 1 (0,0) Résultat voulu : terre 1 odeur 1 du (16,30) 1 (4,40) temps 1 (0,40) et 1 toi 1 que 1 (0,50) je 1 attends 1 Un tableau d'entiers NbApparitions
  • 25. Graphique du nombre d'apparitions des mots d'un texte j 1 (0,0) Résultat voulu : ai 1 Un tableau cueilli 1 (16,30) de chaînes de ce 1 (4,40) caractères Mots brin 2 de 2 (0,40) bruyère 2 l 1 automne 1 (0,50) est 1 morte 1 Algorithme DessineHistogramme souviens 2 Entrée : tableau de chaînes de caractères Mots et t 2 tableau d'entiers NbApparitions. en 1 nous 2 Variable : ne 1 Début verrons 1 ... plus 1 dessineRectanglePlein(0,40,4,10, sur 1 couleurRGB(0,0,255)) terre 1 odeur 1 … du 1 dessineRectanglePlein(16,30,4,20, temps 1 couleurRGB(0,0,255)) et 1 ... toi 1 Fin que 1 je 1 attends 1 Un tableau d'entiers NbApparitions
  • 26. Graphique du nombre d'apparitions des mots d'un texte j 1 (0,0) Résultat voulu : ai 1 Un tableau cueilli 1 (16,30) de chaînes de ce 1 (4,40) caractères Mots brin 2 de 2 (0,40) bruyère 2 l 1 automne 1 (0,50) est 1 i:123 morte 1 Algorithme DessineHistogramme souviens 2 Entrée : tableau de chaînes de caractères Mots et t 2 tableau d'entiers NbApparitions. en 1 nous 2 Variable : x ne 1 Début y verrons 1 ... plus 1 dessineRectanglePlein(0,40,4,10, sur 1 couleurRGB(0,0,255)) h terre 1 odeur 1 … du 1 dessineRectanglePlein(16,30,4,20, temps 1 couleurRGB(0,0,255)) et 1 ... toi 1 Fin que 1 je 1 attends 1 Un tableau d'entiers NbApparitions
  • 27. Graphique du nombre d'apparitions des mots d'un texte j 1 (0,0) Résultat voulu : ai 1 Un tableau cueilli 1 (16,30) de chaînes de ce 1 (4,40) caractères Mots brin 2 de 2 (0,40) bruyère 2 l 1 automne 1 (0,50) est 1 i:123 morte 1 Algorithme DessineHistogramme souviens 2 Entrée : tableau de chaînes de caractères Mots et t 2 tableau d'entiers NbApparitions. en 1 nous 2 Variable : x = 4(i-1) ne 1 Début y = 50-10*Case (NbApparitions,i) verrons 1 ... plus 1 dessineRectanglePlein(0,40,4,10, sur 1 couleurRGB(0,0,255)) h = 10*Case terre 1 odeur 1 … (NbApparitions,i) du 1 dessineRectanglePlein(16,30,4,20, temps 1 couleurRGB(0,0,255)) et 1 ... toi 1 Fin que 1 je 1 attends 1 Un tableau d'entiers NbApparitions
  • 28. Graphique du nombre d'apparitions des mots d'un texte j 1 (0,0) Résultat voulu : ai 1 Un tableau cueilli 1 (16,30) de chaînes de ce 1 (4,40) caractères Mots brin 2 de 2 (0,40) bruyère 2 l 1 automne 1 (0,50) est 1 morte 1 Algorithme DessineHistogramme souviens 2 Entrée : tableau de chaînes de caractères Mots et t 2 tableau d'entiers NbApparitions. en 1 nous 2 Variable : entier compteur ne 1 Début verrons 1 compteur ← 1 plus 1 Tant que ... faire : sur 1 dessineRectanglePlein(compteur*4-4, terre 1 odeur 1 50-10*Case(NbApparitions,compteur), du 1 4,10*Case(NbApparitions,compteur), temps 1 couleurRGB(0,0,255)) et 1 toi 1 Fin TantQue que 1 je 1 Fin attends 1 Un tableau d'entiers NbApparitions
  • 29. Graphique du nombre d'apparitions des mots d'un texte j 1 (0,0) Résultat voulu : ai 1 Un tableau cueilli 1 (16,30) de chaînes de ce 1 (4,40) caractères Mots brin 2 de 2 (0,40) bruyère 2 l 1 automne 1 (0,50) est 1 morte 1 Algorithme DessineHistogramme souviens 2 Entrée : tableau de chaînes de caractères Mots et t 2 tableau d'entiers NbApparitions. en 1 nous 2 Variable : entier compteur ne 1 Début verrons 1 compteur ← 1 plus 1 Tant que compteur < Longueur(Mots)+1 faire : sur 1 dessineRectanglePlein(compteur*4-4, terre 1 odeur 1 50-10*Case(NbApparitions,compteur), du 1 4,10*Case(NbApparitions,compteur), temps 1 couleurRGB(0,0,255)) et 1 compteur ← 1 + compteur toi 1 Fin TantQue que 1 je 1 Fin attends 1 Un tableau d'entiers NbApparitions
  • 30. Le nombre d'apparitions d'un mot dans un texte La “minute mathématique” La loi de Zipf prédit la courbe du nombre d'apparitions des mots les plus fréquents d'un texte. y = nombre d'apparitions du x-ième mot le plus fréquent dans le texte 140 120 100 80 Nombre réel d'apparition des mots 60 Nombre estimé d'apparition des mots 40 20 0 x = numéro du mot (1 3 7 11 15 19 23 27 31 35 39 43 47 51 55 59 63 67 71 1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 pour le plus fréquent, 2 pour le 2° plus fréquent...)
  • 31. Le nombre d'apparitions d'un mot dans un texte La “minute mathématique” La loi de Zipf prédit la courbe du nombre d'apparitions des mots les plus fréquents d'un texte. y = nombre d'apparitions du x-ième mot le plus fréquent dans le texte 140 120 100 80 Nombre réel d'apparition des mots 60 Nombre estimé d'apparition des mots 40 y=250/(x+1) 20 0 x = numéro du mot (1 3 7 11 15 19 23 27 31 35 39 43 47 51 55 59 63 67 71 1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 pour le plus fréquent, 2 pour le 2° plus fréquent...) Fonctionne pour n'importe quel texte assez long...
  • 32. Plan du cours 4 – Tableaux et boucles • Résumé des épisodes précédents • Les tableaux • Les boucles while et for
  • 33. La boucle “for” / “Pour tout...” La boucle “for” / “Pour tout” Une boucle pour parcourir tous les entiers entre deux valeurs entières.
  • 34. La boucle “for” / “Pour tout...” La boucle “for” / “Pour tout” Une boucle pour parcourir tous les entiers entre deux valeurs entières. Algorithme DessineHistogramme Algorithme DessineHistogramme Entrée : tableau de chaînes de caractères Mots et Entrée : tableau de chaînes de caractères Mots et tableau d'entiers NbApparitions. tableau d'entiers NbApparitions. Variable : entier compteur Variable : entier compteur Début Début compteur ← 1 Pour compteur de 1 à Longueur(Mots) faire : Tant que compteur < Longueur(Mots)+1 faire : dessineRectanglePlein(compteur*4-4, dessineRectanglePlein(compteur*4-4, 50-10*Case(NbApparitions,compteur), 50-10*Case(NbApparitions,compteur), 4,10*Case(NbApparitions,compteur), 4,10*Case(NbApparitions,compteur), couleurRGB(0,0,255)) couleurRGB(0,0,255)) compteur ← 1 + compteur compteur ← 1 + compteur Fin Pour Fin TantQue Fin Fin
  • 35. La boucle “for” / “Pour tout...” La boucle “for” / “Pour tout” Une boucle pour parcourir tous les entiers entre deux valeurs entières. Algorithme DessineHistogramme Algorithme DessineHistogramme Entrée : tableau de chaînes de caractères Mots et Entrée : tableau de chaînes de caractères Mots et tableau d'entiers NbApparitions. tableau d'entiers NbApparitions. Variable : entier compteur Variable : entier compteur Début Début compteur ← 1 Pour compteur de 1 à Longueur(Mots) faire : Tant que compteur < Longueur(Mots)+1 faire : dessineRectanglePlein(compteur*4-4, dessineRectanglePlein(compteur*4-4, 50-10*Case(NbApparitions,compteur), 50-10*Case(NbApparitions,compteur), 4,10*Case(NbApparitions,compteur), 4,10*Case(NbApparitions,compteur), couleurRGB(0,0,255)) couleurRGB(0,0,255)) compteur ← 1 + compteur compteur ← 1 + compteur Fin Pour Fin TantQue Fin Fin En Java : int compteur; compteur=1; while(compteur<mots.length+1) { for(int compteur=1;compteur<mots.length+1;compteur++){ … … } }
  • 36. La boucle “for” / “Pour tout...” La boucle “for” / “Pour tout” Une boucle pour parcourir tous les entiers entre deux valeurs entières. Algorithme DessineHistogramme Algorithme DessineHistogramme Entrée : tableau de chaînes de caractères Mots et Entrée : tableau de chaînes de caractères Mots et tableau d'entiers NbApparitions. tableau d'entiers NbApparitions. Variable : entier compteur Variable : entier compteur Début Début compteur ← 1 Pour compteur de 1 à Longueur(Mots) faire : Tant que compteur < Longueur(Mots)+1 faire : dessineRectanglePlein(compteur*4-4, dessineRectanglePlein(compteur*4-4, 50-10*Case(NbApparitions,compteur), 50-10*Case(NbApparitions,compteur), 4,10*Case(NbApparitions,compteur), 4,10*Case(NbApparitions,compteur), couleurRGB(0,0,255)) couleurRGB(0,0,255)) compteur ← 1 + compteur compteur ← 1 + compteur Fin Pour Fin TantQue Fin Fin déclaration + En Java : int compteur; initialisation compteur=1; while(compteur<mots.length+1) { for(int compteur=1;compteur<mots.length+1;compteur++){ … … } }
  • 37. La boucle “for” / “Pour tout...” La boucle “for” / “Pour tout” Une boucle pour parcourir tous les entiers entre deux valeurs entières. Algorithme DessineHistogramme Algorithme DessineHistogramme Entrée : tableau de chaînes de caractères Mots et Entrée : tableau de chaînes de caractères Mots et tableau d'entiers NbApparitions. tableau d'entiers NbApparitions. Variable : entier compteur Variable : entier compteur Début Début compteur ← 1 Pour compteur de 1 à Longueur(Mots) faire : Tant que compteur < Longueur(Mots)+1 faire : dessineRectanglePlein(compteur*4-4, dessineRectanglePlein(compteur*4-4, 50-10*Case(NbApparitions,compteur), 50-10*Case(NbApparitions,compteur), 4,10*Case(NbApparitions,compteur), 4,10*Case(NbApparitions,compteur), couleurRGB(0,0,255)) couleurRGB(0,0,255)) compteur ← 1 + compteur compteur ← 1 + compteur Fin Pour Fin TantQue Fin Fin déclaration + En Java : condition d'arrêt int compteur; initialisation compteur=1; while(compteur<mots.length+1) { for(int compteur=1;compteur<mots.length+1;compteur++){ … … } }
  • 38. La boucle “for” / “Pour tout...” La boucle “for” / “Pour tout” Une boucle pour parcourir tous les entiers entre deux valeurs entières. Algorithme DessineHistogramme Algorithme DessineHistogramme Entrée : tableau de chaînes de caractères Mots et Entrée : tableau de chaînes de caractères Mots et tableau d'entiers NbApparitions. tableau d'entiers NbApparitions. Variable : entier compteur Variable : entier compteur Début Début compteur ← 1 Pour compteur de 1 à Longueur(Mots) faire : Tant que compteur < Longueur(Mots)+1 faire : dessineRectanglePlein(compteur*4-4, dessineRectanglePlein(compteur*4-4, 50-10*Case(NbApparitions,compteur), 50-10*Case(NbApparitions,compteur), 4,10*Case(NbApparitions,compteur), 4,10*Case(NbApparitions,compteur), couleurRGB(0,0,255)) couleurRGB(0,0,255)) compteur ← 1 + compteur compteur ← 1 + compteur Fin Pour Fin TantQue Fin Fin déclaration + En Java : condition d'arrêt mise à jour int compteur; initialisation compteur=1; while(compteur<mots.length+1) { for(int compteur=1;compteur<mots.length+1;compteur++){ … … } }
  • 39. La boucle “for” / “Pour tout...” La boucle “for” / “Pour tout” Une boucle pour parcourir tous les entiers entre deux valeurs entières. Algorithme DessineHistogramme Algorithme DessineHistogramme Entrée : tableau de chaînes de caractères Mots et Entrée : tableau de chaînes de caractères Mots et tableau d'entiers NbApparitions. tableau d'entiers NbApparitions. Variable : entier compteur Variable : entier compteur Début Début compteur ← 1 Pour compteur de 1 à Longueur(Mots) faire : Tant que compteur < Longueur(Mots)+1 faire : dessineRectanglePlein(compteur*4-4, dessineRectanglePlein(compteur*4-4, 50-10*Case(NbApparitions,compteur), 50-10*Case(NbApparitions,compteur), 4,10*Case(NbApparitions,compteur), 4,10*Case(NbApparitions,compteur), couleurRGB(0,0,255)) couleurRGB(0,0,255)) compteur ← 1 + compteur compteur ← 1 + compteur Fin Pour Fin TantQue Fin Fin déclaration + En Java : condition d'arrêt mise à jour int compteur; initialisation compteur=1; while(compteur<mots.length+1){ for(int compteur=1;compteur<mots.length+1;compteur++){ … … } } compteur=compteur+1 compteur+=1
  • 40. Comptage des mots d'un texte Prétraitement du texte : remplacer ' et – par un espace. entrée : j'ai cueilli ce brin de bruyère l'automne est morte souviens-t'en nous ne nous verrons plus sur terre odeur du temps brin de bruyère et souviens-toi que je t'attends sortie : j ai cueilli ce brin de bruyère l automne est morte souviens t en nous ne nous verrons plus sur terre odeur du temps brin de bruyère et souviens toi que je t attends
  • 41. Comptage des mots d'un texte Prétraitement du texte : remplacer ' et – par un espace. entrée : Algorithme RemplacePonctuation j'ai cueilli ce brin de bruyère Entrée : chaîne de caractères texte l'automne est morte souviens-t'en Sortie : chaîne de caractères nous ne nous verrons plus sur terre Variable : entier i odeur du temps brin de bruyère Début et souviens-toi que je t'attends i←1 Pour tout i de 1 à Longueur(texte) faire : Si Caractère(texte,i)=”'” OU Caractère(texte,i)=”-” alors : texte ← ... FinSi i←i+1 FinPour sortie : renvoyer texte j ai cueilli ce brin de bruyère Fin l automne est morte souvienst en nous ne nous verrons plus sur terre odeur du temps brin de bruyère et souviens toi que je t attends
  • 42. Comptage des mots d'un texte Prétraitement du texte : remplacer ' et – par un espace. entrée : Algorithme RemplacePonctuation j'ai cueilli ce brin de bruyère Entrée : chaîne de caractères texte l'automne est morte souviens-t'en Sortie : chaîne de caractères nous ne nous verrons plus sur terre Variable : entier i odeur du temps brin de bruyère Début et souviens-toi que je t'attends i←1 Pour tout i de 1 à Longueur(texte) faire : Si Caractère(texte,i)=”'” OU Caractère(texte,i)=”-” alors : texte ← SousChaine(texte,1,i-1)+” “+SousChaine(texte,i+1,Longueur(texte)) FinSi i←i+1 FinPour sortie : renvoyer texte j ai cueilli ce brin de bruyère Fin l automne est morte souvienst en nous ne nous verrons plus sur terre odeur du temps brin de bruyère et souviens toi que je t attends