Fiche de cours

Utiliser les paradigmes impératifs et fonctionnels

Lycée   >   Terminale   >   NSI   >   Utiliser les paradigmes impératifs et fonctionnels

  • Fiche de cours
  • Quiz et exercices
  • Vidéos et podcasts
Objectifs
  • Comprendre la notion de paradigme de programmation.
  • Comprendre les notions de paradigme impératif et de paradigme fonctionnel.
  • Utiliser le paradigme impératif et le paradigme fonctionnel en Python.
Points clés
  • Un paradigme de programmation est la manière de formuler le traitement informatique de la résolution d’un problème.
  • Le paradigme impératif consiste à écrire les instructions des codes les unes à la suite des autres dans l’ordre de leur exécution.
    Le paradigme impératif autorise l’utilisation des fonctions pour éviter de répéter du code.
  • Le paradigme fonctionnel consiste à écrire les codes sous la forme d’un ensemble de fonctions.
Pour bien comprendre

Définir et écrire une fonction en Python (1re).

1. Les paradigmes de programmation

Lorsque l’on veut écrire un programme informatique pour résoudre un problème, on choisit une manière d’écrire le code, une manière de structurer et d’écrire les instructions : on choisit un paradigme de programmation.

Un paradigme de programmation est la manière de formuler le traitement informatique de la résolution d’un problème.
2. Le paradigme impératif
a. Généralités

Le paradigme de programmation le plus ancien est le paradigme impératif, autrement appelé programmation impérative.

Ce paradigme est à l’origine de nombreux langages de programmation tels que les langages C, Pascal ou Basic.

Dans un paradigme impératif, les instructions sont exécutées de manière séquentielle, c’est-à-dire les unes après les autres dans l’ordre dans lequel elles ont été écrites.
En programmation impérative, l’ordre d’exécution du code a de l’importance.

Ce type de programmation est à l’origine de tous les autres types de programmation et se base sur l’utilisation des structures conditionnelles (if), des boucles (while et for) ainsi que des affectations.

On distingue deux sous-types de paradigmes impératifs : le paradigme séquentiel et le paradigme procédural. Leur différence tient dans le fait que la programmation procédurale autorise l’usage de fonctions pour réutiliser du code, alors que la programmation séquentielle ne l’autorise pas.

On apprend généralement la programmation en commençant par le paradigme impératif. En pratique, lorsque l’on parle de paradigme impératif, il s’agit en réalité du paradigme procédural, car l’usage des fonctions est recommandé pour éviter de répéter du code.

b. Avec Python – Exemple

Le paradigme impératif est supporté par la plupart des langages de programmation.

Le langage Python est un langage multi-paradigme, qui autorise naturellement la programmation impérative.

Exemple
En Python, le code suivant permet de calculer la moyenne du tableau tab = [1, 2, 3, 4, 5].
Python Explication
tab = [1, 2, 3, 4, 5]
On définit le tableau.
somme = 0
On initialise la somme des éléments de tab à 0.
for elt in tab:
On parcourt le tableau tab et on affecte à elt les éléments de tab.
    somme = somme + elt
On ajoute elt à la somme précédente.
    moyenne = somme/len(tab)
On affecte à la variable moyenne le quotient de la variable somme et de la taille du tableau tab.
print(moyenne)
On affiche la moyenne.

On utilise ici le paradigme séquentiel car les instructions sont exécutées ligne par ligne.

En programmation procédurale, cela peut donner le code suivant.

Python Explication
tab = [1, 2, 3, 4, 5] On définit le tableau.

def somme(tab):
    resultat
 = 0
    for elt in tab:
        resultat
 = resultat + elt
    return resultat

On définit la fonction somme qui prend en paramètre tab un tableau de nombres et retourne la somme de ses éléments.

def moyenne(tab):
    n
 = len(tab)
    return somme(tab)/n

On définit la fonction moyenne qui prend en paramètre tab un tableau de nombres et retourne la moyenne de ses éléments.
print(moyenne(tab)) On affiche la moyenne.

Ce code peut paraitre plus long que le précédent, mais les fonctions somme(tab) et moyenne(tab) seront directement réutilisables sans nécessité de les coder à nouveau car elle ont été définies.

c. Avantages et inconvénients

L’avantage principal de la programmation impérative est que le code est très lisible, ce qui en facilite l’apprentissage.

Ce paradigme produit toutefois vite des programmes volumineux, les codes peuvent ainsi perdre en clarté. De plus, en cas de modification ou de mise à jour du code, la programmation impérative peut induire un bon nombre de bugs puisque il faut relire le code dans son entier et effectuer de nombreuses retouches.

3. Le paradigme fonctionnel
a. Généralités
Le paradigme fonctionnel consiste à décomposer les programmes réalisés en un ensemble de fonctions.
En programmation fonctionnelle, l’ordre d’exécution du code n’a aucune importance.
Fonctions pures et impures

Les fonctions doivent idéalement produire des sorties qui ne dépendent strictement que de leurs arguments, sans que ces sorties ne dépendent de variables externes à la fonction elle-même. On parle alors de fonctions pures.

A contrario, les fonctions qui ne respectent pas ce principe sont appelées des fonctions impures.

Exemples
Fonction impure

En Python, on considère la fonction func1(a) suivante.

Python Explication
n = 5 On affecte 5 à la variable n.
def func1(a): On définit la fonction func1(a)
    global n Dans la fonction, on déclare la variable n comme globale, elle est la même que celle de la première ligne.
    n = n + a On affecte n + a à la variable n
    return n On retourne n.

Cette fonction est impure car n est une variable externe à la fonction func1(a).

En testant func1(2) deux fois de suite, on n’obtient d’ailleurs pas le même résultat.

Fonction pure

On peut également considérer la fonction func2(a) suivante, qui est pure.

Python Explication
def func2(a): On définit la fonction func2(a).
    return a + 5 On retourne a + 5.

Si on teste func2(2) deux fois de suite, on obtient ici le même résultat.

b. Avec Python

Le paradigme impératif n’est pas supporté par tous les langages de programmation.

Le langage Python offre un certain nombre d’outils pour utiliser le paradigme fonctionnel.

Les lambda fonctions
Les lambda fonctions, ou fonctions anonymes, permettent de définir des fonctions sans le mot-clé def et pour lesquelles le mot-clé return est implicite. Ces fonctions utilisent le mot-clé lambda.
Exemple
Voici deux manières d’écrire la fonction carre qui prend en paramètre un nombre a et retourne son carré.
Fonction classique Lambda fonction
def carre(a):
    return a*a
carre = lambda a : a*a

Dans les deux cas, l’utilisation de la fonction est la même. Par exemple, carre(3) retournera 9.

Dans cet exemple, la lambda fonction est référencée par la variable carre.

Il est possible de ne pas utiliser de variable qui référence une lambda fonction, notamment avec les fonctions map, filter et reduce.

La fonction map
La fonction map permet d’appliquer une fonction à tous les éléments d’un tableau.

map(func,
 tab) prend ainsi en paramètres une fonction func et un tableau tab (ou un objet itérable) ; cette fonction retourne un itérateur dont les éléments sont les images des éléments de tab par la fonction func.

La fonction list() permet d’en obtenir une liste.
Exemple
Pour créer le tableau des carrés du tableau tab = [1, 2, 3, 4, 5], il suffit d’exécuter le code list(map(lambda x : x*x, tab)).
La fonction filter
La fonction filter permet de filtrer les éléments d’un tableau.

filter(func,
 tab) prend ainsi en paramètres une fonction func qui retourne True ou False et un tableau tab (ou un objet itérable) ; cette fonction retourne un itérateur dont les éléments de tab ont True pour image par la fonction func.
Exemple
Pour créer le tableau des nombres pairs de tab = [1, 2, 3, 4, 5], il suffit d’exécuter le code list(filter(lambda x : x%2 == 0, tab)).
La fonction reduce
La fonction reduce permet de calculer une valeur à partir d’une fonction et de tous les éléments d’un tableau.

reduce(func, tab)
, du module functools, prend ainsi en paramètres une fonction func à deux paramètres et un tableau tab (ou un objet itérable) ; cette fonction retourne une valeur.
Principe
  • Au premier appel, les deux premiers éléments de tab sont les arguments de func.
  • Le résultat et le troisième élément de tab sont ensuite les arguments de func, et ainsi de suite.
  • Ainsi, après le parcours de tous les éléments de tab, la valeur finale est retournée.
Exemples
Pour calculer la somme des éléments de tab = [1, 2, 3, 4, 5], il suffit d’exécuter le code reduce(lambda a, b : a+b, tab).

Voici un code qui permet de calculer la moyenne des éléments de tab = [1, 2, 3, 4, 5].

c. Avantages et inconvénients

L’avantage principal du paradigme fonctionnel est de produire des codes courts et faciles à débugger. Il suffit de tester chacune de ses fonctions pour valider les codes.

La programmation fonctionnelle n’est toutefois pas facile à appréhender, elle demande une certaine expertise. Elle ne convient de plus pas à toutes les tâches.

Évalue ce cours !

 

Des quiz et exercices pour mieux assimiler sa leçon

La plateforme de soutien scolaire en ligne myMaxicours propose des quiz et exercices en accompagnement de chaque fiche de cours. Les exercices permettent de vérifier si la leçon est bien comprise ou s’il reste encore des notions à revoir.

S’abonner

 

Des exercices variés pour ne pas s’ennuyer

Les exercices se déclinent sous toutes leurs formes sur myMaxicours ! Selon la matière et la classe étudiées, retrouvez des dictées, des mots à relier ou encore des phrases à compléter, mais aussi des textes à trous et bien d’autres formats !

Dans les classes de primaire, l’accent est mis sur des exercices illustrés très ludiques pour motiver les plus jeunes.

S’abonner

 

Des quiz pour une évaluation en direct

Les quiz et exercices permettent d’avoir un retour immédiat sur la bonne compréhension du cours. Une fois toutes les réponses communiquées, le résultat s’affiche à l’écran et permet à l’élève de se situer immédiatement.

myMaxicours offre des solutions efficaces de révision grâce aux fiches de cours et aux exercices associés. L’élève se rassure pour le prochain examen en testant ses connaissances au préalable.

S’abonner

Des vidéos et des podcasts pour apprendre différemment

Certains élèves ont une mémoire visuelle quand d’autres ont plutôt une mémoire auditive. myMaxicours s’adapte à tous les enfants et adolescents pour leur proposer un apprentissage serein et efficace.

Découvrez de nombreuses vidéos et podcasts en complément des fiches de cours et des exercices pour une année scolaire au top !

S’abonner

 

Des podcasts pour les révisions

La plateforme de soutien scolaire en ligne myMaxicours propose des podcasts de révision pour toutes les classes à examen : troisième, première et terminale.

Les ados peuvent écouter les différents cours afin de mieux les mémoriser en préparation de leurs examens. Des fiches de cours de différentes matières sont disponibles en podcasts ainsi qu’une préparation au grand oral avec de nombreux conseils pratiques.

S’abonner

 

Des vidéos de cours pour comprendre en image

Des vidéos de cours illustrent les notions principales à retenir et complètent les fiches de cours. De quoi réviser sa prochaine évaluation ou son prochain examen en toute confiance !

S’abonner

Découvrez le soutien scolaire en ligne avec myMaxicours

Plongez dans l'univers de myMaxicours et découvrez une approche innovante du soutien scolaire en ligne, conçue pour captiver et éduquer les élèves de CP à la terminale. Notre plateforme se distingue par une riche sélection de contenus interactifs et ludiques, élaborés pour stimuler la concentration et la motivation à travers des parcours d'apprentissage adaptés à chaque tranche d'âge. Chez myMaxicours, nous croyons en une éducation où chaque élève trouve sa place, progresse à son rythme et développe sa confiance en soi dans un environnement bienveillant.

Profitez d'un accès direct à nos Profs en ligne pour une assistance personnalisée, ou explorez nos exercices et corrigés pour renforcer vos connaissances. Notre assistance scolaire en ligne est conçue pour vous accompagner à chaque étape de votre parcours éducatif, tandis que nos vidéos et fiches de cours offrent des explications claires et concises sur une multitude de sujets. Avec myMaxicours, avancez sereinement sur le chemin de la réussite scolaire, armé des meilleurs outils et du soutien de professionnels dédiés à votre épanouissement académique.

Fiches de cours les plus recherchées

NSI

Utiliser le paradigme objet

NSI

Repérer les bugs : typages, effets de bords, débordements

NSI

Repérer les bugs : structures

NSI

Anticiper les erreurs classiques

NSI

Utiliser Python pour déterminer les mesures des arbres binaires

NSI

Utiliser Python dans les arbres binaires de recherche

NSI

Rechercher et insérer une clé dans un arbre binaire de recherche

NSI

Parcourir un arbre binaire

NSI

Se déplacer dans un graphe

NSI

Utiliser la méthode « diviser pour régner »