Vous êtes sur la page 1sur 9

QCM et exercices de révision pour les élèves arrêtant la spécialité NSI

en première.
Pour chaque question, une seule réponse est correcte parmi les quatre proposées.

Question 1 : On considère le nombre 1000 écrit en base dix. Quelle affirmation est exacte ?
1. Ce nombre s’écrit AAA en hexadécimal
2. Ce nombre s’écrit avec neuf chiffre en binaire
3. Ce nombre s’écrit avec 3 chiffres en hexadécimal
4. L’écriture de ce nombre en binaire se termine par 001

Question 2 : Quelle affirmation est exacte ?


1. Un nombre occupe 8 fois moins de place en mémoire s’il est représenté par des octets plutôt
que par des bits.
2. Un nombre écrit en hexadécimal comporte 8 fois moins de chiffres que s’il est écrit en
binaire
3. Un nombre impair a une écriture binaire qui se termine par 1
4. Un nombre impair a une écriture hexadécimale qui se termine par 0.

Question 3 : Quelle est la valeur binaire de 1001 x 111 ?


1. 111111
2. 01111
3. 10110
4. 11110

Question 4 : Si on utilise 5 bits pour coder les entiers relatifs en complément à deux, comment est
codé le nombre -5 ?
1. 10010
2. 01011
3. 01110
4. 00111

Question 5 : L’expression 0.2+0.1 > 0.3 est vrai en python. Quelle en est la raison ?
1. C’est une erreur de la machine
2. C’est parce-que la machine n’utilise que 32 bits pour coder les flottants
3. C’est parce-que 0.1 ne peut pas être représenté en flottant de manière exacte.
4. C’est parce-que > signifie ≥ pour l’interpréteur python

Exercice 1
On utilise 9 bits pour coder les entiers relatifs.
1. Combien de nombre peut-on coder et lesquels. (Vous schématiserez la figure représentant
le complément à deux sur 9 bits pour répondre à la question)
2. Comment est alors codé le nombre 49 ?
3. Comment est codé le nombre -122 ?

Exercice 2 : le bug de l’an 2038


Les machines UNIX suivent la norme IEEE 1003 (ou norme POSIX) qui spécifie, entre autres, que le
temps est compté en secondes à partie du 1er janvier 1970 à 00 :00 :00 temps universel. De
nombreux systèmes de fichiers codent ce temps en entier signé 32 bits (le signe permet de désigner
des dates antérieures à 1970)
Expliquer pourquoi parle-t-on de bug de l’an 2038 ? Justifiez votre réponse par un calcul.

Question 6 : On considère le tuple t=(3,5,1). Qu’obtient-on après l’instruction t[2]=8


1. La valeur de t est t=(8,5,1)
2. La valeur de t est t=(3,8,1)
3. La valeur de t est t=(3,5,8)
4. Une erreur
Question 7 : On considère l’instruction a= 5,2+1,3==0,5 . Quelle est la valeur de a ?
1. False, c’est lié à la représentation en flottants
2. False, cela revient à écrire a= (5,2+1,3==0,5), donc a = False
3. (5,3,False,5), a est du type tuple
4. L’écriture de l’instruction provoque une erreur
Exercice 3
Le script suivant est incomplet. La valeur des variables à la fin du script sont données dans le
tableau. Remplacer les ? par x ou y ou z, et donner la valeur de z.
Script :
Tableau
x=3
y=5 Variable Valeur à la fin du script
z= ? x 5
x= ? y 3
y= ? z …

Question 8 : On dispose d’une liste L=[15,17,12,23]. Après l’instruction L[2]=25 la liste L a pour
valeur :
1. L=[15,17,25,23]
2. L=[15,25,12,23]
3. L=[15,17,25,12,23]
4. L=[15,25,17,12,23]

Question 9 : On dispose d’une liste L=[[1,2,3],[4,5,6],[7,8,9]]. La valeur L[1][0] est :


1. 2
2. 4
3. 6
4. 8

Question 10 : Après l’instruction L=[[i,i] for i in range (0,2)], la valeur de L est :


1. [[0,1],[1,2]]
2. [[0,0],[1,1]]
3. [0,1,1,2]
4. [0,0,1,1]

Question 11 : On construit une variable matrice avec le code suivant :


matrice = [3*[0] for i in range (0,3)]
for i in range (0,3):
matrice[i][i]= i + 1
matrice[0][i]= matrice[0][i] + i + 1
matrice[i][2] = matrice[i][2] + i + 1
Quel est le résultat obtenu
1. [[1,2,4],[0,2,2],[0,0,6]]
2. [[2,2,4],[0,2,2],[0,0,4]]
3. [[1,2,4],[0,2,4],[0,0,6]]
4. [[2,2,4],[0,2,2],[0,0,6]]

Question 12 : Parmi les termes suivants lequel n’est pas une méthode d’un dictionnaire ?
1. data
2. items
3. keys
4. values
Question 13 : On considère le code Python :
def f() :
liste1.append(2)
liste2=liste1 + [3]
liste1=[0,1]
liste2=[0,1]
f()
Quel résultat obtient-on après l’appel f() ?
1. La liste liste1 a pour valeur [0,1,2] et la liste liste2 a pour valeur [0,1,2,3]
2. La liste liste1 a pour valeur [0,1,2] et la liste liste2 a pour valeur [0,1,3]
3. La liste liste1 a pour valeur [0,1,2] et la liste liste2 a pour valeur [0,1]
4. La liste liste1 a pour valeur [0,1] et la liste liste2 a pour valeur [0,1]
Question 14 : Considérons un dictionnaire d={″if″ : ″si″,″yes″ : ″oui″,″no″ : ″non″} et le code suivant :
for c in d.values:
print(c)
Qu’ obtient-on dans l’interpréteur ?
1. L’affichage de if, yes et no
2. L’affichage de si, oui et non
3. L’affichage des couples (‘if’,’si’),(‘yes’,’oui’), (‘no’,’non’)
4. Une erreur
Question 15 : La chaine de caractère ch a pour valeur ″123456789″. Quelle est la valeur de
l’expression ch[5]+ch[8]
1. 13
2. 15
3. ‘69’
4. ‘58’
Question 16 : Quelle est la valeur affichée à l’exécution du programme python suivant ?
x=1
for i in range(3,10) :
x=x*2
print(x)
1. 64
2. 256
3. 7
4. 128
Question 17 : Avec la définition de la fonction f suivante en Python, quelle est la valeur retournée par
l’appel f(21,23)
def f(x,y) :
if x > y :
return y,x
else :
return x,y
1. (21,21)
2. (21,23)
3. (23,21)
4. (23,23)
Question 18 : Avec la variable alphabet définie par l’affectation suivante, quelle est l’expression
Python permettant d’accéder à la lettre J ?
alphabet=[‘A’,’B’,’C’,’D’,’E’,’F’,’G’,’H’,’I’,’J’,’K’,’L’,’M’,’N’,’O’,’P’,’Q’,’R’,’S’,’T’,’U’,’V’,’W’,’X’,’Y’,’Z’]
1. alphabet[8]
2. alphabet[9]
3. alphabet[‘J’]
4. alphabet.J
Exercice 4 :
On modélise des informations (nom,taille,poids) sur des Pokémons de la façon suivante :
exemple_pokemons = {
‘Bulbizarre’ : (70,7),
‘Herbizarre’ : (100,13),
‘Abo’ : (200,7),
‘Jungko’ : (170,52) }
Par exemple , Bulbizarre est un Pokémon qui mesure 70 cm et pèse 7 kg.
1. Quel est le type de exemple_pokemons ?
2. Quelle instruction permet d’ajouter à cette structure de données le Pokémon Goupix qui
mesure 60 cm et qui pèse 10 kg ?
3. On donne le code suivant :
def le_plus_grand(pokemons) :
grand = None
taille_max = None
for (nom,(taile,poids)) in pokemons.items() :
if taille_max is None or taile > taille_max :
taille_max = taille
grand = nom
return (grand,taille_max)
a. Quelle est la valeur de le_plus_grand(exemple_pokemons) ?
b. Ecrire le code d’une fonction le_plus_leger qui prend des Pokemons en paramètre et renvoie
un tuple dont la première composante est le nom du Pokemon le plus léger et la deuxième
composante est son poids.
Exemple : print(le_plus_leger(exemple_pokemons)) renvoie (‘Bulbizarre’,7)
4. Ecrire le code d’une fonction taille qui prend en paramètre un dictionnaire de Pokémons ainsi
que le nom d’un Pokémon, et qui renvoie la taille de ce Pokémon.

Question 19 : Dans la définition suivante de la fonction somme en Python, quelle est l’instruction à
ajouter pour que la valeur retournée par l’appel somme([10,11,12,13,14]) soit 60 ? .
def somme(tab) :
s=0
for i in range (len(tab)):
….
return s
1. s=tab[i]
2. tab[i]=tab[i] + s
3. s=s + tab[i]
4. s=s + i
Question 20 : Quel est le résultat de l’évaluation de l’expression Python suivante ?
[n**2 for n in range(10)]
1. [0,1,4,9,16,25,36,49,64,81]
2. [0,1,4,9,16,25,36,49,64,81,100]
3. [0,2,4,8,16,32,64,128,256,512]
4. [0,2,4,8,16,32,64,128,256,512,1024]
Question 21 : Quelle expression Python permet d’accéder au numéro de téléphone de Dupond,
sachant que le répertoire a été défini par l’affectation suivante :
repertoire =[{‘nom’ : ’Dupont’, ‘tel’ :’5234’}, {‘nom’ : ‘Tournesol’, ‘tel’ : ‘5248’},
{‘nom’ : ‘Dupond’, ‘tel’ : ‘3452’}]
1. repertoire[‘tel’][2]
2. repertoire[‘Dupond’]
3. repertoire[‘Dupond’][‘tel’]
4. repertoire[2][‘tel’]
Question 22 : Quelle est l’expression manquante dans le programme Python suivant, pour que son
exécution affiche le numéro Tournesol ?

repertoire =[{‘nom’ : ’Dupont’, ‘tel’ :’5234’}, {‘nom’ : ‘Tournesol’, ‘tel’ : ‘5248’},


{‘nom’ : ‘Dupond’, ‘tel’ : ‘3452’}]
for i in range(len(repertoire)):
if ….. :
print(repertoire[i][‘tel’]
1. repertoire[i] == ‘Tournesol’
2. repertoire[‘nom’] == ‘Tournesol’
3. repertoire[i][‘nom’] == ‘Tournesol’
4. nom == ‘Tournesol’
Question 23 : la fonction indice_maxi ci-dessous doit rechercher l’indice de la valeur maximale
présente dans une liste de nombres et le renvoyer.
Dans le cas où cette valeur maxiamle est présente plusieurs fois, c’est le plus petit de ces indices qui
doit être renvoyé.
def indice_maxi(liste) :
valeur_max=liste[0]
indice=0
for i in range (len(liste)) :
if liste[i] > valeur_max :
indice = i
return indice
Cette fonction a été mal programmée. On souhaite mettre en évidence son incorrection par un test
bien choisi. Quelle valeur de test mettra l’erreur en évidence ?
1. [1,2,3,4]
2. [4,3,2,1]
3. [1,3,3,2]
4. [1,1,1,1]
Question 24 : Quelle est la valeur de la variable ,image après exécution du programme Python
suivant :
image=[[0,0,0,0], [0,0,0,0], [0,0,0,0], [0,0,0,0]]
for i in range (4) :
for j in range(4) :
if (i+j) == 3 :
image[i][j] = 2
1. [[0, 0, 0, 2], [0, 0, 2, 2], [0, 2, 2, 2], [2, 2, 2, 2]]
2. [[0, 0, 0, 2], [0, 0, 0, 2], [0, 0, 0, 2], [0, 0, 0, 2]]
3. [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [2, 2, 2, 2]]
4. [[0, 0, 0, 2], [0, 0, 2, 0], [0, 2, 0, 0], [2, 0, 0, 0]]

Question 25 : On considère le code suivant :


def f(t) :
for i in range(len(t)//2) :
t[i] , t[-i-1] = t[-i-1] , t[i]
Après les lignes suivantes :
t=[2,3,4,5,7,8]
f(1)
Quelle est la valeur de t ?
1. [2,3,4,5,7,8]
2. [5,7,8,2,3,4]
3. [8,7,5,4,3,2]
4. [4,3,2,8,7,5]
Exercice 5
Le 2 mai 2020, un groupe d’amis organise un grand pique-nique sur les bords du Vidourle pour fêter la
fin du confinement. Ce dernier aura lieu le 9 mai. Ils décident que chacun d’entre eux doit convaincre,
le lendemain, trois amis d’y participer avec ce message : « viens avec ta glacière sur les rivages du
Vidourle le 9 mai à midi à Marsillargues. Tu dois convaincre, demain, trois de tes amis (non déjà
invités !:) à nous rejoindre en leur transférant ce message. »
Chaque ami remplit parfaitement sa mission, les dernières invitations étant envoyées (et reçues) le 9
au matin.
1ère partie
Le 9 mai à midi, tout le monde est présent.
1.a Si on suppose que 5 amis sont à l’origine de cet évènement, vérifies que dans ce cas, il y a 16400
glacières le long de la rivière. Justifie ta réponse par un calcul simple.
1.b Combien y aurait-il de glacières le long de la rivière si et seulement si 3 amis étaient à l’origine de
cet évènement.
2 On veut écrire une fonction nombre_glacieres(nombre_amis) qui calcule le nombre de glacières le
long de la rivière à partir du nombre d’amis à l’origine de l’évènement.
On donne le code mélangé de cette fonction, à vous de le remettre dans l’ordre.
nombre= nombre + nombre_invitations
nombre=nombre_amis
def nombre_glacieres(nombre_amis) :
nombre_invitations=nombre_invitations*3
for jour in range (7)
return nombre
nombre_invitations=nombre_amis
2ème partie
Devant le succès de l’évènement, les amis se demandent combien d’invités se seraient déplacés s’ils
avaient organisé l’évènement un autre jour que le 9 mai. On veut écrire une fonction
nombre_glacieres(nombre_amis,nombre_jours) qui calcule le nombre de glacières le long de la rivière
à partir du nombre d’amis à l’origine de l’évènement et du nombre de jours qui sépare le 2 mai de la
date du piquenique.
Par exemple l’appel de la fonction nombre_glacieres à la ligne suivante :
nombre_glacieres(5,7) renvoie 16400
1. Quel est l’appel de la fonction qui permettrait de connaître le nombre total d’invités si 15 amis sont
à l’origine de l’évènement et si la date du pique-nique est le 16 mai ?
2. Modifie le code la fonction nombre_glacieres précédent pour obtenir le résultat demmndé.
3ème partie
Devant le succès phénoménal de l’évènement, les amis se demandent à quelle date il aurait fallu
organiser le pique-nique pour que le nombre total d’invités dépasse un milliard.
Ecrire une fonction nombre_jours(nombre_amis) qui détermine le nombre de jours nécessaires pour
que le nombre total d’invités dépasse un milliard. (nombre_amis est le nombre d’amis à l’origine de
l’évènement)

Question 26 : Complétez la table de vérité de la porte « OU » exclusif


E1 E2 S
0 0
0 1
1 0
1 1

Question 27 : Donnez la signification de l’instruction suivante écrite en assembleur :


SUB R2,R1,#34
1. Soustrait la valeur contenue dans R2 à celle contenue dans R1 et place le résultat dans la
case mémoire 34
2. Soustrait la valeur contenue dans la case mémoire 34 à la valeur contenue dans R1 et place le
résultat dans R2
3. Soustrait la valeur contenue dans R1 à la valeur 34 et place le résultat dans R2
4. Soustrait le nombre 34 à la valeur contenue dans R1 et place le résultat dans R2
Question 28 : Quelle affirmation est exacte ?
1. La mémoire RAM est une mémoire accessible en lecture seulement
2. La mémoire RAM est une mémoire accessible en écriture seulement
3. La mémoire RAM est une mémoire accessible en lecture et écriture
4. La mémoire RAM permet de stocker définitivement des données
Question 29 : Quel est le rôle de l’unité arithmétique et logique dans un processeur ?
1. Définir la base des opérations arithmétiques (binaire, octale, hexadécimale)
2. Gérer le contrôle interne du processeur
3. Réaliser des branchements
4. Effectuer des calculs
Question 30 : Lors de la demande d’une page web par un navigateur, plusieurs protocoles sont
utilisés. Quel est l’ordre d’utilisation ?
1. Ethernet, TCP, IP, HTTP
2. TCP, IP, Ethernet, HTTP
3. HTTP, Ethernet, TCP, IP
4. HTTP, TCP, IP, Ethernet
Question 31 : A partir du dossier ~/Doc/QCM, quelle commande permet de rejoindre le dossier
~/Hack/ReponsesQCM
1. cd ../../Hack/ReponsesQCM
2. cd Hack/ReponsesQCM
3. cd /~/Hack/Reponses QCM
4. cd /Hack/ReponsesQCM
Question 32 : Que permet la commande ping lancé sur un poste ?
1. de vérifier que l’on a accès à Internet ?
2. de connaître l’adresse Ethernet d’une autre machine
3. de tester l’accessibilité d’une autre machine à travers un réseau IP
4. de saturer le réseau avec des requêtes ICMP
Question 33 : on a l’adresse IP d’un appareil connecté sur un réseau sous la forme 192.168.1.12 avec
le masque de sous réseau : 255.255.255.223. Combien d’appareils peuvent être connectés sur ce
réseau ?
1. 62
2. 63
3. 64
4. 65
Aide : l’écriture binaire de 223 est 1101 1111
Question 34 : Dans un réseau de classe A, quel est le masque de sous réseau par défaut ?
1. 255.255.255.0
2. 255.255.0.0
3. 255.0.0.0
4. 255.255.240.0
Question 35 : La commande ls -l dans la console d’un terminal sous linux permet :
1. de lister les fichiers standards du répertoire courant
2. de lister les fichiers standards et cachés du répertoire courant
3. de lister les fichiers standards du répertoire courant puis de les supprimer de ce répertoire.
4. de lister les fichiers standards du répertoire courant et d’afficher des détails sur ces fichiers
comme son propriétaire ou des droits

Exercice 6 : Pour chacun des fichiers suivants, donner le nom de l’utilisateur auquel il appartient, les
droits qu’il a sur le fichier, ceux du groupe et des autres
-rwx------ 1 alice etu 43M 14 jui 11:55 fichier1
-rw-r--r-- 1 roza staff 54K 14 jui 11:56 fichier2
-rwx--x--x 1 bob admin 3M 14 jui 11 :57 fichier3
-r-xr----- 1 john john 1B 14 jui 11 :58 fichier4
Question 36 : Dans un terminal sous linux, on tape cd pour se placer dans HOME. Quelle commande
doit-on ensuite entrer pour déplacer dans le répertoire courant le fichier exo1.py qui se trouve dans
Documents/python/ en sachant que Documents est dans HOME ?
1. cp Documents/python/exo1.py ~
2. mv Documents/python/exo1.py /Documents/python/exo1.py
3. mv Documents/python/exo1.py ./Documents/python/exo1.py
4. rm Documents/python/exo1.py

Aide : le répertoire courant est le répertoire qui contient le dossier HOME

Question 37 : A désigne un entier, lequel des codes suivants ne se termine pas ?


1. 3.
i=A+1 i=A-1
while i<A : while i<A :
i=i-1 i=i-1
2. 4.
i=A+1 i=A-1
while i<A : while i<A :
i=i+1 i=i+1

Question 38 : Dans le quadrillage ci-dessous, 14 points sont dessinés, dont 7 de la classe C1 (avec des
ronds noirs) et 7 de la classe C2 (avec des losanges)

On introduit un nouveau point A, dont on cherche la classe à l’aide d’un algorithme des k plus
proches voisins pour la distance géométrique habituelle, en faisant varier la valeur de k parmi 1, 3 et
5.
Quelle est la bonne réponse (sous la forme d’un triplet (1,3,5) des valeurs de k) ?
1. C1,C2,C3
2. C2,C1,C2
3. C2,C2,C2
4. C2,C1,C1

Question 39 : Quel est le coût en temps dans le pire cas de l’algorithme du tri par insertion (pour une
liste de taille n) ?
1. Ɵ(n)
2. Ɵ(n.log(n))
3. Ɵ(n2)
4. Ɵ(2n)

Question 40 : Quel est le coût en temps dans le pire cas de l’algorithme du tri par sélection (pour une
liste de taille n) ?
1. Ɵ(n)
2. Ɵ(n.log(n))
3. Ɵ(n2)
4. Ɵ(2n)
Question 41 : En supposant que vous aviez une liste qui est presque déjà triée, quel algorithme de tri
utiliseriez-vous pour trier une telle liste ?
1. l’algorithme de tri par insertion
2. l’algorithme de tri par sélection
3. Aucun des deux, ils ont la même complexité quand la liste est presque déjà triée.
4. un autre algorithme, ceux-ci ne fonctionnent pas quand une liste est presque déjà triée.

Exercice 7 : On souhaite écrire une fonction qui prend en paramètre une liste et renvoie le second plus
petit élément de la liste. S’il n’y en a pas, la fonction devra renvoyer None.
Par exemple si la liste d’entrée est [4, 7, 1, -1, 3], la fonction devra renvoyer 1.
Si la liste d’entrée est [4], ou[ ] ou [3,3], la fonction devra renvoyer None
1. Ecrire l’algorithme « naïf » qui consiste à rechercher le plus petit élément, puis à recommencer la
recherche en retenant le plus petit élément qui soit différent du plus petit élément déjà trouvé.
2. Etudier la complexité en temps de votre algorithme, pour cela expliquer pour chaque étape le
nombre d’opérations effectué, puis indiquer la complexité en Ɵ.

Question 42 : Combien d’échanges effectue la fonction python suivante pour trier un tableau de 10
éléments au pire des cas ?
def tri(tab) :
for i in range (1, len(tab)) :
for j in range (len(tab) – i) :
if tab[j]>tab[j+1] :
tab[j],tab[j+1] = tab[j+1], tab[j]
1. 45
2. 100
3. 10
4. 55

Question 43 : Avec un algorithme de recherche par dichotomie, combien d’étapes sont nécessaires
pour déterminer que 43 est présent dans le tableau [1, 7, 12, 16, 18, 20, 24, 28, 35, 43, 69]
1. 1 étape
2. 2 étapes
3. 3 étapes
4. 4 étapes

Question 44 : Pour pouvoir utiliser un algorithme de recherche par dichotomie dans une liste, quelle
précondition doit être vraie ?
1. La liste de doit pas comporter de doublons
2. La liste doit comporter uniquement des entiers positifs
3. La liste doit être triée en ordre croissant
4. La liste doit être triée en ordre décroissant

Vous aimerez peut-être aussi