Cours de Seconde

Algorithmique et programmation

Variables, affectation, conditions, boucles et fonctions en Python, avec les simulations aléatoires attendues en Seconde.

Avant de commencer

  • Calculer avec les quatre opérations et les pourcentages.
  • Comprendre une consigne écrite en langage courant et la traduire en calcul.

À la fin du chapitre, tu sais

  • Lire et écrire une affectation, une séquence d'instructions.
  • Reconnaître le type de chaque variable utilisée.
  • Programmer une instruction conditionnelle.
  • Choisir entre une boucle bornée et une boucle non bornée, et la programmer.
  • Écrire une fonction Python, puis l'appeler.
  • Simuler une expérience aléatoire et observer la fréquence obtenue.
Sommaire

I. Variables et affectation

Un programme manipule des valeurs qu'il faut bien ranger quelque part. Une variable est une case de la mémoire, désignée par un nom, dans laquelle le programme dépose une valeur pour la réutiliser plus tard.

DéfinitionAffectation

Affecter une valeur à une variable, c'est ranger cette valeur dans la case correspondante. En langage naturel, l'affectation se note avec une flèche, par exemple a5a \leftarrow 5. En Python, elle s'écrit avec le signe égal :

a = 5
b = a + 3

Après ces deux lignes, la variable a contient 55 et la variable b contient 88.

Attention

Le signe = d'un programme n'est pas le signe d'égalité des mathématiques. La ligne n = n + 1 n'a aucun sens comme équation, mais elle est parfaitement claire comme instruction : elle remplace le contenu de n par ce contenu augmenté de 11.

DéfinitionTypes de variables

Chaque valeur possède un type, qui décide des opérations autorisées.

typenom Pythonexemples
entierint0, -7, 2026
nombre à virgulefloat3.14, -0.5
booléenboolTrue, False
chaîne de caractèresstr"bonjour", "12"

La virgule décimale s'écrit avec un point en Python : le nombre 3,53{,}5 se note 3.5.

Exemple

Le calcul "12" + "3" renvoie la chaîne "123", alors que 12 + 3 renvoie l'entier 15. Le type change complètement le résultat, d'où l'importance de savoir ce que contient chaque variable.

II. Les instructions conditionnelles

DéfinitionStructure si … sinon

Une instruction conditionnelle exécute un bloc d'instructions seulement lorsqu'une condition est vraie, et éventuellement un autre bloc sinon.

if note >= 10:
    mention = "admis"
else:
    mention = "ajourné"

La condition est une proposition qui vaut True ou False. Les instructions du bloc sont décalées vers la droite : cette indentation fait partie du langage, elle indique ce qui appartient au bloc.

Remarque

Les comparaisons s'écrivent <, >, <=, >=, == pour l'égalité et != pour la différence. Le double signe égal distingue la comparaison de l'affectation.

ExempleValeur absolue

Le programme suivant calcule la distance de x à zéro, c'est-à-dire la valeur absolue de x, en distinguant les deux cas.

if x >= 0:
    d = x
else:
    d = -x

III. Les boucles

Répéter une instruction dix fois à la main est fastidieux, et impossible si le nombre de répétitions dépend du calcul. Les boucles servent exactement à cela, et il en existe deux sortes.

DéfinitionBoucle bornée

Une boucle bornée répète un bloc un nombre de fois connu à l'avance.

somme = 0
for i in range(1, 11):
    somme = somme + i

L'instruction range(1, 11) fait prendre à la variable i les valeurs entières de 11 à 1010. La borne de droite est exclue.

DéfinitionBoucle non bornée

Une boucle non bornée répète un bloc tant qu'une condition reste vraie. Le nombre de tours n'est pas connu au départ.

n = 1
while 2 ** n < 1000:
    n = n + 1

À la fin de l'exécution, la variable n contient le plus petit exposant tel que 2n10002^n \geqslant 1000.

Attention

Dans une boucle non bornée, quelque chose doit faire évoluer la condition à chaque tour. Sans cela le programme tourne indéfiniment. Ici, c'est la ligne n = n + 1 qui garantit l'arrêt.

MéthodeChoisir sa boucle

La question à se poser est simple : sait-on compter les répétitions avant de lancer le programme ? Si oui, la boucle bornée convient. Si le nombre de tours dépend d'un résultat obtenu en cours de route, par exemple « jusqu'à dépasser 10001000 », la boucle non bornée s'impose.

IV. Les fonctions

DéfinitionDéfinir et appeler une fonction

Une fonction est un morceau de programme nommé, qui reçoit des arguments et renvoie un résultat. La définir une fois permet de l'utiliser autant de fois que nécessaire.

def aire_rectangle(longueur, largeur):
    return longueur * largeur

L'appel aire_rectangle(5, 3) renvoie alors 1515.

Remarque

L'instruction return met fin à la fonction et transmet la valeur calculée. Sans elle, la fonction ne renvoie rien, et le résultat du calcul est perdu.

ExempleUne fonction à un argument

La fonction suivante applique une remise de 20%20\,\% à un prix donné.

def prix_remise(prix):
    return prix * 0.8

L'appel prix_remise(50) renvoie 4040. Une remise de 20%20\,\% revient bien à multiplier par 0,80{,}8.

V. Simuler le hasard

Un programme peut tirer des nombres au hasard, ce qui permet de simuler une expérience aléatoire des milliers de fois et d'observer les fréquences obtenues.

DéfinitionLe module random

Le module random fournit les fonctions de tirage au hasard.

from random import randint, random

randint(1, 6)   # un entier au hasard entre 1 et 6, bornes comprises
random()        # un nombre à virgule au hasard dans [0 ; 1[
ExempleSimuler un lancer de dé

La fonction suivante compte le nombre de six obtenus en n lancers d'un dé équilibré.

from random import randint

def nombre_de_six(n):
    compteur = 0
    for i in range(n):
        if randint(1, 6) == 6:
            compteur = compteur + 1
    return compteur

En divisant le résultat par n, on obtient la fréquence des six. Pour nn grand, cette fréquence est proche de 16\dfrac{1}{6}, ce qui illustre la loi des grands nombres.

Attention

Deux exécutions du même programme aléatoire ne donnent pas le même résultat. C'est normal, et c'est même tout l'intérêt : la fluctuation observée d'une simulation à l'autre est un objet d'étude à part entière.

Passer à la pratique

9 exercices corrigés sur ce chapitre.