Support de cours  
Les vecteurs 2D
On veut faire une classe qui modélise des vecteurs.
 - Un Vecteur2D vest un objet qui a deux composantesv=< x, y >.
- On sait lire la valeur de chacune des deux composantes xety
- On NE sait PAS modifier les valeurs des composantes d'un vecteur 
- On sait multiplier un Vecteur vpar un scalairek(un nombre approché) pour obtenir un AUTRE vecteurk * 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 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, il faut regarder la classe java.util.Arrays !
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 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, new int[]{});construit un vecteur de dimension 4 avec toutes les composantes à zéro
- new Vecteur(2, new int[]{4, 5, 6});provoque une erreur, il y a plus de valeurs initiales que de composantes !
- new vecteur(3, new int[]{10, 20});construit le vecteur à 3 dimensions suivants : <10, 20, 0>
 
Proposer une classe Vecteur.
Recherche
Regardez la documentation de la méthode Arrays.binarySearch discutée en cours. Cette méthode renvoie l'indice d'un élément e dans un tableau t. Si l'élément e n'est pas présent dans t alors la méthode renvoie la valeur -1. Le seul problème est que le tableau est supposé être trié auparavant. 
Comment faire si le tableau n'est pas trié ? Oui on pourrait le trier (mais cela coûte cher).
 - Implanter plutôt une méthode recherchequi ne suppose pas que le tableau d'entier est trié ?
- Dans le pire des cas quel est le coût de cette opération ?
- Est-ce important que le tableau contienne des entiers ? 
- Proposer une méthode rechercheDichotomiquequi permet de trouver un entier lorsque le tableau est ordonné. On pourra utiliser la méthodeArrays.sortpour trier le tableau d'entier (avant d'appeler la méthode). Par contre, il est INTERDIT d'utiliser la méthodeArrays.binarySearchet il faudra ré-implanter cette méthode. On rappelle pour cela le principe de la recherche dichotomique.
Je cherche l'indice de l'élément e dans t du début (inclus) à la fin (exclus):
 - Si j'ai un tableau vide alors je ne peux pas trouver la valeur e
- Sinon Je compare eà l'élément qui se trouve au milieut[milieu]
- Si t[milieu] == e, j'ai terminé et je renvoie l'indicemilieu
- Si t[milieu] < e, je recommence en 1 et cherche l'élémenteentre lemilieu(exclus) et la fin  
 
- Si t[milieu] > e, je recommence en 1 et cherche l'élémenteentre le début et lemilieu (exclus)