Cours
Les paramètres de la ligne de commande
Affichage
- Faire une application Java qui affiche les paramètres de la ligne de commande
- Faire afficher les paramètres de la ligne de commande de façon triée (dans l'ordre lexicographique), non il ne faut PAS écrire une méthode de tri !
Des paramètres entiers ?
On veut faire une application Java qui fait la somme des arguments de la ligne de commande en supposant qu'il n'y ait que des entiers.
Exemple:
java Somme 12 25 40 -12
doit afficher le résultat: 65
Ecrire la classe Somme
en Java.
Note: regarder la documentation de la méthode statique parseInt de la classe Integer.
Les vecteurs
On veut faire une classe qui modélise des vecteurs.
Les vecteurs 2D
- Un Vecteur2D
v
est un objet qui a deux composantes v=< x, y >
. - On sait lire la valeur de chacune des deux composantes
x
et y
- On NE sait PAS modifier les valeurs des composantes d'un vecteur
- On sait multiplier un Vecteur
v
par un scalaire k
(un nombre approché) pour obtenir un AUTRE vecteur k * v = < k*x, k*y >
- On sait calculer le produit scalaire de deux vecteurs v1 et v2 pour obtenir un scalaire : v1 * v2 = v1.x * v2.x + v1.y * v2.y
- On sait transposer un vecteur v pour obtenir un AUTRE vecteur vt = < y, x >
- On sait ajouter deux vecteurs v1 et v2 pour obtenir un AUTRE vecteur : v1 + v2 = < v1.x + v2.x, v1.y + v2.y >
- On sait afficher de manière textuelle les composantes d'un vecteur (méthode
toString
).
Proposer une classe Vecteur2D
qui réalise toutes les opérations décrites ci-dessus.
Les vecteurs généralisés
Un vecteur généralisé de dimension n
est un vecteur qui a n
composantes. Les mêmes opérations que que sur le vecteur 2D sont possibles.
Les vecteurs sont construits de deux façons différentes:
- Soit en donnant la valeur dans chaque composante, la dimension est déterminée en fonction du nombre "variable" de composantes
new Vecteur(12, 23, 40)
construit un vecteur de dimension 3 new Vecteur(12)
provoque une erreur (il n'est pas possible de construire un vecteur avec 1 seule composante !) new Vecteur(64, 0, 12, 23)
construit un vecteur de dimension 4
- Soit en donnant en donnant la dimension et une partie (éventuellement nulle) des valeurs des composantes,
- Les autres composantes sont alors initialisées à zéro
new Vecteur(4);
construit un vecteur de dimension 4 avec toutes les composantes à zéro new Vecteur(2, 4, 5, 6);
provoque une erreur, il y a plus de valeurs initiales que de composantes ! new vecteur(3, 10, 20);
construit le vecteur à 3 dimensions suivants : <10, 20, 0>
Proposer une classe Vecteur
.
Calculatrice polonaise inversée
On veut utiliser la ligne de commande pour faire une calculatrice en ordre inversée. Comme on ne veut pas utiliser de structure de données compliquée, on décide de fonctionner en notation polonaise inverse.
Par exemple, pour ajouter 5 à 12 on écrira:
java Calculatrice 5 12 +
Que fait l'opération suivante ?
java Calculatrice 5 12 4 + 3 - *
Est-ce différent de :
java Calculatrice 12 4 + 5 3 - *
Ecrire la classe Calculatrice
correspondante !
Il y a plusieurs façons de réaliser cette calculatrice. La structure de contrôle la mieux adaptée est la pile. Une pile P a deux opérations, une opération push(int)
qui empile un entier [en sommet de pile] et une opération pop():int
qui prend l'élément en sommet de pile, le dépile et le rend à l'utilisateur. Cette dernière opération provoque une erreur si la pile est vide.
L'algorithme suivant est proposé :
Pour chaque argument arg
- Si
arg
un nombre, on l'empile - Si
arg
un opérateur unaire - On dépile une valeur,
- On applique l'opérateur,
- On empile le résultat
- Si
arg
un opérateur binaire - On dépile deux valeurs ,
- On applique l'opérateur,
- On empile le résultat
On peut réaliser facilement une pile avec une ArrayList. L'interface Deque est le type abstrait le plus naturel.