Cours Recherche d'une occurrence
QCM
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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

endwhile n'existe pas en Python et n'est pas utile. 

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