SlideShare uma empresa Scribd logo
1 de 51
Baixar para ler offline
DUT SRC – IUT de Marne-la-Vallée
            07/10/2011
      INF120 - Algorithmique




        Cours 2
Variables et affectations,
     type et codage




                                     Philippe Gambette
Sources

 • Le livre de Java premier langage, d'A. Tasso
 • Cours INF120 de J.-G. Luque
 • Cours FLIN102 de l'Université Montpellier 2
 • Cours de J. Henriet : http://julienhenriet.olympe-network.com/Algo.html
 • http://xkcd.com, http://xkcd.free.fr
Plan du cours 2 – Variables et affectations, type et codage

 • Résumé des épisodes précédents
 • Correction du QCM1
 • Le pseudo-code
 • De l'organigramme au code Java
 • Codage des données
 • Codage binaire des entiers
 • Codage des flottants
 • Autres codages
 • Codage hexadécimal
 • Booléens et opérations de base
Résumé des épisodes précédents

 Algorithme : suite d'instructions pour résoudre un problème


  Données du                        Algorithme :
                                     Instruction 1               Résultat
   problème                          Instruction 2                sorties de
     entrées de                      Instruction 3              l'algorithme
    l'algorithme                           ...

 Un algorithme utilise plusieurs types d'instructions :
 - des affectations dans des variables (mémoires) - des boucles
 - des appels à d'autres algorithmes                   - des tests
 - des “lectures” d'entrées et “renvois” de sorties
 On peut décrire un algorithme :
 - en français                       - en pseudo-code
 - par un organigramme               - dans un langage de programmation
 Pour tester un algorithme : on fait la trace.
Correction du QCM1

QCM 1 – Pour chaque question, choisir une seule réponse, la plus adaptée. Il est possible que plusieurs soient considérées comme
correctes. Si vous avez un doute, écrivez des commentaires à côté de votre réponse (ou au verso).

Q1. Quel langage apprendra-t-on lors du module d'INF120 ?          Q2. Quelle est la commande pour se rendre dans le dossier toto ?
• l'anglais   • le C++     • le PHP                                    • md .          • cd .     • dir .
• le Java
• la Java
              • le PHP
              • le C
                           • l'ADA
                           • le LADA
                                             98%                       • md ..toto • cd ..toto • dir ..toto
                                                                       • md toto       • cd toto  • dir toto
                                                                                                                  75%
Q3. Dans quel ordre doit on réaliser les opérations suivantes, après avoir modifié un code-source ?
• compilation puis exécution puis enregistrement • enregistrement puis exécution puis compilation
• compilation puis enregistrement puis exécution • exécution puis compilation puis enregistrement      90%
• enregistrement puis compilation puis exécution • exécution puis enregistrement puis compilation

Q4. Qu'est-ce qui aurait été affiché dans le terminal, si dans le fichier TP1.java hier, vous aviez écrit : Affiche("2"+"3") ?
• "2"+"3" • "2+3"                    • 2+3          • "2""3"         • "23"                 • 23            • "5"     •5     62%
Q5. Quelle instruction utiliser pour tester si un entier nombreATrouver est égal à un autre entier nombreUtilisateur ?
• Affiche("nombreATrouver==nombreUtilisateur")                           • if(nombreATrouver==nombreUtilisateur)
• Affiche(nombreATrouver=nombreUtilisateur)                              • if(nombreATrouver=nombreUtilisateur)
• reponse==(nombreATrouver=nombreUtilisateur)                            • (reponse=nombreATrouver)=nombreUtilisateur
• reponse==nombreATrouver=nombreUtilisateur                              • reponse=nombreATrouver=nombreUtilisateur


                                                                                                                  66%
Dictionnaire pseudo-code / Java

                              Pseudo-code                Java
Déclaration d'un algorithme   Addition                   public static int Addition(int i, int j){
                              Entrées : entiers i et j        ...
                              Sortie : entier
                              Début
                              …
                                    renvoyer …                    return …
                              Fin                        }

Déclaration d'une variable    Variables : entier i       int i;

Affectation                   i←1                        i = 1;

Test                          Si i=1 alors :             if (i==1){
                                    …                           ...
                              Sinon :                    } else {
                                    …                           ...
                              FinSi                      }

Boucle                        Tant que i<3 :             while (i<3) {
                                    …                         ...
                              Fin TantQue                }
Retour sur l'intérêt du pseudo-code

Intérêts du pseudo-code :   Pseudo-code                Java
• Clair, lisible            Addition                   public static int Addition(int i, int j){
                            Entrées : entiers i et j        ...
• Pédagogique               Sortie : entier
                            Début
• Indépendant du langage    …
de programmation                  renvoyer …                    return …
                            Fin                        }
• Pour distinguer le fond
de la forme                 Variables : entier i       int i;

                            i←1                        i = 1;

                            Si i=1 alors               if (i==1){
                                  …                           ...
                            Sinon                      } else {
                                  …                           ...
                            FinSi                      }

                            Tant que i<3 :             while (i<3) {
                                  …                         ...
                            Fin TantQue                }
Le calcul des puissances de 2

 Je connais le calcul de la multiplication par 2 (en Java : *2).
 Comment calculer les puissances de 2 ? 1, 2, 4, 8, 16, 32, …
 DeuxPuissance(4) =


 Intuition :
 Tant qu'on n'est pas à la puissance voulue, on ...
 → Au total, pour DeuxPuissance(a), on fait ... multiplications par 2.
Le calcul des puissances de 2

 Je connais le calcul de la multiplication par 2 (en Java : *2).
 Comment calculer les puissances de 2 ? 1, 2, 4, 8, 16, 32, …
 DeuxPuissance(4) = 2*2*2*2 = 16
                           4 fois

 Intuition :
 Tant qu'on n'est pas à la puissance voulue, on multiplie par 2.
 → Au total, pour DeuxPuissance(a), on fait a multiplications par 2.


 En français :
 Je multiplie a fois par 2 l'entier 1.
Le calcul des puissances de 2

 Intuition :
          DeuxPuissance(4)         =     2*2*2*2
 En français :
 Je multiplie a fois par 2 l'entier 1.
Le calcul des puissances de 2

 Intuition :
          DeuxPuissance(4)         =     2*2*2*2
 En français :
 Je multiplie a fois par 2 l'entier 1.                    entier a



                                                        resultat ← 1



                                                    resultat ← 2*resultat



                                           a fois



                                                    resultat ← 2*resultat



                                                     renvoyer resultat
Le calcul des puissances de 2

 Intuition :
          DeuxPuissance(4)         =     2*2*2*2
 En français :
 Je multiplie a fois par 2 l'entier 1.                      entier a




                                                          resultat ← 1




                                                      resultat ← 2*resultat

                                             a fois



                                                       renvoyer resultat
Le calcul des puissances de 2

 Intuition :
          DeuxPuissance(4)         =     2*2*2*2
 En français :
 Je multiplie a fois par 2 l'entier 1.
Le calcul des puissances de 2

 Intuition :
          DeuxPuissance(4)               =         2*2*2*2
 En français :
 Je multiplie a fois par 2 l'entier 1.

                            entier a



                          resultat ← 1



                         compteur ← 0
                                                             compteur ← compteur+1

                                             non
                                                    boucle
                          compteur = a ?
                                                               resultat ← 2*resultat
                                 oui

                        renvoyer resultat
De l'organigramme au pseudo-code

     entier a
                           compteur ← compteur+1


   resultat ← 1
                             resultat ← 2*resultat


  compteur ← 0
                                              DeuxPuissance :

   compteur = a ?
                                              Entrée :
                     non
          oui                                 Sortie :
                                              Variables :
 renvoyer resultat
                                              Début




                                                     renvoyer
                                              Fin
De l'organigramme au pseudo-code

     entier a
                           compteur ← compteur+1


   resultat ← 1
                             resultat ← 2*resultat


  compteur ← 0
                                              DeuxPuissance :

   compteur = a ?
                                              Entrée : un entier a
                     non
          oui                                 Sortie : un entier
                                              Variables : entiers compteur et resultat
 renvoyer resultat
                                              Début
                                                  compteur ← 0
                                                  resultat ← 1
                                                  Tant que compteur < a faire :
                                                        resultat ← 2*resultat
                                                        compteur ← compteur +1
                                                  Fin tant que
                                                  renvoyer resultat
                                              Fin
Du pseudo-code au code Java
DeuxPuissance :

Entrée : un entier a
Sortie : un entier
Variables : entiers compteur et resultat
Début
       compteur ← 0
       resultat ← 1
       Tant que compteur < a faire :
              resultat ← 2*resultat
              compteur ← compteur +1
       Fin tant que
       renvoyer resultat                   public static int
Fin                                        DeuxPuissance(          ){




                                               return          ;
                                           }
Du pseudo-code au code Java
DeuxPuissance :

Entrée : un entier a
Sortie : un entier
Variables : entiers compteur et resultat
Début
       compteur ← 0
       resultat ← 1
       Tant que compteur < a faire :
              resultat ← 2*resultat
              compteur ← compteur +1
       Fin tant que
       renvoyer resultat                   public static int
Fin                                        DeuxPuissance(int a){
                                               int compteur=0;
                                               int resultat=1;
                                               while (compteur<a){
                                                  resultat=2*resultat;
                                                  compteur=compteur+1;
                                               }
                                               return resultat;
                                           }
Le codage

   La “minute votes SMS”
   Programme Java :
   import java.io.*;

   public class Boucle{

       public static void main(String [] arg){

           int i=1;

           while(i>0){

                i=i*2;

           }

           System.out.print("J'ai fini !");

       }

   }


   Est-ce que ce programme affiche “J'ai fini !” ?
Le codage

   La “minute votes SMS”
   Programme Java :                                  Algorithme en pseudo-code :
   import java.io.*;
                                                     Boucle :
   public class Boucle{                              Variable : entier i
                                                     Début
       public static void main(String [] arg){             i←1
           int i=1;                                        Tant que i > 0 faire :
                                                                  i←2xi
           while(i>0){                                     Fin tant que
                                                           afficher(“J'ai fini!”)
                i=i*2;                               Fin
           }

           System.out.print("J'ai fini !");

       }

   }


   Est-ce que ce programme affiche “J'ai fini !” ?
Le codage

   La “minute votes SMS”
   Programme Java :                                  Algorithme en pseudo-code :
   import java.io.*;
                                                     Boucle :
   public class Boucle{                              Variable : entier i
                                                     Début
       public static void main(String [] arg){             i←1
           int i=1;                                        Tant que i > 0 faire :
                                                                  i←2xi
           while(i>0){                                     Fin tant que
                                                           afficher(“J'ai fini!”)
                i=i*2;                               Fin
           }                                         Est-ce que cet algorithme
           System.out.print("J'ai fini !");          se termine ?

       }

   }


   Est-ce que ce programme affiche “J'ai fini !” ?
Le codage

   La “minute votes SMS”
   Programme Java :                                  Algorithme en pseudo-code :
   import java.io.*;
                                                     Boucle :
   public class Boucle{                              Variable : entier i
                                                     Début
       public static void main(String [] arg){             i←1
           int i=1;                                        Tant que i > 0 faire :
                                                                  i←2xi
           while(i>0){                                     Fin tant que
                                                           afficher(“J'ai fini!”)
                i=i*2;                               Fin
           }                                         Est-ce que cet algorithme
           System.out.print("J'ai fini !");          se termine ?

       }                                             OUI si i est VRAIMENT un
                                                     entier
   }


   Est-ce que ce programme affiche “J'ai fini !” ?
Le codage

   La “minute votes SMS”
   Programme Java :                                   Résultat du programme :
                                                      2
   import java.io.*;
                                                      4
   public class Boucle{                               8
                                                      16
                                                      32             524288
       public static void main(String [] arg){                       1048576
                                                      64
                                                      128            2097152
           int i=1;                                                  4194304
                                                      256
                                                      512            8388608
           while(i>0){                                               16777216
                                                      1024
                                                      2048           33554432
                i=i*2;
                                                      4096           67108864
                                                      8192           134217728
           }
                                                      16384          268435456
           System.out.print("J'ai fini !");           32768          536870912
                                                      65536          1073741824
       }                                              131072         -2147483648
                                                      262144         J'ai fini!!
   }


   Est-ce que ce programme affiche “J'ai fini !” ? OUI !
Le codage

   La “minute votes SMS”
   Programme Java :                                   Résultat du programme :
                                                      2
   import java.io.*;
                                                      4
   public class Boucle{                               8
                                                      16
                                                      32             524288
       public static void main(String [] arg){                       1048576
                                                      64
                                                      128            2097152
           int i=1;                                                  4194304
                                                      256
                                                      512            8388608
           while(i>0){                                               16777216
                                                      1024
                                                      2048           33554432
                i=i*2;
                                                      4096           67108864
                                                      8192           134217728
           }
                                                      16384          268435456
           System.out.print("J'ai fini !");           32768          536870912
                                                      65536          1073741824
       }                                              131072         -2147483648
                                                      262144         J'ai fini!!
   }


   Les entiers “int” Java ne sont pas de “vrais entiers” mais
       des entiers entre -2 147 483 648 et 2 147 483 647
Le codage des entiers en binaire

   La “minute mathématique”

   Pour le stockage comme pour le traitement d'instructions, il est
   nécessaire que toutes les données traitées par un ordinateur soient
   codées en binaire, par des 0 et des 1.
   Exemple de nombre entier en binaire : 1101100001101

                                     ?
                écriture binaire              écriture décimale
Le codage des entiers en binaire

   La “minute mathématique”
   Pour le stockage comme pour le traitement d'instructions, il est
   nécessaire que toutes les données traitées par un ordinateur soient
   codées en binaire, par des 0 et des 1.
   Exemple de nombre entier en binaire : 1101100001101

        0   0   0    1     1   0     1    1    0    0     0    0    1    1     0    1

       215 214 213   212   211 210   29   28   27   26    25   24   23   22   21   20

   212+ 211 + 29 + 28 + 23 + 22+ 20 = 4096 + 2048 + 512 + 256 + 8 + 4 +1 = 6925



                écriture binaire                         écriture décimale
Le codage des entiers en binaire

   Pour le stockage comme pour le traitement d'instructions, il est
   nécessaire que toutes les données traitées par un ordinateur soient
   codées en binaire, par des 0 et des 1.

                                     ?
             écriture décimale                écriture binaire
Le codage des entiers en binaire

    Pour le stockage comme pour le traitement d'instructions, il est
    nécessaire que toutes les données traitées par un ordinateur soient
    codées en binaire, par des 0 et des 1.

                                          ?
               écriture décimale               écriture binaire

  Exemple : écrire 37 en binaire ?

  Division euclidienne :
     dividende                 diviseur
                    37 2
                     1 18
      reste                     quotient
en Java : 1=37%2           en Java : 18=37/2
Le codage des entiers en binaire

   Pour le stockage comme pour le traitement d'instructions, il est
   nécessaire que toutes les données traitées par un ordinateur soient
   codées en binaire, par des 0 et des 1.

                                     ?
             écriture décimale                écriture binaire


                         37 2
                          1 18 2
                             0 9 2
                               1 4 2
                                 0 2 2
                                   0 1 2
                                     1 0
Le codage des entiers en binaire

   Pour le stockage comme pour le traitement d'instructions, il est
   nécessaire que toutes les données traitées par un ordinateur soient
   codées en binaire, par des 0 et des 1.

                                     ?
             écriture décimale                écriture binaire


                         37 2
                          1 18 2
                             0 9 2
                               1 4 2
                                 0 2 2
                                   0 1 2
                                     1 0

                                              100101
Le calcul rapide en binaire

   Pour faire son geek :
   - compter sur ses doigts en binaire, jusqu'à 210
Le calcul rapide en binaire

   Pour faire son geek :
   - compter sur ses doigts en binaire, jusqu'à 210




                    21

                                  20              20++21 = 3




                         Source image : http://www.so-xperts.com/blog/2011/04/performance-web-et-marketing-le-pouce-et-lindex/
Le calcul rapide en binaire

   Pour faire son geek :
   - compter sur ses doigts en binaire, jusqu'à 210
   - faire des estimations de nombres données en binaire : 2 10 = 1024 donc
   210 ≈ 1000
                           232 ≈ ?
Le calcul rapide en binaire

   Pour faire son geek :
   - compter sur ses doigts en binaire, jusqu'à 210
   - faire des estimations de nombres données en binaire : 2 10 = 1024 donc
   210 ≈ 1000
      ③
                          232 ≈ ?

                                                        ②
                                       32        30+2
   ①a   bxc       b c
              = (a )               2        =2          = 230 x 22
                                                        = 210 x 3 x 4
   ② ab+c = ab x ac                                                   ①
                                                        = (210)3 x 4
                                                        ≈ 10003 x 4
                                                        ≈ 4 milliards
Le calcul rapide en binaire

   Pour faire son geek :
   - compter sur ses doigts en binaire, jusqu'à 210
   - faire des estimations de nombres données en binaire : 2 10 = 1024 donc
   210 ≈ 1000
                           232 ≈ 4 milliards
                           232 = 4 294 967 296
Le codage binaire


         La “minute xkcd”
         De 1 à 10 :

          Sur une échelle de 1 à 10,
          quelle est la probabilité
          que cette question utilise
          du binaire ?
                                       Si vous obtenez une note de 11/100 à un
                              4?
                                       examen d'informatique, mais que vous
          C'est quoi un 4 ?            dites qu'il devrait être compté comme un
                                       15/20, alors on décidera probablement
                                       que vous le méritez.




          http://xkcd.com/953
          http://xkcd.free.fr?id=953
Le codage des entiers en mémoire

   1 bit = 0 ou 1
   1 octet = 8 bits
   1 Ko (kilooctet) = 1024 octets
   1 Mo (mégaoctet) = 1024 Ko (disquette)
   1 Go (gigaoctet) = 1024 Mo (carte mémoire, 2h de vidéo en DivX)
   1 To (téraoctet) = 1024 Go (disque dur externe)



                                32 bits



      1 octet         1 octet         1 octet   1 octet
Le codage des entiers Java


                        31 bits
    1 bit
    pour le            -2 -1 0 1 2
    signe

                                               229



                                               230




    -231 = -2 147 483 648         231-1 = 2 147 483 647
Le codage des flottants double précision

                           8 octets = 64 bits


              11 bits                   52 bits
      1 bit   pour                      pour la
      pour le l'exposant                mantisse
      signe e                           m
      s


                              x = (-1)s m 2e-1023
Autres codages

  • Chaînes de caractères
      • ASCII : 7 bits, caractères simples codés de 32 à 127
      • ANSI : 8 bits, caractères simples codés de 32 à 127, caractères
      accentués de 128 à 255
      • UTF-8 : de 1 à 4 octets


  • Couleurs d'une image
      • RGB : “red, blue, green”, 1 octet pour chacun :
          • valeurs entre 0 et 255
          • codage hexadécimal avec 2 symboles
Codage hexadécimal

    La “minute culturelle”
    Hexadécimal : en base 16 (ἑξάς : six, decem : dix)
    Codé par les chiffres de 0 à 9 et les lettres A B C D E F
                                              10 11 12 13 14 15
    • Deux symboles pour un octet :
    16² valeurs possibles = 256
    • Utilisé pour coder les couleurs en HTML :
    couleur="#RRGGBB"
    rouge="#FF0000", vert="#00FF00"
    #800080 ?
Codage hexadécimal

    La “minute culturelle”
    Hexadécimal : en base 16 (ἑξάς : six, decem : dix)
    Codé par les chiffres de 0 à 9 et les lettres A B C D E F
                                              10 11 12 13 14 15
    • Deux symboles pour un octet :
    16² valeurs possibles = 256
    • Utilisé pour coder les couleurs en HTML :
    couleur="#RRGGBB"
    rouge="#FF0000", vert="#00FF00"
    #800080 ?
Les booléens

   • Opérations sur les booléens :
   et, ou, non


     ET      VRAI       FAUX         OU     VRAI   FAUX
     VRAI    VRAI       FAUX         VRAI   VRAI   VRAI
     FAUX    FAUX       FAUX         FAUX   VRAI   FAUX



     NON     VRAI       FAUX
             FAUX       VRAI
Les booléens

   • Opérations sur les booléens :
   et, ou, non
     ET      VRAI       FAUX          OU       VRAI       FAUX
     VRAI    VRAI       FAUX          VRAI     VRAI       VRAI
     FAUX    FAUX       FAUX          FAUX     VRAI       FAUX


     NON     VRAI       FAUX
             FAUX       VRAI
                                     Opérations sur les booléens codées
                                     sur les entiers 0 et 1 :
                                      x 1 0               max(1,...+...) 1 0
                                      1 1 0                        1 1 1
                                      0 0 0                        0 1 0

                                      1-x 1    0
                                          0    1
Les opérations de base en Java

   • Type entier int
   +, -, *, /, (division entière), % (reste modulo), ^ (puissance)


   • Type flottant float, ou double (plus précis)
   +, -, *, /


   • Type booléen boolean
   false (faux), true (vrai), && (et), || (ou), ! (non)


   • Type chaîne de caractères string
   + (concaténation : “INF”+”120”=”INF120”)
Enjeux de l'algorithmique - terminaison

   La “minute votes SMS”
   Problème : aller en voiture de Châtelet à la Tour Montparnasse
Enjeux de l'algorithmique - terminaison

   La “minute votes SMS”
   Problème : aller en voiture de Châtelet à la Tour Montparnasse
   Algorithme “du repère visuel” :
   A tout instant on sait où se trouve la Tour Montparnasse
       → prendre la rue qui s'en rapproche le plus
Enjeux de l'algorithmique - terminaison

   La “minute votes SMS”
   Problème : aller en voiture de Châtelet à la Tour Montparnasse
   Algorithme “du repère visuel” :
   A tout instant on sait où se trouve la Tour Montparnasse
       → prendre la rue qui s'en rapproche le plus

                                       algorithme de la famille des
                                          algorithmes gloutons


                                  toujours choisir le profit maximum !
Enjeux de l'algorithmique - terminaison

   La “minute votes SMS”
   Problème : aller en voiture de Châtelet à la Tour Montparnasse
   Algorithme “du repère visuel” :
   A tout instant on sait où se trouve la Tour Montparnasse
       → prendre la rue qui s'en rapproche le plus
   Question : l'algorithme “du repère visuel” termine ?
Enjeux de l'algorithmique - terminaison

   La “minute votes SMS”
   Problème : aller en voiture de Châtelet à la Tour Montparnasse
   Algorithme “du repère visuel” :
   A tout instant on sait où se trouve la Tour Montparnasse
       → prendre la rue qui s'en rapproche le plus
   Question : l'algorithme “du repère visuel” termine ?




                                            Illustration : http://www.tourmontparnasse56.com
Enjeux de l'algorithmique - terminaison

   La “minute votes SMS”
   Problème : aller en voiture de Châtelet à la Tour Montparnasse
   Algorithme “du repère visuel” :
   A tout instant on sait où se trouve la Tour Montparnasse
       → prendre la rue qui s'en rapproche le plus
   Question : l'algorithme “du repère visuel” termine ?
       NON !




                                            Illustration : http://www.tourmontparnasse56.com

Mais conteúdo relacionado

Mais procurados

Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmiqueAbdoulaye Dieng
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage PythonAziz Darouichi
 
récursivité algorithmique et complexité algorithmique et Les algorithmes de tri
récursivité algorithmique et complexité algorithmique et Les algorithmes de trirécursivité algorithmique et complexité algorithmique et Les algorithmes de tri
récursivité algorithmique et complexité algorithmique et Les algorithmes de triYassine Anddam
 
Chapitre iii récursivité et paradigme diviser pour régner
Chapitre iii récursivité et paradigme diviser pour régnerChapitre iii récursivité et paradigme diviser pour régner
Chapitre iii récursivité et paradigme diviser pour régnerSana Aroussi
 
Chapitre vi np complétude
Chapitre vi np complétudeChapitre vi np complétude
Chapitre vi np complétudeSana Aroussi
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite completChahrawoods Dmz
 
Développement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbreDéveloppement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbreECAM Brussels Engineering School
 
programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++coursuniv
 
Les algorithmes recurrents
Les algorithmes recurrentsLes algorithmes recurrents
Les algorithmes recurrentsmohamed_SAYARI
 
Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Aziz Darouichi
 
Introduction a la compilation Analyse lexicale - C2
Introduction a la compilation  Analyse lexicale - C2Introduction a la compilation  Analyse lexicale - C2
Introduction a la compilation Analyse lexicale - C2Beligh HAMDI
 
Chapitre 4 récursivité
Chapitre 4 récursivitéChapitre 4 récursivité
Chapitre 4 récursivitéSana Aroussi
 
Chapitre8: Collections et Enumerations En Java
Chapitre8: Collections et Enumerations En JavaChapitre8: Collections et Enumerations En Java
Chapitre8: Collections et Enumerations En JavaAziz Darouichi
 
Les nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ ModerneLes nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ ModerneMicrosoft
 
La complexité des algorithmes récursives Géométrie algorithmique
La complexité des algorithmes récursivesGéométrie algorithmiqueLa complexité des algorithmes récursivesGéométrie algorithmique
La complexité des algorithmes récursives Géométrie algorithmiqueHajer Trabelsi
 

Mais procurados (20)

Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmique
 
algorithmique
algorithmiquealgorithmique
algorithmique
 
Chapitre 1 rappel
Chapitre 1   rappelChapitre 1   rappel
Chapitre 1 rappel
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage Python
 
récursivité algorithmique et complexité algorithmique et Les algorithmes de tri
récursivité algorithmique et complexité algorithmique et Les algorithmes de trirécursivité algorithmique et complexité algorithmique et Les algorithmes de tri
récursivité algorithmique et complexité algorithmique et Les algorithmes de tri
 
Chapitre iii récursivité et paradigme diviser pour régner
Chapitre iii récursivité et paradigme diviser pour régnerChapitre iii récursivité et paradigme diviser pour régner
Chapitre iii récursivité et paradigme diviser pour régner
 
Chapitre vi np complétude
Chapitre vi np complétudeChapitre vi np complétude
Chapitre vi np complétude
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
Développement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbreDéveloppement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbre
 
programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++
 
Les algorithmes recurrents
Les algorithmes recurrentsLes algorithmes recurrents
Les algorithmes recurrents
 
Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019
 
Introduction a la compilation Analyse lexicale - C2
Introduction a la compilation  Analyse lexicale - C2Introduction a la compilation  Analyse lexicale - C2
Introduction a la compilation Analyse lexicale - C2
 
Chapitre 4 récursivité
Chapitre 4 récursivitéChapitre 4 récursivité
Chapitre 4 récursivité
 
Tp introduction java
Tp introduction javaTp introduction java
Tp introduction java
 
Chap2fonctionscpp
Chap2fonctionscppChap2fonctionscpp
Chap2fonctionscpp
 
Chapitre8: Collections et Enumerations En Java
Chapitre8: Collections et Enumerations En JavaChapitre8: Collections et Enumerations En Java
Chapitre8: Collections et Enumerations En Java
 
C4 fonctions
C4 fonctionsC4 fonctions
C4 fonctions
 
Les nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ ModerneLes nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ Moderne
 
La complexité des algorithmes récursives Géométrie algorithmique
La complexité des algorithmes récursivesGéométrie algorithmiqueLa complexité des algorithmes récursivesGéométrie algorithmique
La complexité des algorithmes récursives Géométrie algorithmique
 

Destaque

INF120 - Algo DUT SRC1 - Cours 1 (2012)
INF120 - Algo DUT SRC1 - Cours 1 (2012)INF120 - Algo DUT SRC1 - Cours 1 (2012)
INF120 - Algo DUT SRC1 - Cours 1 (2012)PGambette
 
INF120 - Algo DUT SRC1 - Cours 4
INF120 - Algo DUT SRC1 - Cours 4INF120 - Algo DUT SRC1 - Cours 4
INF120 - Algo DUT SRC1 - Cours 4PGambette
 
Correction de la question 5 de l'exercice 2 du TD3 (M1202)
Correction de la question 5 de l'exercice 2 du TD3 (M1202)Correction de la question 5 de l'exercice 2 du TD3 (M1202)
Correction de la question 5 de l'exercice 2 du TD3 (M1202)PGambette
 
INF120 - Algo DUT SRC1 - Cours 3 (2012)
INF120 - Algo DUT SRC1 - Cours 3 (2012)INF120 - Algo DUT SRC1 - Cours 3 (2012)
INF120 - Algo DUT SRC1 - Cours 3 (2012)PGambette
 
INF120 - Algo DUT SRC1 - Cours 1
INF120 - Algo DUT SRC1 - Cours 1INF120 - Algo DUT SRC1 - Cours 1
INF120 - Algo DUT SRC1 - Cours 1PGambette
 
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 2PGambette
 
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 1PGambette
 
INF220 - Algo DUT SRC1 - Cours 2
INF220 - Algo DUT SRC1 - Cours 2INF220 - Algo DUT SRC1 - Cours 2
INF220 - Algo DUT SRC1 - Cours 2PGambette
 
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 2013PGambette
 
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 3PGambette
 
Questionnaire questionnaire c
Questionnaire questionnaire cQuestionnaire questionnaire c
Questionnaire questionnaire cMiguel de la Figa
 
Curriculum vitae pour technicien superieur en réseaux et télécommunication
Curriculum vitae pour technicien superieur en réseaux et télécommunicationCurriculum vitae pour technicien superieur en réseaux et télécommunication
Curriculum vitae pour technicien superieur en réseaux et télécommunicationAnis Nouri
 
Presentation Backup & Restore SharePoint 2013 Farm
Presentation Backup & Restore SharePoint 2013 FarmPresentation Backup & Restore SharePoint 2013 Farm
Presentation Backup & Restore SharePoint 2013 FarmYoussef El Idrissi
 

Destaque (20)

INF120 - Algo DUT SRC1 - Cours 1 (2012)
INF120 - Algo DUT SRC1 - Cours 1 (2012)INF120 - Algo DUT SRC1 - Cours 1 (2012)
INF120 - Algo DUT SRC1 - Cours 1 (2012)
 
INF120 - Algo DUT SRC1 - Cours 4
INF120 - Algo DUT SRC1 - Cours 4INF120 - Algo DUT SRC1 - Cours 4
INF120 - Algo DUT SRC1 - Cours 4
 
Correction de la question 5 de l'exercice 2 du TD3 (M1202)
Correction de la question 5 de l'exercice 2 du TD3 (M1202)Correction de la question 5 de l'exercice 2 du TD3 (M1202)
Correction de la question 5 de l'exercice 2 du TD3 (M1202)
 
INF120 - Algo DUT SRC1 - Cours 3 (2012)
INF120 - Algo DUT SRC1 - Cours 3 (2012)INF120 - Algo DUT SRC1 - Cours 3 (2012)
INF120 - Algo DUT SRC1 - Cours 3 (2012)
 
INF120 - Algo DUT SRC1 - Cours 1
INF120 - Algo DUT SRC1 - Cours 1INF120 - Algo DUT SRC1 - Cours 1
INF120 - Algo DUT SRC1 - Cours 1
 
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
 
Questionnaire questionnaire c
Questionnaire questionnaire cQuestionnaire questionnaire c
Questionnaire questionnaire c
 
Formations en Informatique - Télécommunications - Réseaux
Formations en Informatique - Télécommunications - RéseauxFormations en Informatique - Télécommunications - Réseaux
Formations en Informatique - Télécommunications - Réseaux
 
pjuin2005
pjuin2005pjuin2005
pjuin2005
 
juin2005
juin2005juin2005
juin2005
 
Tunisia_En
Tunisia_EnTunisia_En
Tunisia_En
 
Curriculum vitae pour technicien superieur en réseaux et télécommunication
Curriculum vitae pour technicien superieur en réseaux et télécommunicationCurriculum vitae pour technicien superieur en réseaux et télécommunication
Curriculum vitae pour technicien superieur en réseaux et télécommunication
 
mars2005_SIG
mars2005_SIGmars2005_SIG
mars2005_SIG
 
mars2005_BD
mars2005_BDmars2005_BD
mars2005_BD
 
Presentation Backup & Restore SharePoint 2013 Farm
Presentation Backup & Restore SharePoint 2013 FarmPresentation Backup & Restore SharePoint 2013 Farm
Presentation Backup & Restore SharePoint 2013 Farm
 
fev2004rgph2004
fev2004rgph2004fev2004rgph2004
fev2004rgph2004
 

Semelhante a INF120 - Algo DUT SRC1 - Cours 2 (2012)

C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzlesMicrosoft
 
Asyncio: offrez des tulipes à vos entrées sorties asynchrones
Asyncio: offrez des tulipes à vos entrées sorties asynchronesAsyncio: offrez des tulipes à vos entrées sorties asynchrones
Asyncio: offrez des tulipes à vos entrées sorties asynchronestchappui
 
Algorithmique Amp Programmation (R Sum
Algorithmique  Amp  Programmation (R SumAlgorithmique  Amp  Programmation (R Sum
Algorithmique Amp Programmation (R SumAmy Isleb
 
la complexité des algorithmes en toute simplicité
la complexité des algorithmes en toute simplicitéla complexité des algorithmes en toute simplicité
la complexité des algorithmes en toute simplicitéSana REFAI
 
Eléments du langage Java.pdf
Eléments du langage  Java.pdfEléments du langage  Java.pdf
Eléments du langage Java.pdfAabidiHafid
 
Algorithmes d'approximation
Algorithmes d'approximationAlgorithmes d'approximation
Algorithmes d'approximationmohamed_SAYARI
 
Algorithmique programmation2018
Algorithmique programmation2018Algorithmique programmation2018
Algorithmique programmation2018salah fenni
 
Les algorithmes avancés
Les algorithmes avancésLes algorithmes avancés
Les algorithmes avancésmohamed_SAYARI
 
Chap04 1213
Chap04 1213Chap04 1213
Chap04 1213bades12
 
Conception de base_de_l_algorithme
Conception de base_de_l_algorithmeConception de base_de_l_algorithme
Conception de base_de_l_algorithmemustapha4
 
chap 3 complexité (3).pdf
chap 3 complexité (3).pdfchap 3 complexité (3).pdf
chap 3 complexité (3).pdfdonixwm
 
Introduction au langage python notion de base
Introduction au langage python notion de baseIntroduction au langage python notion de base
Introduction au langage python notion de basemohamedAitomar1
 
Introduction au langage python (Notion de base)
Introduction au langage python (Notion de base)Introduction au langage python (Notion de base)
Introduction au langage python (Notion de base)mohamedAitomar1
 

Semelhante a INF120 - Algo DUT SRC1 - Cours 2 (2012) (20)

Récursivité
RécursivitéRécursivité
Récursivité
 
Programmation Fonctionnelle
Programmation FonctionnelleProgrammation Fonctionnelle
Programmation Fonctionnelle
 
C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzles
 
Asyncio: offrez des tulipes à vos entrées sorties asynchrones
Asyncio: offrez des tulipes à vos entrées sorties asynchronesAsyncio: offrez des tulipes à vos entrées sorties asynchrones
Asyncio: offrez des tulipes à vos entrées sorties asynchrones
 
Cours tp2
Cours tp2Cours tp2
Cours tp2
 
Chapitre2 prog dsplf3
Chapitre2 prog dsplf3Chapitre2 prog dsplf3
Chapitre2 prog dsplf3
 
Algorithmique Amp Programmation (R Sum
Algorithmique  Amp  Programmation (R SumAlgorithmique  Amp  Programmation (R Sum
Algorithmique Amp Programmation (R Sum
 
la complexité des algorithmes en toute simplicité
la complexité des algorithmes en toute simplicitéla complexité des algorithmes en toute simplicité
la complexité des algorithmes en toute simplicité
 
µP
µPµP
µP
 
Eléments du langage Java.pdf
Eléments du langage  Java.pdfEléments du langage  Java.pdf
Eléments du langage Java.pdf
 
Algorithmes d'approximation
Algorithmes d'approximationAlgorithmes d'approximation
Algorithmes d'approximation
 
Algorithmique programmation2018
Algorithmique programmation2018Algorithmique programmation2018
Algorithmique programmation2018
 
Les algorithmes avancés
Les algorithmes avancésLes algorithmes avancés
Les algorithmes avancés
 
Chap04 1213
Chap04 1213Chap04 1213
Chap04 1213
 
Les bases du javascript
Les bases du javascriptLes bases du javascript
Les bases du javascript
 
Conception de base_de_l_algorithme
Conception de base_de_l_algorithmeConception de base_de_l_algorithme
Conception de base_de_l_algorithme
 
Language-C.ppt
Language-C.pptLanguage-C.ppt
Language-C.ppt
 
chap 3 complexité (3).pdf
chap 3 complexité (3).pdfchap 3 complexité (3).pdf
chap 3 complexité (3).pdf
 
Introduction au langage python notion de base
Introduction au langage python notion de baseIntroduction au langage python notion de base
Introduction au langage python notion de base
 
Introduction au langage python (Notion de base)
Introduction au langage python (Notion de base)Introduction au langage python (Notion de base)
Introduction au langage python (Notion de base)
 

Último

Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film françaisTxaruka
 
MaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptMaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptssusercbaa22
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptxSAID MASHATE
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.Franck Apolis
 
presentation l'interactionnisme symbolique finale.pptx
presentation l'interactionnisme symbolique  finale.pptxpresentation l'interactionnisme symbolique  finale.pptx
presentation l'interactionnisme symbolique finale.pptxMalikaIdseaid1
 
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxSUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxssuserbd075f
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.Txaruka
 
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxApproche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxssusercbaa22
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfabatanebureau
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film françaisTxaruka
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprisesMajdaKtiri2
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne FontaineTxaruka
 
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptMécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptssusercbaa22
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfachrafbrahimi1
 
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...M2i Formation
 

Último (16)

Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film français
 
MaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptMaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.ppt
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.
 
presentation l'interactionnisme symbolique finale.pptx
presentation l'interactionnisme symbolique  finale.pptxpresentation l'interactionnisme symbolique  finale.pptx
presentation l'interactionnisme symbolique finale.pptx
 
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxSUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.
 
Evaluación Alumnos de Ecole Victor Hugo
Evaluación Alumnos de Ecole  Victor HugoEvaluación Alumnos de Ecole  Victor Hugo
Evaluación Alumnos de Ecole Victor Hugo
 
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxApproche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film français
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprises
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne Fontaine
 
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptMécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdf
 
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
 

INF120 - Algo DUT SRC1 - Cours 2 (2012)

  • 1. DUT SRC – IUT de Marne-la-Vallée 07/10/2011 INF120 - Algorithmique Cours 2 Variables et affectations, type et codage Philippe Gambette
  • 2. Sources • Le livre de Java premier langage, d'A. Tasso • Cours INF120 de J.-G. Luque • Cours FLIN102 de l'Université Montpellier 2 • Cours de J. Henriet : http://julienhenriet.olympe-network.com/Algo.html • http://xkcd.com, http://xkcd.free.fr
  • 3. Plan du cours 2 – Variables et affectations, type et codage • Résumé des épisodes précédents • Correction du QCM1 • Le pseudo-code • De l'organigramme au code Java • Codage des données • Codage binaire des entiers • Codage des flottants • Autres codages • Codage hexadécimal • Booléens et opérations de base
  • 4. Résumé des épisodes précédents Algorithme : suite d'instructions pour résoudre un problème Données du Algorithme : Instruction 1 Résultat problème Instruction 2 sorties de entrées de Instruction 3 l'algorithme l'algorithme ... Un algorithme utilise plusieurs types d'instructions : - des affectations dans des variables (mémoires) - des boucles - des appels à d'autres algorithmes - des tests - des “lectures” d'entrées et “renvois” de sorties On peut décrire un algorithme : - en français - en pseudo-code - par un organigramme - dans un langage de programmation Pour tester un algorithme : on fait la trace.
  • 5. Correction du QCM1 QCM 1 – Pour chaque question, choisir une seule réponse, la plus adaptée. Il est possible que plusieurs soient considérées comme correctes. Si vous avez un doute, écrivez des commentaires à côté de votre réponse (ou au verso). Q1. Quel langage apprendra-t-on lors du module d'INF120 ? Q2. Quelle est la commande pour se rendre dans le dossier toto ? • l'anglais • le C++ • le PHP • md . • cd . • dir . • le Java • la Java • le PHP • le C • l'ADA • le LADA 98% • md ..toto • cd ..toto • dir ..toto • md toto • cd toto • dir toto 75% Q3. Dans quel ordre doit on réaliser les opérations suivantes, après avoir modifié un code-source ? • compilation puis exécution puis enregistrement • enregistrement puis exécution puis compilation • compilation puis enregistrement puis exécution • exécution puis compilation puis enregistrement 90% • enregistrement puis compilation puis exécution • exécution puis enregistrement puis compilation Q4. Qu'est-ce qui aurait été affiché dans le terminal, si dans le fichier TP1.java hier, vous aviez écrit : Affiche("2"+"3") ? • "2"+"3" • "2+3" • 2+3 • "2""3" • "23" • 23 • "5" •5 62% Q5. Quelle instruction utiliser pour tester si un entier nombreATrouver est égal à un autre entier nombreUtilisateur ? • Affiche("nombreATrouver==nombreUtilisateur") • if(nombreATrouver==nombreUtilisateur) • Affiche(nombreATrouver=nombreUtilisateur) • if(nombreATrouver=nombreUtilisateur) • reponse==(nombreATrouver=nombreUtilisateur) • (reponse=nombreATrouver)=nombreUtilisateur • reponse==nombreATrouver=nombreUtilisateur • reponse=nombreATrouver=nombreUtilisateur 66%
  • 6. Dictionnaire pseudo-code / Java Pseudo-code Java Déclaration d'un algorithme Addition public static int Addition(int i, int j){ Entrées : entiers i et j ... Sortie : entier Début … renvoyer … return … Fin } Déclaration d'une variable Variables : entier i int i; Affectation i←1 i = 1; Test Si i=1 alors : if (i==1){ … ... Sinon : } else { … ... FinSi } Boucle Tant que i<3 : while (i<3) { … ... Fin TantQue }
  • 7. Retour sur l'intérêt du pseudo-code Intérêts du pseudo-code : Pseudo-code Java • Clair, lisible Addition public static int Addition(int i, int j){ Entrées : entiers i et j ... • Pédagogique Sortie : entier Début • Indépendant du langage … de programmation renvoyer … return … Fin } • Pour distinguer le fond de la forme Variables : entier i int i; i←1 i = 1; Si i=1 alors if (i==1){ … ... Sinon } else { … ... FinSi } Tant que i<3 : while (i<3) { … ... Fin TantQue }
  • 8. Le calcul des puissances de 2 Je connais le calcul de la multiplication par 2 (en Java : *2). Comment calculer les puissances de 2 ? 1, 2, 4, 8, 16, 32, … DeuxPuissance(4) = Intuition : Tant qu'on n'est pas à la puissance voulue, on ... → Au total, pour DeuxPuissance(a), on fait ... multiplications par 2.
  • 9. Le calcul des puissances de 2 Je connais le calcul de la multiplication par 2 (en Java : *2). Comment calculer les puissances de 2 ? 1, 2, 4, 8, 16, 32, … DeuxPuissance(4) = 2*2*2*2 = 16 4 fois Intuition : Tant qu'on n'est pas à la puissance voulue, on multiplie par 2. → Au total, pour DeuxPuissance(a), on fait a multiplications par 2. En français : Je multiplie a fois par 2 l'entier 1.
  • 10. Le calcul des puissances de 2 Intuition : DeuxPuissance(4) = 2*2*2*2 En français : Je multiplie a fois par 2 l'entier 1.
  • 11. Le calcul des puissances de 2 Intuition : DeuxPuissance(4) = 2*2*2*2 En français : Je multiplie a fois par 2 l'entier 1. entier a resultat ← 1 resultat ← 2*resultat a fois resultat ← 2*resultat renvoyer resultat
  • 12. Le calcul des puissances de 2 Intuition : DeuxPuissance(4) = 2*2*2*2 En français : Je multiplie a fois par 2 l'entier 1. entier a resultat ← 1 resultat ← 2*resultat a fois renvoyer resultat
  • 13. Le calcul des puissances de 2 Intuition : DeuxPuissance(4) = 2*2*2*2 En français : Je multiplie a fois par 2 l'entier 1.
  • 14. Le calcul des puissances de 2 Intuition : DeuxPuissance(4) = 2*2*2*2 En français : Je multiplie a fois par 2 l'entier 1. entier a resultat ← 1 compteur ← 0 compteur ← compteur+1 non boucle compteur = a ? resultat ← 2*resultat oui renvoyer resultat
  • 15. De l'organigramme au pseudo-code entier a compteur ← compteur+1 resultat ← 1 resultat ← 2*resultat compteur ← 0 DeuxPuissance : compteur = a ? Entrée : non oui Sortie : Variables : renvoyer resultat Début renvoyer Fin
  • 16. De l'organigramme au pseudo-code entier a compteur ← compteur+1 resultat ← 1 resultat ← 2*resultat compteur ← 0 DeuxPuissance : compteur = a ? Entrée : un entier a non oui Sortie : un entier Variables : entiers compteur et resultat renvoyer resultat Début compteur ← 0 resultat ← 1 Tant que compteur < a faire : resultat ← 2*resultat compteur ← compteur +1 Fin tant que renvoyer resultat Fin
  • 17. Du pseudo-code au code Java DeuxPuissance : Entrée : un entier a Sortie : un entier Variables : entiers compteur et resultat Début compteur ← 0 resultat ← 1 Tant que compteur < a faire : resultat ← 2*resultat compteur ← compteur +1 Fin tant que renvoyer resultat public static int Fin DeuxPuissance( ){ return ; }
  • 18. Du pseudo-code au code Java DeuxPuissance : Entrée : un entier a Sortie : un entier Variables : entiers compteur et resultat Début compteur ← 0 resultat ← 1 Tant que compteur < a faire : resultat ← 2*resultat compteur ← compteur +1 Fin tant que renvoyer resultat public static int Fin DeuxPuissance(int a){ int compteur=0; int resultat=1; while (compteur<a){ resultat=2*resultat; compteur=compteur+1; } return resultat; }
  • 19. Le codage La “minute votes SMS” Programme Java : import java.io.*; public class Boucle{ public static void main(String [] arg){ int i=1; while(i>0){ i=i*2; } System.out.print("J'ai fini !"); } } Est-ce que ce programme affiche “J'ai fini !” ?
  • 20. Le codage La “minute votes SMS” Programme Java : Algorithme en pseudo-code : import java.io.*; Boucle : public class Boucle{ Variable : entier i Début public static void main(String [] arg){ i←1 int i=1; Tant que i > 0 faire : i←2xi while(i>0){ Fin tant que afficher(“J'ai fini!”) i=i*2; Fin } System.out.print("J'ai fini !"); } } Est-ce que ce programme affiche “J'ai fini !” ?
  • 21. Le codage La “minute votes SMS” Programme Java : Algorithme en pseudo-code : import java.io.*; Boucle : public class Boucle{ Variable : entier i Début public static void main(String [] arg){ i←1 int i=1; Tant que i > 0 faire : i←2xi while(i>0){ Fin tant que afficher(“J'ai fini!”) i=i*2; Fin } Est-ce que cet algorithme System.out.print("J'ai fini !"); se termine ? } } Est-ce que ce programme affiche “J'ai fini !” ?
  • 22. Le codage La “minute votes SMS” Programme Java : Algorithme en pseudo-code : import java.io.*; Boucle : public class Boucle{ Variable : entier i Début public static void main(String [] arg){ i←1 int i=1; Tant que i > 0 faire : i←2xi while(i>0){ Fin tant que afficher(“J'ai fini!”) i=i*2; Fin } Est-ce que cet algorithme System.out.print("J'ai fini !"); se termine ? } OUI si i est VRAIMENT un entier } Est-ce que ce programme affiche “J'ai fini !” ?
  • 23. Le codage La “minute votes SMS” Programme Java : Résultat du programme : 2 import java.io.*; 4 public class Boucle{ 8 16 32 524288 public static void main(String [] arg){ 1048576 64 128 2097152 int i=1; 4194304 256 512 8388608 while(i>0){ 16777216 1024 2048 33554432 i=i*2; 4096 67108864 8192 134217728 } 16384 268435456 System.out.print("J'ai fini !"); 32768 536870912 65536 1073741824 } 131072 -2147483648 262144 J'ai fini!! } Est-ce que ce programme affiche “J'ai fini !” ? OUI !
  • 24. Le codage La “minute votes SMS” Programme Java : Résultat du programme : 2 import java.io.*; 4 public class Boucle{ 8 16 32 524288 public static void main(String [] arg){ 1048576 64 128 2097152 int i=1; 4194304 256 512 8388608 while(i>0){ 16777216 1024 2048 33554432 i=i*2; 4096 67108864 8192 134217728 } 16384 268435456 System.out.print("J'ai fini !"); 32768 536870912 65536 1073741824 } 131072 -2147483648 262144 J'ai fini!! } Les entiers “int” Java ne sont pas de “vrais entiers” mais des entiers entre -2 147 483 648 et 2 147 483 647
  • 25. Le codage des entiers en binaire La “minute mathématique” Pour le stockage comme pour le traitement d'instructions, il est nécessaire que toutes les données traitées par un ordinateur soient codées en binaire, par des 0 et des 1. Exemple de nombre entier en binaire : 1101100001101 ? écriture binaire écriture décimale
  • 26. Le codage des entiers en binaire La “minute mathématique” Pour le stockage comme pour le traitement d'instructions, il est nécessaire que toutes les données traitées par un ordinateur soient codées en binaire, par des 0 et des 1. Exemple de nombre entier en binaire : 1101100001101 0 0 0 1 1 0 1 1 0 0 0 0 1 1 0 1 215 214 213 212 211 210 29 28 27 26 25 24 23 22 21 20 212+ 211 + 29 + 28 + 23 + 22+ 20 = 4096 + 2048 + 512 + 256 + 8 + 4 +1 = 6925 écriture binaire écriture décimale
  • 27. Le codage des entiers en binaire Pour le stockage comme pour le traitement d'instructions, il est nécessaire que toutes les données traitées par un ordinateur soient codées en binaire, par des 0 et des 1. ? écriture décimale écriture binaire
  • 28. Le codage des entiers en binaire Pour le stockage comme pour le traitement d'instructions, il est nécessaire que toutes les données traitées par un ordinateur soient codées en binaire, par des 0 et des 1. ? écriture décimale écriture binaire Exemple : écrire 37 en binaire ? Division euclidienne : dividende diviseur 37 2 1 18 reste quotient en Java : 1=37%2 en Java : 18=37/2
  • 29. Le codage des entiers en binaire Pour le stockage comme pour le traitement d'instructions, il est nécessaire que toutes les données traitées par un ordinateur soient codées en binaire, par des 0 et des 1. ? écriture décimale écriture binaire 37 2 1 18 2 0 9 2 1 4 2 0 2 2 0 1 2 1 0
  • 30. Le codage des entiers en binaire Pour le stockage comme pour le traitement d'instructions, il est nécessaire que toutes les données traitées par un ordinateur soient codées en binaire, par des 0 et des 1. ? écriture décimale écriture binaire 37 2 1 18 2 0 9 2 1 4 2 0 2 2 0 1 2 1 0 100101
  • 31. Le calcul rapide en binaire Pour faire son geek : - compter sur ses doigts en binaire, jusqu'à 210
  • 32. Le calcul rapide en binaire Pour faire son geek : - compter sur ses doigts en binaire, jusqu'à 210 21 20 20++21 = 3 Source image : http://www.so-xperts.com/blog/2011/04/performance-web-et-marketing-le-pouce-et-lindex/
  • 33. Le calcul rapide en binaire Pour faire son geek : - compter sur ses doigts en binaire, jusqu'à 210 - faire des estimations de nombres données en binaire : 2 10 = 1024 donc 210 ≈ 1000 232 ≈ ?
  • 34. Le calcul rapide en binaire Pour faire son geek : - compter sur ses doigts en binaire, jusqu'à 210 - faire des estimations de nombres données en binaire : 2 10 = 1024 donc 210 ≈ 1000 ③ 232 ≈ ? ② 32 30+2 ①a bxc b c = (a ) 2 =2 = 230 x 22 = 210 x 3 x 4 ② ab+c = ab x ac ① = (210)3 x 4 ≈ 10003 x 4 ≈ 4 milliards
  • 35. Le calcul rapide en binaire Pour faire son geek : - compter sur ses doigts en binaire, jusqu'à 210 - faire des estimations de nombres données en binaire : 2 10 = 1024 donc 210 ≈ 1000 232 ≈ 4 milliards 232 = 4 294 967 296
  • 36. Le codage binaire La “minute xkcd” De 1 à 10 : Sur une échelle de 1 à 10, quelle est la probabilité que cette question utilise du binaire ? Si vous obtenez une note de 11/100 à un 4? examen d'informatique, mais que vous C'est quoi un 4 ? dites qu'il devrait être compté comme un 15/20, alors on décidera probablement que vous le méritez. http://xkcd.com/953 http://xkcd.free.fr?id=953
  • 37. Le codage des entiers en mémoire 1 bit = 0 ou 1 1 octet = 8 bits 1 Ko (kilooctet) = 1024 octets 1 Mo (mégaoctet) = 1024 Ko (disquette) 1 Go (gigaoctet) = 1024 Mo (carte mémoire, 2h de vidéo en DivX) 1 To (téraoctet) = 1024 Go (disque dur externe) 32 bits 1 octet 1 octet 1 octet 1 octet
  • 38. Le codage des entiers Java 31 bits 1 bit pour le -2 -1 0 1 2 signe 229 230 -231 = -2 147 483 648 231-1 = 2 147 483 647
  • 39. Le codage des flottants double précision 8 octets = 64 bits 11 bits 52 bits 1 bit pour pour la pour le l'exposant mantisse signe e m s x = (-1)s m 2e-1023
  • 40. Autres codages • Chaînes de caractères • ASCII : 7 bits, caractères simples codés de 32 à 127 • ANSI : 8 bits, caractères simples codés de 32 à 127, caractères accentués de 128 à 255 • UTF-8 : de 1 à 4 octets • Couleurs d'une image • RGB : “red, blue, green”, 1 octet pour chacun : • valeurs entre 0 et 255 • codage hexadécimal avec 2 symboles
  • 41. Codage hexadécimal La “minute culturelle” Hexadécimal : en base 16 (ἑξάς : six, decem : dix) Codé par les chiffres de 0 à 9 et les lettres A B C D E F 10 11 12 13 14 15 • Deux symboles pour un octet : 16² valeurs possibles = 256 • Utilisé pour coder les couleurs en HTML : couleur="#RRGGBB" rouge="#FF0000", vert="#00FF00" #800080 ?
  • 42. Codage hexadécimal La “minute culturelle” Hexadécimal : en base 16 (ἑξάς : six, decem : dix) Codé par les chiffres de 0 à 9 et les lettres A B C D E F 10 11 12 13 14 15 • Deux symboles pour un octet : 16² valeurs possibles = 256 • Utilisé pour coder les couleurs en HTML : couleur="#RRGGBB" rouge="#FF0000", vert="#00FF00" #800080 ?
  • 43. Les booléens • Opérations sur les booléens : et, ou, non ET VRAI FAUX OU VRAI FAUX VRAI VRAI FAUX VRAI VRAI VRAI FAUX FAUX FAUX FAUX VRAI FAUX NON VRAI FAUX FAUX VRAI
  • 44. Les booléens • Opérations sur les booléens : et, ou, non ET VRAI FAUX OU VRAI FAUX VRAI VRAI FAUX VRAI VRAI VRAI FAUX FAUX FAUX FAUX VRAI FAUX NON VRAI FAUX FAUX VRAI Opérations sur les booléens codées sur les entiers 0 et 1 : x 1 0 max(1,...+...) 1 0 1 1 0 1 1 1 0 0 0 0 1 0 1-x 1 0 0 1
  • 45. Les opérations de base en Java • Type entier int +, -, *, /, (division entière), % (reste modulo), ^ (puissance) • Type flottant float, ou double (plus précis) +, -, *, / • Type booléen boolean false (faux), true (vrai), && (et), || (ou), ! (non) • Type chaîne de caractères string + (concaténation : “INF”+”120”=”INF120”)
  • 46. Enjeux de l'algorithmique - terminaison La “minute votes SMS” Problème : aller en voiture de Châtelet à la Tour Montparnasse
  • 47. Enjeux de l'algorithmique - terminaison La “minute votes SMS” Problème : aller en voiture de Châtelet à la Tour Montparnasse Algorithme “du repère visuel” : A tout instant on sait où se trouve la Tour Montparnasse → prendre la rue qui s'en rapproche le plus
  • 48. Enjeux de l'algorithmique - terminaison La “minute votes SMS” Problème : aller en voiture de Châtelet à la Tour Montparnasse Algorithme “du repère visuel” : A tout instant on sait où se trouve la Tour Montparnasse → prendre la rue qui s'en rapproche le plus algorithme de la famille des algorithmes gloutons toujours choisir le profit maximum !
  • 49. Enjeux de l'algorithmique - terminaison La “minute votes SMS” Problème : aller en voiture de Châtelet à la Tour Montparnasse Algorithme “du repère visuel” : A tout instant on sait où se trouve la Tour Montparnasse → prendre la rue qui s'en rapproche le plus Question : l'algorithme “du repère visuel” termine ?
  • 50. Enjeux de l'algorithmique - terminaison La “minute votes SMS” Problème : aller en voiture de Châtelet à la Tour Montparnasse Algorithme “du repère visuel” : A tout instant on sait où se trouve la Tour Montparnasse → prendre la rue qui s'en rapproche le plus Question : l'algorithme “du repère visuel” termine ? Illustration : http://www.tourmontparnasse56.com
  • 51. Enjeux de l'algorithmique - terminaison La “minute votes SMS” Problème : aller en voiture de Châtelet à la Tour Montparnasse Algorithme “du repère visuel” : A tout instant on sait où se trouve la Tour Montparnasse → prendre la rue qui s'en rapproche le plus Question : l'algorithme “du repère visuel” termine ? NON ! Illustration : http://www.tourmontparnasse56.com