Chapitres de Terminale

Algorithmique et programmation

  1. 1

    Exercice 1

    Facile

    On considère le programme Python suivant :

    L = [3, 8, 1, 6, 4]
    s = 0
    for x in L:
        s = s + x
    print(s / len(L))
    
    1. Quelle valeur affiche ce programme ?
    2. Que représente cette valeur pour la liste L ?
    3. Modifier ce programme pour qu'il affiche la valeur maximale de la liste sans utiliser la fonction max.
    Voir un indice

    La boucle for x in L parcourt les éléments de la liste. Pour le maximum, initialise une variable avec le premier élément puis compare.

    Voir la correction
    1. La somme des éléments est 3+8+1+6+4=223+8+1+6+4 = 22. La liste contient 55 éléments, donc le programme affiche 22/5=4.422/5 = 4.4.
    2. C'est la moyenne des éléments de la liste.
    3. Un programme possible :
    L = [3, 8, 1, 6, 4]
    m = L[0]
    for x in L:
        if x > m:
            m = x
    print(m)
    

    Ce programme affiche 88.

  2. 2

    Exercice 2

    Facile

    Soit la liste définie en compréhension : L = [k*k for k in range(1, 7)].

    1. Écrire cette liste en extension (donner tous ses éléments).
    2. Écrire, en extension, la liste M = [2*k+1 for k in range(5)].
    3. Écrire en compréhension la liste des cubes des entiers de 11 à 55.
    Voir un indice

    range(1, 7) produit les entiers 1,2,3,4,5,61, 2, 3, 4, 5, 6 (la borne de droite est exclue). range(5) produit 0,1,2,3,40, 1, 2, 3, 4.

    Voir la correction
    1. range(1, 7) donne k{1,2,3,4,5,6}k \in \{1,2,3,4,5,6\}, donc les carrés : L=[1,4,9,16,25,36]`L` = [1, 4, 9, 16, 25, 36].
    2. range(5) donne k{0,1,2,3,4}k \in \{0,1,2,3,4\}, donc 2k+12k+1 : M=[1,3,5,7,9]`M` = [1, 3, 5, 7, 9].
    3. [k**3 for k in range(1, 6)], qui vaut [1,8,27,64,125][1, 8, 27, 64, 125].
  3. 3

    Exercice 3

    Facile

    On dispose d'une liste notes contenant les notes d'une classe.

    1. Écrire une instruction qui ajoute la note 1515 à la fin de la liste.
    2. Écrire une instruction qui supprime le premier élément de la liste.
    3. Écrire une fonction compte\_reussite(notes) qui renvoie le nombre de notes supérieures ou égales à 1010.
    Voir un indice

    On ajoute avec .append(...) et on supprime avec del ou .pop(...). Pour compter, on utilise un compteur initialisé à 00.

    Voir la correction
    1. notes.append(15).
    2. del notes[0] (ou notes.pop(0)).
    3. Une fonction possible :
    def compte_reussite(notes):
        c = 0
        for note in notes:
            if note >= 10:
                c = c + 1
        return c
    

    La variable c compte les notes supérieures ou égales à 1010.

  4. 4

    Exercice 4

    Facile

    On considère la suite (un)(u_n) définie par u0=5u_0 = 5 et un+1=0,5un+3u_{n+1} = 0{,}5\, u_n + 3.

    1. Calculer u1u_1 et u2u_2.
    2. On souhaite déterminer le plus petit entier nn tel que un>5,9u_n > 5{,}9. Écrire une fonction Python seuil() qui renvoie cet entier.
    Voir un indice

    On calcule les termes successifs dans une boucle while tant que la condition n'est pas atteinte, en incrémentant un compteur.

    Voir la correction
    1. u1=0,5×5+3=5,5u_1 = 0{,}5 \times 5 + 3 = 5{,}5 et u2=0,5×5,5+3=5,75u_2 = 0{,}5 \times 5{,}5 + 3 = 5{,}75.
    2. La suite converge vers 66 (point fixe de x0,5x+3x \mapsto 0{,}5x+3) en croissant, donc le seuil existe. Programme :
    def seuil():
        u = 5
        n = 0
        while u <= 5.9:
            u = 0.5 * u + 3
            n = n + 1
        return n
    

    On calcule : u3=5,875u_3 = 5{,}875, u4=5,9375>5,9u_4 = 5{,}9375 > 5{,}9. La fonction renvoie 4\boxed{4}.

  5. 5

    Méthode de Héron pour 2\sqrt{2}

    Moyen

    On veut approcher 2\sqrt{2} par la méthode de Héron : on définit la suite x0=2x_0 = 2 et

    xn+1=12(xn+2xn).x_{n+1} = \frac{1}{2}\left( x_n + \frac{2}{x_n} \right).
    1. Calculer x1x_1 et x2x_2 (valeurs exactes).
    2. Compléter la fonction Python ci-dessous pour qu'elle renvoie une valeur approchée de 2\sqrt{2} à 10610^{-6} près :
    def heron():
        x = 2
        while abs(x*x - 2) > ...... :
            x = ......
        return x
    
    Voir un indice

    La condition d'arrêt teste si x2x^2 est assez proche de 22. Le pas de la boucle applique la formule de récurrence.

    Voir la correction

    Ce contenu est réservé : laisse tes coordonnées pour débloquer toutes les indications et corrections du site, gratuitement.

    Tes coordonnées servent uniquement à t'informer de nos ressources et stages — jamais de spam. Politique de confidentialité

  6. 6

    Résolution par dichotomie

    Moyen

    On cherche une solution de l'équation f(x)=0f(x) = 0 avec f(x)=x3+x1f(x) = x^3 + x - 1 sur [0;1][0\,;1] par dichotomie. On admet que ff est continue et strictement croissante, avec f(0)=1<0f(0) = -1 < 0 et f(1)=1>0f(1) = 1 > 0.

    1. Justifier que l'équation admet une unique solution α\alpha dans [0;1][0\,;1].
    2. On donne le programme suivant :
    def f(x):
        return x**3 + x - 1
    
    def dicho(n):
        a = 0
        b = 1
        for i in range(n):
            m = (a + b) / 2
            if f(m) < 0:
                a = m
            else:
                b = m
        return (a + b) / 2
    

    Effectuer les deux premières itérations (donner aa et bb après chaque tour).

    1. Après nn itérations, quelle est la précision (largeur de l'intervalle) obtenue sur α\alpha ?
    Voir un indice

    À chaque étape on garde la moitié de l'intervalle où ff change de signe. La largeur est divisée par 22 à chaque tour.

    Voir la correction

    Ce contenu est réservé : laisse tes coordonnées pour débloquer toutes les indications et corrections du site, gratuitement.

    Tes coordonnées servent uniquement à t'informer de nos ressources et stages — jamais de spam. Politique de confidentialité

  7. 7

    Simulation du lancer de deux dés

    Moyen

    On simule le lancer de deux dés équilibrés à six faces et on s'intéresse à la somme obtenue. On donne :

    from random import randint
    
    def simulation(N):
        L = []
        for i in range(N):
            d1 = randint(1, 6)
            d2 = randint(1, 6)
            L.append(d1 + d2)
        freq = 0
        for s in L:
            if s == 7:
                freq = freq + 1
        return freq / N
    
    1. Que renvoie la fonction simulation(N) ?
    2. Calculer la probabilité théorique d'obtenir une somme égale à 77.
    3. Vers quelle valeur la quantité renvoyée doit-elle se rapprocher lorsque NN devient grand ? Quel résultat de probabilité le justifie ?
    Voir un indice

    randint(1, 6) renvoie un entier entre 11 et 66 inclus. Dénombre les couples (d1,d2)(d_1, d_2) dont la somme vaut 77 parmi les 3636 possibles.

    Voir la correction

    Ce contenu est réservé : laisse tes coordonnées pour débloquer toutes les indications et corrections du site, gratuitement.

    Tes coordonnées servent uniquement à t'informer de nos ressources et stages — jamais de spam. Politique de confidentialité

  8. 8

    Exercice 8

    Difficile

    On calcule les coefficients binomiaux à l'aide du triangle de Pascal, fondé sur la relation

    (nk)=(n1k1)+(n1k).\binom{n}{k} = \binom{n-1}{k-1} + \binom{n-1}{k}.

    On propose la fonction suivante qui construit la ligne nn du triangle sous forme de liste :

    def ligne_pascal(n):
        L = [1]
        for k in range(n):
            L.append(1)
            for i in range(len(L) - 2, 0, -1):
                L[i] = L[i] + L[i-1]
        return L
    
    1. Exécuter ligne\_pascal(4) à la main et donner la liste obtenue.
    2. Expliquer pourquoi la boucle interne parcourt les indices en sens décroissant (de la droite vers la gauche).
    3. En déduire la valeur de (42)\binom{4}{2}.
    Voir un indice

    Ce contenu est réservé : laisse tes coordonnées pour débloquer toutes les indications et corrections du site, gratuitement.

    Tes coordonnées servent uniquement à t'informer de nos ressources et stages — jamais de spam. Politique de confidentialité

    Voir la correction

    Ce contenu est réservé : laisse tes coordonnées pour débloquer toutes les indications et corrections du site, gratuitement.

    Tes coordonnées servent uniquement à t'informer de nos ressources et stages — jamais de spam. Politique de confidentialité

  9. 9

    Exercice 9

    Difficile

    On estime π\pi par la méthode de Monte-Carlo. On tire des points au hasard dans le carré [0;1]2[0\,;1]^2 et on compte ceux qui tombent dans le quart de disque de centre OO et de rayon 11.

    from random import random
    
    def monte_carlo(N):
        dedans = 0
        for i in range(N):
            x = random()
            y = random()
            if x*x + y*y <= 1:
                dedans = dedans + 1
        return 4 * dedans / N
    
    1. La fonction random() renvoie un réel de [0;1[[0\,;1[. Justifier la présence du facteur 44.
    2. Un point (x,y)(x,y) tiré dans le carré tombe dans le quart de disque avec une certaine probabilité pp. Calculer pp.
    3. Expliquer pourquoi monte\_carlo(N) fournit une estimation de π\pi, et indiquer comment améliorer la précision.
    Voir un indice

    Ce contenu est réservé : laisse tes coordonnées pour débloquer toutes les indications et corrections du site, gratuitement.

    Tes coordonnées servent uniquement à t'informer de nos ressources et stages — jamais de spam. Politique de confidentialité

    Voir la correction

    Ce contenu est réservé : laisse tes coordonnées pour débloquer toutes les indications et corrections du site, gratuitement.

    Tes coordonnées servent uniquement à t'informer de nos ressources et stages — jamais de spam. Politique de confidentialité