E0 : Algorithmique
2nde 1 - Gary Dahan
Exercice 1
Soit l'algorithme ci-dessous :
def algo(x):
a=x+1
b=a**2
c=3*b
Vrai ou Faux ? Justifier.
1. Si on exécute algo(2), alors la variable c contiendra 27.
2. Si on exécute algo(-3), alors la variable c contiendra −12.
3. La variable c contient toujours un réel positif.
Exercice 2
On considère le programme de calcul suivant :
• Choisir un nombre .
• Prendre son double.
• Soustraire 1.
• Elever au carré.
Parmi les 3 algorithmes suivants, indiquer ceux pour lesquels la variable contient le résultat du programme ci-dessus.
def algo1(x): def algo2(x): def algo3(x):
a=2*x x=2*x x=2*x
b=a-1 x=2*x-1 x=x-1
x=b**2 x=(2*x-1)**2 x=x**2
return(x) return(x) return(x)
Exercice 3
Ecrire un algorithme réalisant le programme de calcul suivant :
• Choisir un nombre .
• Calculer son triple.
• Ajouter 2 au résultat.
• Calculer le carré du résultat.
• Soustraire 9 au résultat.
© Gary Dahan 2024-2025 - Toute reproduction ou utilisation sans autorisation est formellement interdite 1
Exercice 4
On considère l'algorithme suivant :
def algo(n):
a=(n+2)*(n+2)
a=a-(n+4)
a=a/(n+3)
return (a)
1. Que retourne cet algorithme lorsque = 4 ? lorsque = 7 ? lorsque = −5 ?
Ecrire le détail des opérations effectuées.
2. Que semble retourner cet algorithme?
3. Que se passe-t-il pour = −3 ? Pourquoi?
Exercice 5
Parmi les 3 algorithmes suivants, indiquer ceux qui permettent d'échanger les valeurs des variables et .
def algo1(a,b): def algo2(a,b): def algo3(a,b):
a=b c=a a=a+b
b=a a=b b=a-b
b=c a=a-b
Info : En Python, on peut échanger le contenu de deux variables en écrivant a,b=b,a.
Exercice 6
On considère l'algorithme suivant :
def algo(x,y):
if x<10:
return 3*x+y
else:
return x+y
1. Quels sont les arguments (ou paramètres) de cette fonction ?
2. Quels nombres retournent les instructions suivantes ?
algo(3,4)
algo(12,5)
algo(-3,11)
Exercice 7
En s'inspirant de la fonction max du cours, écrire une fonction max3 qui prend en paramètre 3 nombres a, b et c
et renvoie le maximum de ces 3 nombres.
© Gary Dahan 2024-2025 - Toute reproduction ou utilisation sans autorisation est formellement interdite 2
Exercice 8
On considère l'algorithme Python suivant, composé de 3 fonctions :
def f(x):
rep=x**2-4*x+3
return(rep)
def g(x):
rep=x**3+x**2-17*x+15
return(rep)
def mystere(x):
if (x==1)or(x==3):
print("erreur")
else:
return(g(x)/f(x))
1. Que retourne l'instruction mystere(0)? mystere(4)? mystere(10)? mystere(3)?
2. Que semble faire ce programme ?
3. Pourquoi demande-t-on au programme d'afficher "erreur" dans certains cas ?
Exercice 9
On considère l'algorithme suivant :
def algo(A):
B=sqrt(A)
C=round(B)
if B==C:
print(A, 'est un carré parfait')
else:
print(A, 'n est pas un carré parfait')
Note : la fonction round() arrondit à l'entier le plus proche.
1. Que fait cet algorithme?
2. Que valent et lorsque = 70 ? Quelle est alors la sortie de l'algorithme ?
3. Même question avec = 625.
Exercice 10
= −2 + 1 si <2
Soit la fonction définie sur ℝ par :
=3 − 9 si ≥2
Ecrire une fonction Python qui permet de calculer l'image par la fonction d'un nombre donné.
© Gary Dahan 2024-2025 - Toute reproduction ou utilisation sans autorisation est formellement interdite 3
Exercice 11
Soit l'algorithme suivant :
def algo (xa,ya,xb,yb,xc,yc):
xi=(xa+xc)/2
yi=(ya+yc)/2
xd=2*xi-xb
yd=2*yi-yb
return(xd,yd)
1. Faire fonctionner à la main cet algorithme dans chacun de cas suivants :
a) 2; −1 , −3; 1 et 5; 4 .
b) 2; 2 , −4; 6 , et −1; 3 .
2. Dans un repère orthonormé, placer les points , , et dans chacun des cas précédents.
3. Quel semble être le rôle de cet algorithme ?
Exercice 12
A l'aide d'un tableau, déterminer quelle valeur affiche cet algorithme à la fin de son exécution.
def algo():
u=5700
n=0
while u>4500 :
u=1.015∗u-300
n=n+1
return(n)
Exercice 13
A l'aide d'un tableau, déterminer quelle valeur affiche cet algorithme à la fin de son exécution.
def algo():
n=0
u=90
while u>=120-u :
u=0.85∗u+6
n=n+1
return(n)
© Gary Dahan 2024-2025 - Toute reproduction ou utilisation sans autorisation est formellement interdite 4
Exercice 14
Un bassin contient 800 m3 d'eau.
Chaque jour, 25% du volume restant du bassin est transféré vers un autre bassin.
On note le volume contenu dans le bassin.
On souhaite écrire un algorithme qui permet de déterminer au bout de combien de jours le bassin contiendra moins de
100 m3 d'eau.
1. Compléter cet algorithme.
def bassin():
n=0
a=.......
while ....... :
a= .......
n= .......
return(n)
2. Répondre alors à la question posée à l'aide d'un tableau.
Exercice 15
Un opéra propose un abonnement annuel pour ses spectacles.
Chaque année, 75% des spectateurs renouvellent leur abonnement, et on compte également 300 nouveaux abonnés.
En 2014, il y avait 500 abonnés.
On note ! le nombre d'abonnés à cet opéra.
On souhaite écrire un algorithme qui permet d'afficher l'année à partir de laquelle le nombre d'abonnements sera
supérieur à 1190. On propose 3 algorithmes :
def algo1(): def algo2():
n=0 n=0
u=500 u=500
while u<=1190: while u<=1190:
n=n+1 u=0.75*u+300
u=0.75*u+300 n=n+1
n=n+2014 n=n+2014
return(n) return(n)
def algo3():
n=0
u=500
while u<=1190:
n=n+1
u=0.75*u+300
n=n+2014
return(n)
Parmi ces 3 algorithmes, déterminer lequel convient pour répondre au problème posé, et expliquer pourquoi les deux
autres ne conviennent pas.
© Gary Dahan 2024-2025 - Toute reproduction ou utilisation sans autorisation est formellement interdite 5
Exercice 16
Claude possède une maison à la campagne avec 1500 m² de gazon depuis 2020.
Chaque année, 20% de son gazon est détruit et remplacé par de la mousse. Claude arrache alors à la main 50m² de
mousse et la remplace par du gazon neuf.
Compléter l'algorithme ci-dessous pour qu'il affiche l'année à partir de laquelle il restera moins de 500m² de gazon.
def algo():
u=.......
n=.......
while ....... :
.......
.......
return(...)
Exercice 17
Un lycée a une capacité maximum de 2800 élèves. Il contient cependant 3000 élèves à la rentrée 2023.
Chaque année, 10% des élèves quittent l'établissement et 250 nouveaux élèves s'inscrivent.
Ecrire un algorithme qui permet de déterminer à partir de quelle année le lycée ne sera plus en sureffectif.
© Gary Dahan 2024-2025 - Toute reproduction ou utilisation sans autorisation est formellement interdite 6