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. AnnulĂ©e en 2020, les E3C ont Ă©tĂ© renommĂ©es EC en 2021 et Ă©galement annulĂ©es.
Les sujets des années précédentes sont publics
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. Le candidat :
- gagne 3 points sâil choisit la bonne rĂ©ponse,
- perd 1 point sâil choisit une rĂ©ponse fausse,
- ne gagne ni ne perd aucun point 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 ?
c = False
if a==b:
c = True
if a > b+10:
c = True
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 C
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 premiĂšre 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
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.
Si vous ne les avez pas appris, il suffit dâappliquer la mĂ©thode :
0000 1100 = 12
1111 0011 On inverse les bits
1111 0100 Plus 1 !
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 :
inventaire = {'pommes': 430, 'bananes': 312,
'oranges' : 274, 'poires' : 137}
stock = 0
for fruit in inventaire.keys():
if fruit != 'bananes':
stock = stock + inventaire[fruit]
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 inrange(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 :
contacts = { 'Toto': 'toto@nsi.fr', 'Chloé': 'chloe@nsi.com',
'Paul': 'paul@nsi.net', 'Clémence': 'clemence@nsi.org' }
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 :
t = [ {'id':1, 'age':23, 'sejour':'PEKIN'},
{'id':2, 'age':27, 'sejour':'ISTANBUL'},
{'id':3, 'age':53, 'sejour':'LONDRES'},
{'id':4, 'age':41, 'sejour':'ISTANBUL'},
{'id':5, 'age':62, 'sejour':'RIO'},
{'id':6, 'age':28, 'sejour':'ALGER'}]
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.4 Picasso, la question explosive (jâassume pas cette blague alors je la cache (edit du migreur : c’est plus cachĂ© đ)
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 PAS(Ă©dit du migreur) 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.
def puissance (x,y):
p = x
for i in range (y - 1):
p = p * x
return p
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 :
def puiss(y,x):
res = y
for i in range(x):
res = res*y
return res
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 :
- 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 infĂąme.
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 :
def f(L,m):
R = []
for i in range(len(L)):
if L[i] > m:
R.append(L[i])
return R
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 :
Ă 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 :
def cube(a):
a = a*a*a
return a
a = 2
b = cube(a)
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 :
L = [1,2,3,4,1,2,3,4,0,2]
element = L[0]
for k in L:
if k > element:
element = k
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.
L = [1,2,3,4,1,2,3,4,0,2]
def dicho(x,L):
g = 0
d = len(L)-1
while g <= d:
m = (g+d)//2
if L[m] == x:
return m
elif L[m] < x:
g = m+1
else:
d = m-1
return None
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 :
L = [1,2,3,4,1,2,3,4,0,2]
c = 0
for k in L:
if k == L[1]:
c = c+1
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 ?
def maximum(T):
maxi = T[0]
n = len(T)
for i in range(i, .....):
if T[i] > maxi:
maxi = ......
return maxi
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 :
Cet article a été écrit par des élÚves du lycée Louis Pasteur.
Ils étudiaient alors la spécialité NSI, en classe de 1Úre.
Promotion 2019 – 2020