• Aucun résultat trouvé

CODAGE BINAIRE ; TYPES CONSTRUITS ; TABLES

N/A
N/A
Protected

Academic year: 2022

Partager "CODAGE BINAIRE ; TYPES CONSTRUITS ; TABLES "

Copied!
4
0
0

Texte intégral

(1)

NOM et Prénom ……… Classe de Première Spécialité NSI Année 2020 2021

1ère NSI

12 20 10,25

0

Médiane en 2010

9

Médiane en 2020

CORRIGE CONTROLE 2 (55’)

CODAGE BINAIRE ; TYPES CONSTRUITS ; TABLES

Compte rendu :

Numérisation des nombres (exo 1) : Le cours n’est tout simplement pas su !! Il suffit de connaître le tableau récapitulatif du cours Numérisation des nombres p.14.)

Types construits (Listes, Tuples, Dicos) (exo 2 questions 1 à 5) : Là encore le cours n’est pas assez su !

Tables de données (exo2 questions 6-7) : Cours non su.

Programmation (exo 2 questions 8 à 10 + exo 3) : Catastrophique. Très peu de rigueur (respect de la consigne, notations, testing de son programme etc.)

Pourtant il avait été bien annoncé qu’un exo porterait sur l’un des 2 algorithmes d’encodage des entiers.

L’exercice de programmation (n°3) est très inquiétant sur le niveau de certains : du n’importe quoi rarement vu. Ne rien écrire plutôt que ce genre de choses.

Plus généralement : apprendre son cours, bien lire la consigne, et se relire ! Médianes = 11,75 en 2019

 Exercice n° 1 (…………..……… / 6 points) : Numérisation des entiers.

Pour chaque affirmation, 4 choix vous sont proposés dont un seul est vrai. Lequel ? L’entourer.

Barème : réponse juste =1 pt sans réponse ou réponse fausse = 0 pt

Affirmations Choix 1 Choix 2 Choix 3 Choix 4

Pour convertir en base 10 un nombre écrit en base 2, on peut :

effectuer une suite de divisions euclidiennes

par 2.

effectuer une suite de divisions euclidiennes

par 10.

additionner des puissances de 2.

additionner des puissances de 10.

Le nombre d’entiers non

signés codables sur n bits est 2n  1  1 2n  1 2n  1 2n

Sur n bits, le plus petit entier signé négatif

représentable en machine est

-2n -2n  1 -2n  1 -2n  1  1

L’écriture binaire du plus grand entier signé négatif

commence par 1 suivi que de 0.

commence par 0 suivi que de 1.

commence par 1 suivi que de 1.

commence par 0 suivi que de 0.

Soit l’entier signé ayant pour écriture binaire 1011.

Cet entier est

11 -3 -5 5

Sur n bits, l’inversé bit à

bit correspond au complémentaire à 1. complémentaire à 2. complémentaire à

2n  1. complémentaire à 2n.

Plus généralement, convertir de la base p vers la base 10 revient à calculer la valeur d’une écriture en base p : il faut additionner des puissances de p.

Vérifier en prenant un exemple tout bêtement ! 1 seul élève a eu bon en 2020 !

 Cours Livret Numérisation des nombres p.14 !

Calculer l’inversé bit à bit + 1 de 1011, donner la valeur, puis prendre l’opposé.

Sur n bits, lorsqu’on somme une écriture binaire et son l’inversé bit à bit, on obtient forcément une suite de 1 qui correspond à la valeur 2n 1. Donc l’inversé bit à bit est bien le complémentaire à 2n 1.

(2)

NOM et Prénom ……… Classe de Première Spécialité NSI Année 2020 2021

 Exercice n° 2 (………..………… / 10 points) : Entourer le seul choix vrai.

 (D’après Banque Nationale des sujets, sujet 1 question B2) Soit T une liste, que vaut T à la suite de ce script :

T = [ 2 , 2 , 2 , 2 ] T[2] = T[2] + 2

Bien réussi en 2020.

1) [ 2 , 4 , 2 , 2 ]

Choix de ceux qui oublient que les indices commencent à 0 et non à 1 !

2) [ 4 , 4 , 4 , 4 ]

Choix si on a For item in T : item = item + 2.

3) [ 2 , 2 , 2 , 2 , 2 ]

Choix si on avait eu T = T + [2].

4) [ 2 , 2 , 4 , 2 ]

 La compréhension de liste ci-dessous génère : [ x**2 for x in range (4) if x % 2 == 0 ]

Attention range(4) = [0,1,2,3] puis la condition sélectionne les entiers pairs puis on fait agir la puissance 2.

1) [ 0 , 4 , 16 ] 2) [ 0 , 4 ]

3) [ 2**2 , 4**2 ] 4) [ 0 , 1 , 4 , 9 ]

 a , c = 1 , 2

b = ( [ c , a ] , c ) c = 3

Que vaut b à la fin de l’exécution de ce script ?

Après la ligne 2, b contient le tuple ( [2 , 1] , 2 ]. Un changement a postériori sur une simple variable n’a aucun effet rétroactif ni sur les listes ni sur les tuples !

1) ( [ 3 , 1 ] , 3 )

Les changements sur une simple variable ne sont pas rétroactifs !

2) ( [ 1 , 2 ] , 1 )

Choix de ceux qui intervertissent a et c.

3) ( [ 2 , 1 ] , 2 ) 4) ( [ 3 , 1 ] , 2 )

Valable si on avait fait b[0][0] = 3.

 Un autre nom des clés d’un dictionnaire :

Les clés ne sont a priori pas des numéros ! Et encore moins des valeurs ! Peu réussi en 2020.

1) Indices = index numérotés.

2) Valeurs.

3) Index nommés.

4) Index numérotés.

 Soit le dictionnaire Dico :

Dico = { ‘a’ : 1 , ‘b’ : 2 , ‘c’ : 3 } Pour changer la valeur 2 par 3, il faut faire

La syntaxe est Dico[clé] = nouvelle_valeur (attention crochets !) Bien réussi en 2020.

1) Dico [2] = 3 2) Dico (‘b’) = 3 3) Dico [‘b’] = 3 4) Dico {‘b’} = 3

 Un tableau à entêtes colonnes est implémenté en Python par : Cours non su. Très peu réussi en 2020.

1) une liste de listes.  Tableau sans entêtes.

2) un dictionnaire ayant pour valeurs des listes.  Tableau à entêtes lignes.

3) un dictionnaire ayant pour valeurs des dictionnaires.  Tableau à entêtes lignes et colonnes.

4) une liste de dictionnaires.  Tableau à entêtes colonnes.

(3)

NOM et Prénom ……… Classe de Première Spécialité NSI Année 2020 2021

 (D’après Banque Nationales des Sujets, sujet 1, Question C3) Soit la liste de p-uplets suivants représentant un informaticien ou une informaticienne célèbre. :

Table = [ ('Grace','Hopper','F',1906), ('Tim', 'Berners-Lee', 'H', 1955), ('Ada', 'Lovelace', 'F', 1815), ('Alan', 'Turing', 'H', 1912) ] On définit la fonction ci-dessous : def fonctionMystere(table):

résultat = [ ]

for ligne in table : Dans chaque Tuple de Table

if ligne[2] == 'F': sélection des femmes

résultat.append(ligne[1]) Ajout de leurs noms à la liste résultat.

return résultat

Que retourne fonctionMystere(Table) ?

Très peu réussi en 2020.

1) [‘Grace’, ‘Ada’]

2) [‘Hopper’, ’Lovelace’]

3) [ ]

4) [ ('Grace', 'Hopper', 'F', 1906), ('Ada', 'Lovelace', 'F', 1815) ]

 (D’après Banque Nationale des sujets, sujet n°11 question F6) Soient A un entier strictement positif et le programme suivant :

k = 0

while 2**k ≤ A : k = k + 1

Que contient la variable k à la fin de l'exécution du programme ? La boucle s’arrête dès que 2k > A.

1) L’exposant de la plus grande puissance de 2 < A.

2) L’exposant de la plus grande puissance de 2 ≤ A.

3) L’exposant de la plus petite puissance de 2 > A.

4) L’exposant de la plus petite puissance de 2 ≥ A.

 Soit L une liste d'entiers. On définit la fonction suivante : def trouver_max(L):

max = L[0]

for élément in L :

if élément > max : max = élément return max

Compléter les 2 lignes en pointillés pour que cette fonction retourne l’élément maximum de la liste L.

Remarque : élément max moins bien car on ne remplace le max que si élément est vraiment plus grand que max !

On n’écrit pas L[élément] ! élément n’est pas un indice ! Très peu réussi en 2020.

(4)

NOM et Prénom ……… Classe de Première Spécialité NSI Année 2020 2021

 (D’après Banque Nationale des sujets, sujet n°1 question B1) On veut construire la liste t :

t = [ [0 , 1 , 2] , [3 , 4 , 5] , [6 , 7 , 8] , [9 , 10 , 11] ].

Pour cela on utilise le script suivant : n = 4

p = 3

t = [ [ ………..… for j in range(p) ] for i in range(n) ] Par quoi faut-il remplacer les pointillés ?

Réussi 1 seule fois en 2020 !

Voir cours Tables de données p.5 exo 3.

On passe d’une ligne à l’autre en ajoutant 3.

Donc de la 1ère ligne à n’importe quelle autre ligne en rajoutant un multiple de 3.

Donc la solution est :

3 * numéro_ligne + numéro_colonne

1) i * j + j 2) p * j + i 3) p * i + j 4) i * ( j + 1)

 Exercice n° 3 (………..………… / 4 points) : Encodage binaire par divisions successives.

1. Appliquer l’algorithme par divisions successives afin de donner l’écriture binaire de 23 (………. / 1 pt) :

2. Ecrire une fonction Convbinaire_par_divisions( ) qui en entrée reçoit un nombre entier quelconque et en sortie renvoie son écriture binaire sous forme de chaîne de caractères. (……….. / 3 pts)

Voir Corrigé Cours Numérisations des nombres p.7.

def Convbinaire_par_divisions (entier) :

if entier == 0 : # On traite à part le cas où l'entier rentré est 0 ! écriture_binaire = "0"

else : # Cas général

# Initialisation des variables locales de travail.

quotient = entier écriture_binaire=" "

# Remplissage de la liste des restes.

while quotient > 0 : reste = quotient % 2

écriture_binaire = str(reste) + écriture_binaire # Remplissage par la gauche ! quotient = quotient // 2 # Attention à ne pas calculer le quotient avant le reste ! return écriture_binaire

Stop 1 11

1 5 2 23 2

1 2 2

0 1 2

1 2 0

(23)

10

=

Beaucoup ne savent même pas faire une division entière par 2 !

Catastrophique !

Jamais réussi parfaitement en 2020.

Références

Documents relatifs

Afin d’avoir les meilleures chances d’être embauchée pour préparer un Brevet Professionnel Coiffure, elle décide d’adopter une image en adéquation avec celle de son

I Le signe du nombre sera codé par le bit de plus haut poids de la mantisse : &#34;0&#34; pour les réels positifs, &#34;1&#34; pour les réels négatifs ; à l’image de la

E 4 Environnement économique et juridique Session 2020 20SP-BP GOUV U40 SUJET Page 2 / 9.. NE RIEN ÉCRIRE DANS CETTE

Ces codages sont relativement simples par rapport à d’autres plus évolués mais même les codages les plus complexes développés ont leur traduction en codage binaire,

Calcule et affiche la somme des éléments de liste et stocke le résultat dans une variable somme (sans utiliser la fonction sum de Python).. Calcule et affiche la moyenne de ces

Transmettre des données d'une machine connectée au réseau A jusqu'à une machine connectée au réseau B à travers l'internet consiste à faire des sauts successifs de routeur en

Compte-tenu de ce que nous avons observé à la Méthode numéro 1, on pourrait penser que pour coder un ensemble de caractères on est contraint d’utiliser un code de même longueur

Compte-tenu de ce que nous avons observé à la Méthode numéro 1, on pourrait penser que pour coder un ensemble de caractères on est contraint d’utiliser un code de même longueur