Programme Officiel
Contenus Capacités attendues

Boucles bornées et non bornées

Définitions et appels de fonctions

Écrire et développer des programmes pour répondre à des problèmes et modéliser des phénomènes physiques, économiques et sociaux.
Lien vers le programme complet

RepeatUntil.svg
Image by Scratch is a project of the Scratch Foundation, in collaboration with the Lifelong Kindergarten Group at the MIT Media Lab. It is available for free at https://scratch.mit.edu - http://scratchblocks.github.io, CC BY-SA 2.5, Link

Dans ce chapitre, nous allons nous intéresser aux boucles qui permettent de répéter des instructions dans une programme, ainsi qu'aux fonctions qui permettent d'exécuter des portions de programme à la demande.

Les boucles

Les boucles permettent de répéter des blocs d'instructions.

Il en existe deux types:

  • Les boucles bornées avec le mot-clé for.
  • Les boucles non-bornées avec le mot-clé while.

Les boucles bornées: for

Lorsqu'on connait le nombre de répétitions à effectuer, on utilise la boucle for associée à la fonction range().

Pour répéter 7 fois un bloc d'instructions, on utilise:

for i in range(7):
    print(i)

Affichera:

0
1
2
3
4
5
6
 

On peut aussi réaliser des boucles sur des types construits qui seront vus en première.

  • Sur des chaînes de caractères:

    for lettre in "Bonjour!":
        print(i)

    Affichera:

    B
    o
    n
    j
    o
    u
    r
    !
  • Sur des listes:

    for premier in [2, 3, 5, 7, 11, 13]:
        print(premier)

    Affichera:

    2
    3
    5
    7
    11
    13

Les boucles non bornées: while

Lorsqu'on ne connait pas le nombre de répétitions à effectuer, on utilise la boucle while associée à une variable de contrôle.

Voici un programme qui permet de vérifier que votre compte n'est pas à découvert. Pour cela on utilise la variable de contrôle solde.

solde = 1000                # initialisation
while solde > 0:            # condition d'arrêt de la boucle
    débit = float(input("Entrez la somme à débiter: "))
    solde = solde - débit   # mise à jour de la variable de contrôle

# On sort de la boucle
print("Vous êtes à découvert")

Attention à bien vérifier que votre boucle finira par se terminer sinon votre programme rentrera dans une boucle infinie, et il faudra obligatoirement le stopper.

Les fonctions

Il s'agit de blocs d'instructions exécutés à la demande, on les définit par le mot-clef def.

def dit_bonjour(prenom):
    print("Bonjour " + prenom)

Nous venons de définir la fonction, mais pour l'instant, il ne se passe rien.

Pour exécuter le code de la fonction, il faut maintenant appeler la fonction avec un paramètre pour que l'exécuter.

# on appelle la fonction avec l'argument Ada
dit_bonjour("Ada")

Affichera "Bonjour Ada".

Les fonctions peuvent renvoyer une valeur grâce au mot-clé return.

def périmétre(rayon):
    p = 2*3.14*rayon
    return p

Cette fois-ci l'appel renverra la valeur du périmètre, on peut alors le stocker dans une variable.

# on appelle la fonction avec l'argument 0.5
peri_05 = périmètre(0.5)

La variable peri_05 contient la valeur renvoyée par l'appel de la fonction 3.14.

Une fonction peut accepter un nombre quelconque de paramètres, il suffit de les séparer par des virgules.

Avec deux paramètres.

def surface_rectangle(l, L):
    return l*L
# appel
surface_rectangle(2, 3) # renvoie 6

Avec aucun paramètre:

import time
def affiche_heure():
    print(time.asctime())
# Pour l'appel on met les parénthèses même s'il n'y a pas d'arguments
affiche_heure()
# affiche: Mon Jan 18 10:16:43 2021 par exemple