Séance Exercices 1. Les exercices suivants sont une série de pointeurs sur les connaissances de base en java. Les connaissances de cette

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

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

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

TP, première séquence d exercices.

ACTIVITÉ DE PROGRAMMATION

as Architecture des Systèmes d Information

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

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

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 )

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

Java Licence Professionnelle CISII,

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

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Chapitre 10. Les interfaces Comparable et Comparator 1

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

Programmer en JAVA. par Tama

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

Systeme d'exploitation

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Programme Compte bancaire (code)

Cours 1: Java et les objets

Projet de programmation (IK3) : TP n 1 Correction

Langage Java. Classe de première SI

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

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

Package Java.util Classe générique

Initiation à la programmation en Python

Exercices sur les interfaces

Programmation par les Objets en Java

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

RMI le langage Java XII-1 JMF

Une introduction à Java

INF 321 : mémento de la syntaxe de Java

Flux de données Lecture/Ecriture Fichiers

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

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

Introduction au langage Java

1. Langage de programmation Java

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Conventions d écriture et outils de mise au point

Java - la plateforme

Utiliser Java sans BlueJ

Premiers Pas en Programmation Objet : les Classes et les Objets

Auto-évaluation Programmation en Java

Utilisation d objets : String et ArrayList

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

Chapitre 2. Classes et objets

Initiation à JAVA et à la programmation objet.

Corrigé des exercices sur les références

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

2 Grad Info Soir Langage C++ Juin Projet BANQUE

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

TP1 : Initiation à Java et Eclipse

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

Programmation Objet Java Correction

Langage à objets : JAVA (1)

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

Diagramme de classes

Programmation Objet I

INITIATION AU LANGAGE JAVA

Recherche dans un tableau

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

TD/TP PAC - Programmation n 3

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

TP1. Outils Java Eléments de correction

Remote Method Invocation en Java (RMI)

Cours Java Native Interface

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

Remote Method Invocation (RMI)

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

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

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

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

La JVM. La machine virtuelle Java. La JVM. La JVM

21 mars Simulations et Méthodes de Monte Carlo. DADI Charles-Abner. Objectifs et intérêt de ce T.E.R. Générer l'aléatoire.

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

I. Introduction aux fonctions : les fonctions standards

OpenPaaS Le réseau social d'entreprise

PROGRAMMATION PAR OBJETS

Introduction à JDBC. Accès aux bases de données en Java

Java DataBaseConnectivity

Java 7 Les fondamentaux du langage Java

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

Synchro et Threads Java TM

Interfaces graphiques avec l API Swing

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

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

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

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

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

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

1.6- Génération de nombres aléatoires

Chapitre I Notions de base et outils de travail

Manuel d'installation

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Java Licence professionnelle CISII,

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)

Transcription:

Séance Exercices 1 Les exercices suivants sont une série de pointeurs sur les connaissances de base en java. Les connaissances de cette première série d'exercices sont fondamentales. Les corrigés sont disponibles, il vous est conseillé de lire le corrigé après chaque question pour pouvoir poursuivre l'exercice. Abordez ceux des exercices qui vous semblent pertinents en sachant que : Ex 1 concerne la création de programme et le rôle de la fonction main Ex 2 concerne l'initialisation de variables et la construction d'objets Ex 3 concerne les chaînes de caractères, le type char et la concaténation. Ex 4 concerne les tableaux d'objets. Ex 5 concerne la création de fonctions pour un objet Ex 6 concerne les structures conditionnelles Ex 7 est plus anecdotique, il vise à trouver les équilibres de Nash à partir d'une matrice de scores. Ex 8 propose l'implémentation d'un petit jeu Ex 1 1- On crée un fichier Test.java qui contient seulement : public class Test Que se passe t'il si on cherche à le compiler? 2- On crée une classe Test qui est la forme minimale que peut avoir une classe : public class Test L'ordre de compilation pour cette classe est javac Test.java, l'ordre d'exécution est java Test. La compilation fonctionne t'elle? Que se passe t'il lorsque on demande à la machine d'exécuter le programme Test en faisant java Test en ligne de commande? Quelle message renvoie la machine? Comment interprétez vous ce message? 3- On modifie la classe Test :

public class Test public static void main(string[] args) à l'identique, on la compile (javac Test.java) puis on l'exécute : java Test. Que constatez vous A l'exécution? Peut-on envisager de faire un programme plus court que celui-ci? 4- On crée une classe Test qui est de la forme : public class Test public static void main(string[] args) System.out.println("Ceci vient du main de Test"); Que donne l'exécution de ce code? Question complémentaire : que donnerait la compilation et l'exécution de ce programme : public class Test public static void main(int args) System.out.println("Ceci vient du main de Test"); Ex 2 1- On veut exécuter le code suivant int i; ActifNegotiable a; Créez une classe Test contenant une fonction main qui exécute ces lignes de code. La compilation fonctionne t'elle?

2- Corrigez l'erreur de la question précédente. On veut que ActifNegotiable soit une classe avec les attributs suivants : double cours; String nom; Créez cette classe de manière à ce qu'elle soit "vue" par la classe Test.java (il existe trois solutions, vous devez en connaître au moins deux à ce stade). 3- Une fois la classe ActifNegotiable définie, on recompile la classe Test et on relance l'exécution des lignes de code de 1- L'exécution provoque t'elle encore une erreur? 4- On modifie le code la fonction main : int i=0; ActifNegotiable a=null; Que se passe t'il à l'exécution de ce code? L'exécution ne provoque plus d'erreur. Comment comprenez vous ce qui apparaît à l'écran? 5- On rajoute une instruction : int i=0; ActifNegotiable a=null; System.out.println(a.cours); Quel affichage constate t-on? Qu'est ce qui vous paraît manquer? Corrigez le code sans éliminer aucune instruction : vous avez juste le droit d'en modifier une. Expliquez précisement l'affichage qui s'en déduit. 6- On veut maintenant qu'il soit impossible de construire un objet ActifFinancier sans lui attribuer une valeur, de sorte que la valeur du cours ne soit pas 0 après la construction de l'objet. 7- int i; ActifNegotiable a; a=new ActifNegotiable(5); System.out.println(a.cours); ActifNegotiable a2=new ActifNegotiable(); Que se passe t'il à l'exécution de ce code? Si finalement on veut pouvoir construire des ActifNegotiable en disposant de leur cours initial ou sans en disposer, comment faire?

Ex 3 0- Quelques élements préliminaires. String est une classe. Elle s'instancie par un constructeur qui prend une chaîne en entrée : String str=new String("Coucou"); Pour cette classe, une autre forme d'instanciation est possible et équivalente : String str="coucou"; Quand on utilise System.out.println("");, on utilise en fait la fonction System.out.println(String str);. Donc String str="coucou"; System.out.println(str) donne le même affichage que System.out.println("Coucou"); 1- Quelle différence faites-vous entre "c", 'c' et c? 2- Dans quelles conditions le test v=="c1" ne provoquera pas d'erreur à la compilation? Qu'en est-il des tests v=='c1' et v==c1? 3- Soit le code suivant, qu'affiche t'il? Pourquoi? char c='a'; char x='a'; boolean bo=(c==x); System.out.println(bo); String str="president"; String str2="president" boolean b=(str==str2); System.out.println(b); Dans le code qui précède combien d'objets String ont été crées? 4- Soit le code suivant, que produit-il? String str=""; int i=7; str+='p'; str+="r"; str+='e'; str+="s"; str+="i"; str+="d"; str+='e'; str+="n"; str+='t'; str+=i; System.out.println(str); Quelle différence faites vous entre String str1=""; et String str2=" "; 5- Concaténation de deux String : String str1="les sanglots longs "; String str2="des violons de l'automne"; String str3=str1+str2; boolean b1=(str3==str1); boolean b2=(str3==str2); System.out.println(b1+" "+b2+" "+str3); Quel affichage produit ce code?

6- Quelle différence faites vous entre "2.55" et 2.55? Comment passer de l'un à l'autre? 7- Création d'une classe de chaines URL, soit une classe de chaine contenant seulement des String commençant par "http://". A la construction des objets, de cette classe, il faut s'assurer de bien avoir une telle chaine. Ex 4 Que donne le code suivant : int[] i=new int[100]; System.out.println(i[5]); A[] a=new A[100]; System.out.println(a[5]); a[6]=new A(); En utilisant une classe minimale A visible par la classe contenant le main : class A Ex 5 On veut créer une classe Utilitaire qui propose une fonction permettant d'obtenir le max entre deux variables de type int, entre deux varaibles de type double, entre deux variables char (la machine dispose d'un ordre total sur les char, on peut ainsi faire des comparaisons de la forme 'c'>'\n', '\n'>'\t'). Combien de fonctions faut il implémenter? Proposez une fonction qui de deux String renvoie la chaine maximale ou la chaine null si jamais les deux chaines ont le même contenu. Proposez une méthode qui renvoie la valeur max au sein d'un tableau de String. Ex 6 On considère l'instruction if(a && b) Est-ce que la machine doit toujours tester la condition logique a et la condition logique b pour évaluer la condition logique (a && b)? Est-ce que la machine teste on non les deux conditions systématiquement? Imaginez une procédure pour le tester. Soit une boucle for(int i=0;i<5;i++), on a des instructions, une condition, des instruction : for(instruction;condition;instruction). Imaginez un moyen d'afficher un message à chaque fois que la condition est testée. Ex 7 Imaginez une fonction qui prend en entrée un tableau double[][] tab. tab est une matrice de jeu telle que tab[i][j] est le score du joueur 1 lorsque le joueur 1 joue i et le joueur 2 joue j. Affichez les équilibres de Nash de la matrice.

Exercice complet jeu On veut créer un programme tel qu'à son exécution, il crée un objet Joueur, que la création de cet objet entraine de demander à l'utilisateur son nom. Le programme poursuit en tirant un entier au hasard. Il demande ensuite à l'utilisateur de rentrez une valeur entière. Le programme indique si la valeur saisie est plus grande ou moins grande que la valeur tirée au hasard et lui demande de rentrer une nouvelle valeur il s'arrete si l'utilisateur a deviné la bonne solution. 1) créez une classe DevineNombre qui contient la fonction main, on ne met pas encore d'instruction pour cette fonction 2) Créez une classe Joueur telle que la création d'un Joueur entraine de lui demander son nom et que la classe Joueur enregistre ce nom. On utilise la classe Lire : expliquer Lire.S 3) Notez les opérations que doit faire la fonction main sans vous préoccuper de comment les faire 4) Implémentez les opérations de la fonction main, en sachant que pour lire un entier, en sachant que pour tirer un entier entre 0 et n-1, il faut : importer la classe Random : import java.util.random; instancier la classe Random : Random alea=new Random(); tirez un nombre au hasard dans [0:n-1] : int i=alea.nextint(n); En sachant égaelment 5) Répertoriez les classes utilisées dans le programme.