Maths & NSI

Baccalauréat — Sujet 2 « annulé » — 2021 — NSI

Bac NSI — Sujet « 2 annulé » 2021

Sujet

Présentation de l'épreuve

Ce sujet, daté de la session 2021, porte la mention « annulé » dans le corpus source (session marquée comme non tenue ou retirée) mais présente le format et le niveau d'une épreuve écrite complète de spécialité NSI Terminale. Durée : 3h30, calculatrice et dictionnaire interdits. Le candidat choisit 3 exercices parmi les 5 proposés, chacun noté sur 4 points.

Exercice 1 — Arbres et programmation orientée objet

Une agence immobilière modélise ses biens par une classe Bim : nt (nature, chaîne : appartement, maison, bureau, commerce…), sf (surface, flottant), pm (prix moyen au m², flottant). Elle possède une méthode estim_prix :

class Bim:
    def __init__(self, nature, surface, prix_moy):
        ...
    def estim_prix(self):
        return self.sf * self.pm

Question 1. Compléter le constructeur de Bim.

Question 2. On exécute b1 = Bim('maison', 70.0, 2000.0). Que renvoie b1.estim_prix() ? Préciser le type.

Question 3. On veut affiner l'estimation selon la nature : pour 'maison', le prix est multiplié par 1,1 ; pour 'bureau', par 0,8 ; pour les autres natures, il ne change pas. Modifier estim_prix en conséquence.

Question 4. Écrire nb_maison(lst), qui renvoie le nombre d'objets Bim de nature 'maison' dans une liste lst.

Question 5. Les biens sont stockés dans un arbre binaire de recherche abr selon leur surface (sous-arbre gauche : surfaces ⩽\leqslant celle du nœud ; sous-arbre droit : surfaces strictement supérieures), muni des méthodes est_vide(), get_v() (valeur), get_g() (sous-arbre gauche), get_d() (sous-arbre droit). a. Pour un arbre abr de racine b1, avec b1 ayant pour fils gauche b2 (lui-même de fils droit b4) et pour fils droit b3 (lui-même de fils gauche b5 et de fils droit b6), donner la liste des biens triés par surface croissante. b. Compléter la fonction récursive contient(surface, abr), qui renvoie True s'il existe dans abr un bien de surface supérieure ou égale à surface :

def contient(surface, abr):
    if abr.est_vide():
        return False
    elif abr.get_v().sf >= ... :
        return True
    else:
        return contient(surface, ...)

Exercice 2 — Bases de données relationnelles

Une restauratrice gère ses réservations avec une base restaurant : Plat(idPlat, nom, categorie, description, prix), Client(idClient, email, passwd, nom, avis), Reservation(idReservation, #idClient, jour, heure, numTable), Commande(#idPlat, #idReservation).

Question 1. Parmi les trois requêtes suivantes, laquelle renvoie tous les attributs des plats de catégorie 'entrée' ?

R1: SELECT nom, prix FROM Plat WHERE categorie = 'entrée';
R2: SELECT * FROM Plat WHERE categorie = 'entrée';
R3: UPDATE Plat SET categorie = 'entrée' WHERE 1;

Question 2. a. Écrire la requête donnant les noms et avis des clients ayant réservé le '2021-06-05' à '19:30:00'. b. Écrire la requête donnant les noms des plats de catégorie 'plat principal' ou 'dessert' commandés le '2021-04-12'.

Question 3. Que réalise INSERT INTO Plat VALUES(58, 'Pêche Melba', 'dessert', 'Pêches et glace vanille', 6.5); ?

Question 4. a. Écrire la requête supprimant les commandes d'idReservation égal à 2047. b. Écrire la requête augmentant de 5 % tous les prix strictement inférieurs à 20,00.

Exercice 3 — Réseaux et protocoles de routage

Un réseau d'entreprise comprend deux réseaux locaux L1 et L2, interconnectés par les routeurs R2, R3, R4, R5. L1 (PC P1, P2, passerelle R1) et L2 (serveurs S1, S2, passerelle R6). Adresses : R1 (192.168.1.1/24 côté L1, 10.1.1.2/24 côté cœur de réseau), R2 (10.1.1.1/24, 10.1.2.1/24, 10.1.3.1/24), R3 (10.1.2.2/24, 10.1.4.2/24, 10.1.5.2/24), R4 (10.1.5.1/24, 10.1.6.1/24), R5 (10.1.3.2/24, 10.1.4.1/24, 10.1.6.2/24, 10.1.7.1/24), R6 (172.16.0.1/16 côté L2, 10.1.7.2/24), P1 (192.168.1.40/24), P2 (192.168.1.46/24), S1 (172.16.8.10/16), S2 (172.16.9.12/16).

Question 1. a. Adresses réseau de L1 et L2 ? b. Plus petite et plus grande adresse attribuable sur chacun (hors adresse réseau et diffusion) ? c. Nombre maximal de machines connectables sur chacun ?

Question 2. a. Utilité d'avoir plusieurs chemins entre L1 et L2 ? b. Chemin le plus court (en sauts) entre R1 et R6 ? c. Avec un coût de liaison 108/d10^8/d (dd en bit/s), Ether = 10710^7 bit/s et FastEther = 10810^8 bit/s : liaisons R1-R2 (Ether), R2-R5 (Ether), R5-R6 (Ether), R2-R3 (FastEther), R3-R4 (FastEther), R4-R5 (FastEther), R3-R5 (Ether). Quel chemin de R1 à R6 a le coût total minimal ?

Question 3. Compléter les tables de routage de R5 et R6 pour que les échanges L1↔L2 empruntent le chemin le plus court en sauts (tables de R1 et R2 déjà correctement renseignées par ailleurs).

Exercice 4 — Systèmes d'exploitation : processus et ressources

Partie A. Un bureau d'architectes partage une table traçante, un modem, une imprimante entre 3 programmes :

Programme 1              Programme 2              Programme 3
demander(table traçante) demander(modem)          demander(imprimante)
demander(modem)          demander(imprimante)     demander(table traçante)
exécution                 exécution                 exécution
libérer(modem)            libérer(imprimante)       libérer(table traçante)
libérer(table traçante)   libérer(modem)            libérer(imprimante)

Soit p1, p2, p3 les processus associés.

Question 1. Justifier qu'une situation d'interblocage peut se produire.

Question 2. Modifier l'ordre des instructions du Programme 3 pour l'empêcher (sans justification).

Question 3. Si p1 demande la table traçante alors qu'elle est utilisée par p3, quel est l'état de p1 tant qu'elle n'est pas libérée (élu / bloqué / prêt / terminé) ?

Partie B. Une commande Linux affiche une liste de processus avec les colonnes UID, PID, PPID, C, STIME, TTY, TIME, CMD. Le processus PID 831 est le parent d'une série de processus chromium-browser (PID 6211, PPID 831, TIME 00:01:16 ; PID 6252, PPID 6211 ; etc.), tous les autres processus listés ayant un TIME strictement inférieur.

Question 1. Parmi ls -l, ps -ef, cd .., chmod 741 processus.txt, laquelle produit un tel affichage ?

Question 2. Quel est le PID du processus parent de tous les processus chromium-browser ?

Question 3. Quel est le PID du processus au temps d'exécution le plus long ?

Exercice 5 — Structures de données linéaires (file par deux piles)

Question 1. Parmi liste, dictionnaire, pile, file, quelle structure met en œuvre nativement le mode FIFO ?

Question 2. On stocke des processus en attente dans une liste Python lst. On dispose de retirer(lst) (renvoie et retire lst[0]). Écrire ajouter(lst, proc), qui ajoute proc en fin de liste.

On implémente maintenant une file file par un couple de piles (p1, p2) : file[0]=p1, file[1]=p2. Enfiler = empiler dans p1. Défiler : si p2 n'est pas vide, dépiler p2 ; sinon, transférer tous les éléments de p1 vers p2 (en les empilant, ce qui les inverse), puis dépiler p2.

Question 3. En partant de p1 = [ps3, ps4, ps5] (ps5 au sommet) et p2 = [ps2, ps1] (ps1 au sommet), on exécute enfiler(file, ps6), defiler(file), defiler(file), defiler(file), enfiler(file, ps7). Donner le contenu final des deux piles.

Question 4. Avec empiler(p, elt), depiler(p), pile_vide(p), écrire est_vide(f), enfiler(f, elt) et defiler(f) pour cette file à deux piles.

Corrigé

Corrigé réservé aux abonnés Premium.

Créez un compte gratuit : votre première correction est offerte.