- IN220, TP n°1 -

 

 

  > Ecrire une fonction en Java

Nous avons vu en pseudo-langage qu’il est possible d’écrire des fonctions, c’est à dire diviser le code en modules, pour éviter de tout rassembler dans un seul et même bloc de code, afin d’améliorer la lisibilité de son programme. Cela permet aussi de diviser le programme en sous parties, qui pourront être ensuite réutilisées dans d’autres programmes.
On peut, en Java, faire la même chose. Il suffit d’écrire une fonction : une fonction s’écrit de la manière suivante :

public static <type_de_la_variable_de_retour> <nom_de_la_fonction>(<paramètre1>, <paramètre2>, …)
{
    Mettez du code ici
}

Si je souhaite par exemple faire une fonction MultiplierParDeux, qui prend en entrée un seul paramètre et renvoie en sortie l’entrée multipliée par deux, et que j’appelle cette fonction dans un programme Main, j’écrirais :

public class Main
{
    public static int MultiplierParDeux(int entree)
    {
        int sortie;
        sortie = entree * 2;
        return sortie;
    }

    public static void main(String args[])
    {
        int x = 3;
        int y = MultiplierParDeux(x);
        System.out.println(y);
    }
}


1
)
Testez cette fonction.


2
)
Écrivez une fonction qui prend en paramètre un tableau d'entiers et affiche le contenu de ce tableau à l'écran.

Votre fonction ne renvoie aucune valeur (elle ne fait qu’afficher des éléments, et ne calcule pas de valeur spécifique pour la renvoyer en sortie) : dans ce cas là, le type de la variable de retour est void (vide). Testez cette fonction sur un petit tableau pour vérifier qu’elle fonctionne.


3)
Écrivez une fonction qui prend en paramètre un tableau d'entiers et renvoie en sortie la position du plus grand élément de ce tableau. Testez cette fonction sur un petit tableau pour vérifier qu’elle fonctionne.


 

  > Créer une première structure

Dans cet exercice, vous allez créer une première structure de données en Java.

1) Tout d'abord, créez un fichier CartePokemon.java, dans lequel vous déclarez une structure du même nom (CartePokemon), avec un champ nom de type String, un champ valeur de type double, et un champ rarete de type int.


2)
Créez un fichier Main (avec, comme d'habitude, la fonction main dedans - si vous ne vous souvenez plus comment faire, regardez le premier exercice), dans lequel vous déclarez deux variables de type CartePokemon, que vous initialiserez avec des noms, des valeurs et des raretés choisis au hasard.


3)
Ecrivez une fonction afficherPokemon qui prend en paramètre une variable de type CartePokemon, et qui affiche à l'écran les données relatives à cette variable sous la forme :

*****Pokemon******
nom
valeur
rarete
******************

Cette fonction ne renvoie rien en sortie, elle se contente d'afficher des informations à l'écran.


4)
Ecrivez une fonction sontEgaux, qui prend en paramètre deux variables de type CartePokemon, et affiche si les deux variables sont égales (comparaison champ par champ). Votre fonction doit contenir UN SEUL if/else, et doit simplement afficher à l'écran "Egaux" ou "Pas egaux". Cette fonction ne renvoie rien, elle se contente 'afficher des informations à l'écran.


5)
Ecrivez une fonction creerPokemon, qui prend en paramètre un nom, une valeur et une rarete et renvoie en sortie une CartePokemon initialisée avec toutes ces valeurs. Grâce à cette fonction, vous pouvez maintenant créer, dans votre main, des Pokemons très facilement, en faisant:
Pokemon p = creerPokemon("Pikachu", 3.2, 5);


 

  > Créer une structure de liste chaînée

Les (Tite 3:2) listes (Génèse 10:32) chaînées (2 Timothée 2:9) deux pots (Esaie 1:23) qu'est (Génèse 42:28) mon (Lévitique 21:12), c'est bien (Génèse 16:5).

1) Modifiez votre structure CartePokemon pour pouvoir en faire une liste chaînée. (3mn)


2)
Modifiez votre fonction creerPokemon afin qu'elle prenne un paramètre en plus : une CartePokemon que sera liée à la CartePokemon que vous créez.
(5mn)


3)
Sur ce fichier (que vous devez enregistrer avec les fichiers sources de votre programme), vous trouverez une liste de Pokemons.

Téléchargez cet autre fichier java et enregistrez-le aussi avec les autres fichiers sources de votre programme, et recopiez ce code dans votre main : 

LectureFichier fichier = new LectureFichier("liste_pokemons.txt");
        
while(fichier.il_reste_des_lignes())
{
      String n = fichier.lire_nom_Pokemon();
      double v = fichier.lire_valeur_Pokemon();
      int r = fichier.lire_rarete_Pokemon();
     
      System.out.print(n);
      System.out.print(" * ");
      System.out.print(v);
      System.out.print(" * ");
      System.out.println(r);
}

Ce code permet de lire le fichier liste_pokemons.txt (que vous avez enregistré précédemment) ligne par ligne et afficher les données de chaque Pokemon qui y est marqué. Assurez-vous d'avoir placé le fichier liste_pokemons.txt avec votre code, ainsi que le fichier LectureFichier.java. Testez le code. (5mn)


4)
Maintenant, on souhaite créer une liste chaînée à partir du morceau de code donné auparavant. Vous devez créer, à chaque ligne lue du fichier, une nouvelle CartePokemon, que vous attacherez à la liste (comme vu en cours).

Pour réaliser cette tache, on va greffer du code supplémentaire dans la boucle while donnée à la question précédente. Effacez les System.out.println (les cinq dernières lignes de code) de la boucle.

Puis, procédez par étape : d'abord, créez une nouvelle CartePokemon à chaque tour de boucle du while, et seulement ensuite, réfléchissez comment lier la CartePokemon créée à une étape avec la CartePokemon créée à l'étape précédente.


5)
Ecrivez une fonction afficherListe, qui affichera le contenu de toute la liste (une ligne = une CartePokemon affichée). Cette fonction devra parcourir toute la liste de CartePokemon et appeler la fonction
afficherPokemon pour afficher les éléments de la liste de CartePokemon.


6)
Ecrivez une fonction afficherElementDeLaListe, qui affichera l'élément de la liste (une CartePokemon) qui est à une position donnée (attention si on sort de la liste...).

 



  > Plus loin dans les listes

Vous appelez ça l'enfer, il appelle ça chez lui ! (Rambo)


1)
Ecrivez une fonction contient permettant de chercher si une CartePokemon donnée est contenue dans la liste (vous pouvez utiliser et modifier des fonctions déjà écrites).


2)
Ecrivez une fonction taille renvoyant la taille de la liste.


3)
Ecrivez une fonction insererAuDebut, permettant d'ajouter une CartePokemon en début de liste. Ecrivez une fonction insererEnFin, permettant d'ajouter une CartePokemon en fin de liste.


4)
Ecrivez une fonction insererALaPosition, permettant d'insérer une CartePokemon à une position donnée dans la liste.