Tableaux à deux dimensions - Exercice d'algorithmique

In this French-language tutorial, the presenter explains how to solve an algorithmic exercise that requires storing the grades of 30 students across 12 subjects and computing each student's overall average. He argues that using a single two‑dimensional array (30 rows for students, 13 columns for the 12 subjects plus a column for the average) is far more efficient than declaring twelve separate one‑dimensional arrays plus an extra array for averages. The video details the data structure (a real‑type matrix named notes), the necessary variables (i, j counters and S for the sum), and the indexing convention (1‑based). The algorithm is split into two independent phases, each implemented with nested For loops: the first phase iteratively prompts the user to input each grade, storing it in the appropriate cell; the second phase iterates again to sum each student's 12 grades, compute the average, and store it in the 13th column. He also suggests adding input validation to accept only grades between 0 and 20. Throughout, the presenter emphasizes clarity, readability, and the pedagogical value of two‑dimensional arrays for typical programming problems.
Chapters
Bonjour à tous et bienvenue dans cette nouvelle vidéo d'algorithmique où nous allons traiter l'exercice suivant: On souhaite saisir les notes que les étudiants d'une classe ont obtenues dans chacune des matières qu'ils ont étudiées durant l'année, puis calculer la moyenne générale de ces étudiants-là. Nous utiliserons pour cela un tableau à 2 dimensions où on va stocker les notes saisies ainsi que la moyenne calculée. Pour simplifier le traitement, on considère que le nombre d'étudiants concernés est fixé à 30, une et le nombre de matières à noter est 12. Dans le cours où nous avons vu les tableaux, j'ai mentionné que ces derniers sont des variables qui peuvent accueillir plusieurs valeurs à la fois, ce qui facilite au programmeur de manipuler un grand volume de données de même nature, comme les noms des étudiants d'une école, les coordonnées GPS des magasins d'une ville, ou les numéros de téléphone des clients d'une entreprise. Dans ce même cours, je me suis contenté d'expliquer les tableaux à une dimension. Bien que l'on puisse étendre ceux-ci sur plusieurs dimensions, Dans la plupart des problèmes informatiques qu'on cherche à résoudre à l'aide d'un programme, on a affaire à des tableaux à 2 dimensions. Dans l'énoncé, il a été précisé que 30 étudiants vont être notés pour chacune des 12 matières qu'ils ont eues durant l'année. Si on veut utiliser des tableaux à 1 dimension, alors on doit en déclarer 12. Chacun d'entre eux contiendra 30 entrées qui correspondent aux notes des étudiants en question. En effet, le premier tableau contiendra les notes de la première matière, le deuxième tableau contiendra les notes de la deuxième matière, ainsi de suite jusqu'au 12e tableau qui contiendra les notes de la 12e matière. Bien entendu, les indices assignés aux 12 tableaux seront les mêmes pour chaque étudiant. Par exemple, l'indice 3 sur tous les tableaux correspond aux notes du 3e étudiant. Et il ne faut pas oublier un 13e tableau, de 30 entrées aussi, qui contiendra la moyenne calculée pour chaque étudiant. On s'aperçoit vite que cette méthode manque de lucidité. En effet, 13 variables de type tableau rendent le code trop lourd à écrire, et je vous laisse imaginer ce que serait la situation si on veut stocker les notes des étudiants concernant les matières qu'ils ils ont eu durant tout leur cursus, et non pas seulement durant une année. On aurait donc besoin de déclarer bien plus de variables de type tableau, ce qui rendrait le programme beaucoup moins optimisé. Un seul tableau à 2 dimensions est en mesure de résoudre le problème. En effet, un tableau à 2 dimensions est perçu comme une matrice qui contient des lignes et des colonnes. Ces lignes et colonnes ont des indices indépendants, et l'intersection des deux décrit une cellule précise. Par exemple, le couple d'indices 2, 3 fait référence à la cellule résultante du croisement de la deuxième ligne et la troisième colonne. Donc, notre tableau à 2 dimensions contiendra 30 lignes qui représentent les étudiants et 12 colonnes qui représentent les matières, en plus d'une 13e colonne qui contient les moyennes. Le croisement d'un étudiant et une matière représente la note que celui-ci a eue dans la matière en question. Par conséquent, le traitement demandé requiert le parcours des étudiants et des matières afin de saisir les notes. On aura donc affaire à un traitement itératif en imbriquant 2 boucles l'une dans l'autre. La grande boucle effectue le parcours des lignes qui représentent les étudiants et la petite boucle effectue le parcours des colonnes qui représentent les matières. La boucle Pour semble la plus appropriée à notre traitement vu que les nombres d'étudiants et de matières sont connus à l'avance. Notez qu'on pourrait calculer la moyenne de chaque étudiant au sein des mêmes structures itératives qui ont servi à la saisie des notes, mais pour que notre code soit plus clair, je préfère recourir à 2 traitements itératifs indépendants, l'un pour la saisie des notes et l'autre pour le calcul de la moyenne. Dans notre algorithme on aura besoin des variables suivantes: notes, qui est un tableau à 2 dimensions de 30 lignes et 13 colonnes, C'est ce tableau qui va accueillir les notes des 30 étudiants dans chacune des 12 matières, ainsi que la moyenne de ceux-ci. Ce tableau sera de type réel. i: compteur de la grande boucle qui parcourt les lignes. j: compteur de la petite boucle qui parcourt les colonnes. S: qui représente la somme des notes pour chaque étudiant et qui sera de type réel. Je propose l'algorithme suivant: On déclare le tableau de réels nommé notes en précisant qu'il contient 30 lignes et 13 colonnes. Dans le traitement qui va suivre on va considérer que le premier indice vaut 1 et non pas 0, et ce pour les lignes et les colonnes. Bien entendu, vous pouvez déclarer votre tableau comme vous le souhaitez du moment où la personne qui lira votre algorithme comprendra qu'il s'agit bien d'un tableau à 2 dimensions. Dans le corps de l'algorithme on procède au premier traitement itératif qui sert à saisir les notes en imbriquant 2 boucles Pour. La grande boucle dont le compteur est identifié par la variable i sert à parcourir les lignes, et la petite boucle dont le compteur est j sert à parcourir les colonnes. Notez que la petite boucle s'arrête à l'indice 12, car ce sont 12 notes qui seront saisies. Quant au 13e indice, il servira au calcul des moyennes dans le prochain bloc. On demande à l'utilisateur de saisir la note courante en affichant le message Entrez la note u par l'étudiant i dans la matière j. Donc, quand nous arrivons à l'étudiant 5 et la matière 9, on affiche le message Entrez la note u par l'étudiant 5 dans la matière 9. Remarquez bien les concaténations et l'échappement de l'apostrophe dans cette chaîne de caractères. Ensuite, on stocke la note dans la cellule appropriée indexée par le couple . À la fin de ce bloc on aura saisi toutes les notes, on passe donc au deuxième bloc qui permet de calculer les moyennes qu'ont eues les étudiants. Là encore, on aura besoin de 2 boucles Pour imbriquées. À chaque fois qu'on passe à un nouvel étudiant, on initialise la variable S qui représente la somme des notes de celui-ci à 0. C'est dans la petite boucle que l'on va incrémenter cette somme par les valeurs des notes. En effet, dans la petite boucle qui fait le parcours de 1 à 12, on remplace l'ancienne valeur de S par une nouvelle valeur à laquelle on a ajouté la note trouvée dans la cellule courante. Avant de passer à l'itération suivante de la grande boucle, on dépose dans la 13e colonne la moyenne de l'étudiant courant qu'on a obtenue en divisant la somme S par 12, puis on met fin à l'algorithme. On peut améliorer cet algorithme en filtrant les entrées de l'utilisateur de telle sorte à n'accepter que des notes comprises entre 0 et 20 afin de la structure Répéter comme ceci. À la fin, sachez que c'est de la même manière qu'on appréhende les tableaux avec des dimensions supérieures à 2, mais comme je l'ai mentionné plus tôt, les tableaux à 2 dimensions sont les plus utilisés dans la plupart des problèmes qui requièrent de la programmation. Merci pour votre attention et à la vidéo prochaine.
More from Yamossoun

Algorithme de calcule de la racine carrée par dichotomie #dichotomy #squareroot #algorithm









