Algorithmes et programmes en seconde : corrigé détaillé des exercices 1 à 10

Accueil >> Exercices de maths >> Exercices en 2de >> Corrigés >> Algorithmes et programmes en seconde : corrigé détaillé des exercices 1 à 10
algorithmes programmes exercices maths 2de

Ce corrigé des exercices d’algorithmes en seconde reprend les dix premiers exercices de la fiche « algorithmes et programmes ». Ils couvrent les notions du programme d’algorithmique : le type d’une variable (entier, flottant, chaîne de caractères), l’affectation et l’exécution pas à pas d’un programme, l’instruction conditionnelle if … else, la boucle bornée for, l’écriture d’une fonction Python et la simulation d’une expérience aléatoire avec random().

Pour chaque exercice, la résolution donne d’abord le résultat attendu, puis un programme Python complet et commenté que tu peux recopier dans un éditeur (Thonny, EduPython, la calculatrice) pour le tester. Le bon réflexe : faire tourner l’algorithme « à la main » en écrivant l’état des variables dans un tableau, puis vérifier sur machine. Les deux graphiques aident à relier programmes et fonctions, ce qui prépare aux fonctions définies par morceaux.

Les énoncés se trouvent sur la fiche Algorithmes et programmes : exercices de maths en 2de corrigés en PDF. (31 exercices au total). Cherchez d’abord chaque exercice au brouillon, puis comparez avec la correction.

Corrigé des exercices 1 à 10 sur les algorithmes et la programmation en seconde

Exercice 1 : Programme avec le langage Python

Revoir l’énoncé de l’exercice 1

Énoncé de l'exercice 1 sur les algorithmes et la programmation en seconde : Programme avec le langage Python

a) La valeur saisie est convertie par int( ) : \(x\) est une variable de type entier (int).

b) Le programme calcule successivement \(4x\), puis \(4x+1\), puis le carré.

\(x\) \(y=4x\) \(y=y+1\) \(y=y^2\) (affiché)
3 12 13 169
−1 −4 −3 9
11 44 45 2 025

c) En suivant les affectations : \(f(x)=(4x+1)^2\) (que l’on peut développer en \(16x^2+8x+1\)).

Réponse : \(x\) est un entier ; \(y=169\), \(9\) et \(2\,025\) ; \(f(x)=(4x+1)^2\).

Exercice 2 : Décrire le rôle et fonctionnement de l’algorithme

Revoir l’énoncé de l’exercice 2

Énoncé de l'exercice 2 sur les algorithmes et la programmation en seconde : Décrire le rôle et fonctionnement de l’algorithme

Fonctionnement. L’algorithme demande une chaîne de caractères \(C\) non vide. Il range dans \(\ell\) le nombre de caractères de \(C\) : \(\ell\) est donc la position du dernier caractère. Il extrait ensuite de \(C\) la sous-chaîne qui commence au caractère numéro \(\ell\) et qui contient 1 caractère, et l’affiche.

Exemple. Avec \(C=\) « algorithme » : \(\ell=10\) et Sch(« algorithme », 10, 1) = « e ».

Rôle. L’algorithme affiche le dernier caractère de la chaîne saisie. En Python, on écrirait simplement C[len(C)-1] ou C[-1] (attention, en Python la numérotation commence à 0).

Réponse : l’algorithme affiche le dernier caractère de la chaîne saisie.

Exercice 3 : Programme et magasin de reprographie

Revoir l’énoncé de l’exercice 3

Énoncé de l'exercice 3 sur les algorithmes et la programmation en seconde : Programme et magasin de reprographie

a) Jusqu’à 50 photocopies, chacune coûte 0,15 € : \(\text{Prix}=0{,}15\times N\). Au-delà, les 50 premières coûtent \(50\times0{,}15=7{,}50\) € et chacune des \(N-50\) suivantes coûte 0,10 €.

Ligne ① : Prix=0.15*N
Ligne ② : Prix=0.15*50+0.10*(N-50) (soit Prix=7.5+0.1*(N-50))

b) Le programme complet :

print(« Entrer N : »)
N=int(input())
if N<=50:
    Prix=0.15*N
else:
    Prix=0.15*50+0.10*(N-50)
print(« Prix= »,Prix)

c) Contrôles : pour \(N=30\), \(30\times0{,}15=4{,}50\) € ; pour \(N=50\), \(7{,}50\) € ; pour \(N=80\), \(7{,}50+30\times0{,}10=10{,}50\) €. Remarque : si l’on comprend que toutes les copies passent à 0,10 € au-delà de 50, la ligne ② devient Prix=0.10*N ; mais alors 51 copies (5,10 €) coûteraient moins cher que 50 (7,50 €), ce qui est peu vraisemblable.

Réponse : ① Prix=0.15*N ; ② Prix=7.5+0.1*(N-50) ; par exemple 80 photocopies coûtent 10,50 €.

Exercice 4 : Algorithme qui affiche la distance

Revoir l’énoncé de l’exercice 4

Énoncé de l'exercice 4 sur les algorithmes et la programmation en seconde : Algorithme qui affiche la distance

a) Durée = distance ÷ vitesse.

\[ t_1=\frac{5}{15}=\frac{1}{3}\text{ h}=20\text{ min} \qquad t_2=\frac{7-5}{12}=\frac{1}{6}\text{ h}=10\text{ min} \]

Louise met 30 minutes au total.

b) À 15 km/h, on parcourt \(\frac{15}{60}=0{,}25\) km par minute ; à 12 km/h, \(\frac{12}{60}=0{,}2\) km par minute. Donc :

  • si \(0\leqslant t\leqslant20\) : \(d(t)=0{,}25\,t\) ;
  • si \(20\lt t\leqslant30\) : \(d(t)=5+0{,}2\,(t-20)\) ;
  • si \(t\gt30\) : la course est finie, \(d(t)=7\).

t=float(input(« t en minutes : « ))
if t<=20:
    d=0.25*t
elif t<=30:
    d=5+0.2*(t-20)
else:
    d=7
print(« d(t) = »,d, »km »)

Par exemple, pour \(t=25\) min, le programme affiche \(5+0{,}2\times5=6\) km.

051015202530351234567t (min)d (km)15 km/h12 km/h
La distance parcourue en fonction du temps : 5 km en 20 min, puis 2 km en 10 min
Réponse : Louise met 30 min ; \(d(t)=0{,}25t\) jusqu’à 20 min, puis \(d(t)=5+0{,}2(t-20)\) jusqu’à 30 min, puis 7 km.

Exercice 5 : Un algorithme à étudier

Revoir l’énoncé de l’exercice 5

Énoncé de l'exercice 5 sur les algorithmes et la programmation en seconde : Un algorithme à étudier

a) On suit l’évolution de \(S\) pour \(n=5\) :

\(i\) 1 2 3 4 5
\(S\) 1 5 14 30 55

Le résultat affiché est 55.

b) À chaque tour, on ajoute \(i^2\) à \(S\). L’algorithme calcule donc la somme des carrés des entiers de 1 à \(n\) : \(S=1^2+2^2+\dots+n^2\).

Réponse : pour \(n=5\), \(S=55\) ; l’algorithme calcule \(1^2+2^2+\dots+n^2\).

Exercice 6 : Un algorithme qui donne l’image par une fonction

Revoir l’énoncé de l’exercice 6

Énoncé de l'exercice 6 sur les algorithmes et la programmation en seconde : Un algorithme qui donne l’image par une fonction

On traduit les trois cas par une instruction conditionnelle à trois branches :

def f(x):
    if x<=0:
        return x**2
    elif x<=1:
        return x
    else:
        return -2*x+3

Le elif n’est examiné que si \(x\gt0\) : la condition x<=1 correspond donc bien au cas \(0\lt x\leqslant1\). Tests : \(f(-2)=4\), \(f(0{,}5)=0{,}5\), \(f(3)=-3\).

−2−1123−3−2−11234Ox−2x + 3
La courbe de f est formée de trois morceaux qui se raccordent en (0 ; 0) et (1 ; 1)
Réponse : fonction Python à trois cas if x<=0 / elif x<=1 / else renvoyant \(x^2\), \(x\) ou \(-2x+3\).

Exercice 7 : Simuler 100 lancers avec Python

Revoir l’énoncé de l’exercice 7

Énoncé de l'exercice 7 sur les algorithmes et la programmation en seconde : Simuler 100 lancers avec Python

a) Rôle des variables :

  • n est un compteur : il vaut 0 au départ et augmente de 1 à chaque « Pile » ; à la fin, il contient le nombre de Pile obtenus ;
  • i est la variable de la boucle : elle prend les valeurs 1, 2, …, 100 et compte les lancers ;
  • x est un nombre aléatoire de \([0\,;1[\) tiré à chaque lancer ; x<0.5 arrive avec une probabilité \(\frac{1}{2}\) et représente « Pile ».

b) Il suffit d’englober la simulation dans une seconde boucle qui se répète M fois (et de remettre n à 0 à chaque simulation) :

from random import random
M=int(input(« M = « ))
for k in range(1,M+1):
    n=0
    for i in range(1,101):
        x=random()
        if x<0.5:
            n=n+1
    print(« simulation »,k, »: n= »,n)

Réponse : n compte les Pile, i numérote les lancers, x est le tirage aléatoire ; pour M simulations, on ajoute une boucle extérieure répétée M fois avec n remis à 0.

Exercice 8 : Donner un programme qui fournit les 100 premiers entiers

Revoir l’énoncé de l’exercice 8

Énoncé de l'exercice 8 sur les algorithmes et la programmation en seconde : Donner un programme qui fournit les 100 premiers entiers

a) Pour chaque entier \(k\) de 1 à \(N\), on ajoute 1 à \(x\) lorsque \(k\) divise \(N\). La fonction renvoie donc le nombre de diviseurs de \(N\). Par exemple, diviseurs(12) = 6 (1, 2, 3, 4, 6, 12).

b) On réutilise cette fonction dans une boucle de 1 à 100 (en Python, « \(k\) divise \(N\) » s’écrit N%k==0) :

def diviseurs(N):
    x=0
    for k in range(1,N+1):
        if N%k==0:
            x=x+1
    return x
for n in range(1,101):
    if diviseurs(n)>=10:
        print(n)

Le programme affiche 48, 60, 72, 80, 84, 90 et 96 (par exemple 60 a 12 diviseurs : 1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60).

Réponse : diviseurs(N) donne le nombre de diviseurs de N ; les entiers de 1 à 100 ayant au moins dix diviseurs sont 48, 60, 72, 80, 84, 90 et 96.

Exercice 9 : Un programme écrit en Python

Revoir l’énoncé de l’exercice 9

Énoncé de l'exercice 9 sur les algorithmes et la programmation en seconde : Un programme écrit en Python

a) \(x\) est converti par int( ) : c’est un entier.

b) Le programme calcule \(x^2\), puis \(-x^2+3x\), puis \(-x^2+3x+4\).

  • \(x=1\) : \(y=1\), puis \(-1+3=2\), puis \(2+4=\) 6 ;
  • \(x=-2\) : \(y=4\), puis \(-4-6=-10\), puis −6 ;
  • \(x=12\) : \(y=144\), puis \(-144+36=-108\), puis −104.

c) Attention à la ligne y=-y+3*x : c’est l’opposé de \(y\) qui est utilisé. On obtient \(f(x)=-x^2+3x+4\).

Réponse : \(x\) est un entier ; \(y=6\), \(-6\) et \(-104\) ; \(f(x)=-x^2+3x+4\).

Exercice 10 : Un programme écrit avec le langage Python

Revoir l’énoncé de l’exercice 10

Énoncé de l'exercice 10 sur les algorithmes et la programmation en seconde : Un programme écrit avec le langage Python

a) Pour \(n=4\), la boucle prend \(j=1,2,3,4\) (range(1,n+1) s’arrête avant \(n+1\)) :

\[ S=0+2+4+6+8=20 \]

Le programme affiche S= 20.

b) Le programme ajoute \(2j\) pour \(j\) allant de 1 à \(n\) : il calcule la somme des \(n\) premiers nombres pairs non nuls, \(S=2+4+\dots+2n\). Comme \(1+2+\dots+n=\frac{n(n+1)}{2}\), on a \(S=n(n+1)\) ; pour \(n=4\), \(4\times5=20\).

Réponse : pour \(n=4\), \(S=20\) ; en général \(S=2+4+\dots+2n=n(n+1)\).

La méthode à retenir sur les algorithmes et la programmation

  • Exécuter à la main : faire un tableau avec une colonne par variable et une ligne par instruction ou par tour de boucle.
  • Affectation : dans y=y+1, on calcule d’abord le membre de droite avec l’ancienne valeur, puis on la remplace.
  • Boucle bornée : for i in range(a,b) fait prendre à \(i\) les valeurs \(a, a+1, \dots, b-1\) (la borne \(b\) est exclue).
  • Conditionnelle : if / elif / else ; les cas sont examinés dans l’ordre, le premier vrai est exécuté.
  • Compteur et accumulateur : on initialise à 0 avant la boucle, on ajoute 1 (compteur) ou une quantité (somme) à chaque tour.
  • Simulation : random()<p se produit avec une probabilité \(p\).

Les erreurs fréquentes

  • Oublier que range(1,n+1) s’arrête à \(n\), ou croire que range(1,n) va jusqu’à \(n\).
  • Lire y=-y+3*x comme \(y=y+3x\) : le signe moins change l’opposé de \(y\).
  • Écrire x**2 pour un nombre négatif et se tromper de signe à la main : \((-2)^2=4\).
  • Placer l’initialisation n=0 en dehors de la boucle des M simulations : les résultats s’additionnent.
  • Confondre = (affectation) et == (test d’égalité) dans une condition.

Les exercices 11 à 31 de la fiche ne sont pas corrigés ici : ce sont de bons entraînements en autonomie une fois la méthode comprise. Retrouver tous les énoncés.

Questions fréquentes

Quelle différence entre un algorithme et un programme ?

Un algorithme est une suite d’instructions décrite en langage courant, indépendante de la machine. Un programme est sa traduction dans un langage précis, comme Python, que l’ordinateur peut exécuter. En seconde, on passe régulièrement de l’un à l’autre.

Faut-il savoir programmer sur ordinateur pour le contrôle ?

En contrôle écrit, on demande surtout de lire, compléter ou écrire quelques lignes de Python sur papier. Tester les programmes chez soi (Thonny, EduPython, calculatrice) aide beaucoup à retenir la syntaxe, notamment l’indentation et les deux-points.

Pourquoi l’indentation est-elle importante en Python ?

En Python, ce sont les espaces en début de ligne qui indiquent quelles instructions sont dans une boucle ou dans un if. Une instruction mal indentée change complètement le résultat, par exemple un print exécuté à chaque tour au lieu d’une seule fois.

Pour aller plus loin :
Voter.. post
Télécharger puis imprimer cette fiche en PDF.

Télécharger ou imprimer cette fiche «algorithmes et programmes en seconde : corrigé détaillé des exercices 1 à 10» au format PDF afin de pouvoir travailler en totale autonomie.


Nombre de fichiers PDF téléchargés.  Maths PDF c'est 16 172 592 cours et exercices de maths téléchargés en PDF et 4 250 exercices.

Télécharger les manuels scolaires de maths en PDF du CP à la Terminale