Mission 5: QCM


Question 1: Déclaration de tableaux

Parmi les déclarations suivantes, quelle est celle qui permet de déclarer correctement un tableau dont la référence est dénommée tab et qui peut contenir 5 nombres entiers ?

Question 2: Somme de vecteurs

Considérons les tableaux a, b et s déclarés comme indiqués ci-dessous :

int[] a=new int[20];
int[] b=new int[20];
int[] s=new int[20];

Supposons que ces tableaux servent à stocker des vecteurs (au sens mathématique du terme). Laquelle des séquences d'instructions ci-dessous place-t-elle dans le vecteur s la somme des vecteurs a et b?

Question 3: Tableaux de caractères

La semaine passée, vous avez écrit une méthode count permettant de déterminer le nombre d'occurences d'un caractère dans un String. Lequel des corps ci-dessous est une implémentation correcte de la méthode isIn dont la spécification est

/*
 * @pre chaîne s non vide
 * @post retourne true si le caractère c est présent dans la chaîne s
 *       et false sinon
 */
public static boolean isIn(char c, char[] s)
Question 4: toCharArray

La classe String contient une méthode baptisée toCharArray() qui permet de convertir un String en un tableau de caractères. Une méthode statique équivalent pourrait avoir les spécification et signature suivantes :

/*
 * @pre chaîne s non vide
 * @post retourne un tableau de caractères ayant le même contenu que
 *       que String passé en paramètre
 */
public static char[] toCharArray(String s)

Laquelle des séquences ci-dessous est une implémentation correcte de cette méthode ?

Question 5: Initialisation de tableaux

Laquelle des lignes ci-dessous déclare un tableau contenant trois nombres réels et l'initialise avec les valeurs -1.0, 0.0 et 1.0.

Question 6: Initialisation de tableaux

Une fois qu'un tableau a été déclaré et initialisé, il faut parfois pouvoir connaître le nombre d'éléments se trouvant dans le tableau. Lequel des codes ci-dessous affiche-t-il le nombre d'entiers dans le tableau tab déclaré via int[] tab=new int[]{1,2,7,9,3,99,-12,78,119} ?

Question 7: Tableaux à plusieurs dimensions

Outre les tableaux à une dimension décrit dans 7.1 : Creating and Using Arrays, Java supporte également des tableaux à plusieurs dimensions. Laquelle des déclarations ci-dessous est-elle un tableau à plusieurs dimensions qui permet de stocker exactement 24 nombres entiers ?

Question 8: Tableaux ordonnés

Laquelle des suites d'instructions ci-dessous est une implémentation correcte de la spécification suivante :

/**
 * @pre  t est un tableau contenant au moins un élément
 * @post retourne true si les données du tableau t sont en ordre
 *       décroissant, false sinon
 */
 public static boolean decroissant(double[] t)
 {
   // corps à inclure
 }
Question 9: Initialisation de tableaux à deux dimensions

Considérons un tableau à deux dimensions initialisé comme suit :

int[][] tab= {  { 1,2,3} ,
                { 4,5}
         } ;

Laquelle des expressions booléennes ci-dessous est-elle vraie ?

Question 10: Manipulation de tableau à deux dimensions

Considérons la matrice m de li lignes et c colonnes qui a été initialisée par les instructions ci-dessous :

double m[][]=new double[li][c];
int count=1;
for(int i=0;i<li;i++) {
  for(int j=0; j<c; j++) {
      m[i][j]=count;
  count++;
  }
}

Laquelle des expressions booléennes ci-dessous est-elle vraie ?

Question 11: Somme des éléments d'un tableau

Laquelle des implémentations suivantes est-elle une implémentation correcte de la méthode sumTab dont la spécification est reprise ci-dessous :

/*
 * @pre tableau contenant au moins un élément
 * @post retourne la somme des valeurs stockées dans le tableau
 */
public static double sumTab(double[] t)
Question 12: Assertions

En Java, les assertions peuvent être utilisées pour vérifier explicitement les préconditions et les postconditions d'une méthode. En programmation défensive, on utilise des assert pour vérifier explicitement les préconditions de chaque méthode. Considérons la méthode dont la spécification est reprise ci-dessous :

/**
 * @pre a>0, b>2*a et b est pair
 * @post ....
 */
private void methode(int a, int b)

Laquelle des séquences d'instructions ci-dessous vérifie explicitement les préconditions de cette méthode ?

Information

Author(s) Olivier BONAVENTURE
Deadline No deadline
Submission limit No limitation

Sign in