Six questions courtes sur les méthodes de programmation.
1.3 + 4 est :
2.n = 42 est :
3.La précondition d’une fonction décrit :
4.Dans ce chapitre, un invariant de boucle est utilisé comme :
5.Parmi les affirmations suivantes sur assert, lesquelles sont vraies ?
6.D’après la méthode « Partitionner le domaine d’entrée », quelles catégories de cas faut-il tester au minimum ?
Pour chacun des fragments de code Python suivants, indiquer s’il s’agit d’une expression ou d’une instruction, en justifiant brièvement.
len(l)
Une expression : elle se calcule en une valeur (la longueur de l), qui peut par exemple être affectée à une variable ou passée en argument.
x = 5
Une instruction : elle a l’effet de bord d’associer la valeur 5 au nom x, et ne se calcule pas elle-même en une valeur utilisable.
n % 2 == 0
Une expression : elle se calcule en une valeur booléenne (True ou False).
l.append(3)
Une instruction : append modifie la liste l en place (effet de bord), et renvoie None, une valeur sans intérêt ici.
Que fait cette méthode, et que renvoie-t-elle ?
On donne la fonction suivante :
def racine_carree_positive(x):
"""
Précondition : x est un nombre positif ou nul.
"""
assert x >= 0, "racine_carree_positive : x doit être positif ou nul"
return x ** 0.5
Que se passe-t-il exactement lors de l’appel racine_carree_positive(-3) ?
L’expression x >= 0 vaut False (puisque x=−3), donc l’instruction assert interrompt immédiatement l’exécution en levant une AssertionError, accompagnée du message "racine_carree_positive : x doit être positif ou nul". La ligne return x ** 0.5 n’est jamais atteinte.
Cette fonction reçoit une valeur x saisie directement par un utilisateur au clavier, potentiellement erronée (l’utilisateur peut très bien taper un nombre négatif). L’assert ci-dessus est-il, dans ce contexte, un bon moyen de gérer cette erreur ? Justifier à l’aide du cours.
Non. Le cours précise explicitement qu’assert sert à vérifier des conditions que l’on croit toujours vraies compte tenu de la spécification — typiquement des préconditions internes au programme — et non à gérer des erreurs prévisibles comme une saisie utilisateur incorrecte. Pour ce second cas, il faudrait un traitement dédié (validation de la saisie, exception spécifique, nouvelle demande à l’utilisateur), pas une simple assert.
Encore 3 blocs dans ce document. Créer un compte ne demande qu'une adresse e-mail.