Juin 2010 Page 3/4
Partie 2 : Q.C.M. à réponses multiples possibles
Bonne réponse : 1 pt ; mauvaise réponse ou réponse incomplète : -0,5 pt ; pas de réponse : 0 pt.
Questions Réponses
15. Quelle(s) est(sont) l’(les) assertion(s) correcte(s) ? n!
5! +n3est O(n3)
3nlog n+ 2n2
3est O(n2
3)
3n+ 2n3est O(n3)
2n+ 6 log n+ 5n3
4est O(nlog n)
2nlog n+n7
2est O(n2)
16. Soit la BNF suivante pour la structure conditionnelle en
langage ADA
if_statement : :=
"if" condition "then" sequence_of_statements
{"elsif" condition "then" sequence_of_statements}
["else" sequence_of_statements]
"end if ;"
Quelle(s) est(sont) la(les) séquence(s) valide(s) ?
if A=B then A := B + 1 ; end if ;
if A=B then A := B + 1 ;
else A := B ; end if ;
if A=B then A := B + 1 ; elsif A=C then
A := C + 1 ; elsif A=D then A := D + 1 ;
end if ;
17. Que peut-on dire d’une table de données lorsque
l’implémentation est réalisée par des tableaux non ordonnés ?
L’opération d’insertion est O(1)
L’opération d’insertion est O(n)
L’opération de recherche est O(1)
L’opération de recherche est O(n)
L’opération de suppression est O(n)
18. Soit la portion de code suivante, dans un langage compilé
inventé, où le “.” désigne l’opérateur de concaténation de
chaines :
int i ; string s, r ;
i = 0 ;
s = “L” ;
r = s.i.s ;
En sortie, rcontient L0L.
En se limitant à ces seules informations, comment peut-on
qualifier le typage de ce langage ?
statique
dynamique
faible
explicite
implicite
19. Parmi les list comprehension suivantes, quelle(s) est(sont) l’(les) implémentation(s) fonctionnelle(s) du tri rapide ?
1.
def func1(L):
if L == []:
return []
pivot = L[0]
return (func1([x for x in L[:len(L)/2] if x < pivot]) +
[pivot] +
func1([x for x in L[len(L)/2:] if x >= pivot]))
2.
def func2(L):
if L == []:
return []
pivot = L[0]
return (func2([x for x in L[1:] if x <= pivot]) +
[pivot] +
func2([x for x in L[1:] if x > pivot]))
3.
def func3(L):
if L == []:
return []
pivot = L[-1]
return (func3([x for x in L[:L[-1]] if x < pivot]) +
[pivot] +
func3([x for x in L[:L[-1]] if x >= pivot]))
4.
def func4(L):
if L == []:
return []
pivot = L.pop(0)
return (func4([x for x in L[1:] if x <= pivot]) +
[pivot] +
func4([x for x in L[1:] if x > pivot]))