23-NSIJ2LR1 : Corrigé
Année : 2023
Centre : Réunion
Jour : 2
Enoncé :
Exercice 1 (4 points)
Abres binaires de recherche, programmation orientée objet et récursivité
-
En suivant l'arbre comme indiqué dans l'énoncé, on trouve :
- le code de la lettre
Nest-o - le code de la lettre
Sestooo - le code de la lettre
Iestoo
Donc, le code morse de
NSIest-o ooo oo - le code de la lettre
-
Représentation du sous arbre pour les lettres
G,M,O,Q,Z:graph TD R1[" "] --> V1[" "] R1-- - --> T["T"] T --> V2[" "] T -- - --> M["M"] M -- o --> G["G"] M -- - --> O["O"] G -- o --> Z["Z"] G -- - --> Q["Q"] style V1 fill:#FFFFFF, stroke:#FFFFFF linkStyle 0 stroke:#FFFFFF,stroke-width:0px style V2 fill:#FFFFFF, stroke:#FFFFFF linkStyle 2 stroke:#FFFFFF,stroke-width:0px - La lettre
Sest le fils gauche deI(arbre.gauche.gauche) et la lettreKle fils droit deN(arbre.droite.gauche), donc les instructions sont :arbre.gauche.gauche.gauche = Noeud("S") arbre.droite.gauche.droit = Noeud("K") -
a.
1 2 3 4 5 6 7
def est_present(n, car) : if n == None : #(1) return False elif n.valeur == car : #(2) return True else : return est_present(n.droite, car) or est_present(n.gauche, car) #(3)- Si le noeud est
Nonealors le caractère n'est pas présent - On renvoie
Truesi la valeur du noeud est le caractère cherché - On relance récursivement la recherche dans les deux sous arbres (droit et gauche)
b. La fonction
est_presentest récursive car elle s'appelle elle-même.c. Cette fonction parcourt en profondeur et la racine puis chacun des deux sous arbres, c'est donc un parcours en profondeur prefixe.
- Si le noeud est
-
a.
8 9 10 11 12 13 14
def code_morse(n, car): if n.valeur == car : return "" #(1) elif est_present(n.droit,car) : #(2) return "-" + code_morse(n.droite, car) else : return "o" + code_morse(n.gauche, car) #(3)- On a atteint le caractère, son code a déjà été constitué entièrement, on renvoie
"" - Le caractère est à droite on ajoute
"-"devant le code et on relance la recursion - Même traitement mais à gauche (on ajoute
"o")
b.
def morse_message(arbre,message): message_code = "" for car in message: message_code = message_code + code_morse(arbre,car) + "|" return message_codeNote
Dans la fonction ci-dessus, un
"|"figure toujours à la fin d'un message non vide. - On a atteint le caractère, son code a déjà été constitué entièrement, on renvoie
Exercice 2 (4 points)
Réseaux et procoles de routage
-
L'écriture binaire de cette adresse est :
11000000.10101000.10100010.00000100 -
a. L'adresse du réseau local du secteur "Administration" est
192.168.16.0(tous les bits de la partie hôte sont à 0) et son masque de sous réseau255.255.255.0(les 24 premiers bits sont à 1)b. L'adresse de diffusion est
192.168.16.255(tous les bits de la partie hôte sont à 1)c. On peut connecter 254 machines à ce réseau
-
Table de routage de
R5:Destination Passe par Distance R1R11 R2R21 R3R31 R4R41 R6R12 Table de routage de
R6:Destination Passe par Distance R1R11 R2R13 R3R42 R4R41 R6R12 Note
Plusieurs tables sont possibles, le sujet devrait l'indiquer !
b. Le chemin emprunté sera :
R6R4R3c. La nouvelle route sera :
R6R1R5R3 -
a. Tableau complété :
Liaison Débit Coût Ethernet \(\textcolor{green}{10^7}\) 10 Fast_Ethernet \(10^8\) \(\textcolor{green}{1}\) Fibre \(10^9\) \(\textcolor{green}{0,1}\) b. Schéma avec le coût des liaisons :

c. Le coût de la route
R4R5R2est \(10,1\) donc le coût de la liaisonR6R4est 1, c'est une liaison Fast-Ethernet.d. La route sera
R6R1R5R2pour un coût total de \(2,1\).
Exercice 3 (4 points)
Bases de données relationnelles et langage SQL
-
a. Cette requête renvoie les
id_vehiculedes véhicules de type'citadine', sur l'extrait présenté on obtient donc :id_vehicule 1 2 4 b.
SELECT immatriculation FROM vehicule WHERE carburant = "diesel" ;c. Le résultat de cette requête sera :
immatriculation modele ML – 128 – VM C3 CL – 142 – CE C5 AB – 135 – YZ 208 JL – 526 – LM 508 EC – 246 – TP Zoe LC – 231 – MG Model X d.
SELECT COUNT(*) FROM vehicule ;e.
SELECT nom, prenom FROM utilisateur ORDER BY nom ASC;Note
Le
ASCest optionnel puisque c'est l'ordre croissant est l'ordre par défaut -
a. Les clés étrangères sont les clés primaires d'une autre table, ici c'est donc :
id_utilisateurqui référence l'utilisateur etid_vehiculequi référence le véhicule loué.b. vehicule (id_vehicule, immatriculation, marque, modele, type, carburant)
utilisateur (id_utilisateur, nom, prenom, permis, adresse, ville)
location (id_location, #id_utilisateur, #id_vehicule, date_debut, date_fin)c. Les clés primaires doivent être uniques, or ici la valeur 1 existe déjà pour la clé primaire
id_location, un nouvel enregistrement ayant cette même valeur ne peut donc pas être ajouté. -
a.
UPDATE utilisateur SET adresse = "50 rue de la Liberté" WHERE id_utilisateur = 133 ;b.
INSERT INTO utilisateur VALUES (137, "LEFEBVRE", "Gabriel", 124689, "30 ruelle des champs", "Amiens") ;c.
INSERT INTO location VALUES (4, 132, 3, "2022-06-21", "2022-06-23") ;d.
SELECT vehicule.modele, vehicule.immatriculation, utilisateur.nom, utilisateur.prenom FROM vehicule JOIN location ON location.id_vehicule = vehicule.id_vehicule JOIN utilisateur ON utilisateur.id_utilisateur = location.id_utilisateur WHERE location.date_debut = "2022-06-21"