Examen Algo 2 LMIO 1 2019 - 2020 - Correction

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 6

UNIVERSITE IBA DER THIAM DE THIES

UFR DES SCIENCES ECONOMIQUES ET SOCIALES


DEPARTEMENT DE MANAGEMENT DES ORGANISATIONS
LICENCE 1 EN MANAGEMENT INFORMATISE DES ORGANISATIONS | 2019 – 2020
D. SAMB – M. DIOUF / SEMESTRE 2

EXAMEN D’ALGORITHMIQUE (SESSION NORMALE)


DUREE : 02H30 (Proposition de correction)
********
Maitrise des connaissances (3 points)
1. En python, quel mot clé est utilisé pour déclarer une fonction ?
On utilise le mot clé def
2. En python, comment convertir une chaine de caractères en entier ?
En utilisant la fonction voire méthode de transtypage int()
3. En python, quelle est la différence entre les méthodes remove() et pop() ?
- remove() : supprime le premier élément de la liste, dont la valeur est égale à
l’argument passé.
- pop() : cette méthode supprime un élément à l’index spécifié et le retourne, sii vous
ne donnez aucun index à pop(), elle supprimera le dernier élément de la liste.
4. Expliquez la différence entre une portée globale et locale d’une variable
- Une variable globale est utilisable par tous les sous-programmes contenus dans le
fichier où elle est déclarée.
- Une variable locale, au contraire, n'est utilisable qu'à l'intérieur du sous-
programme dans lequel elle est déclarée.
5. Qu’affiche l’instruction suivante : print(['Hello']*2) ?
['Hello', 'Hello']
6. Quelle est l’équivalence de la structure "selon...cas" en Python ?
C’est l’instruction elif

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).

Les lignes 5 à 9 permet à l’utilisateur de saisir une valeur exclusivement positive

2. Avec N = 4 et N = 6, donnez la trace de l’algorithme


LIRE(N)
R ← 1
TANT QUE (N>0)
DEBUT {TANT_QUE}
R ← R * 2
N ← N - 1
FIN {TANT_QUE}

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

3. En fonction des résultats de R, que permet de faire cet algorithme ?


Avec N = 4 ; R = 16
Avec N = 6 ; R = 64

Cet algorithme permet juste de calculer : 𝟐𝐍

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

VARIABLE N,x,i,pos,neg : ENTIER


TABLEAU T[N], TPOS[N], TNEG[N] : ENTIER
DEBUT {ALGO}
ECRIRE ("Saisir le nombre d’élément du tableau")
LIRE (N)
TANT QUE (N>50)
DEBUT {TANT_QUE}
ECRIRE ("Le nombre d’éléments ne doit pas dépasser 50.")
LIRE (N)
FIN {TANT_QUE}
pos = 0
neg = 0
POUR i ← 0 à N
DEBUT {POUR}
LIRE (x)
T[i] ← x
FIN {POUR}
POUR i ← 0 à N
DEBUT {POUR}
SI (T[i]>=0) ALORS
DEBUT {SI}
TPOS[pos] = T[i]
pos = pos + 1
FIN {SI}
SI (T[i]<0) ALORS
DEBUT {SI}
TNEG[neg] = T[i]
neg = neg + 1
FIN {SI}
FIN {POUR}
POUR j ← 0 à pos-1
DEBUT {POUR}
ECRIRE (TPOS[j])
FIN {POUR}
POUR j ← 0 à neg-1
DEBUT {POUR}
ECRIRE (TNEG[j])
FIN {POUR}
ECRIRE("Le nombre d’éléments positif: ",pos)
ECRIRE("Le nombre d’éléments négatif: ",neg)
FIN {ALGO}

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)

2. Fournir le tableau des flux (entrées et sorties)

affichageResultat Entree Sortie

saisieDesNombres - x

sommeDiviseurs x sDiv

verifierNombresAmicaux a,b,sdivA,sdivB booleen

3. Dresser le diagramme des flux (entrées et sorties)

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

Vous aimerez peut-être aussi