0% ont trouvé ce document utile (0 vote)
18 vues27 pages

Assert Recursivite

Transféré par

reehabbaaa
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
18 vues27 pages

Assert Recursivite

Transféré par

reehabbaaa
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Assertions et récursivité

Sakina ZININI
CPGE Salmane Al Farissi - Salé / MPSI- 1TSI

2023 - 2024
1 Assertions
Introduction
Primitive assert
Schéma de fonctionnement

2 Récursivité
Introduction
Définitions et exemples
Type de récursivité

Sakina ZININI (CPGE Salmane Al Farissi - Salé / MPSI-Assertions


1TSI) et récursivité 2023 - 2024 2 / 27
Assertions

Sakina ZININI (CPGE Salmane Al Farissi - Salé / MPSI-Assertions


1TSI) et récursivité 2023 - 2024 3 / 27
Assertions Introduction

• La définition d’une fonction peut être immédiatement suivie par


une commentaire multiligne (""" comentaire""" ) appelée docs-
tring qui permet de documenter la fonction.
• La documentation inclus la précision des pré-conditions les post-
conditions et le traitement effectuée par la fonction.
• La documentation est accessible via la commande help (nom_fct).

Sakina ZININI (CPGE Salmane Al Farissi - Salé / MPSI-Assertions


1TSI) et récursivité 2023 - 2024 4 / 27
Assertions Introduction

• Le problème est que cela ne donne que des indications sur les
arguments de la fonction.
• Si une fonction est appelée avec des arguments d’un mauvais
type, elle peut aussi bien provoquer une erreur ou bien continuer
en renvoyant un résultat incohérent.
• L’un des moyens simples pour pallier ce problème est d’utiliser les
assertions.

Sakina ZININI (CPGE Salmane Al Farissi - Salé / MPSI-Assertions


1TSI) et récursivité 2023 - 2024 5 / 27
Assertions Primitive assert

Défintion
La primitive assert permet de contrôler qu’une expression renvoie True.
Dans le cas contraire, une exception AssertionError est levée.

• Elle est utilisée pour valider des pré-conditions et des post-conditions


à l’exécution du code d’une fonction.

• Une exception signifie un événement particulier qui provoque en


général l’interruption du déroulement normal d’un programme
donné.
• Lever une exception : c’est à dire interrompre le programme tout
en générant un type d’erreur : IndexError, KeyError, NameError,
ValueError, ZeroDivisionError et bien d’autres.
• On peut définir nos propres exceptions.
• Gestion des exceptions (hors programme).

Sakina ZININI (CPGE Salmane Al Farissi - Salé / MPSI-Assertions


1TSI) et récursivité 2023 - 2024 6 / 27
Assertions Primitive assert

• Syntaxe :

assert condition [, message d’erreur]

• Une exception de type AssertionError sera levée si la condition


s’évalue en False.
• Message d’erreur est optionnel. Il permet d’expliquer le problème
à gérer.

Sakina ZININI (CPGE Salmane Al Farissi - Salé / MPSI-Assertions


1TSI) et récursivité 2023 - 2024 7 / 27
Assertions Primitive assert

• Exemple 1 :

Sakina ZININI (CPGE Salmane Al Farissi - Salé / MPSI-Assertions


1TSI) et récursivité 2023 - 2024 8 / 27
Assertions Primitive assert

• Exemple 2 :

Sakina ZININI (CPGE Salmane Al Farissi - Salé / MPSI-Assertions


1TSI) et récursivité 2023 - 2024 9 / 27
Assertions Primitive assert

• Exemple 3 :

Sakina ZININI (CPGE Salmane Al Farissi - Salé / MPSI-Assertions


1TSI) et récursivité 2023 - 2024 10 / 27
Assertions Schéma de fonctionnement

Sakina ZININI (CPGE Salmane Al Farissi - Salé / MPSI-Assertions


1TSI) et récursivité 2023 - 2024 11 / 27
Assertions Schéma de fonctionnement

• L’instruction assert est assez pratique lorsque vous avez besoin de


documenter, déboguer et tester votre code pendant les phases de
développement de votre application Python.
• Les assertions peuvent être mal utilisées : validation des données,
gestion des erreurs de des utilisateurs, des opérations avec des
effets secondaires ! → Utiliser d’autres techniques à savoir la ges-
tion des exceptions et les instructions conditionnelles.
• Maintenir les assertions activées en production peut avoir un im-
pact négatif sur les performances de votre code (prendre du temps
et d’espace mémoire).→ Il est recommandé de les désactiver une
fois que vous avez un code robuste.

Sakina ZININI (CPGE Salmane Al Farissi - Salé / MPSI-Assertions


1TSI) et récursivité 2023 - 2024 12 / 27
Récursivité

Sakina ZININI (CPGE Salmane Al Farissi - Salé / MPSI-Assertions


1TSI) et récursivité 2023 - 2024 13 / 27
Récursivité Introduction

• La programmation itérative est une technique de programmation


qui utilise des boucles pour réaliser des répétition au niveau d’un
programme.
• La programmation récursive est une technique de programmation
qui remplace les instructions de boucle (while, for) par des appels
de fonction.
• Le choix entre ces deux techniques dépend du problème étudié,
des contraintes de performances, de la lisibilité du code et des
préférences du programmeur.

Sakina ZININI (CPGE Salmane Al Farissi - Salé / MPSI-Assertions


1TSI) et récursivité 2023 - 2024 14 / 27
Récursivité Définitions et exemples

Définition
Une fonction récursive est une fonction qui s’appelle elle-même.

Sakina ZININI (CPGE Salmane Al Farissi - Salé / MPSI-Assertions


1TSI) et récursivité 2023 - 2024 15 / 27
Récursivité Définitions et exemples

• Une fonction récursive est définie par : au moins un cas de base


et au moins un cas général.
• Cas de base : on décrit les cas pour lesquels le résultat de la
fonction est simple à calculer.
• Cas général ou (de récurrence) : La fonction est appelée récursi-
vement et le résultat retourné est calculé en utilisant le résultat
de l’appel récursif.
• A chaque appel récursif, la valeur d’au moins un des paramètres
(effectifs) de la fonction récursive doit changer.
• L’exécution d’une fonction récursive se fait par des appels suc-
cessifs à la fonction jusqu’à ce que le cas de base soit vérifiée, et
à chaque appel, les valeurs des paramètres et l’adresse de retour
sont empilés dans la pile d’exécution.

Il faut toujours s’assurer que chaque cas de récurrence converge vers


un cas de base.
Sakina ZININI (CPGE Salmane Al Farissi - Salé / MPSI-Assertions
1TSI) et récursivité 2023 - 2024 16 / 27
Récursivité Définitions et exemples

Définition
Une pile d’exécution permet d’enregistrer des informations sur les fonc-
tions en cours d’exécution dans un programme.

Lors de l’appel d’une fonction, Un bloc est créé pour la fonction Conte-
nant :
• Les arguments de la fonction.
• Une place pour écrire la valeur de retour.
• L’adresse de retour.
• de la place pour les variables locales
• ... etc.

Sakina ZININI (CPGE Salmane Al Farissi - Salé / MPSI-Assertions


1TSI) et récursivité 2023 - 2024 17 / 27
Récursivité Définitions et exemples

• Un bloc de la fonction appelée est créé au dessus du bloc de la


fonction appelante.
• Ces blocs sont empilés dans la pile d’exécution.

Sakina ZININI (CPGE Salmane Al Farissi - Salé / MPSI-Assertions


1TSI) et récursivité 2023 - 2024 18 / 27
Récursivité Définitions et exemples

Exemple : pour comprendre la pile d’exécution :

Sakina ZININI (CPGE Salmane Al Farissi - Salé / MPSI-Assertions


1TSI) et récursivité 2023 - 2024 19 / 27
Récursivité Définitions et exemples

Lors de l’appel de f(5) :

Pour simplicité : utiliser l’arbre des appels récursifs.


Sakina ZININI (CPGE Salmane Al Farissi - Salé / MPSI-Assertions
1TSI) et récursivité 2023 - 2024 20 / 27
Récursivité Définitions et exemples

Exemple : Fonction récursive permet de calculer le factoriel d’un en-


tier.

• Formule de calcul de factoriel : n!.


• Cas de base : n! = 1, pour n ∈ {0, 1}.
• Cas général : n! = n × (n − 1)!.

Sakina ZININI (CPGE Salmane Al Farissi - Salé / MPSI-Assertions


1TSI) et récursivité 2023 - 2024 21 / 27
Récursivité Définitions et exemples

Arbre des appels récursives de l’appel factorial(4) :

Sakina ZININI (CPGE Salmane Al Farissi - Salé / MPSI-Assertions


1TSI) et récursivité 2023 - 2024 22 / 27
Récursivité Type de récursivité

Parmi les types de récursivité, on cite :


• Récursivité simple : Une fonction récursive contient un seul appel
récursif.
• Récursivité multiple : Une fonction récursive contient plus d’un
appel récursif
• Récursivité croisée : Des fonctions qui s’appellent l’une l’autre.

Sakina ZININI (CPGE Salmane Al Farissi - Salé / MPSI-Assertions


1TSI) et récursivité 2023 - 2024 23 / 27
Récursivité Type de récursivité

Récursivité simple
(
1 si n = 0
u(n) =
u(n − 1) + 1 si n ≥ 1

Sakina ZININI (CPGE Salmane Al Farissi - Salé / MPSI-Assertions


1TSI) et récursivité 2023 - 2024 24 / 27
Récursivité Type de récursivité

Récursivité multiple

(
1 si n ∈ {0, 1}
fibonacci(n) =
fibonacci(n − 1) + fibonacci(n − 2) si n ≥ 2

Sakina ZININI (CPGE Salmane Al Farissi - Salé / MPSI-Assertions


1TSI) et récursivité 2023 - 2024 25 / 27
Récursivité Type de récursivité

Récursivité croisée

(
Vrai si n = 0
paire(n) =
impaire(n − 1) si n ≥ 1

(
Faux si n = 0
impaire(n) =
paire(n − 1) si n ≥ 1

Sakina ZININI (CPGE Salmane Al Farissi - Salé / MPSI-Assertions


1TSI) et récursivité 2023 - 2024 26 / 27
Récursivité Type de récursivité

Récursivité croisée

Sakina ZININI (CPGE Salmane Al Farissi - Salé / MPSI-Assertions


1TSI) et récursivité 2023 - 2024 27 / 27

Vous aimerez peut-être aussi