Algorithmique et programmationChapitre 16

Algorithmique et programmation

Python : variables et types (entier, décimal, booléen, chaîne), affectation, opérateurs de comparaison et connecteurs logiques, instructions conditionnelles, boucles bornée et non bornée, fonctions.

Programmer en Python, c'est décrire un calcul avec une précision telle qu'une machine peut l'exécuter. Les cinq briques du programme — variables, conditions, boucle bornée, boucle non bornée, fonctions — suffisent à écrire tous les algorithmes du lycée. La compétence clé n'est pas d'écrire vite, mais de savoir prévoir ce qu'un programme affiche.

Variables et affectation

Définition

Variable et types

Une variable est un nom qui désigne une valeur en mémoire. En Python, chaque valeur a un type :

  • int : entier, comme 7 ou -3 ;
  • float : nombre décimal, comme 2.5 (avec un point, pas une virgule) ;
  • bool : booléen, True ou False ;
  • str : chaîne de caractères, comme "bonjour" (entre guillemets).
Définition

Affectation

L'instruction a = 5 affecte la valeur à la variable a : le signe = n'est pas une égalité mathématique mais un ordre, « range cette valeur dans cette boîte ».

Ainsi la suite d'instructions a = 5 puis a = a + 2 est parfaitement légale : on calcule d'abord la valeur de droite (), puis on la range dans a, qui vaut désormais . Le test d'égalité, lui, s'écrit avec un double signe : a == 7.

Attention

Suivre une variable à la trace

Pour prévoir ce qu'affiche un programme, tenez un tableau d'évolution : une colonne par variable, une ligne par instruction exécutée. C'est la méthode systématique — l'erreur classique est de lire le programme « en gros » au lieu de l'exécuter ligne par ligne, dans l'ordre, comme la machine.

Conditions et boucles

Définition

Instruction conditionnelle

L'instruction conditionnelle exécute un bloc seulement si une condition est vraie :

if x > 0:
print("positif")
elif x == 0:
print("nul")
else:
print("négatif")

La condition utilise les comparaisons ==, !=, <, <=, >, >= et les connecteurs and, or, not. Le bloc concerné est délimité par l'indentation (le décalage vers la droite), qui fait partie de la syntaxe de Python.

Définition

Boucle bornée, boucle non bornée

La boucle bornée for répète un bloc un nombre de fois connu d'avance :

for i in range(5):
print(i)

affiche , , , , — attention, range(5) part de et s'arrête avant .

La boucle non bornée while répète tant qu'une condition reste vraie :

n = 1
while n <= 100:
n = 2 * n

On l'emploie quand le nombre de répétitions n'est pas connu d'avance : ici, chercher la première puissance de dépassant .

Attention

La boucle infinie

Si la condition d'un while ne devient jamais fausse, le programme ne s'arrête pas. Avant d'écrire une boucle non bornée, vérifiez qu'une instruction du bloc modifie une variable de la condition, et dans le bon sens. Un while n > 0 dont le corps ne fait jamais décroître n tournera pour toujours.

Exemple

Prévoir un affichage

Que vaut s à la fin de ce programme ?

s = 0
for i in range(4):
s = s + i

Tableau d'évolution : au départ s vaut ; pour i valant , s devient ; pour i valant , s devient ; pour i valant , s devient ; pour i valant , s devient .

À la fin, s vaut : le programme a calculé .

Fonctions

Définition

Définir et appeler une fonction

Une fonction regroupe un traitement sous un nom, avec des paramètres en entrée et un résultat renvoyé par return :

def image(x):
return 2 * x + 1

L'appel image(3) renvoie . Une fonction Python peut ainsi représenter une fonction mathématique — même vocabulaire, même idée d'entrée et de sortie.

Attention

return n'est pas print

print affiche une valeur à l'écran mais ne la transmet à personne ; return la renvoie au programme, qui peut la ranger dans une variable ou la réutiliser dans un calcul : y = image(3) + 1 fonctionne avec return, pas avec print.

Autre effet : return interrompt immédiatement la fonction — tout ce qui le suit dans le bloc n'est jamais exécuté.

Méthode

Traduire un algorithme en Python

Du texte de l'énoncé au programme qui tourne :

  1. 1

    Repérer les données d'entrée (paramètres), le résultat attendu (valeur renvoyée) et les variables intermédiaires.

  2. 2

    Choisir les structures : un test pour une alternative, for pour un nombre de répétitions connu, while sinon.

  3. 3

    Écrire le programme, puis l'exécuter à la main sur un petit exemple dont on connaît la réponse, avec un tableau d'évolution.

À retenir

  • Quatre types de base : int, float, bool, str ; le signe = affecte, le double == compare.

  • L'indentation délimite les blocs : elle fait partie de la syntaxe.

  • range(n) parcourt les entiers de à : la borne de droite est exclue.

  • for quand le nombre de répétitions est connu, while sinon — en s'assurant que la condition finira par devenir fausse.

  • return renvoie une valeur réutilisable et interrompt la fonction ; print ne fait qu'afficher.

  • Pour prévoir un affichage : exécuter le programme à la main, ligne par ligne, avec un tableau d'évolution des variables.