L'énoncé
Répondre aux questions suivantes
Tu as obtenu le score de
Question 1
On donne la fonction suivante écrite en Python :
def recherche(T, a):
i = 0
n = len(L)
while i < n and a != T[i]: i=i+1
endwhile
if i < n :
return i
Si L = [4, 5, 2, 0]
, que retourne recherche(L, 0)
?
3
0
Un message d'erreur
Comment définit-on une boucle ?
Question 2
On donne la fonction suivante écrite en Python :
def recherche(T, a):
i = 0
n = len(L) while i < n and a != T[i]:
i=i+1
if i < n :
return i
Si L = [4, 5, 2, 0]
, que retourne recherche(L, 0)
?
3
En faisant tourner l'algorithme manuellement, on trouve l'indice de l'élément 0, c'est à dire 3.
C'est la transcription de l'algorithme proposé dans la vidéo.
0
Un message d'erreur
Faire tourner l'algorithme manuellement.
Question 3
On donne la fonction suivante écrite en Python :
def recherche(T, a):
i = 0
n = len(L) while a != T[i]:
i=i+1
if i < n :
return i
Si L = [4, 5, 2, 0]
, que retourne recherche(L, 2)
?
2
L'algorithme parcourt la liste jusqu'à l'élément d'indice 2 qui est égal à 2, il retourne donc 2, à savoir l'indice de l'élément 2.
3
Un message d'erreur
Faire l'algorithme manuellement.
Question 4
On donne la fonction suivante écrite en Python :
def recherche(T, a):
i = 0
n = len(L) while a != T[i]:
i=i+1
if i < n :
return i
Si L = [4, 5, 2, 0]
, que retourne recherche(L, 3)
?
4
Un message d'erreur
En effet, comme l'élément n'appartient pas à la liste, $i$ est incrémenté de 1 à chaque passage. Or il n'y a pas de condition d'arrêt sur $i$ donc $i$ prend la valeur $n$ et l'algorithme cherche l'élément de la liste d'indice $n$ qui n'existe pas : le programme retourne donc un message d'erreur.
L'algorithme ne retourne rien car l'élément n'appartient pas à la liste.
Faire l'algorithme manuellement.
Question 5
On donne la fonction suivante écrite en Python :
def recherche(T, a):
i = 0
n = len(L) while i < n or a != T[i]:
i=i+1
if i < n :
return i
Si L = [4, 5, 2, 0, 5]
, que retourne recherche(L, 5)
?
4
L'algorithme ne retourne rien
Un message d'erreur
Lorsque la condition d'égalité est remplie, $i$ est toujours inférieur à $n$. La condition d'arrêt n'est donc pas vérifiée (il faut que les deux tests soient vérifiés, à savoir i >= n
et a == T[i]
pour que l'algorithme sorte de la boucle).
Lorsque la condition i == n
est remplie, on cherche ensuite à comparer l'élément d'indice $n$ de la liste qui n'existe pas : l'algorithme retourne donc un message d'erreur.
1
Comment fonctionne la condition or
?
Question 6
On donne la fonction suivante écrite en Python :
def recherche(T, a):
i = 0
n = len(L) while a != T[i] and i < n:
i=i+1
return i
Si L = [4, 5, 2, 0]
, que retourne recherche(L, 6)
?
L'algorithme ne retourne rien.
4
Un message d'erreur
On remarque que les deux tests ont été intervertis : on regarde d'abord si $a$ est différent de $T[i]$. Si cette condition n'est pas satisfaite, l'algorithme sort de la boucle.
6 n'appartient pas à la liste. Lors de la dernière itération $i$ prend la valeur 4. L'algorithme effectue alors le premier test qui consiste à comparer 6 avec l'élément d'indice 4 qui n'existe pas : il retourne donc un message d'erreur.
Comment fonctionne and
?
endwhile n'existe pas en Python et n'est pas utile.