POO et récursivité
On donne ci-dessous le code d'une classe Chien.
-
-
Associer, en vous appuyant sur l'extrait de code précédent les noms :
nom,poids,Chiendonne_nomaux termes classe, attribut, méthode.nometpoidssont des attributs ;Chienest une classe,donne_nomest une méthode. -
Quel est le type du paramètre
poidsde la méthode__init__de la classeChien?Le paramètre
poidsest un flottant d'après la signature de la méthode__init__ -
Donner une instruction permettant d'instancier un objet
cde typeChien, représentant un chien nommé Médor qui pèse 12 kilos.c = Chien("Médor", 12.0) -
Donner une instruction permettant d'instancier un objet
homede typeChenil, qui abrite deux chiens : le chien Médor de la question précédent, et un chien Milo pesant 10,5 kilos.home = Chenil([c, Chien("Milo", 10.5)])
-
-
Écrire une méthode
mangede la classeChienqui modifie l'attributpoidsdu chienselfen lui ajoutant la valeur de l'argumentration. On ajoute les contraintes suivantes concernant la méthodemange:- on vérifiera que la valeur de
rationest comprise entre 0 (exclu) et un dixième du poids du chien (inclus), -
la méthode renverra
Truesirationsatisfait ces conditions et que l'attributpoidsest bien modifié,Falsedans le cas contraire.1 2 3 4 5
def mange(self, ration): if 0 < ration <= self.poids*0.1: self.poids += ration return True return False
- on vérifiera que la valeur de
-
Écrire une méthode
nourrirde la classeChenilqui nourrit tous les chiens de la listeself.contenu. On renverra le nombre de chiens qui ont été effectivement nourris.1 2 3 4 5 6 7 8
def nourrir(self, ration): """ Chenil, float -> int """ nb_chiens_nourris = 0 for c in self.contenu: a_mangé = c.mange(ration) if a_mangé: nb_chiens_nourris = 0 return nb_chiens_nourris
On considère la suite \((u_n)_{n \in \mathbb{N}}\) définie par la relation :
-
-
Écrire une fonction récursive \(u\) qui étant donné un entier
nrenvoie le nombre \(u_n\).1 2 3 4 5 6
def u(n): """ int -> int """ if n <= 0: return 3 else: return 3*u(n - 1) + 5 -
Justifier que la fonction
uque vous avez écrite est récursive.Il y a un appel récursif à la ligne
5du code précédent.
-
-
Dresser l'arbre d'appel de l'instruction
u(3).