Introduction à la programmation en Java Bonjour à tous! Bienvenu au module « Introduction à Java »
Agenda Introduction aux langages de programmation Et Java dans tout ça? Les bases de la programmation Notre première application Java
Agenda Introduction aux langages de programmation Et Java dans tout ça? Les bases de la programmation Notre première application Java
Introduction aux langages de programmation Qu'est qu'un algorithme? Comment parler à l'ordinateur? Qu'est qu'un programme? Qu'est qu'un langage de programmation? …et Java? C'est quoi dans tout ça?
Définitions Algorithme: suite finie de règles à appliquer dans un ordre déterminé à un nombre fini de données pour arriver, en un nombre fini d’étapes, à un résultat. Données: organisation structurée des informations Programme: traduction d’un algorithme dans un langage compréhensible par un ordinateur; autrement dit, un programme est une suite d'instructions définissant des opérations à réaliser sur des données. Description d'un processus de résolution d'un problème bien défini = Succession d'actions qui, agissant sur un ensemble de ressources (entrée), fourniront la solution (sortie) au problème Definitionen Algorithmus: Endliche Folge von Regeln, die in einer bestimmten Reihenfolge an einer endlichen Anzahl von Daten anzuwenden sind, um in einer endlichen Anzahl von Schritten zu einem Ergebnis zu gelangen. Daten: strukturierte Organisation von Informationen Programm: Übersetzung eines Algorithmus in eine durch einen Computer verständliche Sprache; mit anderen Worten ist ein Programm eine Folge von Instruktionen, das Operationen auf Daten definiert. Problème Méthode Algorithme Programme
Algorithme Le mot algorithme vient du Moyen Age et de la latinisation du nom du mathématicien perse al-Khuwārizmī (~783-850). En revanche le principe des algorithmes est connu depuis l'Antiquité (exemple: algorithme d'Euclide qui date de 300 av. J.-C. environ). Donald Knuth mentionne même l'usage d'algorithmes par les Babyloniens. Algorithme d'Euclide: est un algorithme permettant de déterminer le plus grand commun diviseur (P.G.C.D.) de deux entiers dont on ne connaît pas la factorisation.
Exemples de la vie courante Comment faire du café? Faire chauffer l’eau Mettre du café dans la tasse Ajouter de l’eau dans la tasse Recettes de cuisine
Caractéristiques des algorithmes Les algorithmes sont indépendants des ordinateurs qui les exécutent. Les algorithmes sont indépendants des langages dans lesquels ils sont traduits. On peut les formuler en langage courant (français, allemand), en pseudo-code ou à l'aide de diagrammes. Diagramme: flowchart OU nassi shneiderman diagram Flowchart: en FR organigramme de programmation en DE: Programmablaufplan
Exemple d'algorithme Problème: Comment calculer l’intérêt et la valeur acquise par une somme placée pendant un an à intérêt simple? Données fournies: somme placée taux d’intérêt Résultats désirés: intérêt fourni par la somme placée, valeur obtenue après placement d’un an Algorithme: Multiplier la somme par le taux d’intérêt divisé par cent Additionner le résultat du point 1 et la somme initiale Retourner les résultats des points 1 et 2
Définir des Algorithmes Dans l’exemple précédent, on distingue trois étapes qui sont souvent caractéristiques de la résolution d’un problème: Comprendre la nature du problème et préciser les données fournies (input) Définir les résultats que l’on désire obtenir (sorties ou output) Déterminer le processus de transformation des données en résultats Problème Méthode Algorithme Programme
Algorithmes: méthodologie Pour traiter des problèmes plus complexes, une technique d’élaboration d’algorithme est la méthode descendante (top-down). Principe: décomposer le problème en plusieurs sous-problèmes plus simples qui seront traités séparément; les sous-problèmes sont eux-mêmes décomposés en problèmes plus fins. Il faut savoir à quel niveau s’arrêter! Une fois l'algorithme élaboré, il nous reste à le traduire en un programme compréhensible par un ordinateur. Idée de base: Abstraire Décomposer Combiner Identifier les problèmes résolus, se ramener à des problèmes connus Le langage de programmation nous indique quelles sont les instructions primitives disponibles. Il faut savoir à quel niveau s'arrêter: cf. exemple « comment faire du café ? » Problème Méthode Algorithme Programme
Le langage machine Le langage utilisé par le processeur est appelé langage machine. Il s'agit des données telles qu'elles arrivent au processeur, c'est à dire, une succession de 0 et de 1 (des données binaires). 01101011001 Calcule la moyenne ! Le langage machine n'est ainsi pas compréhensible par l'être humain, c'est pourquoi des langages intermédiaires, compréhensibles par l'homme, ont été mis au point: les langages de programmation. Maintenant que l'on sait CE QU'ON AIMERAIT DEMANDER A L'ORDINATEUR (QUOI) il faus savoir COMMENT le lui faire comprendre!
Compilateurs Le code écrit dans ce type de langage est transformé en langage machine pour être exploitable par le processeur. Ainsi, ces programmes sont traduits en langage machine (en binaire) par un compilateur. Un langage de programmation est donc une façon pour nous (humains) de donner des instructions à un ordinateur. Calcule la moyenne ! 01101011001 Pour toutes les notes Calculer somme; Calculer nombre; Moyenne = somme/nombre … Exception faite des langages interprétés... Un programme écrit dans un langage interprété a besoin d'un programme auxiliaire (l'interpréteur) pour traduire au fur et à mesure les instructions du programme. Certains langages appartiennent en quelque sorte aux deux catégories (LISP, Java, Python, ..) car le programme écrit avec ces langages peut dans certaines conditions subir une phase de compilation intermédiaire vers un fichier écrit dans un langage qui n'est pas intelligible (donc différent du fichier source) et non exécutable (nécessité d'un interpréteur). Les applets Java, petits programmes insérés parfois dans les pages Web, sont des fichiers qui sont compilés mais que l'on ne peut exécuter qu'à partir d'un navigateur internet (ce sont des fichiers dont l'extension est .class). Traducteur Compilateur
Programmes Un programme informatique est une succession d'instructions exécutables par l'ordinateur. Les instructions sont exécutées les unes après les autres, c'est-à-dire, de façon séquentielle. On utilise un langage de programmation pour écrire ces instructions. La façon d'écrire un programme est intimement liée au langage de programmation que l'on a choisi car il en existe énormément. De plus, le compilateur devra correspondre au langage choisi: à chaque langage de programmation son compilateur. Programmierung Programm: Folge von Instruktionen, die Operationen auf Daten definieren. Die Instruktionen werden in einer Programmiersprache geschrieben
Code source D'une façon générale, le programme est un simple fichier texte (écrit avec un traitement de texte ou un éditeur de texte), que l'on appelle fichier source. Le fichier source contient les lignes de programmes que l'on appelle code source. Ce fichier source doit être compilé. Le compilateur crée un fichier exécutable qui contient tout ce dont il a besoin pour fonctionner de façon autonome, (sous les systèmes d'exploitation Microsoft Windows le fichier ainsi créé possède l'extension .exe) Le code source écrit dans un langage évolué (C, C++, ADA,…) est compilé c'est à dire traduit en code exécutable par le processeur concerné sur la plate-forme concernée. L'éditeur de lien incorpore des portions de code déjà écrites, il fait appel aux bibliothèques du système d'exploitation concerné (Microsoft Foundation classes sous Windows, MacOS Toolbox sous MacOS). Il en résulte un code exécutable sur une seule plate-forme.
Agenda Introduction aux langages de programmation Et Java dans tout ça? Les bases de la programmation Notre première application Java
Le langage Java Java est un langage de programmation. Il a été crée par des employés de Sun Microsystems, dont James Gosling. Java a été présenté officiellement le 23 mai 1995. "Duke" est la mascotte du langage de programmation Java. Java est un énorme succès technologique. En moins de 10 ans le langage Java a été adopté partout à travers le monde. Bien sûr, aussi en Suisse… Milliard = 10^9 Billion = 10^12
Java est omniprésent Tiré de https://meapplicationdevelopers.dev.java.net/fragmentation.html De nos jours, Java est partout. Présent sur plus de 2 billions d'appareils à travers le monde entier.
L'approche de Java Java utilise une approche intermédiaire: compilation du code source (.java) en un langage intermédiaire appelé bytecode (.class) portable sur toute machine supportant Java. Une machine supporte Java si elle a une machine virtuelle Java (JVM).
Machine virtuelle Java Un fichier source Java est écrit dans un fichier .java. Le compilateur traduit ce code source en bytecode et le sauve dans un fichier .class. Ce bytecode est exécutable par un moteur d'exécution, la machine virtuelle Java, appelée JVM. La JVM est disponible pour tous les systèmes informatiques. Ainsi un programme Java est écrit et compilé une fois, et peut ensuite être exécuté par tout. On dit que Java est portable. This means Java can be developed on any device, compiled into a standard bytecode and be expected to run on any device equipped with a JVM. The installation of a JVM or Java interpreter on chips, devices or software packages has become an industry standard practice. Write Once, Run Anywhere (deutsch: „Einmal schreiben, überall ausführen“) "Write Once, Run Anywhere"™
Plateforme Java Le langage de programmation Java est accompagné de tout un environnement comprenant: Un moteur d'exécution ou machine virtuelle Un compilateur Un ensemble de libraires standards (code/programmes réutilisable pour simplifier la vie du programmeur) Et aussi, des outils, des environnements, des exemples,… Cet environnement est appelé plateforme.
Plateformes Java Java EE – Enterprise Edition: regroupe les technologies de “client - serveur”. Java SE – Standard Edition: regroupe les technologies pour programmes sur le poste de travail individuel. Java ME – Micro Edition: regroupe les technologies pour programmer des appareils de type pervasif (Mobile, PDA, etc). Ces appareils ont souvent des capacités limitées. Sun Microsystems regroupe les technologies Java dans 3 éditions différentes de la plateforme et propres aux types d’applications (utilisations) des programmes: Java EE: Enterprise Edition Java SE: Standard Edition Java ME: Micro Edition
Agenda Introduction aux langages de programmation Et Java dans tout ça? Les bases de la programmation Notre première application Java
Les bases de la programmation Concepts de base de la programmation: Variables Affectation Structures de contrôle (IF...ELSE et FOR) Fonctions
Variables Variable: abstraction d'un emplacement mémoire true 6.14 karin Variable: abstraction d'un emplacement mémoire identifié par un nom, auquel on peut affecter différentes valeurs (information) au cours du temps. possèdant également un type. fini x prénom réel texte booléen Type x prénom fini Nom 6.14 karin true Information types primitifs: boolééen (boolean), entier (int, long, byte, short), réel (float, double), caractère (char) types non primitifs: chaîne de caractères/texte (String) Konstanten und Variablen Variable: ein Informationselement, das durch einen Namen identifiziert ist und dessen Inhalt sich im Laufe des Programms variieren kann. Konstante: ein Informationselement, das manchmal durch einen Namen identifiziert ist und dessen Inhalt sich im Laufe des Programms nicht variieren kann.
Affectation 6.14 Affectation: opération qui mémorise une valeur dans une variable. La valeur mémorisée est souvent le résultat de l’évaluation d’une expression. Une variable sert à stocker de l’information pour une utilisation ultérieure. Sens de lecture: y = 0 se lit "y reçoit la valeur 0" x y = 0 constante sans nom variable x = 3 + Pi constante sans nom variable avec nom L'un des intérêts de la programmation est de pouvoir décrire une démarche opératoire qui reste la même alors que les données du problème peuvent changer. L’affectation de valeurs dans des variables est donc primordiale. Zuweisung Zuweisung: Operation, die einen Wert in einer Variable speichert. Der gespeicherte Wert ist oft das Ergebnis der Auswertung eines Ausdrucks. Eine Variable dient dazu, Informationen für eine spätere Benutzung zu speichern. Eines der Interessen der Programmierung besteht darin, ein Operationsvorgehen beschreiben zu können, welches dasselbe bleibt, während die Daten des Problems wechseln können. Die Zuweisung in Variablen ist also von vorrangiger Bedeutung.
Exemples en Java Déclarer une variable: lui donner un nom et un type int x; int y; int sum; Affecter une valeur à une variable: x = 3; y = 4; sum = x + y; Sens du x suivant sa position par rapport au signe = A gauche: référence un emplacement mémoire A droite: correspond à une valeur x = x + 1 se lit x (nouvelle valeur) reçoit x (ancienne valeur) + 1
Exécution séquentielle des instructions Le flot normal d'exécution est séquentiel: après exécution d'une instruction élémentaire, l'instruction immédiatement consécutive dans le programme est activée. Il est possible de modifier ce déroulement linéaire en utilisant des instructions de contrôle: Instructions conditionnelles Instructions de "répétition" ou "itératives" ou boucle Les langages de programmation de haut niveau ont pour la plupart repris ce principe simple les instructions vont être exécutées dans l'ordre dans lequel elles se succèdent dans le programme. Sequentielle Ausführung von Instruktionen Der normale Ausführungsfluss ist sequentiel nach Ausführung einer elementaren Instruktion, wird die folgende Instruktion im Programm aktiviert. Die meisten Programmiersprachen höheren Niveaus haben diesen einfachen Grundsatz die Instruktionen werden in der Reihenfolge ausgeführt, wie sie im Programm stehen. Es ist möglich, diesen linearen Verlauf zu ändern, indem man Kontrollinstruktionen benutzt: Bedinungen Wiederholungen
Instruction conditionelle Détermine si le bloc d’instructions suivant est exécuté ou non en évaluant une condition. Typiquement, la condition est une expression à résultat booléen (true / false). Aiguillage: Si-Alors-Sinon si condition alors instruction1 [sinon instruction2] fin_si Les „Instructions de Contrôle“ sont également appelées les „Structures de Contrôle“ dans la littérature. Kontrollinstruktionen – Bedinungen Weiche: Falls-Dann-Sonst, Falls Bedingung dann Instruktion1 [sonst Instruction2] EndFalls
Structure IF La structure IF est: if (expression1) { commandes1 } else if (expression2) { commandes2 } else commandes3 } if expression1 doit se lire "si expression1 est vraie". Les parties else if et else sont optionnelles. commandes1 commandes2 commandes3 Si l'expression expression1 est vraie, alors les commandes1 sont exécutées, sinon, si l'expression expression2 est vraie alors les commandes2 sont exécutées, enfin, si ni expression1 ni expression2 ne sont vraies, alors ce sont les commandes3 qui sont exécutées.
Exemple en Java Algorithme "maximum de deux entiers": int x; int y; int max; x = 123; y = 456; if (x > y) { max = x; } else { max = y; }
Instruction itératives Permet d’appeler plusieurs fois consécutives un même bloc d’instructions. Cette instruction évalue une condition de répétition qui soit poursuit l’exécution soit arrête l’exécution du bloc d’instruction ("on sort de la boucle"). Tant qu'une condition reste vérifiée tant_que condition faire instructions fin_tant_que vrai faux Kontrollinstruktionen – Wiederhohlungen Erlaubt, einen sich wiederholenden Kreis im Kontrollfluss zu verwirklichen: so lange wie eine Bedingung gültig bleibt solange Bedingung mache Instruktionen EndeSolange für alle Elemente eines Blocks für jedes x gehörend zu E mache Instruktionen EndeSolange
Structure FOR for (initialisation; condition; incrément) { commandes } La structure FOR permet de répéter une séquence d'instructions n fois. for (initialisation; condition; incrément) { commandes } initialisation est exécuté une fois au début de la boucle Tant que condition est vrai on exécute commandes incrément est exécutée après chaque itération; souvent cette expression incrémente une valeur. n fois
Exemples en Java Algorithme "additionner les n premiers nombres": int sum; sum = 0; for (int i = 1; i < 6; i++) { sum = sum + i; } Algorithme "compter le nombre de e dans un mot": String s; s = "Donaudampfschiffahrtsgesellschaft"; int count; count = 0; for ( int i = 0; i < s.length(); i++ ) { if ( s.charAt(i) == 'e' ) { count++; Remarque: On peut "demander des choses", accéder des propriétés de nos variables. Ces propriétés vont dépendre du type de la variable… Pour un texte, on peut demander sa longueur et son i-ième caractère. s.Length : longeur du texte s / Laenge des Textes s s.charAt(i) : i-ième caractère du texte / i-te Buchstabe des Textes
Méthodes On peut définir une portion de code comme méthode ou fonction. Une fonction est donc un sous-programme qui aura des entrées (paramètres ou input) et une sortie (retour ou output). Les fonctions permettent de décomposer et structurer un programme. Les fonctions sont aussi appelés méthodes ou procédures. Le langage de programmation offre déjà plusieurs fonctions (mathématiques, gestion de dates,…). Idée de programmation modulaire
Déclaration de méthode Une méthode se déclare comme suit: returnType methodName(paramType p, ...) { commands } returnType est le type de retour de la méthode methodName est le nom de la méthode paramType et p sont les type et nom du premier paramètre de la méthode (paramètres formels) commands représente le corps de la méthode et ce sont les instructions qui sont exécutées dans la méthode Ensuite on va invoquer la méthode en lui passant des paramètres actuels: methodName(x,…); Analogue à une fonction mathématique f(x) = 3x + 7
Exemples en Java Déclaration de la méthode qui retourne le plus grand de deux entiers: int max(int a, int b) { if (a > b) { return a; } else { return b; } } Invocation de la méthode: max(123, 456); Autres exemples: boolean isEven(int x); String reverse(String s); int average(int a, int b);
… QUESTIONS ? PAUSE !