Algorithmique et initiation à la programmation java



Documents pareils
Langage à objets : JAVA (1)

Programmer en JAVA. par Tama

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Langage Java. Classe de première SI

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Java Licence Professionnelle CISII,

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

ACTIVITÉ DE PROGRAMMATION

as Architecture des Systèmes d Information

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

TD3: tableaux avancées, première classe et chaînes

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Plan du cours. Historique du langage Nouveautés de Java 7

PROGRAMMATION PAR OBJETS

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Anne Tasso. Java. Le livre de. premier langage. 6 e édition. Groupe Eyrolles, 2000, 2002, 2005, 2006, 2008, 2010, ISBN :

TP1 : Initiation à Java et Eclipse

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Java Licence Professionnelle CISII,

Une introduction à Java

Corrigé des exercices sur les références

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Introduction au langage C

INITIATION AU LANGAGE JAVA

Cours 1: Java et les objets

COMPARAISONDESLANGAGESC, C++, JAVA ET

TP, première séquence d exercices.

INF 321 : mémento de la syntaxe de Java

1. Langage de programmation Java

Initiation à la programmation en Python

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Package Java.util Classe générique

Chapitre 10. Les interfaces Comparable et Comparator 1

Auto-évaluation Programmation en Java

TP 1. Prise en main du langage Python

Flux de données Lecture/Ecriture Fichiers

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Programmation en Java IUT GEII (MC-II1) 1

Solutions du chapitre 4

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Premiers Pas en Programmation Objet : les Classes et les Objets

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Exercices sur les interfaces

Algorithmique et programmation : les bases (VBA) Corrigé

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :


UE Programmation Impérative Licence 2ème Année

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Corrigés des premiers exercices sur les classes

Gestion distribuée (par sockets) de banque en Java

Généralités sur le Langage Java et éléments syntaxiques.

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

TD/TP PAC - Programmation n 3

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Projet de programmation (IK3) : TP n 1 Correction

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Objets et Programmation. origine des langages orientés-objet

Remote Method Invocation (RMI)

Structurer ses données : les tableaux. Introduction à la programmation

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

TP1. Outils Java Eléments de correction

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Héritage presque multiple en Java (1/2)

RMI le langage Java XII-1 JMF

Introduction au langage Java

Algorithmique et Programmation, IMA

Programmation Objet Java Correction

Cours d Algorithmique et de Langage C v 3.0

Recherche dans un tableau

Un ordonnanceur stupide

Java c est quoi? Java pourquoi?

Programmation Par Objets

Notions fondamentales du langage C# Version 1.0

Algorithme. Table des matières

4. Groupement d objets

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Utilisation d objets : String et ArrayList

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Tp 1 correction. Structures de données (IF2)

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Programmation par les Objets en Java

Threads. Threads. USTL routier 1

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Programmation Orientée Objets Le Langage JAVA

Cours 1 : Qu est-ce que la programmation?

Génie Logiciel avec Ada. 4 février 2013

STAGE IREM 0- Premiers pas en Python

Synchro et Threads Java TM

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

V- Manipulations de nombres en binaire

Transcription:

L3 Monnaie - Finance Algorithmique et initiation à la programmation java Première partie O. Auzende 2012-2013 1

Modalités Cours en amphithéâtre : les lundis de 12 h à 13 h 30 (amphi 3) o Deux fascicules de cours (polycopiés à trous) sont distribués en cours Travaux dirigés (12 séances, les TD commençant dès la première semaine du semestre) o Un fascicule de TD est distribué lors du premier TD. Huit groupes de TD : Horaire Salle Enseignant Mardi 18 h 50 501 O. Auzende Mardi 20 h 25 501 O. Auzende Mercredi 14 h 05 503 N. Thibault Mercredi 15 h 40 503 N. Thibault Vendredi 9 h 20 502 F. Jézéquel Vendredi 10 h 55 502 F. Jézéquel Vendredi 12 h 30 502 N. Thibault Vendredi 14 h 05 502 O. Auzende Pour les TD : o avoir toujours les fascicules de cours et de TD avec soi o disposer dès le premier TD d une clé USB standard Evaluation : contrôle continu et projet o 1 contrôle sur 20 points au TD 5 (C1) o 1 contrôle sur 20 points au TD 8 (C2) o 1 contrôle sur 30 points au TD 11 (C3) Programme : cours et TD précédents o Un projet sur 30 points (P) Rendu progressif, de la 6 ème à la 11 ème semaine Soutenance lors du TD de la 12 ème semaine Note finale sur 10 : (C1 + C2 + C3 + P)/10 En cas d absence en TD o Prévenir l enseignant o Venir en TD dans un autre groupe de la même semaine o Tout contrôle non passé est sanctionné par un 0 2

MODALITES 2 INTRODUCTION 5 Qu est-ce que l algorithmique? 5 Qu est-ce qu un programme? 5 Comment écrire un programme? 5 Le langage machine 6 Les langages de programmation 6 Java, compilé et interprété 7 Applications, applets et servlets 7 ELEMENTS DE PROGRAMMATION JAVA 8 Notion de variable 8 Affectation 8 Egalité, inégalité 8 Conjonction, disjonction 9 Types de données 9 Notion d application 10 Les tests 11 Tableaux 12 Les boucles 12 Les sauts 14 JAVA, LANGAGE A OBJETS 15 Classes et instances 15 Attributs et méthodes d instances 18 Attributs et méthodes de classes 18 ALGORITHMIQUE 19 Permuter le contenu de deux variables 19 Pour les algorithmes sur tableaux suivants, 19 3

Insérer un élément x dans un tableau à la suite des éléments existants 20 Déterminer les éléments maximum et minimum d un tableau 20 Déterminer l indice du maximum ou du minimum d un tableau 20 Somme des éléments d un tableau 21 Comptages divers 21 Insérer un élément à sa place, le tableau étant déjà rangé 22 Les tris sur tableaux 23 LES PAQUETAGES JAVA 25 Qu est-ce qu un paquetage? 25 La notion d héritage 25 Protection des attributs et méthodes 25 Les interfaces 26 Les classes d exceptions 26 Le paquetage java.lang 27 Le paquetage java.util 28 Le paquetage java.text 31 4

Introduction Qu est-ce que l algorithmique? L algorithmique est une branche des mathématiques dont le but est de trouver de trouver comment réaliser des tâches dont le résultat s obtenir par une formule, mais par une succession de effectués en fonction du résultat de tests. Quelques exemples o Nombre de jours écoulés depuis o Maximum d un tableau de nombres (il n y a pas de donnant la solution) o Somme d un tableau de nombres (il existe une notation mathématique, mais elle n est pas o pour le calcul effectif) o Tri d un tableau de nombres La solution s appelle un algorithme : c est un ensemble Exemple : il existe différents algorithmes permettant de trier un tableau de nombres, mais Qu est-ce qu un programme? Un programme est un (appelées couramment des ) permettant à un ordinateur d exécuter une tâche plus ou moins complexe, en interaction ou non avec l utilisateur. Exemples de programmes élémentaires Calculer : o le nombre de jours écoulés o le maximum, le minimum, la somme des éléments d un o le montant o un seuil Trier : o un tableau o un tableau Exemples de programmes complexes, appelés logiciels, destinés : o traitement o o programme de gestion de o programme de o programme de conception assistée o programme de publication assistée Comment écrire un programme? Il faut d abord Il faut ensuite trouver un (ou des) Il faut enfin traduire les instructions qui composent ces algorithmes dans un compréhensible par un ordinateur 5

Le langage machine Le processeur d un ordinateur ne comprend que du langage machine ( ) composé Toute instruction élaborée : o o répéter une même faire des choses différentes en fonction de se décompose ainsi en des milliers Les langages de programmation o Intermédiaires entre o Permettent de décrire les instructions élaborées de manière plus pour former le du programme o Le code source doit ensuite être en langage machine pour pouvoir être exécuté par le o Il y a deux modes de traduction du code source : * la (langage dit ) * l (langage dit ) Les langages compilés Le compilateur o est dédié à et au o vérifie la du code source ; si c est correct, génère un fichier en langage machine, exécutable sur toute machine Exemples de langages compilés : Cobol ( ), C, C++ ( ) Avantage des langages compilés : o Le code objet s exécute Inconvénient des langages compilés : o Le code objet est dédié à un seul Les langages interprétés L interpréteur o lit le fichier source ligne à ligne, la syntaxe de chaque instruction et ne l exécute que si Exemples de langages interprétés : HTML, javascript, PHP ( ), SQL Avantage des langages interprétés o On peut interpréter le fichier sur tout type d ordinateur, à condition de disposer de l adapté à cet ordinateur Inconvénient des langages interprétés o La vérification ligne à ligne cause une certaine à l exécution 6

Java, compilé et interprété Langage développé par SUN depuis 1995. Universellement Sur l ordinateur sur lequel on écrit un programme Java, le fichier source est transformé par le compilateur javac en un non exécutable, qui est quel que soit le type de machine sur lequel on travaille. Transféré sur un autre type d ordinateur, le pseudo-code est interprété par un appelé L interpréteur : o ne vérifie plus la syntaxe des instructions (gain de temps) o exécute directement Le pseudo-code est donc indépendant du type d ordinateur sur lequel et de celui sur lequel Pour écrire un programme java sur un ordinateur, il suffit donc de disposer Pour exécuter un programme java compilé, il suffit donc de disposer Le pseudo-code est de, donc java est donc devenu le langage idéal Applications, applets et servlets Java permet d écrire : o Des applications : programmes o Des applets : petits programmes appelés dans une page HTML par la balise et interprétés par o Des servlets : programmes java stockés permettant de générer dynamiquement des pages html en réponse à 7

Eléments de programmation Java Notion de variable La notion de variable en informatique est assez proche En mathématiques, x = 5 veut dire En informatique, x est un dont la taille (nombre de qui composent cet emplacement) dépend de ce qu on veut y stocker : un entier, un réel Le contenu de cet emplacement-mémoire peut constamment être On écrit donc (syntaxe java) : int x ; (réservation de place ) x = 2 ; (on y met la valeur 2) x = 5 ; (on change, on y met ) float y ; (réservation de place ) y = 3.5 ; (on y met la valeur 3.5) ou bien directement : int x = 8; (les deux opérations ) float y = 3.5 ; Affectation Toute instruction complète se termine par Les deux instructions x = 5 ; x = 7 ; y = 3.5 ; donnent des valeurs ( ) aux emplacements-mémoire x et y. Elles sont appelées des On dit qu on une valeur à une variable occupant une certaine place-mémoire. Il serait plus naturel d écrire : x 5 (x reçoit la valeur 5), y 3.5 (y reçoit la valeur 3.5), mais tous les langages de programmation actuels (C, C++, JavaScript, Java, PHP ) utilisent la notation a = b au lieu de a b. L écriture a = b correspond donc en fait à a b et doit se lire «a la valeur de b». A gauche : A droite : On peut affecter à une variable : o une x = 3; y = 5 ; z = 4 ; o la d une autre variable x = y; (x reçoit la VALEUR de y, donc 5) o le résultat du d une x = y + z; (x reçoit la VALEUR de y + z) o le résultat du calcul d une t = max(x, y, z) ; Egalité, inégalité Egalité Le symbole = étant réservé à l affectation, on teste l égalité de deux variables a et b autrement. On écrit : if qui se lit si (a = b)... Inégalité On teste l inégalité de deux variables a et b en écrivant : if qui se lit si (a b)... 8

Exemples o si x = 4 alors y = 7 : o si annee = 2012 alors nb_jours_fevrier = 29 : o si x 10 alors y = 8 : o si mois 2 alors nb_jours > 29 : Conjonction, disjonction Conjonction La conjonction ET s écrit && si (a=b) et (c=d) s écrit donc : Disjonction La disjonction OU s écrit si (a=b) ou (c=d) s écrit donc : Exemples o si x = 4 et y = 5 alors z = 7 : o si annee=2012 et mois=2 alors nb_jours=29 : o si mois =1 ou mois=3 alors nb_jours =31 : Types de données Java est un langage typé Toute variable utilisée doit nécessairement être et son doit être Un nom de variable doit : o être constitué o ne PAS comporter ni de o ne pas être un du langage (liste fournie en TD) Exemples : float revenu; int mois_annee; Les types élémentaires sont appelés des Toute variable d un type primitif est une variable simple, non composée (int, float ) Les types autres que primitifs sont des (on verra plus tard) Types de données primitifs en Java Il y a 8 types de données primitifs (les plus utilisés sont soulignés) : o boolean : o char : o byte : o short : o int : o long : o float : o double : L instruction : boolean fini = false; définit une variable fini de type et de valeur false. L instruction : int i = 254256; définit une variable i de type, stockée sur 32 bits et de valeur 254256 L instruction : float f = 156.256; définit une variable f de type, stockée sur 32 bits et de valeur 156.256 9

Opérateurs de cast Pour créer une variable d un type à partir d une variable d un autre type semblable (nombre et nombre, par exemple), on utilise un Il est noté entre Exemples float f=156.256; int j=(int)f; j est alors un entier valant 156 double t=0.567833333; float d=(float)t; d est un flottant stocké sur 32 bits au lieu de 64 bits. On a donc perdu Notion d application Fichier Programme.java : public class Programme { public static void main(string[] args) { int a = 25 ; int b = 76 ; System.out.println("a = " + a); System.out.println("b = " + b); Un programme java est contenu dans une La description d une classe est faite entre une { et une S il n y a qu une seule classe, elle est déclarée afin d être accessible à tout utilisateur Le programme proprement dit figure dans une méthode appelée déclarée sous la forme : public static void main(string[] args) Toute méthode a un compris entre { et Tout programme contenant une méthode appelée est appelé o public signale que tout le monde peut exécuter o static indique que la méthode main est une méthode (on verra plus tard) o void dit que la méthode main o String[] args permet de passer à la méthode main (ce qu on ne fera pas) o System.out.println(chaîne) fait afficher à l écran une Pour construire une chaîne à partir de plusieurs morceaux, on utilise qui réalise leur Compilation javac Programme.java o javac est o Il compile le fichier Programme.java et crée le fichier Programme.class qui n est pas exécutable Exécution java Programme o java est o Il charge le fichier et Résultat à l écran a vaut : 5 b vaut : 7 10

Les tests Les tests permettent de faire des traitements Le test simple : if else Il s écrit : if (test) { instructions; else { instructions; La clause else est On peut avoir simplement : if (test) { instructions ; Exemple : fichier Programme1.java public class Programme1 { public static void main(string[] args) { int a = 25 ; int b = 76 ; System.out.println("a = " + a); System.out.println("b = " + b); int min ; if (a < b) { min = a; else { min = b; System.out.println("le minimum de a et b est " + min); Le test multiple : switch Il s écrit : switch (variable) { case 1: instructions; case 2: instructions;... default : instructions; La variable testée doit être de type Le cas sert si l on veut prévoir un traitement par défaut.... dans les instructions signale que le cas est traité et que l on saute Exemple : fichier Programme1b.java public class Programme1b { public static void main(string[] args) { int num = 11 ; String mois = "" ; // type chaîne de caractères switch(num) { case 1 : mois="janvier"; break ; case 2 : mois="fevrier"; break ; case 3 : mois="mars"; break ; case 4 : mois="avril"; break ; case 5 : mois="mai"; break ; case 6 : mois="juin"; break ; case 7 : mois="juillet"; break ; case 8 : mois="aout"; break ; case 9 : mois="septembre"; break ; default : mois="au dernier trimestre"; System.out.println("le mois est " + mois); 11

Tableaux Les tableaux sont des collections de variables, en. On doit d abord les, puis faire. Une fois qu un tableau est créé, sa taille On accède à l élément d indice i de t par t[i], les indices Exemples int[] t ; // ou int t[]; // déclaration d un tableau d entiers t=new int[20]; // création de t en mémoire String[] t1 ; // ou String t1[]; // déclaration d un tableau de chaînes t1 = new String[10] ; // création de t1 en mémoire Utilisation : fichier Tableau.java public class Tableau { public static void main(string[] args) { String[] t = new String[12] ; t[0]="janvier"; t[1]="fevrier"; t[2]="mars"; t[3]="avril"; t[4]="mai"; t[5]="juin";t[6]="juillet"; t[7]="aout"; t[8]="septembre"; t[9]="octobre"; t[10]="novembre"; t[11]="decembre"; System.out.println("Les mois de l'annee sont : "); System.out.println(t[0]); System.out.println(t[1]); System.out.println(t[2]); System.out.println(t[3]); System.out.println(t[4]); System.out.println(t[5]); System.out.println(t[6]); System.out.println(t[7]); System.out.println(t[8]); System.out.println(t[9]); System.out.println(t[10]); System.out.println(t[11]); Les boucles La boucle for La boucle for permet de un certain nombre de fois des instructions. Elle s écrit : for (initialisation; test_continuation; incrémentation) {instructions; Exemple : répéter 10 fois des instructions for (int i = 0 ; i < 10 ; i++) { instructions; o L initialisation précise qui contrôle la boucle et int i=0 o Le test est un ( test qui doit être vérifié pour que la boucle ) i < 10 o L incrémentation précise comment Généralement on écrit i++ qui veut dire i=i+1 (on passe de i à i+1, donc ) 12

Fichier Tableau1.java : une seule instruction public class Tableau1 { public static void main(string[] args) { String[] t = new String[12] ; t[0]="janvier"; t[1]="fevrier"; t[2]="mars"; t[3]="avril"; t[4]="mai"; t[5]="juin"; t[6]="juillet"; t[7]="aout"; t[8]="septembre";t[9]="octobre";t[10]="novembre"; t[11]="decembre"; System.out.println("Les mois de l'annee sont : "); for (int i = 0 ; i < 12; i++) { System.out.println(t[i]); Fichier Tableau2.java : on utilise deux boucles for : une pour, l autre pour faire public class Tableau2 { public static void main(string[] args) { double[] t = new double[20] ; for (int i = 0 ; i < 20 ; i++) { t[i] = i ; for (int i = 0; i < 20 ; i++) { System.out.print(t[i] + " * "); o La variable i est déclarée o Entre les deux boucles, i o On dit que la se limite à la en cours Fichier Tableau2b.java : la variable i est o La portée de i est alors toute entière (i est connu dans ). public class Tableau2b { public static void main(string[] args) { double[] t = new double[20] ; int i ; for (i = 0 ; i < 20 ; i++) { t[i] = i ; for (i = 0; i < 20 ; i++) { System.out.print(t[i] + " * "); System.out.println("\n ---> i vaut maintenant " + i) ; La boucle while Elle permet de des instructions tant Elle s écrit : while (test) { instructions ; Les instructions doivent modifier une variable intervenant dans le test, pour que la boucle while ne boucle 13

Exemple : afficher les éléments d un tableau de nombres t tant qu ils sont inférieurs à 20. int i = 0 ; while (t[i] < 20) { System.out.print(t[i] + " ") ; i++ ; i est modifié dans les instructions, donc t[i] correspond à chaque passage à du tableau t. Attention cependant à ne pas dépasser! Si le tableau est de taille n, il faut écrire : int i = 0 ; while ((i < n) && (t[i] < 20)) { // && est la notation pour ET System.out.print(t[i] + " ") ; i++ ; La boucle do while Elle permet de faire exécuter des instructions puis de ces instructions tant qu un test est vérifié. Elle s écrit : do { instructions ; while (test); Les instructions doivent modifier une variable du test, pour que le do while ne boucle pas Exemple : afficher le premier élément du tableau t, puis les éléments suivants tant qu ils sont inférieurs au premier : int i = 0 ; do { System.out.print(t[i]+ " "); i++ ; while ((i<n)&&(t[i]<t[0])); Les sauts Le break break permet en reprenant l exécution directement le test ou la boucle (on saute donc les cas suivants). Exemple : afficher les éléments du tableau t tant qu ils sont inférieurs à 20. On arrête donc dès qu on rencontre un élément supérieur ou égal à 20. for (int i = 0 ; i < n ; i++) { if (t[i]<20) { System.out.print(t[i]+" * "); else { break ; C est équivalent à la boucle while ci-dessous : int i = 0 ; while ((i<n) && (t[i] < 20)) { System.out.print(t[i]+" * ") ; i++ ; 14

Le continue continue permet de sortir en reprenant l exécution à l itération suivante. On arrête donc les instructions de l itération en cours pour passer Exemple : afficher les éléments du tableau t qui sont différents de 20. Deux versions, selon que l on teste si t[i] est égal à 20 ou est différent de 20 : Si on teste si t[i] est égal à 20, on écrit : Si on teste si t[i] est différent de 20, on écrit : for (int i = 0 ; i < n ; i++) { if (t[i] == 20) { continue ; else { System.out.print(t[i]+" * "); Le return for (int i = 0 ; i < n ; i++) { if (t[i]!= 20) { System.out.print(t[i]+ " * "); else { continue ; L instruction return permet sans nécessairement attendre la fin de celle-ci. Cette instruction ne peut donc pas figurer directement mais sera très largement utilisée par la suite. Java, langage à objets Classes et instances Un programme java peut ne contenir qu une seule, comme on l a vu jusqu à présent Cette classe, qui contient, constitue à elle toute seule toute l application Mais java est avant tout un «langage», ce qui veut dire qu une classe peut aussi être un à partir duquel on peut fabriquer des objets qu on appelle des On souhaite créer des «objets» comportant : o un entier n qui représente la d un tableau o un tableau t de n entiers comportant les entiers 1, 2, 3, n-1 Exemple de deux tels objets : La classe (encore embryonnaire) correspondant à ces objets est la suivante : class ObjetTableau { // début de la classe int n ; // deux attributs :... int[] t ; // et t... // fin de la classe 15

Cette description signifie que tout objet de la classe ObjetTableau, dès qu il sera créé, comportera automatiquement deux variables (qu on appellera des ) n et t. Une classe correspond donc à la description d un ensemble d objets ayant Les objets créés selon ce modèle sont appelés des de la classe. Pour donner des valeurs aux attributs, donc remplir n et t, on doit ajouter dans la classe une méthode spécifique appelée Le est permettant de construire des objets class ObjetTableau { int n ; int[] t ; // début de la classe // deux attributs : n et t ObjetTableau(int a) { // le... n = a ; // n prend la valeur... t = new int[n] ; // on réserve la place pour... for (int i=0 ; i < n ; i++) { t[i] = i+1 ; // remplissage de... // fin du... // fin de... Créer des objets de la classe ObjetTableau se fait, dans une autre classe qui sert de programme principal : public class ProgObjet { // début de classe public static void main (String args[ ]) { // le main ObjetTableau obj1 = new ObjetTableau(6); ObjetTableau obj2 = new ObjetTableau(3); // fin... // fin... Ce programme crée bien les deux objets, mais pour le moment n affiche On ajoute donc à la classe ObjetTableau une méthode void affiche() permettant à un objet (c est-à-dire de s afficher ) : class ObjetTableau { int n ; int[] t ; // début de la classe // deux attributs : n et t ObjetTableau(int a) { // le constructeur n = a; // n prend la valeur a t = new int[n] ; // on réserve la place pour le tableau t for (int i=0;i<n;i++) { // remplissage du tableau t[i] = i+1 ; // fin du constructeur void affiche() { System.out.println("affichage des elements"); for (int i = 0; i < n; i++){ System.out.print(t[i]+" * "); System.out.println(""); // fin de la classe 16

On ajoute ensuite à la même classe une méthode int inferieurs(int p) permettant à un objet de calculer le nombre d éléments de son tableau qui sont class ObjetTableau { int n ; int[] t ; // début de la classe // deux attributs : n et t ObjetTableau(int a) { // le constructeur n = a; // n prend la valeur a t = new int[n] ; // on réserve la place pour le tableau t for (int i=0;i<n;i++) { // remplissage du tableau t[i] = i+1 ; // fin du constructeur void affiche() { System.out.println("affichage des elements"); for (int i = 0; i < n; i++){ System.out.print(t[i]+" * "); System.out.println(""); int inferieurs(int p) { int compteur = 0 ; for (int i = 0; i < n; i++){ if (t[i]<p) compteur++ ; return compteur ; // fin de la classe On ajoute enfin à les instructions demandant aux objets créés d exécuter ces méthodes : public class ProgObjet { // classe principale public static void main (String args[ ]) { // main ObjetTableau obj1 = new ObjetTableau(6); obj1.affiche(); // affichage de obj1 // nb elements < 3 System.out.println(obj1.inferieurs(3)) ; ObjetTableau obj2 = new ObjetTableau(3); obj2.affiche(); // affichage de obj2 // nb elements < 4 System.out.println(obj2.inferieurs(4)) ; // fin du main // fin de classe Les deux méthodes void affiche() et int inferieurs(int p) ne peuvent être exécutées que par o On les appelle des void affiche() affiche les éléments à l écran, mais ne calcule rien, d où son type de valeur de retour : int inferieurs(int p)calcule le nombre d éléments de t qui sont strictement inférieurs à p o int (valeur de retour) indique que le résultat (valeur du compteur) o int p est le de la méthode o return permet de la valeur du compteur Le fichier comporte finalement deux classes : ObjetTableau et ProgObjet. Il y aura donc fichiers compilés. 17

Il s agit d une, car il y a dans une des classes une méthode appelée La classe principale est celle qui comporte le main ; elle o On l appelle aussi l application Le fichier doit porter le nom, suivi de l extension.java o Ce sera donc ici Attributs et méthodes d instances Une classe est un permettant de construire des objets. Un objet est nécessairement créé à partir d une classe, à l aide On dit que l objet est une de la classe et qu il est Mais une classe n oblige pas forcément à créer des objets Un objet comporte des et dispose de, définis dans sa classe. Ainsi, dans la classe ObjetTableau, o n et t sont des o les méthodes void affiche() et int inferieurs(int p) sont des Attributs et méthodes de classes Une classe peut aussi comporter des et des. Ils sont signalés par le mot-clé et existent dès le début de l application Seule exception : le est une méthode de classe, alors qu il n est jamais précédé de Exemple d utilisation d un attribut de classe et d une méthode de classe pour compter les objets créés : fichier ProgObjet1.java class ObjetTableau { static int nbobjets = 0; // int n ; // attribut d instance int[] t ; // attribut d instance ObjetTableau(int a) { // constructeur n = a; t = new int[n] ; for (int i=0;i<n;i++) { t[i] = i+1 ; nbobjets++ ; // incrémentation du compteur 18

void affiche() { System.out.print("affichage d'un objet :"); for (int i = 0; i < n; i++){ System.out.print(t[i]+" * "); System.out.println(""); static void nombreobjets() { // méthode de classe System.out.println("Nombre d'objets : " + nbobjets) ; public class ProgObjet1 { // début de classe public static void main (String args[ ]) { // le main ObjetTableau.nombreObjets() ; // appel à la méthode de classe ObjetTableau obj1 = new ObjetTableau(6); obj1.affiche(); // affichage de obj1 ObjetTableau.nombreObjets() ; // appel à la méthode de classe ObjetTableau obj2 = new ObjetTableau(10); obj2.affiche(); // affichage de obj2 ObjetTableau.nombreObjets() ; // appel à la méthode de classe // fin du main // fin de classe static int nbobjets : attribut de classe initialisé, modifié dans static void nombreobjets() : méthode de classe affichant le nombre d objets, appelée dans le programme principal sur par : ObjetTableau.nombreObjets(); Exécution Nombre d'objets : 0 affichage d'un objet : 1 * 2 * 3 * 4 * 5 * 6 * Nombre d'objets : 1 affichage d'un objet : 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * Nombre d'objets : 2 Algorithmique Permuter le contenu de deux variables On veut permuter le contenu de deux variables a et b. Exemple : o Avant la permutation, a contient 38 et b contient 56. o Après la permutation, a doit contenir 56 et b doit contenir 38. Si on écrit a b (a reçoit la valeur de b), a prend la valeur de b mais Il faut donc où l on puisse stocker. On écrit donc : temp... ;...... ;... temp ; Pour permuter deux variables, on a donc impérativement besoin Pour les algorithmes sur tableaux suivants, On suppose qu un tableau t, de taille nb, contient n nombres, n nb. Les cases t[0], t[1],, t[n-1] du tableau sont donc Les cases t[n], t[n+1], t[nb-1] sont 19

Insérer un élément x dans un tableau à la suite des éléments existants Exemple Le tableau t dispose de 15 places (nb = 15) mais contient 7 nombres (n = 7), et on veut y insérer le nombre 10. Algorithme si (n = nb) alors... sinon faire............ fin si Résultat Déterminer les éléments maximum et minimum d un tableau Le tableau t est donné, ainsi que son nombre d éléments n. On recherche le plus grand ou le plus petit élément du tableau. Algorithme de recherche du maximum max... pour i allant de 1 à n faire si (... ) alors faire...... fin si fin pour A la fin de l algorithme, max contient le plus grand élément du tableau. Algorithme de recherche du minimum min... pour i allant de 1 à n faire si (... ) alors faire...... fin si fin pour A la fin de l algorithme, min contient le plus petit élément du tableau. Déterminer l indice du maximum ou du minimum d un tableau C est le même algorithme, mais où on mémorise en même temps : o la plus grande (ou petite) valeur o son 20

Algorithme pour l indice du plus grand max... indice... pour i allant de 1 à n faire si (... ) alors faire max... indice... fin si fin pour A la fin de l algorithme, max contient le plus grand élément du tableau et indice contient son indice dans le tableau Algorithme pour l indice du plus petit min... indice... pour i allant de 1 à n faire si (... ) alors faire min... indice... fin si fin pour A la fin de l algorithme, min contient le plus petit élément du tableau et indice contient son indice dans le tableau Somme des éléments d un tableau Il s agit de au fur et à mesure les valeurs des éléments du tableau. Il est donc nécessaire d avoir une variable contenant Algorithme : som... pour i allant de 0 à n faire som... fin pour A la fin, la somme des éléments du tableau est Comptages divers On a besoin de variable supplémentaire. Exemple : compter le nombre d éléments égaux à p. Algorithme : cpt... pour i allant de 0 à n faire si (... ) alors faire...... fin si fin pour A la fin, le nombre d éléments égaux à p est 21

Insérer un élément à sa place, le tableau étant déjà rangé Un tableau de nb places contient n nombres déjà rangés dans l ordre croissant. On veut y insérer un nouveau nombre. Exemple : Principe o o si le tableau est déjà plein, si le tableau est vide, o sinon, c est que le tableau est partiellement rempli : - on cherche alors le premier indice i tel que - on décale vers la fin du tableau les éléments d indice allant de - on place x en - on augmente d une unité Algorithme si (... )... sinon si (... ) faire t[n]... n... sinon faire i... tant que (... ) faire i... pour j... fin si Résultat faire... t[i]... n... fin si... 22

Les tris sur tableaux Algorithme du tri tournoi Principe A partir d un rang i, on considère l élément du tableau et on le compare à tous les éléments t[j] suivants. A chaque fois que t[i] est à t[j], on permute et On effectue cela pour i allant du indice à indice. Exemple i = 0. On compare t[0] à t[1], t[2],, t[n-1] et à chaque fois que t[0] > t[j], on permute A la fin de ce premier parcours, le plus petit élément est arrivé On recommence avec i = 1 : on compare t[1] à t[2],, t[n-1] et lorsque t[1] > t[j], on permute A la fin du deuxième parcours, les deux plus petits éléments sont On recommence ensuite avec i = 2, 3, n-2. Algorithme : pour i... pour j... si (... ) faire temp... t[i]... t[j]... fin si fin pour fin pour 23

Algorithme du tri à bulles Principe On compare chaque élément à son suivant. S il lui est supérieur, on les permute ; sinon, on passe à l élément suivant. Lorsqu on a parcouru tout le tableau, on recommence un nouveau parcours s il y a eu au moins une permutation. Exemple du premier parcours : ci-contre A la fin de ce premier parcours, le plus grand élément est arrivé Au parcours suivant, on obtient le résultat ci-contre. Les deux plus grands éléments sont position et position. Le tableau est trié dès qu un parcours est fait sans Pour contrôler l arrêt des permutations, on utilise une variable initialisée à 0 au début de chaque parcours, et que l on passe à 1 dès que Il suffit alors de boucler alors tant que cette variable, à la fin d un parcours, est égale Algorithme permut... tant que (... ) faire permut... pour i 0 à... si (... ) faire permut... temp... t[i]... t[i+1]... fin si fin pour fin tant que 24

Les paquetages Java Qu est-ce qu un paquetage? Les paquetages ( ) sont des librairies de, de et regroupées selon leur fonction. Elles sont fournies en même temps que le compilateur javac et l interpréteur java. La documentation concernant chaque paquetage est stockée sous forme de pages HTML dans un dossier spécifique o A l université, C:\sun\appserver\docs\doc\docs\ o Chez vous, Choisir la page index.html puis cliquer sur le lien intitulé : Java 2 Platform API Specification La notion d héritage Toutes les classes sont liées par la notion On déclare qu une classe dérive d une autre classe par : class Fille extends Mere {... La classe fille hérite de tous et de la classe mère. Un objet de la classe fille est donc un objet de la classe (éventuellement complété par des champs et des méthodes supplémentaires), mais la réciproque est Toutes les classes héritent d une classe spécifique appelée. Si on ne précise pas de clause d héritage dans la définition d une classe, par défaut cette classe hérite de Protection des attributs et méthodes Déclarations de protection Les attributs et méthodes d une classe peuvent être déclarés private, public, protected ou ne pas être précédés de déclaration de protection. Exemple class Truc { private int a ; protected int b ; public int c ; int d ; Déclaration private Les attributs et méthodes déclarés private ne sont accessibles qu à l intérieur de leur propre classe a ne sera donc accessible Déclaration protected Les attributs et méthodes déclarés protected ne sont accessibles qu aux sous-classes (qu elles soient dans le même paquetage ou pas) et aux classes du même paquetage b sera donc accessible 25

Déclaration public Les attributs et méthodes déclarés public sont toujours accessibles c sera Sans déclaration Les attributs et méthodes sans aucune déclaration de protection (mode dit ) sont accessibles par toutes les classes du même paquetage. C est le mode de protection par défaut d sera donc accessible Les interfaces Une interface est une sorte de classe spéciale, dont toutes les méthodes sont déclarées et (sans code). En fait, une interface, mais sans donner le code permettant d exécuter ces services. Une classe qui souhaite utiliser une interface le signale par le mot implements : class B implements C {... ; On dit alors qu elle l interface. Dans la classe B, on doit alors donner le code de les méthodes de l interface. Une classe B peut hériter d une classe A et implémenter une ou plusieurs interfaces : class B extends A implements C, D {... ; class A extends interface C, D implements class B Les méthodes des interfaces C et D doivent alors obligatoirement On utilisera quelques interfaces par la suite. Les classes d exceptions Lever une exception Lorsqu une méthode est exécutée, il peut se produire des erreurs. On dit alors qu une est o Une exception est un objet, instance d une des nombreuses sous-classes de la classe Exception. Chaque méthode qui risque de provoquer une ou des erreur(s) le par le mot suivi de la nature des erreurs susceptibles de se produire. o Les différentes classes d erreurs possibles sont spécifiées dans Exemple : dans la classe FilterInputStream, une méthode de lecture d un fichier est déclarée sous la forme : public int read() throws IOException Cela signale que cette lecture peut provoquer une erreur d entrée-sortie ( ). Utiliser une méthode à clause throws Lorsqu on a besoin d utiliser une méthode risquant de provoquer des erreurs : o on englobe l appel à cette méthode dans un bloc (pour l erreur) o on précise ce qu on fera en cas d erreur dans une clause (pour l erreur). 26

Exemple : try { fichier.read() ; catch (IOException) { System.out.println(" erreur de lecture ") ; return ; Le paquetage java.lang java.lang = java.language Le paquetage java.lang est le seul paquetage dont... Il comprend notamment la classe Object,, la classe System, les classes enveloppantes, la classe Math et la classe String (classe des ). La classe System La classe System contient des et des du système. Quand on écrit System.out.println(...), on fait appel à out de la classe System. System.out : System.in : Les classes enveloppantes Les variables des types de données primitifs (int, char, double, etc) sont les seuls éléments qui ne sont objets dans Java. des Mais on peut à partir de ces types primitifs à l aide des type nature classe enveloppante boolean true ou false Boolean char caractère 16 bits Character byte entier 8 bits signé (petit entier) Byte short entier 16 bits signé (entier court) Short int entier 32 bits signé (entier) Integer long entier 64 bits signé (entier long) Long float virgule flottante 32 bits (réel simple) Float double virgule flottante 64 bits (réel double) Double int n = 5 ; // n n est pas un objet Integer obj1 = new Integer(n) ; // obj1 est... double f = 4.68756 ; // f n est pas un objet Double obj2 = new Double(f) ; // obj2 est... La classe Math La classe Math contient toutes les nécessaires pour effectuer tous les calculs mathématiques. On effectue donc l appel à une méthode par l instruction : 27

Exemples double j = -3.145 ; double k = Math.abs(j) ; // k... double l = Math.pow(j,k) ; // l... double m = Math.sqrt(p) ; // m... La classe String La classe String contient de très nombreuses pour le traitement des chaînes de caractères Il est indispensable de consulter la documentation pour trouver la méthode dont on a besoin Le paquetage java.util java.util = utilitaires de java Il contient toutes les classes utilitaires, notamment : o Scanner : pour les o Random : pour la Importation de paquetage Pour utiliser une partie d un paquetage autre que java.lang, on utilise le mot-clé : o import java.util.scanner ; on se donne le droit d utiliser la classe Scanner o import java.util.random ; on se donne le droit d utiliser la classe Random o import java.util.* ; on se donne le droit d utiliser Utilisation de la classe Scanner Fichier UtilScanner.java : import java.util.scanner ; public class UtilScanner { static Scanner sc ; public static void main(string args[]) { sc = new Scanner(System.in); System.out.println("Veuillez saisir une phrase :"); String str = sc.nextline(); System.out.println("Vous avez saisi : " + str); System.out.println("Veuillez saisir un entier :"); int n = sc.nextint(); System.out.println("Vous avez saisi le nombre : " + n); System.out.println("Veuillez saisir un float :"); float f = sc.nextfloat(); System.out.println("Vous avez saisi le nombre : " + f); System.out.println("Veuillez saisir un double :"); double d = sc.nextdouble(); System.out.println("Vous avez saisi le nombre : " + d); 28

Le programme UtilScanner.java crée un objet sc de la classe Scanner par un constructeur relié au clavier : sc = new Scanner(System.in); puis d entrer au clavier : o une phrase : o un entier : o un float : o un double : Attention : sous Windows, les float et double doivent être entrés sous la forme du système, comme pour Excel). Utilisation de la classe Random Le programme UtilObjet.java suivant demande la création d un objet o qui comporte (liée à la configuration Le Objet() : o crée par l instruction t = new float[40] ; o appelle le constructeur de la classe Random par Random r = new Random(); l objet construit est appelé un o demande à ce de remplir le tableau par l instruction t[i]=r.nextfloat(); La méthode nextfloat() de la classe Random génère un... compris entre et Fichier UtilObjet.java import java.util.random ; class Objet { float[] t ; Objet() { t = new float[20] ; Random r = new Random(); for (int i = 0 ; i < 20 ; i++) { t[i]=r.nextfloat(); void affiche() { for (int i = 0 ; i < 20 ; i++) { System.out.println(t[i]); public class UtilObjet { public static void main(string[] args) { Objet o = new Objet(); o.affiche(); Un exemple de résultat : 0.37464726 0.008410811 0.36294508 0.9819035 0.9982327 0.2542473 0.7204915 0.52173376 0.94769883 0.7458367 0.70877224 0.2125029 0.7863865 0.22088677 0.8084339 0.76560336 0.94098556 0.81110626 0.085951984 0.12518334 Si on veut obtenir des entiers, on modifie le programme en conséquence et on fait appel à la méthode nextint() qui génère un dans des entiers possibles. 29

Fichier UtilObjet2.java import java.util.random ; class Objet { int[] t ; Objet() { t = new int[20] ; Random r = new Random(); for (int i = 0 ; i < 20 ; i++) { t[i]=r.nextint(); void affiche() { for (int i = 0 ; i < 20 ; i++) { System.out.println(t[i]); public class UtilObjet2 { public static void main(string[] args) { Objet o = new Objet(); o.affiche(); Un exemple de résultat : 1106836022-727453113 1406092303 911562671-1133440582 -1386178611-1588036922 -994776228 1092643285 1158792337 1429772425-498695102 341520753-1052563006 -674535242 789254811 1820655005 1633617820-1003275755 -1409624375 Si on veut obtenir des entiers compris entre 0 et m (0, m ), on fait appel à la méthode nextint(m). Exemple ci-dessous avec des entiers entre 0 (compris) et 50 (exclu) : UtilObjet3.java Fichier UtilObjet3.java import java.util.random ; class Objet { int[] t ; Objet() { t = new int[20] ; Random r = new Random(); for (int i = 0 ; i < 20 ; i++) { t[i]=r.nextint(50); void affiche() { for (int i = 0 ; i < 20 ; i++) { System.out.println(t[i]); public class UtilObjet3 { public static void main(string[] args) { Objet o = new Objet(); o.affiche(); Un exemple de résultat : 42 7 13 0 35 40 43 17 8 29 26 4 34 49 7 47 28 48 36 46 On peut obtenir un entier de n importe quel intervalle [a, b[ par t[i]=... 30

Le paquetage java.text Fournit des classes pour le traitement des Il contient notamment les classes DecimalFormat, DecimalFormatSymbol permettant d afficher de manière variée des Exemple : programme UtilFormat.java import java.text.* ; public class UtilFormat { public static void main(string args[]) { double d = 12556125.458997 ; System.out.println("0 : " + d) ; DecimalFormat df = new DecimalFormat() ; DecimalFormatSymbols dfs = df.getdecimalformatsymbols(); dfs.setgroupingseparator(' ') ; df.setdecimalformatsymbols(dfs); System.out.println("1 : " + df.format(d)) ; df.applypattern("#,###,##0.00 ") ; System.out.println("2 : "+df.format(d)) ; Exécution : 0 : 1.2556125458997E7 1 : 12 556 125,459 2 : 12 556 125,46 3 : 12 556 125,46 Analyse du programme : System.out.println("0 : " + d) ; affichage DecimalFormat df = new DecimalFormat() ; on crée... DecimalFormatSymbols dfs = df.getdecimalformatsymbols(); on récupère dfs.setgroupingseparator(' ') ; dans dfs, on choisit... df.setdecimalformatsymbols(dfs); on réassocie System.out.println("1 : "+df.format(d)); résultat df.applypattern("#,###,##0.00 ") ; on ajoute System.out.println("2 : "+df.format(d)); résultat 31