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

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.

bannière definition

Définition

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 nom de la variable, qui permet de retrouver et d'utiliser l'information stockée.

bannière exemple

Exemple

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 l et L car Python fait la distinction entre les majuscules et les minuscules.

bannière à retenir

À retenir

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

  • 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.

bannière definition

Définition

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.
bannière à retenir

À retenir

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.

bannière exemple

Exemple

Sur la console Python, nous demandons à l’ordinateur d’effectuer le calcul $0,1+ 0,2$. Voici ce qui s’affiche :

programmation - maths - seconde

La valeur affichée par l’ordinateur est un float.

En revanche, si on calcule $3^{25}$ qui est un entier :

programmation - maths - seconde

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 :

programmation - maths - seconde

bannière attention

Attention

Pour utiliser sqrt(), il faut d'abord écrire 'from math import sqrt' en début de programme.

  • Un programme peut également avoir besoin de stocker des informations qui sont des mots ou des phrases.
bannière definition

Définition

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

bannière definition

Définition

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.

bannière à retenir

À retenir

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.

bannière exemple

Exemple

Nous voulons affecter la valeur 7 dans une variable que l’on nomme age et le prénom Camille dans une variable étiquetée prenom.

programmation - maths - seconde

Voici ce que fait l’ordinateur à l’instruction age=7 :

programmation - maths - seconde

bannière attention

Attention

Le symbole = en Python signifie «  affecter une valeur  » et non «  être égal à  » comme en mathématiques. Chaque nouvelle affectation dans la variable age efface la valeur qui s’y trouvait pour la remplacer par la suivante.

bannière exemple

Exemple

Prenons l’algorithme suivant écrit en langage naturel et en Python :

programmation - maths - seconde

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 :

programmation - maths - seconde

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

Les instructions conditionnelles

Dans un algorithme, les instructions sont exécutées dans l'ordre où elles sont écrites.

bannière definition

Définition

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 :

programmation - maths - seconde

bannière attention

Attention

Les instructions à effectuer après le if (ou le else) 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.

bannière exemple

Exemple

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 :

programmation - maths - seconde

Ce que fait l’ordinateur si on affecte 4 à la variable h :

programmation - maths - seconde

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

bannière definition

Définition

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.

programmation - maths - seconde

Remarque :

  • range() ne produit que des entiers, jamais de décimaux.
  • en Python, range(a, b) 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).
bannière attention

Attention

Les instructions à effectuer après le for k in range(1,n+1) : sont précédées d’une indentation.

bannière exemple

Exemple

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 print (nom de la variable) . On obtient les algorithmes suivants :

programmation - maths - seconde

bannière definition

Définition

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 :

programmation - maths - seconde

bannière astuce

Astuce

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 while : est le contraire de la condition d’arrêt de la boucle.

bannière attention

Attention

Les instructions à effectuer après le while : sont précédées d’une indentation.

bannière exemple

Exemple

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 :

programmation - maths - seconde

Voici ce que fait l’ordinateur :

programmation - maths - seconde

bannière attention

Attention

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

Définir et utiliser une fonction en programmation

bannière definition

Définition

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 :

programmation - maths - seconde

bannière attention

Attention

Les instructions à effectuer après le def nom de la fonction ( ) : sont précédées d’une indentation.

Une fonction est destinée à réaliser une tâche précise.

bannière exemple

Exemple

On considère le programme suivant écrit en Python :

programmation - maths - seconde

La fonction définie s’appelle accueil(). Elle sert à afficher à l’écran :

Bonjour !

Mon nom est Camille

bannière à retenir

À retenir

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

bannière exemple

Exemple

Reprenons l’exemple de notre message d’accueil. Voici un programme écrit en Python qui utilise cette fonction.

programmation - maths - seconde

L’écran affiche alors :

programmation - maths - seconde

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

Une fonction a parfois besoin de données informatiques en entrée pour fonctionner.

bannière definition

Définition

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 return.

return 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.

bannière exemple

Exemple

On considère le programme suivant écrit en Python :

programmation - maths - seconde

La fonction est aire_rectangle( ) 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( )

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 random, qui signifie hasard en anglais. Ce module contient des outils qui permettent de simuler des tirages aléatoires en programmant l’ordinateur.

bannière definition

Définition

La fonction random() 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.

bannière exemple

Exemple

Appelons par exemple la fonction random() plusieurs fois sur une console Python :

programmation - maths - seconde

bannière definition

Définition

La fonction randint(nombre1, nombre2) 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.

bannière exemple

Exemple

Simulons trois tirages aléatoires d’un dé à 12 faces en Python. Nous obtenons sur la console :

programmation - maths - seconde

Nous pouvons également programmer 10 tirages aléatoires avec une boucle bornée :

programmation - maths - seconde

Remarque : random() renvoie un float et randint() 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.