Cours Programmation
Introduction :
Au collège, nous avons appris à manipuler des suites d'instructions permettant de résoudre un problème ou de réaliser une tâche, qu’on appelle des algorithmes. Ces algorithmes étaient parfois construits dans un environnement Scratch. En seconde, nous allons découvrir le langage de programmation Python. Comme dans toute langue, écrire un programme en Python nécessite de respecter un vocabulaire et une syntaxe précis afin que l'ordinateur puisse comprendre et exécuter les algorithmes. Pour traiter des informations, l'ordinateur doit pouvoir les mémoriser : nous étudierons donc d'abord les variables. Nous verrons ensuite comment enchaîner des instructions, effectuer des choix ou répéter certaines actions afin d'écrire des algorithmes plus élaborés. Enfin, nous découvrirons les fonctions, qui permettent d'organiser un programme en blocs réutilisables.
Les variables et les données informatiques
Les variables et les données informatiques
Les variables
Les variables
Dans un algorithme, des informations utiles telles que des nombres, des calculs intermédiaires ou des mots doivent être utilisées par l’ordinateur. Pour chaque information à retenir, une partie de la mémoire de l’ordinateur la contient.
Une variable :
Une variable est un emplacement de la mémoire de l'ordinateur qui permet de stocker une information. Cet emplacement est repéré par une étiquette, appelée , qui permet de retrouver et d'utiliser l'information stockée.
Prenons par exemple, l’algorithme qui consiste à calculer l’aire d’un rectangle :
- Demander la longueur à l’utilisateur
- Demander la largeur à l’utilisateur
- Multiplier les deux valeurs
- Afficher le résultat
L’ordinateur doit pouvoir enregistrer la longueur et la largeur du rectangle données par l’utilisateur afin de les multiplier.
Nous allons donc créer et nommer deux variables : nous pouvons, par exemple, les appeler longueur et largeur.
Nous pouvons aussi les nommer et car Python fait la distinction entre les majuscules et les minuscules.
Pour nommer une variable, on doit utiliser une lettre ou un nom qui obéissent à certaines règles. Le nom ne contient pas d'espace et doit être suffisamment explicite afin que le programme soit compréhensible et lisible par les utilisateurs.
Les informations traitées par un programme sont des données informatiques. Elles peuvent être de plusieurs types comme nous allons le voir dans le prochain paragraphe.
Les types de données
Les types de données
- En mathématiques, les programmes écrits traiteront majoritairement de données chiffrées.
En Python, les nombres entiers et les autres nombres ne sont pas de même type. Les nombres entiers sont écrits de manière exacte ; les autres avec une partie décimale, écrite avec un point (.) à la place de la virgule.
En Python, les nombres ont l’un de ces types :
- un nombre entier est de type int ;
- un nombre non entier est un flottant. Il est de type float.
En Python, les flottants ne représentent pas toujours exactement les nombres décimaux. Nous devons donc interpréter les résultats affichés par un programme avec un esprit critique ! En effet, ce sont parfois des valeurs approchées.
Sur la console Python, nous demandons à l’ordinateur d’effectuer le calcul $0,1+ 0,2$. Voici ce qui s’affiche :

La valeur affichée par l’ordinateur est un float.
En revanche, si on calcule $3^{25}$ qui est un entier :

On obtient la valeur exacte, de type int.
Pour effectuer des opérations et des comparaisons usuelles sur les nombres, la syntaxe Python peut être différente des écritures mathématiques. Voici les principales différences :

Pour utiliser , il faut d'abord écrire en début de programme.
- Un programme peut également avoir besoin de stocker des informations qui sont des mots ou des phrases.
Une succession de lettres et de chiffres ou de symboles est considéré dans un programme comme une chaîne de caractères.
En Python, une chaîne de caractères est placée entre guillemets. Son type est str.
- D'autres types de données existent, notamment les booléens (True ou False) qui sont utilisés quand l’ordinateur teste des conditions.
Les informations, de différents types, peuvent être stockées dans des variables : c’est ce qu’on appelle affecter une valeur à une variable.
Affectation d’une variable
Affectation d’une variable
Affecter une valeur à une variable consiste à stocker une information dans cette variable.
La valeur de la variable est alors l'information stockée dans cet emplacement-mémoire.
En langage naturel, l’affectation est représentée par le symbole « → »
En langage Python, l’affectation est représentée par le signe « = ». La valeur écrite à droite du = est affectée à la variable écrite à gauche.
Nous voulons affecter la valeur 7 dans une variable que l’on nomme et le prénom Camille dans une variable étiquetée .

Voici ce que fait l’ordinateur à l’instruction :

Le symbole = en Python signifie « affecter une valeur » et non « être égal à » comme en mathématiques. Chaque nouvelle affectation dans la variable efface la valeur qui s’y trouvait pour la remplacer par la suivante.
Prenons l’algorithme suivant écrit en langage naturel et en Python :
A la première ligne de cette suite d’instructions, on affecte la valeur 5 à la variable nommée x. A la deuxième ligne, voici ce qui se passe :

Maintenant que l’ordinateur peut mémoriser des informations, il faut lui indiquer les actions à effectuer en écrivant une suite d’instructions.
Ecrire une suite d’instructions
Ecrire une suite d’instructions
Les instructions conditionnelles
Les instructions conditionnelles
Dans un algorithme, les instructions sont exécutées dans l'ordre où elles sont écrites.
Séquence d'instructions : Une séquence d'instructions est une suite d'instructions exécutées les unes après les autres, dans l'ordre où elles sont écrites.
Cependant, il est souvent nécessaire de choisir entre plusieurs actions selon une condition.
Pour cela, Python dispose d'instructions conditionnelles.
Voici la syntaxe à utiliser en langage naturel et en Python :
Les instructions à effectuer après le (ou le sont écrites à la ligne suivantes et décalées vers la droite. Ce décalage s'appelle l'indentation.
L’indentation fait partie de la syntaxe Python : sans elle, l’ordinateur ne comprend pas ce qui doit être exécuté. De plus, l’indentation permet de rendre lisible l’ensemble des instructions à effectuer.
Une entreprise de location de canoës affiche les tarifs suivants :
- 15 € de l’heure si la durée de location est strictement inférieure à 3 heures ;
- 10 € de l’heure pour une location de 3 heures ou plus.
Ecrivons un algorithme qui permet de calculer le prix de la location d’un bateau suivant le nombre d’heures. Pour cela, on nomme une variable h qui contient le nombre d’heures de location, et une variable prix qui contient le prix de la location. L’instruction conditionnelle s’écrit alors :

Ce que fait l’ordinateur si on affecte 4 à la variable h :
Dans certains algorithmes, nous aurons aussi besoin de répéter plusieurs fois la même suite d’instructions. Pour ce faire, nous utiliserons des boucles.
Les boucles
Les boucles
Boucle :
Une boucle permet de répéter automatiquement une à plusieurs instructions sans avoir à les écrire plusieurs fois. Si on connaît le nombre de répétitions, on dit que la boucle est bornée.
Syntaxe de la boucle bornée :
On veut répéter une suite d’instructions un nombre n de fois.

Remarque :
- ne produit que des entiers, jamais de décimaux.
- en Python, s'arrête avant b (b est exclu). Pour que k aille de 1 à n inclus, il faut donc écrire range(1, n+1), et non range(1, n). Par exemple : range(1, 5) donne 1, 2, 3, 4 (le 5 n'est pas inclus).
Les instructions à effectuer après le sont précédées d’une indentation.
Ecrivons un algorithme qui affiche les carrés des 24 premiers nombres entiers non nuls. Nous utiliserons une variable carre qui contient les valeurs des entiers au carré. En Python, la commande qui affiche la valeur d’une variable est . On obtient les algorithmes suivants :

Boucle non bornée :
Dans certains cas, le nombre de répétions n’est pas connu mais on connaît une condition d’arrêt de la boucle. La boucle s’appelle alors boucle non bornée.
Syntaxe de la boucle non bornée :
Tant que la condition est vraie, l’ordinateur va répéter le bloc d’instructions qui sont écrites au-dessous. Par conséquent, la condition à écrire après le « tant que » ou est le contraire de la condition d’arrêt de la boucle.
Les instructions à effectuer après le sont précédées d’une indentation.
Nous allons par exemple écrire un algorithme qui trouve la plus petite puissance de 3 strictement supérieure à 148 453. Nous allons donc demander à l’ordinateur de calculer les puissances de 3 successives et de les comparer à 148 453.
Tant que ces puissances de 3 sont inférieures ou égales à ce nombre, on calcule la suivante : c’est notre boucle non bornée !
La condition d’arrêt est : $3^n > 148\,453$. Ainsi, la première puissance de 3 strictement supérieure à 148 453 arrêtera la boucle. Voici les algorithmes obtenus :

Voici ce que fait l’ordinateur :

Avant d’écrire des boucles non bornées, il est nécessaire de s’assurer que la boucle s’arrêtera, c’est-à-dire que la condition d’arrêt sera atteinte. Autrement, la boucle continuera de tourner : c’est ce qu’on appelle une boucle infinie. Et on peut arriver à bloquer la machine.
Lorsque certains groupes d’instructions reviennent souvent, il est utile et plus lisible de les regrouper dans un sous-programme qu’on appelle fonction.
Fonctions : construire ses propres instructions
Fonctions : construire ses propres instructions
Définir et utiliser une fonction en programmation
Définir et utiliser une fonction en programmation
Une fonction :
En programmation, une fonction est un bloc d’instructions que l’on peut réutiliser. Une fonction porte un nom pour pouvoir exécuter facilement cette suite d’instructions dans le programme principal sans avoir à le réécrire.
Le nom d’une fonction obéit aux mêmes règles que le nom des variables (il ne contient pas d'espace et il est sensible à la casse). Il est suivi de parenthèses.
Syntaxe de la fonction :
Les instructions à effectuer après le sont précédées d’une indentation.
Une fonction est destinée à réaliser une tâche précise.
On considère le programme suivant écrit en Python :
La fonction définie s’appelle . Elle sert à afficher à l’écran :
Bonjour !
Mon nom est Camille
Les instructions de la fonction ne sont pas exécutées lors de sa définition. Une fois la fonction définie, elle est mémorisée par l'ordinateur. On peut ensuite l'utiliser autant de fois que nécessaire en appelant son nom dans le programme principal
Reprenons l’exemple de notre message d’accueil. Voici un programme écrit en Python qui utilise cette fonction.
L’écran affiche alors :
Une fonction agit comme une machine : elle reçoit éventuellement des informations, les traite, pour produire un résultat. Les informations reçues sont appelées les entrées de la fonction et le résultat obtenu constitue sa sortie.
Les entrées et les sorties de fonctions
Les entrées et les sorties de fonctions
Une fonction a parfois besoin de données informatiques en entrée pour fonctionner.
Arguments / paramètres :
On les appelle les données d’entrée des fonctions des arguments ou des paramètres. On les écrit dans les parenthèses qui suivent le nom de la fonction.
Il peut y avoir un ou plusieurs arguments pour une même fonction.
Par ailleurs, la plupart des fonctions utilisées en mathématiques renvoient des résultats en sortie du bloc qui les définit. On ajoute alors à la fin du bloc l’instruction .
renvoie une information au programme qui pourra ensuite l'afficher, la stocker dans une variable ou la réutiliser. Après l’exécution de cette instruction, la fonction se termine et Python continue avec la suite du programme principal.
On considère le programme suivant écrit en Python :
La fonction est de paramètres les variables longueur et largeur. Cette fonction consiste en trois instructions :
- Elle calcule le produit des valeurs de longueur et largeur ;
- Elle affecte cette valeur à la variable aire ;
- Enfin, elle enregistre la valeur de la variable aire pour la renvoyer au programme principal.
Les fonctions peuvent être utilisées pour effectuer des calculs et renvoyer un résultat. Elles permettent également de produire des nombres aléatoires, ce qui est particulièrement utile pour simuler des expériences aléatoires et étudier des phénomènes probabilistes.
Fonctions random( ) et randint( )
Fonctions random( ) et randint( )
Certaines fonctions en Python sont rangées dans des bibliothèques ou des modules. Quand on veut les utiliser on doit les importer depuis cet emplacement. Les fonctions que nous allons présenter ici sont rangées dans le module , qui signifie hasard en anglais. Ce module contient des outils qui permettent de simuler des tirages aléatoires en programmant l’ordinateur.
La fonction permet de simuler le tirage d’un nombre aléatoire entre 0 (inclus) et 1 (exclu). Cette fonction n’a pas de paramètres et retourne le nombre aléatoire obtenu.
Appelons par exemple la fonction plusieurs fois sur une console Python :
La fonction permet de simuler le tirage d’un nombre entier compris entre les nombres entiers nombre1(inclus) et nombre2 (inclus). Cette fonction a deux paramètres et retourne le nombre aléatoire obtenu.
Simulons trois tirages aléatoires d’un dé à 12 faces en Python. Nous obtenons sur la console :
Nous pouvons également programmer 10 tirages aléatoires avec une boucle bornée :

Remarque : renvoie un float et renvoie un int.
Conclusion :
Dans ce chapitre, nous avons découvert les bases de la programmation en Python. Nous avons vu notamment comment écrire des suites d'instructions qui permettent à un ordinateur de traiter des données, d'effectuer des calculs et de résoudre des problèmes. Les variables, les instructions conditionnelles, les boucles et les fonctions permettent de décomposer un algorithme en étapes logiques et d'organiser un programme de manière claire. Le langage Python fournit ainsi un moyen de traduire un raisonnement ou une méthode de résolution dans un langage compréhensible et exécutable par l'ordinateur.