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