← Spécialité NSI

Faire le point : Spécialité NSI, Terminale

Une question par chapitre, 10 en tout, tirées des exercices corrigés du cours. Réponds à celles que tu sais faire et passe celles d'un chapitre que tu n'as pas encore vu : chaque réponse se vérifie tout de suite, et la correction s'ouvre après.

Avec ton espace gratuit, chaque réponse est gardée et ton tableau de bord range chaque chapitre : réussi au test, ou à travailler. Ce sont les mêmes questions que sur les pages des séries : une réponse donnée ici compte là-bas.

Ce que le cours suppose

Ces chapitres viennent d'une année précédente, et le cours s'appuie dessus dès les premières semaines.

NSI · Première · Algorithmique : preuve, terminaison et coût

On ne devine pas le coût d'un algorithme, on le constate. Le test du doublement consiste à doubler la taille des données et à regarder ce que devient le temps : inchangé pour un coût constant, doublé pour un coût linéaire, quadruplé pour un coût quadratique.

Quatre programmes AA, BB, CC et DD ont été chronométrés sur les mêmes données, pour quatre tailles qui doublent à chaque ligne. Les temps sont en millisecondes.

nA (ms)B (ms)C (ms)D (ms)1 0000,81,52412,02 0000,83,19713,44 0000,96,238914,88 0000,812,31 55416,2

b) Prédisez le temps de BB et celui de CC pour n=16 000n = 16\,000, puis pour n=64 000n = 64\,000. Donnez le temps de CC à 64 00064\,000 en secondes, au dixième.

Tape tes réponses, la page te dit juste ou faux 0/3

b)
Voir la correction

Réponse

b) BB : 24,624{,}6 ms puis 98,498{,}4 ms. CC : 6 2166\,216 ms puis 99 45699\,456 ms, soit 99,599{,}5 s

b) Pour BB, chaque doublement multiplie par 22 : 12,3×2=24,612{,}3 \times 2 = 24{,}6 ms à 16 00016\,000, puis 24,6×2×2=98,424{,}6 \times 2 \times 2 = 98{,}4 ms à 64 00064\,000, deux doublements plus loin. Pour CC, chaque doublement multiplie par 44 : 1 554×4=6 2161\,554 \times 4 = 6\,216 ms à 16 00016\,000, puis 6 216×16=99 4566\,216 \times 16 = 99\,456 ms à 64 00064\,000, soit environ 99,599{,}5 secondes. On passe donc de moins de deux secondes à plus d'une minute et demie pour huit fois plus de données. Le piège est de multiplier par 88 au lieu de 4×44 \times 4 : trois doublements se traduisent par 232^{3} pour un linéaire et par 434^{3} pour un quadratique, jamais par la même valeur.

L'exercice complet, avec toutes ses questions →

La série du chapitre · la fiche de révision

NSI · Première · Traitement de données en tables et types construits

Le schéma oppose deux situations qui s'écrivent presque de la même façon et ne font pas du tout la même chose. C'est l'erreur la plus coûteuse du chapitre, parce qu'elle ne provoque aucun message : le programme donne simplement un résultat faux.

abcd[1, 2, 3][1, 2, 3][1, 2, 3]b = a : un seul objetd = list(c) : deux objets

c) Une table est une liste de dictionnaires. On écrit copie = list(table) puis copie[0]['nom'] = 'X'. La table d'origine est-elle modifiée ? Justifiez précisément.

Tape tes réponses, la page te dit juste ou faux 0/1

c)
Voir la correction

Réponse

c) Copie de surface : table modifiée

c) Oui, la table d'origine EST modifiée. list(table) construit bien une nouvelle liste, mais ses cases contiennent les MÊMES dictionnaires que l'original : on a copié le contenant, pas les contenus. copie[0] et table[0] désignent donc le même dictionnaire, et lui ajouter ou changer une clé se voit des deux côtés. C'est précisément le piège : le programmeur croit avoir protégé ses données parce qu'il a écrit une copie, alors qu'il n'a dupliqué qu'un niveau.

L'exercice complet, avec toutes ses questions →

La série du chapitre · la fiche de révision

NSI · Première · Architectures matérielles, systèmes et réseaux

Un ordinateur ne connaît que des suites de bits. Tout le reste, entiers positifs, entiers négatifs, adresses, couleurs, est une CONVENTION d'interprétation de ces suites, et c'est la convention qu'il faut connaître. Le schéma ci-dessous représente l'octet et les deux programmes qui le lisent.

1101001176543210rangprogramme 1entier naturelprogramme 2complément à deux

b) La suite 11010011 est lue par deux programmes différents, l'un qui l'interprète comme un entier naturel, l'autre comme un entier relatif en complément à deux. Donnez les deux valeurs.

Tape tes réponses, la page te dit juste ou faux 0/2

b)
Voir la correction

Réponse

b) 211 ou −45 selon la convention

b) Comme entier naturel, 1101001111010011 vaut 128+64+16+2+1=211128 + 64 + 16 + 2 + 1 = 211. Comme entier relatif en complément à deux, le bit de poids fort valant 1, le nombre est négatif : sa valeur est 211−256=−45211 - 256 = -45. On peut aussi le retrouver en inversant tous les bits, ce qui donne 00101100 soit 44, puis en ajoutant 1 pour obtenir 45, et en mettant le signe moins. La même suite de huit bits vaut donc 211 ou moins 45 selon la seule convention retenue, et rien dans la mémoire ne dit laquelle est la bonne.

L'exercice complet, avec toutes ses questions →

La série du chapitre · la fiche de révision

Les chapitres du cours

Dans l'ordre du cours.

Chapitre 1 · Révision : l'algorithmique de Première, récursivité et Horspool

La version récursive de Fibonacci vue à l'exercice 5 est élégante et correcte. Elle est aussi inutilisable au-delà de quelques dizaines de termes, et cet exercice explique pourquoi.

c) Expliquez pourquoi le coût de cette version croît de façon exponentielle.

Tape tes réponses, la page te dit juste ou faux 0/2

c)
Voir la correction

Réponse

c) Coût en φn\varphi^{n} : exponentiel

c) Chaque appel non terminal en engendre deux, donc le nombre d'appels double approximativement quand nn augmente de 1. On obtient un arbre binaire de profondeur nn, dont le nombre de nœuds croît comme 2n2^{n} (plus précisément comme φn\varphi^{n}, avec φ\varphi le nombre d'or). Passer de n=40n=40 à n=50n=50 multiplie le temps par environ φ10≈123\varphi^{10} \approx 123 : c'est ce qui rend cette version inutilisable, alors même qu'elle est parfaitement correcte. Correction et efficacité sont deux propriétés indépendantes.

L'exercice complet, avec toutes ses questions →

La série du chapitre · la fiche de révision

Chapitre 2 · Structures de données : piles, files, arbres et graphes

La figure donne un arbre binaire. Chaque noeud a au plus deux fils, gauche et droit, et l'ordre des deux fils compte. Tout le vocabulaire de l'exercice se lit sur cette figure.

831016144713

c) Écrivez les fonctions récursives taille(a) et hauteur(a). Précisez le cas de base de chacune.

Tape tes réponses, la page te dit juste ou faux 0/1

c)
Voir la correction

Réponse

c) Hauteur de l'arbre vide −1-1

c) La fonction taille : si l'arbre est vide, renvoyer 0 ; sinon renvoyer 1+taille(gauche)+taille(droit)1 + \text{taille}(\text{gauche}) + \text{taille}(\text{droit}). Le cas de base est l'arbre vide, qui vaut 0. La fonction hauteur : si l'arbre est vide, renvoyer −1-1 ; sinon renvoyer 1+max⁡(hauteur(gauche),hauteur(droit))1 + \max(\text{hauteur}(\text{gauche}), \text{hauteur}(\text{droit})). Le cas de base est ici encore l'arbre vide, mais il vaut −1-1 et non 0, afin qu'un arbre réduit à sa racine ait la hauteur 0. Choisir 0 pour l'arbre vide donnerait la hauteur en nombre de NIVEAUX au lieu d'arêtes : les deux conventions existent, il faut annoncer celle qu'on emploie et s'y tenir, c'est la source d'erreur numéro un du chapitre.

L'exercice complet, avec toutes ses questions →

La série du chapitre · la fiche de révision

Chapitre 3 · Bases de données relationnelles et langage SQL

La figure oppose deux façons d'enregistrer les mêmes faits : une seule table où tout est recopié, et deux tables reliées. Le choix n'est pas esthétique, il décide de ce que la base pourra affirmer.

nomclassevaleurDupont1G312Dupont1G315Dupont1G39Nadeau1G114une seule tableidnomclasse1Dupont1G32Nadeau1G1eleveeleve_idvaleur11211519214note

b) On veut corriger la classe de Dupont, qui passe en 1G4. Décrivez l'opération dans chacune des deux conceptions et le risque propre à la première.

Tape tes réponses, la page te dit juste ou faux 0/2

b)
Voir la correction

Réponse

b) Anomalie de mise à jour

b) Dans la conception de droite, on modifie UNE ligne de la table des élèves, et c'est fini : les trois notes suivent automatiquement, puisqu'elles ne stockent que l'identifiant. Dans celle de gauche, il faut modifier les trois lignes concernées. Le risque propre à la première conception est l'ANOMALIE DE MISE À JOUR : si l'une des trois lignes est oubliée, la base affirme simultanément que Dupont est en 1G3 et en 1G4. Elle contient alors une contradiction, et aucune requête ne pourra plus trancher, puisque les deux réponses y sont écrites noir sur blanc.

L'exercice complet, avec toutes ses questions →

La série du chapitre · la fiche de révision

Chapitre 4 · Processus, réseaux et sécurisation

Trois processus A, B et C arrivent tous à l'instant 0. Ils demandent respectivement 5, 3 et 4 unités de temps de calcul. Le diagramme montre l'exécution par un ordonnanceur en tourniquet, de quantum 2, servant les processus dans l'ordre A, B, C.

ABCABCA024681012

a) Lisez le diagramme et donnez l'instant d'achèvement de chacun des trois processus. Vérifiez que la somme des durées est cohérente.

Tape tes réponses, la page te dit juste ou faux 0/3

a)
Voir la correction

Réponse

a) B à 9, C à 11, A à 12

a) Le diagramme donne, dans l'ordre : A de 0 à 2, B de 2 à 4, C de 4 à 6, A de 6 à 8, B de 8 à 9, C de 9 à 11, A de 11 à 12. Le processus B s'achève à l'instant 9, C à l'instant 11 et A à l'instant 12. Cohérence : la somme des durées de calcul vaut 5+3+4=125 + 3 + 4 = 12, et le processeur n'est jamais inoccupé, donc le dernier processus doit bien s'achever à l'instant 12.

L'exercice complet, avec toutes ses questions →

La série du chapitre · la fiche de révision

Chapitre 5 · Récursivité, objet, mise au point et calculabilité

La figure montre l'état d'une boucle en cours : une zone déjà examinée, une zone qui reste. La propriété qui reste vraie à chaque tour s'appelle l'invariant, et c'est elle qui transforme une conviction en démonstration.

7395281640déjà examinéreste à examineri

a) Pour la fonction indice_max de l'exercice 5, énoncez l'invariant de boucle en une phrase précise, en vous appuyant sur la figure.

Tape tes réponses, la page te dit juste ou faux 0/1

a)
Voir la correction

Réponse

a) Invariant sur le préfixe examiné

a) L'invariant : à l'entrée de chaque tour de boucle, la variable imax contient l'indice d'un plus grand élément parmi les éléments d'indices 0 à i−1i - 1, c'est-à-dire parmi la zone déjà examinée de la figure, et c'est l'indice du premier d'entre eux en cas d'égalité. Formulé autrement, imax est la réponse correcte pour le préfixe examiné jusqu'ici. Le point de méthode : un invariant utile parle du travail DÉJÀ FAIT, jamais de ce qui reste, et c'est ce qui le rend vrai avant même le premier tour.

L'exercice complet, avec toutes ses questions →

La série du chapitre · la fiche de révision

Chapitre 6 · Diviser pour régner, programmation dynamique et graphes

Diviser pour régner produit toujours la même forme de récurrence : le coût d'un problème de taille nn vaut le coût des sous-problèmes plus le travail de découpage et de recombinaison. Savoir la lire dispense de tout calcul.

a) Pour chacune des trois récurrences suivantes, identifiez l'algorithme et donnez le coût : C(n)=C(n/2)+1C(n) = C(n/2) + 1 ; C(n)=2C(n/2)+nC(n) = 2C(n/2) + n ; C(n)=C(n−1)+nC(n) = C(n-1) + n.

Tape tes réponses, la page te dit juste ou faux 0/3

a)
Voir la correction

Réponse

a) Dichotomie, tri fusion, tri rapide au pire

a) Première récurrence, C(n)=C(n/2)+1C(n) = C(n/2) + 1 : un seul sous-problème de taille moitié et un travail constant. C'est la recherche DICHOTOMIQUE, de coût log⁡2n\log_{2} n. Deuxième, C(n)=2C(n/2)+nC(n) = 2C(n/2) + n : deux sous-problèmes de taille moitié et un travail linéaire. C'est le TRI FUSION, de coût nlog⁡2nn \log_{2} n. Troisième, C(n)=C(n−1)+nC(n) = C(n-1) + n : un sous-problème à peine plus petit et un travail linéaire. C'est le tri rapide dans son PIRE CAS, ou le tri par sélection, de coût n2/2n^{2}/2.

L'exercice complet, avec toutes ses questions →

La série du chapitre · la fiche de révision

Chapitre 7 · Recherche textuelle : Boyer-Moore et Horspool

On cherche le motif 'rose' dans le texte 'une prose sur les roses', de 2323 caractères espaces compris. La figure montre le texte, ses indices, et le motif posé sur la première fenêtre ; les espaces sont notés ␣, et la lettre du texte alignée avec la fin du motif est en bleu.

La règle : à chaque fenêtre, on compare de DROITE à GAUCHE, de motif[m - 1] vers motif[0], en s'arrêtant au premier échec. Puis, que la fenêtre ait coïncidé ou non, on avance de d.get(c, m), où c = texte[i + m - 1] est la lettre du TEXTE alignée avec la dernière case du motif. On s'arrête dès que i>n−mi > n - m.

une␣prose␣sur␣les␣rosestexterosemotif012345678910111213141516171819202122

b) Pour les deux premières fenêtres, i=0i = 0 puis i=4i = 4 : donnez la lettre lue, le nombre de comparaisons et le décalage appliqué.

Tape tes réponses, la page te dit juste ou faux 0/3

b)
Voir la correction

Réponse

b) i=0i = 0 : ␣, 11 comparaison, décalage 44 ; i=4i = 4 : s, 11 comparaison, décalage 11

b) Fenêtre i=0i = 0 : elle couvre les indices 00 à 33, et la lettre alignée avec la fin du motif est texte[3], un espace. On compare l'espace au e du motif : échec, 11 comparaison. L'espace n'est pas une clé, on avance de 44. Fenêtre i=4i = 4 : indices 44 à 77, la lettre lue est texte[7] = s, différente de e : 11 comparaison, et d[s] = 1, donc i=5i = 5. Remarquez que le décalage se lit sur la lettre du TEXTE, s, et non sur la lettre du motif qui lui fait face : c'est l'erreur qui fausse le plus de traces.

L'exercice complet, avec toutes ses questions →

La série du chapitre · la fiche de révision

Et maintenant ?

Ton tableau de bord range chaque chapitre selon tes réponses et te dit par où commencer. Une date d'examen en tête ? Note-la sur la carte du cours : il en tire un plan, jour après jour.

Voir mon bilan dans mon espace →
Site par Studio Squalli