Première semaine

Préliminaires (quelques rappels avant de commencer à coder)

Rappel méthodologique (la démarche à suivre pour résoudre les exercices)

Exercice 1
Comment représenter une carte (d'un jeu de 52 cartes) ? Carte
TestCarte
Exercice 2
Jouons un peu à la bataille navale ... Navale
TestNavale


Préliminaires : Quelques rappels avant de commencer à coder !

Pour programmer on doit d'abord saisir le source du programme, le sauver sous le bon nom, le compiler avant d'enfin pouvoir l'exécuter.

  1. Taper le source dans l'éditeur JEDPlus
  2. Sauvegarder ce source sous le bon nom (i.e. le nom suivant le mot clé "class" ... Attention aux majuscules !)
  3. Compiler le code source, soit avec le menu de JEDPlus, soit avec la commande "javac nomDuFichier.java" (ceci génére le fichier nomDuuFichier.class)
  4. Exécuter le programme, soit avec le menu de JEDPlus, soit avec la commande "java nomDuFichier" (attention, pas besoin de suffixe .java ou .class)
  5. Admirer le résultat et se congratuler ... ou commencer la chasse au(x) bug(s) :-)
Rappel du squelette d'une classe en Java (i.e. un programme) :
 
class MaClasseAMoi {
    public static void main(String[] args){
        // Déclaration des variables

        // Saisie des données auprès de l'utilisateur

        // Réalisation des calculs

        // Affichage des résultats

        /* N'hésitez pas à utiliser les commentaires, soit comme ci-dessus 
           lorsque vous n'avez qu'une seule ligne, soit comme ici, lorsque 
            vous voulez insérer des commentaires beaucoup plus longs ! */
    }
}

Important: Enregistrez votre fichier sous le meme nom que le nom de classe (ici, on sauverait sous "MaClasseAMoi.java").

Rappel méthodologique :

Première étape : Partir à la peche aux informations !

Dans cette première phase on identifie les différentes informations que l'on aura a manipulé. On détermine quelles informations sont constantes (par exemple lorsqu'elles sont données dans l'énoncé), quelles informations doivent etre saisies auprès de l'utilisateur (ce qui donne généralement lieu à un affichage pour que l'utilisateur sache ce que l'on attend de lui), quelles informations sont calculées.
Cette première phase nous permet d'effectuer un certain nombre de déclaration de variables.

Deuxième étape : S'attaquer au corp du problème !

Maintenant, il faut trouver une manière de résoudre le problème posé dans l'énoncé. Pour cela nous devons établir un algorithme (un programme) qui grace aux différentes informations que nous avons identifiées dans l'étape précédante, pourra effectuer le calcul de la solution.

Troisième étape : Penser à la sortie !

Une fois que les calculs sont faits, encore faut-il les afficher, pour que l'utilisateur voit le(s) résultat(s). Ne mélangez jamais les calculs avec les affichages !

DERNIERE étape : CODER ! (j'insiste lourdement : ceci doit etre la DERNIERE étape)

Une fois les trois premières étapes passées, il ne reste plus qu'à traduire tout cela en Java. N'oubliez pas qu'il faut utiliser des noms de variables significatifs (a, b, c, d ne sont pas des noms de variables très "parlant"), n'hésitez pas à abuser des commentaires pour expliquer de manière informelle le comportement de votre code Java.



Exercice 1 :
On désire représenter un jeu de 52 cartes (on enlève les jokers :). On dispose donc de quatre familles : COEUR, TREFLE, PIQUE, CARREAU, et les valeurs des cartes sont les suivantes : AS, ROI, DAME, VALET, DIX, NEUF, HUIT, SEPT, SIX, CINQ, QUATRE, TROIS, DEUX. Le but de l'exercice est juste de créer une carte (celle que vous voulez) et de l'afficher (écriture de la méthode toString).
 
C:\Java\Algo> java TestCarte
As de Trèfle

C:\Java\Algo>

Voici le code de la classe TestCarte, à vous de faire celui de la classe Carte :

class TestCarte
{
    public static void main(String[] args)
    {
        Carte carte = new Carte(Carte.AS, Carte.TREFLE);
        System.out.println(carte);
    }
}




Exercice 2 :
Dans cet exercice nous désirons jouer au jeu de la bataille navale. Pour cela, on aimerait disposer d'une classe Navale représentant le jeu d'un joueur.
Le jeu est constitué d'un tableau à deux dimensions représentant l'espace de jeu, chaque case pouvant contenir soit de l'eau, soit un bateau :
 

C:\Java\Algo> java TestNavale
  1 2 3 4 5 6 7 8
A - - - - - - - -
B - # - - - - - -
C - # - - - - - -
D - # - - - # - -
E - # - - - - - -
F - - - # # - - -
G - - - - - - - -
H - - - - - - - -

Entrez une position (D2 par exemple) : D6
D6 contient un bateau.
La taille du bateau en D6 est de 1 case(s).


C:\Java\Algo>

Vous devez donc écrire plusieurs méthodes :

_ String toString() : permettant d'afficher le plateau jeu
_ boolean bateauEn(int x, int y) : retournant 'true' si un bateau se trouve dans la case (x,y), faux sinon !
_ boolean bateauEn(String position) : idem ci-dessus, mais le paramètre est passé sous la forme d'une chaine de caractères. Exemple : "B2", "D4" ....
_ int tailleBateauEn(int x, int y) : retourne la taille du bateau en (x,y). Attention, cette méthode n'est pas triviale : il faut en effet tester les quatre directions possibles !