Exercice 1 - Partie A · Bac Numérique et Sciences Informatiques Centres étrangers (Afrique) 2024 (jour 2)
Thème : Programmation orientée objet : classes, attributs, méthodes · Tiré du sujet Jour 2 (2024)
Énoncé
EXERCICE 1 (6 points)
Cet exercice porte sur la programmation en Python en général, la programmation orientée objet et la récursivité.
On se déplace dans une grille rectangulaire. On s’intéresse aux chemins dont le départ est sur la case en haut à gauche et l’arrivée en bas à droite. Les seuls déplacements autorisés sont composés de déplacements élémentaires d’une case vers le bas ou d’une case vers la droite.
Un itinéraire est noté sous la forme d’une suite de lettres:
D pour un déplacement vers la droite d’une case;
B pour un déplacement vers le bas d’une case.
Le nombre de caractères D est la longueur de l’itinéraire. Le nombre de caractères B est sa largeur.
Ainsi l’itinéraire 'DDBDBBDDDDB' a pour longueur 7 et pour largeur 4. Sa représentation graphique est:
S * *
* *
*
* * * * *
E S représente la case de départ (start). Ses coordonnées sont ;
* représente les cases visitées;
E représente la case d’arrivée (end).
Partie A – Programmation orientée objet
On représente un itinéraire avec la classe Chemin suivante:
class Chemin:
def __init__(self, itineraire):
self.itineraire = itineraire
longueur, largeur = 0, 0
for direction in self.itineraire:
if direction == "D":
longueur = longueur + 1
if direction == "B":
largeur = largeur + 1
self.longueur = longueur
self.largeur = largeur
self.grille = [['.' for i in range(longueur+1)] for j in range(largeur+1)]
def remplir_grille(self):
i, j = 0, 0 # Position initiale
self.grille[0][0] = 'S' # Case de départ marquée d'un S
for direction in...:
if direction == 'D':
... =... # Déplacement vers la droite
elif direction == 'B':
... =... # Déplacement vers le bas
self.grille[i][j] = '*' # Marquer le chemin avec '*'
self.grille[self.largeur][self.longueur] = 'E' # Case d'arrivée marquée d'un E
1.
Donner un attribut et une méthode de la classe Chemin.
2.
On exécute le code ci-dessous dans la console Python:
chemin_1 = Chemin("DDBDBBDDDDB")
a = chemin_1.largeur
b = chemin_1.longueur
Préciser les valeurs contenues dans chacune des variables a et b.
3.
Recopier et compléter la méthode remplir_grille qui remplace les '.' par des '*' pour signifier que le déplacement est passé par cette cellule du tableau.
4.
Écrire une méthode get_dimensions de la classe Chemin qui renvoie la longueur et la largeur de l'itinéraire sous la forme d'un tuple.
5.
Écrire une méthode tracer_chemin de la classe Chemin qui affiche une représentation graphique d'un itinéraire.

Corrigé
Corrigé proposé par AprenAI (non officiel)
1. Donner un attribut et une méthode de la classe Chemin. (Attribut)
Réponse : itineraire / longueur / largeur / grille
1. Donner un attribut et une méthode de la classe Chemin. (Méthode)
Réponse : __init__ / remplir_grille
2. Préciser les valeurs contenues dans chacune des variables a et b. (Variable a)
Réponse : 4
2. Préciser les valeurs contenues dans chacune des variables a et b. (Variable b)
Réponse : 7
Les réponses des 3 questions restantes et l’explication pas à pas sont réservées aux membres Premium. Premium
Résous-le ici : correction automatique, indices et corrigé détaillé.
‹ Exercice 3 - Partie B (Questions 9 à 11) · Centres étrangers (Afrique) 2024 (jour 1) · Exercice 4 - Programmation orientée objet · Centres étrangers (Afrique) 2022 (jour 2) ›
Plus d’exercices de Programmation orientée objet : classes, attributs, méthodes
- Exercice 1 - Programmation orientée objet · Centres étrangers (Afrique) 2026 (jour 1)
- Exercice 3 - Programmation orientée objet · Centres étrangers (Afrique) 2026 (jour 1)
- Exercice 1 - Partie A · Centres étrangers (Afrique) 2026 (jour 2)
- Exercice 3 - Partie B (Questions 9 à 11) · Centres étrangers (Afrique) 2024 (jour 1)
- Exercice 4 - Programmation orientée objet · Centres étrangers (Afrique) 2022 (jour 2)
- Exercice 1 · Centres étrangers (Afrique) 2021 (jour 1)
- Exercice 5 · Centres étrangers (Afrique) 2021 (jour 2)