01 76 38 08 47
Logo Kartable
AccueilParcourirRechercheSe connecter

Pour profiter de 10 contenus offerts.

Logo Kartable
AccueilParcourirRechercheSe connecter

Pour profiter de 10 contenus offerts.

  1. Accueil
  2. Seconde
  3. Mathématiques
  4. Exercice : Compléter un algorithme complexe

Compléter un algorithme complexe Exercice

Ce contenu a été rédigé par l'équipe éditoriale de Kartable.

Dernière modification : 12/05/2025 - Conforme au programme 2025-2026

Un libraire fait face à la situation suivante : 

  • Chaque mois il, garde 60 % de ses clients.
  • 100 nouveaux clients arrivent chaque mois.

 

Au mois 0, le libraire a 75 clients.

On cherche à écrire un algorithme pour calculer le nombre de mois nécessaires à atteindre le seuil de 250 clients. 

n=0 
U=75
while (1) : 
    U= (2)
    n = n+1 
print(n)

Quelles sont les instructions qui doivent remplacer (1) et (2) ? 

On commence par comprendre la structure globale de l'algorithme : l'algorithme utilise deux variables, la variable U représente le nombre de clients et la variable n le nombre de mois. On utilise dans cet algorithme une boucle while : cela signifie que tant que la condition spécifiée est vraie, l'algorithme continue à boucler.

(1) : Il s'agit ici de remplir la condition fixée pour effectuer une itération de la boucle while.
On sait que l'objectif est de savoir au bout de combien de mois le libraire disposera de 250 clients.
Ainsi, on va laisser les mois passer tant que le libraire ne dispose pas de 250 clients.
On remplace (1) par : U<250.

(2) : Il s'agit ici de calculer la nouvelle de valeur de U après un nouveau mois.
On utilise les données de l'énoncé pour modéliser le nombre de clients du libraire un mois donné.
On part du nombre de clients que le libraire avait le mois précédent. On en garde 60 % (on multiplie donc par 0,6), puis on ajoute 100 nouveaux clients.
On remplace (2) par : 0.6*U+100.

Ainsi, on remplace (1) par U<250  et on remplace (2) par 0.6*U+100.

Un YouTubeur calcule son nombre d'abonnés chaque mois et se rend compte que :

  • Chaque mois, 75 % de ses abonnés le restent.
  • Il obtient 500 nouveaux abonnés par mois. 

 

Au mois 0, le YouTubeur a 3 000 followers.

On cherche à écrire un algorithme pour calculer le nombre de mois nécessaires à descendre au-dessous du seuil de 2 100 followers.

n=0 
A=3
 000
while (1) : 
    A= (2)
    n = n+1 
print(n)

Quelles sont les instructions qui doivent remplacer (1) et (2) ?

On commence par comprendre la structure globale de l'algorithme : l'algorithme utilise deux variables, la variable A représente le nombre d'abonnés et la variable n le nombre de mois. On utilise dans cet algorithme une boucle while : cela signifie que tant que la condition spécifiée est vraie, l'algorithme continue à boucler.

(1) : Il s'agit ici de remplir la condition fixée pour effectuer une itération de la boucle while.
On sait que l'objectif est de savoir au bout de combien de mois le YouTubeur aura moins de 2 100 abonnés.
Ainsi, on va laisser les mois passer tant que le YouTubeur a plus de 2 100 abonnés :
On remplace (1) par : A>2 100.

(2) : Il s'agit ici de calculer la nouvelle de valeur de A après un nouveau mois. On utilise les données de l'énoncé pour modéliser le nombre d'abonnés.
On part du nombre d'abonnés que le libraire avait le mois précédent. On en garde 75 % (on multiplie donc par 0,75), puis on ajoute 500 nouveaux abonnés.
On remplace (2) par : 0.75*A+500.

Ainsi, on remplace (1) par A>2 100 et on remplace (2) par 0.75*A+500.

On étudie un jeu qui consiste à lancer 4 dés à six faces. On note X la somme des résultats obtenus.

  • Si X=14 alors le joueur gagne 14 points.
  • Si X<7 ou X>14 le joueur perd 7 points
  • Sinon le joueur gagne X-7 points.

 

On cherche à modéliser une partie de ce jeu avec l'algorithme suivant : 

from random import * 
de1=randint(1,6)
de2=randint(1,6)
de3=randint(1,6)
de4=randint(1,6)
X=de1+de2+de3+de4
if (1) : 
    G=14
elif (2) : 
    G=-
else : 
    G=(3) 
print(G)

Quelles sont les instructions qui doivent remplacer (1), (2) et (3) ?

On commence par comprendre la structure globale de l'algorithme : l'algorithme simule aléatoirement 4 lancers de dés cubiques bien équilibrés et stocke les résultats dans des variables de 1, de 2, de 3 et de 4.

Ensuite l'algorithme calcule la somme X de ces résultats et détermine le gain G en fonction de ces résultats grâce à des instructions conditionnelles if, elif ou else.

(1) : Il s'agit ici de définir la condition à remplir pour que le joueur gagne 14 points.
D'après l'énoncé cette condition est : X=14.
Attention à bien mettre le signe '==' qui teste si la variable X vaut 14.
On remplace (1) par : X==14.

(2) : Il s'agit ici de définir la condition à remplir pour que le joueur perde 7 points.
Il y a deux conditions possibles et on utilise donc or pour inclure deux conditions.
Cela signifie que si l'une au moins des conditions est remplie, la condition est vraie et on assigne la valeur -7 à la variable G.
On remplace (2) par : X<7 or X > 14.

(3) : Si aucune des conditions ci-dessus n'est réunie, le joueur gagne X-7 points.
On remplace (3) par : X-7.

Ainsi, on remplace (1) par X==14, on remplace (2) par X<7 or X > 14 et on remplace (3) par X-7.

On souhaite écrire un programme simulant le lancer d'un dé cubique équilibré un nombre fois choisi par l'utilisateur et renvoyant la fréquence du gain.
L'utilisateur gagne lorsque la face obtenue sur le dé est 1 ou 2.

from random import *
def freq_gain(n):
    g = 0
    for i in range(n):
        lancer = randint(1, 6)
        if (1):
            g = g + 1
    return (2)
n = int(input("Combien de fois voulez-vous jouer ?\n"))
print("La fréquence du gain est : ", freq_gain(n))

Par quelles instructions doit-on remplacer (1) et (2) ?

On commence par comprendre la structure globale de l'algorithme.
On écrit une fonction Python qui prend en paramètre le nombre de fois que l'utilisateur souhaite jouer.
On initialise la variable g qui dénombre les gains au fur et à mesure des lancers.

Pour effectuer n lancers, on utilise une boucle for.

Grâce au module random, on a accès à la fonction randint qui permet de choisir aléatoirement un entier entre 1 et 6.

Selon le résultat du lancer, on augmente le nombre de gains obtenus ou non.

C'est le cas si le résultat du lancer est 1 ou 2.

On va donc écrire à la place de (1) :
lancer == 1 or lancer == 2

Lorsque la boucle est terminée, on a effectué le nombre de lancers choisis par l'utilisateur et on souhaite renvoyer la fréquence des gains.

Cette fréquence est égale à \frac{g}{n}.

On remplace donc (2) par :
g/n

On va donc écrire le programme suivant :

from random import *
def freq_gain(n):
    g = 0
    for i in range(n):
        lancer = randint(1, 6)
        if lancer == 1 or lancer == 2:
            g = g + 1
    return g/n
n = int(input("Combien de fois voulez-vous jouer ?\n"))
print("La fréquence du gain est : ", freq_gain(n))

On remplace (1) par lancer == 1 or lancer == 2 et on remplace (2) par g/n.

On se place dans un repère du plan et on souhaite écrire un programme permettant de déterminer une équation de la droite (AB) où A et B sont deux points dont l'utilisateur donnera les coordonnées dans le repère choisi.

def equation(xA, yA, xB, yB):
    if
(1):
        reponse = "Une équation de (AB) est : x=" + str(xA)
    else:
        a =
(2)
        b = yA - a * xA
        reponse = "Une équation de (AB) est : y=" + str(a) + "x+(" + str(b) + ")"
    return reponse
xA = float(input("Quelle est l'abscisse de A ?\n"))
yA = float(input("Quelle est l'ordonnée de A ?\n"))
xB = float(input("Quelle est l'abscisse de B ?\n"))
yB = float(input("Quelle est l'ordonnée de B ?\n"))
print(equation(xA, yA, xB, yB))

Par quelles instructions doit-on remplacer (1) et (2) ?

On commence par comprendre la structure globale de l'algorithme.

On écrit une fonction Python prenant en paramètres les coordonnées des deux points une par une.

On sépare en deux cas :

  • soit les points A et B ont la même abscisse ; dans ce cas la droite (AB) admet une équation du type x=k ;
  • soit les points A et B n'ont pas la même abscisse ; dans ce cas la droite (AB) admet une équation du type y=ax+b. Il suffit donc de calculer les coefficients a et b.

 

Tester si les deux points ont la même abscisse se fait avec une instruction du type :
xA == xB

Déterminer le coefficient a se fait avec la formule du coefficient directeur :
a=\dfrac{y_B-y_A}{x_B-x_A}

Avec les notations choisies dans le programme, cela donne :
(yB - yA) / (xB - xA)

Ainsi, on remplace (1) par xA == xB et on remplace (2) par (yB - yA) / (xB - xA).

La charte éditoriale garantit la conformité des contenus aux programmes officiels de l'Éducation nationale. en savoir plus

Les cours et exercices sont rédigés par l'équipe éditoriale de Kartable, composéee de professeurs certififés et agrégés. en savoir plus

Voir aussi
  • Cours : Utiliser les variables et les instructions élémentaires
  • Exercice : Déterminer le type d’une variable
  • Exercice : Choisir le type d’une variable en fonction de la situation
  • Exercice : Écrire une instruction d’affectation simple
  • Exercice : Écrire une instruction d'affectation complexe
  • Exercice : Différencier situation d'instruction conditionnelle, situation de boucle bornée et situation de boucle non bornée
  • Exercice : Lire une instruction conditionnelle
  • Exercice : Écrire une instruction conditionnelle
  • Exercice : Lire une boucle bornée dans un cas simple
  • Exercice : Écrire une boucle bornée dans un cas simple
  • Exercice : Lire une boucle non bornée dans un cas simple
  • Exercice : Écrire une boucle non bornée dans un cas simple
  • Exercice : Lire un algorithme complexe
  • Exercice : Comprendre un algorithme complexe
  • Exercice : Modifier un algorithme complexe
  • Quiz : Utiliser les variables et les instructions élémentaires

Nos conseillers pédagogiques sont à votre écoute 7j/7

Nos experts chevronnés sont joignables par téléphone et par e-mail pour répondre à toutes vos questions.
Pour comprendre nos services, trouver le bon accompagnement ou simplement souscrire à une offre, n'hésitez pas à les solliciter.

support@kartable.fr
01 76 38 08 47

Téléchargez l'application

Logo application Kartable
KartableWeb, iOS, AndroidÉducation

4,5 / 5  sur  20261  avis

0.00
app androidapp ios
  • Contact
  • Aide
  • Livres
  • Mentions légales
  • Recrutement

© Kartable 2025