Java Licence Professionnelle CISII, 2009-10



Documents pareils
INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Programmer en JAVA. par Tama

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

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

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

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

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

Corrigé des exercices sur les références

as Architecture des Systèmes d Information

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

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

Introduction au langage C

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

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

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

Java Licence Professionnelle CISII,

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

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)

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

Cours 1: Java et les objets

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

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

Programmation en Java IUT GEII (MC-II1) 1

Une introduction à Java


Programmation avec des objets : Cours 7. Menu du jour

PROGRAMMATION PAR OBJETS

1. Langage de programmation Java

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

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

Auto-évaluation Programmation en Java

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Chapitre 10. Les interfaces Comparable et Comparator 1

Projet de programmation (IK3) : TP n 1 Correction

INF 321 : mémento de la syntaxe de Java

ACTIVITÉ DE PROGRAMMATION

Programme Compte bancaire (code)

Utilisation d objets : String et ArrayList

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Package Java.util Classe générique

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

Langage Java. Classe de première SI

Premiers Pas en Programmation Objet : les Classes et les Objets

Les bases de l informatique et de la programmation. École polytechnique

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

UE C avancé cours 1: introduction et révisions

Programmation par les Objets en Java

Cours d initiation à la programmation en C++ Johann Cuenin

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

Programmation Par Objets

Cours d Algorithmique et de Langage C v 3.0

Corrigés des premiers exercices sur les classes

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

TP1 : Initiation à Java et Eclipse

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

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

Conventions d écriture et outils de mise au point

Claude Delannoy. 3 e édition C++

TP, première séquence d exercices.

Informatique / Programmation

Exercices sur les interfaces

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

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

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

COMPARAISONDESLANGAGESC, C++, JAVA ET

Derrière toi Une machine virtuelle!

Algorithmique et Programmation, IMA

Principes des langages de programmation INF 321. Eric Goubault

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

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

Notions fondamentales du langage C# Version 1.0

Corrigé des TD 1 à 5

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Traduction des Langages : Le Compilateur Micro Java

Apprendre Java en 154 minutes

Un ordonnanceur stupide

INITIATION AU LANGAGE JAVA

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

Les structures de données. Rajae El Ouazzani

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

Introduction au langage Java

Langage à objets : JAVA (1)

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

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

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

Java 1.5 : principales nouveautés

Classe Interne, Anonyme & Enumération

Eclipse atelier Java

Introduction. Introduction au langage Java. Un livre de Wikilivres.

Programmation Objet I

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

Java c est quoi? Java pourquoi?

Programmation Orientée Objets Le Langage JAVA

4. Groupement d objets

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Support de cours et TD Programmation Orientée Objet

Cours 14 Les fichiers

Transcription:

Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1

Principe - Les méthodes sont structurées en blocs par les structures de la programmation structurée suites de blocs alternatives répétitions - Un bloc est un ensemble d instructions délimité par { - Les blocs peuvent être emboîtés les uns dans les autres (c) http://www.loria.fr/~tabbone/cours.html 2

Portée des identificateurs - Les blocs définissent la portée des identificateurs - La portée d un identificateur commence à l endroit où il est déclaré et va jusqu à la fin du bloc dans lequel il est défini, y compris dans les blocs emboîtés (c) http://www.loria.fr/~tabbone/cours.html 3

Déclaration des variables localescompléments - Les variables locales peuvent être déclarées n'importe où dans un bloc (pas seulement au début) - On peut aussi déclarer la variable qui contrôle une boucle «for» dans l instruction «for» (la portée est la boucle) : for (int i = 0; i < 8; i++) { s += valeur[i]; (c) http://www.loria.fr/~tabbone/cours.html 4

Portée des identificateurs : Portee1.java - Attention! Java n autorise pas la déclaration d une variable dans un bloc avec le même nom qu une variable d un bloc emboîtant, ou qu un paramètre de la méthode int somme(int init) { int i = init; int j = 0; for (int i=0; i<10; i++) { //duplication de variable locale j += i; intinit= 3; { //duplication de variable locale (c) http://www.loria.fr/~tabbone/cours.html 5

Instructions de contrôle - Alternative «if else» if (expressionbooléenne) bloc-instructions ou instruction else bloc-instructions ou instruction int x = y + 5; if (x % 2 == 0) { type = 0; x++; else type = 1; (c) http://www.loria.fr/~tabbone/cours.html 6

Expression conditionnelle expressionbooléenne? expression1 : expression2 int y = (x % 2 == 0)? x + 1 : x; est équivalent à int y; if (x % 2 == 0) y = x + 1 else y = x; (c) http://www.loria.fr/~tabbone/cours.html 7

Distinction de cas suivant une valeur switch(expression) { case val1: instructions; break;... case valn: instructions; break; default: instructions; - Sans break les instructions du cas suivant sont exécutées! - expression est de type char, byte, short, ou int, ou de type énumération - S il n y a pas de clause default, rien n est exécuté si expression ne correspond à aucun case (c) http://www.loria.fr/~tabbone/cours.html 8

Exemple de switch int nbvoyelles = 0, nba = 0, nbt = 0, nbautre = 0;... switch (lettre) { case 'a' : nba++; case 'e' : // pas d instruction! case 'i' : nbvoyelles++; break; case 't' : nbt++; break; default : nbautre++; (c) http://www.loria.fr/~tabbone/cours.html 9

Répétitions «tant que» while(expressionbooléenne) bloc-instructions ou instruction - do bloc-instructions ou instruction while(expressionbooléenne) (c) http://www.loria.fr/~tabbone/cours.html 10

Répétition for for(init; test; incrément){ instructions; - est équivalent à init; while (test) { nstructions; Incrément (c) http://www.loria.fr/~tabbone/cours.html 11

Exemple de for int somme = 0; for (int i=0; i < tab.length; i++) { somme += tab[i]; System.out.println(somme); (c) http://www.loria.fr/~tabbone/cours.html 12

«for each» - Une nouvelle syntaxe introduite par la version 5 du JDK simplifie le parcours d un tableau - La syntaxe est plus simple/lisible qu une boucle for ordinaire - Attention, on ne dispose pas de la position dans le tableau (pas de «variable de boucle») - On verra par la suite que cette syntaxe est encore plus utile pour le parcours d une «collection» (c) http://www.loria.fr/~tabbone/cours.html 13

Parcours d un tableau String[] noms = new String[50];... // Lire «pour chaque nom dans noms» // «:» se lit «dans» for (String nom : noms) { System.out.println(nom); (c) http://www.loria.fr/~tabbone/cours.html 14

Parcours d un tableau Exemple public class ForeachArray { public static void main(string args[]) { String[] data = { "Toronto", "Stockholm" ; for (String s : data) { System.out.println(s); (c) http://www.loria.fr/~tabbone/cours.html 15

Instructions liées aux boucles - break sort de la boucle et continue après la boucle - continue passe à l itération suivante - break et continue peuvent être suivis d un nom d étiquette qui désigne une boucle englobant la boucle où elles se trouvent (une étiquette ne peut se trouver que devant une boucle) (c) http://www.loria.fr/~tabbone/cours.html 16

Exemple de continue et break int somme = 0; for (int i=0; i < tab.length; i++) { if (tab[i] == 0) break; if (tab[i] < 0) continue; somme += tab[i]; System.out.println(somme); - Qu affiche ce code avec le tableau 1 ; 2 ; 5 ; -1 ; 0 ; 8 ; -3 ; 10? (c) http://www.loria.fr/~tabbone/cours.html 17

Étiquette de boucles bouclewhile: while (pasfini) {... for (int i=0; i < t.length; i++) {... if (t[i] < 0) continue bouclewhile;...... (c) http://www.loria.fr/~tabbone/cours.html 18

Passage des arguments des méthodes - Le passage se fait par valeur (les valeurs des arguments sont recopiées dans l espace mémoire de la méthode) - Attention, pour les objets, la valeur passée est une référence ; donc, si la méthode modifie l objet référencé par un paramètre, l objet passé en argument sera modifié en dehors de la méthode si la méthode change la valeur d un paramètre (type primitif ou référence), ça n a pas d incidence en dehors de la méthode (c) http://www.loria.fr/~tabbone/cours.html 19

Exemple de passage par valeur public class ParValeur{ public static void main (String [] paramètre) { // Déclaration des variables int valeur = 2 ; System.out.println("Valeur = " + valeur + " avant tripler() "); tripler(valeur); System.out.println("Valeur = " + valeur + " apres tripler() "); // fin de main() public static void tripler (int valeur) { System.out.println("Valeur = " + valeur + " dans tripler() "); valeur = 3 * valeur; System.out.println("Valeur = " + valeur + " dans tripler() "); // fin de tripler //fin de class ParValeur

Exemple de passage de paramètres public static void m(int ip, Employe e1p, Employe e2p) { ip = 100; e1p.salaire = 800; e2p = new Employe("Pierre", 900); public static void main(string[] args) { Employe e1 = new Employe("Patrick", 1000); Employe e2 = new Employe("Bernard", 1200); int i = 10; m(i, e1, e2); System.out.println(i + '\n' + e1.salaire+ '\n' + e2.nom); - Que sera-t-il affiché? 10 800.0 Bernard (c) http://www.loria.fr/~tabbone/cours.html 21

main() Employe e1 = new Employe("Patrick", 1000); Employe e2 = new Employe("Bernard", 1200); int i = 10; i 10 e1 e2 Patrick 1000 Bernard 1200 Pile Tas

main(): m(i,e1,e2) m ip e1p 10 e2p Pas de variables locales i e1 10 e2 Patrick 1000 Bernard 1200 Pile Tas

m(): ip = 100; e1p.salaire = 800; e2p = new Employe("Pierre", 900); m ip e1p 100 e2p Pas de variables locales i e1 10 e2 Patrick 1000 Bernard 1200 Pile Tas

m(): ip = 100; e1p.salaire = 800; e2p = new Employe("Pierre", 900); m ip e1p 100 e2p Pas de variables locales i e1 10 e2 Patrick 800 Bernard 1200 Pile Tas

m(): ip = 100; e1p.salaire = 800; e2p = new Employe("Pierre", 900); m ip e1p 100 e2p Pas de variables locales i e1 10 e2 Pierre Patrick 800 Bernard 1200 Pile Tas

main(): System.out.println(i + '\n' + e1.salaire+ '\n' + e2.nom); m Pierre Pas de variables locales i e1 10 e2 Patrick 800 Bernard 1200 Pile Tas

Nombre variable d arguments - Quelquefois il peut être commode d écrire une méthode avec un nombre variable d arguments - L exemple typique est la méthode printf du langage C qui affiche des arguments selon un format d affichage donné en premier argument - Depuis le JDK 5.0, c est possible en Java (c) http://www.loria.fr/~tabbone/cours.html 28

Syntaxe pour arguments variables - A la suite du type du dernier paramètre on peut mettre «...» : - Exemple String... Object... int... (c) http://www.loria.fr/~tabbone/cours.html 29

Traduction du compilateur - Le compilateur traduit ce type spécial par un type tableau i.e. m(int p1, String... params) est traduit par m(int p1, String[] params) - Le code de la méthode peut utiliser params comme si c était un tableau (boucle for, affectation, etc.) (c) http://www.loria.fr/~tabbone/cours.html 30

Exemple public static int max(int... valeurs) { int max = Integer.MIN_VALUE; for (int i : valeurs) { if (i > max) max = i; return max; (c) http://www.loria.fr/~tabbone/cours.html 31

Retour de la valeur d une méthode - return sert à sortir d une méthode en renvoyant une valeur (du type déclaré pour le type retour dans la définition de la méthode) : return i * j; return new Cercle(p, x+y); - return sert aussi à sortir d une méthode sans renvoyer de valeur (méthode ayant void comme type retour) : if (x == 0) return; (c) http://www.loria.fr/~tabbone/cours.html 32

Récursivité des méthodes - Les méthodes sont récursives ; elles peuvent s appeler elles-mêmes : static long factorielle(int n) { if (n == 0) return 1; else return n * factorielle(n - 1); (c) http://www.loria.fr/~tabbone/cours.html 33

Que fait le programme suivant? public class ListeNoeud { private Integer element; private ListeNoeud suivant; public ListeNoeud(Integer i, ListeNoeud l) { element = i; suivant = l; public ListeNoeud(Integer i) { this(i,null); public ListeNoeud getsuivant() { return suivant; public String tostring() { return element.tostring(); public class Liste { private ListeNoeud premier; public Liste() { premier = null; public boolean estvide() { return (premier == null); public void inserer(integer i) { if (estvide()) premier = new ListeNoeud(i); else premier = new ListeNoeud(i,premier); public String tostring() { String s = ""; if (estvide()) return "Vide"; ListeNoeud p = premier; while (p!= null) { s = s + " " + p.tostring(); p = p.getsuivant(); return s; public static void main (String [] args) { Liste l = new Liste(); l.inserer(new Integer(1)); l.inserer(new Integer(2)); l.inserer(new Integer(3)); System.out.println(l);

TD 4 Exercices 1-3 (c) http://www.loria.fr/~tabbone/cours.html 35