Correction du sujet n°42 de la BNS des E3C de NSI


Accueil > Cours > Correction du sujet n°42 de la BNS des E3C de NSI

Par Fernando L., Metais R., Perot A., Perret S., Robert Vincent en juin 2020

Introduction

Dans le cadre de l’évaluation en contrôle continu, les élèves étudiant la spécialité NSI passent des épreuves de de contrôle continu lors du troisième trimestre de leur année de première.

Les épreuves de la session 2020 ont été annulés, néanmoins les sujets ont été publiés par l’éducation nationale.

Parmi ces 51 sujets de 42 questions, nous vous proposons la correction du sujet n°42. Cette correction a été entièrement préparé et rédigé sur ce site web par nos élèves de la spécialité NSI du lycée Louis Pasteur.

Les sujets sont sous licence CC BY-NC-SA 3.0 FR, le présent corrigé est sous la même licence.

Chaque sujet comporte donc 42 questions. (Pourquoi 42 ? Il faut faire spé NSI pour comprendre )

Modalités pratiques

L’épreuve consiste en 42 questions, rangées en 7 thèmes.

Pour chaque question Le candidat :
- gagne 3 points s’il choisit la bonne réponse,
- perd 1 point s’il choisit une réponse fausse.
- Il ne gagne ni ne perd aucun point Le candidat s’il ne répond pas ou choisit plusieurs réponses

Le total sur chacun des 7 thèmes est ramené à 0 s’il est négatif.

La note finale s’obtient en divisant le total des points par 6,3 et en arrondissant à l’entier supérieur.

Thème A : types de base

Question A.1

Olivier visite son site préféré pour relire le programme de NSI.
Il devrait lire le texte ci-dessous :

L’enseignement de spécialité de numérique et sciences informatiques du cycle terminal de la voie
générale vise l’appropriation des fondements de l’informatique pour préparer les élèves à une
poursuite d’études dans l’enseignement supérieur, en les formant à la pratique d’une démarche
scientifique et en développant leur appétence pour des activités de recherche.

Le paramétrage de son navigateur lui donne l’affichage ci-dessous :

L’enseignement de spécialité de numérique et sciences informatiques du cycle terminal
de la voie générale vise l’appropriation des fondements de l’informatique pour
préparer les élèves à une poursuite d’études dans l’enseignement supérieur, en
les formant à la pratique d’une démarche scientifique et en développant leur appétence
pour des activités de recherche.

Quel type d’encodage Olivier doit-il choisir dans les paramètres de son navigateur pour afficher correctement le texte ?

Réponses

A ANSI
B LATIN-1
C UTF-8
D ASCII

Correction : Réponse C

L’auteur de cette question travaillait peut-être à l’Agence Nationale de la Sécurité des Systèmes d’Information (ANSI), il surement du au préalable étudier le codage ASCII qui date de 1963 et ne concerne donc pas le codage des caractères d’une page web. Seul les standards ISO 8859-1 (autre nom de LATIN-1) ou UTF-8 sont utilisés sur le web. C’est désormais en UTF-8 que sont désormais codés les pages web.

Question A.2

Quel est le nombre maximal de bits du produit de deux entiers positifs codés sur 8 bits ?

Réponses

A 8
B 16
C 32
D 64

Correction : Réponse B

Sachant que sur le maximum codé peut être de 8, 8 x 8 = 64. Ingenious ?
Sur 8 bits, le plus grand entier en base 10 est 2^8-1 = 255.
255 x 255 = 65 025‬
Sur 16 bits, le plus grand entier en base 10 est 2^16-1 = 65 535
Ainsi, 16 bits suffiront.

Question A.3

À quelle affectation sont équivalentes les instructions suivantes, où a, b sont des variables entières et c une
variable booléenne ?

  1. c = False
  2. if a==b:
  3. c = True
  4. if a > b+10:
  5. c = True

Télécharger

Réponses

A c = (a==b) or (a > b+10)
B c = (a==b) and (a > b+10)
C c = not(a==b)
D c = not(a > b+10)

Correction : Réponse A

Car si a est égal à b, alors le booléen c devient True et si a est supérieur à b+10, le booléen c devient également True. Or ces deux conditions ne sont pas dépendent l’une de l’autre, de plus la porte or est true si les deux condition sont vrai mais si l’une des deux devient fausse, le booléen aussi.

Question A.4

Quelle est la représentation binaire de l’entier 152 ?

Réponses

A 0001 1001
B 0011 1010
C 0100 0100
D 1001 1000

Correction : Réponse D

Le premier 1 vaut 128, vous enlevez donc 128 à 152, il vous reste donc 24, ensuite il y a 64 et 32 qui sont 0, ensuit un 1 qui vaut 16, 24 - 16 = 8. Pile la valeur du 3ème 1 : magique non ?

Question A.5

Soient P et Q deux formules logiques telles que P est vraie et Q est fausse. Quelle est la valeur de l’expression (P ET Q) OU (NON(P) OU Q) ?

Réponses

A vraie
B fausse
C ni vraie, ni fausse
D vraie et fausse en même temps

Correction : Réponse B

Ici et P est donc True et Q est False, or la premiere porte ET prend le "plus fort", donc False car si l’un des deux est False l’ensemble aussi, pour la troisième porte qui est OU, elle prend le False comme plus fort et comme NON(P) est False, alors l’ensemble aussi. La deuxième porte qui est OU on refait le même raisonnement. CQFD.

Question A.6

On rappelle que le nombre entier 12 s’écrit 1100 en base 2. Quelle est le codage en complément à 2 sur un octet du nombre entier −12 ?

Réponses

A -0000 1100
B 1000 1100
C 1111 0100
D 1111 0011

Correction : Réponse B

Ici nous pouvons déjà supprimer A car l’ordinateur ne comprend pas les -... Pour un nombre négatif, nous devons placer un 1 en premiere positions (à gauche pour les lecteurs de manga), nous pouvons également supprimer D car le dernier 1 signifie que c’est un nombre impaire. Il nous reste B et C mais le C est beaucoup trop grand pour être 12 (et oui le 2ème 1 vaut 64 et 12<64). La réponse est donc C. Il est d’ailleurs conseillé par vos professeurs de NSI d’apprendre par coeur les entiers compris entre [-127 ; 127] en binaire pour l’examen de fin d’année.

Thème B : types construits

Question B.1

On considère le code suivant :
D = ["a" : "1", "2" : "a", "b" : "a", "c" : "3"]
Que vaut D["a"] à la fin de l’exécution ?

Réponses

A "1"
B 2
C ["2", "b"]
D ["1", "3"]

Correction : Réponse A

ici nous faisons une recherche dans le tableau grâce à la clé "a" qui est associé à "1".

Question B.2
 
Quelle expression Python a pour valeur la liste [1,3,5,7,9,11] ?
 
Réponses
 
A [2*i - 1 for i in range(6)]
B [2*i + 1 for i in range(6)]
C [2*i + 1 for i in range(5)]
D [2*i - 1 for i in range(7)]
 
Correction : Réponse B
 
Question sérieuse ! On génère un tableau contenant 6 valeurs, données par 2*i + 1 avec i un entier entre 0 et 5 ! Oui oui, entre 0 et 5 il y a 6 valeurs.

Question B.3
 
On exécute l’instruction suivante :

T = [ [12,13,14,15], [24,25,26,27], [35,36,49,33], [61,53,55,58] ]

Quelle expression parmi les quatre suivantes a pour valeur 26 ?
 
Réponses
 
A T[1][2]
B T[2][1]
C T[2][3]
D T[3][2]
 
Correction : Réponse A
 
En premier temps nous cherchons la valeur 26 dans le tableau. Une fois trouvé, nous constatons qu’il se trouve dans le deuxième "sous tableau", et qu’il est en troisième position, comme la Croatie en 98... Or les tableau indexés commencent par le valeur 0, donc deuxième position devient la première et la troisième position devient 2ème, comme cette fois ci en 2018 pour nos Kockasti... la réponse est donc T[1][2].

Question B.4
 
Quelle expression permet d’accéder à la valeur 'hello' après qu’on a défini L = [['a','b','c'],['bonjour','hello']]
 
Réponses
 
A L[5]
B L[1][1]
C L[2][2]
D L['hello']
 
Correction : Réponse B
 
Idem question précédente, le "hello" - à prononcer absolument avec l’accent British sinon vous ne progresserez jamais en NSI - se trouve dans le deuxième tableau en deuxième position, sachant qu’il est indexé à partir de 0, l’expression pour retrouver "hello" est L[1][1].

Question B.5

On exécute le script suivant :

  1. inventaire = {'pommes': 430, 'bananes': 312,
  2.  'oranges' : 274, 'poires' : 137}
  3. stock = 0
  4. for fruit in inventaire.keys():
  5.  if fruit != 'bananes':
  6.  stock = stock + inventaire[fruit]

Télécharger

Que contient la variable stock à la fin de cette exécution ?

Réponses

A {430, 274, 137}
B 312
C 841
D { 'pommes', 'oranges', 'poires' }

Correction : Réponse C

Dans le dictionnaire inventaire, le script va récupérer les valeurs, c’est a dire les éléments attitrés aux clés (soit ici 430, 312, 274 et 137). Il va ensuite les "analyser" une par une grâce à la boucle for. Si l’élément pris est différent (par l’opérateur != ) est différent de banane, il est stocké dans stock. Donc, dans les élément pris seul 312 n’et pas compté, en effet il correspond a la valeur banane (la légende dis que l’éducation nationale nous transmet grâce a ce script la véritable longueur de la coupe de cheveux du fameux Elvis Presley). On a donc, dans stock, l’addition de 430 + 274 + 137 = 42 (non je déconne ça fait bien 841 même si 42 est la réponse a tout).

Question B.6

On définit : T = [7*n for n in range(10)].
Quelle est la valeur de l’expression T[7] ?

Réponses

A 42
B 49
C 56
D 70

Correction : Réponse B

T va faire une simple multiplication (7*n) de n=0 à n=9 (for n in range(10)). Donc quand T = T[7], n = 7 donc on a 7 * 7 = 49, soit le numéro du magnifique département de la Maine-et-Loire. Donc on était a 2 doigt d’avoir 42....Les créateur de ce QCM sont vraiment des tortionnaires !

Thème C : traitement de données en tables

Question C.1

On définit :

  1. contacts = { 'Toto': 'toto@nsi.fr', 'Chloé': 'chloe@nsi.com',
  2. 'Paul': 'paul@nsi.net', 'Clémence': 'clemence@nsi.org' }

Télécharger

Parmi les propositions suivantes, laquelle est exacte ?

Réponses

A ’Chloé’ est une valeur de la variable contacts
B ’Chloé’ est une clé de la variable contacts
C ’Chloé’ est un attribut de la variable contacts
D ’Chloé’ est un champ de la variable contacts

Correction : Réponse B

Ici, il faut procéder par élimination. Comme le dirait un grand sage : "Ce soir, il n’en restera qu’un !". Donc je pense que nous sommes d’accord pour dire que ’Chloé’ n’est ni un champs (j’ai vu auprès d’agriculteurs pro et aucun ne donne de nom a ses champs, sauf une fois au chalet) ni un attribut. En effet ces 2 éléments ne peuvent pas se retrouver dans le dictionnaire contacts. La variable contacts possède donc des clés et des valeurs, comme tout les dictionnaire. Ça tombe bien, c’est les 2 réponses qu’il reste ! Or on voit ici que ’Chloé’ est bien une clé de la variable contacts, et par conséquent, si c’est un clé, ce n’est pas un valeur. Tout est bien qui finit bien. La réponse B a gagné Koh-Lanta.

Question C.2

Qu’est-ce que le format de fichier CSV ?

Réponses

A un format de fichier mis au point par Microsoft pour Excel
B un format de fichier pour décrire une base de données
C un format de fichier où les données sont séparées par un caractère tel qu’une virgule
D un format de fichier décrivant une page Web

Correction : Réponse C

Un fichier CSV signifie Comma-Separated Values (les bilingues ont déjà la réponse). Il est de type tableur et ses valeurs (pour ceux qui ne l’aurai pas deviné) sont séparés par une virgule.

Question C.3

On définit ainsi une liste t :

  1. t = [ {'id':1, 'age':23, 'sejour':'PEKIN'},
  2.  {'id':2, 'age':27, 'sejour':'ISTANBUL'},
  3.  {'id':3, 'age':53, 'sejour':'LONDRES'},
  4.  {'id':4, 'age':41, 'sejour':'ISTANBUL'},
  5.  {'id':5, 'age':62, 'sejour':'RIO'},
  6.  {'id':6, 'age':28, 'sejour':'ALGER'}]

Télécharger

Quelle expression vaut-elle ’RIO’ parmi les suivantes ?

Réponses

A t[4][’sejour’]
B t[5][’sejour’]
C t(’id’=5)
D t.[’id’=5].[’sejour’]

Correction : Réponse A

Ici nous avons affaire a une "matrice-dictionnaire" (il doit y avoir un nom et je pense que le prof va me le donner quand il va faire un AVC en lisant ceci). Ayant parfaitement suivi les cours de NSI vous saurez effectuer les code ci-dessus. Nous savons donc que si on met l’expression  t[5]['sejour'], cela va nous renvoyer ALGER, si on met  t('id'=5), votre estime envers Spyder va chuter gravement et ce dernier va vous sermonner d’un SyntaxError: keyword can't be an expression, si on rentre t.['id'=5].['sejour'] ,ça sera la même chose mais vous vous prendrez un sale SyntaxError: invalid syntax qui fait toujours plaisir. Seul la réponse a qui ira chercher la valeurs de ’sejour’ dans le "dico numéro" 4 (soit le 5e car on part de 0) vous octroiera le plaisir de voir ce magnifique RIO apparaître.

Question C.4La question explosive (j’assume pas cette blague alors je la cache

On utilise habituellement un fichier d’extension csv pour quel type de données ?

Réponses

A des données structurées graphiquement
B des données sonores
C des données compressées
D des données structurées en tableau

Correction : Réponse D

On a vu plus haut que le fichier csv est de type tableur. Tableur étant issu du latin tabula (qui signifie planche), il est de la même famille que tableau (je met a contribution mes acquis de français que je ne pourrait malheureusement pas ressortir pour le BAC de Français cette année...). Un fichier csv de type TABLEUR va donc être utilisé pour des données structurées en TABLEAU.

Question C.5

Soit la table de données suivante :

nom prenom date_naissance
Dupont Pierre 17/05/1987
Dupond Catherine 18/07/1981
Haddock Archibald 23/04/1998

Quels sont les descripteurs de ce tableau ?

Réponses

A nom, prenom et date_naissance
B Dupont, Pierre et 17/05/1987
C Dupont, Dupond et Haddock
D il n’y en a pas

Correction : Réponse A

Les proposition A sont des descripteur et les autres propositions sont des valeurs des descripteurs. Je n’ai vraiment pas de quoi argumenter plus, il fallait apprendre sa leçon les loulous.

Question C.6

Qu’est-ce qu’un fichier CSV ?

Réponses

A une librairie Python permettant l’affichage des images
B un utilitaire de traitement d’image
C un format d’image
D un format de données

Correction : Réponse D

Bon la, clairement, si j ai encore des choses a vous apprendre sur le format csv après les réponses précédentes, c’est vraiment que je dois me reconvertir totalement dans le sauvetage des ours polaire... Mai bon reprenons ! Donc un fichier CSV est un fichier qui représente des données sous forme de tableau. Donc pas des images. Vraiment pas. Non.

Thème D : interactions entre l’homme et la machine sur le Web

Question D.1

Un élément form (un formulaire) d’une page HTML contient un élément button de type submit. Un clic sur ce bouton :

Réponses

A envoie les données du formulaire vers la page définie par l’attribut action de l’élément form
B efface les données entrées par l’utilisateur dans le formulaire
C envoie les données du formulaire vers la page définie par l’attribut method de l’élément form
D ne fait rien du tout si un script javascript n’est pas associé au bouton

Correction : Réponse A

Si un bouton possède le type submit, cela veut dire que lorsque le bouton sera sollicité, le formulaire va être soumis au serveur en utilisant l’attribut action (qui sert a indiquer une action a exécuter lors de l’envoi de données). Du coup c’est un peu comme si vous rendiez un devoir sauf qu’il n’y a aucun risque que vos parents sortent de l’ordinateur si ça ne va pas.

Question D.2

Quelle méthode est utilisée via une requête HTTP pour envoyer une image via un formulaire HTML ?

Réponses
 
A HEAD
B PUT
C POST
D GET

Correction : Réponse C

Reprenons chaque requête proposé ici :
- HEAD sert notamment a économiser de la bande passant en demandant seulement les en-têtes de la même manière que la méthode GET. C’est comme si vous commandiez seulement le capuchon d’un stylo au lieu du stylo sur Internet pour payer moins. Si c’est le cas vous êtes non seulement radin, mais également très bizarre.
- PUT remplace une représentation de la ressource ciblée par le contenu de la requête. Pour imager, on va faire un carré sur le sol et dire "Ici il y aura Thierry Beccaro". Notre pote PUT va alors nous chercher Thierry Beccaro et le mettre dans le carré (Note : la spécialité NSI de Louis Pasteur rejette toute responsabilité dans le cas ou des élèves tenterai de faire des invocation sataniste de Thierry Beccaro).
- POST envoie des données au serveur. Il est important que POST ne soit pas un forceur sinon le serveur peut faire un Burn-Out.
- GET demande une représentation de la ressource spécifiée. Ils servent donc a récupérer des données ( Note : aucun serveur n’est maltraité pendant l’interrogatoire de GET).
La requête la plus couramment utilisé pour un envoi d’image est donc la requête POST car il effectue un envoi de donnés.

Question D.3

Les pages HTML sont affichées par …

Réponses

A le compilateur
B le serveur
C l’interpréteur
D le navigateur Web

Correction : Réponse D

Votre navigateur web, qui est probablement Google Chrome (Safari si vous êtes riche et Yahoo si vous êtes un vieillard), affichera les pages HTML qui sont stocké sur un serveur.

Question D.4

Dans le code HTML les délimiteurs tels que <body> et </body> s’appellent ?

Réponses

A des bornes
B des balises
C des paragraphes
D des liens

Correction : Réponse B

Si vous avez suivi les cours d’NSI vous aurait eu juste à cette question.

Question D.5

Un fichier HTML contient la ligne suivante.
<p>Coucou ! Ca va?</p>
Quelle commande CSS écrire pour que le texte apparaisse en rose sur fond jaune ?

Réponses

A p { couleur: rose ; fond: jaune;}
B <p> { color = pink background-color = yellow}
C <p> { color = pink ; background-color: yellow} </p>
D p { color: pink ; background-color: yellow ;}

Correction : Réponse D
Si on respecte la syntaxe du css on peut déduire que c’est la réponse D.

Question D.6

Un élève a écrit une fonction javascript qui détermine la moyenne des valeurs entrées par l’utilisateur dans un
formulaire de sa page HTML.
Il place sa fonction javascript

Réponses

A entre la balise <js> et la balise </js>
B entre la balise <code> et la balise
C entre la balise <script> et la balise </script>
D entre la balise <javascript> et la balise </javascript>

Correction : Réponse C
Encore une question en rapport avec la syntaxe d’un language de programmation. Si tu avais répondu autre chose que la C ce n’est pas grave puisque le JavaScript c’est nul !

Thème E : architectures matérielles et systèmes d’exploitation

Question E.1

Le répertoire personnel de l’utilisateur contient deux répertoires tempo et sauve.
On souhaite déplacer le fichier bac.txt du repertoire tempo vers le répertoire sauve.
Quelle commande permet de réaliser ce déplacement ?

Réponses

A mkdir /tempo/bac.txt /sauve
B mkdir /sauve /tempo/bac.txt
C mv /tempo/bac.txt /sauve
D mv /sauve /tempo/bac.txt

Correction : Réponse C
La commande mv qui veut dire move ("bouger", pour ceux qui sont nul en anglais). On déplace le fichier bac.txt qui était dans le repertoire tempo dans le repertoire sauve.

Question E.2

Dans la console Linux, quelle commande faut-il exécuter pour effacer le fichier test0.csv ?

Réponses

A rm test0.cvs
B cp test0.csv
C ls test0.csv
D mv test0.csv

Correction : Réponse A
rm —>remove
cp —>copy
ls—>list
mv —>move
Si vous etes nul en anglais copier coller ces mots dans Google traduction.

Question E.3

Quel est le rôle de la commande shell ls ?

Réponses

A basculer en mode administrateur
B lister le contenu du répertoire courant
C donner un accès complet à un fichier
D effacer le contenu du répertoire courant

Correction : Réponse B
ls est une abreviation de "lister" en anglais. Vous l’auriez si vous avez eu une bonne note aux EC3.

Question E.4

L’adresse IP du site www.education.gouv.fr est 185.75.143.24.
Quel dispositif permet d’associer l’adresse IP et l’URL www.education.gouv.fr ?

Réponses

A un routeur
B un serveur DNS
C un serveur de temps
D un serveur Web

Correction : Réponse B
Le serveur DNS (Domain Name System, ou Système de noms de domaine en français) est un service dont la principale fonction est de traduire un nom de domaine en adresse IP. Maintenant que vous avez l’adresse IP du serveur du ministère vous pouvez surement le hacker et modifier les notes du BAC !

Question E.5

Que peut-on dire du système de fichiers, suite à l’exécution des commandes suivantes ?
% ls
entier.py flottant.py readme.md
% mkdir foo
% mv *.py foo

Réponses

A les fichiers entier.py, flottant.py, et foo ont été déplacés dans le répertoire de l’utilisateur
B l’utilisateur foo est propriétaire des fichiers entier.py et flottant.py
C le répertoire foo contient le résultat de l’exécution des deux fichiers entier.py et flottant.py
D le répertoire foo contient deux fichiers d’extension .py

Correction : Réponse D
Le *.py représente tous les fichiers python qu’on déplace (commande mv) vers le répertoire foo.

Question E.6

Dans un terminal sous Linux, à quoi sert la commande traceroute ?

Réponses

A à afficher un itinéraire routier entre deux villes
B c’est un synonyme pour la commande ping
C à afficher le chemin suivi par des paquets à travers un protocole IP
D à suivre pas à pas l’exécution d’un programme

Correction : Réponse C
Y’a vraiement trop de mots anglais... Ce QCM est plus un cours d’anglais que d’NSI.
Si vous avez choisi la réponse A je crois que vous devriez retourner en section L.

Thème F : Langages et Programmation

Question F.1
 
La fonction Python suivante ne calcule pas toujours correctement le résultat de 𝑥^y pour des arguments entiers.

  1. def puissance (x,y):
  2.  p = x
  3.  for i in range (y - 1):
  4.  p = p * x
  5.  return p

Télécharger

Parmi les tests suivants, lequel va permettre de détecter l’erreur ?
 
Réponses
 
A puissance(2,0)
B puissance(2,1)
C puissance(2,2)
D puissance(2,10)
 
Correction : Réponse A
 
C’est reparti pour du Python ! Ce programme est censé calculer l’exposant d’un nombre : x est le nombre, et y est l’exposant.
Comme on le sait depuis la quatrième, un nombre exposant 0 est TOUJOURS égal à 1.
Sauf, que il y a un problème, car si on entre puissance(2,0), le programme va nous renvoyer 0. Pourquoi ?

La ligne 4 du programme, p = p * x, revient à faire 2*2, dans le cas de la réponse A.

Et devinez quoi, 2*2 n’est pas égal à 1, mais bien à 4. Il faudrait donc rajouter une ligne à ce programme, permettant de renvoyer automatiquement 1 quand y=0.

Question F.2
 
On considère le code suivant :

  1. def puiss(y,x):
  2.  res = y
  3.  for i in range(x):
  4.  res = res*y
  5.  return res

Télécharger

Quelles sont les préconditions sur les arguments ?
 
Réponses
 
A Les arguments doivent être obligatoirement de type entier
B Les arguments peuvent être de type entier ou flottant
C Le type des arguments n’a pas d’importance
D Il n’y a pas de préconditions dans ce cas
 
Correction : Réponse A

Pour répondre à cette question, il faut bien comprendre le programme :

Ce programme est le même que le précédent, sauf que 1 est ajouté à l’exposant (Par exemple, si vous entrez puiss(2,3), le programme ne vous donnera pas 2^3, mais 2^4)

Ce code ne fonctionne donc pas avec du texte, mais marche parfaitement avec des entier.

Question F.3
 
On considère l’instruction suivante :

  1. resultat=[0]*7

Que contient la variable resultat après son exécution ?
 
Réponses
 
A 0
B [0]
C [[0],[0],[0],[0],[0],[0],[0]]
D [0,0,0,0,0,0,0]
 
Correction : Réponse D

Cette question, toute droit sortie des enfers, est infame.

Tout d’abord, la réponse A et B sont fausses : La A car ce n’est pas une liste, et la B car il n’y a qu’un seul 0, alors qu’il devrait en avoir sept.

La réponse C est assez bizarre. C’est une liste de liste, mais elle n’a rien a faire là, car on veut juste une liste simple

La réponse D est donc la bonne réponse.

Question F.4
 
On définit une fonction f de la façon suivante :

  1. def f(L,m):
  2. R = []
  3. for i in range(len(L)):
  4. if L[i] > m:
  5. R.append(L[i])
  6. return R

Télécharger

On définit L = [1, 7, 3, 4, 8, 2, 0, 3, 5].
Que vaut f(L,4) ?
 
Réponses
 
A [0, 7, 0, 0, 8, 0, 0, 0, 5]
B [0, 0, 0, 5]
C [7, 8, 5]
D []
 
Correction : Réponse C

Enfin une question simple !

Le programme sert a relever les éléments d’une liste qui sont plus grands que m.
Ici, m=4, donc le programme doit renvoyer tous les éléments de L qui sont plus grands que 4, soit 7,8 et 5.

Question F.5
 
Un programme Python commence par la ligne :

  1. import os

À quoi sert cette ligne ?
 
Réponses
 
A C’est le début du squelette de tout programme Python
B C’est la déclaration du système d’exploitation (operating system)
C Python 3.6 exige cette ligne au début de tout programme
D C’est la déclaration d’une bibliothèque (ou module) que le programme compte utiliser
 
Correction : Réponse D

Quand une ligne de code commence par "import", c’est que une bibliothèque va être utilisée.

C’est un peu court comme explication, mais il y a Affaire Conclue sur France 2 qui vient de commencer, et c’est vraiment très IMPORTant pour moi (humour).

Question F.6
 
On exécute le script Python suivant :

  1. def cube(a):
  2. a = a*a*a
  3. return a
  4. a = 2
  5. b = cube(a)

Télécharger

Que vaut le couple (a,b) à la fin de l’exécution
 
Réponses
 
A (8, 8)
B (8, 2)
C (2, 2)
D (2, 8)

 
Correction : Réponse D

Dans cette question, l’académie a décidé de nous faire voyager.
Nous avons, dans l’ordre, les Vosges, le Tarn et Garonne, les Cotes d’Armor, et l’Eure-et-Loire, avec son fameux musée du caoutchouc.

Premièrement, on sait que dans tout les cas, a=2.
Pour b, on sait que b=cube(a).
Le nom de la fonction est assez explicite, et il n’y a pas de piège, même la porte parole du gouvernement pourrait y arriver.

2 au cube est égale à 8, c’est donc le couple (2,8) et l’Eure-et-Loire qui remporte cette question.

Thème G : Algorithmique

Question G.1
 
On dispose en quantité illimité de pièces de 1 euro, 2 euros et 5 euros. On veut totaliser une somme de 18 euros.
Quelle est la solution donnée par l’algorithme glouton ?

Réponses
 
A [5, 5, 5, 2, 1]
B [5, 5, 5, 2, 2, 1]
C [5, 5, 2, 2, 2, 1, 1]
D [5, 2, 2, 2, 2, 1, 1, 1, 1, 1]

Correction : Réponse A

Ah, le tri. Comme dans la vraie vie, le tri c’est dur à faire, mais c’est bien utile.
La solution donnée par l’algorithme glouton doit être la plus optimisée possible :
Ici, la réponse la plus optimisée est celle ou le moins de pièces possible sont utilisées pour former 18€ en tout.
La bonne réponse est donc la A.

Question G.2
 
Quel est l’ordre de grandeur du coût du tri par insertion (dans le pire des cas) ?

Réponses
 
A L’ordre de grandeur du coût dépend de l’ordinateur utilisé
B Linéaire en la taille du tableau à trier
C Quadratique en la taille du tableau à trier
D Indépendant de la taille du tableau à trier

Correction : Réponse C

Dans le meilleur des cas, l’ordre de grandeur sera linéaire, dans le pire des cas quadratiques. Cette question est.... bizarre.
Et surtout, c"est à la frontière du programme de Première ...

Décidément, ce sujet 42 nous réserve des surprises.

Question G.3
 
Quelle est la valeur de "element" à la fin de l’exécution du code suivant :

  1. L = [1,2,3,4,1,2,3,4,0,2]
  2. element = L[0]
  3. for k in L:
  4. if k > element:
  5. element = k

Télécharger

Réponses
 
A 0
B 1
C 4
D 10

Correction : Réponse C

Ce type de question, on commence a avoir l’habitude. Ici, element va toujours prendre la valeur de l’élément le plus grand de la liste. C’est du tri par insertion.
La bonne réponse est donc la C, car 4 est le plus grand nombre de la liste.

Question G.4
 
La fonction ci-dessous permet d’effectuer une recherche par dichotomie de l’index m de l’élément x dans un tableau L de valeurs distinctes et triées.

  1. L = [1,2,3,4,1,2,3,4,0,2]
  2. def dicho(x,L):
  3. g = 0
  4. d = len(L)-1
  5. while g <= d:
  6. m = (g+d)//2
  7. if L[m] == x:
  8. return m
  9. elif L[m] < x:
  10. g = m+1
  11. else:
  12. d = m-1
  13. return None

Télécharger

Combien de fois la cinquième ligne du code de la fonction (m = (g+d)//2) sera-t-elle exécutée dans l’appel
dicho(32, [4, 5, 7, 25, 32, 50, 51, 60] ?

Réponses
 
A 1 fois
B 2 fois
C 3 fois
D 4 fois

Correction : Réponse C

Pour répondre à cette question, j’avoue que j’ai du recopier le script, et le modifier un peu, pour trouver le résultat.
Pour trouver la solution, on a qu’a rajouter une variable compteur=0 à la ligne 2, et rajouter compteur=compteur+1 dans la boucle qui nous intéresse. On rajoute un return compteur aprés le return m, et le tour est joué ! Ma variable compteur=3, donc la bonne réponse est la C.

Non, ce n’est pas de la triche. C’est une aide, comme dirait une famille célèbre de
Levallois Perret.

Question G.5
 
Quelle est la valeur de c à la fin de l’exécution du code suivant :

  1. L = [1,2,3,4,1,2,3,4,0,2]
  2. c = 0
  3. for k in L:
  4.  if k == L[1]:
  5.  c = c+1

Télécharger

Réponses
 
A 0
B 2
C 3
D 10

Correction : Réponse C

Courage, c’est la dernière ligne droite ! Pour souffler un peu, voila une question faisable : ce programme renvoie le nombre de fois qu’un nombre est dans une liste. Ici, il faut trouver le nombre de fois que L[1], ou 2, est dans la liste L.

Je pense que vous l’avez compris, pour répondre à cette question, il va falloir COMPTER.

Si on compte le nombre de fois ou 2 apparait dans la liste L, on trouve le chiffre 666, qui correspond à la réponse... Hein ?
Oups, je me suis surement trompé dans le compte. En fait, on compte 3 deux, ce qui correspond à la réponse C

Question G.6
 
La fonction suivante doit déterminer la valeur maximale d’un tableau de nombres passé en argument. Avec quelles expressions faut-il remplacer les pointillés du script suivant pour que la fonction soit correcte ?

  1. def maximum(T):
  2. maxi = T[0]
  3. n = len(T)
  4. for i in range(i, .....):
  5. if T[i] > maxi:
  6. maxi = ......
  7. return maxi

Télécharger

Réponses
 
A n puis T[i]
B n puis T[i-1]
C n-1 puis T[i]
D n-1 puis T[i-1]

Correction : Réponse C

On y est. La question 42. La réponse de la vie. Ce doit surement être une question incroyable, unique, sensationnelle...

Et bien non, c’est encore du Python et des listes. Dommage.

C’est encore un programme qui permet de trouver le maximum d’une liste qu’il faut décortiquer.
Premièrement, le premier blanc se complète obligatoirement par n-1, sinon, la boucle ne s’arrêterait jamais, et ferait planter le logiciel (ça sent le vécu). Ensuite, la variable maxi est égale au plus grand élément de la liste, donc si T[i ]> maxi, alors maxi = T[i]

La bonne réponse est donc la C.

Outro

Voici donc la fin de ce sujet 42. Si vous lisez ses lignes, vous n’êtes peut être pas prêt pour hacker la NASA, ni pour coder Google, mais vous pouvez vous vanter d’avoir compris le sujet 42.

Et ça, c’est inestimable.

Mission accomplished, jeune padawan.

Vous pouvez réagir ici :

En particulier si on s’est trompé ...