Tous les sujets du Bac 2023 · Toutes les annales du Bac de Numérique et Sciences Informatiques

Sujet du Bac Numérique et Sciences Informatiques 2023 · Sujets zéro et spécimens Sujet 2

Sujet du Bac de Numérique et Sciences Informatiques 2023, Sujets zéro et spécimens Sujet 2 : 5 exercices corrigés. Thèmes : Arbres. Gratuit.

Thèmes du sujet : Arbres : vocabulaire, mesures et algorithmique · Bases de données relationnelles, SGBD et langage SQL · Architectures matérielles et systèmes d'exploitation · Protocoles de routage : RIP et OSPF · Récursivité

Exercice 1 - Commandes Linux · Architectures matérielles et systèmes d'exploitation

EXERCICE 1 (4 points)

Cet exercice est consacré aux commandes de base en lignes de commande sous Linux, au traitement des données en tables et aux bases de données (modèle relationnel, base de données relationnelle, langage SQL).

1. Sur une machine équipée du système d'exploitation GNU/Linux, les informations sont enregistrées dans un fichier du répertoire collections.

Dans le schéma ci-dessous, on trouve des répertoires (encadrés par un rectangle, exemple: travail) et des fichiers (les noms non encadrés, comme rapport.odt).

a.

Sachant que le répertoire courant est le répertoire fiches, indiquer les numéros de toutes les commandes parmi celles proposées ci-dessous qui permettent de se positionner dans le répertoire timbres:

b.

Donner une commande qui permet d'accéder au répertoire timbres à partir de la racine.

Exercice 1 - Protocole OSPF · Protocoles de routage : RIP et OSPF

EXERCICE 1 (4 points)

Cet exercice est consacré aux commandes de base en lignes de commande sous Linux, au traitement des données en tables et aux bases de données (modèle relationnel, base de données relationnelle, langage SQL).

1. Sur une machine équipée du système d'exploitation GNU/Linux, les informations sont enregistrées dans un fichier du répertoire collections.

Dans le schéma ci-dessous, on trouve des répertoires (encadrés par un rectangle, exemple: travail) et des fichiers (les noms non encadrés, comme rapport.odt).

2. On considère le réseau ci-dessous dans lequel:

les nœuds A, B, C, D, E, F et G sont des routeurs,

le type de liaison est précisé entre chaque routeur.

On rappelle que la bande passante des liaisons FTTH (fibre optique: Fiber To The Home) est de 10 Gbit/s10\text{ Gbit/s} et celle des liaisons FastEthernet de 100 Mbit/s100\text{ Mbit/s}.

On s'intéresse au protocole de routage OSPF. Le protocole OSPF est un protocole de routage qui cherche à minimiser la somme des coûts des liaisons entre les routeurs empruntés par un paquet. Le coût CC d'une liaison est donné par:

C=108d, ouˋ d est la bande passante en bit/s de la liaison. C = \frac{10^8}{d}\text{, où } d \text{ est la bande passante en bit/s de la liaison. }

a.

Calculer le coût d'une liaison de communication par la technologie FastEthernet.

b.

Le fichier collections_timbres.csv contenu dans une machine reliée au routeur A doit être envoyé à une machine reliée au routeur G. Déterminer la route permettant de relier le routeur A au routeur G et minimisant la somme des coûts selon le protocole OSPF.

Exercice 1 - Bases de données · Bases de données relationnelles, SGBD et langage SQL

EXERCICE 1 (4 points)

Cet exercice est consacré aux commandes de base en lignes de commande sous Linux, au traitement des données en tables et aux bases de données (modèle relationnel, base de données relationnelle, langage SQL).

1. Sur une machine équipée du système d'exploitation GNU/Linux, les informations sont enregistrées dans un fichier du répertoire collections.

Dans le schéma ci-dessous, on trouve des répertoires (encadrés par un rectangle, exemple: travail) et des fichiers (les noms non encadrés, comme rapport.odt).

3. Un extrait des informations stockées dans le fichier collection_timbres.csv au format CSV est donné ci-dessous:

nom_timbre;annee_fabrication;nom_collectionneur

Gustave Eiffel;1950;Dupont

Marianne;1989;Durand

Alan Turing;2012;Dupont

4. On cherche maintenant à stocker une partie de ces informations dans une base de données relationnelle. La relation suivante a été proposée:

timbres

nom · annee_fabrication

Gustave Eiffel · 1950

Marianne · 1989

Alan Turing · 2012

Gustave Eiffel · 1989

Ada Lovelace · 1951

a.

b.

c.

d.

5. On considère maintenant la relation suivante:

collectionneurs

ref_licence · nom · prenom · annee_naissance · nbre_timbres

Hqdfapo · Dupuis · Daniel · 1953 · 53

Dfacqpe · Dupond · Jean-Pierre · 1961 · 157

Qdfqnay · Zaouï · Jamel · 1973 · 200

Aerazri · Pierre · Jean · 1967 · 130

Nzxoeqq · Dupond · Alexandra · 1960 · 61

a.

Décrire le résultat de la requête SQL ci-dessous:

UPDATE collectionneurs

SET ref_licence = 'Ythpswz'

WHERE nom = 'Dupond';

b.

6. Écrire une requête SQL qui affiche, pour chacune des personnes nées en 1963 ou après, le nom, le prénom et le nombre de timbres qu'elles possèdent dans leur collection, enregistrées dans la relation collectionneurs. On pourra utiliser certaines des clauses usuelles suivantes: SELECT, FROM, WHERE, JOIN, UPDATE, INSERT, DELETE.

Exercice 2 · Récursivité

Cet exercice est consacré à l'analyse et à l'écriture de programmes récursifs.

1. a.

Expliquer en quelques mots ce qu'est une fonction récursive.

1. b.

On considère la fonction Python suivante:

L'appel compte_rebours(3) affiche successivement les nombres 3, 2, 1 et 0. Expliquer pourquoi le programme s'arrête après l'affichage du nombre 0.

2.

En mathématiques, la factorielle d'un entier naturel nn est le produit des nombres entiers strictement positifs inférieurs ou égaux à nn. Par convention, la factorielle de 0 est 1. Par exemple:

la factorielle de 1 est 1

la factorielle de 2 est 2×1=22 \times 1 = 2

la factorielle de 3 est 3×2×1=63 \times 2 \times 1 = 6

la factorielle de 4 est 4×3×2×1=244 \times 3 \times 2 \times 1 = 24...

Recopier et compléter le programme ci-dessous afin que la fonction récursive fact renvoie la factorielle de l'entier passé en paramètre de cette fonction.

Exemple: fact(4) renvoie 24.

3.

La fonction somme_entiers_rec ci-dessous permet de calculer la somme des entiers, de 0 à l'entier naturel nn passé en paramètre.

Par exemple: pour n=0n = 0, renvoie 0; pour n=1n = 1, renvoie 0+1=10 + 1 = 1; pour n=4n = 4, renvoie 0+1+2+3+4=100 + 1 + 2 + 3 + 4 = 10.

L'instruction print(n) de la ligne 7 dans le code précédent a été insérée afin de mettre en évidence le mécanisme en œuvre au niveau des appels récursifs.

4.

Écrire en Python une fonction somme_entiers non récursive: cette fonction devra prendre en argument un entier naturel nn et renvoyer la somme des entiers de 0 à nn compris. Elle devra donc renvoyer le même résultat que la fonction somme_entiers_rec définie à la question 3.

Exemple: somme_entiers(4) renvoie 10.

Exercice 3 · Arbres : vocabulaire, mesures et algorithmique

Exercice 3 (4 points)

Cet exercice est consacré aux arbres binaires de recherche et à la notion d'objet.

1. Voici la définition d'une classe nommée ArbreBinaire, en Python:

a.

En utilisant la classe définie ci-dessus, donner un exemple d'attribut, puis un exemple de méthode.

b.

Après avoir défini la classe ArbreBinaire, on exécute les instructions Python suivantes:

r = ArbreBinaire(15)

r.insert_gauche(6)

r.insert_droit(18)

a = r.get_valeur()

b = r.get_gauche()

c = b.get_valeur()

Donner les valeurs associées aux variables a et c après l'exécution de ce code.

a =

c =

On utilise maintenant la classe ArbreBinaire pour implémenter un arbre binaire de recherche.

On utilisera la définition suivante: un arbre binaire de recherche est un arbre binaire, dans lequel:

on peut comparer les valeurs des nœuds: ce sont par exemple des nombres entiers, ou des lettres de l'alphabet.

si x est un nœud de cet arbre et y est un nœud du sous-arbre gauche de x, alors il faut que y.valeur <= x.valeur.

si x est un nœud de cet arbre et y est un nœud du sous-arbre droit de x, alors il faut que y.valeur => x.valeur.

2.

On exécute le code Python suivant. Représenter graphiquement l'arbre ainsi obtenu.

racine_r = ArbreBinaire(15)

racine_r.insert_gauche(6)

racine_r.insert_droit(18)

r_6 = racine_r.get_gauche()

r_6.insert_gauche(3)

r_6.insert_droit(7)

r_18 = racine_r.get_droit()

r_18.insert_gauche(17)

r_18.insert_droit(20)

r_3 = r_6.get_gauche()

r_3.insert_gauche(2)

3.

On a représenté sur la figure 1 ci-dessous un arbre. Justifier qu'il ne s'agit pas d'un arbre binaire de recherche. Redessiner cet arbre sur votre copie en conservant l'ensemble des valeurs {2,3,5,10,11,12,13} pour les nœuds afin qu'il devienne un arbre binaire de recherche.

4.

On considère qu'on a implémenté un objet ArbreBinaire nommé A représenté sur la figure 2.

On définit la fonction parcours_infixe suivante, qui prend en paramètre un objet ArbreBinaire T et un second paramètre parcours de type liste.

Numéro de lignes

Fonction parcours_infixe

1

2

3

4

5

6

7

def parcours_infixe(T, parcours):

""" Affiche la liste des valeurs de l'arbre """

if T is not None:

parcours_infixe(T.get_gauche(), parcours)

parcours.append(T.get_valeur())

parcours_infixe(T.get_droit(), parcours)

return parcours

Donner la liste renvoyée par l'appel suivant: parcours_infixe(A, [ ]).

Tu peux aussi réviser par thème

Entraîne-toi sur un thème avec les exercices des sujets de toutes les années.

Voir les 11 thèmes

Autres sujets de 2023

Sujet 1 (2023)