Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
http://www.emi.ac.ma/ntounsi/COURS/Java/TD/tdJava2.html
( .pdf ))
1 of 6
//
}
public boolean estVide() {
//
Teste si la pile est vide
return (top < 0);
}
public boolean estPleine() {
// teste si la pile est pleine
// ...
completer ...
}
}; // class Pile
Exercice-1) Ecrire un programme qui lit une chane de caractre et l'imprime inverse.
Algorithme:
Pile p, char c;
lire (c);
Tant que (c != '#')
empiler c sur p;
lire (c)
ftq
Tantque (pile non vide)
c = sommet de p;
crire (c);
dpiler p;
ftq
Indications:
- Crer le programme dans un fichier
TestPile.java
qui
c = Support.readChar();
http://www.emi.ac.ma/ntounsi/COURS/Java/TD/TestPile.java
).
Exercice-2) Ecrire un programme qui lit une un texte contenant une srie de parenthses et qui:
la rencontre du caractre '(' il l'empile sur une pile p
la rencontre du caractre ')' il dpile la pile p
ignore tout autre caractre.
s'arrte la lecture du caractre '#'.
A la fin du texte lu, si la pile est vide l'expression est bien parenthse. Sinon, il y a plus de
parenthses ouvrantes que de parenthses fermantes. Si la pile est vide prmaturment, lors d'un
dpilement, alors il y a plus de parenthses fermantes que de parenthses ouvrantes.
Pile.java
/** .
/**
Classe Java correspondant une pile
Un pile est un objet sur lequel on empile ...
etc...
*/
On peut alors crer les pages documentation de la classe Pile avec la commande
javadoc :
javadoc Pile.java
Un certain nombre de fichiers sont alors crs. L'un des fichiers est
Web principale.
index.html
throws
L'utilisation de cette mthode doit s'attendre, grce une instruction try , une ventuelle leve
d'exception et la capter, grce une instruction catch , pour pouvoir la traiter.
3 of 6
int n = ...
try {
int f = fact(n);
}
catch (ExceptionFactNegatif e) {
System.out.println("Valeur negative pour factorielle");
e.printStackTrace();
}
try indique un bloc d'instructions dans lequel une exception peut tre leve "une erreur peut se
produire".
Le bloc catch contient les instructions excuter dans le cas o un type d'exception s'est produit
dans le try correspondant. Ici, on imprime une message pour la circonstance. catch est
paramtr par l'exception capter. ici objet e de classe ExceptionFactNegatif .
On peut utiliser cet objet e justement, pour suivre la trace de l'exception produite, avec
e.printStackTrace() en plus du message imprimer.
Le rsultat de la squence de programme prcdente excute pour n = -1 est:
Valeur negative pour factorielle
ExceptionFactNegatif
at TestException.fact(TestException.java:17)
at TestException.main(TestException.java:5)
ExceptionFactNegatif
Throwable .
A un mme bloc try peuvent correspondre deux blocs catch . On peut ajouter l'exemple
ci-dessus le cas de factorielle qui dpasse la capacit d'un int . Factorielle 13 est dj 6 227 020
800.
On cre donc une deuxime exception,
class ExceptionFactSuperieur12 extends Throwable {};
et on crira:
try {
int f = fact(n);
}
catch (ExceptionFactNegatif e) {
System.out.println("Valeur negative pour factorielle");
e.printStackTrace();
}
catch (ExceptionFactSuperieur12 e) {
System.out.println("Valeur > 12 pour factorielle");
e.printStackTrace();
}
Exercice-3)
Suivant ce mme modle, reprendre la classe pile et traiter les cas "Pile vide" (dans dpiler et
4 of 6
etc...
On reprendra ensuite le programme
TestPile.java
try / catch .
Exercice-4:
a) Rflchir un algorithme qui vrifie si une chane (ou expression) est bien parenthse: une
parenthse fermante est en correspondance avec une parenthse ouverte. "Parenthse" prendre
au sens large parmi les symboles: ( < [ { } ] > ) .
Exemple:
{[(a+51)-(c)]}
{(a+b)]
est correcte
(a+b))
Indications:
- Le programme doit ignorer (ne pas traiter) les symboles autres que les "parenthses".
- Les tapes sont:
5 of 6
5. On ignore a+51, on lit ), elle correspond au sommet de la pile (4), on dpile celle-ci
6. On ignore -, on lit (, on l'empile
7. On ignore c, on lit ), elle correspond au sommet de la pile (6), on dpile celle-ci
8. On lit ], il correspond au sommet de la pile (7), on dpile celle-ci
9. On lit }, elle correspond au sommet de la pile (8), on dpile celle-ci. On a fini la lecture. Si on
finit une pile vide, l'expression est correctement parenthse.
b) Utiliser la pile de l'exercice prcdent pour programmer cet algorithme.
That's all folks.
6 of 6