SlideShare una empresa de Scribd logo
1 de 40
Descargar para leer sin conexión
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 QCM0
 • 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
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 : somme i+j (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                   }
L'organigramme de la multiplication “simple”

 Je connais l'algorithme d'addition de deux entiers positifs.
 Comment écrire un algorithme de multiplication de deux entiers ?
 Intuition :
          5x3       =     5+5+5
                           3 fois

 entier1 x entier2 = entier1 + entier1 + entier1 + … + entier1
                                      entier2 fois

 En français :
 J'ajoute entier2 fois l'entier entier1 à l'entier 0.
L'organigramme de la multiplication “simple”

 Intuition :
          5x3       =     5+5+5
 En français :
 J'ajoute entier2 fois l'entier entier1 à l'entier 0.
L'organigramme de la multiplication “simple”

 Intuition :
          5x3        =      5+5+5
 En français :
 J'ajoute entier2 fois l'entier entier1 à l'entier 0.


                           produit ← 0



                     produit ← entier1+produit



          entier2
              fois


                     produit ← entier1+produit



                         renvoyer produit
L'organigramme de la multiplication “simple”

 Intuition :
          5x3             =      5+5+5
 En français :
 J'ajoute entier2 fois l'entier entier1 à l'entier 0.


                                produit ← 0




                          produit ← entier1+produit

               entier2
                   fois


                              renvoyer produit
L'organigramme de la multiplication “simple”

 Intuition :
          5x3       =       5+5+5
 En français :
 J'ajoute entier2 fois l'entier entier1 à l'entier 0.


                            produit ← 0



                           compteur ← 0
                                                              compteur ← compteur+1

                                               non
                                                     boucle
                        compteur = entier2 ?
                                                              produit ← produit+entier1
                                  oui

                         renvoyer produit
De l'organigramme au pseudo-code
    produit ← 0



   compteur ← 0
                           compteur ← compteur+1

compteur = entier2 ? non
          oui              produit ← produit+entier1   Multiplication :
 renvoyer produit
                                                       Entrées : deux entiers entier1 et entier2
                                                       Sorties : le produit de entier1 et entier2
                                                       Variables : entiers compteur et produit
                                                       Début
                                                           compteur ← 0
                                                           produit ← 0
                                                           Tant que compteur < entier2 faire :
                                                                 produit ← addition(produit, entier1)
                                                                 compteur ← addition(compteur, 1)
                                                           Fin tant que
                                                           renvoyer produit
                                                       Fin
Du pseudo-code au code Java
Multiplication :

Entrées : deux entiers entier1 et entier2
Sorties : le produit de entier1 et entier2
Variables : entiers compteur et produit
Début
      compteur ← 0
      produit ← 0
      Tant que compteur < entier2 faire :
              produit ← addition(produit, entier1)
              compteur ← addition(compteur, 1)
      Fin tant que
      renvoyer produit                               public static int multiplication(int entier1,
Fin                                                  int entier2){
                                                          int compteur=0;
                                                          int produit=0;
                                                          while (compteur<entier1){
                                                               produit=produit+entier1;
                                                               compteur=compteur+1;
                                                          }
                                                          return produit;
                                                      }
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 ?
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 : somme i+j (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                   }
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”)

Más contenido relacionado

La actualidad más candente

Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmiqueAbdoulaye Dieng
 
Chapitre 2: String en Java
Chapitre 2:  String en JavaChapitre 2:  String en Java
Chapitre 2: String en JavaAziz Darouichi
 
Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Aziz Darouichi
 
Chapitre 11: Expression Lambda et Référence de méthode en Java
Chapitre 11: Expression Lambda et Référence de méthode en JavaChapitre 11: Expression Lambda et Référence de méthode en Java
Chapitre 11: Expression Lambda et Référence de méthode en JavaAziz 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
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objetsAziz Darouichi
 
Les fonctions lambdas en C++11 et C++14
Les fonctions lambdas en C++11 et C++14Les fonctions lambdas en C++11 et C++14
Les fonctions lambdas en C++11 et C++14Aurélien Regat-Barrel
 
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
 
programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++coursuniv
 
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
 
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
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Aziz Darouichi
 
Chapitre 1 (algorithme)
Chapitre 1 (algorithme)Chapitre 1 (algorithme)
Chapitre 1 (algorithme)mahbouba
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfacesAziz 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 actualidad más candente (20)

Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmique
 
Chapitre 1 rappel
Chapitre 1   rappelChapitre 1   rappel
Chapitre 1 rappel
 
Chapitre 2: String en Java
Chapitre 2:  String en JavaChapitre 2:  String en Java
Chapitre 2: String en Java
 
Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019
 
Chap2fonctionscpp
Chap2fonctionscppChap2fonctionscpp
Chap2fonctionscpp
 
Tp introduction java
Tp introduction javaTp introduction java
Tp introduction java
 
Chapitre 11: Expression Lambda et Référence de méthode en Java
Chapitre 11: Expression Lambda et Référence de méthode en JavaChapitre 11: Expression Lambda et Référence de méthode en Java
Chapitre 11: Expression Lambda et Référence de méthode en Java
 
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
 
Chapitre5: Classes et objets
Chapitre5: Classes et objetsChapitre5: Classes et objets
Chapitre5: Classes et objets
 
Les fonctions lambdas en C++11 et C++14
Les fonctions lambdas en C++11 et C++14Les fonctions lambdas en C++11 et C++14
Les fonctions lambdas en C++11 et C++14
 
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
 
Part1
Part1Part1
Part1
 
programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
 
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
 
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
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références
 
Chapitre 1 (algorithme)
Chapitre 1 (algorithme)Chapitre 1 (algorithme)
Chapitre 1 (algorithme)
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfaces
 
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
 

Destacado

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
 
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
 
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 1
INF120 - Algo DUT SRC1 - Cours 1INF120 - Algo DUT SRC1 - Cours 1
INF120 - Algo DUT SRC1 - Cours 1PGambette
 
INF220 - Algo DUT SRC1 - Cours 1
INF220 - Algo DUT SRC1 - Cours 1INF220 - Algo DUT SRC1 - Cours 1
INF220 - 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
 
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èmesMohammed TAMALI
 
Le bassin versant
Le bassin versantLe bassin versant
Le bassin versantEssam Ssam
 

Destacado (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
 
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)
 
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 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
 
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
 
pjuin2005
pjuin2005pjuin2005
pjuin2005
 
juin2005
juin2005juin2005
juin2005
 
Tunisia_En
Tunisia_EnTunisia_En
Tunisia_En
 
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
 

Similar a INF120 - Algo DUT SRC1 - Cours 2

Les structures de données.pptx
Les structures de données.pptxLes structures de données.pptx
Les structures de données.pptxPROFPROF11
 
165380609 livre-professeur-maths-1ere-s
165380609 livre-professeur-maths-1ere-s165380609 livre-professeur-maths-1ere-s
165380609 livre-professeur-maths-1ere-sEttaoufik Elayedi
 
Les opérations fondamentales
Les opérations fondamentalesLes opérations fondamentales
Les opérations fondamentalesDaniela Rotelli
 
Cours d'algorithmique distribuée (2010-2011) - annexes
Cours d'algorithmique distribuée (2010-2011) - annexesCours d'algorithmique distribuée (2010-2011) - annexes
Cours d'algorithmique distribuée (2010-2011) - annexesÉlodie Descharmes
 
Initiation à la programmation sous excel tutoriel2
Initiation à la programmation sous excel tutoriel2Initiation à la programmation sous excel tutoriel2
Initiation à la programmation sous excel tutoriel2Christophe Malpart
 

Similar a INF120 - Algo DUT SRC1 - Cours 2 (10)

Récursivité
RécursivitéRécursivité
Récursivité
 
02 correction-td smi-s3-algo2
02 correction-td smi-s3-algo202 correction-td smi-s3-algo2
02 correction-td smi-s3-algo2
 
Les structures de données.pptx
Les structures de données.pptxLes structures de données.pptx
Les structures de données.pptx
 
Recursiviteeeeeeeeee
RecursiviteeeeeeeeeeRecursiviteeeeeeeeee
Recursiviteeeeeeeeee
 
165380609 livre-professeur-maths-1ere-s
165380609 livre-professeur-maths-1ere-s165380609 livre-professeur-maths-1ere-s
165380609 livre-professeur-maths-1ere-s
 
Les opérations fondamentales
Les opérations fondamentalesLes opérations fondamentales
Les opérations fondamentales
 
Cours d'algorithmique distribuée (2010-2011) - annexes
Cours d'algorithmique distribuée (2010-2011) - annexesCours d'algorithmique distribuée (2010-2011) - annexes
Cours d'algorithmique distribuée (2010-2011) - annexes
 
Exercices algo
Exercices algoExercices algo
Exercices algo
 
Slide-Complexite by loic.pdf
Slide-Complexite by loic.pdfSlide-Complexite by loic.pdf
Slide-Complexite by loic.pdf
 
Initiation à la programmation sous excel tutoriel2
Initiation à la programmation sous excel tutoriel2Initiation à la programmation sous excel tutoriel2
Initiation à la programmation sous excel tutoriel2
 

Último

Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsRajiAbdelghani
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxAsmaa105193
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETMedBechir
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxrababouerdighi
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre françaisTxaruka
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Gilles Le Page
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 37
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 37
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeXL Groupe
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxMartin M Flynn
 
le present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxle present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxmmatar2
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...Faga1939
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSKennel
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSKennel
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSKennel
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .Txaruka
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETMedBechir
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSKennel
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Alain Marois
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSKennel
 

Último (20)

Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 temps
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. Marocpptx
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSET
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptx
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre français
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024
 
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdfBibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
Bibdoc 2024 - Les maillons de la chaine du livre face aux enjeux écologiques.pdf
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
 
Le Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directeLe Lean sur une ligne de production : Formation et mise en application directe
Le Lean sur une ligne de production : Formation et mise en application directe
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptx
 
le present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptxle present des verbes reguliers -er.pptx
le present des verbes reguliers -er.pptx
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
 

INF120 - Algo DUT SRC1 - Cours 2

  • 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 QCM0 • 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
  • 5. 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 : somme i+j (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 }
  • 6. L'organigramme de la multiplication “simple” Je connais l'algorithme d'addition de deux entiers positifs. Comment écrire un algorithme de multiplication de deux entiers ? Intuition : 5x3 = 5+5+5 3 fois entier1 x entier2 = entier1 + entier1 + entier1 + … + entier1 entier2 fois En français : J'ajoute entier2 fois l'entier entier1 à l'entier 0.
  • 7. L'organigramme de la multiplication “simple” Intuition : 5x3 = 5+5+5 En français : J'ajoute entier2 fois l'entier entier1 à l'entier 0.
  • 8. L'organigramme de la multiplication “simple” Intuition : 5x3 = 5+5+5 En français : J'ajoute entier2 fois l'entier entier1 à l'entier 0. produit ← 0 produit ← entier1+produit entier2 fois produit ← entier1+produit renvoyer produit
  • 9. L'organigramme de la multiplication “simple” Intuition : 5x3 = 5+5+5 En français : J'ajoute entier2 fois l'entier entier1 à l'entier 0. produit ← 0 produit ← entier1+produit entier2 fois renvoyer produit
  • 10. L'organigramme de la multiplication “simple” Intuition : 5x3 = 5+5+5 En français : J'ajoute entier2 fois l'entier entier1 à l'entier 0. produit ← 0 compteur ← 0 compteur ← compteur+1 non boucle compteur = entier2 ? produit ← produit+entier1 oui renvoyer produit
  • 11. De l'organigramme au pseudo-code produit ← 0 compteur ← 0 compteur ← compteur+1 compteur = entier2 ? non oui produit ← produit+entier1 Multiplication : renvoyer produit Entrées : deux entiers entier1 et entier2 Sorties : le produit de entier1 et entier2 Variables : entiers compteur et produit Début compteur ← 0 produit ← 0 Tant que compteur < entier2 faire : produit ← addition(produit, entier1) compteur ← addition(compteur, 1) Fin tant que renvoyer produit Fin
  • 12. Du pseudo-code au code Java Multiplication : Entrées : deux entiers entier1 et entier2 Sorties : le produit de entier1 et entier2 Variables : entiers compteur et produit Début compteur ← 0 produit ← 0 Tant que compteur < entier2 faire : produit ← addition(produit, entier1) compteur ← addition(compteur, 1) Fin tant que renvoyer produit public static int multiplication(int entier1, Fin int entier2){ int compteur=0; int produit=0; while (compteur<entier1){ produit=produit+entier1; compteur=compteur+1; } return produit; }
  • 13. 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 !” ?
  • 14. 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 !” ?
  • 15. 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 !” ?
  • 16. 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 !” ?
  • 17. 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 !
  • 18. 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
  • 19. 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
  • 20. 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
  • 21. 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
  • 22. 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
  • 23. 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
  • 24. 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
  • 25. Le calcul rapide en binaire Pour faire son geek : - compter sur ses doigts en binaire, jusqu'à 210
  • 26. 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/
  • 27. 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 ≈ ?
  • 28. 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
  • 29. 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
  • 30. 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
  • 31. 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
  • 32. 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
  • 33. 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
  • 34. 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
  • 35. 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 ?
  • 36. 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 ?
  • 37. 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 : somme i+j (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 }
  • 38. 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
  • 39. 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
  • 40. 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”)