Aller au lycée
Pour aller au lycée, tu peux marcher, prendre le bus ou le vélo. Tu arrives au même endroit, mais tu ne fais pas les mêmes gestes.
En programmation, c’est pareil. Un même problème se résout de plusieurs façons. Chaque façon s’appelle un style.
Mots-clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Paradigme | Une façon de penser et d’écrire un programme. On dit aussi un style. | impératif, objet, fonctionnel |
| Impératif | On donne des ordres dans l’ordre, qui changent des variables. | total = total + p |
| Objet | On range les données et les actions dans des objets. Voir la leçon « Les objets ». | equipe.ajouter(3) |
| Fonctionnel | On combine des fonctions qui rendent des valeurs, sans rien changer. | total(points[1:]) |
| Effet de bord | Quand une fonction change quelque chose en dehors d’elle. | liste.append(5) |
| Fonction pure | Une fonction qui ne change rien en dehors d’elle et rend toujours la même réponse pour les mêmes valeurs. | liste + [5] |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Un même problème
Notre problème : une équipe a gagné des points à chaque match, 3, 1, 0 et 3. On veut le total.
Nous allons le résoudre trois fois, de trois façons. À chaque fois, le total sera 7.
Première façon : impérative
# Style impératif : des ordres, dans l'ordre, qui changent des variables.
points = [3, 1, 0, 3]
total = 0
for p in points:
total = total + p
print("Total :", total)
Deuxième façon : avec un objet
# Style objet : l'équipe garde ses points et sait les additionner.
class Equipe:
def __init__(self, nom):
self.nom = nom
self.points = []
def ajouter(self, p):
self.points.append(p)
def total(self):
resultat = 0
for p in self.points:
resultat = resultat + p
return resultat
lyceens = Equipe("Les lycéens")
for p in [3, 1, 0, 3]:
lyceens.ajouter(p)
print("Total :", lyceens.total())
Troisième façon : fonctionnelle
# Style fonctionnel : des fonctions qui ne changent rien et rendent une valeur.
def total(points):
if len(points) == 0:
return 0
return points[0] + total(points[1:])
print("Total :", total([3, 1, 0, 3]))
Exemple travaillé : les trois styles côte à côte
| Style | L’idée | Qui garde le total ? | Ce qui change |
|---|---|---|---|
| Impératif | Des ordres, l’un après l’autre | la variable total | total change à chaque tour |
| Objet | Des objets qui savent faire des choses | l’objet Equipe | les points de l’objet |
| Fonctionnel | Des fonctions qui rendent des valeurs | personne : chaque appel rend un nombre | rien ne change |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Quel est le style ?
À toi de jouer
Quel est le style ?
3 questionsTes réponses sont corrigées ici et ne sont pas conservées. Un compte garde tes résultats.
Changer ou rendre
Une fonction peut changer la liste qu’on lui donne. C’est un effet de bord.
Elle peut aussi rendre une nouvelle liste et laisser l’ancienne tranquille. C’est une fonction pure.
Une fonction pure est facile à tester : mêmes valeurs, même réponse.