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