Aller au contenu

QCM premières - candidats libres 2022⚓︎

D'après Évaluation commune 2022

Voie générale - NSI - premières - 2 h 00

42 questions, rangées en 7 thèmes

Pas de calculatrice, ni de document

Thème A : types de base⚓︎

Question A.1

Soit \(n\) l'entier dont la représentation binaire en complément à deux, codée sur 8 bits est 0110 1110.

Quelle est la représentation binaire de \(-n\) ?

  • A : 0001 0001
  • B : 0001 0010
  • C : 1001 0001
  • D : 1001 0010
Réponse

✅ Réponse D

Méthode rapide :

  • \(n\) est strictement positif, donc \(-n\) est strictement négatif ainsi la représentation de \(-n\) commence par 1.

  • Avec le complément à deux un nombre et son opposé on le même bit de poids faible. Ici \(n\) est positif et pair, donc \(-n\) aura aussi le bit de poids faible à 0.

  • La seule réponse possible est D.

Méthode générale :

  • 0110 1110 : \(n\)
  • 1001 0001 : inversion des bits
  • 1001 0010 : ajout de 1
  • Réponse D

Question A.2

Quel est un avantage du codage UTF-8 par rapport au codage ASCII ?

  • A : Il permet de coder un caractère sur un octet au lieu de deux.
  • B : Il permet de coder les majuscules.
  • C : Il permet de coder tous les caractères.
  • D : Il permet de coder différentes polices de caractères.
Réponse

✅ Réponse C

UTF-8 (abréviation de l'anglais Universal Character Set Transformation Format - 8 bits) est un codage de caractères informatiques conçu pour coder l'ensemble des caractères du « répertoire universel de caractères codés », initialement développé par l'ISO dans la norme internationale ISO/CEI 10646, aujourd'hui totalement compatible avec le standard Unicode, en restant compatible avec la norme ASCII limitée à l'anglais de base, mais très largement répandue depuis des décennies.

❌ A : Un caractère ASCII se code sur 7 bits parmi les 8 d'un octet. Et non deux !

❌ B : Les majuscules font parties aussi bien des caractères codés avec ASCII que UTF-8.

C : Tous les caractères... que l'humanité peut inventer.

❌ D : Aucun rapport. Un même caractère codé en UTF-8 peut être affiché avec différentes polices de caractères.

Question A.3

Quelle est l'écriture décimale de l'entier dont la représentation en binaire sur 8 bits, non signée, est 0001 0101 ?

  • A : \(15\)
  • B : \(21\)
  • C : \(111\)
  • D : \(420\)
Réponse

✅ Réponse B

On part du bit de poids faible, et on somme les puissances de \(2\) qui correspondent au bits égaux à 1.

Puissances de \(2\) Comptée Total
\(1\) 1 → Oui \(1\)
\(2\) 0 → Non \(1\)
\(4\) 1 → Oui \(5\)
\(8\) 0 → Non \(5\)
\(16\) 1 → Oui \(21\)
\(32\) 0 → Non \(21\)
\(64\) 0 → Non \(21\)
\(128\) 0 → Non \(21\)

L'entier est \(21\).

Question A.4

Combien de bits faut-il au minimum pour coder le nombre décimal \(4085\) ?

  • A : \(4\)
  • B : \(12\)
  • C : \(2042\)
  • D : \(2043\)
Réponse

✅ Réponse B

❌ A : Avec \(4\) bits, on code \(2^4 = 16\) nombres distincts.

B : Avec \(8\) bits, on code \(256\) nombres différents. Avec \(9\) : \(512\), avec \(10\) : \(1024\), avec \(11\) : \(2048\), avec \(12\) : \(4096\) nombres différents. Ce qui suffit pour les nombres de \(0\) à \(4095\).

❌ C et D : on code des entiers bien plus grands sur autant de bits.

Question A.5

Soient a et b deux booléens. L'expression booléenne NOT(a AND b) OR a est équivalente à :

  • A : False
  • B : True
  • C : NOT(b)
  • D : NOT(a) OR NOT(b)
Réponse

✅ Réponse B

Trois méthodes.

1 (méthode du programme) Vérification avec une table de vérité.

  • (a, b) = (True, True), on a NOT(True AND True) OR True → False OR True → True
  • (a, b) = (True, False), on a NOT(True AND False) OR True → True OR True → True
  • (a, b) = (False, True), on a NOT(False AND True) OR True → True OR True → True
  • (a, b) = (False, False), on a NOT(False AND False) OR False → True OR False → True

L'expression est toujours égale à True.

2 (astuce) L'expression est égale à True quand a est True, ce qui élimine les réponses A, C et D qui peuvent être égale à False même quand a est égale à True.

3 (hors programme) Démonstration par étapes

  • NOT(a AND b) est égale à NOT(a) OR NOT(b) (loi de De Morgan)
  • ainsi e := NOT(a AND b) OR a est égale à NOT(a) OR NOT(b) OR a
  • par commutativité de OR, on a
  • e := a OR NOT(a) OR NOT(b), mais avec a OR NOT(a) égal à True, on obtient
  • e := True OR NOT(b) qui se réduit à
  • e := True

Question A.6

Quel est le nombre minimum de bits qui permet de représenter les \(7\) couleurs de l'arc-en-ciel ?

  • A : \(2\)
  • B : \(3\)
  • C : \(4\)
  • D : \(5\)
Réponse

✅ Réponse B

❌ A : Avec \(2\) bits, on code \(2^2 = 4\) nombres distincts. Cela ne suffit pas.

B : Avec \(3\) bits, on code \(2^3 = 8\) nombres distincts. Cela suffit.

❌ C : Avec \(4\) bits, on code \(2^4 = 16\) nombres distincts.

❌ D : Avec \(5\) bits, on code \(2^5 = 32\) nombres distincts.

Thème B : types construits⚓︎

Question B.1

On s'intéresse à la valeur 14 présente dans la liste Python suivante :

T = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19, 20]]

Quelle expression vaut 14 parmi les suivantes ?

  • A : T[2][3]
  • B : T[3][4]
  • C : T[3][2]
  • D : T[4][3]
Réponse

✅ Réponse A

Avec Python, les indices de liste commencent à \(0\).

  • [11, 12, 13, 14, 15] est l'élément d'indice 2 de T, c'est T[2]
  • 14 est l'élément d'indice 3 de cette liste.
  • C'est T[2][3] qui vaut 14.

Question B.2

Après avoir défini en Python :

m = [[1, 2, 3], [4, 5, 6]]

Laquelle des quatre expressions suivantes a la valeur 4 ?

  • A : m[0][1]
  • B : m[1][0]
  • C : m(0, 1)
  • D : m(1, 0)
Réponse

✅ Réponse B

  • m[1] renvoie [4, 5, 6]
  • m[1][0] renvoie le premier élément 4

  • m[0][1] renvoie 2

  • m(0, 1) et m(1, 0) provoquent une erreur ; m n'est pas une fonction.

Question B.3

Après avoir défini en Python :

d = {'tigre': 'félin', 'tortue': 'reptile', 'renard': 'canidé'}

Laquelle des quatre expressions suivantes est correcte ?

  • A : d['tortue']
  • B : d['reptile']
  • C : d['tortue': 'reptile']
  • D : d[1]
Réponse

✅ Réponse A

d est un dictionnaire Python qui possède 3 clés : 'tigre', 'tortue' et 'renard'.

A : d['tortue'] renvoie la valeur associée 'reptile'

❌ B : provoque une erreur. 'reptile' n'est pas ici une clé.

❌ C : provoque une erreur. On attend seulement une clé dans les crochets.

❌ D : provoque une erreur. 1 n'est pas ici une clé.

Question B.4

On définit en Python :

notes = [('Toto', 20), ('John', 12), ('Johnny', 2), ('Superman', 16)]

Quelle est l'expression donnant la note de Superman ?

  • A : notes[4][2]
  • B : notes[3][1]
  • C : notes[Superman]
  • D : notes['Superman']
Réponse

✅ Réponse B

❌ A : provoque une erreur. 4 n'est pas un indice valide pour notes

B : notes[3] est le dernier tuple de la liste, dont l'élément d'indice 1 est bien la note de Superman.

❌ C : provoque une erreur, sauf si Superman est une variable associée à un entier de \(0\) inclus à \(4\) exclu.

❌ D : provoque une erreur. notes n'est pas un dictionnaire, on attend un indice, pas une clé.

Question B.5

Quelle est l'expression qui a pour valeur la liste [1, 4, 9, 16, 25, 36] ?

  • A : {n*n for n in range(1, 7)}
  • B : {n*n for n in range(6)}
  • C : [n*n for n in range(1, 7)]
  • D : [n*n for n in range(6)]
Réponse

✅ Réponse C

On reconnait la liste des carrés de \(n\), pour \(n\) allant de \(1\) inclus à \(7\) exclu.

❌ A et B : provoquent une erreur. On peut définir une dictionnaire par compréhension, mais il faut fournir une clé et une valeur.

C : le premier carré est \(1^2=1\), le dernier carré est \(6^2=36\).

❌ D : le premier carré est \(0^2=0\), le dernier carré est \(5^2=25\).

Question B.6

On considère le script Python suivant :

🐍 Script Python
t = [2, 8, 9, 2]
t[2] = t[2] + 5

Quelle est la valeur de t à la fin de son exécution ?

  • A : [2, 13, 9, 2]
  • B : [2, 8, 14, 2]
  • C : [7, 13, 14, 7]
  • D : [7, 13, 9, 2]
Réponse

✅ Réponse B

La valeur d'indice \(2\) de t est initialement de 9, elle augmente de 5 pour passer à 14.

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

Question C.1

On définit ainsi une liste t puis une liste r :

🐍 Script Python
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'},
]

r = [c for c in t if c['age'] > 30 and c['sejour'] == 'ISTANBUL']

Combien la liste r contient-elle d'éléments ?

  • A : \(0\)
  • B : \(1\)
  • C : \(2\)
  • D : \(3\)
Réponse

✅ Réponse B

r est une liste en compréhension qui filtre les éléments de t qui sont des dictionnaires.

Seul le dictionnaire {'id':4, 'age':41, 'sejour':'ISTANBUL'} passe le filtre.

Il n'y a donc qu'un seul élément dans r ; ce dictionnaire.

Question C.2

Soit le tableau Python défini de la manière suivante :

tableau = [[1, 3, 4], [2, 7, 8], [9, 10, 6], [12, 11, 5]]

On souhaite accéder à la valeur 12, on écrit pour cela :

  • A : tableau[4][1]
  • B : tableau[1][4]
  • C : tableau[3][0]
  • D : tableau[0][3]
Réponse

✅ Réponse C

[12, 11, 5] est l'élément d'indice 3 de tableau.

12 est l'élément d'indice 0 de ce tableau.

Question C.3

On considère l'extraction suivante d'une base de données des départements français. Cette extraction a ensuite été sauvegardée dans un fichier texte.

📋 Texte
"1","01","Ain","AIN","ain","A500"
"2","02","Aisne","AISNE","aisne","A250"
"3","03","Allier","ALLIER","allier","A460"
"4","04","Alpes-de-Haute-Provence","ALPES-DE-HAUTE-PROVENCE","alpes-de-haute-
provence","A412316152"
"5","05","Hautes-Alpes","HAUTES-ALPES","hautes-alpes","H32412"

Quel est le format de ce fichier ?

  • A : YML
  • B : XML
  • C : CSV
  • D : JSON
Réponse

✅ Réponse C

Ces quatre formats permettent d'enregistrer des données.

  • ❌ A, YML : données élaborées, format lisible
  • ❌ B, XML : données élaborées, format très peu lisible
  • ✅ C, CSV : données simples, format lisible
  • ❌ D, JSON : données élaborées, format peu lisible

YAML

YAML, acronyme de Yet Another Markup Language dans sa version 1.01, devient l'acronyme récursif de YAML Ain't Markup Language (« YAML n'est pas un langage de balisage ») dans sa version 1.12, est un format de représentation de données par sérialisation Unicode. Son objectif est de représenter des informations plus élaborées que le simple CSV en gardant cependant une lisibilité presque comparable, et bien plus grande en tout cas que du XML.

XML

L'Extensible Markup Language, généralement appelé XML, « langage de balisage extensible » en français, est un métalangage informatique de balisage générique qui est un sous-ensemble du Standard Generalized Markup Language (SGML). Sa syntaxe est dite « extensible » car elle permet de définir différents langages avec pour chacun son vocabulaire et sa grammaire, comme XHTML, XSLT, RSS, SVG... Elle est reconnaissable par son usage des chevrons (<, >) encadrant les noms des balises.

CSV

Comma-separated values, connu sous le sigle CSV, est un format texte ouvert représentant des données tabulaires sous forme de valeurs séparées par des virgules. Ce format n'a jamais vraiment fait l'objet d'une spécification formelle.

JSON

JavaScript Object Notation (JSON) est un format de données textuelles dérivé de la notation des objets du langage JavaScript. Il permet de représenter de l'information structurée comme le permet XML par exemple.

Question C.4

Laquelle de ces listes de chaines de caractères est triée en ordre croissant ?

  • A : ['8', '12', '142', '21']
  • B : ['8', '12', '21', '142']
  • C : ['12', '142', '21', '8']
  • D : ['12', '21', '8', '142']
Réponse

✅ Réponse C

Les chaines de caractères sont rangées par ordre lexicographique.

❌ A, B : '8' n'est pas inférieur à '12'

C : valide

  • '2' < '4' donc '12 < '142'
  • '1' < '2' donc '142' < '21'
  • '2' < '8' donc '21' < '8'

❌ D : '8' n'est pas inférieur à '142'

Question C.5

On exécute le code suivant :

🐍 Script Python
a = [5, 4, 3, 4, 7]
a.append(4)

Quelle est la valeur de la variable a à la fin de cette exécution ?

  • A : 2
  • B : [4, 4]
  • C : [5, 4, 3, 4, 7, 4]
  • D : True
Réponse

✅ Réponse C

La méthode append ajoute un élément à la fin d'une liste.

Question C.6

Quelle est la valeur de la variable table à la fin de l'exécution du script suivant :

🐍 Script Python
table = [[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]
table[1][2] = 5
  • A : [[1, 5, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]
  • B : [[1, 2, 3], [5, 2, 3], [1, 2, 3], [1, 2, 3]]
  • C : [[1, 2, 3], [1, 2, 5], [1, 2, 3], [1, 2, 3]]
  • D : [[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 5, 3]]
Réponse

✅ Réponse C

❌ A : Cela aurait été table[0][1] = 5 en deuxième instruction.

❌ B : Cela aurait été table[1][0] = 5 en deuxième instruction.

C : Correct.

❌ D : Cela aurait été table[3][1] = 5 en deuxième instruction.

Thème D : interactions entre l'homme et la machine sur le Web⚓︎

Question D.1

Quelle est la machine qui exécute un programme JavaScript inclus dans une page HTML ?

  • A : le serveur WEB qui contient la page HTML
  • B : la machine de l'utilisateur qui consulte la page HTML
  • C : un serveur du réseau
  • D : un routeur du réseau
Réponse

✅ Réponse B

JavaScript s'exécute en local, sur la machine de l'utilisateur qui consulte une page HTML.

Question D.2

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

  • A : des bornes
  • B : des balises
  • C : des paragraphes
  • D : des liens
Réponse

✅ Réponse B

Question D.3

On considère cet extrait de fichier HTML représentant les onglets d'une barre de navigation :

HTML
<ul id="tab-nav">
<li><a href="onglet1.html" class="tab-nav-active">Onglet 1</a></li>
<li><a href="onglet2.html">Onglet 2</a></li>
<li><a href="onglet3.html">Onglet 3</a></li>
</ul>

Quel code CSS permet de mettre en bleu la couleur de fond des onglets et uniquement eux ?

  • A : tab-nav a { background-color : blue; }
  • B : tab-nav, a { background-color : blue; }
  • C : #tab-nav a { background-color : blue; }
  • D : #tab-nav, a { background-color : blue; }
Réponse

✅ Réponse C

tab-nav est un ID, il faut donc un # devant pour le repérer.

Ensuite

  • sel1 sel2 désigne les éléments de type sel2 dans la descendance de sel1.
  • sel1, sel2 désigne les éléments sel1 et les sel2 sans relation de descendance entre les uns et les autres.

CSS Selector Reference

Question D.4

onmouseover est une méthode JavaScript qui permet de traiter un évènement de quel type ?

  • A : l'appui d'une touche du clavier
  • B : un clic sur un bouton de souris
  • C : un mouvement de la souris
  • D : le survol par la souris d'un élément de la page
Réponse

✅ Réponse D

Les principaux évènements JavaScript sont :

Évènements souris

  • onclick : cliquer
  • ondblclick : double clique
  • onmouseover : au survol d'un élément html
  • onmouseout : quitter le survol d'un élément html
  • onmousedown : enfoncer le clique gauche (sans relâcher)
  • onmouseup : relâcher le clique gauche
  • onmousmove : bouger la souris sur un élément

Évènements clavier

  • onkeydown : enfoncer une touche du clavier (sans relâcher)
  • onkeyup : relâcher une touche du clavier
  • onkeypress : enfoncer - relâcher une touche du clavier

Évènements formulaire

  • onfocus : prendre le focus (rentrer dans la zone de saisie)
  • onblur : perdre le focus (sortir d'une zone de saisie)
  • onchange : changer la valeur d'un élément HML

Question D.5

Quel est le protocole utilisé pour accéder à la page https://www.domaine.gouv.fr/qcm.php?nom=Martin ?

  • A : HTTPS
  • B : HTTP
  • C : WWW
  • D : FTP
Réponse

✅ Réponse A

A : le S indique le protocole HTTP Sécurisé.

HTTP

L'Hypertext Transfer Protocol, généralement abrégé HTTP, littéralement « protocole de transfert hypertexte », est un protocole de communication client-serveur développé pour le World Wide Web. HTTPS (avec S pour secured, soit « sécurisé ») est la variante sécurisée par le chiffrement et l'authentification.

HTTP est un protocole de la couche application. Il peut fonctionner sur n'importe quelle connexion fiable. Dans les faits on utilise le protocole TCP comme couche de transport. Un serveur HTTP utilise alors par défaut le port 80 (443 pour HTTPS).

Les clients HTTP les plus connus sont les navigateurs Web. Il existe aussi des systèmes pour récupérer automatiquement le contenu d'un site tel que les aspirateurs de site Web et les robots d'indexation.

WWW

Le Web n'est qu'une des applications d'Internet, distincte d'autres applications comme le courrier électronique, la visioconférence et le partage de fichiers en pair à pair.

Ce n'est pas un protocole de transfert.

FTP

File Transfer Protocol (protocole de transfert de fichier), ou FTP, est un protocole de communication destiné au partage de fichiers sur un réseau TCP/IP. Il permet, depuis un ordinateur, de copier des fichiers vers un autre ordinateur du réseau, ou encore de supprimer ou de modifier des fichiers sur cet ordinateur. Ce mécanisme de copie est souvent utilisé pour alimenter un site web hébergé chez un tiers.

Question D.6

Charles veut accéder à son forum favori. Il saisit son adresse (URL) sur son navigateur Web, qui lui affiche une erreur 404.

Quel cas de figure n'explique pas sa situation ?

  • A : une mise à jour du serveur qui héberge le forum
  • B : une erreur de saisie de sa part
  • C : une panne de sa connexion internet
  • D : le forum qu'il veut consulter est censuré
Réponse

✅ Réponse C

❌ A, B, D : peut provoquer une erreur 404.

C : La page erreur 404 est proposée par le serveur distant, ainsi une panne de connexion internet ne permet pas de voir une telle page.

Dans le World Wide Web, l'erreur 404 signale que la ressource demandée, généralement une page Web, n'a pas été trouvée. Elle est souvent accompagnée d'un message avec les mots « pas trouvé » ou not found en anglais. Le numéro 404 est défini par la liste des codes du protocole de communication Hypertext Transfer Protocol (HTTP).

Il existe plusieurs causes possibles à cette erreur comme suivre un lien mort, car la ressource demandée a été supprimée ou placée à une autre adresse, ou encore l'adresse est mal saisie par l'internaute dans son navigateur Web ou par le webmaster lors de la conception de sa page.

Ce code peut aussi être détourné de son sens et renvoyé à la suite d'une restriction d'accès à certaines ressources web comme, par exemple, la censure.

Thème E : architectures matérielles et systèmes d'exploitation⚓︎

Question E.1

Lorsqu'un utilisateur lance une application, le système d'exploitation va l'ouvrir dans :

  • A : un espace disponible du disque SSD
  • B : un espace disponible du disque HDD
  • C : un espace disponible de la RAM
  • D : un espace disponible de la ROM
Réponse

✅ Réponse C

❌ A, B : un disque SSD ou HDD sert à stocker l'exécutable et les données d'une application. Lorsqu'elle est lancée, elle est placée en mémoire vive, dans la RAM.

C : les applications utilisateurs sont placées dans la RAM, sauf s'il n'y a plus de place, auquel cas des applications non ou peu utilisées peuvent être stockées sur un disque d'échange. Mais au lancement de l'application, c'est dans la RAM qu'elle est placée.

❌ D : La ROM reste en lecture seule, il s'agit de l'emplacement des applications internes au matériel ; ce n'est pas l'utilisateur qui les lance directement.

Question E.2

La commande chmod a-r mon_fichier

  • A : permet à tous (all en anglais) la lecture de mon_fichier
  • B : interdit à tous (all en anglais) la lecture de mon_fichier
  • C : permet à tous (all en anglais) l'écriture dans mon_fichier
  • D : interdit à tous (all en anglais) l'écriture dans mon_fichier
Réponse

✅ Réponse B

❌ A : +r donne le droit en lecture (r comme read)

B : -r enlève le droit en lecture (r comme read)

❌ C : +w donne le droit en écriture (w comme write)

❌ D : -w enlève le droit en écriture (w comme write)

Question E.3

Parmi les adresses suivantes, laquelle est une adresse Ethernet non valide ?

  • A : 8D:A9:D5:67:E6:F3
  • B : 8d:a9:d5:67:e6:f3
  • C : 8H:A9:D5:67:E6:F3
  • D : FF:A9:D5:67:E6:F3
Réponse

✅ Réponse C

Les 16 chiffres hexadécimaux sont 0-9 et A-F.

Le H dans 8H:... n'est pas un chiffre hexadécimal. Ce n'est donc pas le début d'une adresse Ethernet valide.

Par convention, on utilise des minuscules dans les adresses Ethernet.

Question E.4

On réalise une petite station météo.

Quel composant est un capteur ?

  • A : l'afficheur LCD
  • B : l'écran de l'ordinateur
  • C : la LED
  • D : le thermomètre
Réponse

✅ Réponse D

❌ A : LCD est un type d'écran à cristaux liquides ; un émetteur

❌ B : un écran est un émetteur d'information

❌ C : une LED est une diode électroluminescente ; un émetteur

D : un thermomètre est un capteur

Question E.5

Lequel de ces périphériques n'est pas un périphérique d'entrée ?

  • A : le moniteur
  • B : le clavier
  • C : la souris
  • D : le scanner
Réponse

✅ Réponse A

A : un moniteur est un écran, un périphérique de sortie

❌ B : un clavier est un périphérique d'entrée de texte

❌ C : une souris est un périphérique d'entrée de mouvements et de clics

❌ D : un scanner est un périphérique d'entrée d'image numérisée

Question E.6

Quel est l'effet de la commande shell suivante ?

cp NSI_ex1_Franck.txt NSI_ex1_Marie.txt

  • A : Le fichier NSI_ex1_Franck.txt est copié sous le nom NSI_ex1_Marie.txt
  • B : Le fichier NSI_ex1_Franck.txt est renommé sous le nom NSI_ex1_Marie.txt
  • C : Le fichier NSI_ex1_Marie.txt est copié sous le nom NSI_ex1_Franck.txt
  • D : Le fichier NSI_ex1_Marie.txt est renommé sous le nom NSI_ex1_Franck.txt
Réponse

✅ Réponse A

cp <source> <destination> est une commande de copie.

  • source doit être un nom de fichier (ou de plusieurs ...)
  • <destination> peut être un nom de fichier ou de répertoire.

Thème F : langages et programmation⚓︎

Question F.1

On définit deux fonctions :

🐍 Script Python
def f(x):
    y = 2*x + 1
    return y

def calcul(x):
    y = x - 1
    return f(y)

Quelle est la valeur renvoyée par l'appel calcul(5) ?

  • A : 4
  • B : 9
  • C : 11
  • D : 19
Réponse

✅ Réponse B

calcul(5) exécute

  • y = 5 - 1, donc y est associée à 4
  • return f(4), qui renvoie le résultat suivant

  • y = 2*4 + 1, donc 9.

Question F.2

Quel est le seul langage de programmation parmi les propositions suivantes ?

  • A : HTML
  • B : CSS
  • C : C++
  • D : WEB
Réponse

✅ Réponse C

❌ A : Le HyperText Markup Language, généralement abrégé HTML ou, dans sa dernière version, HTML5, est le langage de balisage conçu pour représenter les pages web. ⚠ Techniquement HTML5 est aussi un langage de programmation Turing complet, mais en première approximation, nous dirons que ce n'est pas un langage de programmation.

❌ B : Les feuilles de style en cascade, généralement appelées CSS de l'anglais Cascading Style Sheets, forment un langage informatique qui décrit la présentation des documents HTML et XML.

C : C++ est un langage de programmation compilé permettant la programmation sous de multiples paradigmes, dont la programmation procédurale, la programmation orientée objet et la programmation générique. Ses bonnes performances, et sa compatibilité avec le C en font un des langages de programmation les plus utilisés dans les applications où la performance est critique.

❌ D : Le World Wide Web (littéralement la « toile (d'araignée) mondiale », abrégé www ou le Web), la Toile mondiale ou la Toile, est un système hypertexte public fonctionnant sur Internet. Le Web permet de consulter, avec un navigateur, des pages accessibles sur des sites. L'image de la toile d'araignée vient des hyperliens qui lient les pages web entre elles. Le Web n'est qu'une des applications d'Internet, distincte d'autres applications comme le courrier électronique, la visioconférence et le partage de fichiers en pair à pair. Inventé en 1989-1990 par Tim Berners-Lee suivi de Robert Cailliau, c'est le Web qui a rendu les médias grand public attentifs à Internet. Depuis, le Web est fréquemment confondu avec Internet ; en particulier, le mot Toile est souvent utilisé dans les textes non techniques sans qu'il soit clair si l'auteur désigne le Web ou Internet.

Question F.3

Quelles sont les valeurs des variables x et y à la fin de l'exécution du script suivant :

🐍 Script Python
x = 4
while x > 0:
    y = 1
    while y < x:
        y = y + 1
        x = x - 1
  • A : l'exécution ne termine pas !
  • B : la valeur de x est 0, celle de y est 0
  • C : la valeur de x est 0, celle de y est 1
  • D : la valeur de x est -1, celle de y est 0
Réponse

✅ Réponse A

La valeur de x diminue plusieurs fois jusqu'à 1.

Ensuite la boucle intérieure s'exécute avec x = 1 et y = 1 juste avant.

Aucun tour de boucle intérieur n'est effectué ; aucune modification des variables ne se produit, et la boucle extérieure boucle à l'infini.

En détail, pour la boucle intérieure

  • avant y = 1 et x = 4 ; après y = 3 et x = 2
  • avant y = 1 et x = 2 ; après y = 2 et x = 1
  • avant y = 1 et x = 1 ; après y = 1 et x = 1 (sans instructions)
  • la même que précédemment, à l'infini...

Question F.4

La documentation de la bibliothèque random de Python précise que random.randint(a, b) renvoie un entier aléatoire \(n\) tel que \(a \leqslant n \leqslant b\).

Afin d'obtenir un entier choisi aléatoirement dans l'ensemble \(\{-4 ; -2 ; 0 ; 2 ; 4\}\), après avoir importé la bibliothèque random de Python, on peut utiliser l'instruction :

  • A : random.randint(0, 8) / 2
  • B : random.randint(0, 8) / 2 - 4
  • C : random.randint(0, 4) * 2 - 2
  • D : (random.randint(0, 4) - 2) * 2
Réponse

✅ Réponse D

❌ A : Cela donne 9 nombres possibles, de 0.0 à 4.0, avec un pas de 0.5

❌ B : Cela donne 9 nombres possibles, de -4.0 à 0.0, avec un pas de 0.5

❌ C : Cela donne 5 nombres possibles, de -2 à 6, avec un pas de 2

D : Cela donne 5 nombres possibles, de -4 à 4, avec un pas de 2

Question F.5

Quelle est la valeur de la variable n à la fin de l'exécution du script ci-dessous ?

🐍 Script Python
n = 1
for i in range(4):
    n = n + 2
  • A : 1
  • B : 8
  • C : 9
  • D : 18
Réponse

✅ Réponse C

On part de 1, on augmente 4 fois de 2.

On obtient donc \(1 + 4×2 = 9\)

Question F.6

La fonction suivante ne calcule pas toujours correctement le maximum des deux nombres donnés en argument.

On rappelle que abs(z) calcule la valeur absolue du nombre z.

🐍 Script Python
def maxi(x, y) :
    m = (x - y + abs(x + y)) // 2
    return m

Parmi les tests suivants, lequel va détecter l'erreur ?

  • A : maxi(3, -2)
  • B : maxi(2, 2)
  • C : maxi(3, 2)
  • D : maxi(2, 3)
Réponse

✅ Réponse D

❌ A : (3 - (-2) + abs(3 + (-2))) // 2 est égal à (3 + 2 + 1) // 2, soit 3

❌ B : (2 - 2 + abs(2 + 2)) // 2 est égal à (2 - 2 + 4) // 2, soit 2

❌ C : (3 - 2 + abs(3 + 2)) // 2 est égal à (3 - 2 + 5) // 2, soit 3

D : (2 - 3 + abs(2 + 3)) // 2 est égal à (2 - 3 + 5) // 2, soit 2 qui n'est pas le maximum attendu.

Thème G : algorithmique⚓︎

Question G.1

Une seule des affirmations suivantes est vraie :

  • A : L'algorithme des k plus proches voisins a pour but de déterminer les k plus proches voisins d'une observation dans un ensemble de données.
  • B : L'algorithme des k plus proches voisins a pour but de déterminer la classe d'une observation à partir des classes de ses k plus proches voisins.
  • C : L'algorithme des k plus proches voisins a pour but de déterminer dans un ensemble de données le sous-ensemble à k éléments qui sont les plus proches les uns des autres.
  • D : L'algorithme des k plus proches voisins a pour but de déterminer les éléments d'un ensemble de données appartenant à une même classe.
Réponse

✅ Réponse B

Cet algorithme détermine une classe pour une observation ; il permet de discriminer un élément parmi d'autres.

Question G.2

On décide d'effectuer une recherche dans un tableau trié contenant \(42\,000\) valeurs. On procède par dichotomie.

Le nombre maximal d'itérations de l'algorithme sera :

  • A : \(21\,000\), car une recherche dichotomique divise le nombre de tests maximal par deux.
  • B : \(42\,000\), car la valeur recherchée pourrait très bien être la dernière du tableau.
  • C : \(41\,999\), car si on n'a pas trouvé l'élément recherché à l'avant-dernière position du tableau, il n'est plus utile d'effectuer de test pour la dernière position.
  • D : \(16\), car à chaque itération, le nombre d'éléments à examiner est divisé par deux et que \(2^{15} \leqslant 42\,000 \leqslant 2^{16}\).
Réponse

✅ Réponse D

Si le tableau est trié, on test au milieu du tableau, par dichotomie.

Soit on a trouvé, soit on cherche dans un tableau deux fois plus petit.

On arrive, dans le pire des cas, au bout de \(16\) itérations à un tableau de taille 1 et la réponse attendue.

Question G.3

Pour pouvoir utiliser un algorithme de recherche par dichotomie dans une liste, quelle précondition doit être vraie ?

  • A : la liste doit être triée
  • B : la liste ne doit pas comporter de doublons
  • C : la liste doit comporter uniquement des entiers positifs
  • D : la liste doit être de longueur inférieure à 1024
Réponse

✅ Réponse A

A : la liste doit être triée, sinon, après avoir coupé en deux la valeur recherchée pourrait très bien être dans l'une ou l'autre moitié...

❌ B : Il peut y avoir des doublons.

❌ C : La liste peut comporter des nombres négatifs.

❌ D : La liste peut être aussi grande que la mémoire le permet.

Question G.4

Quelle est la valeur de X / m à la fin de l'exécution du code suivant :

🐍 Script Python
L = [1, 2, 3, 4, 1, 2, 3, 4, 0, 2]
X = 0
m = 0
for k in L:
    X = X + k
    m = m + 1
  • A : 2
  • B : 2.2
  • C : 10.0
  • D : 22
Réponse

✅ Réponse B

Ce script calcule la somme des valeurs dans X et leur effectif dans m, de quoi calculer la moyenne X / m égale à \(\frac{22}{10}\), d'où 2.2.

Question G.5

On définit la fonction f comme suit :

🐍 Script Python
def f(L):
    a = L[0]
    for x in L:
        if x < a:
            a = x
    return a

Quelle est la valeur renvoyée par l'appel f([7.0, 10.3, -4.0, 12.0, 7.0, 2.0, 0.7, -5.0, 14.0, 1.4]) ?

  • A : -5.0
  • B : 1.4
  • C : 7.0
  • D : 14.0
Réponse

✅ Réponse A

Cette fonction renvoie le minimum de la liste non vide L.

  • a est initialisé avec le premier élément.
  • À chaque tour de boucle, si un élément est plus petit que a, on le met à jour, il reste le minimum des éléments parcourus.

Question G.6

On considère la fonction suivante :

🐍 Script Python
def comptage(phrase, lettre):
    i = 0
    for j in phrase:
        if j == lettre:
            i = i+1
    return i

Que renvoie l'appel comptage("Vive l'informatique", "e") ?

  • A : 0
  • B : 2
  • C : 19
  • D : 'e'
Réponse

✅ Réponse B

Cette fonction réalise une boucle sans indice, sur les caractères de phrase et compte combien de caractères sont égaux à lettre.

Ici, on compte le nombre de 'e' dans "Vive l'informatique".