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



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

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Programmer en JAVA. par Tama

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

Cours 1: Java et les objets

TP, première séquence d exercices.

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

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

TP1 : Initiation à Java et Eclipse

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

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

Premiers Pas en Programmation Objet : les Classes et les Objets

Utilisation d objets : String et ArrayList

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

TD/TP PAC - Programmation n 3

Programmation avec des objets : Cours 7. Menu du jour

Corrigés des premiers exercices sur les classes

Java Licence Professionnelle CISII,

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

TD/TP PAC - Programmation n 3

Corrigé des exercices sur les références

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

TP1. Outils Java Eléments de correction

Java Licence Professionnelle CISII,

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

Langage Java. Classe de première SI

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

Chapitre 10. Les interfaces Comparable et Comparator 1

Programmation par les Objets en Java

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Traduction des Langages : Le Compilateur Micro Java

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

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

Programmation Orientée Objet Java

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

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

Une introduction à Java

as Architecture des Systèmes d Information

Définition des Webservices Ordre de paiement par . Version 1.0

Programme Compte bancaire (code)

I. Introduction aux fonctions : les fonctions standards

Bases Java - Eclipse / Netbeans

Java c est quoi? Java pourquoi?

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

Package Java.util Classe générique

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

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

Plateforme PAYZEN. Définition de Web-services

Création d objet imbriqué sous PowerShell.

Programmation en Java IUT GEII (MC-II1) 1

Exercices sur les interfaces

Projet de programmation (IK3) : TP n 1 Correction

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

INITIATION AU LANGAGE JAVA


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

Programmation Orientée Objet - Licence TIS CM8/9. Rappel sur la séance précédente. Lancelot Pecquet Lancelot.Pecquet@math.univ-poitiers.

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Présentation du langage et premières fonctions

TP1 : Initiation à Java et Eclipse

Algorithmique et Programmation, IMA

TP 1. Prise en main du langage Python

Chapitre 2. Classes et objets

2. Comprendre les définitions de classes

Auto-évaluation Programmation en Java

Programmation Par Objets

Programmation Orientée Objet application au langage Java Version Novembre 2007

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 )

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Le langage C. Séance n 4

Notions fondamentales du langage C# Version 1.0

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

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

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Poker. A rendre pour le 25 avril

Programmation Objet I

Algorithmes récursifs

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

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

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

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

PROGRAMMATION PAR OBJETS

STAGE IREM 0- Premiers pas en Python

Apprendre Java en 154 minutes

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

Algorithmique et programmation : les bases (VBA) Corrigé

Environnements de développement (intégrés)

INF 321 : mémento de la syntaxe de Java

Les structures de données. Rajae El Ouazzani

Programmation Objet - Cours II

.NET - Classe de Log

Introduction au langage C

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

Les chaînes de caractères

Un ordonnanceur stupide

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

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

Transcription:

Université Paris 7 Programmation Objet Licence Bio Informatique Année 2004-2005 TD n 1 - Correction Premiers pas Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... 1. Enregistrez le programme suivant dans le fichier Bonjour.java. // fichier Bonjour.java public class Bonjour{ // affiche Bonjour! sur la console et passe a la ligne System.out.println("Bonjour!") ; 2. La commande javac permet de compiler un programme écrit en java vers du bytecode interprétable par la machine virtuelle java. Utilisez-la avec votre programme source. javac Bonjour.java Regardez quel est le fichier créé par cette opération. 3. La commande java permet de lancer une machine virtuelle java pour l interprétation d un fichier de bytecode java disposant d un point d entrée (la méthode main). Lancez votre premier programme en tapant java Bonjour. 4. On peut passer des arguments lors de l exécution d un programme. Lors de l écriture d un programme, les arguments de la ligne de commande sont représentés par le tableau de chaînes de caractères en paramètre de la méthode main. Le nombre de ces arguments est la longueur du tableau. A l indice 0 du tableau, il y a le premier argument. Modifiez le programme précédent pour qu il dise bonjour à chaque personne dont le nom sera passé en paramètre lors de l exécution du programme. aide : l opérateur + permet de concatener deux chaînes de caractères. // fichier Bonjour.java public class Bonjour{ for ( int i = 0 ; i < (argv.length) ; i++) System.out.println("Bonjour " + argv[i] + "!") ; Exercice 2 Première classe On vous propose d enrichir le programme suivant : 1

// fichier TestPaire.java class Paire{ // premier element de la paire private int premier ; // deuxieme element de la paire private int second ; public class TestPaire{ Paire p = new Paire() ; System.out.println(p) ; La classe Paire contient deux attributs privés (mot clé private) : cela signifie que ces attributs ne peuvent pas être utilisés directement de l extérieur de la classe. Pour vous en convaincre, ajoutez la ligne p.premier = 0 ; dans la méthode main et essayez de compiler le programme. La classe TestPaire contient la méthode main qui est le point d entrée du programme. Cette méthode vous permet de tester le fonctionnement de la classe Paire. Pour l instant, on y crée une référence vers un nouvel objet Paire et on demande son affichage sur la console. Vous pouvez compiler et interpréter ce programme tel quel. 1. Ajoutez à cette classe une méthode de signature public String tostring() qui retourne la valeur des attributs de la paire dans une chaîne de caractère. Compilez et executez à nouveau le programme. Qu est-ce qui a changé? 2. Ajoutez à cette classe un deuxième constructeur qui prend en paramètre des entiers pour initialiser les champs premier et second, ainsi que les lignes de code permettant de tester ce constructeur dans la méthode main. Pourquoi faut-il ajouter aussi un constructeur sans paramètres? 3. Ajoutez à cette classe des méthodes getpremier et getsecond qui retournent la valeur des attributs de la paire. Ces méthodes permettent d utiliser la valeur des attributs de la paire même si on ne peut pas y accéder directement. Testez ces méthodes dans la méthode main. 4. Ajoutez à cette classe des méthodes setpremier et setsecond qui modifient la valeur des attributs de la paire. Testez ces méthodes dans la méthode main. // fichier TestPaire.java class Paire{ // premier element de la paire private int premier ; // deuxieme element de la paire private int second ; // constructeur par défaut public Paire(){ // constructeur qui initialise les deux attributs de la paires public Paire(int premier, int second){ this.premier = premier ; 2

this.second = second ; public void setpremier(int premier){ this.premier = premier ; public void setsecond(int second){ this.second = second ; public int getpremier(){ return premier ; public int getsecond(){ return second ; public String tostring(){ return ("premier " + premier + " second " + second) ; public class TestPaire{ Paire p1 = new Paire() ; Paire p2 = new Paire(2,3) ; System.out.println(p1) ; System.out.println(p2) ; System.out.println(p2.getPremier()) ; System.out.println(p2.getSecond()) ; p1.setpremier(1) ; p1.setsecond(1) ; System.out.println(p1) ; Exercice 3 Le but de cet exercice est d écrire une classe représentant une pile d entiers, en utilisant un tableau. Vous définirez cette classe ainsi qu une classe contenant le main, pour tester votre code au fur et à mesure où vous l écrivez. 1. La classe Pile a un attribut contenupile qui est un tableau d entiers. Elle a également un attribut position qui est un entier contenant l indice du tableau considéré comme étant le sommet de la pile. 2. Le constructeur de la pile prend en paramètre un entier qui représentera la capacité de la pile, c est à dire le nombre de cases du tableau. 3. Définir une méthode empty qui renvoie le booléen true si la pile est vide, false sinon. 4. Définir une méthode full qui renvoie le booléen true si la pile est pleine, false sinon. 5. Définir les méthodes push (ajoute un élément au sommet de la pile) et pop (retourne et enlève l élément au sommet de la pile). 6. Définir la méthode tostring qui retourne le contenu de la pile sous forme de chaine de caractère. 3

// fichier Pile.java public class Pile{ private int[] contentpile ; private int position ; Pile(int size){ contentpile = new int[size] ; position = 0 ; public boolean empty(){ return (position == 0) ; public boolean full(){ return (position == contentpile.length) ; public void push(int element){ contentpile[position] = element ; position++ ; public int pop(){ position-- ; return ( contentpile[position] ) ; public String tostring(){ String buffer = "" ; for(int i = 0 ; i< position ; i++) buffer = buffer + " " + contentpile[i] ; return buffer ; //fichier TestPile.java public class TestPile{ // exemples de tests Pile mapile = new Pile(4) ; System.out.println("vide " + mapile.empty()) ; System.out.println("pleine " + mapile.full()) ; mapile.push(0) ; mapile.push(1) ; mapile.push(2) ; mapile.push(3) ; System.out.println("vide " + mapile.empty()) ; System.out.println("pleine " + mapile.full()) ; System.out.println(maPile.pop()) ; 4

Exercice 4 Pour occuper ceux qui ont déjà fini... Les tours de Hanoi Etant donné trois piles, et n entiers tous différents empilés sur la première, les plus petits au dessus des plus grands : un déplacement consiste à choisir une pile A non vide, et à enlever l entier au sommet pour le mettre au sommet d une autre pile B, si le sommet de cette pile n est pas un entier plus petit (sinon, le déplacement est impossible). On veut déplacer tous les entiers de la première pile sur la seconde, en se servant de la dernière. L algorithme proposé est le suivant : Pour déplacer n entiers de la pile A sur la pile C en utilisant la pile B, on déplace(récursivement) n 1 sommets de A vers B, puis on déplace l entier restant sur le sommet de la pile A sur la pile C, et on déplace(récursivement) n 1 sommets de B vers C. 1. Définir une classe Hanoi qui représente le jeu : ses attributs seront trois piles et le nombre d entiers. Définissez d ores et déjà une classe principale et une méthode main pour tester petit à petit votre travail. 2. Définir le constructeur qui initialise le jeu à partir d un nombre d entiers à empiler et initialise les piles dans la situation de départ. 3. Définir la méthode affiche qui affiche le contenu des trois piles sur la console. 4. Définir la méthode privée deplace et la méthode joue qui lance les déplacements. 5. Enfin, finaliser la classe principale et la méthode static main qui à partir d un entier saisi en ligne de commande initialise et lance le jeu. //fichier Hanoi.java public class Hanoi{ Pile depart ; Pile arrivee ; Pile intermediaire ; int nbentiers ; public Hanoi(int nbentiers){ this.nbentiers=nbentiers ; // construction des trois piles depart = new Pile(nbEntiers) ; arrivee = new Pile(nbEntiers) ; intermediaire = new Pile(nbEntiers) ; // remplissage de la pile de départ avec les premiers entiers for(int i = 0; i<nbentiers;i++){ depart.push(i) ; public void affiche(){ System.out.println("Pile de depart :" + depart) ; System.out.println("Pile intermediaire :" + intermediaire) ; System.out.println("Pile d arrivee :" + arrivee) ; private void deplace(pile A,Pile C,Pile B,int n){ if (n!= 0) { deplace(a,b,c,n-1) ; 5

C.push(A.pop()) ; deplace(b,c,a,n-1) ; public void joue(){ deplace(depart,arrivee,intermediaire,nbentiers) ; //fichier JeuHanoi.java public class JeuHanoi{ Hanoi jeu = new Hanoi(4) ; jeu.affiche() ; jeu.joue() ; jeu.affiche() ; 6