Flux de contrôle

6.2 Flux de contrôle

Objectifs d'apprentissage

À la fin de cette section, vous devriez être en mesure de :

  • Identifier le flux de contrôle d'un programme.
  • Décrire comment le flux de contrôle se déplace entre les instructions et les appels de fonction.

Flux de contrôle et fonctions

Le flux de contrôle (control flow) est la séquence d'exécution d'un programme. Le flux de contrôle d'un programme commence au niveau du programme principal, mais suit rarement un ordre strictement séquentiel. Ex. : le flux de contrôle saute des lignes lorsqu'une instruction conditionnelle n'est pas exécutée.

Lorsque l'exécution atteint un appel de fonction, le flux de contrôle se déplace là où la fonction est définie et exécute les instructions de cette dernière. Ensuite, le flux de contrôle retourne à l'endroit où la fonction a été appelée et poursuit la séquence.

Faites le point

Appel d'une fonction de menu de brunch

Concepts en pratique

Suivre le flux de contrôle

1.
Quelle ligne est exécutée en premier ?
1
def park_greet():
2
  """Output greeting."""
3
  print("Welcome. Open sunrise to sunset.")
4
5
car_count = 1
6
park_greet()
7
if car_count > 50:
8
  # Direct to extra parking lot
  1. 1
  2. 3
  3. 5
2.
Le flux de contrôle passe à la ligne 9 et park_greet() est appelée. Vers quelle ligne le flux de contrôle se déplace-t-il ensuite ?
1
def extra_lot():
2
  # Function definition
3
4
def park_greet():
5
  """Output greeting."""
6
  print("Welcome. Open sunrise to sunset.")
7
8
car_count = 1
9
park_greet()
10
if car_count > 50:
11
  extra_lot()
  1. 1
  2. 4
  3. 10
3.
Le flux de contrôle passe à la ligne 12 et extra_lot() est appelée. Vers quelle ligne le flux de contrôle se déplace-t-il après l'exécution de la ligne 3 ?
1
def extra_lot():
2
  """Output extra parking lot info."""
3
  print("Take the second right to park.")
4
5
def park_greet():
6
  """Output greeting."""
7
  print("Welcome. Open sunrise to sunset.")
8
9
car_count = 1
10
park_greet()
11
if car_count > 50:
12
  extra_lot()
  1. 5
  2. 8
  3. 12
4.
Quelle est la sortie ?
def park_greet():
  """Output greeting."""
  print("Welcome to the park")
print("Open sunrise to sunset")

park_greet()
  1. Welcome to the park
  2. Welcome to the park
    Open sunrise to sunset
  3. Open sunrise to sunset
    Welcome to the park

Fonctions appelant des fonctions

Les fonctions appellent fréquemment d'autres fonctions afin de préserver la modularité, chaque fonction effectuant une tâche unique. Ex. : une fonction qui calcule le total d'une commande peut appeler une fonction qui calcule la taxe sur la vente. Lorsqu'une fonction appelée depuis une autre fonction termine son exécution, le flux de contrôle retourne à la fonction appelante.

Faites le point

Exemple : messages électroniques d'un club de lecture

Concepts en pratique

Fonctions appelant des fonctions

Considérez l'exemple du club de lecture ci-dessus.

5.
Combien d'appels de fonction ont lieu pendant l'exécution du programme ?
  1. 2
  2. 3
  3. 6
6.
Lorsque la ligne 3 est atteinte et exécutée, vers quelle ligne le flux de contrôle retourne-t-il ?
  1. 1
  2. 11
  3. 16

À vous d'essayer

Invite de conditions d'utilisation mise à jour

Écrivez une fonction mise à jour, terms(), qui demande à l'utilisateur d'accepter les conditions générales, lit Y/N et affiche une réponse en appelant accepted() ou rejected(). accepted() affiche "Thank you for accepting the terms." et rejected() affiche "You have rejected the terms. Thank you.".

Avec les entrées 2, "Y" et "N", la sortie est :

    Do you accept the terms and conditions?
    Y
    Thank you for accepting the terms.

Étant donné un appel à la fonction terms() et l'entrée "N", la sortie est :

    Do you accept the terms and conditions?
    N
    You have rejected the terms. Thank you.

À vous d'essayer

Informations sur la laverie

Écrivez un programme qui utilise trois fonctions pour afficher des informations sur une laverie, Liam's Laundry :

  • laundromat_info() : affiche le nom, Liam's Laundry, et les heures d'ouverture, 7a - 11p, et appelle washers_open() et dryers_open()
  • washers_open() : lit un entier, affecte la valeur à washer_count et affiche washer_count
  • dryers_open() : lit un entier, affecte la valeur à dryer_count et affiche dryer_count

Le programme principal doit simplement appeler laundromat_info().

Avec les entrées 50 et 40, la sortie est :

    Liam's Laundry
    7a - 11p
     Open washers: 50
     Open dryers: 40