1
20/02/2024
Deuxiéme cycle
Master Deuxiéme année
2023/2024
Programmer en Python
Présenté par :
Dr : Yachba Khadidja
Spécialité :
Data Science for business
and economics
Chapitre 1. Rappel sur l’algorithmique
2
20/02/2024
• Procédures et fonctions (sous-algorithmes/sous-programmes) récursives
• Les procédures et fonctions récursives sont des sous-programmes qui
s'appellent eux-mêmes pour résoudre un problème de manière itérative.
• Cette technique est couramment utilisée pour résoudre des problèmes qui
peuvent être décomposés en sous-problèmes similaires ou identiques.
• Un programme récursif c’est un programme qui s’appelle lui-même ou une
fonction qui est définie par rapport à elle-même.
Chapitre 1. Rappel sur l’algorithmique
3
20/02/2024
• Structure
P
_
_
Appel à P
_
Procedure P
Début
<instructions>
Appel à P
<instructions>
Fin;
Chapitre 1. Rappel sur l’algorithmique
4
20/02/2024
• Exemple
Calcul de factoriel « n » ;
n !=n*(n-1)*(n-2)*…………..*3*2*1.
0 !=1
1 !=1
Fact (n)= n*(n-1)*(n-2)*…………..*3*2*1.
Cas général: Fact (n)= n*Fact (n-1) .
Cas particuliers:
Fact (0)=1 ; Fact (1)=1
5
20/02/2024
Chapitre 1. Rappel sur l’algorithmique
• Solution itérative
• Factorielle : version itérative :
• Algorithme Fact_Iter
• Début
• /* entrée : un nombre n*/
• /* sortie: la factorielle de n*/
• f 1
• pour i de 2 à n faire
• f f*i
• Fin pour
• Fin
• Déroulement : exécution :
• Fact_Iter(0)=?; Fact_Iter(1)=?
• i=2
• f 1*2
• i=3
• f 1*2*3
• i=4
• f 1*2*3*4
Chapitre 1. Rappel sur l’algorithmique
6
20/02/2024
• Solution
Algorithme Fact_Réc;
/* entrée : un nombre n*/
/* sortie: la factorielle de n*/
Début
Si n<=1 alors
Retourner 1
Sinon
Retourner n* Fact_Rec(n-1)
Fin
Chapitre 1. Rappel sur l’algorithmique
7
20/02/2024
Déroulement : exécution :
Fact_Rec (4)= ?
n=4
Retourne 4* Fact_Rec (3)
n=3
Retourne 3* Fact_Rec (2)
n=2
Retourne 2* Fact_Rec (1)
n=1
Retourne 1
Fact_Rec (4)= 4*3*2*1
Chapitre 1. Rappel sur l’algorithmique
8
20/02/2024
Définition (Pile d’exécution)
La Pile d’exécution du programme en cours est un emplacement mémoire
destiné à mémoriser les
paramètres, les variables locales ainsi que les adresses de retour des
fonctions en cours d’exécution.
Elle fonctionne selon le principe LIFO (Last-In-First-Out) : dernier entré
premier sorti.
Attention ! La pile à une taille fixée, une mauvaise utilisation de la récursivité
peut entraîner un
débordement de pile.
9
20/02/2024
Cas de base :
Les procédures et fonctions récursives doivent toujours inclure un cas de
base.
Le cas de base est la condition qui arrête la récursion.
Dans l'exemple de la factorielle, le cas de base est lorsque n est égal à
zéro.
Chapitre 1. Rappel sur l’algorithmique
Appel récursif :
Dans une procédure ou fonction récursive, il y a toujours un appel à la fonction
elle-même.
Cet appel avec des paramètres différents permet de résoudre le problème en le
décomposant en sous-problèmes plus simples.
10
20/02/2024
Retenir
Comme dans le cas d’une boucle, il faut un cas d’arrêt où l’on ne fait pas
d’appel récursif.
procédure récursive (paramètres):
si TEST_D’ARRET:
instructions du point d’arrêt
sinon
instructions
récursive(paramètres changés); // appel récursif
instructions
11
20/02/2024
Ecrire un algorithme récursif
Problème
Ecrire un algorithme récursif réalisant un certain traitement T sur des
données D.
1. Décomposer le traitement T en sous traitements de même nature mais
sur des données plus petites.
2. Trouver la condition d’arret.
3. Tester éventuellement sur un exemple.
4. Ecrire l’algorithme.
12
20/02/2024
Exercice
Ecrire une fonction récursive qui calcule la somme des nombres de 1 à n
Chapitre 1. Rappel sur l’algorithmique
Fonction somme(n : entier):entier;
Début
Si (n = 1) alors
retourner 1
sinon
retourner n + somme(n - 1);
Finsi;
Fin;
13
20/02/2024
Exercices
1. Ecrire une procédure récursive qui permet d'afficher la valeur binaire
d'un entier n.
2. En remarquant que n2 = (n−1)2+2n−1. Ecrire une fonction récursive qui
calcule le carré d’un nombre entier positif.
Chapitre 1. Rappel sur l’algorithmique

cours3 - Daa.pptx F6ESQGHYQTDFTYAFYTFTYZFA

  • 1.
    1 20/02/2024 Deuxiéme cycle Master Deuxiémeannée 2023/2024 Programmer en Python Présenté par : Dr : Yachba Khadidja Spécialité : Data Science for business and economics
  • 2.
    Chapitre 1. Rappelsur l’algorithmique 2 20/02/2024 • Procédures et fonctions (sous-algorithmes/sous-programmes) récursives • Les procédures et fonctions récursives sont des sous-programmes qui s'appellent eux-mêmes pour résoudre un problème de manière itérative. • Cette technique est couramment utilisée pour résoudre des problèmes qui peuvent être décomposés en sous-problèmes similaires ou identiques. • Un programme récursif c’est un programme qui s’appelle lui-même ou une fonction qui est définie par rapport à elle-même.
  • 3.
    Chapitre 1. Rappelsur l’algorithmique 3 20/02/2024 • Structure P _ _ Appel à P _ Procedure P Début <instructions> Appel à P <instructions> Fin;
  • 4.
    Chapitre 1. Rappelsur l’algorithmique 4 20/02/2024 • Exemple Calcul de factoriel « n » ; n !=n*(n-1)*(n-2)*…………..*3*2*1. 0 !=1 1 !=1 Fact (n)= n*(n-1)*(n-2)*…………..*3*2*1. Cas général: Fact (n)= n*Fact (n-1) . Cas particuliers: Fact (0)=1 ; Fact (1)=1
  • 5.
    5 20/02/2024 Chapitre 1. Rappelsur l’algorithmique • Solution itérative • Factorielle : version itérative : • Algorithme Fact_Iter • Début • /* entrée : un nombre n*/ • /* sortie: la factorielle de n*/ • f 1 • pour i de 2 à n faire • f f*i • Fin pour • Fin • Déroulement : exécution : • Fact_Iter(0)=?; Fact_Iter(1)=? • i=2 • f 1*2 • i=3 • f 1*2*3 • i=4 • f 1*2*3*4
  • 6.
    Chapitre 1. Rappelsur l’algorithmique 6 20/02/2024 • Solution Algorithme Fact_Réc; /* entrée : un nombre n*/ /* sortie: la factorielle de n*/ Début Si n<=1 alors Retourner 1 Sinon Retourner n* Fact_Rec(n-1) Fin
  • 7.
    Chapitre 1. Rappelsur l’algorithmique 7 20/02/2024 Déroulement : exécution : Fact_Rec (4)= ? n=4 Retourne 4* Fact_Rec (3) n=3 Retourne 3* Fact_Rec (2) n=2 Retourne 2* Fact_Rec (1) n=1 Retourne 1 Fact_Rec (4)= 4*3*2*1
  • 8.
    Chapitre 1. Rappelsur l’algorithmique 8 20/02/2024 Définition (Pile d’exécution) La Pile d’exécution du programme en cours est un emplacement mémoire destiné à mémoriser les paramètres, les variables locales ainsi que les adresses de retour des fonctions en cours d’exécution. Elle fonctionne selon le principe LIFO (Last-In-First-Out) : dernier entré premier sorti. Attention ! La pile à une taille fixée, une mauvaise utilisation de la récursivité peut entraîner un débordement de pile.
  • 9.
    9 20/02/2024 Cas de base: Les procédures et fonctions récursives doivent toujours inclure un cas de base. Le cas de base est la condition qui arrête la récursion. Dans l'exemple de la factorielle, le cas de base est lorsque n est égal à zéro. Chapitre 1. Rappel sur l’algorithmique Appel récursif : Dans une procédure ou fonction récursive, il y a toujours un appel à la fonction elle-même. Cet appel avec des paramètres différents permet de résoudre le problème en le décomposant en sous-problèmes plus simples.
  • 10.
    10 20/02/2024 Retenir Comme dans lecas d’une boucle, il faut un cas d’arrêt où l’on ne fait pas d’appel récursif. procédure récursive (paramètres): si TEST_D’ARRET: instructions du point d’arrêt sinon instructions récursive(paramètres changés); // appel récursif instructions
  • 11.
    11 20/02/2024 Ecrire un algorithmerécursif Problème Ecrire un algorithme récursif réalisant un certain traitement T sur des données D. 1. Décomposer le traitement T en sous traitements de même nature mais sur des données plus petites. 2. Trouver la condition d’arret. 3. Tester éventuellement sur un exemple. 4. Ecrire l’algorithme.
  • 12.
    12 20/02/2024 Exercice Ecrire une fonctionrécursive qui calcule la somme des nombres de 1 à n Chapitre 1. Rappel sur l’algorithmique Fonction somme(n : entier):entier; Début Si (n = 1) alors retourner 1 sinon retourner n + somme(n - 1); Finsi; Fin;
  • 13.
    13 20/02/2024 Exercices 1. Ecrire uneprocédure récursive qui permet d'afficher la valeur binaire d'un entier n. 2. En remarquant que n2 = (n−1)2+2n−1. Ecrire une fonction récursive qui calcule le carré d’un nombre entier positif. Chapitre 1. Rappel sur l’algorithmique

Notes de l'éditeur

  • #2 Exemples de mesures ???