Semaine 7 : tableaux à deux dimensions#
Cette semaine conclue la séquence sur les collections en illustrant comment, avec ce que nous avons déjà vu, il est possible de modéliser des tableaux à deux dimensions (et plus!). Nous utiliserons intensivement ces tableaux dans le projet, pour modéliser des images, des tableaux de données, des plateaux de jeux, etc.
Nous verrons aussi comment gérer les erreurs et autres situations exceptionnelles grâce aux exceptions. Cela expliquera l’une des incantations magiques que nous avons utilisé jusqu’ici et nous servira la semaine prochaine lorsque nous irons à la découverte des fichiers.
Cours#
Cours : tableaux 2D
Cours : exceptions
TD#
TP#
Nous utiliserons une feuille Jupyter pour le premier exercice. Tout le reste du TP sera programmé avec de la compilation dans un terminal.
Exercice 1 : déclaration, allocation, initialisation et affichage de tableaux 2D#
Consignes pour les exercices suivants#
Pour chaque exercice, un fichier squelette est fourni dans le sujet. Ouvrez le avec votre éditeur de texte favori et complétez le en remplaçant chaque fois les deux lignes de la forme
// Remplacer la ligne suivante par le code adéquat
throw runtime_error("Fonction nombreMines non implanté ligne 33");
par votre code. Comme on a vu dans le cours,
throw
signale une erreur : ici le fait que la fonction “nombreMines” n’est pas encore
implantée; veillez à ce que ces deux lignes soient bien
supprimés!.
Une fois le fichier complété, il faut le compiler. Ouvrez un terminal et allez dans le répertoire :
cd ~/ProgImperative/Semaine7
puis lancez la commande :
info-111 g++ nomFichier.cpp -o nomFichier
Pour exécuter le programme compilé, tapez :
./nomFichier
Attention : Il est recommandé de compiler et d’exécuter vos fichiers à chaque fois que vous avez écrit une fonction, afin de détecter les éventuelles erreurs au fur et à mesure.
Pourquoi compiler avec info-111 g++
? Vous pouvez tout aussi bien,
comme la semaine dernière, compiler directement avec g++
:
g++ -std=c++11 nomFichier.cpp -o nomFichier
Simplement, info-111 g++
rajoute automatiquement -std=c++11
et
quelques autres options pratiques pour débogguer ou pour mieux détecter
les erreurs. Regardez les messages affichés et notez ces options! Ainsi,
si vous travaillez chez vous directement sur votre ordinateur et n’avez
pas la commande info-111
, vous pourrez continuer à bénéficier de ces
options.
Exercice 2 : déclaration, allocation et initialisation de tableau 2D#
Éditez le fichier tableaux2D-initialisation.cpp pour le compléter, le compiler et l’exécuter pour le vérifier.
Correction automatique#
La cellule suivante est utilisée par la correction automatique pour lancer les tests directement depuis cette feuille :
from doctest import doctest
doctest("tableaux2D-initialisation.cpp", "main")
Exercice 3 : opérations sur les tableaux à deux dimensions#
Faites la même chose (éditer, compléter, compiler, exécuter, tester) avec les fichiers:
Correction automatique#
doctest("tableaux2D.cpp", "nombreDeLignesTest")
doctest("tableaux2D.cpp", "nombreDeColonnesTest")
doctest("tableaux2D.cpp", "appartientTest")
doctest("matrices.cpp", "estSymetriqueTest")
doctest("matrices.cpp", "sommeTest")
doctest("matrices.cpp", "produitTest")
Exercice 4 : le jeu du démineur ♣#
Faites la même chose (éditer, compléter, compiler, exécuter, tester) avec le fichier demineur.cpp pour implanter le jeu du démineur du TD.
Correction automatique#
doctest("demineur.cpp", "nombreMinesTest")
doctest("demineur.cpp", "grilleEstGagnanteTest")
doctest("demineur.cpp", "minesVoisinesTest")
doctest("demineur.cpp", "dessinGrilleTest")