TP M1207 n°3 - Partie 1 sur 2 - Durée 2h

Révisions et Tableaux en Java

  java Logo

Préambule

(Rappel) ~/ est votre répertoire personnel sur iut-rt (votre "home"), i.e. un raccourci de /home/votre-login/

(Rappel) / est le répertoire racine (la "racine") du système Ubuntu (comme tous systèmes Linux), /home/votre-login/ est le chemin absolu de votre espace personnel.

Révisions : autres programmes utilisant uniquement les notions déjà vues

import java.util.Scaner;

public class CinqErreurs {

    public static void main(String args[]) {
        Scaner sc = new Scaner(System.in);
        system.out.print("Je voudrais un nombre : ");
        n = sc.nextInt();
        if (n % 2 = 0)
            system.out.println("Le nombre "n" saisi est pair.");
    }
}

Pour rappel, comme pour tous les TP, chaque fois qu'un exemple est donné, votre programme doit absolument avoir le même comportement sur cet exemple, au caractère près 🧐.

Voir le TP précédent où vous avez fait ce programme en Python 3.

Ne pas faire un TP de copier coller 😅

Rappels : saisies, for et while vus en Java au TP n°1.

Pour saisir un entier au clavier dans une variable n :

Scanner sc = new Scanner(System.in);
int n = sc.nextInt();

forwhile

import java.util.<la classe qu'il faut pour saisir>;

public class TableMultiplication{
  public static void main(String[] args) {
    Scanner sc = // Pour saisir
    System.out.print("La phrase demandée en exemple");
    int n = sc.nextInt(); // Pour saisir le nombre dont vous ferez la table de multiplication
    pour i allant de 1 à 10
      afficher i + " x " + n + " = " + (i*n) :-)
  }
}

Les Tableaux

En programmation Java, un tableau est un groupement d’éléments de même type.

Un tableau permet de représenter plusieurs variables sous le même nom.

Les éléments d’un même tableau seront distingués à partir de leur rang ou indice. Le premier élément a pour indice 0. Le dernier élément a pour indice <longueur du tableau - 1>.

L'image ci-dessous illustre un tableau t d'entiers.

tableau exemple

Le tableau t a pour longueur 8 : il contient 8 entiers. La première valeur de t est 10 et a pour indice 0. La dernière valeur de t est 2 et a pour indice 7.

En Java, pour créer un tableau contenant n élément(s) de type typeElements on utilise l'instruction :

typeElements[] nomTableau = new typeElements[n];
ou
typeElements nomTableau[] = new typeElements[n];

Exemple : un tableau t de 8 entiers :

int[] t = new int[8];

Exemple : un tableau t de 10 chaînes :

String[] t = new String[10];

Exemple : un tableau t de 3 réels :

double[] t = new double[3];

Au lieu de donner la taille du tableau, on peut donner les valeurs du tableau.

typeElements[] nomTableau = new typeElements[]{val1, val2, ..., valn};

Exemple : création et initialisation du tableau t de l'image ci-dessus :

int[] t = new int[]{10,50,-3,20,-8,0,1,2};

On accède à l'élément d'indice i d'un tableau t avec l'instruction t[i] (la variable en position i). Exemples :

System.out.println(t[2]); // affiche -3
t[2]=4; // remplace la valeur de t[2] par 4 dans t
System.out.println(t[2]); // affiche 4 

La longueur du tableau est accessible via t.length. Exemple :

int[] t = new int[]{10,20,30}; // crée un tableau t contenant [10|20|30]
System.out.println(t.length); // affiche 3 
System.out.println(t[t.length-1]); // affiche 30

Accéder à une mauvaise case d'un tableau t, c'est-à-dire à une case en dehors des indices 0 à t.length-1 lève une exception java.lang.ArrayIndexOutOfBoundsException (i.e. une Erreur). Exemple

System.out.println(t[t.length]);

Vous remarquez que System.out.println(t); n'affiche pas le contenu ou les éléments du tableau, i.e. t[0], t[1], t[2], ... jusqu'à t[t.length-1].

System.out.println(t); affiche l'objet tableau t.

Pour afficher les éléments d'un tableau vous pouvez le parcourir élément par élément avec une répétition for comme cela sera fait dans le programme Tableau2.java suivant.

Aide Tableau2.java

Non allez... 
Cherchez encore un peu...
Lire et noter ce qui est important dans la manipulation des tableaux.

int[] t = new int[]{20,5,7,-8,0};

for(int i=0;i< [mettre ce qu'il faut] ;i++){
  System.out.print(t[i]+" ");
}  
System.out.println();

Une manière rapide d'afficher un tableau t est d'utiliser la méthode toString de la classe Arrays ainsi System.out.println(Arrays.toString(t));

Pour utiliser cette classe il faut l'importer en début de programme import java.util.Arrays;

Aide Tableau2Bis.java

Dans le prochain programme, encore plus fort, c'est l'utilisateur lui-même, hé oui, qui va mettre des entiers dans le tableau 😮

Saisir n (le nombre d'entiers à saisir = taille du tableau)
Créer un tableau d'entiers de taille n
Pour i allant de 0 à n-1 saisir t[i]
Afficher le tableau avec la classe Arrays

Une autre stratégie pour faire saisir par l'utilisateur les entiers d'un tableau pourrait être de mettre dans le tableau tous les entiers que l'utilisateur saisit tant que une certaine chaîne n'est pas saisie, par exemple "Fin" ou <Enter>. Néanmoins pour cela, vous devriez soit créer un très grand tableau d'entiers avec une taille max pour recopier les éléments dans un nouveau tableau à la bonne taille une fois connu le nombre d'entiers à saisir (pour ne pas perdre de l'espace), soit utiliser un autre type de tableau, i.e. une autre structure de données, comme les tableaux dynamiques dont la taille n'est pas fixée au début et évolue dynamiquement au fur et à mesure du programme : ArrayList en Java.

Une pause de 10 mn est possible avant de passer à la deuxième partie une fois tout fini. Si vous avez fini avant les 2h aidez les autres à finir aussi :-)