Licence d`informatique - Bibliothèque de l`Université de Toulon
Transcription
Licence d`informatique - Bibliothèque de l`Université de Toulon
UNIVERSITÉ DE TOULON ET DU VAR U.F.R. de Sciences et techniques Licence d’informatique ANNALES D’EXAMENS 2000-2001 Carte à mémoire et contrôle d’accès novembre 2000 Partie II Question 1 Sur un boı̂tier mémoire, quelles sont les différentes lignes que l’on peut trouver ? Donnez une description succincte pour chacune d’elle. Question 2 Dans une mémoire dynamique de type SDRAM, une fois le signal RAS reçu, quel est le signal suivant qui est envoyé ? A quoi sert-il ? Question 3 Quel est l’inconvénient technique majeur d’une mémoire dynamique par rapport à une mémoire statique. Quelle en est la cause ? Question 4 Dans une mémoire asynchrone quel est la technique utilisée pour “synchroniser”les accès mémoires. Quelles sont les conséquences d’une mauvaise gestion ? Question 5 Vous devez concevoir un circuit électronique comprenant une mémoire morte réinscriptible à volonté et aussi rapide qu’une DRAM FPM. Quel type de mémoire employez-vous ? Justifiez votre choix. Question 6 Quelles sont les raisons qui contraignent les concepteurs d’ordinateur à mettre en place une hiérarchie mémoires ? Question 7 Dans le schéma ci-dessous quel est le nom du circuit qui se trouve représenté dans l’ovale. Quels sont les noms des Bus qui vont de ce circuit vers le contrôleur graphique et la mémoire centrale ? Quel circuit vient généralement en complément ? L1, Algorithmique 28 novembre 2000 La précision et la clarté de votre rédaction sont fondamentales, Cours et TD sont autorisés. Durée 1h30. Le barème indiqué est approximatif. Exercice 1. [3pt] Montrez que la somme S(n) = n X 1 k2 k=1 est majorée par une constante (indépendante de n). Exercice 2. [3pt] Décrivez le tri pas TAS du tableau T = [3, 1, 2, 5, 0], en représentant l’arbre et le tableau correspondant à chaque étape. Exercice 3. [6pt] Écrivez un algorithme CHERCHE(T, x):ENTIER qui renvoie l’indice i tel que T [i] = x si x est dans le tableau et 0 sinon. Calculez la complexité de cet algorithme dans le meilleur des cas, le pire des cas et le cas moyen. Pour simplifier l’étude du cas moyen, vous supposerez que le tableau contient une permutation des entiers 1, 2, . . . , n et que x ∈ [1, n]. Exercice 4. [8pt] Pour trier un tableau d’entiers, les professeurs Matuvu, Jesaistout et Tropfort, nous proposent le “fantastique” algorithme suivant : TRI-MJT(T,i,j); DONNEES T:TABLEAU DE n ENTIERS; i,j:ENTIERS; VARIABLE k:ENTIER; DEBUT SI (T[i] > T[j]) ALORS ECHANGER (T, i ,j); FSI SI (i + 1 < j) ALORS k <- (j - i + 1) DIV 3; TRI-MJT(T,i,j - k); TRI-MJT(T,i + k,j); TRI-MJT(T,i,j - k); FSI FIN 1. Quel est le grand principe algorithmique qui est utilisé par cet algorithme ? 2. Que représente l’entier k ? Expliquez brièvement ce que fait l’algorithme. 3. Montrez que TRI-MJT(T, 1 ,n) trie correctement le tableau T où n, désigne sa longueur. 4. Donnez une récurrence pour le temps d’exécution dans le pire des cas et une borne en Θ sur ce temps d’exécution. 5. Comparez ce temps avec celui des tris que vous connaissez : tri à bulles, tri rapide, tri par tas. Les trois professeurs méritent-ils leur titre ? L2 Novembre 2000 Cours et TD autorisés. Lisez soigneusement TOUT l’énoncé. Vous êtes invités à rendre une copie claire et concise. Inutile de recopier l’énoncé ! Exercice 1. En C, la fonction read de prototype int read(int d, char *ch, int nb) correspond à une demande de lecture dans le fichier désigné symboliquement par l’entier d, d’au plus nb caractères, le résultat étant stocké dans la chaı̂ne ch. La fonction renvoie le nombre de caractères lus ou 0 en fin de fichier (dans ce cas la zone pointée par ch n’est pas modifiée et tout nouvel appel de la fonction renvoie 0). Une valeur nulle pour d correspond à une lecture sur l’entrée standard. La fonction write de prototype int write(int d, char *ch, int nb) écrit nb caractères de la chaı̂ne ch dans le fichier désigné symboliquement par l’entier d. La valeur 1 de l’entier d correspond à la sortie standard. On considère les trois programmes C suivants : com1.c void main(void) { int i; for (i = 0; i < 250000; i++) write(1,"a",1); } com2.c void main(void) { int i; char c; for (i = 0; i < 250000; i++) { read(0, &c, 1); write(1, &c, i); } } com3.c void main(void) { char c; while (read(0, &c, 1) > 0) write(1, &c, 1); } Le tableau ci-dessous donne les temps moyens (réel, utilisateur et système) sur 3 exécutions de quelques commandes. L’unité est le 1/100e de secondes ; le fichier toto contient 250000 caractères. Commande com1 > toto com2 < toto > tutu com3 < toto > tutu Temps réel 2000 4000 3990 Temps utilisateur 200 350 310 Temps système 1790 3640 3680 Les temps dont il sera question dans la suite ne sont que des estimations à donner, on ne vous demande pas de valeurs exactes. On supposera que la zone mémoire cache dédiée à l’échange des données via le mécanisme du pipeline est de 10 Ko. 1. Complétez le tableau 1 de l’annexe. Justifiez brièvement vos résultats. 2. On suppose que le fichier toto est un fichier quelconque de 100000 caractères. (a) Complétez le tableau 2 de l’annexe. Justifiez brièvement vos résultats. (b) Quelle est la taille du fichier tutu ? (c) Que valent les 150000 derniers caractères de tutu ? 3. Complétez le tableau 3 de l’annexe. Justifiez brièvement vos résultats. Exercice 2. Une approche possible de l’ordonnancement consiste à essayer à ce que les n processus présents en mémoire bénéficient de 1/n de la puissance du processeur, n pouvant varier dans le temps. Pour cela le processeur gère pour chaque processus, un triplet (TCPU , TDU , τ ) où : • TCPU est le temps CPU total utilisé par le processus depuis qu’il est entré dans la file d’attente des processus prêts. • TDU est le temps théorique auquel à droit ce processus. Si à l’instant t, n processus sont présents (n est obtenu en comptant le nombre de processus dans la file d’attente et l’éventuel processus dans le processeur), ce temps vaut t/n. • τ est le rapport TCPU /TDU . Un rapport de 1 signifie que le processus a consommé exactement le temps auquel il a droit. Un rapport plus grand que 1 signifie qu’il a consommé plus de temps CPU que le temps accordé et un rapport inférieur à 1 signifie qu’il a consommé moins de temps CPU que le temps accordé. L’algorithme d’ordonnancement fonctionne alors de la façon suivante à partir du temps t = 0 : • pour le temps t courant, le processeur calcule pour chaque processus (présents dans la file d’attente ou dans le processeur) le triplet (TCPU , TDU , τ ), • le processus qui s’exécutera au temps t sera celui possédant la plus petite valeur τ , • dans le cas où plusieurs candidats satisfont ce critère, le processus est choisi en utilisant la méthode FIFO, • par convention si TCPU = 0 (i.e. le processus vient d’arriver dans la file d’attente), le triplet est initialisé à (0,0,0). On considère la situation suivante : P1 P2 P3 P4 TC 6 5 4 4 TA 0 3 5 4 1. Remplissez le tableau 4 de l’annexe en donnant pour chaque temps t et chaque processus la valeur du triplet (TCPU , TDU , τ ). 2. A quel temps t obtient-on l’équilibre du système, i.e. pour tout processus τ =1? 3. Dessinez le diagramme de Gantt associé à l’exécution de ces 4 processus et donnez le temps d’attente moyen. ATTENTION ! Pour chaque temps t, regardez bien combien de processus sont présents. Quand un processus termine son exécution au temps t (i.e. il s’est exécuté pour la dernière fois au temps t − 1) il ne fait plus partie de la file d’attente et ne se trouve plus dans le processeur. L1 EXAMEN DE L’ECU MATHEMATIQUES POUR L’INFORMATIQUE PARTIE PROBABILITES ET LOGIQUE Durée 1h30 - Documents autorisés - Janvier 2001 Exercice 1. Soit la formule F = k(A < − > B) ∨ (B ∧ C))− > A 1. Ecrire F sous forme normale conjonctive. 2. Ecrire F sous forme normale disjonctive. 3. Donner une formule plus courte équivalente à X ∧ (X ∨ Y ) et une formule plus courte équivalente à X ∨ (X ∧ Y ) 4. Simplifier les formules obtenues dans les questions 1. et 2. Exercice 2. 1. Après avoir transformé le problème en un problème de satisfiabilité d’un ensemble de clauses, déterminer par la méthode de résolution avec variables si : La formule T = ∃xk Q(x)− > ∀yP (y) résulte des formules : A1 = ∃xP (x)− > ∀yP (y) A2 = ∃x(P (x) ∨ Q(x)) 2. Indiquer, en justifiant votre réponse, si les deux formules suivantes peuvent s’unifier : p(f (x, g(z)), x, f (y, g(b))) et p(u, g(f (a, b)), u) 3. Transformer la formule f = ∃y∀z(P (z, y) < − > k ∃x(P (z, x) ∧ P (x, z))) en un ensemble C de clauses. Exercice 3. Une urne A contient 2 boules blanches et une urne B contient 3 boules rouges. A chaque étape du processus, on prend une boule dans chaque urne et on les échange. L’état ai du système est le nombre i de boules rouges présentes dans l’urne A. 1. Indiquer comment on peut associer une chaı̂ne de Markov au processus décrit ci-dessus. Représenter son diagramme de transition et déterminer sa matrice de transition P. 2. Quelle est la probabilité pour que l’urne A renferme 2 boules rouges après 2 tirages ? 3. Quelle est, à la limite la probabilité pour que l’urne A renferme 2 boules rouges ? Exercice 4. Soient X et Y, 2 variables aléatoires de Bernouilli de même paramètre p, 0 < p < 1, indépendantes. 1. Déterminer la loi conjointe du couple (S, D) avec S=X+Y et D=X-Y. 2. Déterminer les lois marginales du couple (S, D). Calculer E(S) et E(D). 3. Les variables aléatoires S et D sont-elles indépendantes ? 4. Calculer la covariance de S et D. L1, Algorithmique. Première session 25 janvier 2001 La précision et la clarté de votre rédaction sont fondamentales. Aucun document n’est autorisé. Durée 3h00. Le barème indiqué est approximatif. N’oubliez pas de noter le numéro de votre place ci-dessus ainsi que sur votre copie. Cours. [4pt] Vous répondrez impérativement à l’ensemble des questions de cet exercice directement sur cette feuille. 1. Citez plusieurs modèles de représentation des graphes [0.5pt]. 2. À quelle(s) classe(s) de complexité appartient l’algorithme de tri rapide (quicksort) ? [0.5pt] O(n log n) ? Θ(n log n) ? Θ(n log n) en moyenne ? 3. Faites un tri topologique du graphe suivant en indiquant à coté de chaque sommet la date de début de visite et la date de fin de visite. [0.5pt] 4. La structure de données “file” est associée à un parcours d’un graphe : [0.5pt] en largeur ? en profondeur ? récursif ? 5. Quelle est la bonne égalité (s est n X s i = i=5 un entier positif) ? [0.5pt] Θ(sn ) Θ(ns ) Θ(ns log n) Θ(ns+1 ) 6. Donnez la définition d’un arbre couvrant minimal d’un graphe G = (X, U ). [0.5pt] 7. Donnez la définition d’une composante connexe d’un graphe G = (X, U ). [0.5pt] 8. Complétez l’égalité suivante (q est un nombre réel différent de 1) : [0.5pt] n−1 X qk = k=0 Exercice 1. [10pt] On dit qu’une liste s = (s1 , s2 , . . . , sk ) est une sous-séquence d’une liste l = (l1 , l2 , . . . , ln ) s’il existe une application φ : [1, k] → [1, n] strictement croissante telle que sj = lφ(j) pour tout j ∈ [1, k]. Ainsi ame et melo sont des sousséquences de la liste examenalgo mais pas megalo. De manière récursive, s est une sous-séquence de l si et seulement si elle satisfait l’une des trois conditions suivantes : 1. s est la liste vide ; 2. tete(s) = tete(l) et queue(s) est une sous-séquence de queue(l) 3. s est une sous-séquence de queue(l) On rappelle que la tête d’une liste non-vide l = (l1 , l2 , . . . , ln ) est le terme l1 et que la queue de cette liste est la sous-liste l0 = (l2 , . . . , ln ). Pour écrire les algorithmes demandés, vous utiliserez librement sans les écrire les algorithmes suivants : • init(l) qui crée une liste vide l ; • estvide(l) qui retourne la valeur vraie si la liste l est vide, faux sinon ; • tete(l) qui retourne la tête de la liste l si elle n’est pas vide ; • queue(l) qui retourne la queue de la liste l (la liste vide si l est vide). • ajouter(l, x) qui ajoute le terme x au bout de la liste l ; • retirer(l) qui retire le dernier terme de la liste l. • afficher(l) qui affiche la liste l. Dans toute la suite, on supposera que les listes ne contiennent que des termes distincts. 1. Déduisez de cette définition un algorithme récursif EstSSeq(s, l) qui retourne vrai si s est une sous-séquence de l et faux sinon. [2pt] 2. Combien y-a-t-il de sous-séquences d’une liste l de longueur n ? Combien y a-t-il de chemins de la racine d’un arbre binaire parfaitement équilibré de hauteur n vers une feuille ? [2pt] 3. Soit l = (l1 , l2 , . . . , ln ) une liste. On considère un arbre binaire parfaitement équilibré de hauteur n dont seuls les arcs droits sont étiquetés tout arc droit qui relie un noeud de profondeur i à un noeud de profondeur i + 1 est étiqueté li+1 . Tout chemin de la racine vers une feuille définit une sous-séquence de la liste l, en collectant les étiquettes rencontrées. Déduisez un algorithme récursif SSeq(l) qui construit implicitement cet arbre en parcours préordre et affiche toutes les sous-séquences s de l. Pour cela, on modifiera au fur et à mesure des appels récursifs une liste s (initialement vide) et on l’affichera à chaque fois qu’une feuille sera atteinte (voir la figure). [3pt] FIG. 1. - Arbre des sous-séquences de la liste l = (a, b, c). Le chemin suivi par la sous-séquence s = (a, c) est matérialisé par des points noirs. 4. Détaillez le fonctionnement de votre algorithme sur la liste (0, 1, 2, 3). [1pt] 5. Quelle est la complexité de cet algorithme ? [2pt] Exercice 2. [12pt] On appelle couverture d’un ensemble fini X, toute partie F de P(X) telle que tout élément de X appartient à au moins un élément de F, autrement dit [ F =X F ∈F Ainsi, F = {{a, b}, {a, c}, {b, c}, {c}} est une couverture de X = {a, b, c}. Étant donné un tel couple (X, F), le problème de la couverture minimale de (X, F) consiste à déterminer une partie C de F qui soit une couverture de cardinalité minimale. C’est le cas de C = {{a, b}, {c}} pour l’exemple précédent. L’objectif de l’exercice est d’analyser un algorithme d’approximation couverture (X, F) pour ce problème. Il utilise une stratégie gloutonne pour déterminer de proche en proche les k éléments C1 , C2 , . . . , Ck d’une couverture C de (X, F). On commence par choisir un élément C1 de F de cardinalité maximale. On détermine ensuite l’élément C2 de F contenant un nombre maximal d’éléments de X\C1 , puis C3 contenant un nombre maximal d’éléments de X\C1 ∪ C2 etc. . . et on s’arrête dès que X = C1 ∪ C2 ∪ . . . ∪ Ck . 1. Quel algorithme du cours utilise le même type de stratégie ? [0.5pt] 2. La couverture obtenue n’est pas toujours minimale. Donnez un exemple. [0.5pt] 3. Écrire un algorithme couverture(X,F). [2pt] Soit n un entier. Pour la suite, on suppose que X = 1, 2, . . . , n, on note m la cardinalité de F et r celle du plus grand élément de F. 4. On suppose que n < 64. Comment peut-on représenter un sous-ensemble de X sur un entier long non signé ? Comment représenter F ? Implanter couverture(X,F) en langage C. [2pt] 5. Donnez une expression du temps de calcul de l’implantation en fonction de m, n et r. [1pt] 6. Décrire une instance (X, F) très défavorable pour l’algorithme couverture (X, F) dans le cas où n est une puissance de 2. [2pt] Soit Soit Ro = X, R1 = X\C1 , R2 = X\C1 ∪ C2 , . . . , Rk = ∅. La suite des Ri est strictement décroissante et pour tout x ∈ X, il existe un unique rang i tel que x ∈ Ri−1 et x 6∈ Ri . On pose c(x) = 1 card(Ri−1 \Ri ) Pn et on note H(n) = i=1 1i la somme des n premiers termes de la série harmonique. Enfin, on suppose acquis le fait : X (∗) ∀S ⊆ X, c(x) ≤ H(card(S)) x∈S 7. Vérifiez que P x∈X c(x) = k. [1pt] 8. Soit C une couverture minimale. Utilisez la relation (*) pour obtenir l’inégalité : [1pt] k ≤ card(C)H(r) 9. En déduire : [1pt] k = O(log n) card(C) 10. Démontrez la relation (*). [Difficile] [1pt] Examen de Bases de Données mars 2001 Considérer les schéma suivant (en 4NF). Barème(métier,salaire) Agence(nom a,ville) Employé(nom, nom a) Travaille(nom, métier) 1. Créer ce schéma de BD en SQL. Déclarer toutes les clés étrangères nécessaires 2. Afficher le contenu de la relation Barème 3. Affichez le nom des ingénieurs 4. Affichez le nom des ingénieurs qui ne sont pas aussi directeur 5. Affichez le nom des ingénieurs qui ont au moins un métier qui rapporte plus de 10 000F 6. Affichez le nom des ingénieurs qui gagnent plus de 30 000F tous métiers confondus 7. Affichez le nom de l’employé qui a le plus gros salaire 8. Affichez le nombre d’ingénieurs à Toulon 9. Affichez les agences qui ont plus d’ingénieurs que d’ouvriers 10. Affichez les agences où tous les métiers sont représentés Le langage C++. Première session 27 mars 2001 La précision et la clarté de votre rédaction sont fondamentales. Chaque réponse doit être accompagnée d’une justification. Lisez attentivement l’énoncé avant toute tentative de raisonnement. Le barème est donné à titre indicatif. Cours et notes personnelles sont autorisés. Durée 2 heures. Exercice 1. [8pt] Répondre aux questions suivantes en 5 lignes maximum. 1. Qu’est ce qu’un constructeur dans une classe ? Quel est son intérêt ? Une classe peut-elle avoir plusieurs constructeurs ? 2. Qu’est ce qu’un destructeur ? Quel est son rôle ? Dans quels cas est-il indispensable ? Une classe peut-elle avoir plusieurs destructeurs ? 3. Quelle est la différence entre mémoire statique et mémoire dynamique ? 4. Expliquer les termes de “liaison statique” et de “liaison dynamique”. 5. Expliquer la notion de polymorphisme. Donner un exemple. Quel est l’intérêt de cette notion ? 6. Quelles sont les particularités d’une classe abstraite ? Quel est l’intérêt d’une méthode abstraite (ou retardée) ? Exercice 2. [12pt] Ecriture d’une application en C++ : l’objectif de cet exercice est de décrire un mini-simulateur qui permette de suivre le déplacement de navettes entre plusieurs stations spatiales. Les différentes questions sont relativement indépendantes. 1. Repérer une position : nous repérons un élément dans l’espace grâce à sa position. Cette position peut être exprimée aussi bien en coordonnées cartésiennes que polaires. L’interface de la classe Position est donnée dans le listing ci-dessous : class Position { public: // Attributs // Les coordonnees polaires double rho ; // distance du point a l’origine du repere double theta ; // 0 <= theta < 2 PI double phi; // 0 <= phi < PI // Les coordonnees cartesiennes double x, y, z; [4pt] // Constructeur Position (double v rho, double v theta , double v phi); // Commandes set cartesien (double vx, double vy, double vz); // Initialiser la position a partir de ses coordonnees cartesiennes set polaire (double v rho, double v theta, double v phi); // Initialiser la position a partir de ses coordonnees polaires void afficher (ostream &out = cout); // Afficher sur le flot de sortie out. }; (a) Commenter cette classe. En particulier, expliquer ce que sont les différents éléments qui la décrivent. (b) Contient-elle des maladresses ? Si oui, indiquer lesquelles et indiquer comment les supprimer. (c) Peut-on ajouter à la classe Position le constructeur suivant ? Position ( double vx, double vy, double vz); // Initialiser la position a partir de ses coordonnees cartesiennes (d) Les lignes suivantes sont-elles valides ? Pourquoi ? Position pos; pos.set cartesien(10, 20, 30); pos.afficher(); 2. Définition d’une station : une station est caractérisée par un nom, une po- [1pt] sition et une vitesse. Une station peut avancer. L’opération “avancer”prend en paramètre une durée qui correspond à l’intervalle de temps simulé. Pour simplifier, on suppose que lors du déplacement de la station seul le paramètre thêta est modifié (ce qui correspond à une rotation autour de la terre par exemple). (a) Proposer une définition de l’interface de la classe Station. 3. Modélisation d’une navette spatiale : une navette est un engin spatial qui permet de se déplacer de-stations en stations. Il est caractérisé par son nom, sa position, sa station d’origine, sa station destination et sa vitesse. Lorsque la navette n’est pas en vol, elle est posée sur une station (station d’origine). Il est possible de faire décoller une navette en lui indiquant une station destination. Une fois la navette en vol, elle peut avancer vers la station destination (le paramètre de “avancer”est une durée qui correspond à un pas de simulation) et il est possible de la faire changer de destination. Lorsque la station arrive sur sa destination elle se pose, la station destination devient alors la station d’origine. On suppose que les stations possèdent des usines de fabrication de navettes. Ainsi, une nouvelle navette est considérée comme posée sur sa station de construction. (a) Définir l’interface de la classe Navette. [3pt] (b) Définir les en-têtes des méthodes suivantes de la classe Navette : - Le constructeur de la classe Navette. - L’opération qui retourne la position d’une navette. - L’opération qui permet de changer de destination. - L’opération décoller. 4. Simulateur : on veut pouvoir simuler l’évolution dans le temps de notre système composé de navettes et de stations. Pour ceci, nous définissons un simulateur. Il propose les opérations suivantes : - créer un simulateur sans objets à contrôler ; - ajouter un objet à simuler dans le simulateur ; - supprimer un objet du simulateur ; - simuler l’avancée du temps (simuler temps (int duree)) ; - afficher l’état des objets simulés. (a) Expliquer comment on peut faire pour ajouter dans le simulateur des objets qui soient aussi bien des navettes que des stations. (b) Définir l’interface de la classe Simulateur et des autres classes introduites (s’il y en a). (c) Indiquer les modifications à apporter aux classes Navette et Station. [4pt] Anglais EXAMEN D’ANGLAIS : 11 juin 2001 Durée : 2h • QCM. Cochez sur la grille ci-jointe la case correspondant à la bonne réponse (12pts). 1. The windfall amounts to ............. pounds. a) millions c) million of b) millions of d) million 2. ............. years or so, Japanese real estate goes through the roof. a) Once every dozen c) One all dozens b) Every other dozens d) Once every dozen of 3. Moving house ............. spending days packing. a) meant c) ended up b) turned out d) amounted 4. The US and its allies hoped to resolve the crisis ............. bolstering the embargo’s effectiveness. a) for c) with b) by d) ∅ 5. This government body ............. language use ............. 1979. a) surveyed, for c) is surveying, for b) has surveyed, for d) has been surveying, since 6. He’s especially keen on ............. German literature. a) eighteen-century c) eighteenth century b) the eighteenth century d) the eighteenth century’s 7. She ............. 50 miles in one stretch. She must have had a ride. a) had not to walk b) must not have walked c) was not to have walkedd) cannot have walked 8. The woman stepped into the lift ............. cigarette in ............. mouth. a) a, the c) with a, the b) with a, her d) the, the 9. Do you want me to call you as soon as ............. ? a) we will arrive c) we arrive b) we shall arrive d) we arrived 10. How long ............. ? a) has he died c) is he dead b) did he die d) has he been dead 11. Twenty young people are involved, ............. are under 15. a) of which most c) whose most b) most of which d) most of whom 12. I can’t possibly tell you in five minutes all ............. he told me. a) what c) things b) which d) that 13. She ............. living alone for five years when she got married. a) used to c) has been b) was d) had been 14. Our policy now needs ............. . a) to review c) review b) to reviewing d) reviewing 15. In the last week of August the Dow-Jones ............. 70 points. a) felt c) has felt b) has fallen d) fell 16. The workers ............. on strike for more than a week now. a) are c) were b) have been d) had been 17. The kitchen wants ............. . a) painting c) be painted b) paint d) being painted 18. The informer was threatened with exposure unless he ............. other members of his unit. a) did not recruit c) recruited b) will recruit d) would not recruit 19. Why don’t you make a start instead of just ............. about it ? a) to talk c) talking b) having talked d) talk 20. If only I ............. the following day what I know now! a) was knowing c) would know b) knew d) had known 21. Before ............. this device, read the instructions carefully. a) use c) used b) to use d) have used 22. Eventually it dawned on them the rain ............. since morning. a) did not stop c) has not stopped b) had not stopped d) was not stopping 23. The captain ............. to buy the ship. a) suggests c) intends b) thinks d) had better 24. His efforts were very close ............. last week. a) to collapsing c) collapsing b) collapse d) from collapsing 25. The President need not ............. a general election until 1999. a) he will hold c) hold b) to hold d) he holds 26. They will not resume work until their demand ............. met. a) has not been c) will be b) won’t be d) has been 27. He has ............. unique sense of humor. a) an c) a b) one d) the 28. What the children need is a garden ............. . a) for play in c) to play 29. Once you ............. we can go. b) for player d) to play in a) finished c) will finish b) have finished d) will have finished 30. I am looking forward ............. from you soon. a) to hear c) to my hearing b) hearing d) to hearing 31. 31. 2,567,102 reads as follows : a) two million five hundred and sixty-seven thousand one hundred two b) two million five hundred and sixty-seven thousand one hundred and two c) two thousand five hundred and sixty-seven point one o two d) two millions five hundreds and sixty-seven thousands one hundred and two 32. He was caught without ............. . a) ticket c) a ticket b) one’s ticket d) no ticket 33. He is one of the members I would enjoy having contacts ............. . a) with him c) with them b) with whom d) with 34. He told his wife that it would not be long before he ............. home. a) gets c) would get b) got d) will get 35. Excuse ............. so early; I have an appointment. a) for me to leave c) for me leaving b) my leaving d) myself leaving 36. Our next door neighbors ............. their new flat last week. a) moved in c) moved into b) have moved into d) have moved in 37. Please excuse the paper. It was all ............. I had on me. a) what c) which b) this d) that 38. The company manager had better ............. it that the money is funnelled into a variety of activities. a) to see c) see to b) to see to d) having seen to 39. I hope you don’t mind ............. . a) I ask c) me to asking b) me to ask d) my asking 40. He stopped ............. only because he ran out of ammunition. a) to shoot c) shooting b) from shooting d) shoot 41. ............. many public statements yet. a) There have been c) There has been b) There hasn’t been d) There haven’t been 42. “I think she has arrived.“ “Don’t be ridiculous! She ............. .“ a) mustn’t be c) mustn’t have b) can’t have d) can’t be 43. He ............. on the picket line since the dispute ............. . a) was / began b) was / has begun c) has been / had begun d) has been / began 44. He ............. in Britain for a couple of years, then emigrated to Australia. a) has been staying c) has stayed b) stayed d) was staying 45. They have lived in Manchester ............. they retired. a) whenever c) ever since b) while d) as 46. He said he would come when the strike ............. over. a) was c) should be b) would be d) will be 47. That’s impossible. It couldn’t have happened like that! You ............. wrong! a) should be c) must be b) should have been d) ought to have been 48. If you ............. earlier, you would have got a better seat. a) should come c) had come b) came d) have come 49. Dr Smith isn’t in tonight because ............. to the hospital. a) he might have gone c) he should have gone b) he’s able to go d) he’s had to go 50. They ............. from her lately. a) didn’t hear c) are not hearing b) haven’t heard d) don’t hear 51. Fewer than ............. helicopters dropped food to ............. survivors. a) dozen, millions of c) a dozen, millions b) a dozen, million d) a dozen, millions of 52. In Britain, a lot of people are not used to ............. wine. a) drinking c) have drunk b) drink d) have drinks 53. She said she ............. buy some in town. a) wants c) would b) was willing d) wanted 54. She’s very fond ............. modern art. a) of the c) to the b) of d) the 55. Nobody warned me. I ............. about it. a) had to be told b) must have been told c) should have been told d) ought to be told 56. The question ............. raised a few months ago. a) will be c) had been b) has been d) was 57. Are you coming to the dance ............. ? a) every night c) to-night b) last night d) every week 58. I think he ............. work harder. a) would c) should b) would have d) may have 59. The doorbell is ringing. It ............. Mary : she’s in her room. a) can’t be c) should be b) mustn’t be d) may be 60. I wanted ............. chocolate bars but there weren’t ............. left in the machine. a) some..............some c) any.............none b) some.............any d) any.............any • TEXTE A breakthrough* in Artificial Intelligence : Neural Networks It is a well-known fact that computers are very good at logic, but that they lack* imagination and cannot make predictions or decisions. The latter characteristics are essentially human ones and derive from biological factors. The way human beings react in a situation is the result of an intricate* process involving both the sennes and intelligence, i.e. the way the brain processes information arriving from the senses via the nerves. For many years, scientists have been investigating how different animal species use their senses and intelligence and have tried to find a way of putting these to use in computer technology. Their research has borne fruit in the creation of neural network systems which seem to hold considerable promise for the future. Both humans and animals know how to react in a particular situation because they have learned how to, and this is the basic idea in neural networks. A neural network system is a computer-based simulation of living nervous systems; it is able lo learn and can thus develop its own “world model”. Unlike conventional computers it is programmed to provide answers and, if it is wrong the first time, the next time it answers it will change its response, based on its previous experience, until it eventually gets the right answer all the time. A set of previously learned “characteristics” serves as the basis for the selection and generation of its own “characteristics” in response to inputs; in other words the neural network can have imagination. As a result it can deal with situations where the input may be ambiguous or incomplete. Neural circuits are being designed to carry out tasks typical of the most advanced biological systems. Pattern recognition, speech and text recognition are some of the fields where neural networks will be widely used. Improving robots’ senses Although a robot can only be really autonomous if neural network systems are used, improvements in their “eyesight”pattern recognition and machine vision - can lead to greater robot autonomy, and this has long been one of the central concerns in robotics research. One of the latent developments for improved vision is a television camera whose movements imitate those of a human head. This kind of “nodding”* head can discern the shape and position of unidentified objects and robots equipped with the system can assemble objects placed at random just as competently as humans. Unlike conventional factory robots which are preprogrammed to recognise the size and shape of certain objects positioned in a particular way in specific locations, these robots can accurately determine shapes and measure distances without being programmed. The head behaves like a human head, gauging* distances and shapes. One of the most obvious applications of these “allseeing” robots is for painting. The system maps the geometry of the components to be sprayed and stores this information in the robot’s computer system. If good vision is central to pattern recognition, other senses are required in order to gather the information without which the robots’ “brains” cannot function. The more information they can gather - usually by means of electronic devices such as switches and sensors - the more efficiently they will be able to work on the factory floor. However, some of the five senses are more important in robotics than others, and some are easier than others to obtain. Taste and smell are not likely to have high priority since not only are they the least useful but they are probably the most difficult to design. However, robots can be provided with senses humans do not possess. For instance, they can be given an “echo sounding” sense similar to bats, as well as radar and sonar which are senses that can only be produced electronically and are of considerable use in hazardous environments. In the near future, it is quite likely that robots will be given all sorts of jobs to do. In California, some bars are already equipped with robot barmen who can mix up to 30 different cocktails. Robot guards are being developed for use in American prisons. Self-activating, thinking versions of the Prowler (Programmable Robot Observer With Logical Enemy Response) are also under development. These tank-sized, computer-controlled vehicles can be fitted* with M60 machine guns, a 105 mm cannon, and Stinger surface-to-air missiles. Let’s hope they don’t go nuts*, if they lose a bolt*! *breakthrough : advance *to gauge : to evaluate *lack : not to have *fitted : equipped *intricate : complicated *to nod : hocher la tête *nut : écrou, to go nuts ⇒ perdre la boule (devenir fou) *bolt: boulon 1. What are the basic characteristics of neural networks and to what extent are they a breakthrough in artificial intelligence ? (3pts) 2. What progress has been made in robotics lately ? What sorts of jobs can robots be given now and would you trust robots with such tasks (est-ce que vous leur confieriez de telles tâches ?) What applications of robotics do you foresee (prévoir) in the near future ? (5pts) QCM. Cocher la case correspondant à la bonne réponse A 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 B C D A 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 B C D Systèmes microinformatiques et cartes à puce juin 2001 Durée : 1h Aucun document. Question 1 : outil de traitement Précisez les éléments constitutifs d’un microcontrôleur moderne. Quel est le grand intérêt de ces structures ? Citer quelques domaines d’utilisation Question 2 : mémoire 1. Quels sont les types de mémoire que l’on rencontre sur les cartes à puces ? Rappeler brièvement leur fonctionnement. Quelle est l’évolution de la technologie actuellement mise en oeuvre pour améliorer leurs performances ? 2. Donner le plan mémoire du système schématisé sur la figure ci dessous. Question 3 : outils de liaison Quel type de liaison rencontre-t-on de façon privilégiée sur les cartes à puces ? Pourquoi ? Question 4 : système : carte à microcontrôleur On ne dispose, pour une étude préalable que d’une fiche DATA BRIEFING pour un microcontrôleur ST19XL34 équipant une carte à puce. (Voir annexe) On demande de donner une description rapide de ce dispositif et de préciser le bloc diagramme du circuit. ST19XL34 SMARTCARD IC WITH 34KBYTES HIGH DENSITY EEPROM AND MODULAR ARITHMETIC PROCESSOR DATA BRIEFING ST19XL34 FEATURES • ENHANCED 8 BIT CPU WITH EXTENDED ADDRESSING MODES 1 - SYMMETRICAL ALGORITHMS: DES, triple DES, DESX computations and CBC chaining mode • 96K BYTES USER ROM WITH PARTITIONING • CRC CALCULATION BLOCK • 4K BYTES USER RAM WITH PARTITIONING • UP TO 10MHz INTERNAL OPERATING FREQUENCY • 34K BYTES USER EEPROM WITH PARTITIONING - Highly reliable CMOS EEPROM submicron technology - Error Correction Code for single bit fail correction - 10 year data retention - 500,000 Erase/Write cycles endurance - Correction of single bit fail within a byte(ECC) - 1 to 64 bytes Erase or Program in 2 mS • UNIQUE SERIAL EACH DIE • SECURITY MEMORIES • 3V ± 10% or 5V ± 10% SUPPLY VOLTAGE FIREWALLS FOR • VERY HIGH SECURITY FEATURES INCLUDING EEPROM FLASH PROGRAM, AND CLOCK MANAGEMENT. NUMBER ON • POWER SAVING STANDBY MODE • CONTACT ASSIGNMENT PATIBLE ISO 7816-2 COM- • 2 SERIAL ACCESS, COMPATIBLE 7816-3 • ESD PROTECTION THAN 5000V ISO GREATER Figure 1 . Delivery Form • 3x8 BIT TIMERS WITH INTERRUPT CAPABILITY • HARDWARE DES ACCELERATOR • 1088 Bit MAP: MODULAR ARITHMETIC PROCESSOR WITH LIBRARY SUPPORT FOR ASYMETRIC ALGORITHMS • CRYPTOGRAPHIC LIBRARY: - ASYMMETRICAL ALGORITHMS: Fast modular multiplication and squaring using Montgomery method Software Crypto libraries in separate ROM area for efficient algorithm coding using a set of advanced functions Software selectable operand length up to 2176 bits 1 May 2001 This is Brief Data from STMicroelectronics. Details are subject to change without notice. For complete data, please contact our nearest Sales Office or SmartCard Products Division, Roussel, France. Fax : (+33) 4 42 68 87 29 Function RSA 1024 bits signature with CRT (2) RSA 1024 bila signature without CRT (2) RSA 1624 bill verification (e=$10001) RSA 1024 bits key generation RSA 2048 bits signature with CRT (2) RSA 2048 bits verication (e=$10001) Triple DES (with keys loaded) Single DES (with keys loaded) Speed (1) 110 ms 367 ms 7 ms 3.2 s 740 ms 118 ms 31 µs 19µs (1)Typical values, independant from external clock frequency and supply voltage. (2)CRT: Chinese Reminder Theorem. HARDWARE DESCRIPTION The ST19XL34, a member of the ST19 platform, is a serial access microcontroller especially designed for very large volume and cost effective secure portable objects, for which high performance Public Key and secret key algorithms wlll be implemented to cut down initialization and communication costs and to increase security. The chip includes a DES accelerator which is accessible via a cryptographic system ROM software library. The chip includes also a MAP which is based Figure 2 . Block diagram on a 1088 bits processor architecture. It processes modular multiplication, squaring and additional calculations up to 2176 bit operands. Internal Modular Arithmetic Processor (MAP) and DES accelerator are designed to speed up cryptographic calculations using Public Key Algorithms and Secret Key Algorithms. The ST19XL34 is besed on a STMicroelectronics 8 bit CPU and includes on chip memories: 96K User ROM, 4K User RAM and 34K User EEPROM with state of the art security features. ROM, RAM and EEPROM memories can be configured into partitions with customized access rules. Access from any memory area to another are protected by hardware FIREWALLS. Access rules are User defined and can be selected by mask options or during the life of the product. A CRC calculation block is also available and is directly accessible by the User. It is manufactured using an advanced highly reliable ST CMOS EEPROM technology. As with all the other ST19 products, it is fully compatible with the IS07816 standard for Smartcard applications. SOFTWARE DEVELOPMENT Software development and firmware (ROM code/options) generation are done with the ST19-HDSX development system, on Windows NT or Windows 98. Powerful C/C++ compiler, debugger and simulator are also available. CRYPTOGRAPHIC LIBRARIES For an easy and sufficient use of the Moduler Arithmetic Processor (MAP), ST proposes a complete set of firmware subroutines. This library is located in a specific ROM area. This library saves the operating system designer from coding first layer functions and allows the designer to concentrate on algorithms, Public Key Cryptography and Secret Key Cryptography protocols implementation. This library contains firmware functions for: ASYMMETRICAL ALGORITHMS: - loading and unloading parameters and results to or from the MAP - calculating Montgomery constants - basic mathematics including modular squar- ing and multiplication for various lengths - modular exponentiation using or not the Chinese Remainder Theorem (CRT) - more elaborate functlons such as RSA signatures and verifications for modulo length up to 2176 bits long, DSA signature and authentication. - full internal key generation for signatures/verifications. This guarantees that the secret key will never be known outside the chip, and contributes to overall system security. - long random number generation - RSA up to 2176 bits - DSA up to 1088 bits - SHA-1 - RSA key generation SYMMETRICAL ALGORITHMS: - DES, triple DES, DESX computations - CBC chaining mode - Loading / Unloadings from / to registers are secured against SPA. Examen C++/Java 13 juin 2001 Durée 3 heures Tout document, sauf livres, autorisé. Barème : Exercice 1 + exercice 2 sur 5 points Exercice 3 sur 7 points Problème sur 8 points Exercice 1. Répondez aux questions suivantes de façon précise et en trois lignes maximum par question : 1. Qu’est ce qu’une Machine Virtuelle Java ? 2. Le langage Java est-il un langage compilé ou interprété ? 3. Dans des conditions normales, une applet Java peut-elle accéder en écriture aux ressources de la machine cliente ? Pourquoi ? Exercice 2. Un objet possède deux attributs de type int nommé x et y. Ce qui pourrait se traduire par le bout de code suivant : int x, y ; Ecrire les expressions logiques en langage Java et en C++ correspondant aux énoncés suivants : 1. x et y sont strictement positif. 2. x est divisible par y. 3. x appartient à l’intervalle ]0..12[. 4. x et y sont de parité différente. Quels sont les résultats des instructions suivantes (type et valeur) en C++ et en Java : x=12; y=5; 5. (x/y) 6. (double) x / y 7. (double) x / (y - y) Exercice 3. Observez attentivement le code ci-dessous. II s’agit d’une méthode d’un objet Java dont les lignes 28 à 37 produisent un affichage sur la console. 1. Pour chacune de ces lignes donnez le résultat visible sur la console et quelques commentaires de justification. 2. La ligne 40 est elle correcte ? Quel est le comportement du compilateur sur cette instruction ? Quelle solution proposez-vous ? 3. La solution que vous avez proposée pour la ligne 40 est-elle applicable au problème posé par la ligne 41 ? Quel sera le comportement de la machine virtuelle Java à l’exécution ? Justifiez votre réponse. 1. public void polymorphisme() { 2. class A { 3. public String name = "Classe A"; 4. public String getName() { 5. return name; 6. } 7. public String toString () { return "A";} 8. public String message (String s) { 9. return ("String"); 10. } 11. public String message(Object o) { 12. return ("Object"); 13. } 14. }// fin de ClasseA 15. 16. class B extends A { 17. public String name = "Classe B"; 18. public String getName() 19. return name; 20. } 21. public String toString () { return "B";} 22. }// fin de ClasseB 23. 24. Object o = new String("Message Test"); 25. A a1 = new A(); 26. A a2 = new B(); 27. System.out.println("\nPolymorphisme :\n"); 28. System.out.println("3.1-1/: " + a1.toString()); 29. System.out.println("3.1-2/: " + a2.toString()); 30. System.out.println("3.1-3/: " + a1.getName()); 31. System.out.println("3.1-4/: " + a2.getName()); 32. System.out.println("3.1-5/: " + a2.name); 33. System.out.println("3.1-6/: " + a2.message(o)); 34. System.out.println("3.1-7/: " + a2.message((String)o)); 35. System.out.println("3.1-8/: " + a2.message((Object)null)); 36. System.out.println("3.1-9/: " + a2.message((String)null)); 37. System.out.println("3.1-10/: " + a2.message(null)); 38. 39. B b = new B(); 40. b = a2; 41. b = a1; 42. }// fin de la methode polymorphisme Problème. 1. Aperçu rapide de la classification “règne animal” Les informations sur la classification des êtres vivants sont extraites de l’encyclopédie WebEncyclo http://www. webencyclo.com/ et du dictionnaire Hachette http://www.francophonie.hachette-livre.fr On divise les êtres vivants en 5 règnes : les Animaux, les Bactéries, les Protistes, les Champignons et les Végétaux. Lamarck (1744-1829) classe les animaux en deux grands groupes : les Vertébrés qui possèdent une colonne vertébrale et les Invertébrés qui n’en possèdent pas. Les animaux vertébrés possèdent une colonne vertébrale constituée d’une multitude d’os articulés. Cette colonne sert de soutien à leur corps et fait la base de leur squelette. Elle fournit une gaine à leur moelle épinière et se termine par une boı̂te osseuse qui contient leur cerveau. Nous les classerons (en première approximation) en quatre grands groupes : • Les Poissons • Les Reptiles • Les Oiseaux • Les Mammifères Les Mammifères Mammifère n. m. Classe de vertébrés supérieurs homéothermes (“à température constante”), portant des mamelles (ou des aires mammaires, chez les monotrèmes). Les mammifères sont divisés en 3 sous-classes, les Monotrèmes, les Marsupiaux et les Placentaires. • Les Monotrèmes : (Ornithorynque et Echidné) Ils pondent des œufs mais allaitent leur petit. Ils sont recouverts de poils. On peut les considérer comme des mammifères primitifs. • Les Marsupiaux : (Kangourou, Koala, etc.) Le mot marsupiaux vient de marsupium, mot qui veut dire poche. Presque tous les marsupiaux possèdent une poche ou dans certain cas un repli de peau. Leurs petits naissent très tôt dans leur développement. Ils le finissent dans la poche de la mère. Après sa naissance, le petit se niche dans la poche et s’accroche à une mamelle (où il tête le lait). Il ne la lâchera pas pendant une longue période. Suivra une période où le petit sort de courts moments de la poche. Finalement, le petit est sevré et partira vivre sa vie d’adulte. • Les Placentaires : Chat, Chien, Humain, Singe, Eléphant, Chauve-souris, Dauphin, etc. Les placentaires sont les mammifères les plus développés. Ils sont les plus répandus. On les retrouve sur la Terre, dans les Airs et dans l’Eau. Le petit se développe entièrement dans le ventre de la mère. Le placenta est très développé. Les placentaires sont divisés en différents ordres (partiellement cités ici) : Les Primates (Singe, Humain. . . ) Les Rongeurs (Souris, Rat, Ecureuil. . . ) Les Chiroptères (Chauves-souris. . . ) Les Cétacés (Baleine, Dauphin, Cachalot. . . ) Les chauves-souris ou Chiroptère Ordre de mammifères à mœurs crépusculaires et nocturnes, caractérisés par la remarquable adaptation des membres antérieurs au vol. Également désignés sous le nom de Chiroptère, les chauves-souris ont pour caractéristique un corps flanqué d’une paire d’ailes membraneuses, qui, par les proportions, la morphologie et l’aspect lisse que lui confère une fourrure courte et fournie, rappelle celui d’un rat. Près d’un millier d’espèces se répartissent dans le monde entier, avec une préférence tout de même pour les régions chaudes, où l’on trouve les plus grandes espèces, appartenant au groupe des Mégachiroptère (tels la Roussette et le Ptérope, chauve-souris de 1,5 m d’envergure, habitant la région malgache et indomalaise). La trentaine d’espèces européennes appartient au groupe des Microchiroptère (envergure de 20 à 50 cm). La technique de vol diffère selon les espèces. Certaines, les moins rapides, pratiquent le vol battu, cependant que d’autres, excellents voiliers, font appel au vol plané. Les espèces qui capturent des proies posées peuvent faire du surplace. Pour prendre l’élan qui permettra l’envol, les chauves-souris battent des ailes ; pour atterrir, elles s’accrochent à un support ou mettent leur corps en position verticale tout en freinant de toute leur force avec les ailes. À terre, les chauves-souris peuvent grimper et courir, le pied reposant sur la face plantaire et la main ne s’appuyant que sur le premier doigt. Les Oiseaux Oiseau : n. m. Vertébré ovipare, couvert de plumes, ayant deux pattes et deux ailes, à la tête munie d’un bec et généralement adapté au vol. Comme les mammifères, les oiseaux sont homéothermes et leur coeur comporte quatre cavités. Ils sont apparus au jurassique dans une lignée de reptiles qui a donné également les dinosaures et les crocodiliens. Deux sous-classes sont représentées actuellement : les Ratite, sans bréchet et inaptes au vol, et les Carinates, dont le bréchet supporte les muscles nécessaires au vol ; ce sont les plus nombreux et les plus diversifiés. Les oiseaux les plus primitifs (sous classe des Ratite) sont les Autruches, les Casoars, les Nandous, les Emeus et les Kiwis, tous incapables de voler. Les plus évolués appartiennent au groupe des passereaux et, parmi eux, les Corbeaux, les Etourneaux et les Paradisiers. Quelques techniques de vol Les oiseaux pratiquent cinq sortes de vol. Au cours du vol battu, les ailes sont alternativement levées et abaissées. Le vol plané consiste, pour l’oiseau, à se laisser glisser sur ses ailes tendues et immobiles après avoir pris de la vitesse. Pendant le vol à voile, l’animal est entraı̂né par des courants d’air chaud ascendants. Le vol peut aussi se faire sur place. Enfin, le vol vibré est propre aux Colibris et proche de celui des insectes, puisque ces oiseaux peuvent avancer, reculer et se déplacer latéralement. Les oiseaux aquatiques sont, pour la plupart, capables de nager, et certains même plongent habilement (Martins-p^ echeurs, Cormorans, Fous, Guillemots, Grèbes). 2. Enoncé du problème Nous ne cherchons pas ici une description exhaustive du règne animal, vous limiterez votre travail de classification aux concepts présentés dans cet aperçu rapide. 1. Représentez les différentes catégories d’êtres vivants présentés ici en utilisant le langage Java et la notion d’héritage simple. Spécifiez quelles classes sont abstraites et pourquoi. Votre modélisation devra intégrer les liens d’héritages ainsi que les attributs possédés par les êtres vivants représentés. 2. La classification proposée ici ne tient pas compte du mode de locomotion. Introduisez dans votre classification le point de vue du mode de locomotion de façon à ce que, par exemple, une instance de Corbeau puisse être vue comme un Passereau ou un EtreCapableDeVol ou bien une instance de Roussette puisse être vue comme un Mégachiroptère ou un EtreCapableDeCourse ou encore un EtreCapableDeVolPlane. • La modification de vos classes obtenues au 2.1 se fera à l’aide de la notion d’interface (au sens Java). • Vous développerez une hiérarchie d’interface représentant les différents modes de locomotion évoqués dans la présentation du règne animal en page 3 (vous vous limiterez à ceux-ci). 3. Comment auriez-vous résolu le problème en C++ ? Expliquez brièvement les différences de modélisation entre l’héritage multiple entre classes (utilisé dans C++) et la notion d’interface Java. Remarques : • Dans ce problème vous devez présenter votre travail sous la forme de graphes d’héritage et de code Java sommaire (en-tête des classes et interfaces, attributs et en-têtes de méthodes). • Vous représenterez les liens d’héritage et d’implémentation par des signes différents (par exemple flèche à simple ou double corps) • Vous limiterez le nombre de classes et d’interfaces aux groupes et espèces d’êtres vivants cités dans la présentation du sujet du problème (mis en évidence typographiquement). Cependant vous pouvez bien entendu introduire des concepts abstraits non cités explicitement comme par exemple EtreCapableDeVol • Même remarque pour les moyens de locomotion et les attributs cités dans le texte. • Le contexte général étant le langage Java, vous respecterez les conventions de nommage préconisées pour ce langage. Carte à Mémoire et Contrôle d’Accès Session de Juin Durée 1 heure. 1. Qu’est ce qu’un ATR ? Quelles données sont transmises lors de son exécution ? Ces données sont-elles transmises depuis la carte ou vers la carte ? 2. Le système de fichiers d’une carte comprend trois types de fichiers. Quels sont ces types de fichiers ? Quel est leur rôle ? 3. Dans le protocole de validation des transactions commerciales pour les cartes à puce, quelles données sont reçues par le centre de contrôle ? Quelles données sont renvoyées ? 4. Pour de petits montants, le centre de contrôle est utilisé de manière différée. Concevoir de manière détaillée une fraude , effectuée par le porteur de carte, rendue possible par le fait que les données du centre de contrôle ne sont pas disponibles lors de la transaction. L3 - Bases de données 12 juin 2001 Durée 3 heures 1. Soit le schéma relationnel R(PAYS, CAP, RÉGION, SURF, VILLE, NBH) VILLE -> NBH VILLE -> RÉGION RÉGION -> SURF RÉGION -> PAYS PAYS -> CAP Le sextuplet R(PAYS = p, CAP = c, RÉGION = r, SURF = s, VILLE = v, NBH = n ) indique que le pays de nom p a pour capitale la ville de nom c et qu’il possède une région de nom r et de surface s et une ville de nom v ayant n habitants. Montrer que l’attribut VILLE est la clé de R en appliquant les axiomes d’Armstrong. 2. Mettre en 3e forme normale la relation R de la question 1 en supposant que les dépendances fonctionnelles sont les suivantes : PAYS -> CAP RÉGION -> SURF VILLE -> NBH et que la clé est (PAYS, RÉGION, VILLE). 3. Soit la BD relationnelle de schéma : RIVIERE(NOMRIV, LON) AFFLUENT(NOMAF, NOMRIV) Le doublet RIVIERE(NOMRIV = r, LON = l ) exprime que la rivière de nom r a la longueur l et le doublet AFFLUENT (NOMAF = r1 , NOMRIV = r2 ) exprime que la rivière r1 est un affluent de la rivière r2 . Ecrire en algèbre relationnelle la requête “Nom et longueur de affluents du Rhône”. 4. Pour la BD de la question 3, écrire en algèbre relationnelle la requête “Nom des rivières n’ayant pas d’affluents”. 5. Construire un arbre B+ d’ordre 5 en y insérant successivement les enregistrements de clé : 23, 3, 31, 5, 7, 2, 11, 17, 19, 27. 6. Dans l’arbre B+ obtenu à la question 5, supprimer l’enregistrement de clé 5. 7. Soit la relation PAYS(NOM, NBH, SURF, CAP). Le quadruplet PAYS(NOM = p, NBH = n, SURF = s, CAP = v ) indique que le pays de nom p a n millions d’habitants, une surface de s km2 et pour capitale la ville de nom v. L’arbre de requêtes suivant représente la requête “Capitales des pays de plus 100 millions d’habitants et de surface inférieure à 100000 km2”. Construire un arbre de requête équivalent où les sélections sont unaires et les projections sont descendues sous les sélections. 8. Soit l’arbre de requête suivant associé à la requête de la question 3 : On suppose : que la relation AFFLUENT occupe 10 pages, que la sélectivité de NOMRIV = "Rh^ one" est de 20% et que les attributs NOMRIV, NOMAF et LON ont la même longueur. On rappelle que la clé de la relation RIVIERE est NOMRIV et que celle de la relation AFFLUENT est NOMAF. On suppose de plus que les attributs NOMAF et NOMRIV de la relation AFFLUENT sont des clés étrangères référant la relation RIVIERE. On suppose enfin qu’aucun attribut n’a de valeur nulle. Quelle est le nombre de pages de la relation réponse ? 9. Soit l’exécution suivante T1 read A A := A - 50 write A T2 read A temp := A * 0.1 A := A - temp write A read B B := B + 50 write B read B B := B + temp write B Donner l’exécution en série équivalente. 10. Placer des verrous en mode S et X sur les transactions T1 et T2 de la question 9 conformément au protocole du verrouillage à deux phases. Carte à Mémoire et Contrôle d’Accès Session de Septembre Durée 1 heure 1. La sécurité des données inscrites dans une carte à puce repose sur des dispositifs physiques et logiciels. Donner une liste des dispositifs physiques utilisés à cette fin dans la carte. 2. Le système de fichiers d’une carte comprend trois types de fichiers. Quels sont ces types de fichiers ? Quel est leur rôle. 3. Dans le protocole de validation des transactions commerciales pour les cartes à puce, décrire : (a) les entités qui doivent être présentes pour qu’une transaction puisse avoir lieu. (b) Les informations échangées entre ces entités et l’ordre de ces échanges. L2 : Structure des ordinateurs 5 septembre 2001 Première partie 1. Mesure des performances Un dispositif permet d’accélérer d’un facteur 5 l’exécution de certaines instructions d’un programme. On peut mesurer lors de l’exécution du programme que ce dispositif est utilisé pendant 30% du temps. Si le temps d’exécution sans dispositif est de 37 secondes, quel est le temps d’exécution en l’utilisant ? 2. Jeu d’instructions Une machine a des instructions codées sur 16 bits, ses adresses sont sur 6 bits. Certaines instructions sont à une adresse, d’autres à deux adresses. Si il y a n instructions à deux adresses, quel est le nombre maximum d’instructions à une adresse ? 3. Cours Quels sont les différents types d’aléa ? Quels sont les solutions pour les supprimer ? 4. Codage Construire un code binaire linéaire de quatre mots permettant de corriger deux erreurs. La réponse doit être justifiée. 5. Circuit logique Construire un circuit combinatoire ayant trois entrées e0 , e1 , e2 et deux sorties s0 , s1 dont la table de vérité est la suivante : e0 0 0 0 0 1 1 1 1 e1 0 0 1 1 0 0 1 1 e2 0 1 0 1 0 1 0 1 s0 1 1 0 0 1 1 1 1 s1 1 0 1 0 1 0 1 0 L3 - Bases de données 6 septembre 2001 6 questions, 10 minutes/question = 1 heure 1. Soit le schéma relationnel suivant : LIVRE(ISBN, TITRE, TITRE CHAP, AUTEUR) ISBN -> TITRE ISBN ->> TITRE CHAP ISBN ->> AUTEUR Mettre ce schéma en 4eme forme normale. Réponse : 2. Soit le schéma relationnel suivant PRIX(NUMPROD, PRIX) ACHAT(NUMCLI, NUMPROD, QTE) Le doublet PRIX(NUMPROD = n, PRIX = p ) exprime que le produit n◦ n a le prix p et le triplet ACHAT(NUMCLI = c, NUMPROD = p, QTE = q ) exprime que le client n◦ c a acheté q produits numéro p. Ecrire en SQL les trois requêtes suivantes : (a) “Quel est le prix du produit n◦ 1325 ?” Réponse : (b) “Quel est le nombre de produits achetés par chaque client ?” Réponse : (c) “Quel est le prix total des produits achetés par le client n◦ 212 ?” Réponse : 3. Soit la table de schéma : LIVRE(ISBN, ANNEE) Le doublet LIVRE(ISBN = n, ANNEE = a ) exprime que le livre d’ISBN n a été publié l’année a. Sachant que cette table occupe 1000 pages disque, que 1/10eme des livres ont été publiés en 1985 et que le temps de lecture et d’écriture d’une page disque est égale à 1, quel est le coût de la requête : SELECT * FROM LIVRE WHERE ANNEE = 1985 si elle est évaluée par balayage séquentiel de la table LIVRE. Réponse : 4. Soit la transaction suivante : start read A read B S = A + B write S commit Placer dans cette transaction des instructions de verrouillage en mode S et X de façon à ce qu’elle soit à deux phases. Réponse : Anglais 6 septembre 2001 durée : 1h30 1. QCM (8pts) Choose the correct answer. Only one answer is correct. My wife and I went to the airport to meet some friends. Their plane landed but they weren’t on it. “....1.... if there is a message for us,”my wife said. “They ....2.... the plane. Or perhaps they ....3.... from coming for some reason.” After ....4.... information at the information desk without success, I had an idea. “....5.... their letter ?”I asked my wife. She found it in her handbag. “Here you are,”she said. “We ....6.... at 10 o’clock on the 7th and ....7.... us.” “But today’s the 6th,”I said. “We should have looked at the date before. If we had, we wouldn’t have had this journey for nothing.” “How silly!”my wife said. “I ....8.... this letter around for days without looking at it.” 1 A B C D Let’s see Let’s to see Will we see We are seeing 4 A B C D asking for to ask for asking to ask 7 A B C D want you to wait want that you look for would like you to meet would like that you find 2 A B C D can have missed may have missed can have lost may have lost 5 A B C D Do you yet have 8 Do you already have Have you yet got Have you still got A B C D am carrying have been carrying carry must carry 3 A B C D would be prevented 6 would be avoided have been prevented have been avoided A B C D are arriving would arrive will be arrive will be arrived Choose the correct answer. Only one answer is correct. 9 I’ve often .... at this hotel. A remained B rested C stayed D passed 10 I didn’t know what to do but then an idea suddenly .... to me. A happened B entered C occurred D hit 11 When they arrived at the crossroads, they went the wrong .... A way B direction C route D street 12 Your work has been .... so we’re going to give you a rise in salary. A regular B well C satisfactory D available 13 That’s the best horse in the .... A career B run C rate D race 14 The weather .... says it will rain tomorrow. A provision B forecast C advertisement D advice 15 There are a lot of mistakes in this exercise. I’ll have to .... it again with you. A come through B go over C repass D instruct 16 If there are no buses, we’ll have to take a taxi. We must get there .... A somehow or other B somewhere or other C on one way or another D anyway or other 17 .... I read, the more I understand. A The more B So much C How much D For how much 18 .... he does his work, I don’t mind what time he arrives at the office. A So far as B So long as C In case D Meanwhile 19 .... entering the hall, he found everyone waiting for him. A At B While C On D In 20 It’s years .... a picture. A that I don’t paint B that I didn’t paint C since I painted D ago I painted 21 I found the first question .... A to be easy B the easy C that it was easy D easy 22 .... an empty seat at the back of the bus. A She happened to find B She happened to meet C It happened her that she found D It happened her that she met 23 It was raining, .... was a pity. A what B that C the which D which 24 Your car is .... mine. A the same that B as C similar to D alike 25 I’m going away for a .... A holiday of a week B week holiday C holiday week D week’s holiday 26 Why .... ? It’s not very important. A to worry B worry C you are worried D you worry 27 I dont like .... at me. A them shouting B them shout C their shout D that they shout 28 It often snows .... January. A on B in C for D at 29 I’ll meet you again .... the weekend. A by B on C at D for 30 It’s the first turning .... the left after the traffic lights. A on B in C by D for 31 He wasn’t .... to lift the case. A too strong B enough strong C strong enough D so strong 32 He can climb trees .... a monkey. A as B like C the same that D similar than 33 He .... lives in the house where he was born. A already B yet C still D ever 34 It’s ten o’clock in the morning but he’s still .... A at the bed B at bed C in bed D in the bed 35 He was a good swimmer so he .... swim to the river bank when the boat sank. A could B might C succeeded to D was able to 36 She’s been very kind, .... ? A isn’t she B hasn’t she C wasn’t she D doesn’t she 37 He was left alone, with .... to look after him. A someone B anyone C not one D no one 38 I pulled the handle .... I could. A so hardly as B as hardly as C so hard as D as hard as 39 Have you got a match ? I’ve left my .... at home. A cigarette lighter B cigarettes lighter C cigarette’s lighter D lighter for cigarettes 40 That’s the dog .... A we’ve been looking after B after which we ve been looking C what we’ve been looking after D we’ve been taking care for Examen de C++ septembre 2001 Durée 1h30 - documents autorisés Le barème est donné à titre indicatif. Exercice 1. (3 pts) Compréhension d’un “programme”C++ : le programme donné ci-dessous est un programme C++ qui est syntaxiquement correct. Il peut donc être compilé et exécuté. 1. (1 pt) Donner le résultat de l’exécution de ce programme. 2. (2 pts) Même si ce programme est accepté par le compilateur, il comporte des erreurs sémantiques, lesquelles ? #include <stream.h> class A { protected : int id; public : virtual A() { cout <<" A("<<id<<");\n",} virtual void f() = 0; void g() { cout << "A (" << id << ")::g();";} void init(int i) { id = i; } }; class B: public A { public : B(int i) { init (i); cout << "B::B(" << i << ");\n";} void f() { cout << "B (" << id << ")::f(); ";} void g() { cout << "B (" << id << ")::g(); ";} }; class C { protected : int* count; // compter les acces a a A* a; public : C(A& a) : count(new int(0)), a(&a) {} A& a() { *count = *count + 1; return * a; } virtual void p() { cout << *count; } }; main () { B b(1); B* Pb = new B(2); C c(*pb); b.f(); b.g(); cout << "\n"; c.a().f(); c.a().g(); cout << "\n"; c.p (); cout << "\n"; } Exercice 2. (7 pts) Ecriture d’une application en C++ : l’objectif de cet exercice est de définir en C++ un nouveau type représentant des ensembles d’entiers et de l’utiliser dans un petit exemple, le calcul des nombres premiers par le crible d’Ératosthène. Pour trouver tous les nombres premiers de 2 à MAX, le principe du crible d’Ératosthène est le suivant : 1. Construire l’ensemble contenant tous les entiers de 2 à MAX ; 2. Extraire et afficher le plus petit élément de l’ensemble car c’est un nombre premier; 3. Enlever de l’ensemble tous les multiples de ce nombre premier; 4. Continuer en 2 jusqu’à ce que l’ensemble soit vide. Pour simplifier, on définira seulement les opérations sur les ensembles qui sont utiles pour le crible d’Ératosthène, c’est-à-dire ajouter un élément, supprimer un élément, savoir si un élément est présent ou non, savoir si l’ensemble est vide ou non, connaı̂tre la cardinalité de l’ensemble, donner le plus petit élément de l’ensemble. On ne considérera donc pas les opérations sur les ensembles telles que l’union, l’intersection, l’inclusion, etc. 1. (2 pts) Ecrire la classe Ensemble int qui décrit un ensemble d’entiers. 2. (1 pt) Expliquer comment en C++, il est possible de généraliser cette classe pour avoir des ensembles de n’importe quel type d’éléments. Dans la suite nous ne considérerons que la notion d’ensemble d’entiers. 3. (2 pts) Ecrire le programme principal qui calcule les nombres premiers en utilisant le principe du crible d’ÉratosthÀne (et l’ensemble défini à l’exercice 1, bien sûr !). 4. On souhaite implanter ces ensembles d’entiers en utilisant un tableau. (a) (1 pt) Donner la déclaration (fichier d’en-têtes .h) de la classe correspondante. Cette classe devra définir un attribut du type int* pour représenter le tableau. (b) (1 pt) Écrire le fichier .cc correspondant. Examen Java 7 septembre 2001 Durée lh30 Tout document, sauf livres, autorisé. Barème indicatif Exercice Exercice Exercice Exercice 1 2 3 4 : : : : 3/10 3/10 1/10 3/10 Exercice 1. On appelle nombre de Harshad ou nombres de Niven ou nombres multinumériques un nombre divisible par la somme des chiffres qui le composent. Exemples : Nombres 10 12 18 20 21 24 1729 Somme des chiffres 1 3 9 2 3 6 19 Division 10 4 2 10 7 4 91 On se propose de développer une méthode afin de déterminer si un entier est un nombre de Harshad. Complétez la méthode ci-dessous qui teste cette propriété sur l’entier n, passé en paramètre et retourne un booléen. Attention : 6 lignes de code à raison d’une instruction par ligne sont suffisantes. public boolean isHarshad (int n) { boolean result = false; int m,s=0; (..........) return result; } Exercice 2. On considère les expressions Java suivantes : int i = 1; double d = 3.14 ; char c = ’c’ ; String s = "C’est la lutte"; Point p = new Point() ; (La classe Point est explicitée plus bas.) 1. Complétez les déclarations suivantes et mentionnez en justifiant votre réponse la valeur résultante de la variable. 1/.............. j = i + 1; 2/.............. v = s + "finale"; 3/.............. valeurEntiere = new Integer (i) ; 4/.............. z = p.x() ; 5/.............. coord = new int [3] ; 6/.............. 1 = (new String[3]).length; 7/.............. m = i * d; 8/.............. h = new Point(0,0).equals(p); 2. Explicitez en deux lignes maximum l’utilisation de la méthode equals de la classe Point. Détail de la classe Point : class Point { double x,y; public Point() { x = 0; y = 0; } public Point(double u, double v) { x = u; y = v; } public double x() { return x; } public double y() { return y; } public void x(double d) { x = d; } public void y(double d) { y = d; } public boolean equals (Object p) { if (!(p instanceof Point)) return false; return ((x() == ((Point)p.x()) && (y() == ((Point)p).y())); } } Exercice 3. Soient les instructions Java suivantes : String [ ] automne; automne = new String[4]; automne[O] = "septembre"; automne[1] = "octobre"; automne[2] = "novembre"; automne[3] = "decembre"; Ces instructions permettent de donner des valeurs aux quatre éléments du tableau automne. Ecrivez un petit segment de code Java qui ait le même effet mais qui contienne un nombre minimum d’instructions. Exercice 4. Utilisation des adaptateurs. Un adaptateur est une structure conceptuelle de la programmation objet qui permet de fournir de nouveaux services à une classe existante qui ne les possède pas. Soit une classe Moteur qui possède une méthode demarre () élaborée correctement pour fonctionner dans une Thread : class Moteur { public void demarre() { // ici le moteur fonctionne } } Soit également une classe Voiture. Pour utiliser conjointement le concept de Thread avec cette classe nous pouvons utiliser l’interface Runnable ainsi : class Voiture implements Runnable { private Moteur leMoteur ; public void run() { leMoteur.demarre(); } Thread t = new Thread(this, "leMoteur") ; public Voiture (Moteur unMoteur) { leMoteur = unMoteur ; t.start() ; } } Question : 1. Les trois lignes de code suivantes produisent-elles le démarrage de la Thread ? Justifiez votre réponse. Moteur unMoteur = new Moteur() ; Voiture maVoiture = new Voiture() ; maVoiture.run() ; 2. On veut à présent utiliser une structure similaire (une Voiture et un Moteur actionné dans une Thread par le constructeur de la Voiture) mais sans que notre voiture implémente Runnable. Modifiez le corps de la classe Voiture SANS TOUCHER AU CONSTRUCTEUR de façon à obtenir le même résultat. Vous pouvez utiliser l’interface Runnable fournie dans le package java.lang en créant un adaptateur anonyme. public interface Runnable { public abstract void run(); } class Voiture { private Moteur leMoteur ; (..........) public Voiture (Moteur unMoteur) { leMoteur = unMoteur ; t.start() ; } }