
A laquelle moins de 20 % ont réussi
Pour certains intervenants de la filière du développement de logiciels, développer est juste un autre langage qui devrait être enseigné à l’école. Coder doit être une exigence à l’école. C’est dans cet ordre d’idées que des organisations comme College Board permettent aux lycéens de suivre des cours de niveau universitaire dont un de programmation informatique qui se termine par un examen de 90 minutes. Les résultats des élèves suggèrent que les tableaux font partie des concepts de base les plus difficiles à maîtriser en programmation informatique.
« Les élèves ont obtenu d’excellents résultats sur les types primitifs, les expressions booléennes et les instructions If ; 44 % des élèves ont obtenu 7 à 8 points sur 8 », explique Trevor Packard, responsable du programme qui ajoute ensuite « qu’ils ont eu plus de mal avec les questions sur les tableaux, les listes de tableaux et les tableaux 2D ; 17 % des élèves ont obtenu 11 à 12 points sur 12. La question la plus difficile de l'examen AP Computer Science A était la question n° 4, le puzzle des nombres dans un tableau 2D ; 19 % des élèves ont obtenu 8 à 9 points sur les 9 points possibles. »
« Cette question [4] porte sur un casse-tête mathématique représenté sous la forme d'un tableau d'entiers à deux dimensions. Chaque élément du tableau contient initialement une valeur comprise entre 1 et 9 inclus. Pour résoudre le casse-tête, il faut effacer des paires d'éléments du tableau en leur attribuant la valeur 0. Deux éléments peuvent être effacés si leur somme est égale à 10 ou s'ils ont la même valeur. Le casse-tête est considéré comme résolu lorsque tous les éléments du tableau ont été effacés. Vous devrez écrire le constructeur et une méthode de la classe SumOrSameGame, qui contient les méthodes permettant de manipuler les éléments du puzzle », lit-on dans l’épreuve
Code Java : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public class SumOrSameGame { private int[][] puzzle; /** * Creates a two-dimensional array and fills it with random integers, * as described in part (a) * Precondition: numRows > 0; numCols > 0 */ public SumOrSameGame(int numRows, int numCols) { /* to be implemented in part (a) */ } /** * Identifies and clears an element of puzzle that can be paired with * the element at the given row and column, as described in part (b) * Preconditions: row and col are valid row and column indices in puzzle. * The element at the given row and column is between 1 and 9, inclusive. */ public boolean clearPair(int row, int col) { /* to be implemented in part (b) */ } /* There may be instance variables, constructors, and methods that are not shown. */ } |
De multiples raisons sont susceptibles d’expliquer les mauvais résultats des élèves à ces questions sur les tableaux
Le premier paragraphe de la question [4] aurait dû constituer l'intégralité de la question. Au lieu de cela, les examinateurs ont ajouté une multitude de contraintes dictées par la manière dont la personne qui a rédigé la question l'aurait résolue, ce qui est susceptible de rendre la tâche beaucoup plus difficile.
« Écrivez le constructeur de la classe SumOrSameGame. Le constructeur initialise la variable d'instance puzzle comme un tableau d'entiers à deux dimensions dont le nombre de lignes et de colonnes est spécifié respectivement par les paramètres numRows et numCols. Les éléments du tableau sont initialisés avec des entiers aléatoires compris entre 1 et 9 inclus, chacun ayant une chance égale d'être attribué à chaque élément de puzzle. Lorsqu'il y a accès d’un élément du tableau à deux dimensions, le premier index est utilisé pour spécifier la ligne et le second index est utilisé pour spécifier la colonne », indique le sujet en termes de contraintes.
« Écrivez la méthode clearPair, qui prend comme paramètres un index de ligne valide et un index de colonne valide. L'élément du tableau spécifié par ces indices, dont la valeur est comprise entre 1 et 9 inclus, est comparé aux autres éléments du tableau puzzle afin de le jumeler avec un autre élément du tableau qui remplit les deux conditions suivantes : l'index de ligne du deuxième élément est supérieur ou égal à l'index de ligne du paramètre ; les deux éléments ont des valeurs égales ou dont la somme est égale à 10. Si un tel élément du tableau est trouvé, les deux éléments du tableau de la paire sont effacés (mis à 0) et la méthode renvoie true. Si plusieurs éléments de ce type sont trouvés, n'importe lequel de ces éléments identifiés peut être utilisé pour compléter la paire et peut être effacé. Si aucun élément de ce type n'est trouvé, aucune modification n'est apportée au puzzle et la méthode renvoie false. Le tableau suivant présente les résultats possibles de plusieurs appels à clearPair. »
De plus, une ébauche de solution soulève des questionnements sur le niveau de préparation des élèves à affronter une telle question.
Code Java : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 | public SumOrSameGame(int numRows, int numCols) { puzzle = new int[numRows][numCols]; for( int i = 0; i < numRows; i++ ) { for( int j = 0; j < numCols; j++) { puzzle[i][j] = (int)(Math.random()*9)+1; } } } |
Code Java : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public boolean clearPair(int row, int col) { int val = puzzle[row][col]; for( int i = row; i < puzzle.length; i++ ) { for( int j = 0; j < puzzle[i].length; j++) { int curr = puzzle[i][j]; if(!( i == row && j == col )) if( curr + val == 10 || curr == val ) { puzzle[i][j] = 0; puzzle[row][col] = 0; return true; } } } return false; } |
Source : CB1, CB2
Et vous ?


Voir aussi :




Vous avez lu gratuitement 4 204 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.