ESIEE Paris Denis BUREAU 1 IN 101 Initiation
ESIEE Paris © Denis BUREAU 1 IN 101 Initiation à la programmation avec le langage Java
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 - Cours 1. 0 • I. Présentation de l'unité • II. Introduction à la programmation 2
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 - I. Présentation de l'unité • • I. 1. Enseignant responsable I. 2. Autres intervenants I. 3. Séquencement I. 4. Évaluation I. 5. Objectifs I. 6. Approche pédagogique I. 7. Votre rôle I. 8. Environnement technique 3
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – I. 1. Enseignant responsable • • Denis BUREAU 5356 D. Bureau (@esiee. fr) Aussi : responsable du bloc informatique du Tronc Commun (I 1, I 2, I 3) 4
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – I. 2. Autres intervenants • Vous devez savoir qui est votre intervenant. Venez me voir sans délai en cas de problème. • Permanents • Vacataires • Lire Coordonnées 5
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – I. 3. Séquencement • Lire Enseignement de la programmation dans le Tronc Commun, dont la I 1 • Lire Séquencement de l'unité • 7 séquences IN 101 + projet PR 102 mêlés • Ce premier cours de la séquence 1 = introduction ; le prochain rentre dans le vif du sujet ==> beaucoup plus dense. 6
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – I. 4. Évaluation • Partiel 1 = QCM + mini-écrit (1) • Partiel 2 = QCM + écrit (2) • Final = Questions ouvertes + écrit (3) • Pas de rapport de TP • Plutôt que de passer des heures sur les annales, relire cours et refaire les td et tp ! 7
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – I. 5. Objectifs • bases de la programmation en langage de haut-niveau • approche objet • solution en français à un problème (à découper en sous-problèmes) • langage Java et quelques bibliothèques • ne doit pas seulement fonctionner, doit aussi être "bien" programmé • expérience pratique et opérationnelle 8
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – I. 6. Approche pédagogique 1/2 • hypothèse de départ : personne ne sait programmer en java • les objets d'abord, apprentissage incrémental (pas tout d'une notion la première fois) • ne peut fonctionner qu'avec votre participation active (par exemple, lire compléments de cours sur la page web) et nécessite d'apprendre le vocabulaire en français et en Java (+ rigueur) • cours, td, tp, travail personnel, post-assistance (5356/mail/PC), projet 9
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – I. 6 10 I. 6. Approche pédagogique 2/2 • Après un TP, ne pas accepter de ne pas comprendre qqch de dit ou d'écrit ! • - page web : retenir http: //www. esiee. fr/~bureaud/unites. htm + polycopié + livre • polycopié = aide-mémoire, autre présentation (utile, mais pas la même progression pédagogique) • livre très pédagogique, non indispensable, couvre beaucoup plus de choses (3ème ou 4ème édition seulement, english is better)
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – I. 7. Votre rôle : cours • Arriver à l’heure sinon attendre pause : c 35 mn + p 5 mn + c 35 mn • ne pas faire de bruit (et écouter) • prendre des notes (je n'écris pas tout) • poser des questions • relire (notes, résumé, poly) • noter des questions pour les poser à la prochaine occasion 11
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – I. 7 12 I. 7. Votre rôle : td • cours relu, apporter notes de cours • ne pas attendre de correction / essayer • poser des questions • terminer seul les exercices et les essayer sur machine (meilleure préparation pour les contrôles car il faudra écrire un programme sur papier) • mais différence essentielle : td = mieux vaut écrire faux que rien alors que contrôle (surtout qcm) = mieux vaut rien écrire que faux
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – I. 7 13 I. 7. Votre rôle : tp • cours relu, apporter notes de cours et TD • ne pas regarder une solution • demander de l'aide, poser des questions • terminer seul les exercices • partager le clavier (première moitié l'un écrivain, l'autre relecteur, puis seconde moitié le contraire ; les deux sont autant responsables de chaque erreur, l'un parce qu'il l'a tapée, l'autre parce qu'il ne l'a pas signalée)
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – I. 7. Votre rôle : entre les séances • Relire notes de cours et suppléments de cours => noter des questions • Poser les questions par mail ou en 5356 • Terminer les exercices td et tp • En cas de doute ou de blocage, les envoyer par mail ou venir les montrer (un PC est à votre disposition en 5356, vous pouvez vous loger sur votre compte) 14
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – I. 8. Environnement technique • • PC sous Linux Java 6 (pas 7 !) Blue. J 3. 0. x chez soi : Windows ou Mac. OS OK (tout gratuit) 15
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 - I. Présentation de l'unité • • I. 1. Enseignant responsable I. 2. Autres intervenants I. 3. Séquencement I. 4. Évaluation I. 5. Objectifs I. 6. Approche pédagogique I. 7. Votre rôle I. 8. Environnement technique 16
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – II. Introduction à la programmation • • II. 1 Informatique (différents "métiers") II. 2. Performances du matériel II. 3. Langages de programmation II. 4. Algorithme 17
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – II. 1 Informatique (différents "métiers") • utilisateur (bureautique ? ) • utilisateur avancé • technico-commercial, technicien/dépanneur, programmeur* • concepteur* / analyste • chercheur / théoricien • Lire au moins les 19 premières pages du premier chapitre de ce long poly 18
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – II. 2 19 II. 2 Performances du matériel • micro-processeur : 1 GHz (à 4) ==> environ 1 ns • mémoire RAM : 1 Go (à 8), environ 10 ns (à 70) 10 x plus lent ==> , (+ cache, - multi-processeurs, + multi-accès. . . ) • disque dur : 1 To (à 2), environ 10 ms ==> 1 million x plus lent (==> charger, traiter, sauvegarder) • même les SSD sont 10000 x plus lents que la RAM (et sont limités à 512 Go pour l’instant) • Lire Description d'un ordinateur
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – II. 3 Langages de programmation • II. 3. 1. Il y en a beaucoup ! • II. 3. 2. Niveaux • II. 3. 3. Traducteurs • II. 3. 4. "Philosophies" • II. 3. 5. Exemples • II. 3. 6. Historique (C, C++, Java) • II. 3. 7. Pourquoi Java ? 20
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – II. 3. 1 Il y en a beaucoup ! • • • étude du D. O. D. en 1980 400 langages / dialectes appel d’offres, langage universel, Ada on en invente presque ttes les semaines ! mais seuls quelques importants 21
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – II. 3. 2 22 II. 3. 2 Niveaux • bas niveau : machine (binaire, 0/1) 00111001 01100011 10110010 • assemblage / assembleur (ex: 68 k, macro) MOV R 1, @(R 2+R 3) BNZ R 1, 0 x 1 F 8 A • haut niveau (ex: C, C++, Java, php, …) X = Y+Z+1 IF X > 0 THEN R = SQRT( X )
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – II. 3. 3 Traducteurs • assembleur assemblage -> binaire exécutable • compilateur (tout le programme) haut niveau -> binaire exécutable • interpréteur (ligne par ligne) haut niveau -> compile / exécute • Java : compilateur et interpréteur ! 23
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – II. 3. 4 "Philosophies" • • • impératif ou déclaratif (rare) fonctionnel script structuré ou non (rare, vieux) Orienté Objet ou non (classique) 24
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – II. 3. 5 Exemples (voir index TIOBE) • Java et C (environ 17%) • C# (. net) et C++ (8 à 9%) • Objective-C (i. Phone) et Php (6 à 7%) • Visual Basic (MS Office) (4 à 5%) • Python, Perl, Java. Script (2 à 3%) • lisp/scheme, cam. L, prolog, shell, ruby, groovy, tcl/tk (outils en électronique), pascal/delphi, ada, logo, fortran, cobol, . . . 25
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – II. 3. 6 Historique (C, C++, Java) • II. 3. 6. a. C : • 1972, Bell Labs AT&T, (pour écrire Unix, ancêtre de Linux) • ANSI-C 1983 • ISO-C 1990 puis 1999 • « bas niveau » , non OO, compilé, idéal pour accéder au matériel, non adapté à de grosses applications 26
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – II. 3. 6 Historique (C, C++, Java) • II. 3. 6. b. C++ : • 1983, Bell Labs AT&T, C O. O. , compatible ANSI-C • ISO-C++ 1998 puis 2003 • mieux, mais bas niveau existe toujours, O. O. et N. O. O. , compilé • peut être appris seul si on connaît Java et C 27
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – II. 3. 6 28 II. 3. 6 Historique (C, C++, Java) • II. 3. 6. c. Java : • 1995, Sun Micro. Systems (rachetée par Oracle) • O. O. mais Java non OO = C++ non OO = C, pas de bas niveau • inventé pour internet, multiples versions, processeur virtuel = JVM • source compilé en bytecode, puis interprété • avantages = indépendance matérielle, code très petit, bibliothèque énorme • inconvénients = lenteur (relative, 20 x, <2 x, temps réel, militaire), JVM très grosse, lente à démarrer (pas un problème pour les serveurs)
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – II. 3. 6 Historique (C, C++, Java) • II. 3. 6. d. Les éditions : • • • SE (Standard) EE (Enterprise) ME (Micro) Card (cartes à puce) Google/Androïd : Dalvik 29
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – II. 3. 6 Historique (C, C++, Java) • II. 3. 6. e. Les versions de SE : • 1. 0. . 1. 4. 2 | 1. 5 1. 6 | 1. 7 (open source) • grosses modifications du langage entre 1. 4. 2 et 1. 5, petites entre 1. 6 et 1. 7 • JRE = Java Runtime Environment (=JVM, utilisation seulement) ≠ JDK = Java Development Kit (aussi développement) • nombre de classes = 200 (v 1) à 3700 (v 6) 30
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – II. 3. 7 31 II. 3. 7 Pourquoi Java ? • langage adapté à l'apprentissage (plus propre, moins permissif, signalement d'erreur, graphique, bibliothèque énorme, les objets d’abord) • non OO identique à C/C++ (mais C reste indispensable sur certains kits et pour certaines applications) • demandé dans les offres d'emploi (standard pour développements web=JEE et Androïd=Dalvik) • Java et C ==> se mettre à C++ (3ème langage moins difficile que 2ème) • Lire le chapitre 2 (pages 4 et 5)
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – II. 4 Algorithmes • II. 4. 1. Définition • II. 4. 2. Exemple : compromis espace/temps • II. 4. 3. Exemple de la multiplication 32
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – II. 4. 1 Définition • méthode systématique pour résoudre un problème en un temps fini • différence avec les maths ? • analogie culinaire : ingrédients, étapes, solutions multiples • plusieurs algorithmes pour résoudre le même problème ==> choix, coût : performance / mémoire / matériel / lisibilité 33
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – II. 4. 2 Exemple 1 • Lire le compromis espace / temps : plus rapide ou moins de mémoire ? 34
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – II. 4. 3 Exemple 2 : la multiplication (par un nombre à plusieurs chiffres) • II. 4. 3. a. Algorithme classique • II. 4. 3. b. Algorithme "à la Russe" • II. 4. 3. c. Avantages • II. 4. 3. d. Optimisation • II. 4. 3. e. Spécification • II. 4. 3. f. Traductions • g, h, i : ’’ 35
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – II. 4. 3. a Algorithme classique « à la française » 45 x 19 1) multiplier successivement le 1 er nb ---par chaque chiffre du 2 e nb 405 45. 2) additionner les résultats en tenant ---compte des décalages nécessaires 855 • Reste un problème si on ne dispose que d'un additionneur : comment faire 9 x 45 ? 36
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – II. 4. 3 37 II. 4. 3. b Algorithme « à la russe » 1/2 45|19 | 22|38 11|76 | 5|152 2|304 | 1|608 STOP=>STOP 1) écrire les 2 nbs chacun en haut d'une colonne 2) diviser successivement le nb de la colonne de gauche par 2 3) multiplier successivement le nb de la colonne de droite par 2 4) s'arrêter lorsque 1 apparaît dans la colonne de gauche
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – II. 4. 3 38 II. 4. 3. b Algorithme « à la russe » 2/2 45| 19 22| 38 11| 76 5|152 2|304 1|608 ---|--|855 5) rayer dans la colonne de droite les nbs en face d'un nb pair de la colonne de gauche 6) additionner les nbs restant dans la colonne de droite Commentaires : simple ou compliqué ?
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – II. 4. 3. c Avantages • division par 2 => décalage d'un bit vers la droite • multiplication par 2 => décalage d'un bit vers la gauche • test de parité => test du bit de poids faible Électroniquement ? 39
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – II. 4. 3. d Optimisation 19| 45 9| 90 4|180 2|360 1|720 ---|--|855. . . 0) écrire le plus petit nb dans la colonne de gauche et le plus grand nb dans la colonne de droite 40
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – II. 4. 3. e Spécification 1/2 Cette étape de formalisation n'est pas évidente mais est nécessaire pour pouvoir ensuite passer à l'étape de traduction dans un langage de programmation. Cela peut donner ça : Soient A et B les 2 entiers positifs à multiplier. [Obtenir leur valeur] Soit R le résultat. SI A est impair ALORS initialiser R à la valeur de B SINON initialiser R à 0 FINSI TANTQUE A > 1 FAIRE - diviser A par 2 (sans reste) - multiplier B par 2 - SI A est impair ALORS ajouter B à R FINSI FINTANTQUE [Afficher le résultat R] 41
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 – II. 4. 3. e Spécification 2/2 ou bien, de façon moins verbeuse : A, B, R : entiers naturels Lire A Lire B SI reste(A/2)=1 ALORS R <- B SINON R <- 0 FINSI TANTQUE A > 1 FAIRE A <- A / 2 B <- B * 2 SI reste(A/2)=1 ALORS R <- R + B FINSI FINTANTQUE Afficher R 42
ESIEE Paris © Denis BUREAU 43 IN 101 - Cours 1. 0 – II. 4. 3. f Traduction en Java (incomplète) début du programme { début de la partie principale { int A = récupération du premier nombre ; int B = récupération du deuxième nombre ; int R; if ( A > B ) { // échange R = B; B = A; A = R; } // if if ( A % 2 == 0 ) R = 0; // liberté du programmeur else R = B; while ( A > 1 ) { A /= 2; B += B; if ( A%2 != 0 ) } // while R += B; affichage sous la forme A * B = R ; } // fin de la partie principale } // fin du programme
ESIEE Paris © Denis BUREAU 44 IN 101 - Cours 1. 0 – II. 4. 3. g Traduction en Java (complète et compilable) public class Russe { public static void main( String[] inutilise ) { java. util. Scanner clavier = new java. util. Scanner( System. in ); System. out. print( "A ? " ); int A = clavier. next. Int(); System. out. print( "B ? " ); int B = clavier. next. Int(); int R; if ( A > B ) { // échange R = B; B = A; A = R; } // if if ( A % 2 == 1 ) // plus clair else R = 0; while ( A > 1 ) { A = A / 2; // B = B * 2; // if ( A%2 == 1 )// R = R + B; // } // while R = B; plus clair System. out. println( A + "*" + B + " = " + R ); } // main(. ) } // Russe Pour les curieux : II. 4. 3. h Traduction en C++ II. 4. 3. i Traduction en C
ESIEE Paris © Denis BUREAU IN 101 - Cours 1. 0 Conclusion Lire le poly (Memento de syntaxe Java) : pages situées avant le chapitre 1 et annexes 6 & 7 Attention ! Beaucoup de nouveaux concepts dans le prochain cours 45
- Slides: 45