Fiche annale
Sujet zéro 2020 - QCM - Corrigé

Numérique et sciences informatiques
Épreuve de contrôle continu

Représentation des données : types de valeurs de base

Quel est l’entier positif codé en base $2$ sur $8$ bits par le code $0010\ 1010$ ?

3 42 21 84
  • Coder $(0010\ 1010)_2$ sur $8$ bits revient à additionner les puissances de $2$ correspondants à chaque bits valant $1$, c’est-à-dire :
    $=0\times 2^7 + 0\times 2^6 + 1\times 2^5 + 0\times2^4 + 1\times2^3+0\times 2^2+1\times2^1+0\times2^0$ $=0 + 0 + 32 + 0 + 8 + 0 + 2 + 0$
    $=42$
bannière astuce

Astuce

Pour revoir comment coder un nombre en binaire, dirigez-vous vers le cours Une machine à calculer : le bit, partie 3.

Quelle est la valeur affichée à l’exécution du programme Python suivant ?

x = 1

for i in range(10):

x = x * 2

print(x)

1024 2 20000000000 2048

Quel est l’entier relatif codé en complément à $2$ sur un octet par le code $1111\ 1111$ ?

-128 255 -127 -1
bannière astuce

Astuce

Le complément à $2$ d’un nombre binaire est le nombre obtenu en prenant son complément et en lui ajoutant $1$.
Pour réviser cette propriété, voir le cours Une machine à calculer : l’octet, partie 2.b.

Que peut-on dire sur ce programme Python de calcul sur les nombres flottants ?

x = 1.0

while x != 0.0:

x = -0.1

À la fin de l’exécution, la variable $x$ vaut $-0.000001$ L’exécution peut ne pas s’arrêter, si la variable $x$ n’est jamais égale exactement à $0.0$ À la fin de l’exécution, la variable $x$ vaut $0.000001$ L’exécution s’arrête sur une erreur FloatingPointError
bannière astuce

Astuce

Un algorithme doit se terminer à un moment, c’est pourquoi les séquences d’instructions se compensent notamment de boucles et de branchement conditionnels. Ici, avec la boucle de type while le nombre d’itération peut être indéterminé et nous avons donc un risque que l’algorithme ne se termine jamais.
Pour réviser la terminaison d’un algorithme, voir le cours Terminaison et complexité, partie 2.

Si $\text{A}$ et $\text{B}$ sont des variables booléennes, quelle est l’expression booléenne équivalente à $(\text{not\ A) \text{or B}}$ ?

$\text{(A and B)}$ $\text{or (not A or B)}$ $\text{or (not A or not B})$ $\textbf{(A and B)}$ $\textbf{or (not A or B)}$ $\text{(not A or B)}$ $\text{or (not A or not B)}$ $\text{(A or B)}$ $\text{or (not A or not B)}$
bannière astuce

Astuce

Pour réviser les lois de base de l’algèbre de Boole, voir le cours Une machine à calculer : le bit, partie 2.

Quelle est l’affirmation vraie concernant le codage UTF-8 des caractères ?

Le codage UTF-8 est sur $8$ bits Le codage UTF-8 est sur $8$ octets Le codage UTF-8 est sur $7$ bits Le codage UTF-8 est sur $1$ à $4$ octets
bannière astuce

Astuce

UTF-8 est le format unicode le plus célèbre, les caractères courants sont codés sur $8$ bits ($1$ octet) ou plus rares sur $4$ octets.
Pour réviser les différents formats, voir le cours Une machine électronique, partie 3.

Représentation des données : types construits

Avec la définition de fonction $\text{f}$ suivante en Python, quelle est la valeur retournée par l’appel $\text{f}(42, 21)$ ?

def f(x, y):

if x > y:

return y,x

else:

return x,y

$(21, 21)$ $(42, 21)$ $(21, 42)$ $(42, 42)$

Avec la variable alphabet définie par l’affectation suivante, quelle est l’expression Python permettant d’accéder à la lettre « E » ?

Alt texte

alphabet.E alphabet['E'] alphabet[5] alphabet[4]
bannière astuce

Astuce

Lorsque l’on compte les variables d’une liste, on commence toujours par $0$, donc, ici la variable « E » est positionnée au rang $4$.
Pour réviser le principe d’une liste, voir le cours Tableaux et matrices.

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

s = s + tab[i] s = tab[i] tab[i] = tab[i] + s s = s + i
  • Il faut effectuer une somme de chaque élément du tableau, donc à chaque tour de boucle il faut ajouter l’élément du tableau à la somme pour obtenir le résultat.

Quel est le résultat de l’évaluation de l’expression Python suivante ?

[n * n for n in range (10)]

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100] [0, 2, 4, 8, 16, 32, 64, 128, 256, 512] [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] [0, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024]
bannière astuce

Astuce

La fonction range() génère une liste de valeurs, ici $10$.
Pour réviser la notion de liste, voir le cours Tableaux et matrices, partie 3.

Comment peut-on accéder à la valeur associée à une clé dans un dictionnaire ?

On ne peut pas accéder à une valeur contenue dans un dictionnaire à partir d’une clé Il faut d’abord déchiffrer la clé pour accéder à un dictionnaire Il faut parcourir le dictionnaire avec une boucle à la recherche de la clé On peut y accéder directement à partir de la clé
bannière astuce

Astuce

L’accés aux éléments d’un dictonnaire se fait à partir d’une clé, si la clé n’existe pas une erreur survient.
Pour réviser la notion de dictionnaire, voir le cours Tableaux et matrices, partie 4.

Quelle est la valeur affichée à l’exécution du programme Python suivant ?

ports = {'http' : 80, 'imap' : 142, 'smtp' : 25}

ports = ['ftp'] = 21

print(ports['ftp'])

21 Key not found {'ftp' : 21} 3
  • La fonction print() écrit les valeurs des paramètres que nous lui fournissons, cela signifie qu’ici print(ports['ftp']) permet d’afficher la valeur de 'ftp' qui $21$.

Traitement de données en tables

Quelle expression Python permet d’accéder au numéro de téléphone de Tournesol, sachant que le répertoire a été défini par l’affectation suivante :

repertoire = [{'nom':'Dupont', 'tel':'5234}, {'nom':'Tournesol', 'tel':'5248'}, {'nom':'Dupont', 'tel':'3452'}]

repertoire ['Tournesol'] repertoire [1] ['tel'] repertoire ['tel'] [1] repertoire ['Tournesol'] ['tel']
  • Le liste comporte 3 dictionnaires numérotés de $0$ à $2$. On cherche donc le deuxième dictionnaire avec [1] , puis on récupère le numéro de téléphone avec l’éléments ['tel'].
bannière astuce

Astuce

Pour réviser la notion de liste et de dictionnaire, voir le cours Tableaux et matrices, partie 2 et 3.

Quelle est l’expression manquante dans le programme Python suivant, pour que son exécution affiche le numéro de Dupond ?

repertoire = [{'nom':'Dupont', 'tel':'5234'}, {'nom':'Tournesol', 'tel':'5248'}, {'nom':'Dupond', 'tel':'3452'}]

for i in range(len(repertoire)):

if … :

print(repertoire[i]['tel'])

repertoire['nom'] == 'Dupond' repertoire[i]['nom'] == 'Dupond' repertoire[i] == 'Dupond' repertoire ['Tournesol'] ['tel']

Laquelle de ces listes de chaînes de caractères est triée en ordre croissant ?

['Chat', 'Cochon', 'Cheval', 'Chien'] ['Cochon', 'Chat', 'Cheval', 'Chien'] ['Cheval', 'Chien', 'Chat', 'Cochon'] ['Chat', 'Cheval', 'Chien', 'Cochon']

Laquelle de ces listes de chaînes de caractères est triée en ordre croissant ?

['12', '142', '21', '8'] ['8', '12', '21', '142'] ['8', '12', '142', '21'] ['12', '21', '8', '142']
  • C’est une liste de chaînes de caractères, donc le programme prend les caractères dans l’ordre : $1$, puis $2$, puis $3$…

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] = 1

[[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]] [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [1, 1, 1, 1]] [[0, 0, 0, 1], [0, 0, 1, 1], [0, 1, 1, 1], [1, 1, 1, 1]] [[0, 0, 0, 1], [0, 0, 1, 0], [0, 1, 0, 0], [1, 0, 0, 0]]
  • Voici un tableau permettant de mieux comprendre le resultat :

$i \downarrow$ \ $j \rightarrow$ $0$ $1$ $2$ $3$
$0$ $0$ $0$ $0$ $1$
$1$ $0$ $0$ $1$ $0$
$2$ $0$ $1$ $0$ $0$
$3$ $1$ $0$ $0$ $0$

Lorsque $i+j=3$, alors l’image est égale à $1$.

bannière astuce

Astuce

Pour réviser la notion de matrice, voir le cours Tableaux et matrices, partie 3.d.

Quelle est la valeur de la variable table après exécution du programme Python suivant :

table = [12, 43, 6, 22, 37]

for i in range(len(table) - 1):

if table[i]>table[i+1]:

table[i],table[i+1] = table[i+1],table[i]

[6, 12, 22, 37, 43] [12, 6, 22, 37, 43] [43, 12, 22, 37, 6] [43, 37, 22, 12, 6]
bannière astuce

Astuce

Pour réviser le tri par selection, voir le cours Algorithmes sur tableaux, partie 2.

Interactions entre l'homme et la machine sur le Web

Parmi les balises HTML ci-dessous, quelle est celle qui permet à l’utilisateur de saisir son nom dans un formulaire en respectant la norme HTML ?

<input type="text"/> <input type="name"/> <select/> <form/>
bannière astuce

Astuce

Lors de la création de formulaire en HTML, celui-ci doit comporter certains éléments dont l’élément input de type text qui permet la saisie d’information, il est indispensable.
Pour réviser le principe d’un formulaire en HTML, voir le cours Interactions client-serveur, partie 3.

Parmi les propriétés suivantes d'une balise <button> dans une page HTML, laquelle doit être rédigée en langage JavaScript ?

La propriété name La propriété onclick La propriété type La propriété id
bannière astuce

Astuce

Pour revoir comment intégrer du JavaScript dans une page HTML, se diriger vers le cours Pages interactives, partie 1.b.

Quel est le nom de l’événement généré lorsque l’utilisateur clique sur un bouton de type button dans une page HTML ?

submit click mouse action

Lors de la consultation d’une page HTML, contenant un bouton auquel est associée la fonction suivante, que se passe-t-il quand on clique sur ce bouton ?

function action(event) {

this.style.color = "blue"

}

Le pointeur de la souris devient bleu quand il arrive sur le bouton Le texte de la page passe en bleu Le texte du bouton est changé et affiche maintenant le mot "bleu" Le texte du bouton passe en bleu
bannière astuce

Astuce

Pour revoir comment un événement crée avec JavaScript peut être interactif, se diriger vers le cours Pages interactives, partie 3.b.

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

Le serveur web sur lequel est stockée la page HTML La machine de l'utilisateur ou du serveur, selon la disponibilité de chacune La machine de l’utilisateur sur laquelle s'exécute le navigateur web La machine de l'utilisateur ou du serveur, suivant la confidentialité des données manipulées

Quelle méthode d'envoi des paramètres est-il préférable d'utiliser, pour un formulaire d’une page web, destiné à demander à l’utilisateur un mot de passe pour se connecter (le protocole utilisé est HTTPS) ?

La méthode PASSWORD La méthode CRYPT La méthode GET La méthode POST
bannière astuce

Astuce

Pour réviser la méthode POST, voir le cours Interactions client-serveur, partie 2.b.

Architectures matérielles et systèmes d'exploitation

Quel est le rôle de l'unité arithmétique et logique dans un processeur ?

Effectuer les calculs Réaliser les branchements Gérer le contrôle interne du processeur Définir la base des opérations arithmétiques (binaire, octale, hexadécimale)
bannière astuce

Astuce

Pour réviser le rôle d’un processeur, voir le cours Une machine programmable, partie 2.b.

Dans un réseau informatique, que peut-on dire de la transmission de données par paquets ?

Cela nécessite la réservation d’un chemin entre l’émetteur et le récepteur Cela garantit que toutes les données empruntent le même chemin Cela empêche l’interception des données transmises Cela assure une utilisation efficace des liens de connexion
bannière astuce

Astuce

Pour réviser le rôle de la transmission de données, voir le cours TCP et le bit alterné, partie 1.b.

Quelle est l’utilité de la commande ping dans un réseau informatique ?

Obtenir la route suivie par un paquet dans le réseau Tester si la connexion peut être établie avec une machine distante Mesurer les performances d'une machine distante Établir un réseau privé virtuel
bannière astuce

Astuce

Pour réviser les commandes relatives au réseau, voir le cours IP et le réseau local, partie 4.

Quel est l'effet de la commande shell suivante ?
% cd ..

Changer le répertoire courant vers le répertoire supérieur Copier le contenu du répertoire courant dans un répertoire caché Éjecter le CD Supprimer le répertoire courant
bannière astuce

Astuce

Pour réviser les commandes de base afin de manipuler les fichiers et les organiser, voir le cours Système d’exploitation et logiciel, partie 2.b.

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

Le répertoire foo contient le résultat de l’exécution des deux fichiers entier.py et flottant.py L’utilisateur foo est propriétaire des fichiers entier. py et flottant.py Le répertoire foo contient deux fichiers d'extension .py Les fichiers entier.py, flottant.py, et foo ont été déplacés dans le répertoire de l’utilisateur
  • Détail des commandes du code ci-dessus :
    ls : connaître le contenu du répertoire ;
    mkdir : créer un répertoire dans le répertoire courant, suivi du nom du répertoire à créer ; % mv *.py foo : déplacer des fichiers ou répertoires.
bannière astuce

Astuce

Pour réviser les commandes de base afin de manipuler les fichiers et les organiser, voir le cours Système d’exploitation et logiciel.

Parmi les dispositifs d’entrée et de sortie suivants, lequel est uniquement un capteur ?

Le thermomètre L’écran tactile La diode Le moteur pas à pas

Langages et programmation

Dans le programme JavaScript suivant, quelle est la notation qui délimite le bloc d'instructions exécuté à chaque passage dans la boucle while ?

i = 0

while (i < 10) {

alert(i)

i = i + 1

}

alert("Fin")

Les accolades Les instructions qui suivent le mot clé while Les instructions qui sont indentées de $4$ caractères Les parenthèses

La fonction suivante calcule la racine carrée du double d’un nombre flottant.

from math import sqrt

def racine_du_double(x):

return sqrt(2*x)

Quelle est la précondition sur les arguments de cette fonction ?

2 * x > 0 x < 0 sqrt(x) >= 0 x >= 0
bannière astuce

Astuce

Voici la liste des opérateurs de comparaison standards :

  • $<$ : inférieur ;
  • $>$ : supérieur ;
  • $==$ : égal ;
  • $<=$ : inférieur ou égal ;
  • $>=$ : supérieur ou égal ;
  • $!=$ :non égal.

Avec la définition de fonction capital-double suivante, que peut-on toujours affirmer à propos du résultat $n$ retourné par la fonction ?

def capital-double (capital, interet):

montant = capital

n = 0

while montant <= 2 * capital:

montant = montant + interet

n = n + 1

return n

n = capital / interet capital + n * interet > 2 * capital n = 2 * capital / interet capital * n * interet > 2 * capital

Le programme Python suivant ne calcule pas toujours correctement le résultat de $x^y$. Parmi les tests suivants, lequel va permettre de détecter l’erreur ?

def puissance (x,y):

p = x

for i in range (y - 1):

p = p * x

return p

puissance(2,1) puissance(2,0) puissance(2,2) puissance(2,10)
  • $2^0=1$, alors que dans le programme ci-dessus cela fait $2$.

On a écrit une fonction qui prend en paramètre une liste non vide et qui renvoie son plus grand élément. Combien de tests faudrait-il écrire pour garantir que la fonction donne un résultat correct pour toute liste ?

Deux tests : pour le cas où le plus grand élément est en début de liste, et pour le cas où le plus grand élément n'est pas en début de liste Deux tests : pour une liste à un élément et pour une liste à deux éléments ou plus Trois tests : pour une liste vide, pour une liste à un élément, et pour une liste à deux éléments ou plus Une infinité de tests : on ne peut pas prouver que cette fonction est correcte, simplement en la testant
bannière astuce

Astuce

Pour réviser la notion de test et de vérification, voir le cours Vérifications, parie 1.

La documentation de la bibliothèque random de Python précise :

random.randint(a, b)

# Renvoie un entier aléatoire N tel que a <= N <= b

Quelle est l'expression Python permettant de simuler le tirage d’un dé à $6$ faces après avoir exécuté import random ?

random.randint(1,7) random.randint(6) random.randint(1,6) random.randint(0,6)

Algorithmique

La fonction suivante doit calculer la moyenne d’un tableau de nombres, passé en paramètre. Avec quelles expressions, faut-il compléter l'écriture pour que la fonction soit correcte ?

def moyenne(tableau):

total = …

for valeur in tableau:

total = total + valeur

return total / …

1 et len(tableau) 1 et len(tableau) + 1 0 et len(tableau) + 1 0 et len(tableau)
bannière astuce

Astuce

Pour revoir le calcule de moyenne, se diriger vers le cours Algorithmes sur tableaux, partie 1.e.

Quelle valeur retourne la fonction mystere suivante ?

def mystere(liste):

valeur_de_retour = True

indice = 0

while indice < len(liste) - 1:

if liste[indice] > liste[indice + 1]:

valeur_de_retour = False

indice = indice + 1

return valeur_de_retour

La valeur du plus grand élément de la liste passée en paramètre Une valeur booléenne indiquant si la liste passée en paramètre est triée La valeur du plus petit élément de la liste passée en paramètre Une valeur booléenne indiquant si la liste passée en paramètre contient plusieurs fois le même élément
bannière astuce

Astuce

Pour réviser l’algèbre de Boole, voir le cours Une machine à calculer : le bit, partie 2.

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]

45 10 100 55
  • Pour mieux comprendre ce résultat prenons un exemple avec $4$ éléments, donc un tri de [4, 3, 2, 1] :

$4\ 3\ 2\ 1$

$3\ \textbf{4}\ 2\ 1$ ($1$ permutation)
$3\ 2\ \textbf{4}\ 1$ ($1$ permutation)
$3\ 2\ 1\ \textbf{4}$ ($1$ permutation)

$2\ \textbf{3}\ 1\ 4$ ($1$ permutation)
$2\ 1\ \textbf{3}\ 4$ ($1$ permutation)

$1\ \textbf{2}\ 3\ 4$ ($1$ permutation)

  • Nous avons donc au pire $6$ permutations et à chaque permutation nous faisons la somme suivante : $\sum\limits_{n=1}^{n-1} n$ .
    Pour revenir à notre question, afin de trier un tableau de $10$ éléments, nous utilisons la même méthode et nous trouvons bien, au pire, $45$ combinaisons, donc $45$ permutations.
bannière astuce

Astuce

Pour réviser la notion de tri, voir le cours Traitement de tables matricielles, partie 3.
Pour réviser la notion de complexité, voir le cours Terminaison et complexité, partie 3.

À quelle catégorie, appartient l'algorithme des $k$ plus proches voisins ?

Algorithmes de tri Algorithmes de classification et d'apprentissage Algorithmes gloutons Algorithmes de recherche de chemins
bannière astuce

Astuce

Pour réviser la méthode des plus proches voisins, voir le cours Algorithmes d’apprentissage.

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

9 étapes 2 étapes 1 étapes 11 étapes
bannière astuce

Astuce

Pour réviser l’algorithme de recherche par dichotomie, voir le cours Terminaison et complexité, partie 4.c.

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

La liste ne doit pas comporter de doublons La liste doit comporter uniquement des entiers positifs La liste doit être de longueur inférieure à $1024$ La liste doit être triée