Test 1 d`informatique 1 Nom:

publicité
ICC MT & EL
Test N° 1
vendredi 23 octobre 2015
Ne PAS retourner ces feuilles avant d’en être autorisé!
Merci de poser votre carte CAMIPRO en évidence sur la table.
Vous pouvez déjà compléter et lire les informations ci-dessous:
NOM
____________________________________________________________
Prénom
_____________________________________________________________
Numéro SCIPER
_________________________________________________________
Signature _______________________________________________________________
BROUILLON : Ecrivez aussi votre NOM-Prénom sur la feuille de brouillon fournie.
Toutes vos réponses doivent être sur cette copie d’examen. Les feuilles de
brouillon sont ramassées puis détruites.
14h15
15h30
Le test écrit commence à:
Retourner les feuilles avec la dernière page face à vous à :
les contrôles écrits ICC sont SANS document autorisé,
ni appareil électronique
Total sur 20 points = 12 points pour la partie Quizz et 8 points pour les questions ouvertes
La partie Quizz (QCM) comporte 12 questions : chaque question n’a qu’une seule réponse
correcte parmi les 4 réponses proposées. Chaque réponse correcte donne 1 point. Il n’y a pas
de pénalité en cas de mauvaise réponse. Aucun point n’est donné en cas de réponses multiples,
de rature, ou de réponse incorrecte. Vous pouvez utiliser un crayon à papier et une gomme.
Indiquez vos réponses à la partie Quizz dans le tableau en bas de cette page.
La partie « question ouverte » comporte 2 questions. Chaque question rapporte 4 points.
A
B
C
D
1
2
3
4
Questions du Quizz
5 6 7 8 9
1
10
11
12
A
B
C
D
QUIZZ
Notation: on utilise dans ce quizz la virgule pour séparer les puissances positives des puissances
négatives de la base dans la notation positionnelle des nombres.
-------------------------------------------------------------------------------------------------------------------------Question 1 : l’algorithme « glouton » utilisé pour le problème du sac à dos est caractérisé par :
A Un usage important de la mémoire pour mémoriser des résultats intermédiaires
B Un ordre de complexité polynomial pour résoudre le problème
C Il est indécidable parce qu’il est autoréférent
D Il prend toujours une décision locale qui n’est jamais remise en question
-------------------------------------------------------------------------------------------------------------------------Soit l’algorithme Algo_X qui reçoit deux listes de caractères A et B en entrée. Un élément d’une
liste L peut être accédé avec la notation L(i), avec i compris entre 1 et Taille(L). L’ordre de
complexité de Taille(L) est O(1).
Algo_X
entrée : 2 listes de caractères A et B
sortie : ???
n ← Taille(A)
m ← Taille(B)
Si m ≤ n
Pour i allant de 1 à n+1-m
j ←0
Tant que A(i+j) = B(j+1)
Si j+1 = m
sortir : Vrai
j ← j+1
sortir : Faux
Question 2 : soit les listes :
A1 = {a,a,c,d,b,c,c,a,g,f,b}, B1 ={d,b,c,a}, A2 = {b,d,c,f,f}, B2 = {g,f,a,b,d,c,f}
A
B
C
D
Algo_X(A1,B1) donne Vrai
Algo_X(A1,B1) donne Faux
Algo_X(A1,B1) donne Vrai
Algo_X(A1,B1) donne Faux
et Algo_X(A2,B2) donne Faux
et Algo_X(A2,B2) donne Faux
et Algo_X(A2,B2) donne Vrai
et Algo_X(A2,B2) entre dans une boucle infinie
Question 3 : Que fait cet algorithme ?
A
B
C
D
Indique si la liste A est contenue dans la liste B
Indique si les deux listes sont les mêmes
Indique si la liste B est contenue dans la liste A
Trie la liste A en conservant seulement les éléments de la liste B
Question 4 : quel est son ordre de complexité si m = n/2 ?
A
B
C
D
O(log2(n))
O(n2)
O(n)
O(2n)
2
-------------------------------------------------------------------------------------------------------------------------Question 5 : Représentation en virgule fixe non-signée sur 8 bits avec 5 bits de partie entière
et 3 bits de partie fractionnaire. Le nombre décimal 20,4 est :
A Exactement représenté par le motif binaire : 10100,011
B représenté par le motif binaire 10100,011 avec une approximation par troncation
produisant une erreur absolue de 0,025
C représenté par le motif binaire 10100,011 avec une approximation par troncation
produisant une erreur relative de 0,125 (c’est-à-dire 12,5 %)
D représenté par le motif binaire 10100,011 avec une approximation par troncation
produisant une erreur relative de 0,025 (c’est-à-dire 2,5%)
-------------------------------------------------------------------------------------------------------------------------Question 6 : retirée
-------------------------------------------------------------------------------------------------------------------------Question 7 : On représente un nombre entier signé sur 8 bits en utilisant la représentation du
complément à 2. Comment s’écrit le nombre −53 avec cette représentation ?
A 11010111
B 11001011
C 11010011
D 10101011
-------------------------------------------------------------------------------------------------------------------------Question 8: quel est le résultat, en hexadécimal (base 16), de l’addition des 2 nombres
suivants exprimés en hexadécimal sur 4 chiffres: 0ABC + 0CBA.
A 1676
B 1776
C 1766
D 0DCD
-------------------------------------------------------------------------------------------------------------------------Question 9 : Parmi les affirmations suivantes sur la représentation des entiers signés avec le
complément à deux sur n bits, laquelle est vraie ?
A
B
C
D
Le maximum des entiers positifs est 2n -1
Le minimum des entiers négatifs est -2n-1-1
Le complément à deux de -2n-1 est égal à lui-même
Le domaine couvert est symétrique
3
-------------------------------------------------------------------------------------------------------------------------On considère l’algorithme correct suivant :
Algo_F
entrée : n, un entier naturel strictement positif
sortie : factorielle de n
c ←1
Si n > 1
Pour i allant de 2 à n
c ← c*i
sortir : c
Question 10 : L’algorithme Algo_F
A est récursif et son ordre de complexité est O(n2) mais pas O(n)
B est récursif et son ordre de complexité est O(2n)
C n’est pas récursif et son ordre de complexité est O(n)
D n’est pas récursif et son ordre de complexité est O(n2) mais pas O(n)
Question 11 : Pour cette question on suppose que les 3 variables n, c et i de Algo_F sont des
nombres entiers positifs qui sont tous représentés avec seulement 8 bits. On s’intéresse au
résultat de Algo_F(n) quand les 3 variables utilisent la même représentation, soit R1, soit R2,
(pas de mélange de R1 et R2). Les deux représentations sont non-signées :
Représentation R1: les 8 bits sont tous utilisés pour représenter un entier positif avec la
notation positionnelle en base 2.
Représentation R2 : une représentation en virgule flottante est utilisée avec 3 bits pour un
exposant positif et 5 bits pour la mantisse, avec la forme normalisée : 2exposant x 1,mantisse
La représentation mentionnée dans les propositions suivantes est celle qui est utilisée pour
les 3 variables. Quelle est la proposition vraie ?
A Algo_F(n) donne un résultat appartenant au domaine couvert de R1 pour toutes les
valeurs de n appartenant au domaine couvert de R1
B Algo_F(6) appartient au domaine couvert de R2
C Algo_F(5) appartient au domaine couvert de R2 avec une erreur relative nulle
D Algo_F(5) appartient au domaine couvert de R2 mais avec une erreur absolue non-nulle
4
-------------------------------------------------------------------------------------------------------------------------Question 12 : Lequel de ces 4 algorithmes ne fonctionne PAS correctement ?
A
B
algo_A
entrée : n, un entier
sortie : un nombre entier
Si n < 0
sortir : 0
Si n = 0
sortir : 1
sortir : 2*n + algo_A(n/2)
algo_B
entrée : n, un entier
sortie : un nombre entier
Si n > 0
sortir : 2*n
Si n = 0
sortir : 1
sortir : algo_B(n-1)
C
D
algo_C
entrée : n, un entier
sortie : un nombre entier
Si n < 0
sortir : 2*n + algo_C(n+1)
Si n = 0
sortir : 1
sortir : algo_C(n-1)
algo_D
entrée : n, un entier
sortie : un nombre entier
Si n < 0
sortir : 2*n + algo_D(n+1)
Si n = 0
sortir : 1
sortir : algo_D(-n)
--------------------------------------------------------------------------------------------------------------------------
Questions Ouvertes
Question 1 : algorithme de conversion. Soit un système de numération des nombres entiers
strictement positifs à l’aide de l’ensemble S des 7 symboles suivants S = {T,U,R,W,X,Y,Z}. Dans
ce système primitif, que nous notons P, la position des symboles n’est pas associée à une
puissance de la base comme dans le système décimal. Dans le système P, un symbole
représente toujours la même quantité quelle que soit sa place dans un nombre. Chaque
symbole de l’ensemble S représente la quantité entière correspondante de l’ensemble V avec
V= {1, 5, 10, 50, 100, 500, 1000}. Par exemple, le symbole T vaut 1, le symbole U vaut 5, etc...
Règles à respecter pour écrire un nombre dans le système P : un nombre N est représenté par
une liste de symboles de l’ensemble S. Le premier symbole de la liste, noté N(1), est celui ayant
la plus faible valeur ; c’est le premier symbole sur la droite du nombre N (voir exemples). Le
symbole N(2) est celui qui vient immédiatement à gauche de N(1) dans le nombre, etc… Le
symbole N(k+1) dans la liste peut être le même que N(k), sans limite de répétition, ou un
symbole de valeur supérieure. Par contre il est interdit de trouver un symbole de valeur
inférieure lorsqu’on va de la droite vers la gauche.
Exemples : le nombre ZUT représente la quantité 1006 = 1000 + 5 + 1
le nombre XXXRRU représente la quantité 325 = 100 + 100 + 100 + 10 + 10 + 5
le nombre UXT est incorrect car le symbole U est de valeur plus faible que le
symbole X qui le précède à droite.
a) Ecrire le pseudocode de l’algorithme Algo_Val qui reçoit un seul symbole en entrée et qui
renvoie la valeur entière correspondant à ce symbole dans le système P. Si le symbole
n’appartient pas à l’ensemble S on renvoie la valeur zéro. On demande d’utiliser une
itération pour réaliser cette action élémentaire.
5
Algo_Val
Entrée : un seul symbole s
Sortie : zéro ou une valeur entière de l’ensemble V
b) Ecrire le pseudocode de l’algorithme Algo_Conv qui renvoie la quantité représentée en
décimal par un nombre N dans le système P. On sort zéro dès qu’on détecte une erreur
selon les règles précédentes. On dispose de l’algorithme à coût constant Taille(N) pour
connaître le nombre de symboles du nombre N et de l’algorithme Algo_Val obtenu à la
question précédente. On suppose que N contient au moins un symbole.
Algo_Conv
Entrée : un nombre N représenté par une liste non-vide de symboles du système P
Sortie : un entier strictement positif si le nombre respecte les règles d’écriture de P
ou zéro dès le premier symbole qui ne respecte pas les règles d’écriture de P
c) Quel est l’ordre de complexité de votre Algo_Conv en fonction de Taille(N). Justifiez :
6
-------------------------------------------------------------------------------------------------------------------------Question 2 : Récursivité. On considère l’algorithme mystère suivant :
algo_Z
entrée : a,b,c, trois entiers naturels non nuls
sortie : ???
Si b > c
sortir : X
Sinon
Si (a modulo b) = 0
sortir : Y
Sinon
Sortir : Algo_Z(a, b +1, c)
a) Indiquer les étapes pour obtenir la sortie pour Algo_Z( 16, 2, 4):
b) Indiquer les étapes pour obtenir la sortie pour Algo_Z( 11, 2, 3):
c) Pour ces deux exemples, quelle signification peut-on donner à la sortie de cet
algorithme vis-à-vis de l’entrée a ?
Vérifier en donnant la sortie (sans les étapes) de Algo_Z(15, 2, 3) :
d) Quelles conditions doivent remplir les paramètres b et c lors du premier appel
Algo_Z(a,b,c) pour préserver cette signification ?
e) Comment choisir le paramètre c en fonction de a lors du premier appel Algo_Z(a,b,c)
pour avoir le plus faible coût calcul en préservant cette signification ?
7
Ne rien écrire sur cette page,
Rappel : avez-vous complété le tableau en p1 ?
Présenter cette page sur le dessus dans les 2 cas suivants :
1) vous avez fini avant 15h30
2) les copies sont ramassées
8
Téléchargement