SlideShare une entreprise Scribd logo
22-NSIJ2ME1 Page : 1/14
BACCALAURÉAT GÉNÉRAL
ÉPREUVE D’ENSEIGNEMENT DE SPÉCIALITÉ
SESSION 2022
NUMÉRIQUE ET SCIENCES INFORMATIQUES
Jeudi 12 mai 2022
Durée de l’épreuve : 3 heures 30
L’usage de la calculatrice n’est pas autorisé.
Dès que ce sujet vous est remis, assurez-vous qu’il est complet.
Ce sujet comporte 14 pages numérotées de 1/14 à 14 /14.
Le candidat traite au choix 3 exercices parmi les 5 exercices
proposés
Chaque exercice est noté sur 4 points.
22-NSIJ2ME1 Page : 2/14
EXERCICE 1 (4 points)
Cet exercice porte sur les arbres binaires de recherche, la programmation orientée
objet et la récursivité.
Dans cet exercice, la taille d’un arbre est le nombre de nœuds qu’il contient. Sa hauteur
est le nombre de nœuds du plus long chemin qui joint le nœud racine à l’une des
feuilles (nœuds sans sous-arbres). On convient que la hauteur d’un arbre ne contenant
qu’un nœud vaut 1 et la hauteur de l’arbre vide vaut 0.
1. On considère l’arbre binaire représenté ci-dessous:
Figure 1
a. Donner la taille de cet arbre.
b. Donner la hauteur de cet arbre.
c. Représenter sur la copie le sous-arbre droit du nœud de valeur 15.
d. Justifier que l’arbre de la figure 1 est un arbre binaire de recherche.
e. On insère la valeur 17 dans l’arbre de la figure 1 de telle sorte que 17 soit une
nouvelle feuille de l’arbre et que le nouvel arbre obtenu soit encore un arbre
binaire de recherche. Représenter sur la copie ce nouvel arbre.
2. On considère la classe Noeud définie de la façon suivante en Python :
1 class Noeud:
2 def __init__(self, g, v, d):
3 self.gauche = g
4 self.valeur = v
5 self.droit = d
a. Parmi les trois instructions (A), (B) et (C) suivantes, écrire
sur la copie la lettre correspondant à celle qui construit et
stocke dans la variable abr l’arbre représenté ci-contre.
(A) abr=Noeud(Noeud(Noeud(None,13,None),15,None),21,None)
(B) abr=Noeud(None,13,Noeud(Noeud(None,15,None),21,None))
(C) abr=Noeud(Noeud(None,13,None),15,Noeud(None,21,None))
22-NSIJ2ME1 Page : 3/14
b. Recopier et compléter la ligne 7 du code de la fonction ins ci-dessous qui
prend en paramètres une valeur v et un arbre binaire de recherche abr et qui
renvoie l’arbre obtenu suite à l’insertion de la valeur v dans l’arbre abr. Les
lignes 8 et 9 permettent de ne pas insérer la valeur v si celle-ci est déjà
présente dans abr.
1 def ins(v, abr):
2 if abr is None:
3 return Noeud(None, v, None)
4 if v > abr.valeur:
5 return Noeud(abr.gauche,abr.valeur,ins(v,abr.droit))
6 elif v < abr.valeur:
7 return ............................................
8 else:
9 return abr
3. La fonction nb_sup prend en paramètres une valeur v et un arbre binaire de
recherche abr et renvoie le nombre de valeurs supérieures ou égales à la valeur
v dans l’arbre abr.
Le code de cette fonction nb_sup est donné ci-dessous :
1 def nb_sup(v, abr):
2 if abr is None:
3 return 0
4 else:
5 if abr.valeur >= v:
6 return 1+nb_sup(v, abr.gauche)+nb_sup(v, abr.droit)
7 else:
8 return nb_sup(v, abr.gauche)+nb_sup(v, abr.droit)
a. On exécute l’instruction nb_sup(16, abr) dans laquelle abr est l’arbre
initial de la figure 1. Déterminer le nombre d’appels à la fonction nb_sup.
b. L’arbre passé en paramètre étant un arbre binaire de recherche, on peut
améliorer la fonction nb_sup précédente afin de réduire ce nombre d’appels.
Écrire sur la copie le code modifié de cette fonction.
22-NSIJ2ME1 Page : 4/14
EXERCICE 2 (4 points)
Cet exercice porte sur les structures de données.
La poussette est un jeu de cartes en solitaire. Cet exercice propose une version
simplifiée de ce jeu basée sur des nombres.
On considère une pile constituée de nombres entiers tirés aléatoirement. Le jeu
consiste à réduire la pile suivant la règle suivante : quand la pile contient du haut vers
le bas un triplet dont les termes du haut et du bas sont de même parité, on supprime
l'élément central.
Par exemple :
 Si la pile contient du haut vers le bas, le triplet 1 0 3, on supprime le 0.
 Si la pile contient du haut vers le bas, le triplet 1 0 8, la pile reste inchangée.
On parcourt la pile ainsi de haut en bas et on procède aux réductions. Arrivé en bas
de la pile, on recommence la réduction en repartant du sommet de la pile jusqu'à ce
que la pile ne soit plus réductible. Une partie est « gagnante » lorsque la pile finale est
réduite à deux éléments exactement.
Voici un exemple détaillé de déroulement d'une partie.
1.
a. Donner les différentes étapes de réduction de la pile suivante :
22-NSIJ2ME1 Page : 5/14
b. Parmi les piles proposées ci-dessous, donner celle qui est gagnante.
Pile A Pile B Pile C
L'interface d'une pile est proposée ci-dessous. On utilisera uniquement les fonctions
figurant dans le tableau suivant :
2. La fonction reduire_triplet_au_sommet permet de supprimer l'élément
central des trois premiers éléments en partant du haut de la pile, si l'élément du
bas et du haut sont de même parité. Les éléments dépilés et non supprimés sont
replacés dans le bon ordre dans la pile.
Recopier et compléter sur la copie le code de la fonction
reduire_triplet_au_sommet prenant une pile p en paramètre et qui la
modifie en place. Cette fonction ne renvoie donc rien.
1 def reduire_triplet_au_sommet(p):
2 a = depiler(p)
3 b = depiler(p)
4 c = sommet(p)
5 if a % 2 != .... :
6 empiler(p, ...)
7 empiler(p, ...)
Structure de données abstraite : Pile
• creer_pile_vide() renvoie une pile vide
• est_vide(p) renvoie True si p est vide, False sinon
• empiler(p, element) ajoute element au sommet de p
• depiler(p) retire l'élément au sommet de p et le renvoie
• sommet(p) renvoie l'élément au sommet de p sans le retirer de p
• taille(p): renvoie le nombre d'éléments de p
22-NSIJ2ME1 Page : 6/14
3. On se propose maintenant d'écrire une fonction
parcourir_pile_en_reduisant qui parcourt la pile du haut vers le bas en
procédant aux réductions pour chaque triplet rencontré quand cela est possible.
a. Donner la taille minimale que doit avoir une pile pour être réductible.
b. Recopier et compléter sur la copie :
1 def parcourir_pile_en_reduisant(p):
2 q = creer_pile_vide()
3 while taille(p) >= ....:
4 reduire_triplet_au_sommet(p)
5 e = depiler(p)
6 empiler(q, e)
7 while not est_vide(q):
8 .............
9 .............
10 return p
4. Partant d'une pile d'entiers p, on propose ici d'implémenter une fonction récursive
jouer renvoyant la pile p entièrement simplifiée. Une fois la pile parcourue de
haut en bas et réduite, on procède à nouveau à sa réduction à condition que cela
soit possible. Ainsi :
 Si la pile p n’a pas subi de réduction, on la renvoie.
 Sinon on appelle à nouveau la fonction jouer , prenant en paramètre la
pile réduite.
Recopier et compléter sur la copie le code ci-dessous :
1 def jouer(p):
2 q = parcourir_pile_en_reduisant(p)
3 if .............. :
4 return p
5 else:
6 return jouer(...)
22-NSIJ2ME1 Page : 7/14
EXERCICE 3 (4 points)
Cet exercice porte sur les réseaux et les protocoles de routages.
Rappels :
Une adresse IPv4 est composée de 4 octets, soit 32 bits. Elle est notée a.b.c.d, où
a, b, c et d sont les valeurs des 4 octets.
La notation a.b.c.d/n signifie que les n premiers bits de l’adresse IP représentent la
partie « réseau », les bits qui suivent représentent la partie « machine ».
L’adresse IPv4 dont tous les bits de la partie « machine » sont à 0 est appelée
« adresse du réseau ».
L’adresse IPv4 dont tous les bits de la partie « machine » sont à 1 est appelée «
adresse de diffusion ».
On considère le réseau représenté sur la Figure 1 ci-dessous :
Figure 1 : schéma du réseau
1. On considère la machine d'adresse IPv4 192.168.1.1/24
a. Donner l’adresse du réseau sur lequel se trouve cette machine.
b. Donner l'adresse de diffusion (broadcast) de ce réseau.
c. Donner le nombre maximal de machines que l'on peut connecter sur ce réseau.
d. On souhaite ajouter une machine sur ce réseau, proposer une adresse IPv4
possible pour cette machine.
2.
a. La machine d'adresse IPv4 192.168.1.1 transmet un paquet IPv4 à la machine
d'adresse IPv4 192.168.4.2
Donner toutes les routes pouvant être empruntées par ce paquet IPv4, chaque
routeur ne pouvant être traversé qu'une seule fois.
22-NSIJ2ME1 Page : 8/14
b. Expliquer l’utilité d’avoir plusieurs routes possibles reliant les réseaux
192.168.1.0/24 et 192.168.4.0/24
3. Dans cette question, on suppose que le protocole de routage mis en place dans
le réseau est RIP. Ce protocole consiste à minimiser le nombre de sauts. Le
schéma du réseau est celui de la figure 1.
Les tables de routage utilisées sont données ci-dessous :
Routeur A Routeur B Routeur C
Destination passe par Destination passe par Destination passe par
B … A A A A
C … C C B B
D E D C D E
E … E C E E
F C F C F F
Routeur D Routeur E Routeur F
Destination passe par Destination passe par Destination passe par
A E A A A C
B F B C B C
C F C C C C
E E D D D D
F F F C E C
Tables de routage
a. Recopier et compléter sur la copie la table de routage du routeur A.
b. Un paquet IP doit aller du routeur B au routeur D. En utilisant les tables de
routage, donner le parcours emprunté par celui-ci.
c. Les connexions entre les routeurs B-C et A-E étant coupées, sur la copie,
réécrire les tables de routage des routeurs A, B et C.
d. Déterminer le nouveau parcours emprunté par le paquet IP pour aller du
routeur B au routeur D.
4. Dans cette question, on suppose que le protocole de routage mis en place dans
le réseau est OSPF. Ce protocole consiste à minimiser la somme des coûts des
liaisons empruntées. Le coût d’une liaison est défini par la relation coût = où
d représente le débit en bit/s et coût est sans unité. Le schéma du réseau est celui
de la figure 1.
22-NSIJ2ME1 Page : 9/14
a. Déterminer le coût des liaisons Ethernet (d = 107
bit/s), Fast-Ethernet (d = 108
bit/s) et Fibre (d = 109
bit/s).
b. On veut représenter schématiquement le réseau de routeurs à partir du
schéma du réseau figure 1.
Recopier sur la copie le schéma ci-dessous et tracer les liaisons entre les
routeurs en y indiquant le coût.
c. Un paquet IPv4 doit être acheminé d'une machine ayant pour adresse IPv4
192.168.2.1 à une machine ayant pour adresse IPv4 192.168.4.1
Écrire les routes possibles, c'est à dire la liste des routeurs traversés, et le coût
de chacune de ces routes, chaque routeur ne pouvant être traversé qu'une
seule fois.
d. Donner, en la justifiant, la route qui sera empruntée par un paquet IPv4 pour
aller d'une machine ayant pour adresse IPv4 192.168.2.1 à une machine ayant
pour adresse IPv4 192.168.4.1
22-NSIJ2ME1 Page : 10/14
EXERCICE 4 (4 points)
Cet exercice porte sur les bases de données relationnelles et le langage SQL.
L’énoncé de cet exercice utilise les mots clefs du langage SQL suivants : SELECT,
FROM, WHERE, JOIN ON, UPDATE, SET, INSERT INTO VALUES, COUNT, ORDER BY.
 La clause ORDER BY suivie d'un attribut permet de trier les résultats par ordre
croissant de l'attribut ;
 COUNT(*) renvoie le nombre de lignes d'une requête ;
Un musicien souhaite créer une base de données relationnelle contenant ses
morceaux et interprètes préférés. Pour cela il utilise le langage SQL. Il crée une table
morceaux qui contient entre autres les titres des morceaux et leur année de sortie :
id_morceau titre annee id_interprete
1 Like a Rolling Stone 1965 1
2 Respect 1967 2
3 Imagine 1970 3
4 Hey Jude 1968 4
5 Smells Like Teen Spirit 1991 5
6 I Want To hold Your Hand 1963 4
Il crée la table interpretes qui contient les interprètes et leur pays d'origine :
id_interprete nom pays
1 Bob Dylan États-Unis
2 Aretha Franklin États-Unis
3 John Lennon Angleterre
4 The Beatles Angleterre
5 Nirvana États-Unis
id_morceau de la table morceaux et id_interprete de la table interpretes
sont des clés primaires.
L’attribut id_interprete de la table morceaux fait directement référence à la clé
primaire de la table interpretes.
22-NSIJ2ME1 Page : 11/14
1.
a. Écrire le résultat de la requête suivante :
SELECT titre FROM morceaux WHERE id_interprete = 4;
b. Écrire une requête permettant d'afficher les noms des interprètes originaires
d'Angleterre.
c. Écrire le résultat de la requête suivante :
SELECT titre, annee FROM morceaux ORDER BY annee;
d. Écrire une requête permettant de calculer le nombre de morceaux dans la
table morceaux.
e. Écrire une requête affichant les titres des morceaux par ordre alphabétique.
2.
a. Citer, en justifiant, la clé étrangère de la table morceaux.
b. Écrire un schéma relationnel des tables interpretes et morceaux.
c. Expliquer pourquoi la requête suivante produit une erreur :
INSERT INTO interpretes VALUES (1, 'Trust', 'France');
3.
a. Une erreur de saisie a été faite. Écrire une requête SQL permettant de changer
l’année du titre « Imagine » en 1971.
b. Écrire une requête SQL permettant d'ajouter l'interprète « The Who » venant
d'Angleterre à la table interpretes. On lui donnera un id_interprete
égal à 6.
c. Écrire une requête SQL permettant d'ajouter le titre « My Generation » de
« The Who » à la table morceaux. Ce titre est sorti en 1965 et on lui donnera
un id_morceau de 7 ainsi que l'id_interprete qui conviendra.
4. Écrire une requête permettant de lister les titres des interprètes venant des États-
Unis.
22-NSIJ2ME1 Page : 12/14
EXERCICE 5 (4 points)
Cet exercice aborde la programmation objet et la méthode diviser pour régner.
Un labyrinthe est composé de cellules possédant chacune quatre murs (voir ci-
dessus). La cellule en haut à gauche du labyrinthe est de coordonnées (0, 0). On définit
la classe Cellule ci-dessous. Le constructeur possède un attribut murs de type dict
dont les clés sont ’N’, ’E’, ’S’ et ’O’ et dont les valeurs sont des booléens (True
si le mur est présent et False sinon).
class Cellule:
def __init__(self, murNord, murEst, murSud, murOuest):
self.murs={'N':murNord,'E':murEst,
'S':murSud,'O':murOuest}
1. Recopier et compléter sur la copie l'instruction Python suivante permettant de
créer une instance cellule de la classe Cellule possédant tous ses murs sauf
le mur Est.
cellule = Cellule(...)
2. Le constructeur de la classe Labyrinthe ci-dessous possède un seul attribut
grille. La méthode construire_grille permet de construire un tableau à deux
dimensions hauteur et longueur contenant des cellules possédant chacune ses
quatre murs. Recopier et compléter sur la copie les lignes 6 à 10 de la classe
Labyrinthe.
1 class Labyrinthe:
2 def __init__(self, hauteur, longueur):
3 self.grille=self.construire_grille(hauteur, longueur)
4 def construire_grille(self, hauteur, longueur):
5 grille = []
6 for i in range(...):
7 ligne = []
8 for j in range(...):
9 cellule = ...
10 ligne.append(...)
11 grille.append(ligne)
12 return grille
22-NSIJ2ME1 Page : 13/14
Pour générer un labyrinthe, on munit la classe Labyrinthe d'une méthode
creer_passage permettant de supprimer des murs entre deux cellules ayant un côté
commun afin de créer un passage. Cette méthode prend en paramètres les
coordonnées c1_lig, c1_col d'une cellule notée cellule1 et les coordonnées
c2_lig, c2_col d'une cellule notée cellule2 et crée un passage entre cellule1
et cellule2.
13 def creer_passage(self, c1_lig, c1_col, c2_lig, c2_col):
14 cellule1 = self.grille[c1_lig][c1_col]
15 cellule2 = self.grille[c2_lig][c2_col]
16 # cellule2 au Nord de cellule1
17 if c1_lig - c2_lig == 1 and c1_col == c2_col:
18 cellule1.murs['N'] = False
19 ....
20 # cellule2 à l’Ouest de cellule1
21 elif ....
22 ....
23 ....
3. La ligne 18 permet de supprimer le mur Nord de cellule1. Un mur de cellule2
doit aussi être supprimé pour libérer un passage entre cellule1 et cellule2.
Écrire l'instruction Python que l'on doit ajouter à la ligne 19.
4. Recopier et compléter sur la copie le code Python des lignes 21 à 23 qui
permettent le traitement du cas où cellule2 est à l’Ouest de cellule1 :
Pour créer un labyrinthe, on utilise la méthode diviser pour régner en appliquant
récursivement l'algorithme creer_labyrinthe sur des sous-grilles obtenues en
coupant la grille en deux puis en reliant les deux sous-labyrinthes en créant un
passage entre eux.
22-NSIJ2ME1 Page : 14/14
La méthode creer_labyrinthe permet, à partir d'une grille, de créer un labyrinthe
de hauteur haut et de longueur long dont la cellule en haut à gauche est de
coordonnées (ligne, colonne).
Le cas de base correspond à la situation où la grille est de hauteur 1 ou de largeur 1.
Il suffit alors de supprimer tous les murs intérieurs de la grille.
5. Recopier et compléter sur la copie les lignes 25 à 30 de la méthode
creer_labyrinthe traitant le cas de base.
24 def creer_labyrinthe(self, ligne, colonne, haut, long):
25 if haut == 1 : # Cas de base
26 for k in range(...):
27 self.creer_passage(ligne, k, ligne, k+1)
28 elif long == 1: # Cas de base
29 for k in range(...):
30 self.creer_passage(...)
31 else: # Appels récursifs
32 # Code non étudié (Ne pas compléter)
6. Dans cette question, on considère une grille de hauteur haut = 4 et de longueur
long = 8 dont chaque cellule possède tous ses murs.
On fixe les deux contraintes supplémentaires suivantes sur la méthode
creer_labyrinthe :
 Si haut ≥ long, on coupe horizontalement la grille en deux sous-
labyrinthes de même dimension.
 Si haut < long, on coupe verticalement la grille en deux sous-labyrinthes
de même dimension.
L'ouverture du passage entre les deux sous-labyrinthes se fait le plus au Nord pour
une coupe verticale et le plus à l'Ouest pour une coupe horizontale.
Dessiner le labyrinthe obtenu suite à l'exécution complète de l'algorithme
creer_labyrinthe sur cette grille.

Contenu connexe

Tendances

Cours Piles et files en utilisant lesl istes chainées Prof. KHALIFA MANSOURI
Cours Piles et files en utilisant lesl istes chainées Prof. KHALIFA MANSOURI Cours Piles et files en utilisant lesl istes chainées Prof. KHALIFA MANSOURI
Cours Piles et files en utilisant lesl istes chainées Prof. KHALIFA MANSOURI
Mansouri Khalifa
 
La qualité de l'habitat, condition environnementale du bien-être et du mieux ...
La qualité de l'habitat, condition environnementale du bien-être et du mieux ...La qualité de l'habitat, condition environnementale du bien-être et du mieux ...
La qualité de l'habitat, condition environnementale du bien-être et du mieux ...
Conseil Economique Social et Environnemental
 
14- passerelle haubannée
14- passerelle haubannée14- passerelle haubannée
14- passerelle haubannée
richardpleau
 
exercices-corriges-dalgorithmique
exercices-corriges-dalgorithmiqueexercices-corriges-dalgorithmique
exercices-corriges-dalgorithmiquefast xp
 
Cours Algorithme: Matrice
Cours Algorithme: MatriceCours Algorithme: Matrice
Cours Algorithme: Matrice
InforMatica34
 
Cours : les arbres Prof. KHALIFA MANSOURI
Cours : les arbres Prof. KHALIFA MANSOURI Cours : les arbres Prof. KHALIFA MANSOURI
Cours : les arbres Prof. KHALIFA MANSOURI
Mansouri Khalifa
 
Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)
salah fenni
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)
Sana REFAI
 
Les listes simplement chaînées en langage C
Les listes simplement chaînées en langage CLes listes simplement chaînées en langage C
Les listes simplement chaînées en langage C
Mohamed Lahby
 
Chapitre 1 arbres de recherche
Chapitre 1 arbres de rechercheChapitre 1 arbres de recherche
Chapitre 1 arbres de recherche
Sana Aroussi
 
Treillis isostatiques cour et TD.pdf
Treillis isostatiques cour et TD.pdfTreillis isostatiques cour et TD.pdf
Treillis isostatiques cour et TD.pdf
GeorgesEponon
 
Fonctions chaine
Fonctions chaineFonctions chaine
Fonctions chaineAfef Ilahi
 
Les algorithmes d'arithmetique
Les algorithmes d'arithmetiqueLes algorithmes d'arithmetique
Les algorithmes d'arithmetiquemohamed_SAYARI
 
Chap3 programmation modulaire en python
Chap3 programmation modulaire en pythonChap3 programmation modulaire en python
Chap3 programmation modulaire en python
Mariem ZAOUALI
 
Examen logseq21
Examen logseq21Examen logseq21
Examen logseq21
Zakaria Mouatacim
 
Exercices corriges nombres_complexes
Exercices corriges nombres_complexesExercices corriges nombres_complexes
Exercices corriges nombres_complexes
Omar Ramzaoui
 
Arbre et algorithme de recherche
Arbre et algorithme de rechercheArbre et algorithme de recherche
Arbre et algorithme de recherche
ECAM Brussels Engineering School
 

Tendances (20)

Cours Piles et files en utilisant lesl istes chainées Prof. KHALIFA MANSOURI
Cours Piles et files en utilisant lesl istes chainées Prof. KHALIFA MANSOURI Cours Piles et files en utilisant lesl istes chainées Prof. KHALIFA MANSOURI
Cours Piles et files en utilisant lesl istes chainées Prof. KHALIFA MANSOURI
 
La qualité de l'habitat, condition environnementale du bien-être et du mieux ...
La qualité de l'habitat, condition environnementale du bien-être et du mieux ...La qualité de l'habitat, condition environnementale du bien-être et du mieux ...
La qualité de l'habitat, condition environnementale du bien-être et du mieux ...
 
14- passerelle haubannée
14- passerelle haubannée14- passerelle haubannée
14- passerelle haubannée
 
exercices-corriges-dalgorithmique
exercices-corriges-dalgorithmiqueexercices-corriges-dalgorithmique
exercices-corriges-dalgorithmique
 
Cours Algorithme: Matrice
Cours Algorithme: MatriceCours Algorithme: Matrice
Cours Algorithme: Matrice
 
Cours : les arbres Prof. KHALIFA MANSOURI
Cours : les arbres Prof. KHALIFA MANSOURI Cours : les arbres Prof. KHALIFA MANSOURI
Cours : les arbres Prof. KHALIFA MANSOURI
 
Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)
 
Exo algo
Exo algoExo algo
Exo algo
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)
 
Les listes simplement chaînées en langage C
Les listes simplement chaînées en langage CLes listes simplement chaînées en langage C
Les listes simplement chaînées en langage C
 
Systemes logiques
Systemes logiquesSystemes logiques
Systemes logiques
 
Chapitre 1 arbres de recherche
Chapitre 1 arbres de rechercheChapitre 1 arbres de recherche
Chapitre 1 arbres de recherche
 
Treillis isostatiques cour et TD.pdf
Treillis isostatiques cour et TD.pdfTreillis isostatiques cour et TD.pdf
Treillis isostatiques cour et TD.pdf
 
Fonctions chaine
Fonctions chaineFonctions chaine
Fonctions chaine
 
Les algorithmes d'arithmetique
Les algorithmes d'arithmetiqueLes algorithmes d'arithmetique
Les algorithmes d'arithmetique
 
Chap3 programmation modulaire en python
Chap3 programmation modulaire en pythonChap3 programmation modulaire en python
Chap3 programmation modulaire en python
 
Récursivité
RécursivitéRécursivité
Récursivité
 
Examen logseq21
Examen logseq21Examen logseq21
Examen logseq21
 
Exercices corriges nombres_complexes
Exercices corriges nombres_complexesExercices corriges nombres_complexes
Exercices corriges nombres_complexes
 
Arbre et algorithme de recherche
Arbre et algorithme de rechercheArbre et algorithme de recherche
Arbre et algorithme de recherche
 

Similaire à BAC 2022 - NSI - Jour 2

Td logique
Td logiqueTd logique
CAPES maths 2019 composition 1 (option informatique)
CAPES maths 2019 composition 1 (option informatique)CAPES maths 2019 composition 1 (option informatique)
CAPES maths 2019 composition 1 (option informatique)
Dany-Jack Mercier
 
Tp01
Tp01Tp01
Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)
Hichem Kemali
 
Bac s 2014_centres_etrangers
Bac s 2014_centres_etrangersBac s 2014_centres_etrangers
Bac s 2014_centres_etrangersFabrice Lallemand
 
Les vecteurs seconde2020.pptx
Les vecteurs seconde2020.pptxLes vecteurs seconde2020.pptx
Les vecteurs seconde2020.pptx
rezgui10
 
Chaitre 3 Fonctions logiques (1).pptx
Chaitre 3 Fonctions logiques (1).pptxChaitre 3 Fonctions logiques (1).pptx
Chaitre 3 Fonctions logiques (1).pptx
MohammedJaafari3
 
Exercices pascal fenni_2018
Exercices pascal fenni_2018Exercices pascal fenni_2018
Exercices pascal fenni_2018
salah fenni
 
Les vecteurs seconde2020.pdf
Les vecteurs seconde2020.pdfLes vecteurs seconde2020.pdf
Les vecteurs seconde2020.pdf
rezgui10
 
Matlab Travaux Pratique
Matlab Travaux Pratique Matlab Travaux Pratique
Matlab Travaux Pratique
Smee Kaem Chann
 
chap 3 complexité (3).pdf
chap 3 complexité (3).pdfchap 3 complexité (3).pdf
chap 3 complexité (3).pdf
donixwm
 
Projet fortran : pré-dimensionnement et simulation d'une colonne de distillat...
Projet fortran : pré-dimensionnement et simulation d'une colonne de distillat...Projet fortran : pré-dimensionnement et simulation d'une colonne de distillat...
Projet fortran : pré-dimensionnement et simulation d'une colonne de distillat...
Ludovic Leguillon
 
103433 flexion hyperstatique
103433 flexion hyperstatique103433 flexion hyperstatique
103433 flexion hyperstatiqueAissa Ouai
 
TP5_2020.pdf
TP5_2020.pdfTP5_2020.pdf
TP5_2020.pdf
mouradlamraoui1
 
eExercices corrigesdivers
eExercices corrigesdiverseExercices corrigesdivers
eExercices corrigesdivers
Hajar Yazine
 
Exercicescorrigesdivers
ExercicescorrigesdiversExercicescorrigesdivers
ExercicescorrigesdiversKarim Amane
 
Diviser Pour Régner
Diviser Pour RégnerDiviser Pour Régner
Diviser Pour Régner
Mestari-Mohammed
 
Ds 2006 2011
Ds 2006 2011Ds 2006 2011
Ds 2006 2011
Maha Hariri
 
Cours de Matlab
Cours de MatlabCours de Matlab

Similaire à BAC 2022 - NSI - Jour 2 (20)

Td logique
Td logiqueTd logique
Td logique
 
CAPES maths 2019 composition 1 (option informatique)
CAPES maths 2019 composition 1 (option informatique)CAPES maths 2019 composition 1 (option informatique)
CAPES maths 2019 composition 1 (option informatique)
 
Tp01
Tp01Tp01
Tp01
 
Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)
 
Bac s 2014_centres_etrangers
Bac s 2014_centres_etrangersBac s 2014_centres_etrangers
Bac s 2014_centres_etrangers
 
Les vecteurs seconde2020.pptx
Les vecteurs seconde2020.pptxLes vecteurs seconde2020.pptx
Les vecteurs seconde2020.pptx
 
Chaitre 3 Fonctions logiques (1).pptx
Chaitre 3 Fonctions logiques (1).pptxChaitre 3 Fonctions logiques (1).pptx
Chaitre 3 Fonctions logiques (1).pptx
 
Exercices pascal fenni_2018
Exercices pascal fenni_2018Exercices pascal fenni_2018
Exercices pascal fenni_2018
 
Les vecteurs seconde2020.pdf
Les vecteurs seconde2020.pdfLes vecteurs seconde2020.pdf
Les vecteurs seconde2020.pdf
 
Matlab Travaux Pratique
Matlab Travaux Pratique Matlab Travaux Pratique
Matlab Travaux Pratique
 
Rapport MOGPL
Rapport MOGPLRapport MOGPL
Rapport MOGPL
 
chap 3 complexité (3).pdf
chap 3 complexité (3).pdfchap 3 complexité (3).pdf
chap 3 complexité (3).pdf
 
Projet fortran : pré-dimensionnement et simulation d'une colonne de distillat...
Projet fortran : pré-dimensionnement et simulation d'une colonne de distillat...Projet fortran : pré-dimensionnement et simulation d'une colonne de distillat...
Projet fortran : pré-dimensionnement et simulation d'une colonne de distillat...
 
103433 flexion hyperstatique
103433 flexion hyperstatique103433 flexion hyperstatique
103433 flexion hyperstatique
 
TP5_2020.pdf
TP5_2020.pdfTP5_2020.pdf
TP5_2020.pdf
 
eExercices corrigesdivers
eExercices corrigesdiverseExercices corrigesdivers
eExercices corrigesdivers
 
Exercicescorrigesdivers
ExercicescorrigesdiversExercicescorrigesdivers
Exercicescorrigesdivers
 
Diviser Pour Régner
Diviser Pour RégnerDiviser Pour Régner
Diviser Pour Régner
 
Ds 2006 2011
Ds 2006 2011Ds 2006 2011
Ds 2006 2011
 
Cours de Matlab
Cours de MatlabCours de Matlab
Cours de Matlab
 

Plus de LETUDIANT1

bac 2022 correction sujet 2 OK
bac 2022 correction sujet 2 OKbac 2022 correction sujet 2 OK
bac 2022 correction sujet 2 OK
LETUDIANT1
 
Correction bac STSS 2022
Correction bac STSS 2022Correction bac STSS 2022
Correction bac STSS 2022
LETUDIANT1
 
bac 2022 - correction SES jour 2
bac 2022 - correction SES jour 2bac 2022 - correction SES jour 2
bac 2022 - correction SES jour 2
LETUDIANT1
 
Correction HLP
Correction HLPCorrection HLP
Correction HLP
LETUDIANT1
 
bac 2022 correction HGGSP Jour 2
bac 2022 correction HGGSP Jour 2bac 2022 correction HGGSP Jour 2
bac 2022 correction HGGSP Jour 2
LETUDIANT1
 
Bac 2022 Correction SVT Jour 2
Bac 2022 Correction SVT Jour 2Bac 2022 Correction SVT Jour 2
Bac 2022 Correction SVT Jour 2
LETUDIANT1
 
Correction bac LLCER anglais
Correction bac LLCER anglaisCorrection bac LLCER anglais
Correction bac LLCER anglais
LETUDIANT1
 
Correction bac LLCER anglais
Correction bac LLCER anglaisCorrection bac LLCER anglais
Correction bac LLCER anglais
LETUDIANT1
 
Correction-bac-physique-chimie-12.05.pdf
Correction-bac-physique-chimie-12.05.pdfCorrection-bac-physique-chimie-12.05.pdf
Correction-bac-physique-chimie-12.05.pdf
LETUDIANT1
 
Bac 2022 - Physique Chimie Sujet jour 2
Bac 2022 - Physique Chimie Sujet jour 2Bac 2022 - Physique Chimie Sujet jour 2
Bac 2022 - Physique Chimie Sujet jour 2
LETUDIANT1
 
BAC 2022 - SVT
BAC 2022 - SVTBAC 2022 - SVT
BAC 2022 - SVT
LETUDIANT1
 
22-LLCERALME1.pdf
22-LLCERALME1.pdf22-LLCERALME1.pdf
22-LLCERALME1.pdf
LETUDIANT1
 
BAC 2022 STMG éco droit Sujet 2
BAC 2022 STMG éco droit Sujet 2BAC 2022 STMG éco droit Sujet 2
BAC 2022 STMG éco droit Sujet 2
LETUDIANT1
 
22-LLCERPort.pdf
22-LLCERPort.pdf22-LLCERPort.pdf
22-LLCERPort.pdf
LETUDIANT1
 
22-LLCERITME1.pdf
22-LLCERITME1.pdf22-LLCERITME1.pdf
22-LLCERITME1.pdf
LETUDIANT1
 
22-LLCERESPA.pdf
22-LLCERESPA.pdf22-LLCERESPA.pdf
22-LLCERESPA.pdf
LETUDIANT1
 
BAC 2022 - Ingénierie, innovation et développement durable
BAC 2022 - Ingénierie, innovation et développement durable BAC 2022 - Ingénierie, innovation et développement durable
BAC 2022 - Ingénierie, innovation et développement durable
LETUDIANT1
 
bac 2022 HLP Sujet jour 2
bac 2022 HLP Sujet jour 2bac 2022 HLP Sujet jour 2
bac 2022 HLP Sujet jour 2
LETUDIANT1
 
22-LLCERANGLAIS.pdf
22-LLCERANGLAIS.pdf22-LLCERANGLAIS.pdf
22-LLCERANGLAIS.pdf
LETUDIANT1
 
BAC 2022 - SES - Jour 2
BAC 2022 - SES - Jour 2BAC 2022 - SES - Jour 2
BAC 2022 - SES - Jour 2
LETUDIANT1
 

Plus de LETUDIANT1 (20)

bac 2022 correction sujet 2 OK
bac 2022 correction sujet 2 OKbac 2022 correction sujet 2 OK
bac 2022 correction sujet 2 OK
 
Correction bac STSS 2022
Correction bac STSS 2022Correction bac STSS 2022
Correction bac STSS 2022
 
bac 2022 - correction SES jour 2
bac 2022 - correction SES jour 2bac 2022 - correction SES jour 2
bac 2022 - correction SES jour 2
 
Correction HLP
Correction HLPCorrection HLP
Correction HLP
 
bac 2022 correction HGGSP Jour 2
bac 2022 correction HGGSP Jour 2bac 2022 correction HGGSP Jour 2
bac 2022 correction HGGSP Jour 2
 
Bac 2022 Correction SVT Jour 2
Bac 2022 Correction SVT Jour 2Bac 2022 Correction SVT Jour 2
Bac 2022 Correction SVT Jour 2
 
Correction bac LLCER anglais
Correction bac LLCER anglaisCorrection bac LLCER anglais
Correction bac LLCER anglais
 
Correction bac LLCER anglais
Correction bac LLCER anglaisCorrection bac LLCER anglais
Correction bac LLCER anglais
 
Correction-bac-physique-chimie-12.05.pdf
Correction-bac-physique-chimie-12.05.pdfCorrection-bac-physique-chimie-12.05.pdf
Correction-bac-physique-chimie-12.05.pdf
 
Bac 2022 - Physique Chimie Sujet jour 2
Bac 2022 - Physique Chimie Sujet jour 2Bac 2022 - Physique Chimie Sujet jour 2
Bac 2022 - Physique Chimie Sujet jour 2
 
BAC 2022 - SVT
BAC 2022 - SVTBAC 2022 - SVT
BAC 2022 - SVT
 
22-LLCERALME1.pdf
22-LLCERALME1.pdf22-LLCERALME1.pdf
22-LLCERALME1.pdf
 
BAC 2022 STMG éco droit Sujet 2
BAC 2022 STMG éco droit Sujet 2BAC 2022 STMG éco droit Sujet 2
BAC 2022 STMG éco droit Sujet 2
 
22-LLCERPort.pdf
22-LLCERPort.pdf22-LLCERPort.pdf
22-LLCERPort.pdf
 
22-LLCERITME1.pdf
22-LLCERITME1.pdf22-LLCERITME1.pdf
22-LLCERITME1.pdf
 
22-LLCERESPA.pdf
22-LLCERESPA.pdf22-LLCERESPA.pdf
22-LLCERESPA.pdf
 
BAC 2022 - Ingénierie, innovation et développement durable
BAC 2022 - Ingénierie, innovation et développement durable BAC 2022 - Ingénierie, innovation et développement durable
BAC 2022 - Ingénierie, innovation et développement durable
 
bac 2022 HLP Sujet jour 2
bac 2022 HLP Sujet jour 2bac 2022 HLP Sujet jour 2
bac 2022 HLP Sujet jour 2
 
22-LLCERANGLAIS.pdf
22-LLCERANGLAIS.pdf22-LLCERANGLAIS.pdf
22-LLCERANGLAIS.pdf
 
BAC 2022 - SES - Jour 2
BAC 2022 - SES - Jour 2BAC 2022 - SES - Jour 2
BAC 2022 - SES - Jour 2
 

Dernier

Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
cristionobedi
 
Procédure consignation Lock Out Tag Out.pptx
Procédure consignation  Lock Out Tag Out.pptxProcédure consignation  Lock Out Tag Out.pptx
Procédure consignation Lock Out Tag Out.pptx
caggoune66
 
Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...
Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...
Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...
mrelmejri
 
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La JeunesseConseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
Oscar Smith
 
Iris van Herpen. pptx
Iris         van        Herpen.      pptxIris         van        Herpen.      pptx
Iris van Herpen. pptx
Txaruka
 
Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...
Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...
Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...
M2i Formation
 
Iris van Herpen. pptx
Iris         van         Herpen.      pptxIris         van         Herpen.      pptx
Iris van Herpen. pptx
Txaruka
 
Burkina Faso library newsletter May 2024
Burkina Faso library newsletter May 2024Burkina Faso library newsletter May 2024
Burkina Faso library newsletter May 2024
Friends of African Village Libraries
 
Edito-B1-francais Manuel to learning.pdf
Edito-B1-francais Manuel to learning.pdfEdito-B1-francais Manuel to learning.pdf
Edito-B1-francais Manuel to learning.pdf
WarlockeTamagafk
 
Newsletter SPW Agriculture en province du Luxembourg du 12-06-24
Newsletter SPW Agriculture en province du Luxembourg du 12-06-24Newsletter SPW Agriculture en province du Luxembourg du 12-06-24
Newsletter SPW Agriculture en province du Luxembourg du 12-06-24
BenotGeorges3
 
Iris van Herpen. pptx
Iris            van        Herpen.     pptxIris            van        Herpen.     pptx
Iris van Herpen. pptx
Txaruka
 
Iris et les hommes.pptx
Iris      et         les      hommes.pptxIris      et         les      hommes.pptx
Iris et les hommes.pptx
Txaruka
 
Cycle de Formation Théâtrale 2024 / 2025
Cycle de Formation Théâtrale 2024 / 2025Cycle de Formation Théâtrale 2024 / 2025
Cycle de Formation Théâtrale 2024 / 2025
Billy DEYLORD
 

Dernier (13)

Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
 
Procédure consignation Lock Out Tag Out.pptx
Procédure consignation  Lock Out Tag Out.pptxProcédure consignation  Lock Out Tag Out.pptx
Procédure consignation Lock Out Tag Out.pptx
 
Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...
Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...
Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...
 
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La JeunesseConseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
 
Iris van Herpen. pptx
Iris         van        Herpen.      pptxIris         van        Herpen.      pptx
Iris van Herpen. pptx
 
Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...
Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...
Formation M2i - Onboarding réussi - les clés pour intégrer efficacement vos n...
 
Iris van Herpen. pptx
Iris         van         Herpen.      pptxIris         van         Herpen.      pptx
Iris van Herpen. pptx
 
Burkina Faso library newsletter May 2024
Burkina Faso library newsletter May 2024Burkina Faso library newsletter May 2024
Burkina Faso library newsletter May 2024
 
Edito-B1-francais Manuel to learning.pdf
Edito-B1-francais Manuel to learning.pdfEdito-B1-francais Manuel to learning.pdf
Edito-B1-francais Manuel to learning.pdf
 
Newsletter SPW Agriculture en province du Luxembourg du 12-06-24
Newsletter SPW Agriculture en province du Luxembourg du 12-06-24Newsletter SPW Agriculture en province du Luxembourg du 12-06-24
Newsletter SPW Agriculture en province du Luxembourg du 12-06-24
 
Iris van Herpen. pptx
Iris            van        Herpen.     pptxIris            van        Herpen.     pptx
Iris van Herpen. pptx
 
Iris et les hommes.pptx
Iris      et         les      hommes.pptxIris      et         les      hommes.pptx
Iris et les hommes.pptx
 
Cycle de Formation Théâtrale 2024 / 2025
Cycle de Formation Théâtrale 2024 / 2025Cycle de Formation Théâtrale 2024 / 2025
Cycle de Formation Théâtrale 2024 / 2025
 

BAC 2022 - NSI - Jour 2

  • 1. 22-NSIJ2ME1 Page : 1/14 BACCALAURÉAT GÉNÉRAL ÉPREUVE D’ENSEIGNEMENT DE SPÉCIALITÉ SESSION 2022 NUMÉRIQUE ET SCIENCES INFORMATIQUES Jeudi 12 mai 2022 Durée de l’épreuve : 3 heures 30 L’usage de la calculatrice n’est pas autorisé. Dès que ce sujet vous est remis, assurez-vous qu’il est complet. Ce sujet comporte 14 pages numérotées de 1/14 à 14 /14. Le candidat traite au choix 3 exercices parmi les 5 exercices proposés Chaque exercice est noté sur 4 points.
  • 2. 22-NSIJ2ME1 Page : 2/14 EXERCICE 1 (4 points) Cet exercice porte sur les arbres binaires de recherche, la programmation orientée objet et la récursivité. Dans cet exercice, la taille d’un arbre est le nombre de nœuds qu’il contient. Sa hauteur est le nombre de nœuds du plus long chemin qui joint le nœud racine à l’une des feuilles (nœuds sans sous-arbres). On convient que la hauteur d’un arbre ne contenant qu’un nœud vaut 1 et la hauteur de l’arbre vide vaut 0. 1. On considère l’arbre binaire représenté ci-dessous: Figure 1 a. Donner la taille de cet arbre. b. Donner la hauteur de cet arbre. c. Représenter sur la copie le sous-arbre droit du nœud de valeur 15. d. Justifier que l’arbre de la figure 1 est un arbre binaire de recherche. e. On insère la valeur 17 dans l’arbre de la figure 1 de telle sorte que 17 soit une nouvelle feuille de l’arbre et que le nouvel arbre obtenu soit encore un arbre binaire de recherche. Représenter sur la copie ce nouvel arbre. 2. On considère la classe Noeud définie de la façon suivante en Python : 1 class Noeud: 2 def __init__(self, g, v, d): 3 self.gauche = g 4 self.valeur = v 5 self.droit = d a. Parmi les trois instructions (A), (B) et (C) suivantes, écrire sur la copie la lettre correspondant à celle qui construit et stocke dans la variable abr l’arbre représenté ci-contre. (A) abr=Noeud(Noeud(Noeud(None,13,None),15,None),21,None) (B) abr=Noeud(None,13,Noeud(Noeud(None,15,None),21,None)) (C) abr=Noeud(Noeud(None,13,None),15,Noeud(None,21,None))
  • 3. 22-NSIJ2ME1 Page : 3/14 b. Recopier et compléter la ligne 7 du code de la fonction ins ci-dessous qui prend en paramètres une valeur v et un arbre binaire de recherche abr et qui renvoie l’arbre obtenu suite à l’insertion de la valeur v dans l’arbre abr. Les lignes 8 et 9 permettent de ne pas insérer la valeur v si celle-ci est déjà présente dans abr. 1 def ins(v, abr): 2 if abr is None: 3 return Noeud(None, v, None) 4 if v > abr.valeur: 5 return Noeud(abr.gauche,abr.valeur,ins(v,abr.droit)) 6 elif v < abr.valeur: 7 return ............................................ 8 else: 9 return abr 3. La fonction nb_sup prend en paramètres une valeur v et un arbre binaire de recherche abr et renvoie le nombre de valeurs supérieures ou égales à la valeur v dans l’arbre abr. Le code de cette fonction nb_sup est donné ci-dessous : 1 def nb_sup(v, abr): 2 if abr is None: 3 return 0 4 else: 5 if abr.valeur >= v: 6 return 1+nb_sup(v, abr.gauche)+nb_sup(v, abr.droit) 7 else: 8 return nb_sup(v, abr.gauche)+nb_sup(v, abr.droit) a. On exécute l’instruction nb_sup(16, abr) dans laquelle abr est l’arbre initial de la figure 1. Déterminer le nombre d’appels à la fonction nb_sup. b. L’arbre passé en paramètre étant un arbre binaire de recherche, on peut améliorer la fonction nb_sup précédente afin de réduire ce nombre d’appels. Écrire sur la copie le code modifié de cette fonction.
  • 4. 22-NSIJ2ME1 Page : 4/14 EXERCICE 2 (4 points) Cet exercice porte sur les structures de données. La poussette est un jeu de cartes en solitaire. Cet exercice propose une version simplifiée de ce jeu basée sur des nombres. On considère une pile constituée de nombres entiers tirés aléatoirement. Le jeu consiste à réduire la pile suivant la règle suivante : quand la pile contient du haut vers le bas un triplet dont les termes du haut et du bas sont de même parité, on supprime l'élément central. Par exemple :  Si la pile contient du haut vers le bas, le triplet 1 0 3, on supprime le 0.  Si la pile contient du haut vers le bas, le triplet 1 0 8, la pile reste inchangée. On parcourt la pile ainsi de haut en bas et on procède aux réductions. Arrivé en bas de la pile, on recommence la réduction en repartant du sommet de la pile jusqu'à ce que la pile ne soit plus réductible. Une partie est « gagnante » lorsque la pile finale est réduite à deux éléments exactement. Voici un exemple détaillé de déroulement d'une partie. 1. a. Donner les différentes étapes de réduction de la pile suivante :
  • 5. 22-NSIJ2ME1 Page : 5/14 b. Parmi les piles proposées ci-dessous, donner celle qui est gagnante. Pile A Pile B Pile C L'interface d'une pile est proposée ci-dessous. On utilisera uniquement les fonctions figurant dans le tableau suivant : 2. La fonction reduire_triplet_au_sommet permet de supprimer l'élément central des trois premiers éléments en partant du haut de la pile, si l'élément du bas et du haut sont de même parité. Les éléments dépilés et non supprimés sont replacés dans le bon ordre dans la pile. Recopier et compléter sur la copie le code de la fonction reduire_triplet_au_sommet prenant une pile p en paramètre et qui la modifie en place. Cette fonction ne renvoie donc rien. 1 def reduire_triplet_au_sommet(p): 2 a = depiler(p) 3 b = depiler(p) 4 c = sommet(p) 5 if a % 2 != .... : 6 empiler(p, ...) 7 empiler(p, ...) Structure de données abstraite : Pile • creer_pile_vide() renvoie une pile vide • est_vide(p) renvoie True si p est vide, False sinon • empiler(p, element) ajoute element au sommet de p • depiler(p) retire l'élément au sommet de p et le renvoie • sommet(p) renvoie l'élément au sommet de p sans le retirer de p • taille(p): renvoie le nombre d'éléments de p
  • 6. 22-NSIJ2ME1 Page : 6/14 3. On se propose maintenant d'écrire une fonction parcourir_pile_en_reduisant qui parcourt la pile du haut vers le bas en procédant aux réductions pour chaque triplet rencontré quand cela est possible. a. Donner la taille minimale que doit avoir une pile pour être réductible. b. Recopier et compléter sur la copie : 1 def parcourir_pile_en_reduisant(p): 2 q = creer_pile_vide() 3 while taille(p) >= ....: 4 reduire_triplet_au_sommet(p) 5 e = depiler(p) 6 empiler(q, e) 7 while not est_vide(q): 8 ............. 9 ............. 10 return p 4. Partant d'une pile d'entiers p, on propose ici d'implémenter une fonction récursive jouer renvoyant la pile p entièrement simplifiée. Une fois la pile parcourue de haut en bas et réduite, on procède à nouveau à sa réduction à condition que cela soit possible. Ainsi :  Si la pile p n’a pas subi de réduction, on la renvoie.  Sinon on appelle à nouveau la fonction jouer , prenant en paramètre la pile réduite. Recopier et compléter sur la copie le code ci-dessous : 1 def jouer(p): 2 q = parcourir_pile_en_reduisant(p) 3 if .............. : 4 return p 5 else: 6 return jouer(...)
  • 7. 22-NSIJ2ME1 Page : 7/14 EXERCICE 3 (4 points) Cet exercice porte sur les réseaux et les protocoles de routages. Rappels : Une adresse IPv4 est composée de 4 octets, soit 32 bits. Elle est notée a.b.c.d, où a, b, c et d sont les valeurs des 4 octets. La notation a.b.c.d/n signifie que les n premiers bits de l’adresse IP représentent la partie « réseau », les bits qui suivent représentent la partie « machine ». L’adresse IPv4 dont tous les bits de la partie « machine » sont à 0 est appelée « adresse du réseau ». L’adresse IPv4 dont tous les bits de la partie « machine » sont à 1 est appelée « adresse de diffusion ». On considère le réseau représenté sur la Figure 1 ci-dessous : Figure 1 : schéma du réseau 1. On considère la machine d'adresse IPv4 192.168.1.1/24 a. Donner l’adresse du réseau sur lequel se trouve cette machine. b. Donner l'adresse de diffusion (broadcast) de ce réseau. c. Donner le nombre maximal de machines que l'on peut connecter sur ce réseau. d. On souhaite ajouter une machine sur ce réseau, proposer une adresse IPv4 possible pour cette machine. 2. a. La machine d'adresse IPv4 192.168.1.1 transmet un paquet IPv4 à la machine d'adresse IPv4 192.168.4.2 Donner toutes les routes pouvant être empruntées par ce paquet IPv4, chaque routeur ne pouvant être traversé qu'une seule fois.
  • 8. 22-NSIJ2ME1 Page : 8/14 b. Expliquer l’utilité d’avoir plusieurs routes possibles reliant les réseaux 192.168.1.0/24 et 192.168.4.0/24 3. Dans cette question, on suppose que le protocole de routage mis en place dans le réseau est RIP. Ce protocole consiste à minimiser le nombre de sauts. Le schéma du réseau est celui de la figure 1. Les tables de routage utilisées sont données ci-dessous : Routeur A Routeur B Routeur C Destination passe par Destination passe par Destination passe par B … A A A A C … C C B B D E D C D E E … E C E E F C F C F F Routeur D Routeur E Routeur F Destination passe par Destination passe par Destination passe par A E A A A C B F B C B C C F C C C C E E D D D D F F F C E C Tables de routage a. Recopier et compléter sur la copie la table de routage du routeur A. b. Un paquet IP doit aller du routeur B au routeur D. En utilisant les tables de routage, donner le parcours emprunté par celui-ci. c. Les connexions entre les routeurs B-C et A-E étant coupées, sur la copie, réécrire les tables de routage des routeurs A, B et C. d. Déterminer le nouveau parcours emprunté par le paquet IP pour aller du routeur B au routeur D. 4. Dans cette question, on suppose que le protocole de routage mis en place dans le réseau est OSPF. Ce protocole consiste à minimiser la somme des coûts des liaisons empruntées. Le coût d’une liaison est défini par la relation coût = où d représente le débit en bit/s et coût est sans unité. Le schéma du réseau est celui de la figure 1.
  • 9. 22-NSIJ2ME1 Page : 9/14 a. Déterminer le coût des liaisons Ethernet (d = 107 bit/s), Fast-Ethernet (d = 108 bit/s) et Fibre (d = 109 bit/s). b. On veut représenter schématiquement le réseau de routeurs à partir du schéma du réseau figure 1. Recopier sur la copie le schéma ci-dessous et tracer les liaisons entre les routeurs en y indiquant le coût. c. Un paquet IPv4 doit être acheminé d'une machine ayant pour adresse IPv4 192.168.2.1 à une machine ayant pour adresse IPv4 192.168.4.1 Écrire les routes possibles, c'est à dire la liste des routeurs traversés, et le coût de chacune de ces routes, chaque routeur ne pouvant être traversé qu'une seule fois. d. Donner, en la justifiant, la route qui sera empruntée par un paquet IPv4 pour aller d'une machine ayant pour adresse IPv4 192.168.2.1 à une machine ayant pour adresse IPv4 192.168.4.1
  • 10. 22-NSIJ2ME1 Page : 10/14 EXERCICE 4 (4 points) Cet exercice porte sur les bases de données relationnelles et le langage SQL. L’énoncé de cet exercice utilise les mots clefs du langage SQL suivants : SELECT, FROM, WHERE, JOIN ON, UPDATE, SET, INSERT INTO VALUES, COUNT, ORDER BY.  La clause ORDER BY suivie d'un attribut permet de trier les résultats par ordre croissant de l'attribut ;  COUNT(*) renvoie le nombre de lignes d'une requête ; Un musicien souhaite créer une base de données relationnelle contenant ses morceaux et interprètes préférés. Pour cela il utilise le langage SQL. Il crée une table morceaux qui contient entre autres les titres des morceaux et leur année de sortie : id_morceau titre annee id_interprete 1 Like a Rolling Stone 1965 1 2 Respect 1967 2 3 Imagine 1970 3 4 Hey Jude 1968 4 5 Smells Like Teen Spirit 1991 5 6 I Want To hold Your Hand 1963 4 Il crée la table interpretes qui contient les interprètes et leur pays d'origine : id_interprete nom pays 1 Bob Dylan États-Unis 2 Aretha Franklin États-Unis 3 John Lennon Angleterre 4 The Beatles Angleterre 5 Nirvana États-Unis id_morceau de la table morceaux et id_interprete de la table interpretes sont des clés primaires. L’attribut id_interprete de la table morceaux fait directement référence à la clé primaire de la table interpretes.
  • 11. 22-NSIJ2ME1 Page : 11/14 1. a. Écrire le résultat de la requête suivante : SELECT titre FROM morceaux WHERE id_interprete = 4; b. Écrire une requête permettant d'afficher les noms des interprètes originaires d'Angleterre. c. Écrire le résultat de la requête suivante : SELECT titre, annee FROM morceaux ORDER BY annee; d. Écrire une requête permettant de calculer le nombre de morceaux dans la table morceaux. e. Écrire une requête affichant les titres des morceaux par ordre alphabétique. 2. a. Citer, en justifiant, la clé étrangère de la table morceaux. b. Écrire un schéma relationnel des tables interpretes et morceaux. c. Expliquer pourquoi la requête suivante produit une erreur : INSERT INTO interpretes VALUES (1, 'Trust', 'France'); 3. a. Une erreur de saisie a été faite. Écrire une requête SQL permettant de changer l’année du titre « Imagine » en 1971. b. Écrire une requête SQL permettant d'ajouter l'interprète « The Who » venant d'Angleterre à la table interpretes. On lui donnera un id_interprete égal à 6. c. Écrire une requête SQL permettant d'ajouter le titre « My Generation » de « The Who » à la table morceaux. Ce titre est sorti en 1965 et on lui donnera un id_morceau de 7 ainsi que l'id_interprete qui conviendra. 4. Écrire une requête permettant de lister les titres des interprètes venant des États- Unis.
  • 12. 22-NSIJ2ME1 Page : 12/14 EXERCICE 5 (4 points) Cet exercice aborde la programmation objet et la méthode diviser pour régner. Un labyrinthe est composé de cellules possédant chacune quatre murs (voir ci- dessus). La cellule en haut à gauche du labyrinthe est de coordonnées (0, 0). On définit la classe Cellule ci-dessous. Le constructeur possède un attribut murs de type dict dont les clés sont ’N’, ’E’, ’S’ et ’O’ et dont les valeurs sont des booléens (True si le mur est présent et False sinon). class Cellule: def __init__(self, murNord, murEst, murSud, murOuest): self.murs={'N':murNord,'E':murEst, 'S':murSud,'O':murOuest} 1. Recopier et compléter sur la copie l'instruction Python suivante permettant de créer une instance cellule de la classe Cellule possédant tous ses murs sauf le mur Est. cellule = Cellule(...) 2. Le constructeur de la classe Labyrinthe ci-dessous possède un seul attribut grille. La méthode construire_grille permet de construire un tableau à deux dimensions hauteur et longueur contenant des cellules possédant chacune ses quatre murs. Recopier et compléter sur la copie les lignes 6 à 10 de la classe Labyrinthe. 1 class Labyrinthe: 2 def __init__(self, hauteur, longueur): 3 self.grille=self.construire_grille(hauteur, longueur) 4 def construire_grille(self, hauteur, longueur): 5 grille = [] 6 for i in range(...): 7 ligne = [] 8 for j in range(...): 9 cellule = ... 10 ligne.append(...) 11 grille.append(ligne) 12 return grille
  • 13. 22-NSIJ2ME1 Page : 13/14 Pour générer un labyrinthe, on munit la classe Labyrinthe d'une méthode creer_passage permettant de supprimer des murs entre deux cellules ayant un côté commun afin de créer un passage. Cette méthode prend en paramètres les coordonnées c1_lig, c1_col d'une cellule notée cellule1 et les coordonnées c2_lig, c2_col d'une cellule notée cellule2 et crée un passage entre cellule1 et cellule2. 13 def creer_passage(self, c1_lig, c1_col, c2_lig, c2_col): 14 cellule1 = self.grille[c1_lig][c1_col] 15 cellule2 = self.grille[c2_lig][c2_col] 16 # cellule2 au Nord de cellule1 17 if c1_lig - c2_lig == 1 and c1_col == c2_col: 18 cellule1.murs['N'] = False 19 .... 20 # cellule2 à l’Ouest de cellule1 21 elif .... 22 .... 23 .... 3. La ligne 18 permet de supprimer le mur Nord de cellule1. Un mur de cellule2 doit aussi être supprimé pour libérer un passage entre cellule1 et cellule2. Écrire l'instruction Python que l'on doit ajouter à la ligne 19. 4. Recopier et compléter sur la copie le code Python des lignes 21 à 23 qui permettent le traitement du cas où cellule2 est à l’Ouest de cellule1 : Pour créer un labyrinthe, on utilise la méthode diviser pour régner en appliquant récursivement l'algorithme creer_labyrinthe sur des sous-grilles obtenues en coupant la grille en deux puis en reliant les deux sous-labyrinthes en créant un passage entre eux.
  • 14. 22-NSIJ2ME1 Page : 14/14 La méthode creer_labyrinthe permet, à partir d'une grille, de créer un labyrinthe de hauteur haut et de longueur long dont la cellule en haut à gauche est de coordonnées (ligne, colonne). Le cas de base correspond à la situation où la grille est de hauteur 1 ou de largeur 1. Il suffit alors de supprimer tous les murs intérieurs de la grille. 5. Recopier et compléter sur la copie les lignes 25 à 30 de la méthode creer_labyrinthe traitant le cas de base. 24 def creer_labyrinthe(self, ligne, colonne, haut, long): 25 if haut == 1 : # Cas de base 26 for k in range(...): 27 self.creer_passage(ligne, k, ligne, k+1) 28 elif long == 1: # Cas de base 29 for k in range(...): 30 self.creer_passage(...) 31 else: # Appels récursifs 32 # Code non étudié (Ne pas compléter) 6. Dans cette question, on considère une grille de hauteur haut = 4 et de longueur long = 8 dont chaque cellule possède tous ses murs. On fixe les deux contraintes supplémentaires suivantes sur la méthode creer_labyrinthe :  Si haut ≥ long, on coupe horizontalement la grille en deux sous- labyrinthes de même dimension.  Si haut < long, on coupe verticalement la grille en deux sous-labyrinthes de même dimension. L'ouverture du passage entre les deux sous-labyrinthes se fait le plus au Nord pour une coupe verticale et le plus à l'Ouest pour une coupe horizontale. Dessiner le labyrinthe obtenu suite à l'exécution complète de l'algorithme creer_labyrinthe sur cette grille.