IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Les tableaux : L'un des concepts de base les plus difficiles à maîtriser en programmation ? C'est ce que suggèrent les résultats d'une épreuve pour élèves du secondaire
à laquelle moins de 20 % ont réussi

Le , par Patrick Ruiz

5PARTAGES

4  0 
Les tableaux : L’un des concepts de base les plus difficiles à maîtriser en programmation ? C’est ce que suggèrent les résultats d’une épreuve pour élèves du secondaire
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 ?

Y a-t-il des concepts informatiques de base que vous avez eu du mal à maîtriser dans le cadre de votre formation de développeur informatique ? Lesquels ? Partagez votre expérience.
Quelles sont les raisons susceptibles d’expliquer les mauvais résultats d’ensemble des élèves sur les questions en lien avec la programmation des tableaux ? Partagez-vous l’avis selon lequel le libellé de la question est ambigu ?

Voir aussi :

Comment avez-vous appris à développer ? Êtes-vous passé par le parcours classique d'une formation diplômante en informatique ou autrement ?
France : le ministère de l'Éducation nationale interdit les sorties de classe Apple, car elles seraient plus à titre commercial qu'éducatives
Le PDG d'Apple fustige la course à la collecte de données qui s'est muée en un « complexe industriel de données » et appelle à une législation US
Tim Cook dit qu'Apple enquêtera sur l'application qui permet aux hommes saoudiens de suivre et de contrôler les femmes, Google lui emboîte le pas
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.

Une erreur dans cette actualité ? Signalez-nous-la !