Examen Algo 2 LMIO 1 2019 - 2020 - Correction
Examen Algo 2 LMIO 1 2019 - 2020 - Correction
Examen Algo 2 LMIO 1 2019 - 2020 - Correction
EXERCICE 1 : 5 points
Soit l’algorithme suivant :
1 VARIABLE R, N : ENTIER
2 DEBUT {ALGO}
3 LIRE (N)
4 R ← 1
5 TANT QUE (N<=0)
6 DEBUT {TANT_QUE}
7 ECRIRE ("Erreur...")
8 LIRE (N)
9 FIN {TANT_QUE}
10 TANT QUE (N>0)
11 DEBUT {TANT_QUE}
12 R ← R * 2
13 N ← N - 1
14 FIN {TANT_QUE}
15 ECRIRE ("Le résultat est : ", R)
16 FIN {ALGO}
1/2
1. On vous donne N = - 2, en effectuant la trace des instructions numérotées de 5 à 9,
globalement à quoi servent-elles ?
• On fournit à N = -2 ;
• On teste, (Est-ce que -2 <= 0 ?) Oui ;
• On affiche Erreur ;
• Puis on invite à l’utilisateur à saisir N à nouveau ;
• Le processus continue jusqu’à ce que l’utilisateur tape le contraire de la condition
de la boucle Tant que notamment (N>0).
Pour N = 4 Pour N = 6
N R N R
4 0 6 0
4 1 6 1
Est-ce que 4 > 0 ? Oui Est-ce que 6 > 0 ? Oui
4 2 6 2
3 2 5 2
Est-ce que 3 > 0 ? Oui Est-ce que 5 > 0 ? Oui
3 4 5 4
2 4 4 4
Est-ce que 2 > 0 ? Oui Est-ce que 4 > 0 ? Oui
2 8 4 8
1 8 3 8
Est-ce que 1 > 0 ? Oui Est-ce que 3 > 0 ? Oui
1 16 3 16
0 16 2 16
Est-ce que 0 > 0 ? Non Est-ce que 2 > 0 ? Oui
2 32
1 32
Est-ce que 1 > 0 ? Oui
1 64
0 64
Est-ce que 0 > 0 ? Non
2/2
4. Traduisez l’algorithme en programme Python.
3/2
EXERCICE 2 : (4 points)
Ecrire un algorithme qui d’abord remplit un tableau d’entiers par des valeurs saisies au clavier,
ensuite copie toutes les valeurs strictement positives dans un deuxième tableau nommé TPOS
et toutes les valeurs strictement négatives dans un troisième tableau nommé TNEG. Afficher
les tableaux TPOS et TNEG avec le nombre d’occurrences de chacun.
NB : Le nombre de valeurs à saisir ne doit pas dépasser 50 éléments
4/2
EXERCICE 3 : 8 points
1. Identifiez les fonctions et procédures
Procédure
- affichageResultat()
Fonctions
- saisieDesNombres ()
- sommeDiviseurs(x : entier)
- verifierNombresAmicaux (a : entier, b : entier, sdivA : entier, sdivB : entier)
saisieDesNombres - x
sommeDiviseurs x sDiv
saisieDesNombres
sommeDiviseurs
x
x
sDiv
affichageResultat
booleen a,b,sdivA,sdivB
verifierNombresAmicaux
5/2
4. Ecrire en Python les fonctions et procédures
def saisieDesNombres():
x = int(input())
return x
def sommeDiviseurs(x):
sDiv = 0
for i in range(1,x):
if (x%i==0):
sDiv = sDiv + i
return sDiv
def verifierNombresAmicaux(a,b,sDivA,sDivB):
ok = False
if(a==sDivB and b==sDivA):
ok = True
else:
ok = False
return ok
def affichageResultat():
a = saisieDesNombres()
b = saisieDesNombres()
S1 = sommeDiviseurs(a)
S2 = sommeDiviseurs(b)
amicaux = verifierNombresAmicaux(a,b,S1,S2)
print(amicaux)
affichageResultat()
6/2