Tout le monde utilise un ordinateur, mais c’est une autre chose de le piloter ! Tu vas apprendre ici les bases de la programmation. L’objectif de ce livre est double : approfondir les mathématiques à travers l’informatique et maîtriser la programmation en s’aidant des mathématiques.
Python
Choisir un langage de programmation pour débuter est délicat. Il faut un langage avec une prise en main facile, bien documenté, avec une grande communauté d’utilisateurs. Python possède toutes ces qualités et davantage encore. Il est moderne, puissant et très utilisé, y compris par les programmeurs professionnels. Malgré toutes ces qualités, débuter la programmation (avec Python ou un autre langage) est difficile. Le mieux est d’avoir déjà une expérience du code, à l’aide de Scratch par exemple. Il reste quand même une grande marche à gravir et ce livre est là pour t’accompagner.
Objectif
Bien maîtriser Python te permettra d’apprendre facilement les autres langages. Surtout le langage n’est pas le plus important, l’essentiel ce sont les algorithmes. Les algorithmes sont comme des recettes de cuisine, il faut suivre pas à pas les instructions et ce qui compte, c’est le résultat final et non le langage avec lequel a été écrite la recette. Ce livre n’est donc ni un manuel complet de Python, ni un cours d’informatique, il ne s’agit pas non plus d’utiliser Python comme une super-calculatrice.
Le but est de découvrir des algorithmes, d’apprendre la programmation pas à pas à travers des activités mathématiques/informatiques. Cela te permettra de mettre en pratique des mathématiques avec ici la volonté de se limiter aux connaissances acquises au niveau seconde.
Mathématiques pour l’informatique
Informatique pour les mathématiques
Comme les ordinateurs ne manipulent que des nombres, les mathématiques sont indispensables pour communiquer avec eux. Un exemple est l’écriture binaire qui utilise les puissances de 2, la division euclidienne. . . Un autre exemple est l’affichage graphique à l’écran qui nécessite de bien maîtriser les coordonnées (x, y), la trigonométrie. . .
L’informatique accompagne à merveille les mathématiques ! L’ordinateur devient indispensable pour manipuler de très grands nombres ou bien tester des conjectures sur de nombreux cas. Tu découvriras dans ce livre des fractales, des L-systèmes, des arbres browniens. . . et la beauté de phénomènes mathématiques complexes.
Vous pouvez récupérer l’intégralité des codes Python des activités ainsi que tous les fichiers sources sur la page GitHub d’Exo7 : « GitHub : Python au lycée .
Les vidéos des cours avec des explications pas à pas et la présentation des projets sont disponibles depuis la chaîne Youtube : « Youtube : Python au lycée ».
Sommaire
I Mise en route 1
1 Premiers pas 2
2 Tortue (Scratch avec Python) 9
II Fondamentaux 17
3 Si alors 18
4 Fonctions 24
5 Arithmétique – Boucle tant que – I 34
6 Chaînes de caractères – Analyse d’un texte 41
7 Listes I 51
III Notions avancées 59
8 Statistique – Visualisation de données 60
9 Fichiers 70
10 Arithmétique – Boucle tant que – II 79
11 Binaire I 84
12 Listes II 90
13 Binaire II 97
IV Projets 100
14 Probabilités – Paradoxe de Parrondo 101
15 Chercher et remplacer 104
16 Calculatrice polonaise – Piles 109
17 Visualiseur de texte – Markdown 121
18 L-système 128
19 Images dynamiques 136
20 Jeu de la vie 143
21 Graphes et combinatoire de Ramsey 149
22 Bitcoin 158
23 Constructions aléatoires 167
V Guides 174
24 Guide de survie Python 175
25 Principales fonctions 184
26 Notes et références 200
Index
Résumé des activités
Premiers pas
Lance-toi dans la programmation ! Dans cette toute première activité, tu vas apprendre à manipuler des nombres, des variables et tu vas coder tes premières boucles avec Python.
Tortue (Scratch avec Python)
Le module turtle permet de tracer facilement des dessins en Python. Il s’agit de commander une tortue à l’aide d’instructions simples comme « avancer », « tourner ». . . C’est le même principe qu’avec Scratch, avec toutefois des différences : tu ne déplaces plus des blocs, mais tu écris les instructions ; et en plus les instructions sont en anglais !
Si alors
L’ordinateur peut réagir en fonction d’une situation. Si une condition est remplie il agit d’une certaine façon, sinon il fait autre chose.
Fonctions
Écrire une fonction, c’est la façon la plus simple de regrouper du code pour une tâche bien particulière, dans le but de l’exécuter une ou plusieurs fois par la suite.
Arithmétique – Boucle tant que – I
Les activités de cette fiche sont centrées sur l’arithmétique : division euclidienne, nombres premiers. . . C’est l’occasion d’utiliser intensivement la boucle « tant que ».
Chaînes de caractères – Analyse d’un texte
Tu vas faire quelques activités amusantes en manipulant les chaînes de caractères.
Listes I
Une liste est une façon de regrouper des éléments en un seul objet. Après avoir défini une liste, on peut récupérer un par un chaque élément de la liste, mais aussi en ajouter de nouveaux. . .
Statistique – Visualisation de données
C’est bien de savoir calculer le minimum, le maximum, la moyenne, les quartiles d’une série. C’est mieux de les visualiser tous sur un même graphique !
Fichiers
Tu vas apprendre à lire et à écrire des données dans des fichiers.
Arithmétique – Boucle tant que – II
On approfondit notre étude des nombres avec la boucle « tant que ». Pour cette fiche tu as besoin d’une fonction est_premier() construite dans la fiche « Arithmétique – Boucle tant que – I ».
On continue notre exploration du monde des 0 et des 1.
Probabilités – Paradoxe de Parrondo
Tu vas programmer deux jeux simples. Lorsque tu joues à ces jeux, tu as plus de chances de perdre que de gagner. Pourtant lorsque tu joues aux deux jeux en même temps, tu as plus de chances de gagner que de perdre ! C’est une situation paradoxale.
Chercher et remplacer
Chercher et remplacer sont deux tâches très fréquentes. Savoir les utiliser et comprendre comment elles fonctionnent te permettra d’être plus efficace.
Calculatrice polonaise – Piles
Tu vas programmer ta propre calculatrice ! Pour cela tu vas découvrir une nouvelle notation pour les formules et aussi découvrir ce qu’est une « pile » en informatique.
Visualiseur de texte – Markdown
Tu vas programmer un traitement de texte tout simple qui affiche proprement des paragraphes et met en évidence les mots en gras et en italiques.
L-système
Les L-systèmes offrent une façon très simple de coder des phénomènes complexes. À partir d’un mot initial et d’opérations de remplacement, on arrive à des mots compliqués. Lorsque l’on « dessine » ces mots, on obtient de superbes figures fractales. Le « L » vient du botaniste A. Lindenmayer qui a inventé les L-systèmes afin de modéliser les plantes.
Images dynamiques
Nous allons déformer des images. En répétant ces déformations, les images deviennent brouillées. Mais par miracle au bout d’un certain nombre de répétitions l’image de départ réapparaît !
Jeu de la vie
Le jeu de la vie est un modèle simple de l’évolution d’une population de cellules qui naissent et meurent au cours du temps. Le « jeu » consiste à trouver des configurations initiales qui donnent des évolutions intéressantes : certains groupes de cellules disparaissent, d’autres se stabilisent, certains se déplacent. . .
Graphes et combinatoire de Ramsey
Tu vas voir qu’un problème tout simple, qui concerne les relations entre seulement six personnes, va demander énormément de calculs pour être résolu.
Bitcoin
Le bitcoin est une monnaie dématérialisée et décentralisée. Elle repose sur deux principes informatiques : la cryptographie à clé publique et la preuve de travail. Pour comprendre ce second principe, tu vas créer un modèle simple de bitcoin.
Constructions aléatoires
Tu vas programmer deux méthodes pour construire des figures qui ressemblent à des algues ou des coraux. Chaque figure est formée de petits blocs lancés au hasard et qui se collent les uns aux autres.
PREMIÈRE PARTIE
Chapitre 1 Premiers pas
Lance-toi dans la programmation ! Dans cette toute première activité, tu vas apprendre à manipuler des nombres, des variables et tu vas coder tes premières boucles avec Python.
Premiers pas - partie 1 - Lance-toi
Premiers pas - partie 2 - Variable
Premiers pas - partie 3 - Fonctions
Premiers pas - partie 4 - Boucle pour
Installer Python
DØmarrer Python et utiliser IDLE
Cours 1 (Nombres avec Python).
Vérifie dans la console que Python fonctionne correctement, en tapant les commandes suivantes dans une console Python :
>>> 2+2
>>> "Bonjour le monde !"
Voici quelques instructions.
- Addition. 5+7.
- Multiplication. 6*7 ; avec des parenthèses 3*(12+5) ; avec des nombres à virgule 3*1.5.
- Puissance. 3**2 pour 32 = 9 ; puissance négative 10**-3 pour 10−3 = 0.001.
- Division réelle. 14/4 vaut 3.5 ; 1/3 vaut 0.3333333333333333.
- Division entière et modulo.
— 14//4 vaut 3 : c’est le quotient de la division euclidienne de 14 par 4, note bien la double barre ; — 14%4 vaut 2 : c’est le reste de la division euclidienne de 14 par 4, on dit aussi « 14 modulo 4 ».
Remarque. Dans tout ce cours, on écrira les « nombres à virgule » sous la forme 3.5 (et pas 3, 5). Le séparateur décimal est donc le point. En informatique les nombres à virgule sont appelés « nombres flottants ».
Activité 1 (Premiers pas).
Objectifs : faire tes premiers calculs avec Python.
(1 + 2)×(3 + 4)×(5 + 6)×(7 + 8)×···
Indication. L’entier est plus grand que 230 !
Cours 2 (Travailler avec un éditeur).
À partir de maintenant, il est préférable que tu travailles dans un éditeur de texte dédié à Python. Tu dois alors explicitement demander d’afficher le résultat :
print(2+2)
print("Bonjour le monde !")
Cours 3 (Variables).
Variable. Une variable est un nom associé à un emplacement de la mémoire. C’est comme une boîte que l’on identifie par une étiquette. La commande « a = 3 » signifie que j’ai une variable « a » associée à la valeur 3.
Voici un premier exemple :
a = 3 # Une variable b = 5 # Une autre variable
print("La somme vaut",a+b) # Affiche la somme print("Le produit vaut",a*b) # Affiche le produit
c = b**a # Nouvelle variable print(c) # qui s’affiche
Commentaires. Tout texte qui suit le caractère dièse « # » n’est pas exécuté par Python mais sert à expliquer le programme. C’est une bonne habitude de commenter abondamment ton code.
Noms. Il est très important de donner un nom clair et précis aux variables. Par exemple, avec les noms bien choisis tu devrais savoir ce que calcule le code suivant : base = 8 hauteur = 3 aire = base * hauteur / 2
print(aire)
print(Aire) # !! Erreur !!
Attention ! Python distingue les majuscules des minuscules. Donc mavariable, Mavariable et MAVARIABLE sont des variables différentes.
Réaffectation. Imaginons que tu veuilles tenir tes comptes journaliers. Tu pars d’une somme S0 = 1000, le lendemain tu gagnes 100, donc maintenant S1 = S0 + 100 ; le jour d’après tu rajoutes 200, donc S2 = S1 + 200 ; puis tu perds 50, donc au troisième jour S3 = S2− 50. Avec Python tu peux n’utiliser qu’une seule variable S pour toutes ces opérations.
S = 1000
S = S + 100
S = S + 200 S = S - 50
print(S)
Il faut comprendre l’instruction « S = S + 100 » comme ceci : « je prends le contenu de la boîte S, je rajoute 100, je remets tout dans la même boîte ».
Activité 2 (Variables).
Objectifs : utiliser des variables !
(b) Définis des variables pour calculer le volume d’une boîte (un parallélépipède rectangle) dont les dimensions sont 10, 8, 3.
(c) Définis une variable PI qui vaut 3.14. Définis un rayon R = 10. Écris la formule de l’aire du disque de rayon R.
(1) y = y - 1
(2) y = 2*x
(3) x = x + 3*y
(4) x = 7
Cours 4 (Utiliser des fonctions).
Tu connais déjà la fonction print() qui affiche une chaîne de caractères (ou des nombres). Elle s’utilise ainsi print("Coucou") ou bien à travers une valeur :
chaine = "Bonjour" print(chaine)
Il existe plein d’autres fonctions. Par exemple la fonction abs() calcule la valeur absolue : abs(-3) renvoie 3, abs(5) renvoie 5.
Toutes les fonctions ne sont pas directement accessibles. Elles sont souvent regroupées dans des modules. Par exemple le module math contient les fonctions mathématiques. Tu y trouves par exemple la fonction racine carrée sqrt() (square root). Voici comment l’utiliser :
from math import *
x = sqrt(2)
print(x) print(x**2)
La première ligne importe toutes les fonctions du module math, la seconde calcule x = p2 (en valeur approchée) et ensuite on affiche x et x2.
Le module math contient les fonctions trigonométriques sinus et cosinus et même la constante pi qui est une valeur approchée de π. Attention, les angles sont exprimés en radians. Voici le calcul de sin().
angle = pi/2 print(angle) print(sin(angle))
Dans le module math il y aussi des fonctions pour arrondir un nombre décimal :
— round() arrondit à l’entier le plus proche : round(5.6) renvoie 6, round(1.5) renvoie 2.
— floor() renvoie l’entier inférieur ou égal : floor(5.6) renvoie 5. — ceil() renvoie l’entier supérieur ou égal : ceil(5.6) renvoie 6.
Activité 3 (Utiliser des fonctions).
Objectifs : utiliser des fonctions de Python et du module math.
Indication. abs() désigne la fonction valeur absolue. 3. Tu connais la formule de trigonométrie
cos2θ + sin2θ = 1.
Vérifie que pour θ = (ou d’autres valeurs) cette formule est numériquement vraie. (Ce n’est pas une preuve de la formule, car Python ne fait que des calculs approchés du sinus et du cosinus).
Cours 5 (Boucle « pour »).
La boucle « pour » est la façon la plus simple de répéter des instructions.
Note bien que ce qui délimite le bloc d’instructions à répéter, c’est l’indentation, c’est-à-dire les espaces placées en début de ligne qui décalent les lignes vers la droite. Toutes les lignes d’un bloc doivent avoir exactement la même indentation. Dans ce livre, nous choisissons une indentation de 4 espaces.
N’oublie pas les deux points en fin de la ligne de la déclaration du for !
Voici une boucle qui affiche les premiers carrés.
for i in range(10):
print(i*i)
La seconde ligne est décalée et constitue le bloc à répéter. La variable i prend la valeur 0 et l’instruction affiche 02 ; puis i prend la valeur 1, et l’instruction affiche 12 ; puis 22, 32. . . Au final ce programme affiche :
0, 1, 4, 9, 16, 25, 36, 49, 64, 81.
Attention : la dernière valeur prise par i est bien 9 (et pas 10).
La boucle « pour » permet de parcourir n’importe quelle liste. Voici une boucle qui affiche le cube des premiers nombres premiers.
for p in [2,3,5,7,11,13]:
print(p**3)
Voici un programme qui calcule
0 + 1 + 2 + 3 +···+ 18 + 19.
somme = 0 for i in range(20): somme = somme + i print(somme)