Accueil

Version complète : Tutoriel : Les boucles Pour (programmation des suites)
Vous consultez actuellement la version basse qualité d'un document. Voir la version complète avec le bon formatage.
Soit u la suite définie pour tout entier naturel n par un = 2n + 1

La suite u est définie par une relation fonctionnelle
un en fonction de n


La relation fonctionnelle permet de calculer n'importe quel terme de la suite, par exemple :

u0 = 2x0 + 1 = 1
u4 = 2x4 + 1 = 9
u10 = 2x10 + 1 = 21
etc

Fonction qui affiche un : le terme de la suite de rang n

Une fonction en algorithmique et en programmation possède :
• un nom
• des entrées
• des sorties

Nous allons appeler notre fonction calcultermefct
Elle a une entrée, que nous appellerons n
Elle a une sortie, que nous appellerons u

[Image: calcultermefct.png]

Ainsi, quand on entrera une valeur de n, la fonction nous renverra en sortie la valeur du terme de rang n
Exemple :
calcultermefct(1) = 1
calcultermefct(4) = 9
calcultermefct(10) = 21

Voici l'algorithme et le programme python de cette fonction

algorithme fonction python
définir calcultermefct(n)
u 2n + 1
renvoyer u
def calcultermefct(n) :
    u = 2*n + 1
    return(u)

flecherouge Ouvrir Edupython
flecherouge Ecrire la fonction dans la fenêtre d'édition
flecherouge exécuter cette fonction (bouton "run")
flecherouge Ecrire dans la console : calcultermefct(1)
le résultat 3 s'affiche
flecherouge Ecrire dans la console : calcultermefct(4)
le résultat 9 s'affiche
flecherouge Ecrire dans la console : calcultermefct(10)
le résultat 21 s'affiche
Soit u la suite définie pour tout entier naturel n par u0 =1 et un+1 = 2 un + 1

La suite u est définie par une relation de récurrence
un+1 en fonction de un


Voici les 4 premiers termes de cette suite
u0 = 1
u1 = 2 u0 + 1 = 2x1 + 1 = 3
u2 = 2 u1 + 1 = 2x3 + 1 = 7
u3 = 2 u2 + 1 = 2x7 + 1 = 15

Si on veut calculer u10 , comme on ne connaît pas de relation fonctionnelle (c'est-à-dire un en fonction de n)
on est obligé de calculer "petit à petit" u5 puis u6 puis u7 puis u8 puis u9 puis u10

Cela est "un peu" long...
Imaginez si on demande u1000 hum

Pour calculer u10 , il faut donc écrire ceci :

u 1 (u prend la valeur 1)
u 2u + 1 (u prend la valeur 2x1 + 1 = 3)
u 2u + 1 (u prend la valeur 2x3 + 1 = 7)
u 2u + 1 (u prend la valeur 2x7 + 1 = 15)
u 2u + 1 (u prend la valeur 2x15 + 1 = 31)
u 2u + 1 (u prend la valeur 2x31 + 1 = 63)
u 2u + 1 (u prend la valeur 2x63 + 1 = 127)
u 2u + 1 (u prend la valeur 2x127 + 1 = 255)
u 2u + 1 (u prend la valeur 2x255 + 1 = 511)
u 2u + 1 (u prend la valeur 2x511 + 1 = 1023)
u 2u + 1 (u prend la valeur 2x1023 + 1 = 2047)

On s'aperçoit qu'on répète 10 fois la même instruction !
Pour aller plus vite, on pourrait écrire

u 1
répéter 10 fois
u 2u + 1


Pour répéter plusieurs fois la même instruction, les langages de programmation utilisent une instruction répétitive
qu'on appelle une boucle Pour Angel

Une boucle Pour utilise un compteur (ici une variable qu'on va appeler k), qui est automatiquement augmenté de 1 (on dit incrémenté)
après l'exécution de l'instruction à répéter (on dit après chaque passage dans la boucle)

On pourrait faire la comparaison avec un coureur à pied qui doit boucler 10 tours de piste (en partant de la ligne de départ)
avec un compteur qui vaut 0 au départ et qui s'incrémente à chaque passage sur la ligne...
Lorsque le compteur passe à 10, la course est finie :cool:

Dans le fichier suivant, cliquer sur le bouton "Top Départ..." fi_lone_ranger
(il peut arriver que le fichier bugue à cause d'internet, si le point "saute" la ligne d'arrivée decu)



Voici donc notre algorithme, et sa traduction en Python

algorithme programme Python
u 1
Pour k allant de 0 à 9
u 2u + 1
u = 1
for k in range(10) :
    u = 2*u + 1

for k in range(10) veut dire que le compteur k prend successivement pour valeurs 0, 1, 2, 3, 4, 5, 6, 7, 8 et 9
La boucle s'arrête dès que le compteur vaut 10
La boucle est donc bien répétée 10 fois
for k in range(10) est la traduction Python de répéter 10 fois roll

Nous pouvons alors écrire notre fonction qu'on va appeler calcultermerécur
avec 1 entrée n et 1 sortie u
[Image: calcultermerecur.png]

algorithme fonction Python
définir calcultermerécur(n)
u 1
Pour k allant de 0 à n-1
débutpour
u 2u + 1
finpour
renvoyer u
def calcultermerécur(n) :
    u = 1
    for k in range(n) :
      u = 2*u + 1
    return(u)

En Python, il n'est pas nécessaire d'écrire début et fin
car on décale l'instruction à répéter
(ainsi, le "return" ne fait pas partie de la boucle)

flecherouge Ecrire la fonction dans la fenêtre d'édition
flecherouge exécuter cette fonction (bouton "run")
flecherouge Ecrire dans la console : calcultermerécur(2)
le résultat 7 s'affiche
flecherouge Ecrire dans la console : calcultermerécur(4)
le résultat 31 s'affiche
flecherouge Ecrire dans la console : calcultermerécur(10)
le résultat 2047 s'affiche
URLs de référence