QCM - Dérouler un algorithme

QCM 10

Pour s’entraîner

  1. Durant l’exécution de ce programme, quelles sont les différentes valeurs que prend la variable maxi?
entiers = [3, 1, 8, 4]
maxi = 0
for v in entiers:
    if v > maxi:
        maxi = v
  • 0 - 3 - 8
  • 0 - 3 - 1 - 8 - 4
  • 0 - 1 - 3 - 4 - 8
  • 0 - 1 - 2 - 3 - 4

0 - 3 - 8

maxi n’est mis à jour que si la variable v contient un entier plus grand.

  1. Durant l’exécution de ce programme, quelles sont les différentes valeurs que prend la variable mini?
entiers = [3, 1, 8, 4]
mini = 0
for v in entiers:
    if v < mini:
        mini = v
  • 0
  • 0 - 3 - 1
  • 0 - 1
  • 0 - 3 - 1 - 8 - 4

0

Lors de la comparaison (if) aucune valeur du tableau n’est plus petite que mini ( qui vaut 0 au départ ). On peut considérer ici qu’il y a une erreur de programmation: il aurait fallu initialiser mini avec une valeur supérieure à la plus grande du tableau.

  1. Durant l’exécution de ce programme, quelles sont les différentes valeurs que prend la variable maxi?
entiers = [3, 1, 8, 4]
maxi = 0
for i in range(len(entiers)):
    if i > maxi:
        maxi = i
  • 0
  • 0 - 3 - 1 - 8
  • 0 - 1 - 2 - 3
  • 0 - 3 - 1 - 8 - 4

0 - 1 - 2 - 3

La variable i ne contient pas les valeurs du tableau mais les indices de ces valeurs. À chaque tour de boucle, i augmente de 1 puis est comparé à maxi.

  1. Durant l’exécution de ce programme, quelles sont les différentes valeurs que prend la variable ind?
entiers = [3, 2, 1, 0]
maxi = 0
ind = 0
for i in range(len(entiers)):
    if entiers[i] > maxi:
        maxi = entiers[i]
        ind = i
  • 0 - 0
  • 0 - 3 - 2 - 1 - 0
  • 0 - 1 - 2 - 3
  • 0

0 - 0

Lors de la première itération (premier tour de boucle), la variable ind est mise à jour car la première valeur du tableau est supérieure à 0.

  1. Que renvoie l’appel de la fonction recherche dans le programme principal?
def recherche(tableau: list):
    maxi = 0
    ind = 0
    for i in range(len(tableau)):
        if tableau[i] > maxi:
            maxi = tableau[i]
            ind = i
    return (ind, maxi)

# programme principal
entiers = [3, 1, 8, 4]
resultat = recherche(entiers)
  • 2
  • (8)
  • (2, 8)
  • (0, 3), (1, 1), (2, 8), (3, 4)
  • None

(2, 8)

La fonction renvoie un tuple qui contient la position du maximum et la valeur de ce maximum.

  1. Que renvoie l’appel de la fonction recherche dans le programme principal?
def recherche(tableau: list) -> tuple:
    maxi = 0
    ind = 0
    for i in range(len(tableau)):
        if tableau[i] > maxi:
            maxi = tableau[i]
            ind = i

# programme principal
entiers = [3, 1, 8, 4]
resultat = recherche(entiers)
  • 2
  • (8)
  • (2, 8)
  • (0, 3), (1, 1), (2, 8), (3, 4)
  • None

None

La signature de la fonction indique que la fonction doit renvoyer un tuple. Cependant, il ne s’agit que d’une indication. Il n’y a pas d’instruction return dans la fonction, donc elle renvoie None par défaut.

La fonction semble mal construite.

  1. Que contient le tableau valeurs à la fin de l’exécution du programme?
grille = [[3, 2, 1], [6, 5, 4], [9, 8, 7]]
valeurs = []
for lig in range(len(grille)):
    valeurs.append(grille[lig][lig])
  • [1, 2, 3]
  • [2, 5, 8]
  • [1, 5, 9]
  • [3, 5, 7]

[3, 5, 7]

La variable lig prend successivement les valeurs 0, 1, 2. Dans le tableau valeurs, on ajoute alors les éléments:

  • grille[0][0]
  • grille[1][1]
  • grille[2][2]
  1. Que contient le tableau valeurs à la fin de l’exécution du programme?
grille = [[3, 2, 1], [6, 5, 4], [9, 8, 7]]
valeurs = []
for i in range(len(grille)):
    for j in range(len(grille[i])):
        valeurs.append(grille[i][j])
  • [3, 2, 1, 6, 5, 4, 9, 8, 7]
  • [3, 2, 1]
  • [3, 6, 9]
  • [3, 5, 7]

[3, 2, 1, 6, 5, 4, 9, 8, 7]

La variable i prend successivement les valeurs 0, 1, 2. Pour chaque valeur de i, la variable j prend les valeurs 0, 1, 2. On parcourt alors le premier tableau, puis le deuxième, puis le troisième.

  1. Que contient le tableau valeurs à la fin de l’exécution du programme?
grille = [[3, 2, 1], [6, 5, 4], [9, 8, 7]]
valeurs = []
for i in range(len(grille[1])):
    valeurs.append(grille[1][i])
  • [3, 2, 1, 6, 5, 4, 9, 8, 7]
  • [3, 2, 1]
  • [2, 5, 8]
  • [6, 5, 4]

[6, 5, 4]

On ne parcourt que le deuxième tableau (grille[1]).

  1. Que contient le tableau valeurs à la fin de l’exécution du programme?
grille = [[3, 2, 1], [6, 5, 4], [9, 8, 7]]
valeurs = []
for i in range(len(grille)):
    valeurs.append(grille[i][1])
  • []
  • [3, 2, 1]
  • [2, 5, 8]
  • [3, 5, 7]

[2, 5, 8]

On sélectionne l’élément de rang 1 de chaque tableau.