Aller au contenu

Tous les TP seront notés (barème indicatif).

  • Tout TP non rendu avant la fin de la séance sera noté zéro.
  • Veuillez mettre clairement vos noms sur votre code source ou noms de fichiers.
  • Utilisez un éditeur de texte (Word...) lorsqu'on vous demande des explications ou des schémas.

Exercice 1 (3 points)

Compléter la fonction suivante pour qu’elle calcule le nième terme de la série :
    pile

def somme_bale(n):
     if type(n) != int:
         raise TypeError(COMPLETER ICI)
     elif n <= 0:
         raise ValueError(COMPLETER ICI)
     else:
         # Compléter ici
  • Essayez avec n = 50. Vérifiez avec une calculatrice que cette valeur est "assez proche" de \(\frac{\pi^2}{6}\)
  • Essayez avec n = 10 000, que se passe t'il ? Donnez une explication.

Exercice 2 (4 points)

Procédez de la même manière mais cette fois-ci calculez le nième terme de la série harmonique (c'est le nom de cette série):

\(1 + \frac{1}{2} + \frac{1}{3} + \frac{1}{4} + \frac{1}{5} ...\)

Cette série semble t'elle converger vers une valeur ? Si oui, laquelle ?

Exercice 3 (4 points)

Pour rappel le pseudo-code n'est ni un langage de programmation ni du français. Voici un pseudo-code qui décrit un algorithme :

fonction minListe(liste):
    si taille(liste) = 1
        alors renvoyer liste[0]
    sinon
        mini = minListe(liste[1 :])
        si liste[0] < mini
            alors mini = liste[0]
        fin_si
    fin_si
renvoyer mini

Implémenter la fonction (c'est à dire : coder là en Python) et exécutez là.

Exercice 4 (6 points)

1) Ecrire une fonction récursive def descente(n) qui affiche les entiers de 1 à n dans l’ordre décroissant.
2) Ecrire une fonction récursive def montee(n) qui affiche les entiers de 1 à n dans l’ordre croissant cette fois.

  • Dans un document Word, ou tout autre éditeur de texte, décrivez l'exécution de l'appel de fonction descente(n). Faites un schéma ou un tableau qui décrit l'exécution de cette fonction en mémoire et expliquez ce qu'il se passe à chaque étape. Vous pouvez vous aidez de https://pythontutor.com/visualize.html#mode=edit
    On attend que vous montriez les différents appels de fonctions (en précisant l'ordre dans lequel elles s'exécutent), ainsi que les valeurs retournées à chaque appel.

Attention !!! Ne copiez pas simplement ce qui s'affiche sur pythontutor, refléchissez et écrivez ensuite après avoir bien compris.

Exercice 5 (3 points)

def ajouter(s, liste):
    res = []
    for m in liste:
        res#COMPLETER
    return res

def produit(s, n):
    if n == 0:
        return [""]
    else:
        res = []
        for i in range(len(s)):
             res = res + ajouter(s[i], produit(s, n-1))
        return res

La fonction ajouter("a",["b","c"]) doit retourner ["ab","ac"]

  • Compléter le code de la fonction ajouter
  • Dans un document Word, ou tout autre éditeur de texte, décrivez l'exécution de l'appel de fonction produit("ab", 1). Faites un schéma ou un tableau qui décrit l'exécution de cette fonction en mémoire et expliquez ce qu'il se passe à chaque étape. Vous pouvez vous aidez de https://pythontutor.com/visualize.html#mode=edit
    On attend que vous montriez les différents appels de fonctions (en précisant l'ordre dans lequel elles s'exécutent), ainsi que les valeurs retournées à chaque appel.

Attention !!! Ne copiez pas simplement ce qui s'affiche sur pythontutor, refléchissez et écrivez ensuite après avoir bien compris.