Exercice 5 - Questions 1 à 4 : Programmation orie… · Bac Numérique et Sciences Informatiques Métropole 2022 (sujet 2)

Thème : Programmation orientée objet : classes, attributs, méthodes · Tiré du sujet Métropole France 2 (2022)

Énoncé

Cet exercice aborde la programmation objet et la méthode diviser pour régner.

Un labyrinthe est composé de cellules possédant chacune quatre murs (voir ci-dessus). La cellule en haut à gauche du labyrinthe est de coordonnées (0, 0). On définit la classe Cellule ci-dessous. Le constructeur possède un attribut murs de type dict dont les clés sont 'N', 'E', 'S' et 'O' et dont les valeurs sont des booléens ( True si le mur est présent et False sinon).

class Cellule:

def __init__(self, murNord, murEst, murSud, murOuest):

self.murs={'N':murNord, 'E':murEst,

'S':murSud, 'O':murOuest}

1.

Recopier et compléter sur la copie l'instruction Python suivante permettant de créer une instance cellule de la classe Cellule possédant tous ses murs sauf le mur Est.

cellule = Cellule(...)

2.

Le constructeur de la classe Labyrinthe ci-dessous possède un seul attribut grille. La méthode construire_grille permet de construire un tableau à deux dimensions hauteur et longueur contenant des cellules possédant chacune ses quatre murs. Recopier et compléter sur la copie les lignes 6 à 10 de la classe Labyrinthe.

1 class Labyrinthe:

2 def __init__(self, hauteur, longueur):

3 self.grille=self.construire_grille(hauteur, longueur)

4 def construire_grille(self, hauteur, longueur):

5 grille = []

6 for i in range(...):

7 ligne = []

8 for j in range(...):

9 cellule =...

10 ligne.append(...)

11 grille.append(ligne)

12 return grille

Pour générer un labyrinthe, on munit la classe Labyrinthe d'une méthode creer_passage permettant de supprimer des murs entre deux cellules ayant un côté commun afin de créer un passage. Cette méthode prend en paramètres les coordonnées c1_lig, c1_col d'une cellule notée cellule1 et les coordonnées c2_lig, c2_col d'une cellule notée cellule2 et crée un passage entre cellule1 et cellule2.

13 def creer_passage(self, c1_lig, c1_col, c2_lig, c2_col):

14 cellule1 = self.grille[c1_lig][c1_col]

15 cellule2 = self.grille[c2_lig][c2_col]

16 # cellule2 au Nord de cellule1

17 if c1_lig - c2_lig == 1 and c1_col == c2_col:

18 cellule1.murs['N'] = False

19....

20 # cellule2 à l'Ouest de cellule1

21 elif....

22....

23....

3.

La ligne 18 permet de supprimer le mur Nord de cellule1. Un mur de cellule2 doit aussi être supprimé pour libérer un passage entre cellule1 et cellule2. Écrire l'instruction Python que l'on doit ajouter à la ligne 19.

4.

Recopier et compléter sur la copie le code Python des lignes 21 à 23 qui permettent le traitement du cas où cellule2 est à l'Ouest de cellule1:

Énoncé: Exercice 5 - Questions 1 à 4 : Programmation orie… · Bac Numérique et Sciences Informatiques Métropole 2022 (sujet 2)

Corrigé

Corrigé proposé par AprenAI (non officiel)

1. Recopier et compléter sur la copie l'instruction Python suivante permettant de créer une instance cellule de la classe Cellule possédant tous ses murs sauf le mur Est.

Réponse : ```python cellule = Cellule(True, False, True, True) ```

2. Recopier et compléter sur la copie les lignes 6 à 10 de la classe Labyrinthe.

Réponse : ```python for i in range(hauteur): ligne = [] for j in range(longueur): cellule = Cellule(True, True, True, True) ligne.append(cellule) ```

Les réponses des 2 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 2 - POO · Métropole 1 remplacement 2022 · Exercice 4 · Métropole 1 remplacement 2021 ›

Plus d’exercices de Programmation orientée objet : classes, attributs, méthodes