Algorithmique et programmation avec Java (NFA002)



Documents pareils
Corrigés des premiers exercices sur les classes

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

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

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

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse

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

Plus petit, plus grand, ranger et comparer

Le gestionnaire de SMS

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

Fluctuation d une fréquence selon les échantillons - Probabilités

Corrigé des exercices sur les références

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Cours 1: Java et les objets

Consigne : je remplis le tableau en tenant compte des informations de la ligne supérieure et de la colonne de gauche (droite pour les gauchers)

Premiers Pas en Programmation Objet : les Classes et les Objets

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Traduction des Langages : Le Compilateur Micro 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

Exercices de dénombrement

AGASC / BUREAU INFORMATION JEUNESSE Saint Laurent du Var Tel : bij@agasc.fr Word: Les tableaux.

Chapitre VI- La validation de la composition.

Premier cours d informatique

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

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

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

TP : Gestion d une image au format PGM

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

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

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

Fiche pédagogique : ma famille et moi

Probabilités. Une urne contient 3 billes vertes et 5 billes rouges toutes indiscernables au toucher.

TP, première séquence d exercices.

Initiation à Excel. Frédéric Gava (MCF)

Cours 1 : Qu est-ce que la programmation?

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Probabilité. Table des matières. 1 Loi de probabilité Conditions préalables Définitions Loi équirépartie...

Numbers en EPS UN TUTORIEL POUR LA! NOUVELLE VERSION DE NUMBERS EST! DISPONIBLE SUR TICEPS.FREE.FR. ticeps.free.fr

Auto-évaluation Programmation en Java

Chapitre 10. Les interfaces Comparable et Comparator 1

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

F7n COUP DE BOURSE, NOMBRE DÉRIVÉ

Programmer en JAVA. par Tama

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

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

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

Créer un album photo

La Clé informatique. Formation Excel XP Aide-mémoire

Les structures de données. Rajae El Ouazzani

Unité 2 Leçon 2 Les permutations et les combinaisons

LES TOUT PREMIERS PAS

Licence Sciences et Technologies Examen janvier 2010

Programmation par les Objets en Java

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

Manuel d utilisation NETexcom

[WINDOWS 7 - LES FICHIERS] 28 avril Logiciel / Windows

315 et 495 sont dans la table de 5. 5 est un diviseur commun. Leur PGCD n est pas 1. Il ne sont pas premiers entre eux

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

Utiliser ma messagerie GMAIL

UML (Diagramme de classes) Unified Modeling Language

EVALUATIONS MI-PARCOURS CM2

TD/TP PAC - Programmation n 3

Exercices sur le chapitre «Probabilités»

Solutions du chapitre 4

Classes et Objets en Ocaml.

Séquence 9. Étudiez le chapitre 11 de physique des «Notions fondamentales» : Physique : Dispersion de la lumière

Programmation Objet - Cours II

Définitions. Numéro à préciser. (Durée : )

alg - Classes, instances, objets [oo] Exercices résolus

Utilisation du client de messagerie Thunderbird

Clé USB. Quel type de données peut contenir une clé USB?

PROBABILITÉS CONDITIONNELLES

Troisième projet Scribus

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

Les structures. Chapitre 3

Ecran : Processeur : OS : Caméra : Communication : Mémoire : Connectique : Audio : Batterie : Autonomie : Dimensions : Poids : DAS :

Les nombres entiers. Durée suggérée: 3 semaines

TP 1 Prise en main de l environnement Unix

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Notion de fonction. Série 1 : Tableaux de données. Série 2 : Graphiques. Série 3 : Formules. Série 4 : Synthèse

Utilisation d objets : String et ArrayList

1 Recherche en table par balayage

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Ce rêve est devenu réalité.

Excel 2007 Niveau 3 Page 1

SOMMAIRE GUIDE D UTILISATION DU WEBMAIL. vous guide

Automatisation d'une Facture 4. Liste Déroulante Remises Case à cocher Calculs

Langage Java. Classe de première SI

Le langage C. Séance n 4

Dragon Naturally Speaking 13

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 )

Cours de Systèmes d Exploitation

TD/TP PAC - Programmation n 3

Guide d utilisation 2012

Poker. A rendre pour le 25 avril

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

Encadré par : Michel SIMATIC

Exercices sur les interfaces

I. Introduction aux fonctions : les fonctions standards

Bases Java - Eclipse / Netbeans

Transcription:

Algorithmique et programmation avec Java (NFA002) Deuxième session 13 septembre 2012 Aucun document n est autorisé. Le barème est donné à titre indicatif. Exercice 1 : listes (4 points) Etudiez le programme suivant, qui utilise les deux classes ListeIter et ElementListe vues en cours et données en annexe du présent sujet. p u b l i c c l a s s T e s t { p u b l i c s t a t i c void main ( S t r i n g [ ] arguments ){ L i s t e I t e r l a l i s = new L i s t e I t e r ( ) ; l a l i s. a j o u t e r A u D e b u t ( 1 2 ) ; l a l i s. a j o u t e r A u D e b u t ( 8 ) ; l a l i s. a j o u t e r A u D e b u t ( 5 ) ; l a l i s. a j o u t e r A u D e b u t ( 1 0 ) ; E l e m e n t L i s t e e l t = l a l i s. g e t P r e m i e r ( ) ; e l t = e l t. g e t S u i v a n t ( ) ; e l t = e l t. g e t S u i v a n t ( ) ; T e r m i n a l. e c r i r e I n t l n ( e l t. g e t V a l e u r ( ) ) ; T e r m i n a l. e c r i r e I n t l n ( e l t. g e t S u i v a n t ( ). g e t V a l e u r ( ) ) ; 1. faites un schéma représentant les valeurs des variables lalis et elt à la fin de l exécution de la méthode main. Ce schéma représentera les objets par des rectangles et les références par des flèches. 2. qu affiche ce programme lors de son exécution? Aucune justification n est demandée. Exercice 2 : objets et références (3 points) Etudiez le programme suivant. c l a s s Compteur { p r i v a t e i n t x ; Compteur ( i n t n ){ x=n ; void i n c r ( ) { x ++; i n t getx ( ) { return x ; p u b l i c c l a s s Truc { 1

p u b l i c s t a t i c void main ( S t r i n g [ ] a r g s ){ Compteur c1, c2 ; Compteur [ ] t a b = new Compteur [ 3 ] ; c1 = new Compteur ( 5 ) ; t a b [ i ]=new Compteur ( i 1 0 ) ; c2 = t a b [ 0 ] ; t a b [ 2 ] = t a b [ 0 ] ; c1. i n c r ( ) ; c2. i n c r ( ) ; t a b [ i ]. i n c r ( ) ; T e r m i n a l. e c r i r e I n t l n ( c1. getx ( ) ) ; T e r m i n a l. e c r i r e I n t l n ( c2. getx ( ) ) ; T e r m i n a l. e c r i r e I n t l n ( t a b [ i ]. getx ( ) ) ; 1. combien d objets de type Compteur sont créés dans ce programme? (justifiez en quelques lignes). 2. qu affiche ce programme? (aucune justification demandée) 3. combien d objets de type Compteur sont accessibles à la fin du programme? Rappel : un objet est accessible s il existe une expression java pour le désigner. Exercice 3 : récursivité (3 points) On définit une fonction f au moyen de la définition par cas suivante : f(x, 0) = 1 f(x, y) = y f(x, y 1) si y > 0 f(x, y) n est pas définie si y < 0 Cette définition est une définition récursive parce que le deuxième cas utilise f à gauche et à droite de l égalité. 1. écrivez une méthode en java implémentant la fonction f de façon récursive. 2. que calcule cette fonction? (réponse en une ou deux phrases) Exercice 4 : structures de données (5 points) On veut représenter un jeu de dames. Ce jeu se joue sur un damier qui est un plateau de 10 colonnes et 10 lignes (100 cases). Les cases sont alternativement blanches et noires. Les pièces sont posées sur des cases noires. Il y a deux types de pièces : les pions et les dames, et deux couleurs de pièces : noire et blanche. Chaque joueur a les pièces d une couleur. 2

FIGURE 1 damier vide et damier en cours de partie Question 1 : les pièces On veut utiliser l héritage pour définir un type Java comprenant les objets pions et les objets dames. Pour cela, il faut définir deux ou trois classes avec une d entre elles qui est la classe mère ou superclasse de l autre ou des deux autres. Les pions et les dames ont en commun d avoir une couleur (blanche ou noire), d être sur une case noire et de se déplacer en diagonale. Mais les pions ne peuvent se déplacer que d une case et dans deux directions alors que les dames peuvent se déplacer de plusieurs cases dans quatre directions. Donnez le squelette des deux ou trois classes à écrire avec leurs variables d instance, leurs constructeurs, une méthode qui détermine si un déplacement est possible et une méthode qui réalise un déplacement. Pour écrire cela, vous supposerez que les cases du damier sont identifiées par deux coordonnées x et y de type int. Vous ne donnerez pas le code des méthodes, mais pour chaque méthode vous donnerez son nom, le type des paramètres et du résultat et si la méthode lève une exception. Vous ferez attention aux variables et méthodes qui sont héritées et à celle qui doivent être ajoutées ou redéfinies dans les sous-classes. Question 2 : damier et tableaux On veut représenter le damier par un tableau ou plusieurs tableaux à deux dimensions, les indices des deux dimensions donnant les coordonnées des cases. Laquelle des trois propositions suivantes est vraie : 1. grâce à l héritage, on peut utiliser le type de la super-classe ou classe mère comme type pour les cases du tableau et cela permet de mettre à la fois des pions et des dames. 2. grâce à l héritage, on peut utiliser le type de la sous-classe ou classe fille comme type pour les cases du tableau et cela permet de mettre à la fois des pions et des dames. 3. on ne peut de toute façon pas mettre des pions et des dames dans le même tableau. Il faut deux tableaux différents, un pour les pions l autre pour les dames. 3

Question 3 : cases vides Dans le tableau, comment va-t-on représenter les cases vides? Question 4 : cases blanches On veut à présent une représentation qui distingue les cases noires qui peuvent être vide ou contenir une pièce et les cases blanches qui sont nécessairement vides. Comment peut-on faire? Donnez les déclarations de variables et le code java qui représentent un damier vide (sans pièce dessus). Indice : on peut représenter chaque case du tableau par un objet. Exercice 5 : courses de chevaux (5 points) On veut réaliser un petit jeu où trois chevaux font une course sur un tapis de jeu comportant 80 cases. Le premier à franchir la ligne d arrivée a gagné. A chaque tour, la distance parcourue par chaque cheval est déterminée par un lancer de dé (valeur entre 1 et 6). Il y a un cheval rouge, un cheval bleu et un cheval jaune. Le programme dispose d un affichage en mode texte où les chevaux sont représentés par la première lettre de leur couleur (r pour rouge, b pour bleu, j pour jaune) les cases vides par un espace et la ligne d arrivée par un point d exclamation. Entre chaque tour, le programme affiche la position courante et attend que l utilisateur tape sur la touche entree. Ecrivez un programme Java respectant ces spécifications. Pour attendre la frappe de la touche entree, vous pouvez utiliser l instruction Terminal.lireString. Pour le lancer de dé, vous pouvez utiliser la méthode suivante : s t a t i c i n t l a n c e r D e ( ) { return ( i n t ) ( Math. random ( ) 6 + 1 ) ; A chaque appel, cette méthode renvoie un nombre entier compris entre 1 et 6. Annexe : les classes ElementListe et ListeIter p u b l i c c l a s s E l e m e n t L i s t e { p r i v a t e i n t v a l e u r ; p r i v a t e E l e m e n t L i s t e s u i v a n t ; p u b l i c E l e m e n t L i s t e ( i n t v a l e u r, E l e m e n t L i s t e s u i v a n t ) { t h i s. v a l e u r = v a l e u r ; t h i s. s u i v a n t = s u i v a n t ; p u b l i c E l e m e n t L i s t e ( i n t v ) { t h i s. v a l e u r = v ; t h i s. s u i v a n t = n u l l ; p u b l i c i n t g e t V a l e u r ( ) { return v a l e u r ; p u b l i c void s e t V a l e u r ( i n t v a l e u r ) { t h i s. v a l e u r = v a l e u r ; 4

p u b l i c E l e m e n t L i s t e g e t S u i v a n t ( ) { return s u i v a n t ; p u b l i c void s e t S u i v a n t ( E l e m e n t L i s t e s u i v a n t ) { t h i s. s u i v a n t = s u i v a n t ; p u b l i c c l a s s L i s t e I t e r { E l e m e n t L i s t e p r e m i e r ; p u b l i c E l e m e n t L i s t e g e t P r e m i e r ( ) { return p r e m i e r ; p u b l i c void a j o u t e r A u D e b u t ( i n t v ) { E l e m e n t L i s t e a n c i e n P r e m i e r = p r e m i e r ; p r e m i e r = new E l e m e n t L i s t e ( v, a n c i e n P r e m i e r ) ;... 5