Sujet bac NSI 2025 jour 1 (17 juin) | Correction
Exercice 1âïž
Partie A
-
Expliquer pourquoi l'attrlbut
num_serne peut pas etre une clé primaire de la relatloninventaire.Une clé primaire doit respecter une contrainte d'unicité,
num_serest unique au sein d'une mĂȘme marque (deux guitares de la marque \(Fender\) ne pourront pas avoir le mĂȘme numĂ©ro de sĂ©rie), mais cet attribut n'est pas unique pour l'ensemble des guitares (on ne peut pas garantir que deux guitares de marques diffĂ©rentes n'ont pas le mĂȘme numĂ©ro de sĂ©rie). Pour cette raison,num_serne peut pas ĂȘtre une clĂ© primaire de la relation inventaire. -
Donner sous forme de tableau le rĂ©sultatâde la requĂȘte suivante appliquĂ©e Ă l'extrait de table prĂ©cĂ©dente
Voici le rĂ©sultat de la requĂȘte:marque modele Gibson Les Paul Goldtop Fender Stratocaster -
Ăcrire une requĂȘte SQL permettant dâobtenir toutes les annĂ©es du modĂšle
Les Paul Standarddans la collection.La clause DISTINCT permet d'Ă©viter les rĂ©pĂ©titions des annĂ©es de plusieurs exemplaires d'un mĂȘme modĂšle de guitare, mĂȘme si ce n'est pas le cas dans cet extrait.
-
Ăcrire une requĂ©te SQL permettant dâobtenir tous les modĂšles de guitares de la marque
Gibsonpar ordre croissant de l'année dans la collection.On utilise pas DISTINCT ici car on veut différencier les modÚles produits a des années différentes. La clause SELECT serait plus explicite avec
SELECT modele, anneemais ce n'est pas indiqué dans la question. -
Maud a fait une erreur de saisie pour la guitare d'identifiant
id=1. L'annĂ©e est en realitĂ© 1957. Ecrire une requĂȘte SQL permettant de corrrger cette erreur de saisie.Partie B
La transformation de la relation
inventaireen 3 relationsmarque,modeleet guitare est utile pour éviter les redondances.Cependant le systÚme clé primaire, clé étrangÚre demande de respecter les contraintes d'intégrité.
-
Expliquer briĂ©vement, en justifiant, dans quel ordre les trois tables doiventĂȘtre créées.
Pour respecter la contrainte de référencement, on crée les tables dans l'ordre suivant : -
marquequi ne contient aucune clé étrangÚre. -modele, dont la clé étrangÚreid_marqueréférence la clé primaire demarque-guitaredont la clé étrangÚreid_modelecorrespond à la clé primaire demodele -
Ăcrire une requĂȘte SQL permettant dâobtenir le numĂ©ro de sĂ©rie et lâannĂ©e de toutes les guitares
Les Paul Standardde la collection. -
Ecrire une requĂȘte SQL permettant de retirer de la collection la guitare dâidentifiant id=3.
-
Ăcrire lâensemble des requĂȘtes SQL permettant dâajouter la guitare suivante :
- marque : BC Rich
- modĂšle : Mockingbird
- année : 1992
- numéro de série : 92R
- prix : 5000.
Comme indiquĂ© Ă la question 6., on va Ă©crire 3 requĂȘtes a effectuer impĂ©rativement dans l'ordre suivant pour respecter les contraintes de rĂ©fĂ©rence.
-
Ăcrire une requĂȘte SQL permettant de calculer la valeur totale des modĂ©les
Stratocasterde la collection de Slash.
Exercice 2âïž
-
Donner |e code Python qui permet dâinstancier deux variables
tache1ettache2représentant les tùches :-
tùche numéro 1 : Répondre aux e-mails. Durée estimée : 45 minutes.
-
tùche numéro 2 : Ranger ma chambre. Durée estimée : 6O minutes.
Instancier, c'est créer un nouvel objet de la classe. Cela correspond à un appel de la méthode
__init__(constructeur) avec le nom de la classe et en précisant les paramÚtres.tache1 = Tache(1, "Répondre aux e-mails", 45)
tache2 = Tache(2, "Ranger ma chambre", 60)
-
-
Recopier et compléter ie code de la méthode
avancerde la classeTachequi permet dâavancer la tĂącheselfdenminutes. -
Recopier et compléter le code de la méthode
est_termineede la classeTachequi renvoieTruesi la tache est terminée, ouFalsesinon. -
ReprĂ©senter lâĂ©tat de la file
florsquâon lui ajoute successivement la tĂąche numĂ©ro 6 avec la prioritĂ© 2, puis la tache numĂ©ro 7 avec la prioritĂ© 4 en respectant les conditions 1 et 2 dĂ©crites ci-dessus.[dĂ©but] (<t3>, 4) (<t7>, 4) (<t1>, 3) (<t2>, 3) (<t6>, 2) (<t4>, 1) (<t5>, 1) [fin] -
En repartant de la file
fsuivante :[début] (<t3>,4) (<t1>,3) (<t2>,3) (<t4>,1) (<t5>,1) [fin]donner la valeur de
f.defiler()[0], et reprĂ©senter le contenu de la filefaprĂšs lâexĂ©cution de cette instruction.f.defiler()[0]retourne le premier tuple de la file, [0] retourne le premier Ă©lĂ©ment de ce tuple.Avec la file
fla valeur est donc :<t3>.AprĂšs cette instruction, la file sera alors :
[début] (<t1>,3) (<t2>,3) (<t4>,1) (<t5>,1) [fin] -
En repartant de la file
fsuivante :[début] (<t3>, 4) (<t1>, 3) (<t2>, 3) (<t4>, 1) (<t5>, 1) [fin]donner la valeur de
f.examiner()[1], et reprĂ©senter le contenu de la filefaprĂšs lâexĂ©cution de cette instruction.f.examiner()renvoie le premier Ă©lĂ©ment de la file :(\<t3\>, 4)f.examiner()[1]vaut le deuxiĂšme Ă©lĂ©ment de ce tuple :4la file n'est pas modifiĂ©e par la mĂ©thode examiner, elle vaut donc toujours :
[début] (<t3>, 4) (<t1>, 3) (<t2>, 3) (<t4>, 1) (<t5>, 1) [fin] -
Recopier et compléter le code de la fonction
ajouter_fi1e_prio. -
Donner le coĂ»t dâexĂ©cution temporel dens le pire des cas de la fonction
ajouter_fi1e_prio, en fonction du nombremdâĂ©lĂ©ments de la filef.La fonction
ajouter_fi1e_prioest composée de plusieurs parties :- création en la file
f_aux: \(O(1)\) - premiĂšre et deuxiĂšme boucle while : transfert des
méléments defversf_aux: \(O(m)\) - ajout du nouvel élément (
f_aux.enfiler((t, p))) : \(O(1)\) - transfert des éléments de
f_auxversf: \(O(m)\)
Au total la complexité temporelle dans le pire des cas est donc linéaire en la taille de la file : \(O(m)\).
- création en la file
-
Indiquer pour chaque bloc de 25 minutes la tĂąche qui avance, en suivant le modĂšle proposĂ©, jusquâa la fin de toutes les tĂąches.
la condition 2 indique qu'une tĂąche non terminĂ©e se rĂ© insĂ©rĂ©e aprĂšs les autres tĂąches de mĂȘme prioritĂ©, il va donc y avoir un alternance de type tourniquet entre les tĂąches de mĂȘme prioritĂ© ayant une durĂ©e restante supĂ©rieure Ă 25 minutes.
numéro bloc 25 minutes 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 numéro de tùche avancée 3 7 3 3 3 1 2 1 2 2 6 6 6 4 5 4 5 -
Ăcrire Le code dâune fonction planning qui prend en paramĂtre une file de prioritĂ©
fdont Ies Ă©lĂ©ments sont des tuples (tache, prio), et qui renvoie une liste de tĂąches, dans lâordre dans lequel elles vont ĂȘtre effectuĂ©es par tranche de 25 minutes avec la mĂ©thode Pomodoro.