22-NSIJ2JA1 : Corrigé
Année : 2022
Centre : Asie-Pacifique
Jour : 2
Enoncé :
Exercice 1
systèmes d'exploitation Linux
-
a. La première ligne du terminale
gestion@capNSI-ordinateur_central
affiche le nom de l'utilisateur et le nom du terminal séparés par le caractère@
. Ici, le nom d'utilisateur est doncgestion
et le nom d'ordinateurcapNSI-ordinateur_central
b. On utilise la commande
ls
en donnant le répertoire concernéls Contrats
-
a.
mkdir Contrats/TURING_Alan
b.chmod ug=rwx, o=r Contrats/TURING_Alan
-
def formatage(tab): liste_noms = [] for (nom,prenom) in tab: liste_noms.append(nom + "_" + prenom) return liste_noms
-
def creation_dossiers(tab): for nom in tab: rep = "Contrats/" + nom os.mkdir(repertoire) os.chmod(rep,774)
Exercice 2
arbres binaires de recherche
Exercice 3
structures de données, programmation
Exercice 4
bases de données et langage SQL
Exercice 5
Exécution de programmes, recherche et corrections de bugs
-
Les valeurs successives prises par la variable
i
seront0,1, ...,n-1
. La première valeur provoque donc une erreur de division par 0. La dernière valeur n'est pas non plus correcte puisqu'on doit calculer la somme des inverses jusqu'àn
. On peut corriger des deux façons suivantes :- A la ligne 3 :
for i range(1,n+1)
afin de démarrer à 1 et d'aller jusqu'à n - ou alors à la ligne 4 :
total = total + 1\(i+1)
- A la ligne 3 :
-
a. La variable
indice
atteint la valeurlen(L)
or les indices des éléments d'une liste vont jusqu'àlen(L)-1
. Pour corriger ce problème on remplace la ligne 3 parwhile indice <len(L)
b. L'appel
maxi([-2,-7,-3])
renvoie0
puisque le maximum est initialisé à 0 et aucun élément plus grand que 0 n'est trouvé lorsqu'on parcourt la liste. Pour corriger ce problème, on peut initialiser le maximum avec le premier élément de la liste et donc écrire à la ligne 3 :maximum = L[0]
-
On peut pas ajouter une variable de type
str
avec une variable de typeint
. La ligne 4 provoque donc une erreur carJoueur
est du typestr
eti
est du typeint
. Pour corriger ce problème, il faut convertiri
enstr
et donc écrire ligne 4 :L.append('Joueur ' + str(i))
-
a. Pour calculer
suite(6)
, on fait les appels successifs àsuite(4)
puissuite(2)
puissuite(0)
. La condition d'arrêt renvoie0
comme valeur desuite(0)
on remonte alors et on calcule :suite(2) = 3+2*suite(0) = 3
suite(4) = 3+2*suite(2) = 9
suite(6) = 3+2*suite(4) = 21
L'appel de suite(6)
renvoie donc 21.
b. On obtient une erreur de profondeur de récursion, en effet la condition d'arrêt n'est jamais atteinte puisque les appels successifs se feront avec les valeurs suivants de `n` : `7, 5, 3, 1, -1, -3, -5, ....`.
- La variable
x
est de typeint
donc non mutable alors queL
est de type liste donc mutable. Par conséquent,L
est modifiée lorsque passé en paramètre à une fonction mais pasx
. Le premier print affichera donc(5, [10])
et le second4 [10]
. En effet le premier print affiche le tuple renvoyé par la fonctionmodif
et le second print la valeur non modifiée dex
suivie de celle deL
.