Aller au contenu

Chapitre 1 : Constructions élémentaires⚓︎

Activité 1-01 : Prise en main de Jupyter

Objectifs :

  • Exécuter des cellules de carnet Jupyter et découvrir les boutons les plus utiles.
  • Faire la différence entre une expression et une instruction.
  • Installer un certain nombre de modules complémentaires qui seront utilisés dans la suite du cours de NSI.

Carnet Jupyter à télécharger ici

Carnet Jupyter accessible sur CAPYTALE

Corrigé disponible ici

Partie A - Variables, affectations et séquences d'instructions⚓︎

Variables⚓︎

Une variable est une référence à une zone de la mémoire de l'ordinateur dans laquelle est stockée une valeur.

Pour attribuer une valeur à une variable ou pour modifier sa valeur, on réalise une affectation.

1
x = 0

Une variable appelée x a été définie, et la valeur 0 a été stockée dans la variable grâce à une affectation, notée = en Python.

Pour afficher à l'écran la valeur de la variable x, on utilise la fonction print.

1
print(x)

Attention aux noms de variables choisis

Le nom d'une variable doit être choisi de sorte que l'on comprenne rapidement le rôle de cette variable.

Le nom peut contenir des lettres, des chiffres et certains caractères spéciaux. Il doit commencer par une lettre minuscule.

De plus, certains mots-clés du langage Python ne peuvent pas être utilisés comme nom de variable.

Séquences d'instructions⚓︎

Le langage de programmation Python est un langage de programmation impérative. Cela signifie que les instructions sont exécutées les unes après les autres, dans l'ordre.

Considérons par exemple la séquence d'instructions suivante :

1
2
3
4
5
6
7
8
total = 0
note = 13
total = total + note
note = 15
total = total + note
note = 8
total = total + note
moyenne = total / 3
  • Ligne 1 : On définit une variable total en lui affectant la valeur 0. Cette étape s'appelle l'initialisation de la variable.

  • Ligne 2 : On initialise une variable note en lui affectant la valeur 13.

  • Ligne 3 : On calcule d'abord la somme de la valeur de total (0) et de la valeur de note (13). On affecte ensuite le résultat (13) à la variable total. L'ancienne valeur de total (0) est écrasée par sa nouvelle valeur (13).

  • Ligne 4 : Une nouvelle valeur est affectée à la variable note. L'ancienne valeur de note (13) est écrasée par sa nouvelle valeur (15).

  • Etc.

Suivi de l'évolution de la valeur de variables

On peut représenter par un tableau les valeurs successives des variables au fur et à mesure de l'exécution des lignes de code.

Par exemple, pour le programme ci-dessus, voici le tableau obtenu :

Ligne total note moyenne Remarque
1 0 La variable total est initialisée.
2 0 13 La variable `note est initialisée.
3 13 13 La valeur de total est écrasée et remplacée par une nouvelle valeur.
4 13 15 La valeur de note est écrasée et remplacée par une nouvelle valeur.
5 28 15 La valeur de total est écrasée et remplacée par une nouvelle valeur.
6 28 8 La valeur de note est écrasée et remplacée par une nouvelle valeur.
7 36 8 La valeur de total est écrasée et remplacée par une nouvelle valeur.
8 36 8 12.0 La variable moyenne est initialisée.
Exercice 1-02 : Suivi de l'évolution de la valeur de variables

Objectif : À l'aide d'un tableau de valeurs, suivre l'évolution de la valeur de plusieurs variables au cours de l'exécution d'une séquence d'affectations.

Énoncé

1. Représenter sous forme de tableau les valeurs successives des variables lors de l'exécution de la séquence d'instructions suivante :

1
2
3
4
5
a = 3
b = 7
a = a + b
b = a - b
a = a - b

2. Quel effet est produit par l'exécution des lignes 3 à 5 ?

Corrigé

1.

Ligne de code a b
a = 3 3
b = 7 3 7
a = a + b 10 7
b = a - b 10 3
a = a - b 7 3

2. L'exécution des lignes 3 à 5 entraîne un échange des valeurs des variables a et b.

Tutor Magic⚓︎

Tutor Magic est un outil qui permet, dans un carnet Jupyter, de suivre pas à pas la valeur des variables pendant l'exécution d'une séquence d'instructions.

Il faut commencer par charger Tutor Magic en exécutant la commande suivante dans une cellule du carnet :

1
%load_ext tutormagic

Il suffit ensuite d'ajouter la ligne suivante au dessus de la séquence d'instructions à étudier :

1
%%tutor --lang python3 --heapPrimitives

Voici le résultat obtenu :

Activité 1-03 : Utilisation de Tutor Magic

Objectif : Utiliser l'outil Tutor Magic.

Carnet Jupyter à télécharger ici

Corrigé disponible ici

Partie B - Conditions et boucles⚓︎

Comme tous les langages de programmation impératifs, Python dispose d'un ensemble de structures qui permettent d'exécuter des instructions de manière répétée ou lorsqu'un certain test est réussi.

Instructions conditionnelles⚓︎

On utilise une condition, ou instruction conditionnelle, lorsque les instructions à exécuter dépendent du résultat (Vrai ou Faux) d'un certain test.

Par exemple, si la valeur de la variable moyenne est strictement inférieure à 10, on souhaite afficher à l'écran le message "Échec".

1
2
3
moyenne = 9.6
if moyenne < 10:
    print("Échec")

La condition est introduite par le mot-clé if, qui est directement suivi par le test à effectuer. La ligne se termine par :.

Le test consiste à vérifier si oui ou non la valeur de la variable moyenne est strictement inférieure à 10.

  • Dans le cas où c'est vrai (True en Python), on exécute l'instruction print("Échec"), qui provoque l'affichage demandé à l'écran.

  • Dans le cas où c'est faux (False en Python), l'instruction print("Échec") n'est pas exécutée, et rien ne s'affiche à l'écran.

Attention à la virgule mathématique en Python

La virgule mathématique est notée par un . en Python. C'est la notation anglo-saxonne.

On souhaite désormais que, dans le cas où la valeur de moyenne est strictement inférieure à 10, le message "Échec" s'affiche à l'écran mais que, dans le cas contraire, le message "Succès" s'affiche.

1
2
3
4
5
moyenne = 9.6
if moyenne < 10:
    print("Échec")
else:
    print("Succès")

Le mot-clé else, suivi de :, permet d'indiquer quelles sont les instructions à exécuter dans le cas où le test est faux.

On peut remarquer que, dans les exemples précédents, les instructions print("Échec") et print("Succès") sont décalées horizontalement de quatre espaces vers la droite. On parle d'indentation. C'est un concept fondamental du langage Python, qu'on ne retrouve pas dans la grande majorité des autres langages de programmation.

L'indentation est utilisée pour signaler précisement le début et la fin des séquences d'instructions qui doivent être exécutées.

Opérateurs de comparaison

Pour l'écriture des tests, on aura régulièrement recours aux opérateurs mathématiques de comparaison :

  • == est égal à,
  • != n'est pas égal à,
  • < est strictement inférieur à,
  • > est strictement supérieur à,
  • <= est inférieur ou égal à,
  • >= est supérieur ou égal à.
Exercice 1-04 : Instructions conditionnelles

Objectif : Écrire des instructions conditionnelles.

Carnet Jupyter à télécharger ici

Carnet Jupyter accessible sur CAPYTALE

Corrigé disponible ici

Boucle bornée (boucle pour)⚓︎

Lorsque l'on souhaite exécuter plusieurs fois de suite une même séquence d'instructions, et que l'on connait a priori le nombre de répétitions souhaitées, on utilise une boucle bornée.

Par exemple, si on exécute la séquence d'instructions suivantes :

1
2
3
4
5
for nombre in range(10):
    carre = nombre * nombre
    cube = nombre * nombre * nombre
    print("Le carré du nombre", nombre, "est", carre, "et son cube est", cube)
print("Exécution terminée")

alors l'affichage obtenu est :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
Le carré du nombre 0 est 0 et son cube est 0
Le carré du nombre 1 est 1 et son cube est 1
Le carré du nombre 2 est 4 et son cube est 8
Le carré du nombre 3 est 9 et son cube est 27
Le carré du nombre 4 est 16 et son cube est 64
Le carré du nombre 5 est 25 et son cube est 125
Le carré du nombre 6 est 36 et son cube est 216
Le carré du nombre 7 est 49 et son cube est 343
Le carré du nombre 8 est 64 et son cube est 512
Le carré du nombre 9 est 81 et son cube est 729
Exécution terminée

La boucle pour est introduite par le mot-clé for et la première ligne se termine par :.

Sur les lignes 2 à 4 est écrite la séquence d'instructions à exécuter plusieurs fois. Elle est indentée.

La ligne 5, qui n'est pas indentée, ne fait pas partie de la séquence d'instructions à répéter. Elle n'est donc exécutée qu'une seule fois, après la fin de la boucle pour.

Visualisation à l'aide de Tutor Magic

À propos de l'expression range(10)

L'expression range(10) permet de préciser qu'on souhaite dix répétitions, pour tous les entiers nombre allant de 0 à 9.

Lorsque la séquence d'instructions est exécutée pour la première fois, la variable nombre a pour valeur 0.

Ensuite, la même séquence d'instructions est exécutée à nouveau, mais cette fois la variable nombre a pour valeur 1.

La séquence est ensuite exécutée alors que la variable nombre a pour valeur 2, puis 3, puis 4, etc. jusqu'à 9.

Exercice 1-05 : Différentes utilisations de range

Objectif : Comprendre comment s'utilise range dans l'écriture d'une boucle pour.

Carnet Jupyter à télécharger ici

Carnet Jupyter accessible sur CAPYTALE

Corrigé disponible ici

Exercice 1-06 : Boucles bornées

Objectif : Écrire des boucles bornées.

Carnet Jupyter à télécharger ici

Carnet Jupyter accessible sur CAPYTALE

Corrigé disponible ici

Boucle non bornée (boucle tant que)⚓︎

Lorsque l'on souhaite exécuter plusieurs fois de suite une même séquence d'instructions, et que l'on ne connait pas a priori le nombre de répétitions souhaitées, on utilise une boucle non bornée.

Par exemple, si on exécute la séquence d'instructions suivantes :

1
2
3
4
5
nombre = 1
while nombre < 2000000:
    print(nombre)
    nombre = nombre * 16
print("Exécution terminée")

alors l'affichage obtenu est :

1
2
3
4
5
6
7
1
16
256
4096
65536
1048576
Exécution terminée

La boucle tant que est introduite par le mot-clé while, suivi d'une condition qui doit être vraie pour que la séquence d'instructions s'exécute. La première ligne se termine par :.

Sur les lignes 2 et 3 est écrite la séquence d'instructions à exécuter plusieurs fois, et elle est indentée.

La ligne 4, qui n'est pas indentée, ne fait pas partie de la séquence d'instructions à répéter. Elle n'est donc exécutée qu'une seule fois, après la fin de la boucle tant que.

Visualisation à l'aide de Tutor Magic

Attention aux boucles infinies

Il faut s'assurer que la condition qui définit la boucle tant que devient fausse à un moment donné. Dans le cas contraire, on parle de boucle infinie, et le programme ne fonctionne pas car on ne sort jamais de la boucle.

1
2
3
4
nombre = 1
while nombre != 0:  # ATTENTION : BOUCLE INFINIE !
    nombre = nombre + 1
print("Exécution terminée")  # Cette ligne ne sera jamais exécutée

La variable nombre est initialisée à 1 et elle augmente ensuite d'une unité lors de chaque passage dans la boucle. Elle ne sera donc jamais égale à 0 et la boucle ne s'arrêtera donc jamais.

Exercice 1-07 : Boucles non bornées

Objectif : Écrire des boucles non bornées.

Carnet Jupyter à télécharger ici

Carnet Jupyter accessible sur CAPYTALE

Corrigé disponible ici

Partie C - Exercices et activités⚓︎

Exercices 1-08 à 1-13

Carnet Jupyter à télécharger ici

Carnet Jupyter accessible sur CAPYTALE

Corrigé disponible ici

Carnet Jupyter à télécharger ici

Carnet Jupyter accessible sur CAPYTALE

Corrigé disponible ici

Carnet Jupyter à télécharger ici

Carnet Jupyter accessible sur CAPYTALE

Corrigé disponible ici

Carnet Jupyter à télécharger ici

Carnet Jupyter accessible sur CAPYTALE

Corrigé disponible ici

Carnet Jupyter à télécharger ici

Corrigé disponible ici

Carnet Jupyter à télécharger ici

Corrigé disponible ici

Activités 1-14 à 1-16

Objectifs :

  • Utiliser des instructions conditionnelles et des boucles.
  • Découvrir la fonction permettant de tirer aléatoirement un nombre entier.
  • Découvrir la fonction permettant de demander à l'utilisateur de faire une saisie au clavier.

Carnet Jupyter à télécharger ici

Carnet Jupyter accessible sur CAPYTALE

Corrigé disponible ici

Objectif : Analyser un code et y repérer les variables, les affectations, les instructions conditionnelles et les boucles.

Carnet Jupyter à télécharger ici

Carnet Jupyter accessible sur CAPYTALE

Corrigé disponible ici

Objectif : Mettre en œuvre de nombreuses notions : variables et affectations, instructions conditionnelles, boucles, tirage d'entiers aléatoires, affichages à l'écran, saisies au clavier.

Carnet Jupyter à télécharger ici

Carnet Jupyter accessible sur CAPYTALE

Corrigé disponible ici

Ce qu'il faut savoir et savoir faire⚓︎

  • Modifier et exécuter des cellules dans un carnet Jupyter.
  • Écrire une instruction conditionnelle.
  • Écrire une boucle bornée de la forme for variable in range(nb_repetitions):.
  • Écrire une boucle non bornée...
  • ... mais pas une boucle infinie.
  • Utiliser correctement l'indentation pour définir les séquences d'instructions.
  • Être capable de suivre la valeur d'une variable au cours de l'exécution d'une séquence d'instructions, à la main ou à l'aide de Tutor Magic.
  • Faire un affichage à l'écran avec la fonction print.
  • Tirer un nombre entier au hasard avec la fonction randint.
  • Demander à l'utilisateur de saisir un entier au clavier avec la commande int(input()).
  • Connaître la différence entre les expressions range(a), range(a, b) et range(a, b, c).