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_centralaffiche le nom de l'utilisateur et le nom du terminal séparés par le caractère@. Ici, le nom d'utilisateur est doncgestionet le nom d'ordinateurcapNSI-ordinateur_centralb. On utilise la commande
lsen donnant le répertoire concernéls Contrats -
a.
mkdir Contrats/TURING_Alanb.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
iseront0,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
indiceatteint 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])renvoie0puisque 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
stravec une variable de typeint. La ligne 4 provoque donc une erreur carJoueurest du typestretiest du typeint. Pour corriger ce problème, il faut convertirienstret 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 renvoie0comme valeur desuite(0)on remonte alors et on calcule :suite(2) = 3+2*suite(0) = 3suite(4) = 3+2*suite(2) = 9suite(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
xest de typeintdonc non mutable alors queLest de type liste donc mutable. Par conséquent,Lest 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 fonctionmodifet le second print la valeur non modifiée dexsuivie de celle deL.