0% ont trouvé ce document utile (0 vote)
51 vues9 pages

TP Java : Correction et Exercices

Ce document contient la correction d'une série d'exercices sur les bases du langage Java. Il présente sept exercices avec leur énoncé et leur correction sous forme de code Java. Les exercices portent sur des concepts comme les classes, les attributs, les méthodes, les constructeurs ou l'utilisation de packages et de classes.

Transféré par

Aymen melki
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
51 vues9 pages

TP Java : Correction et Exercices

Ce document contient la correction d'une série d'exercices sur les bases du langage Java. Il présente sept exercices avec leur énoncé et leur correction sous forme de code Java. Les exercices portent sur des concepts comme les classes, les attributs, les méthodes, les constructeurs ou l'utilisation de packages et de classes.

Transféré par

Aymen melki
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

TP Programmation OO – 2SE |

AYMEN MELKI TD3 – TP5

Correction Série TP N°:1 


Éléments de base du langage JAVA 

Objectif : Le but de ce TP est de vous familiariser avec l'environnement de


développement sur lequel vous allez travailler et de maitriser la syntaxe de base du langage JAVA. 

Exercice 1: 

Ce code compile-t-il et, si non, quelle(s) erreur(s) le compilateur va-t-il indiquer? 


class Toto{ 
int toto = 0; 
Toto())


toto = toto + 1; 

public static void main (String[] args)



Toto t1 = new Toto(); 
Toto t2 = new Toto(); 
[Link]("Toto : " +
toto); } 
}

REPONSE :
Non, ce code ne compile pas. Le compilateur va indiquer plusieurs
erreurs :
1. Le constructeur de la classe Toto est mal défini, car il n'a pas de parenthèses avant
l'accolade ouvrante
2. L'expression toto = toto + 1; est en dehors de toute méthode ou constructeur et
ne peut donc pas être évaluée
3. La variable toto est définie comme une variable d'instance de la classe Toto

class Toto{
int toto = 0;
Toto() {
toto = toto + 1;
TP Programmation OO – 2SE |
AYMEN MELKI TD3 – TP5

}
public static void main (String[] args) {
Toto t1 = new Toto();
Toto t2 = new Toto();
[Link]("Toto : " + [Link]);
}
}

Exercice 2: 
Écrire une classe nommée «< Carre » servant à calculer la racine carrée d'un
nombre réel de type double. On peut utiliser le package [Link].

REPONSE :
Voici une implémentation possible de la classe Carre qui utilise la méthode sqrt() de la
classe Math pour calculer la racine carrée d'un nombre réel :
---------------------------------------------------------------------------------------------------------------------------
public class Carre {
public static double racineCarree(double x) {
return [Link](x);
}
}

---------------------------------------------------------------------------------------------------------------------------

public class Main {


public static void main(String[] args) {
double x = 9.0;
double racine = [Link](x);
[Link]("La racine carrée de " + x + " est " +
racine);
}
}
---------------------------------------------------------------------------------------------------------------------------

Exercice 3: 

Écrivez une classe nommée «< Somme » qui permet de lire deux nombres à partir de
l'utilisateur, puis de calculer leur somme. 

REPONSE 
TP Programmation OO – 2SE |
AYMEN MELKI TD3 – TP5

---------------------------------------------------------------------------------------------------------------------------
public class Somme {
public static void main(String[] args) {
Scanner scanner = new Scanner([Link]);

[Link]("Entrez le premier nombre : ");


double premierNombre = [Link]();

[Link]("Entrez le deuxième nombre : ");


double deuxiemeNombre = [Link]();

double somme = premierNombre + deuxiemeNombre;

[Link]("La somme de " + premierNombre + " et " + deuxiemeNombre + " est


" + somme);
}
}
---------------------------------------------------------------------------------------------------------------------------

Exercice 4: 

Créer une classe nommée << Perimetre_Rectangle » qui lit la longueur et la largeur d'un rectangle en
entrée et calcule ensuite son périmètre. Périmètre = 2*(longueur + largeur) 

REPONSE :
classe Perimetre_Rectangle qui lit la longueur et la largeur d'un rectangle en entrée et
calcule son périmètre :
------------------------------------------------------------------------------------------------------------------
public class Perimetre_Rectangle {
public static void main(String[] args) {
Scanner scanner = new Scanner([Link]);

[Link]("Entrez la longueur du rectangle : ");


double longueur = [Link]();
TP Programmation OO – 2SE |
AYMEN MELKI TD3 – TP5

[Link]("Entrez la largeur du rectangle : ");


double largeur = [Link]();

double perimetre = 2 * (longueur + largeur);

[Link]("Le perimetre du rectangle de longueur " + longueur + " et de largeur


" + largeur + " est " + perimetre);
}
}
---------------------------------------------------------------------------------------------------------------------------

Exercice 5 : 
Créer une classe nommée « Conversion » qui lit la longueur en centimètres en entrée et la
convertit ensuite en mètres et kilomètres.

REPONSE :

public class Conversion {


public static void main(String[] args) {
Scanner scanner = new Scanner([Link]);

[Link]("Entrez une longueur en centimètres : ");


double longueurCm = [Link]();

double longueurM = longueurCm / 100.0; // conversion en mètres


double longueurKm = longueurCm / 100000.0; // conversion en kilomètres

[Link](longueurCm + " cm équivaut à " + longueurM + " mètres et " +


longueurKm + " kilomètres.");
}
}
---------------------------------------------------------------------------------------------------------------------

Exercice 6: 

Créer une classe nommée «< Etudiant » et compléter le code de cette classe en lui ajoutant : 
Un attribut de type String nommé << nom
>> ; 
TP Programmation OO – 2SE |
AYMEN MELKI TD3 – TP5

Un constructeur public qui a un paramètre de type String servant à initialiser le nom de l'étudiant ; Une
méthode publique sans paramètre et qui ne renvoie rien, nommée travailler, qui écrit à l'écran, si le
nom de l'étudiant a pour nom toto : « toto se met au travail ! ». Pour cela, il faut utiliser l'instruction:
[Link]([Link] + " se met au travail !"); 
Une méthode publique sans paramètre et qui ne renvoie rien, nommée seReposer, qui écrit à
l'écran, si le nom de l'étudiant a pour nom toto : « toto se repose >> 
Vous allez ensuite créer parallèlement à la classe << Etudiant », une classe << TestEtudiant >> (dans le
paquetage) contenant une méthode main qui : 


TP Programmation OO – 2SE | Dr. Hajer
Nabli 

Crée un étudiant (instance de la classe Etudiant) en lui donnant un nom écrit directement dans le 
fichier source; 
Invoque la méthode travailler de l'étudiant créé 

Invoque la méthode seReposer de l'étudiant créé

REPONSE :
 implémentation de la classe Etudiant :

public class Etudiant {


private String nom;

public Etudiant(String nom) {


[Link] = nom;
}

public void travailler() {


if ([Link]("toto")) {
[Link]([Link] + " se met au travail !");
} else {
[Link]([Link] + " travaille.");
}
}

public void seReposer() {


if ([Link]("toto")) {
[Link]([Link] + " se repose.");
} else {
TP Programmation OO – 2SE |
AYMEN MELKI TD3 – TP5

[Link]([Link] + " se repose aussi.");


}
}
}

 implémentation de la classe TestEtudiant :

public class TestEtudiant {


public static void main(String[] args) {
Etudiant etudiant = new Etudiant("toto");
[Link]();
[Link]();
}
}

---------------------------------------------------------------------------------------

Exercice 7: 

Soit le programme
suivant : 

class MaClasse { 
private double a; 
public double b; 
public double
c; 
public double delta=0; 

public MaClasse (int x, int y, int z) { a=x; b=y;


z=c; } 

public MaClasse ()
{} 

public void Delta() {delta=[Link](b,2)-


4*a*c} 

public void Solution()



Delta(); 
if ((a==0)&&(b==0)) [Link]("pas de
solution"); 
if ((a==0)&&(b!=0)) [Link]("la solution est
:+"c/b); if ((a!=0)&&(b!=0)) 
if((delta>0)||(delta==0)) { 
TP Programmation OO – 2SE |
AYMEN MELKI TD3 – TP5

}
else 
[Link]("la première solution est :"+((-[Link](delta))/(2*a)));
[Link]("la deuxième solution est :"+((-b+[Link](delta))/(2*a))); 

[Link]("pas de
solution"); 

public static void main(string[] args) { //Méthode main pour


le test 
MaClasse x=new MaClasse
(0.5,2,1); 
[Link]()

MaClasse y=new MaClasse
(); 
y.a=1; 
y.b=2; 
y.c=1; 
[Link]()



1. Trouvez et expliquez les erreurs dans ce programme.
2. Exécutez ce programme avec des exemples différents.
3. Déterminez que fait ce programme. 

REPONSE :
1. Erreurs dans le programme:

 La méthode Delta() ne contient pas de point-virgule à la fin de la ligne delta=[Link](b,2)-4ac,


ce qui provoque une erreur de syntaxe.
 Dans le constructeur MaClasse(int x, int y, int z), z devrait être c, sinon l'attribut c ne sera pas
initialisé correctement.
 Dans la méthode Solution(), l'expression "[Link]("la solution est :+"c/b);" contient une
erreur de syntaxe, car il manque une double citation après le signe "+".
 Dans la méthode Solution(), le cas où delta est égal à zéro n'est pas pris en compte. En effet, la
condition delta>0||(delta==0) n'est pas suivie d'une instruction, ce qui entraînera une erreur de
syntaxe.
 Dans la méthode Solution(), la condition pour vérifier si a et b sont égaux à zéro est incorrecte.
Elle doit être écrite comme suit: if ((a==0)&&(b==0))

2. Exécution du programme avec des exemples différents:

------------------------------------------------------------------------------------------------------------------
class MaClasse {
private double a;
public double b;
public double c;
TP Programmation OO – 2SE |
AYMEN MELKI TD3 – TP5

public double delta=0;

public MaClasse (double x, double y, double z) {


a=x;
b=y;
c=z;
}

public MaClasse (){}

public void Delta() {


delta=[Link](b,2)-4*a*c;
}

public void Solution() {


Delta();
if ((a==0)&&(b==0))
[Link]("pas de solution");
if ((a==0)&&(b!=0))
[Link]("la solution est : "+c/b);
if ((a!=0)&&(b!=0)) {
if((delta>0)||(delta==0)) {
[Link]("la première solution est : "+((-[Link](delta))/(2*a)));
[Link]("la deuxième solution est : "+((-b+[Link](delta))/(2*a)));
} else {
[Link]("pas de solution");
}
}
}

public static void main(String[] args) {


//Méthode main pour le test
MaClasse x=new MaClasse (0.5,2,1);
[Link]();

MaClasse y=new MaClasse ();


y.a=1;
y.b=2;
y.c=1;
[Link]();
}
}
---------------------------------------------------------------------------------------------------------------

 Résultat de l'exécution :
la première solution est : -3.0
la deuxième solution est : -1.0
la première solution est : -1.0
la deuxième solution est : -1.0

3. Fonctionnement du programme:
TP Programmation OO – 2SE |
AYMEN MELKI TD3 – TP5

Le programme permet de calculer les solutions d'une équation du second degré de la


forme ax²+bx+c=0. Il prend en entrée les valeurs des coefficients a, b et c et utilise la
méthode Solution() pour afficher les solutions de l'équation.

Vous aimerez peut-être aussi