L’informatique (1)
                                                                                           • 10% des investissements des sociétés (hors
 Algorithmique et Programmation                                                              bâtiments)
              Java                                                                         • Croissance très rapide du nombre de cadres
                                                                                             et techniciens informaticiens [1982-1991]
        Jean-Marie Boé, Guy Melançon, Joël                                                 • Science encore jeune (30 ans)
                    Quinqueton                                                             • Gigantesque cathédrale de constructions
               Dépt MIAp, UFR IV                                                             matérielles et intellectuelles
          UPV - Université Montpellier III
                                                                                                                                          Cori, Levy




                  L’informatique (2)                                                                 L’informatique (3)
• Il existe une science de l’informatique
                                                                                           • La jeunesse de l'informatique permet à
• Plusieurs théories imbriquées                                                              certains de nier son aspect scientifique
  – logique et calculabilité, algorithmique et analyse
    d'algorithmes, conception et sémantique des                                            • Mythe du hacker («fous de la
    langages de programmation, bases de données,                                             programmation»)
    principes des systèmes d'exploitation, architectures des
    ordinateurs et évaluation de leurs performances, réseaux et                              – hacker [...] n. 2. One who programs
    protocoles, langages formels et compilation, codes et                                      enthusiastically (even obsessively) or who
    cryptographie, apprentissage et zero-knowledge algorithms, calcul formel,
    démonstration automatique, conception et vérification de circuits, vérification et         enjoys programming rather than just theorizing
    validation de programmes, temps réel et logiques temporelles, traitement d'images et
    vision, synthèse d'image, robotique, ...                                                   about programming.




                  L’informatique (4)                                                                 L’informatique (5)
 • La jeunesse de l'informatique permet à                                                  • Une autre caractéristique de l'informatique
   certains de nier son aspect scientifique                                                  est le côté instable des programmes
 • Mythes du hacker («fous de la                                                           • Les phénomènes continus sont rares en
   programmation»)                                                                           informatique
    – Programmeur préférant ignorer toute
      considération théorique qui puisse l’aider dans                                        – Une panne n'est en général pas le résultat d'une
      ses constructions souvent très habiles                                                   dégradation perceptible. Elle arrive simplement
                                                                                               brutalement.




                                                                                                                                                       1
L’informatique (6)                                                     Objectifs
• Une autre caractéristique de l'informatique             • Initiation à la programmation objet
  est le côté instable des programmes                         – Initiation à la programmation impérative
  – C'est ce côté exact de l'informatique qui est très        – Initiation à l’approche objet avec Java
    attrayant                                             • Rudiments d’algorithmique
  – En informatique, il y a peu de solutions
                                                              – Conception et analyse des algorithmes
    approchées
                                                              – Implémentations des structures de données
  – En informatique, il y a une certaine notion de
    l'exactitude




                   Plan (1)                                                        Plan (2)
• Architecture machine     • Tris simples (bulles,       Objets                        • Méthodes:
                                                         Champs et Méthodes
• Types de base,             par insertion)                                              – valeur de retour
                                                         Références et valeurs, test
  affectation              • Tris récursifs              d’égalité                       – visibilité
• Instructions               (Quicksort, fusion)                                         – classe vs instance
  conditionnelles          • Recherche dans des                                        • La jdk (AWT,
• Boucles                    tables                                                      java.util, …)




              Références (1)                                                 Références (2)
• Une seule


       http://ead.univ-montp3.fr:8900

  http://metice.univ-montp3.fr/~miap




                                                                                                                2
Références (3)                                    Références (4)
• Sites web                                         • Livres
  –   Tutorials Java                                  – Brondeau J. Introduction à la programmation
      • Kjell , CCSU (USA)
                                                        objet en Java, Dunod, 1999.
      • Brandeis University (USA)
      • Campione and Walrath, Addison Wesley          – Eckel B. Thinking in Java, Mind View Inc.
  – Tutorials d’algorithmique                         – Bob Sedgewick, Algorithms, 2nd edition,
      • Cours de Robert Cori et Jean-Jacques Lévy       Addison-Wesley, 1988. En français: Algorithmes
  – Serveur Spédago de Spécif                           en langage C, trad. par Jean-Michel Moreau,
      • Cours / TD sur l'algorithmique                  InterEditions, 1991.
      • Cours / TD sur la programmation




 Architecture d’un ordinateur (1)                    Architecture d’un ordinateur (2)
                                                    • Toutes les opérations effectuées en machine
                                                      sont exécutées par le processeur
                                                    • Aucune opération n’est faite en mémoire
                                                      principale
                                                    • Le processeur opère sur des données
                                                      préalablement stockée en mémoire




 Architecture d’un ordinateur (3)                    Architecture d’un ordinateur (4)
                                                    • La mémoire est une composante constituée
                                                      de circuits spécialisés dans la localisation de
                                                      mots mémoire à partir d’une adresse
                                                    • Une adresse = un nombre = un endroit où se
                                                      trouve une donnée




Processeur MIPS 32 4kP




                                                                                                         3
Architecture d’un ordinateur (5)                                Architecture d’un ordinateur (6)
                                                                • Le processeur sait faire un nombre fini
                                                                  d’opérations
                                                                • Tout programme doit être traduit en une
                                                                  suite d’opérations qu’il sait exécuter
                                                                • Ces opérations sont souvent appelées
                                                                  instructions machines




 Architecture d’un ordinateur (7)                                Architecture d’un ordinateur (8)
• Pour additionner deux nombres m et n.
   – Amener l’adresse de m dans un registre
   – Amener dans un second registre le contenu de la
     mémoire vive à cette adresse
   – Idem pour le second nombre n
   – Exécuter l’addition (module arithmétique)
   – Amener dans un registre l’adresse où stocker le résultat
   – Le stocker dans la mémoire vive




 Architecture d’un ordinateur (8)                                           Compilation (1)
• Un processeur est composé de plusieurs modules                • Les langages de programmation de haut
  spécialisés                                                     niveau permettent de s’abstraire du matériel
   –   Module arithmétique
   –   Contrôle de flux
   –   Calcul d’adresse                                         class Hello {
                                                                  public static void main ( String[] args ) {
   –   Traitement des interactions avec les périphériques
                                                                    System.out.println("Hello World!");
• Deux processeurs diffèrent par l’ensemble des                   }
  instructions machine dont il dispose                          }




                                                                                                                 4
Compilation (2)                                     Compilation (3)
• La compilation consiste à traduire un             • Le résultat d’une compilation dépend de la
  langage de haut niveau en langage machine           plate-forme (type d’ordinateur) sur lequel
                                                      elle est effectuée
   System.out.println("Hello World!");              • Un programme compilé sur Mac ne tourne
                                                      pas sur un PC, un programme compilé sur
                                                      PC ne tourne pas sous Linux, etc.
    00011011011010010100 000110110101
    11011010010010010100 001110110110
    00110011011010010100 000110110111
    …




                  Java (1)                                           Java (2)
• Java est un langage portable                      • La compilation produit le même fichier de
• Le même programme, compilé une seule                bytecodes, quel que soit la plate-forme
  fois, peut-être exécuté sur n’importe quelle
  plate-forme


  Hello.java          javac        Hello.class        Hello.java         javac         Hello.class


   Compilation     Compilation     Bytecodes Java      Compilation    Compilation      Bytecodes Java
      Java            Java                                Java           Java




                  Java (3)                          La Machine Virtuelle Java (JVM)
• Le même programme, compilé une seule              • Les bytecodes sont interprétées
  fois, peut-être exécuté sur n’importe quelle        différemment selon la plate-forme sur
  plate-forme                                         laquelle ils sont exécutés
• Heuh ?
                                                                        Interpréteur
                                                      Hello.class                        Le processeur
                                                                            Java

                                                        Bytecodes
                                                           Java               Machine Virtuelle Java




                                                                                                         5
Java
                                                                    Algorithmique (1)
      Avantages / Inconvénients
• Portabilité                 • Performances              • Un programme présente deux aspects
• Génération automatique        amoindries par              – un contenu et une forme
  de la documentation des       l’interpréteur
  programmes                                                – un sens et une grammaire
                              • Gestion de la mémoire
• Rapide dissémination via                                • Pour l'ordinateur, il suffit que le programme
  Internet                      via le «garbage
                                collector»                  soit correct au niveau de la forme (la
• Très grande compatibilité
  http                                                      syntaxe)


                                                                                                     Darmont




             Algorithmique (2)                                      Algorithmique (3)
• L’ordinateur effectuera toujours les                    • La cohérence du programme (du contenu)
  manipulations commandées par un                           n'est pas examinée ou évaluée par le
  programme syntaxiquement correct                          compilateur
   – La première étape de la compilation consiste à       • L'analyse du problème à traiter, la preuve de
     vérifier que le programme écrit est                    la cohérence et de la pertinence de sa
     syntaxiquement correct                                 solution sont préalable à l’écriture du
   – Si l'on fait une erreur de syntaxe, le compilateur     programme
     affiche un message d'erreur




             Algorithmique (4)
• On doit
   – fixer l'objectif du programme
   – établir la liste des données à manipuler et des
     opérations à exécuter, et les ordonner.
• La description de la suite des opérations
  élémentaires ordonnées capables de
  résoudre le problème posé constitue un
  algorithme




                                                                                                               6

Cours1 1

  • 1.
    L’informatique (1) • 10% des investissements des sociétés (hors Algorithmique et Programmation bâtiments) Java • Croissance très rapide du nombre de cadres et techniciens informaticiens [1982-1991] Jean-Marie Boé, Guy Melançon, Joël • Science encore jeune (30 ans) Quinqueton • Gigantesque cathédrale de constructions Dépt MIAp, UFR IV matérielles et intellectuelles UPV - Université Montpellier III Cori, Levy L’informatique (2) L’informatique (3) • Il existe une science de l’informatique • La jeunesse de l'informatique permet à • Plusieurs théories imbriquées certains de nier son aspect scientifique – logique et calculabilité, algorithmique et analyse d'algorithmes, conception et sémantique des • Mythe du hacker («fous de la langages de programmation, bases de données, programmation») principes des systèmes d'exploitation, architectures des ordinateurs et évaluation de leurs performances, réseaux et – hacker [...] n. 2. One who programs protocoles, langages formels et compilation, codes et enthusiastically (even obsessively) or who cryptographie, apprentissage et zero-knowledge algorithms, calcul formel, démonstration automatique, conception et vérification de circuits, vérification et enjoys programming rather than just theorizing validation de programmes, temps réel et logiques temporelles, traitement d'images et vision, synthèse d'image, robotique, ... about programming. L’informatique (4) L’informatique (5) • La jeunesse de l'informatique permet à • Une autre caractéristique de l'informatique certains de nier son aspect scientifique est le côté instable des programmes • Mythes du hacker («fous de la • Les phénomènes continus sont rares en programmation») informatique – Programmeur préférant ignorer toute considération théorique qui puisse l’aider dans – Une panne n'est en général pas le résultat d'une ses constructions souvent très habiles dégradation perceptible. Elle arrive simplement brutalement. 1
  • 2.
    L’informatique (6) Objectifs • Une autre caractéristique de l'informatique • Initiation à la programmation objet est le côté instable des programmes – Initiation à la programmation impérative – C'est ce côté exact de l'informatique qui est très – Initiation à l’approche objet avec Java attrayant • Rudiments d’algorithmique – En informatique, il y a peu de solutions – Conception et analyse des algorithmes approchées – Implémentations des structures de données – En informatique, il y a une certaine notion de l'exactitude Plan (1) Plan (2) • Architecture machine • Tris simples (bulles, Objets • Méthodes: Champs et Méthodes • Types de base, par insertion) – valeur de retour Références et valeurs, test affectation • Tris récursifs d’égalité – visibilité • Instructions (Quicksort, fusion) – classe vs instance conditionnelles • Recherche dans des • La jdk (AWT, • Boucles tables java.util, …) Références (1) Références (2) • Une seule http://ead.univ-montp3.fr:8900 http://metice.univ-montp3.fr/~miap 2
  • 3.
    Références (3) Références (4) • Sites web • Livres – Tutorials Java – Brondeau J. Introduction à la programmation • Kjell , CCSU (USA) objet en Java, Dunod, 1999. • Brandeis University (USA) • Campione and Walrath, Addison Wesley – Eckel B. Thinking in Java, Mind View Inc. – Tutorials d’algorithmique – Bob Sedgewick, Algorithms, 2nd edition, • Cours de Robert Cori et Jean-Jacques Lévy Addison-Wesley, 1988. En français: Algorithmes – Serveur Spédago de Spécif en langage C, trad. par Jean-Michel Moreau, • Cours / TD sur l'algorithmique InterEditions, 1991. • Cours / TD sur la programmation Architecture d’un ordinateur (1) Architecture d’un ordinateur (2) • Toutes les opérations effectuées en machine sont exécutées par le processeur • Aucune opération n’est faite en mémoire principale • Le processeur opère sur des données préalablement stockée en mémoire Architecture d’un ordinateur (3) Architecture d’un ordinateur (4) • La mémoire est une composante constituée de circuits spécialisés dans la localisation de mots mémoire à partir d’une adresse • Une adresse = un nombre = un endroit où se trouve une donnée Processeur MIPS 32 4kP 3
  • 4.
    Architecture d’un ordinateur(5) Architecture d’un ordinateur (6) • Le processeur sait faire un nombre fini d’opérations • Tout programme doit être traduit en une suite d’opérations qu’il sait exécuter • Ces opérations sont souvent appelées instructions machines Architecture d’un ordinateur (7) Architecture d’un ordinateur (8) • Pour additionner deux nombres m et n. – Amener l’adresse de m dans un registre – Amener dans un second registre le contenu de la mémoire vive à cette adresse – Idem pour le second nombre n – Exécuter l’addition (module arithmétique) – Amener dans un registre l’adresse où stocker le résultat – Le stocker dans la mémoire vive Architecture d’un ordinateur (8) Compilation (1) • Un processeur est composé de plusieurs modules • Les langages de programmation de haut spécialisés niveau permettent de s’abstraire du matériel – Module arithmétique – Contrôle de flux – Calcul d’adresse class Hello { public static void main ( String[] args ) { – Traitement des interactions avec les périphériques System.out.println("Hello World!"); • Deux processeurs diffèrent par l’ensemble des } instructions machine dont il dispose } 4
  • 5.
    Compilation (2) Compilation (3) • La compilation consiste à traduire un • Le résultat d’une compilation dépend de la langage de haut niveau en langage machine plate-forme (type d’ordinateur) sur lequel elle est effectuée System.out.println("Hello World!"); • Un programme compilé sur Mac ne tourne pas sur un PC, un programme compilé sur PC ne tourne pas sous Linux, etc. 00011011011010010100 000110110101 11011010010010010100 001110110110 00110011011010010100 000110110111 … Java (1) Java (2) • Java est un langage portable • La compilation produit le même fichier de • Le même programme, compilé une seule bytecodes, quel que soit la plate-forme fois, peut-être exécuté sur n’importe quelle plate-forme Hello.java javac Hello.class Hello.java javac Hello.class Compilation Compilation Bytecodes Java Compilation Compilation Bytecodes Java Java Java Java Java Java (3) La Machine Virtuelle Java (JVM) • Le même programme, compilé une seule • Les bytecodes sont interprétées fois, peut-être exécuté sur n’importe quelle différemment selon la plate-forme sur plate-forme laquelle ils sont exécutés • Heuh ? Interpréteur Hello.class Le processeur Java Bytecodes Java Machine Virtuelle Java 5
  • 6.
    Java Algorithmique (1) Avantages / Inconvénients • Portabilité • Performances • Un programme présente deux aspects • Génération automatique amoindries par – un contenu et une forme de la documentation des l’interpréteur programmes – un sens et une grammaire • Gestion de la mémoire • Rapide dissémination via • Pour l'ordinateur, il suffit que le programme Internet via le «garbage collector» soit correct au niveau de la forme (la • Très grande compatibilité http syntaxe) Darmont Algorithmique (2) Algorithmique (3) • L’ordinateur effectuera toujours les • La cohérence du programme (du contenu) manipulations commandées par un n'est pas examinée ou évaluée par le programme syntaxiquement correct compilateur – La première étape de la compilation consiste à • L'analyse du problème à traiter, la preuve de vérifier que le programme écrit est la cohérence et de la pertinence de sa syntaxiquement correct solution sont préalable à l’écriture du – Si l'on fait une erreur de syntaxe, le compilateur programme affiche un message d'erreur Algorithmique (4) • On doit – fixer l'objectif du programme – établir la liste des données à manipuler et des opérations à exécuter, et les ordonner. • La description de la suite des opérations élémentaires ordonnées capables de résoudre le problème posé constitue un algorithme 6