Comparaison de 2025 vers 2024

01.pdf → 48.pdf (0.998)
Texte de 01.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°01DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)On considère dans cet exercice un graphe orienté représenté sous forme de listes d’adja-cence.On suppose que les sommets sont numérotés de 0 à n-1.Par exemple, le graphe suivant:est représenté par la liste d’adjacence suivante:adj = [[1, 2], [2], [0], [0]]Écrire une fonction voisins_entrants(adj, x) qui prend en paramètre le graphedonné sous forme de liste d’adjacence et qui renvoie une liste contenant les voisins entrantsdu sommet x, c’est-à-dire les sommets y tels qu’il existe une arête de y vers x.Exemples:>>> voisins_entrants([[1, 2], [2], [0], [0]], 0)[2, 3]>>> voisins_entrants([[1, 2], [2], [0], [0]], 1)[0]2 / 3EXERCICE 2 (10 points)On considère dans cet exercice la suite de nombre suivante : 1, 11, 21, 1211, 111221, …Cette suite est construite ainsi : pour passer d’une valeur à la suivante, on la lit et on l’écritsous la forme d’un nombre. Ainsi, pour 1211 :• on lit un 1, un 2, deux 1 ;• on écrit donc en nombre 1 1, 1 2, 2 1 ;• puis on concatène 111221.Compléter la fonction nombre_suivant qui prend en entrée un nombre sous forme dechaine de caractère et qui renvoie le nombre suivant par ce procédé, encore sous forme dechaîne de caractère.def nombre_suivant(s):'''Renvoie le nombre suivant de celui representé par sen appliquant le procédé de lecture.'''resultat = ''chiffre = s[0]compte = 1for i in range(...):if s[i] == chiffre:compte = ...else:resultat += ... + ...chiffre = ......lecture_... = ... + ...resultat += lecture_chiffrereturn resultatExemples>>> nombre_suivant('1211')'111221'>>> nombre_suivant('311')'1321'3 / 3

Texte de 48.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°48DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)On considère dans cet exercice un graphe orienté représenté sous forme de listes d’adja-cence.On suppose que les sommets sont numérotés de 0 à n-1.Par exemple, le graphe suivant:est représenté par la liste d’adjacence suivante:adj = [[1, 2], [2], [0], [0]]Écrire une fonction voisins_entrants(adj, x) qui prend en paramètre le graphedonné sous forme de liste d’adjacence et qui renvoie une liste contenant les voisins entrantsdu sommet x, c’est-à-dire les sommets y tels qu’il existe une arête de y vers x.Exemples:>>> voisins_entrants([[1, 2], [2], [0], [0]], 0)[2, 3]>>> voisins_entrants([[1, 2], [2], [0], [0]], 1)[0]2 / 3EXERCICE 2 (10 points)On considère dans cet exercice la suite de nombre suivante : 1, 11, 21, 1211, 111221, …Cette suite est construite ainsi : pour passer d’une valeur à la suivante, on la lit et on l’écritsous la forme d’un nombre. Ainsi, pour 1211 :• on lit un 1, un 2, deux 1 ;• on écrit donc en nombre 1 1, 1 2, 2 1 ;• puis on concatène 111221.Compléter la fonction nombre_suivant qui prend en entrée un nombre sous forme dechaine de caractère et qui renvoie le nombre suivant par ce procédé, encore sous forme dechaîne de caractère.def nombre_suivant(s):'''Renvoie le nombre suivant de celui representé par sen appliquant le procédé de lecture.'''resultat = ''chiffre = s[0]compte = 1for i in range(...):if s[i] == chiffre:compte = ...else:resultat += ... + ...chiffre = ......lecture_... = ... + ...resultat += lecture_chiffrereturn resultatExemples>>> nombre_suivant('1211')'111221'>>> nombre_suivant('311')'1321'3 / 3
02.pdf → 05.pdf (0.998)
Texte de 02.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°02DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)Écrire une fonction max_et_indice qui prend en paramètre un tableau non vide tab(type Python list) de nombres entiers et qui renvoie la valeur du plus grand élément dece tableau ainsi que l’indice de sa première apparition dans ce tableau.L’utilisation de la fonction native max n’est pas autorisée.Exemples :>>> max_et_indice([1, 5, 6, 9, 1, 2, 3, 7, 9, 8])(9, 3)>>> max_et_indice([-2])(-2, 0)>>> max_et_indice([-1, -1, 3, 3, 3])(3, 2)>>> max_et_indice([1, 1, 1, 1])(1, 0)2 / 4EXERCICE 2 (10 points)L’ordre des gènes sur un chromosome est représenté par un tableau ordre de n casesd’entiers distincts deux à deux et compris entre 1 et n.Par exemple, ordre = [5, 4, 3, 6, 7, 2, 1, 8, 9] dans le cas n = 9.On dit qu’il y a un point de rupture dans ordre dans chacune des situations suivantes :• la première valeur de ordre n’est pas 1 ;• l’écart entre deux gènes consécutifs n’est pas égal à 1 ;• la dernière valeur de ordre n’est pas n.Par exemple, si ordre = [5, 4, 3, 6, 7, 2, 1, 8, 9] avec n = 9, on a• un point de rupture au début car 5 est différent de 1• un point de rupture entre 3 et 6 (l’écart est de 3)• un point de rupture entre 7 et 2 (l’écart est de 5)• un point de rupture entre 1 et 8 (l’écart est de 7)Il y a donc 4 points de rupture.Compléter les fonctions Python est_un_ordre et nombre_points_rupture pro-posées à la page suivante pour que :• la fonction est_un_ordre renvoie True si le tableau passé en paramètrereprésente bien un ordre de gènes de chromosome et False sinon ;• la fonction nombre_points_rupture renvoie le nombre de points de ruptured’un tableau passé en paramètre représentant l’ordre de gènes d’un chromosome.def est_un_ordre(tab):'''Renvoie True si tab est de longueur n et contient tous lesentiers de 1 à n, False sinon'''n = len(tab)# les entiers vus lors du parcoursvus = ...for x in tab:if x < ... or x >... or ...:return False... .append(...)return True3 / 4def nombre_points_rupture(ordre):'''Renvoie le nombre de point de rupture de ordre qui représenteun ordre de gènes de chromosome'''# on vérifie que ordre est un ordre de gènesassert ...n = len(ordre)nb = 0if ordre[...] != 1: # le premier n'est pas 1nb = nb + 1i = 0while i < ...:if ... not in [-1, 1]: # l'écart n'est pas 1nb = nb + 1i = i + 1if ordre[i] != ...: # le dernier n'est pas nnb = nb + 1Exemples :>>> est_un_ordre([1, 6, 2, 8, 3, 7])False>>> est_un_ordre([5, 4, 3, 6, 7, 2, 1, 8, 9])True>>> nombre_points_rupture([5, 4, 3, 6, 7, 2, 1, 8, 9])4>>> nombre_points_rupture([1, 2, 3, 4, 5])0>>> nombre_points_rupture([1, 6, 2, 8, 3, 7, 4, 5])7>>> nombre_points_rupture([2, 1, 3, 4])24 / 4

Texte de 05.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°05DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)Écrire une fonction max_et_indice qui prend en paramètre un tableau non vide tab(type Python list) de nombres entiers et qui renvoie la valeur du plus grand élément dece tableau ainsi que l’indice de sa première apparition dans ce tableau.L’utilisation de la fonction native max n’est pas autorisée.Exemples :>>> max_et_indice([1, 5, 6, 9, 1, 2, 3, 7, 9, 8])(9, 3)>>> max_et_indice([-2])(-2, 0)>>> max_et_indice([-1, -1, 3, 3, 3])(3, 2)>>> max_et_indice([1, 1, 1, 1])(1, 0)2 / 4EXERCICE 2 (10 points)L’ordre des gènes sur un chromosome est représenté par un tableau ordre de n casesd’entiers distincts deux à deux et compris entre 1 et n.Par exemple, ordre = [5, 4, 3, 6, 7, 2, 1, 8, 9] dans le cas n = 9.On dit qu’il y a un point de rupture dans ordre dans chacune des situations suivantes :• la première valeur de ordre n’est pas 1 ;• l’écart entre deux gènes consécutifs n’est pas égal à 1 ;• la dernière valeur de ordre n’est pas n.Par exemple, si ordre = [5, 4, 3, 6, 7, 2, 1, 8, 9] avec n = 9, on a• un point de rupture au début car 5 est différent de 1• un point de rupture entre 3 et 6 (l’écart est de 3)• un point de rupture entre 7 et 2 (l’écart est de 5)• un point de rupture entre 1 et 8 (l’écart est de 7)Il y a donc 4 points de rupture.Compléter les fonctions Python est_un_ordre et nombre_points_rupture pro-posées à la page suivante pour que :• la fonction est_un_ordre renvoie True si le tableau passé en paramètrereprésente bien un ordre de gènes de chromosome et False sinon ;• la fonction nombre_points_rupture renvoie le nombre de points de ruptured’un tableau passé en paramètre représentant l’ordre de gènes d’un chromosome.def est_un_ordre(tab):'''Renvoie True si tab est de longueur n et contient tous lesentiers de 1 à n, False sinon'''n = len(tab)# les entiers vus lors du parcoursvus = ...for x in tab:if x < ... or x >... or ...:return False... .append(...)return True3 / 4def nombre_points_rupture(ordre):'''Renvoie le nombre de point de rupture de ordre qui représenteun ordre de gènes de chromosome'''# on vérifie que ordre est un ordre de gènesassert ...n = len(ordre)nb = 0if ordre[...] != 1: # le premier n'est pas 1nb = nb + 1i = 0while i < ...:if ... not in [-1, 1]: # l'écart n'est pas 1nb = nb + 1i = i + 1if ordre[i] != ...: # le dernier n'est pas nnb = nb + 1return nbExemples :>>> est_un_ordre([1, 6, 2, 8, 3, 7])False>>> est_un_ordre([5, 4, 3, 6, 7, 2, 1, 8, 9])True>>> nombre_points_rupture([5, 4, 3, 6, 7, 2, 1, 8, 9])4>>> nombre_points_rupture([1, 2, 3, 4, 5])0>>> nombre_points_rupture([1, 6, 2, 8, 3, 7, 4, 5])7>>> nombre_points_rupture([2, 1, 3, 4])24 / 4
03.pdf → 28.pdf (0.986)
Texte de 03.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°03DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)On s’intéresse à la suite d’entiers définie par :• les deux premières valeurs sont égales à 1 ;• ensuite, chaque valeur est obtenue en faisant la somme des deux valeurs qui la précè-dent.La troisième valeur est donc 1+1 = 2, la quatrième est 1+2 = 3, la cinquième est 2+3 = 5,la sixième est 3 + 5 = 8, et ainsi de suite.Cette suite d’entiers est connue sous le nom de suite de Fibonacci.Écrire en Python une fonction fibonacci qui prend en paramètre un entier n supposéstrictement positif et qui renvoie le terme d’indice n de cette suite.Exemples :>>> fibonacci(1)1>>> fibonacci(2)1>>> fibonacci(25)750252 / 3EXERCICE 2 (10 points)On considère la fonction eleves_du_mois prenant en paramètres eleves et notesdeux tableaux non vides de même longueur, le premier contenant le nom des élèves et lesecond, des entiers positifs désignant leur note à un contrôle de sorte que eleves[i] aobtenu la note notes[i].Cette fonction renvoie le couple constitué de la note maximale attribuée et des noms desélèves ayant obtenu cette note regroupés dans un tableau.Ainsi, l’instruction eleves_du_mois(['a', 'b', 'c', 'd'], [15, 18, 12,18]) renvoie le couple (18, ['b', 'd']).Compléter le code suivant :def eleves_du_mois(eleves, notes):note_maxi = 0meilleurs_eleves = ...for i in range(...):if notes[i] == ...:meilleurs_eleves.append(...)elif notes[i] > note_maxi:note_maxi = ...meilleurs_eleves = [...]return (note_maxi, meilleurs_eleves)Exemples :>>> eleves_nsi = ['a','b','c','d','e','f','g','h','i','j']>>> notes_nsi = [30, 40, 80, 60, 58, 80, 75, 80, 60, 24]>>> eleves_du_mois(eleves_nsi, notes_nsi)(80, ['c', 'f', 'h'])3 / 3

Texte de 28.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°28DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)On s’intéresse à la suite d’entiers définie par :• les deux premières valeurs sont égales à 1 ;• ensuite, chaque valeur est obtenue en faisant la somme des deux valeurs qui le précè-dent.La troisième valeur est donc 1+1 = 2, la quatrième est 1+2 = 3, la cinquième est 2+3 = 5,la sixième est 3 + 5 = 8, et ainsi de suite.Cette suite d’entiers est connue sous le nom de suite de Fibonacci.Écrire en Python une fonction fibonacci qui prend en paramètre un entier n supposéstrictement positif et qui renvoie le terme d’indice n de cette suite.Exemples :>>> fibonacci(1)1>>> fibonacci(2)1>>> fibonacci(25)750252 / 3EXERCICE 2 (10 points)On considère la fonction eleves_du_mois prenant en paramètres eleves et notesdeux tableaux de même longueur, le premier contenant le nom des élèves et le second, desentiers positifs désignant leur note à un contrôle de sorte que eleves[i] a obtenu la notenotes[i].Cette fonction renvoie le couple constitué de la note maximale attribuée et des noms desélèves ayant obtenu cette note regroupés dans un tableau.Ainsi, l’instruction eleves_du_mois(['a', 'b', 'c', 'd'], [15, 18, 12,18]) renvoie le couple (18, ['b', 'd']).Compléter le code suivant :def eleves_du_mois(eleves, notes):note_maxi = 0meilleurs_eleves = ...for i in range(...):if notes[i] == ...:meilleurs_eleves.append(...)elif notes[i] > note_maxi:note_maxi = ...meilleurs_eleves = [...]return (note_maxi, meilleurs_eleves)Exemples :>>> eleves_nsi = ['a','b','c','d','e','f','g','h','i','j']>>> notes_nsi = [30, 40, 80, 60, 58, 80, 75, 80, 60, 24]>>> eleves_du_mois(eleves_nsi, notes_nsi)(80, ['c', 'f', 'h'])>>> eleves_du_mois([],[])(0, [])3 / 3
04.pdf → 16.pdf (0.999)
Texte de 04.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°04DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction ecriture_binaire_entier_positif qui prend en paramètreun entier positif n et renvoie une chaine de caractère correspondant à l’écriture binaire den.On rappelle que :• l’écriture binaire de 25 est 11001 car 25 = 1 × 24 + 1 × 23 + 0 × 22 + 0 × 21 + 1 × 20;• n % 2 vaut 0 ou 1 selon que n est pair ou impair ;• n // 2 donne le quotient de la division euclidienne de n par 2.Il est interdit dans cet exercice d’utiliser la fonction bin de Python.Exemples :>>> 5 % 21>>> 5 // 22>>> ecriture_binaire_entier_positif(0)'0'>>> ecriture_binaire_entier_positif(2)'10'>>> ecriture_binaire_entier_positif(105)'1101001'2 / 3EXERCICE 2 (10 points)La fonction tri_bulles prend en paramètre un tableau tab d’entiers (type list) et lemodifie pour le trier par ordre croissant.Le tri à bulles est un tri en place qui commence par placer le plus grand élément en dernièreposition en parcourant le tableau de gauche à droite et en échangeant au passage les élé-ments voisins mal ordonnés (si la valeur de l’élément d’indice i a une valeur strictementsupérieure à celle de l’indice i + 1, ils sont échangés). Le tri place ensuite en avant-dernière position le plus grand élément du tableau privé de son dernier élément en procé-dant encore à des échanges d’éléments voisins. Ce principe est répété jusqu’à placer leminimum en première position.Exemple : pour trier le tableau [7, 9, 4, 3] :• première étape : 7 et 9 ne sont pas échangés, puis 9 et 4 sont échangés, puis 9 et 3sont échangés, le tableau est alors [7, 4, 3, 9]• deuxième étape : 7 et 4 sont échangés, puis 7 et 3 sont échangés, le tableau est alors[4, 3, 7, 9]• troisième étape : 4 et 3 sont échangés, le tableau est alors [3, 4, 7, 9]Compléter le code Python ci-dessous qui implémente la fonction tri_bulles.def echange(tab, i, j):'''Echange les éléments d'indice i et j dans le tableau tab.'''temp = ...tab[i] = ...tab[j] = ...def tri_bulles(tab):'''Trie le tableau tab dans l'ordre croissantpar la méthode du tri à bulles.'''n = len(tab)for i in range(...):for j in range(...):if ... > ...:echange(tab, j, ...)Exemples :>>> tab = []>>> tri_bulles(tab)>>> tab[]>>> tab2 = [9, 3, 7, 2, 3, 1, 6]>>> tri_bulles(tab2)>>> tab2[1, 2, 3, 3, 6, 7, 9]>>> tab3 = [9, 7, 4, 3]>>> tri_bulles(tab3)>>> tab3[3, 4, 7, 9]3 / 3

Texte de 16.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°16DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction ecriture_binaire_entier_positif qui prend en paramètreun entier positif n et renvoie une chaine de caractère correspondant à l’écriture binaire den.On rappelle que :• l’écriture binaire de 25 est 11001 car 25 = 1 × 24 + 1 × 23 + 0 × 22 + 0 × 21 + 1 × 20;• n % 2 vaut 0 ou 1 selon que n est pair ou impair ;• n // 2 donne le quotient de la division euclidienne de n par 2.Il est interdit dans cet exercice d’utiliser la fonction bin de Python.Exemples :>>> 5 % 21>>> 5 // 22>>> ecriture_binaire_entier_positif(0)'0'>>> ecriture_binaire_entier_positif(2)'10'>>> ecriture_binaire_entier_positif(105)'1101001'2 / 3EXERCICE 2 (10 points)La fonction tri_bulles prend en paramètre un tableau tab d’entiers (type list) et lemodifie pour le trier par ordre croissant.Le tri à bulles est un tri en place qui commence par placer le plus grand élément en dernièreposition en parcourant le tableau de gauche à droite et en échangeant au passage les élé-ments voisins mal ordonnés (si la valeur de l’élément d’indice i a une valeur strictementsupérieure à celle de l’indice i + 1, ils sont échangés). Le tri place ensuite en avant-dernière position le plus grand élément du tableau privé de son dernier élément en procé-dant encore à des échanges d’éléments voisins. Ce principe est répété jusqu’à placer leminimum en première position.Exemple : pour trier le tableau [7, 9, 4, 3] :• première étape : 7 et 9 ne sont pas échangés, puis 9 et 4 sont échangés, puis 9 et 3sont échangés, le tableau est alors [7, 4, 3, 9]• deuxième étape : 7 et 4 sont échangés, puis 7 et 3 sont échangés, le tableau est alors[4, 3, 7, 9]• troisième étape : 4 et 3 sont échangés, le tableau est alors [3, 4, 7, 9]Compléter le code Python ci-dessous qui implémente la fonction tri_bulles.def echange(tab, i, j):'''Echange les éléments d'indice i et j dans le tableau tab.'''temp = ...tab[i] = ...tab[j] = ...def tri_bulles(tab):'''Trie le tableau tab dans l'ordre croissantpar la méthode du tri à bulles.'''n = len(tab)for i in range(...):for j in range(...):if ... > ...:echange(tab, j, ...)Exemples :>>> tab = []>>> tri_bulles(tab)>>> tab[]>>> tab2 = [9, 3, 7, 2, 3, 1, 6]>>> tri_bulles(tab2)>>> tab2[1, 2, 3, 3, 6, 7, 9]>>> tab3 = [9, 7, 4, 3]>>> tri_bulles(tab3)>>> tab3[3, 4, 7, 9]3 / 3
05.pdf → 33.pdf (0.987)
Texte de 05.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°05DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Programmer une fonction renverse, prenant en paramètre une chaîne de caractères nonvide mot et renvoie cette chaîne de caractères en ordre inverse.Exemple :>>> renverse("")"">>> renverse("abc")"cba">>> renverse("informatique")"euqitamrofni"2 / 3EXERCICE 2 (10 points)Un nombre premier est un nombre entier naturel qui admet exactement deux diviseursdistincts entiers et positifs : 1 et lui-même.Le crible d’Ératosthène permet de déterminer les nombres premiers plus petit qu’un certainnombre n fixé strictement supérieur à 1.On considère pour cela un tableau tab de n booléens (type list), initialement tous égauxà True, sauf tab[0] et tab[1] qui valent False, 0 et 1 n’étant pas des nombres pre-miers.On parcourt alors ce tableau de gauche à droite et pour chaque indice i :• si tab[i] vaut True : le nombre i est premier et on donne la valeur False à toutesles cases du tableau dont l’indice est un multiple de i, à partir de 2*i (c’est-à-dire2*i, 3*i …).• si tab[i] vaut False : le nombre i n’est pas premier et on n’effectue aucun change-ment sur le tableau.On dispose de la fonction crible, donnée ci-dessous et à compléter, prenant en paramètreun entier n strictement supérieur à 1 et renvoyant un tableau contenant tous les nombrespremiers plus petits que n.def crible(n):"""Renvoie un tableau contenant tous les nombres premiersplus petits que n."""premiers = []tab = [True] * ntab[0], tab[1] = False, Falsefor i in range(n):if tab[i]:premiers....multiple = ...while multiple < n:tab[multiple] = ...multiple = ...return premiersExemples :>>> crible(40)[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]>>> crible(5)[2, 3]3 / 3

Texte de 33.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°33DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Programmer une fonction renverse, prenant en paramètre une chaîne de caractères nonvide mot et renvoie cette chaîne de caractères en ordre inverse.Exemple :>>> renverse("")"">>> renverse("abc")"cba">>> renverse("informatique")"euqitamrofni"2 / 3EXERCICE 2 (10 points)Un nombre premier est un nombre entier naturel qui admet exactement deux diviseursdistincts entiers et positifs : 1 et lui-même.Le crible d’Ératosthène permet de déterminer les nombres premiers plus petit qu’un certainnombre n fixé.On considère pour cela un tableau tab de n booléens (type list), initialement tous égauxà True, sauf tab[0] et tab[1] qui valent False, 0 et 1 n’étant pas des nombres pre-miers.On parcourt alors ce tableau de gauche à droite et pour chaque indice i :• si tab[i] vaut True : le nombre i est premier et on donne la valeur False à toutesles cases du tableau dont l’indice est un multiple de i, à partir de 2*i (c’est-à-dire2*i, 3*i …).• si tab[i] vaut False : le nombre i n’est pas premier et on n’effectue aucun change-ment sur le tableau.On dispose de la fonction crible, donnée ci-dessous et à compléter, prenant en paramètreun entier n strictement positif et renvoyant un tableau contenant tous les nombres premiersplus petits que n.def crible(n):"""Renvoie un tableau contenant tous les nombres premiersplus petits que n."""premiers = []tab = [True] * ntab[0], tab[1] = False, Falsefor i in range(n):if tab[i]:premiers....multiple = ...while multiple < n:tab[multiple] = ...multiple = ...return premiersExemples :>>> crible(40)[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]>> crible(5)[2, 3]3 / 3
06.pdf → 19.pdf (0.998)
Texte de 06.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°06DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)On rappelle que :• le nombre 𝑎𝑛 est le nombre 𝑎 × 𝑎 × 𝑎 × ⋯ × 𝑎, où le facteur 𝑎 apparaît 𝑛 fois,• en langage Python, l’instruction t[-1] permet d’accéder au dernier élément dutableau t.Dans cet exercice, l’opérateur ** et la fonction pow ne sont pas autorisés.Programmer en langage Python une fonction liste_puissances qui prend en argumentun nombre entier 𝑎, un entier strictement positif 𝑛 et qui renvoie la liste de ses puissances[𝑎1, 𝑎2, ..., 𝑎𝑛].Programmer également une fonction liste_puissances_borne qui prend en argu-ment un nombre entier 𝑎 supérieur ou égal à 2 et un entier borne, et qui renvoie la liste deses puissances, à l’exclusion de 𝑎0, strictement inférieures à borne.Exemples :>>> liste_puissances(3, 5)[3, 9, 27, 81, 243]>>> liste_puissances(-2, 4)[-2, 4, -8, 16]>>> liste_puissances_borne(2, 16)[2, 4, 8]>>> liste_puissances_borne(2, 17)[2, 4, 8, 16]>>> liste_puissances_borne(5, 5)[]2 / 4EXERCICE 2 (10 points)On affecte à chaque lettre de l’alphabet un code selon le tableau ci-dessous :A B C D E F G H I J K L M1 2 3 4 5 6 7 8 9 10 11 12 13N O P Q R S T U V W X Y Z14 15 16 17 18 19 20 21 22 23 24 25 26Cette table de correspondance est stockée dans un dictionnaire dico où les clés sont leslettres de l’alphabet et les valeurs les codes correspondants.dico = {"A": 1, "B": 2, "C": 3, "D": 4, "E": 5, "F": 6,"G": 7, "H": 8, "I": 9, "J": 10, "K": 11, "L": 12,"M": 13, "N": 14, "O": 15, "P": 16, "Q": 17,"R": 18, "S": 19, "T": 20, "U": 21, "V": 22,"W": 23, "X": 24, "Y": 25, "Z": 26}Pour un mot donné, on détermine d’une part son code alphabétique concaténé, obtenu parla juxtaposition des codes de chacun de ses caractères, et d’autre part, son code additionné,qui est la somme des codes de chacun de ses caractères.Par ailleurs, on dit que ce mot est « parfait » si le code additionné divise le code concaténé.Exemples :• Pour le mot "PAUL", le code concaténé est la chaîne '1612112', soit l’entier 1 612112. Son code additionné est l’entier 50 car 16 + 1 + 21 + 12 = 50. 50 ne divise pasl’entier 1 612 112. Ainsi, le mot "PAUL" n’est pas parfait.• Pour le mot "ALAIN", le code concaténé est la chaîne '1121914', soit l’entier 1121 914. Le code additionné est l’entier 37 car 1 + 12 + 1 + 9 + 14 = 37. 37 divise l’entier1 121 914. Ainsi, le mot "ALAIN" est parfait.Compléter la fonction codes_parfait située à la page suivante et qui prend en paramètreun mot en majuscule et renvoie un triplet constitué du code additionné, du code concaténéet d’un booléen indiquant si le mot est parfait ou non.On rappelle que pour tester si un entier b divise un entier a, on utilise l’opérateur moduloa % b qui renvoie le reste de la division euclidienne de a par b. Si a % b vaut 0, alors bdivise a.3 / 4def codes_parfait(mot):"""Renvoie un triplet(code_additionne, code_concatene, mot_est_parfait) où :- code_additionne est la somme des codes des lettres du mot ;- code_concatene est le code des lettres du mot concaténées ;- mot_est_parfait est un booléen indiquant si le mot estparfait."""↪code_concatene = ""code_additionne = ...for c in mot:code_concatene = code_concatene + ...code_additionne = code_additionne + ...code_concatene = int(code_concatene)mot_est_parfait = ...return code_additionne, code_concatene, mot_est_parfaitExemples :>>> codes_parfait("PAUL")(50, 1612112, False)>>> codes_parfait("ALAIN")(37, 1121914, True)4 / 4

Texte de 19.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°19DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)On rappelle que :• le nombre 𝑎𝑛 est le nombre 𝑎 × 𝑎 × 𝑎 × ⋯ × 𝑎, où le facteur 𝑎 apparaît 𝑛 fois,• en langage Python, l’instruction t[-1] permet d’accéder au dernier élément dutableau t.Dans cet exercice, l’opérateur ** et la fonction pow ne sont pas autorisés.Programmer en langage Python une fonction liste_puissances qui prend en argumentun nombre entier 𝑎, un entier strictement positif 𝑛 et qui renvoie la liste de ses puissances[𝑎1, 𝑎2, ..., 𝑎𝑛].Programmer également une fonction liste_puissances_borne qui prend en argu-ment un nombre entier 𝑎 supérieur ou égal à 2 et un entier borne, et qui renvoie la liste deses puissances, à l’exclusion de 𝑎0, strictement inférieures à borne.Exemples :>>> liste_puissances(3, 5)[3, 9, 27, 81, 243]>>> liste_puissances(-2, 4)[-2, 4, -8, 16]>>> liste_puissances_borne(2, 16)[2, 4, 8]>>> liste_puissances_borne(2, 17)[2, 4, 8, 16]>>> liste_puissances_borne(5, 5)[]2 / 4EXERCICE 2 (10 points)On affecte à chaque lettre de l’alphabet un code selon le tableau ci-dessous :A B C D E F G H I J K L M1 2 3 4 5 6 7 8 9 10 11 12 13N O P Q R S T U V W X Y Z14 15 16 17 18 19 20 21 22 23 24 25 26Cette table de correspondance est stockée dans un dictionnaire dico où les clés sont leslettres de l’alphabet et les valeurs les codes correspondants.dico = {"A": 1, "B": 2, "C": 3, "D": 4, "E": 5, "F": 6,"G": 7, "H": 8, "I": 9, "J": 10, "K": 11, "L": 12,"M": 13, "N": 14, "O": 15, "P": 16, "Q": 17,"R": 18, "S": 19, "T": 20, "U": 21, "V": 22,"W": 23, "X": 24, "Y": 25, "Z": 26}Pour un mot donné, on détermine d’une part son code alphabétique concaténé, obtenu parla juxtaposition des codes de chacun de ses caractères, et d’autre part, son code additionné,qui est la somme des codes de chacun de ses caractères.Par ailleurs, on dit que ce mot est « parfait » si le code additionné divise le code concaténé.Exemples :• Pour le mot "PAUL", le code concaténé est la chaîne '1612112', soit l’entier 1 612112. Son code additionné est l’entier 50 car 16 + 1 + 21 + 12 = 50. 50 ne divise pasl’entier 1 612 112. Ainsi, le mot "PAUL" n’est pas parfait.• Pour le mot "ALAIN", le code concaténé est la chaîne '1121914', soit l’entier 1121 914. Le code additionné est l’entier 37 car 1 + 12 + 1 + 9 + 14 = 37. 37 divise l’entier1 121 914. Ainsi, le mot "ALAIN" est parfait.Compléter la fonction codes_parfait située à la page suivante et qui prend en paramètreun mot en majuscule et renvoie un triplet constitué du code additionné, du code concaténéet d’un booléen indiquant si le mot est parfait ou non.On rappelle que pour tester si un entier a divise un entier b, on utilise l’opérateur moduloa % b qui renvoie le reste de la division euclidienne de b par a. Si a % b vaut 0, alors adivise b.3 / 4def codes_parfait(mot):"""Renvoie un triplet(code_additionne, code_concatene, mot_est_parfait) où :- code_additionne est la somme des codes des lettres du mot ;- code_concatene est le code des lettres du mot concaténées ;- mot_est_parfait est un booléen indiquant si le mot estparfait."""↪code_concatene = ""code_additionne = ...for c in mot:code_concatene = code_concatene + ...code_additionne = code_additionne + ...code_concatene = int(code_concatene)mot_est_parfait = ...return code_additionne, code_concatene, mot_est_parfaitExemples :>>> codes_parfait("PAUL")(50, 1612112, False)>>> codes_parfait("ALAIN")(37, 1121914, True)4 / 4
07.pdf → 34.pdf (0.999)
Texte de 07.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°07DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Le nombre d’occurrences d’un caractère dans une chaîne de caractère est le nombre d’ap-paritions de ce caractère dans la chaîne.Exemples :• le nombre d’occurrences du caractère 'o' dans 'bonjour' est 2 ;• le nombre d’occurrences du caractère 'b' dans 'Bébé' est 1 ;• le nombre d’occurrences du caractère 'B' dans 'Bébé' est 1 ;• le nombre d’occurrences du caractère ' ' dans 'Hello world !' est 2.On cherche les occurrences des caractères dans une phrase. On souhaite stocker ces occur-rences dans un dictionnaire dont les clefs seraient les caractères de la phrase et les valeursl’occurrence de ces caractères.Par exemple : avec la phrase 'Hello world !' le dictionnaire est le suivant :{'H': 1,'e': 1,'l': 3,'o': 2,' ': 2,'w': 1,'r': 1,'d': 1,'!': 1}L’ordre des clefs n’a pas d’importance.Écrire une fonction nbr_occurrences prenant comme paramètre une chaîne de carac-tères chaine et renvoyant le dictionnaire des nombres d’occurrences des caractères decette chaîne.2 / 3EXERCICE 2 (10 points)La fonction fusion prend deux tableaux tab1, tab2 (type list) d’entiers triés par ordrecroissant et les fusionne en un tableau trié tab12 qu’elle renvoie.Compléter le code de la fonction fusion ci-dessous.def fusion(tab1,tab2):'''Fusionne deux tableaux triés et renvoiele nouveau tableau trié.'''n1 = len(tab1)n2 = len(tab2)tab12 = [0] * (n1 + n2)i1 = 0i2 = 0i = 0while i1 < n1 and ...:if tab1[i1] < tab2[i2]:tab12[i] = ...i1 = ...else:tab12[i] = tab2[i2]i2 = ...i += 1while i1 < n1:tab12[i] = ...i1 = i1 + 1i = ...while i2 < n2:tab12[i] = ...i2 = i2 + 1i = ...return tab12Exemple :>>> fusion([1,2,3],[])[1, 2, 3]>>> fusion([], [])[]>>> fusion([1, 6, 10],[0, 7, 8, 9])[0, 1, 6, 7, 8, 9, 10]3 / 3

Texte de 34.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°34DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Le nombre d’occurrences d’un caractère dans une chaîne de caractère est le nombre d’ap-paritions de ce caractère dans la chaîne.Exemples :• le nombre d’occurrences du caractère 'o' dans 'bonjour' est 2 ;• le nombre d’occurrences du caractère 'b' dans 'Bébé' est 1 ;• le nombre d’occurrences du caractère 'B' dans 'Bébé' est 1 ;• le nombre d’occurrences du caractère ' ' dans 'Hello world !' est 2.On cherche les occurrences des caractères dans une phrase. On souhaite stocker ces occur-rences dans un dictionnaire dont les clefs seraient les caractères de la phrase et les valeursl’occurrence de ces caractères.Par exemple : avec la phrase 'Hello world !' le dictionnaire est le suivant :{'H': 1,'e': 1,'l': 3,'o': 2,' ': 2,'w': 1,'r': 1,'d': 1,'!': 1}L’ordre des clefs n’a pas d’importance.Écrire une fonction nbr_occurrences prenant comme paramètre une chaîne de carac-tères chaine et renvoyant le dictionnaire des nombres d’occurrences des caractères decette chaîne.2 / 3EXERCICE 2 (10 points)La fonction fusion prend deux tableaux tab1, tab2 (type list) d’entiers triés par ordrecroissant et les fusionne en un tableau trié tab12 qu’elle renvoie.Compléter le code de la fonction fusion ci-dessous.def fusion(tab1,tab2):'''Fusionne deux tableaux triés et renvoiele nouveau tableau trié.'''n1 = len(tab1)n2 = len(tab2)tab12 = [0] * (n1 + n2)i1 = 0i2 = 0i = 0while i1 < n1 and ...:if tab1[i1] < tab2[i2]:tab12[i] = ...i1 = ...else:tab12[i] = tab2[i2]i2 = ...i += 1while i1 < n1:tab12[i] = ...i1 = i1 + 1i = ...while i2 < n2:tab12[i] = ...i2 = i2 + 1i = ...return tab12Exemple :>>> fusion([1,2,3],[])[1, 2, 3]>>> fusion([], [])[]>>> fusion([1, 6, 10],[0, 7, 8, 9])[0, 1, 6, 7, 8, 9, 10]3 / 3
08.pdf → 03.pdf (0.999)
Texte de 08.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°08DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)Écrire la fonction maximum_tableau, prenant en paramètre un tableau non vide de nom-bres tab (de type list) et renvoyant le plus grand élément de ce tableau.Exemples :>>> maximum_tableau([98, 12, 104, 23, 131, 9])131>>> maximum_tableau([-27, 24, -3, 15])242 / 4EXERCICE 2 (10 points)On dispose de chaînes de caractères contenant uniquement des parenthèses ouvrantes etfermantes.Un parenthésage est correct si :• le nombre de parenthèses ouvrantes de la chaîne est égal au nombre de parenthèsesfermantes ;• en parcourant la chaîne de gauche à droite, le nombre de parenthèses déjà ouvertesdoit être, à tout moment, supérieur ou égal au nombre de parenthèses déjà fermées.Ainsi, ((()())(())) est un parenthésage correct.Les parenthésages ())(() et (())(() sont, eux, incorrects.On dispose du code de la classe Pile suivant :class Pile:"""Classe définissant une structure de pile."""def __init__(self):self.contenu = []def est_vide(self):"""Renvoie un booléen indiquant si la pile est vide."""return self.contenu == []def empiler(self, v):"""Place l'élément v au sommet de la pile"""self.contenu.append(v)def depiler(self):"""Retire et renvoie l'élément placé au sommet de la pile,si la pile n’est pas vide. Produit une erreur sinon."""assert not self.est_vide()return self.contenu.pop()On souhaite programmer une fonction bon_parenthesage qui prend en paramètreune chaîne de caractères ch formée de parenthèses et renvoie True si la chaîne est bienparenthésée et False sinon.Cette fonction utilise une pile et suit le principe suivant : en parcourant la chaîne de gaucheà droite, si on trouve une parenthèse ouvrante, on l’empile au sommet de la pile et si ontrouve une parenthèse fermante, on dépile (si possible) la parenthèse ouvrante stockée ausommet de la pile.La chaîne est alors bien parenthésée si, à la fin du parcours, la pile est vide.Elle est, par contre, mal parenthésée :• si dans le parcours, on trouve une parenthèse fermante, alors que la pile est vide ;• ou si, à la fin du parcours, la pile n’est pas vide.Compléter le code de la fonction bon_parenthesage ci-dessous:3 / 4def bon_parenthesage(ch):"""Renvoie un booléen indiquant si la chaîne chest bien parenthésée"""p = Pile()for c in ch:if c == ...:p.empiler(c)elif c == ...:if p.est_vide():...else:...return ...Exemples :>>> bon_parenthesage("((()())(()))")True>>> bon_parenthesage("())(()")False>>> bon_parenthesage("(())(()")False4 / 4

Texte de 03.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°03DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)Écrire la fonction maximum_tableau, prenant en paramètre un tableau non vide de nom-bres tab (de type list) et renvoyant le plus grand élément de ce tableau.Exemples :>>> maximum_tableau([98, 12, 104, 23, 131, 9])131>>> maximum_tableau([-27, 24, -3, 15])242 / 4EXERCICE 2 (10 points)On dispose de chaînes de caractères contenant uniquement des parenthèses ouvrantes etfermantes.Un parenthésage est correct si :• le nombre de parenthèses ouvrantes de la chaîne est égal au nombre de parenthèsesfermantes ;• en parcourant la chaîne de gauche à droite, le nombre de parenthèses déjà ouvertesdoit être, à tout moment, supérieur ou égal au nombre de parenthèses déjà fermées.Ainsi, ((()())(())) est un parenthésage correct.Les parenthésages ())(() et (())(() sont, eux, incorrects.On dispose du code de la classe Pile suivant :class Pile:"""Classe définissant une structure de pile."""def __init__(self):self.contenu = []def est_vide(self):"""Renvoie un booléen indiquant si la pile est vide."""return self.contenu == []def empiler(self, v):"""Place l'élément v au sommet de la pile"""self.contenu.append(v)def depiler(self):"""Retire et renvoie l'élément placé au sommet de la pile,si la pile n’est pas vide. Produit une erreur sinon."""assert not self.est_vide()return self.contenu.pop()On souhaite programmer une fonction bon_parenthesage qui prend en paramètreune chaîne de caractères ch formée de parenthèses et renvoie True si la chaîne est bienparenthésée et False sinon.Cette fonction utilise une pile et suit le principe suivant : en parcourant la chaîne de gaucheà droite, si on trouve une parenthèse ouvrante, on l’empile au sommet de la pile et si ontrouve une parenthèse fermante, on dépile (si possible) la parenthèse ouvrante stockée ausommet de la pile.La chaîne est alors bien parenthésée si, à la fin du parcours, la pile est vide.Elle est, par contre, mal parenthésée :• si dans le parcours, on trouve une parenthèse fermante, alors que la pile est vide ;• ou si, à la fin du parcours, la pile n’est pas vide.Compléter le code de la fonction bon_parenthesage ci-dessous:3 / 4def bon_parenthesage(ch):"""Renvoie un booléen indiquant si la chaîne chest bien parenthésée"""p = Pile()for c in ch:if c == ...:p.empiler(c)elif c == ...:if p.est_vide():...else:...return ...Exemples :>>> bon_parenthesage("((()())(()))")True>>> bon_parenthesage("())(()")False>>> bon_parenthesage("(())(()")False4 / 4
09.pdf → 31.pdf (0.998)
Texte de 09.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°09DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Programmer la fonction multiplication, prenant en paramètres deux nombres entiersrelatifs n1 et n2, et qui renvoie le produit de ces deux nombres.Les seules opérations autorisées sont l’addition et la soustraction.>>> multiplication(3, 5)15>>> multiplication(-4, -8)32>>> multiplication(-2, 6)-12>>> multiplication(-2, 0)02 / 3EXERCICE 2 (10 points)On s’intéresse dans cet exercice à la recherche dichotomique dans un tableau trié d’en-tiers.Compléter la fonction suivante en respectant la spécification.def dichotomie(tab, x):"""tab : tableau d'entiers trié dans l'ordre croissantx : nombre entierLa fonction renvoie True si tab contient x et False sinon"""debut = 0fin = len(tab) - 1while debut <= fin:m = ...if x == tab[m]:return ...if x > tab[m]:debut = m + 1else:fin = ...return ...Exemples :>>> dichotomie([15, 16, 18, 19, 23, 24, 28, 29, 31, 33],28)True>>> dichotomie([15, 16, 18, 19, 23, 24, 28, 29, 31, 33],27)False3 / 3

Texte de 31.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°31DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Programmer la fonction multiplication, prenant en paramètres deux nombres entiersrelatifs n1 et n2, et qui renvoie le produit de ces deux nombres.Les seules opérations autorisées sont l’addition et la soustraction.>>> multiplication(3, 5)15>>> multiplication(-4, -8)32>>> multiplication(-2, 6)-12>>> multiplication(-2, 0)02 / 3EXERCICE 2 (10 points)On s’intéresse dans cet exercice à la recherche dichotomique dans un tableau trié d’en-tiers.Compléter la fonction suivante en respectant la spécification.def dichotomie(tab, x):"""tab : tableau d'entiers trié dans l'ordre croissantx : nombre entierLa fonction renvoie True si tab contient x et False sinon"""debut = 0fin = len(tab) - 1while debut <= fin:m = ...if x == tab[m]:return ...if x > tab[m]:debut = m + 1else:fin = ...return ...Exemples :>>> dichotomie([15, 16, 18, 19, 23, 24, 28, 29, 31, 33],28)True>>> dichotomie([15, 16, 18, 19, 23, 24, 28, 29, 31, 33],27)False3 / 3
10.pdf → 46.pdf (0.995)
Texte de 10.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°10DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction recherche qui prend en paramètres un tableau tab de nombresentiers triés par ordre croissant et un nombre entier n, et qui effectue une recherche di-chotomique du nombre entier n dans le tableau non vide tab.Cette fonction doit renvoyer un indice correspondant au nombre cherché s’il est dans letableau, None sinon.Exemples :>>> recherche([2, 3, 4, 5, 6], 5)3>>> recherche([2, 3, 4, 6, 7], 5) # renvoie None2 / 3EXERCICE 2 (10 points)Le codage de César transforme un message en changeant chaque lettre en la décalant dansl’alphabet. Par exemple, avec un décalage de 3, le A se transforme en D, le B en E, …, le X enA, le Y en B et le Z en C. Les autres caractères (‘!’,’ ?’ …) ne sont pas codés.La fonction position_alphabet ci-dessous prend en paramètre un caractère lettreet renvoie la position de lettre dans la chaîne de caractères alphabet s’il s’y trouve.La fonction cesar prend en paramètre une chaîne de caractères message et un nombreentier decalage et renvoie le nouveau message codé avec le codage de César utilisant ledécalage decalage.alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'def position_alphabet(lettre):'''Renvoie la position de la lettre dans l'alphabet'''return ord(lettre) - ord('A')def cesar(message, decalage):'''Renvoie le message codé par la méthode de Césarpour le decalage donné'''resultat = ''for ... in message:if 'A' <= c and c <= 'Z':indice = (...) % 26resultat = resultat + alphabet[indice]else:resultat = ...return resultatCompléter la fonction cesar.Exemples :>>> cesar('BONJOUR A TOUS. VIVE LA MATIERE NSI !', 4)'FSRNSYV E XSYW. ZMZI PE QEXMIVI RWM !'>>> cesar('GTSOTZW F YTZX. ANAJ QF RFYNJWJ SXN !', -5)'BONJOUR A TOUS. VIVE LA MATIERE NSI !'3 / 3

Texte de 46.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°46DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction recherche qui prend en paramètres un tableau tab de nombresentiers triés par ordre croissant et un nombre entier n, et qui effectue une recherche di-chotomique du nombre entier n dans le tableau non vide tab.Cette fonction doit renvoyer un indice correspondant au nombre cherché s’il est dans letableau, None sinon.Exemples :>>> recherche([2, 3, 4, 5, 6], 5)3>>> recherche([2, 3, 4, 6, 7], 5) # renvoie None2 / 3EXERCICE 2 (10 points)Le codage de César transforme un message en changeant chaque lettre en la décalant dansl’alphabet. Par exemple, avec un décalage de 3, le A se transforme en D, le B en E, …, le X enA, le Y en B et le Z en C. Les autres caractères (‘!’,’ ?’ …) ne sont pas codés.La fonction position_alphabet ci-dessous prend en paramètre un caractère lettreet renvoie la position de lettre dans la chaîne de caractères ALPHABET s’il s’y trouve.La fonction cesar prend en paramètre une chaîne de caractères message et un nombreentier decalage et renvoie le nouveau message codé avec le codage de César utilisant ledécalage decalage.alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'def position_alphabet(lettre):'''Renvoie la position de la lettre dans l'alphabet'''return ord(lettre) - ord('A')def cesar(message, decalage):'''Renvoie le message codé par la méthode de Césarpour le decalage donné'''resultat = ''for ... in message:if 'A' <= c and c <= 'Z':indice = (...) % 26resultat = resultat + alphabet[indice]else:resultat = ...return resultatCompléter la fonction cesar.Exemples :>>> cesar('BONJOUR A TOUS. VIVE LA MATIERE NSI !', 4)'FSRNSYV E XSYW. ZMZI PE QEXMIVI RWM !'>>> cesar('GTSOTZW F YTZX. ANAJ QF RFYNJWJ SXN !', -5)'BONJOUR A TOUS. VIVE LA MATIERE NSI !'3 / 3
11.pdf → 24.pdf (0.996)
Texte de 11.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°11DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Un arbre binaire est soit vide, représenté en Python par la valeur None, soit un nœudreprésenté par un triplet (g, x, d) où x est l’étiquette du nœud et g et d sont les sous-arbres gauche et droit.On souhaite écrire une fonction parcours_largeur qui prend en paramètre un arbrebinaire et qui renvoie la liste des étiquettes des nœuds de l’arbre parcourus en largeur.Exemples :>>> arbre = ( ( (None, 1, None), 2, (None, 3, None) ),4,( (None, 5, None), 6, (None, 7, None) ) )>>> parcours_largeur(arbre)[4, 2, 6, 1, 3, 5, 7]2 / 3EXERCICE 2 (10 points)On considère un tableau non vide de nombre entiers, positifs ou négatifs, et on souhaitedéterminer la plus grande somme possible de ses éléments consécutifs.Par exemple, dans le tableau [1, -2, 3, 10, -4, 7, 2, -5], la plus grandesomme est 18 obtenue en additionnant les éléments 3, 10, -4, 7, 2.Pour cela, on va résoudre le problème par programmation dynamique. Si on note tab letableau considéré et i un indice dans ce tableau, on se ramène à un problème plus simple: déterminer la plus grande somme possible de ses éléments consécutifs se terminant àl’indice i.Si on connait la plus grande somme possible de ses éléments consécutifs se terminant àl’indice i-1, on peut déterminer la plus grande somme possible de ses éléments consécutifsse terminant à l’indice i :• soit on obtient une plus grande somme en ajoutant tab[i] à cette somme précé-dente ;• soit on commence une nouvelle somme à partir de tab[i].Compléter la fonction somme_max ci-dessous qui réalise cet algorithme.def somme_max(tab):n = len(tab)sommes_max = [0]*nsommes_max[0] = tab[0]# on calcule la plus grande somme se terminant en ifor i in range(1,n):if ... + ... > ...:sommes_max[i] = ...else:sommes_max[i] = ...# on en déduit la plus grande somme de celles-cimaximum = 0for i in range(1, n):if ... > ...:maximum = ireturn sommes_max[...]Exemples :>>> somme_max([1, 2, 3, 4, 5])15>> somme_max([1, 2, -3, 4, 5])9>>> somme_max([1, 2, -2, 4, 5])10>>> somme_max([1, -2, 3, 10, -4, 7, 2, -5])183 / 3

Texte de 24.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°24DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Un arbre binaire est soit vide, représenté en Python par la valeur None, soit un nœudreprésenté par un triplet (g, x, d) où x est l’étiquette du nœud et g et d sont les sous-arbres gauche et droit.On souhaite écrire une fonction parcours_largeur qui prend en paramètre un arbrebinaire et qui renvoie la liste des étiquettes des nœuds de l’arbre parcourus en largeur.Exemples :>>> arbre = ( ( (None, 1, None), 2, (None, 3, None) ),4,( (None, 5, None), 6, (None, 7, None) ) )>>> parcours_largeur(arbre)[4, 2, 6, 1, 3, 5, 7]2 / 3EXERCICE 2 (10 points)On considère un tableau de nombre entiers, positifs ou négatifs, et on souhaite déterminerla plus grande somme possible de ses éléments consécutifs.Par exemple, dans le tableau [1, -2, 3, 10, -4, 7, 2, -5], la plus grandesomme est 18 obtenue en additionnant les éléments 3, 10, -4, 7, 2.Pour cela, on va résoudre le problème par programmation dynamique. Si on note tab letableau considéré et i un indice dans ce tableau, on se ramène à un problème plus simple: déterminer la plus grande somme possible de ses éléments consécutifs se terminant àl’indice i.Si on connait la plus grande somme possible de ses éléments consécutifs se terminant àl’indice i-1, on peut déterminer la plus grande somme possible de ses éléments consécutifsse terminant à l’indice i :• soit on obtient une plus grande somme en ajoutant tab[i] à cette somme précé-dente ;• soit on commence une nouvelle somme à partir de tab[i].Compléter la fonction somme_max ci-dessous qui réalise cet algorithme.def somme_max(tab):n = len(tab)sommes_max = [0]*nsommes_max[0] = tab[0]# on calcule la plus grande somme se terminant en ifor i in range(1,n):if ... + ... > ...:sommes_max[i] = ...else:sommes_max[i] = ...# on en déduit la plus grande somme de celles-cimaximum = 0for i in range(1, n):if ... > ...:maximum = ireturn sommes_max[...]Exemples :>>> somme_max([1, 2, 3, 4, 5])15>> somme_max([1, 2, -3, 4, 5])9>>> somme_max([1, 2, -2, 4, 5])10>>> somme_max([1, -2, 3, 10, -4, 7, 2, -5])183 / 3
12.pdf → 30.pdf (0.999)
Texte de 12.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°12DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)Programmer la fonction fusion prenant en paramètres deux tableaux non vides tab1et tab2 (type list) d’entiers, chacun dans l’ordre croissant, et renvoyant un tableau triédans l’ordre croissant et contenant l’ensemble des valeurs de tab1 et tab2.Exemples :>>> fusion([3, 5], [2, 5])[2, 3, 5, 5]>>> fusion([-2, 4], [-3, 5, 10])[-3, -2, 4, 5, 10]>>> fusion([4], [2, 6])[2, 4, 6]>>> fusion([], [])[]>>> fusion([1, 2, 3], [])[1, 2, 3]2 / 4EXERCICE 2 (10 points)Le but de cet exercice est d’écrire une fonction récursive traduire_romain qui prenden paramètre une chaîne de caractères, non vide, représentant un nombre écrit en chiffresromains et qui renvoie son écriture décimale.Les chiffres romains considérés sont : I, V, X, L, C, D et M. Ils représentent respectivement lesnombres 1, 5, 10, 50, 100, 500, et 1000 en base dix.On dispose d’un dictionnaire romains dont les clés sont les caractères apparaissant dansl’écriture en chiffres romains et les valeurs sont les nombres entiers associés en écrituredécimale :romains = {"I":1, "V":5, "X":10, "L":50, "C":100, "D":500,"M":1000}↪Le code de la fonction traduire_romain fournie repose sur le principe suivant :• la valeur d’un caractère est ajoutée à la valeur du reste de la chaîne si ce caractère aune valeur supérieure (ou égale) à celle du caractère qui le suit ;• la valeur d’un caractère est retranchée à la valeur du reste de la chaîne si ce caractèrea une valeur strictement inférieure à celle du caractère qui le suit.Ainsi, XIV correspond au nombre 10 + 5 - 1 puisque :• la valeur de X (10) est supérieure à celle de I (1), on ajoute donc 10 à la valeur du restede la chaîne, c’est-à-dire IV ;• la valeur de I (1) est strictement inférieure à celle de V (5), on soustrait donc 1 à lavaleur du reste de la chaîne, c’est-à-dire V.On rappelle que pour priver une chaîne de caractères de son premier caractère, on utiliseral’instruction :nom_de_variable[1:]Par exemple, si la variable mot contient la chaîne "CDI", mot[1:] renvoie "DI".Compléter le code de la fonction traduire_romain et le tester.def traduire_romain(nombre):""" Renvoie l'écriture décimale du nombre donné en chiffresromains """if len(nombre) == 1:return ...elif romains[nombre[0]] >= ...:return romains[nombre[0]] + ...else:return ...3 / 4Exemples :>>> traduire_romain("XIV")14>>> traduire_romain("CXLII")142>>> traduire_romain("MMXXIV")20244 / 4

Texte de 30.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°30DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)Programmer la fonction fusion prenant en paramètres deux tableaux non vides tab1et tab2 (type list) d’entiers, chacun dans l’ordre croissant, et renvoyant un tableau triédans l’ordre croissant et contenant l’ensemble des valeurs de tab1 et tab2.Exemples :>>> fusion([3, 5], [2, 5])[2, 3, 5, 5]>>> fusion([-2, 4], [-3, 5, 10])[-3, -2, 4, 5, 10]>>> fusion([4], [2, 6])[2, 4, 6]>>> fusion([], [])[]>>> fusion([1, 2, 3], [])[1, 2, 3]2 / 4EXERCICE 2 (10 points)Le but de cet exercice est d’écrire une fonction récursive traduire_romain qui prenden paramètre une chaîne de caractères, non vide, représentant un nombre écrit en chiffresromains et qui renvoie son écriture décimale.Les chiffres romains considérés sont : I, V, X, L, C, D et M. Ils représentent respectivement lesnombres 1, 5, 10, 50, 100, 500, et 1000 en base dix.On dispose d’un dictionnaire romains dont les clés sont les caractères apparaissant dansl’écriture en chiffres romains et les valeurs sont les nombres entiers associés en écrituredécimale :romains = {"I":1, "V":5, "X":10, "L":50, "C":100, "D":500,"M":1000}↪Le code de la fonction traduire_romain fournie repose sur le principe suivant :• la valeur d’un caractère est ajoutée à la valeur du reste de la chaîne si ce caractère aune valeur supérieure (ou égale) à celle du caractère qui le suit ;• la valeur d’un caractère est retranchée à la valeur du reste de la chaîne si ce caractèrea une valeur strictement inférieure à celle du caractère qui le suit.Ainsi, XIV correspond au nombre 10 + 5 - 1 puisque :• la valeur de X (10) est supérieure à celle de I (1), on ajoute donc 10 à la valeur du restede la chaîne, c’est-à-dire IV ;• la valeur de I (1) est strictement inférieure à celle de V (5), on soustrait donc 1 à lavaleur du reste de la chaîne, c’est-à-dire V.On rappelle que pour priver une chaîne de caractères de son premier caractère, on utiliseral’instruction :nom_de_variable[1:]Par exemple, si la variable mot contient la chaîne "CDI", mot[1:] renvoie "DI".Compléter le code de la fonction traduire_romain et le tester.def traduire_romain(nombre):""" Renvoie l'écriture décimale du nombre donné en chiffresromains """if len(nombre) == 1:return ...elif romains[nombre[0]] >= ...:return romains[nombre[0]] + ...else:return ...3 / 4Exemples :>>> traduire_romain("XIV")14>>> traduire_romain("CXLII")142>>> traduire_romain("MMXXIV")20244 / 4
13.pdf → 13.pdf (0.999)
Texte de 13.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°13DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction recherche qui prend en paramètres elt nombre entier et tab untableau de nombres entiers (type list), et qui renvoie l’indice de la première occurrencede elt dans tab si elt est dans tab et None sinon.L’objectif de cet exercice est de parcourir un tableau, il est interdit d’utiliser la méthodeindex des listes Python.Exemples :>>> recherche(1, [2, 3, 4]) # renvoie None>>> recherche(1, [10, 12, 1, 56])2>>> recherche(50, [1, 50, 1])1>>> recherche(15, [8, 9, 10, 15])32 / 3EXERCICE 2 (10 points)On considère la fonction insere ci-dessous qui prend en argument un tableau tab d’en-tiers triés par ordre croissant et un entier a. Cette fonction crée et renvoie un nouveautableau tab d’entiers triés par ordre croissant.Cette fonction crée et renvoie un nouveau tableau à partir de celui fourni en paramètre en yinsérant la valeur a de sorte que le tableau renvoyé soit encore trié par ordre croissant. Lestableaux seront représentés sous la forme de listes Python.def insere(tab, a):"""Insère l'élément a (int) dans le tableau tab (list)trié par ordre croissant à sa place et renvoie lenouveau tableau."""tab_a = [ a ] + tab # nouveau tableau contenant a# suivi des éléments de tabi = 0while i < ... and a > ...:tab_a[i] = ...tab_a[i+1] = ai = ...return tab_aCompléter la fonction insere ci-dessus.Exemples :>>> insere([1, 2, 4, 5], 3)[1, 2, 3, 4, 5]>>> insere([1, 2, 7, 12, 14, 25], 30)[1, 2, 7, 12, 14, 25, 30]>>> insere([2, 3, 4], 1)[1, 2, 3, 4]>>> insere([], 1)[1]3 / 3

Texte de 13.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°13DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction recherche qui prend en paramètres elt nombre entier et tab untableau de nombres entiers (type list), et qui renvoie l’indice de la première occurrencede elt dans tab si elt est dans tab et None sinon.L’objectif de cet exercice est de parcourir un tableau, il est interdit d’utiliser la méthodeindex des listes Python.Exemples :>>> recherche(1, [2, 3, 4]) # renvoie None>>> recherche(1, [10, 12, 1, 56])2>>> recherche(50, [1, 50, 1])1>>> recherche(15, [8, 9, 10, 15])32 / 3EXERCICE 2 (10 points)On considère la fonction insere ci-dessous qui prend en argument un tableau tab d’en-tiers triés par ordre croissant et un entier a. Cette fonction crée et renvoie un nouveautableau tab d’entiers triés par ordre croissant.Cette fonction crée et renvoie un nouveau tableau à partir de celui fourni en paramètre en yinsérant la valeur a de sorte que le tableau renvoyé soit encore trié par ordre croissant. Lestableaux seront représentés sous la forme de listes Python.def insere(tab, a):"""Insère l'élément a (int) dans le tableau tab (list)trié par ordre croissant à sa place et renvoie lenouveau tableau."""tab_a = [ a ] + tab # nouveau tableau contenant a# suivi des éléments de tabi = 0while i < ... and a > ...:tab_a[i] = ...tab_a[i+1] = ai = ...return tab_aCompléter la fonction insere ci-dessus.Exemples :>>> insere([1, 2, 4, 5], 3)[1, 2, 3, 4, 5]>>> insere([1, 2, 7, 12, 14, 25], 30)[1, 2, 7, 12, 14, 25, 30]>>> insere([2, 3, 4], 1)[1, 2, 3, 4]>>> insere([], 1)[1]3 / 3
14.pdf → 20.pdf (0.957)
Texte de 14.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°14DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 5 pages numérotées de 1 / 5 à 5 / 5Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 5EXERCICE 1 (10 points)Dans cet exercice les tableaux sont représentés par des listes Python (type list).Écrire en python deux fonctions :• lancer de paramètre n, un entier positif, qui renvoie un tableau de n entiers obtenusaléatoirement entre 1 et 6 (1 et 6 inclus) ;• paire_6 de paramètre tab, un tableau de n entiers compris entre 1 et 6 et quirenvoie un booléen égal à True si le nombre de 6 est supérieur ou égal à 2, Falsesinon.On pourra utiliser la fonction randint(a,b) du module random pour laquelle la docu-mentation officielle est la suivante :random.randint(a, b)Renvoie un entier aléatoire N tel que a <= N <= b.Exemples :>>> lancer1 = lancer(5)>>> lancer1[5, 6, 6, 2, 2]>>> paire_6(lancer1)True>>> lancer2 = lancer(5)>>> lancer2[6, 5, 1, 6, 6]>>> paire_6(lancer2)True>>> lancer3 = lancer(3)>>> lancer3[2, 2, 6]>>> paire_6(lancer3)False>>> lancer4 = lancer(0)>>> lancer4[]>>> paire_6(lancer4)False2 / 5EXERCICE 2 (10 points)On considère une image en 256 niveaux de gris que l’on représente par une grille de nombres,c’est-à-dire une liste composée de sous-listes toutes de longueurs identiques.La largeur de l’image est donc la longueur d’une sous-liste et la hauteur de l’image est lenombre de sous-listes.Chaque sous-liste représente une ligne de l’image et chaque élément des sous-listes est unentier compris entre 0 et 255, représentant l’intensité lumineuse du pixel.Le négatif d’une image est l’image constituée des pixels x_n tels que x_n + x_i = 255où x_i est le pixel correspondant de l’image initiale.Étant donné une valeur seuil, la binarisation d’une image est l’image constituée des pixelsx_b valant 0 si x_i < seuil et 255 sinon, où x_i est le pixel correspondant de l’imageinitiale.Compléter le programme ci-dessous :def nombre_lignes(image):'''renvoie le nombre de lignes de l'image'''return ...def nombre_colonnes(image):'''renvoie la largeur de l'image'''return ...def negatif(image):'''renvoie le negatif de l'image sous la formed'une liste de listes'''# on cree une image de 0 aux memes dimensions# que le parametre imagenouvelle_image = [[0 for k in range(nombre_colonnes(image))]for i in range(nombre_lignes(image))]for i in range(nombre_lignes(image)):for j in range(...):nouvelle_image[i][j] = ...return nouvelle_imagedef binaire(image, seuil):'''renvoie une image binarisee de l'image sous la formed'une liste de listes contenant des 0 si la valeurdu pixel est strictement inferieure au seuil et 255 sinon'''nouvelle_image = [[0] * nombre_colonnes(image)for i in range(nombre_lignes(image))]for i in range(nombre_lignes(image)):for j in range(...):if image[i][j] < ... :nouvelle_image[i][j] = ...else:nouvelle_image[i][j] = ...return nouvelle_image3 / 54 / 5Exemples :>>> img=[[20, 34, 254, 145, 6], [23, 124, 237, 225, 69],[197, 174, 207, 25, 87], [255, 0, 24, 197, 189]]>>> nombre_lignes(img)4>>> nombre_colonnes(img)5>>> negatif(img)[[235, 221, 1, 110, 249], [232, 131, 18, 30, 186],[58, 81, 48, 230, 168], [0, 255, 231, 58, 66]]>>> binaire(img,120)[[0, 0, 255, 255, 0],[0, 255, 255, 255, 0],[255, 255, 255, 0, 0],[255, 0, 0, 255, 255]]5 / 5

Texte de 20.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°20DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)Dans cet exercice les tableaux sont représentés par des listes Python (type list).Écrire en python deux fonctions :• lancer de paramètre n, un entier positif, qui renvoie un tableau de n entiers obtenusaléatoirement entre 1 et 6 (1 et 6 inclus) ;• paire_6 de paramètre tab, un tableau de n entiers compris entre 1 et 6 et quirenvoie un booléen égal à True si le nombre de 6 est supérieur ou égal à 2, Falsesinon.On pourra utiliser la fonction randint(a,b) du module random pour laquelle la docu-mentation officielle est la suivante :random.randint(a, b)Renvoie un entier aléatoire N tel que a <= N <= b.Exemples :>>> lancer1 = lancer(5)>>> lancer1[5, 6, 6, 2, 2]>>> paire_6(lancer1)True>>> lancer2 = lancer(5)>>> lancer2[6, 5, 1, 6, 6]>>> paire_6(lancer2)True>>> lancer3 = lancer(3)[2, 2, 6]>>> paire_6(lancer3)False>>> lancer4 = lancer(0)[]>>> paire_6(lancer4)False2 / 4EXERCICE 2 (10 points)On considère une image en 256 niveaux de gris que l’on représente par une grille de nombres,c’est-à-dire une liste composée de sous-listes toutes de longueurs identiques.La largeur de l’image est donc la longueur d’une sous-liste et la hauteur de l’image est lenombre de sous-listes.Chaque sous-liste représente une ligne de l’image et chaque élément des sous-listes est unentier compris entre 0 et 255, représentant l’intensité lumineuse du pixel.Le négatif d’une image est l’image constituée des pixels x_n tels que x_n + x_i = 255où x_i est le pixel correspondant de l’image initiale.Compléter le programme ci-dessous :def nombre_lignes(image):'''renvoie le nombre de lignes de l'image'''return ...def nombre_colonnes(image):'''renvoie la largeur de l'image'''return ...def negatif(image):'''renvoie le negatif de l'image sous la formed'une liste de listes'''# on cree une image de 0 aux memes dimensions# que le parametre imagenouvelle_image = [[0 for k in range(nombre_colonnes(image))]for i in range(nombre_lignes(image))]for i in range(nombre_lignes(image)):for j in range(...):nouvelle_image[i][j] = ...return nouvelle_imagedef binaire(image, seuil):'''renvoie une image binarisee de l'image sous la formed'une liste de listes contenant des 0 si la valeurdu pixel est strictement inferieure au seuil et 1 sinon'''nouvelle_image = [[0] * nombre_colonnes(image)for i in range(nombre_lignes(image))]for i in range(nombre_lignes(image)):for j in range(...):if image[i][j] < ... :nouvelle_image[i][j] = ...else:nouvelle_image[i][j] = ...return nouvelle_image3 / 4Exemples :>>> img=[[20, 34, 254, 145, 6], [23, 124, 237, 225, 69],[197, 174, 207, 25, 87], [255, 0, 24, 197, 189]]>>> nombre_lignes(img)4>>> nombre_colonnes(img)5>>> negatif(img)[[235, 221, 1, 110, 249], [232, 131, 18, 30, 186],[58, 81, 48, 230, 168], [0, 255, 231, 58, 66]]>>> binaire(img,120)[[0, 0, 1, 1, 0],[0, 1, 1, 1, 0],[1, 1, 1, 0, 0],[1, 0, 0, 1, 1]]4 / 4
15.pdf → 18.pdf (0.988)
Texte de 15.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°15DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Programmer la fonction multiplication qui en paramètres deux nombres entiers relat-ifs n1 et n2, et qui renvoie le produit de ces deux nombres.Les seules opérations arithmétiques autorisées sont l’addition et la soustraction.Exemples :>>> multiplication(3, 5)15>>> multiplication(-4, -8)32>>> multiplication(-2, 6)-12>>> multiplication(-2, 0)02 / 3EXERCICE 2 (10 points)Soit tab un tableau non vide d’entiers triés dans l’ordre croissant et n un entier.La fonction chercher ci-dessous doit renvoyer un indice où la valeur n apparaît dans tabsi cette valeur y figure et None sinon.Les paramètres de la fonction sont :• tab, le tableau dans lequel s’effectue la recherche ;• x, l’entier à chercher dans le tableau ;• i, l’indice de début de la partie du tableau où s’effectue la recherche ;• j, l’indice de fin de la partie du tableau où s’effectue la recherche.L’algorithme demandé est une recherche dichotomique récursive.Recopier et compléter le code de la fonction chercher suivante :def chercher(tab, x, i, j):'''Renvoie l'indice de x dans tab, si x est dans tab,None sinon.On suppose que tab est trié dans l'ordre croissant.'''if i > j:return Nonem = (i + j) // ...if ... < x:return chercher(tab, x, ... , ...)elif tab[m] > x:return chercher(tab, x, ... , ...)else:return ...Exemples :>>> chercher([1, 5, 6, 6, 9, 12], 7, 0, 5)>>> chercher([1, 5, 6, 6, 9, 12], 9, 0, 5)4>>> chercher([1, 5, 6, 6, 9, 12], 6, 0, 5)2>>> chercher([1], 0, 0, 0)>>> chercher([1], 1, 0, 0)03 / 3

Texte de 18.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°18DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Programmer la fonction multiplication qui en paramètres deux nombres entiers relat-ifs n1 et n2, et qui renvoie le produit de ces deux nombres.Les seules opérations arithmétiques autorisées sont l’addition et la soustraction.Exemples :>>> multiplication(3, 5)15>>> multiplication(-4, -8)32>>> multiplication(-2, 6)-12>>> multiplication(-2, 0)02 / 3EXERCICE 2 (10 points)Soit tab un tableau non vide d’entiers triés dans l’ordre croissant et n un entier.La fonction chercher ci-dessous doit renvoyer un indice où la valeur n apparaît dans tabsi cette valeur y figure et None sinon.Les paramètres de la fonction sont :• tab, le tableau dans lequel s’effectue la recherche ;• x, l’entier à chercher dans le tableau ;• i, l’indice de début de la partie du tableau où s’effectue la recherche ;• j, l’indice de fin de la partie du tableau où s’effectue la recherche.L’algorithme demandé est une recherche dichotomique récursive.Recopier et compléter le code de la fonction chercher suivante :def chercher(tab, x, i, j):'''Renvoie l'indice de x dans tab, si x est dans tab,None sinon.On suppose que tab est trié dans l'ordre croissant.'''if i > j:return Nonem = (i + j) // ...if ... < x:return chercher(tab, x, ... , ...)elif tab[m] > x:return chercher(tab, x, ... , ...)else:return ...Exemples :>>> chercher([1, 5, 6, 6, 9, 12], 7, 0, 10)>>> chercher([1, 5, 6, 6, 9, 12], 7, 0, 5)>>> chercher([1, 5, 6, 6, 9, 12], 9, 0, 5)4>>> chercher([1, 5, 6, 6, 9, 12], 6, 0, 5)23 / 3
16.pdf → 29.pdf (0.999)
Texte de 16.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°16DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction moyenne(notes) qui renvoie la moyenne pondérée des résultatscontenus dans le tableau notes, non vide, donné en paramètre. Ce tableau contient descouples (note, coefficient) dans lesquels :• note est un nombre de type flottant (float) compris entre 0 et 20 ;• coefficient est un nombre entier strictement positif.Ainsi l’expression moyenne([(15.0,2),(9.0,1),(12.0,3)]) devra renvoyer12.5 comme résultat du calcul suivant :2 × 15 + 1 × 9 + 3 × 122 + 1 + 3 = 12, 52 / 3EXERCICE 2 (10 points)On cherche à déterminer les valeurs du triangle de Pascal (Figure 1).Dans le triangle de Pascal, chaque ligne commence et se termine par le nombre 1. Commel’illustre la Figure 2, on additionne deux valeurs successives d’une ligne pour obtenir lavaleur qui se situe sous la deuxième valeur.Compléter les fonctions ligne_suivante et pascal ci-dessous. La fonctionligne_suivante prend en paramètre une liste d’entiers ligne correspondant à uneligne du triangle de Pascal et renvoie la liste correspondant à la ligne suivante du trianglede Pascal. La fonction pascal prend en paramètre un entier n et l’utilise pour construirele triangle de Pascal ayant n+1 lignes sous la forme d’une liste de listes.def ligne_suivante(ligne):'''Renvoie la ligne suivant ligne du triangle de Pascal'''ligne_suiv = [...]for i in range(...):ligne_suiv.append(...)ligne_suiv.append(...)return ligne_suivdef pascal(n):'''Renvoie le triangle de Pascal de hauteur n'''triangle = [ [1] ]for k in range(...):ligne_k = ...triangle.append(ligne_k)return triangleExemples :>>> ligne_suivante([1, 3, 3, 1])[1, 4, 6, 4, 1]>>> pascal(2)[[1], [1, 1], [1, 2, 1]]>>> pascal(3)[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1]]3 / 3

Texte de 29.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°29DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction moyenne(notes) qui renvoie la moyenne pondérée des résultatscontenus dans le tableau notes, non vide, donné en paramètre. Ce tableau contient descouples (note, coefficient) dans lesquels :• note est un nombre de type flottant (float) compris entre 0 et 20 ;• coefficient est un nombre entier strictement positif.Ainsi l’expression moyenne([(15.0,2),(9.0,1),(12.0,3)]) devra renvoyer12.5 comme résultat du calcul suivant :2 × 15 + 1 × 9 + 3 × 122 + 1 + 3 = 12, 52 / 3EXERCICE 2 (10 points)On cherche à déterminer les valeurs du triangle de Pascal (Figure 1).Dans le triangle de Pascal, chaque ligne commence et se termine par le nombre 1. Commel’illustre la Figure 2, on additionne deux valeurs successives d’une ligne pour obtenir lavaleur qui se situe sous la deuxième valeur.Compléter les fonctions ligne_suivante et pascal ci-dessous. La fonctionligne_suivante prend en paramètre une liste d’entiers ligne correspondant à uneligne du triangle de Pascal et renvoie la liste correspondant à la ligne suivante du trianglede Pascal. La fonction pascal prend en paramètre un entier n et l’utilise pour construirele triangle de Pascal ayant n+1 lignes sous la forme d’une liste de listes.def ligne_suivante(ligne):'''Renvoie la ligne suivant ligne du triangle de Pascal'''ligne_suiv = [...]for i in range(...):ligne_suiv.append(...)ligne_suiv.append(...)return ligne_suivdef pascal(n):'''Renvoie le triangle de Pascal de hauteur n'''triangle = [ [1] ]for k in range(...):ligne_k = ...triangle.append(ligne_k)return triangleExemples :>>> ligne_suivante([1, 3, 3, 1])[1, 4, 6, 4, 1]>>> pascal(2)[[1], [1, 1], [1, 2, 1]]>>> pascal(3)[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1]]3 / 3
17.pdf → 41.pdf (0.999)
Texte de 17.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°17DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Un arbre binaire est soit vide, représenté en Python par la valeur None, soit un nœud,contenant une étiquette et deux sous-arbres gauche et droit et représenté par une instancede la classe Noeud donnée ci-dessous.class Noeud:def __init__(self, etiquette, gauche, droit):self.v = etiquetteself.gauche = gaucheself.droit = droitL’arbre ci-dessus sera donc implémenté de la manière suivante :a = Noeud(1, Noeud(4, None, None),Noeud(0, None,Noeud(7, None, None)))Écrire une fonction récursive taille prenant en paramètre un arbre a et qui renvoie lataille de l’arbre que cette instance implémente.Écrire de même une fonction récursive hauteur prenant en paramètre un arbre a et quirenvoie la hauteur de l’arbre que cette instance implémente.On considère que la hauteur d’un arbre vide est -1 et la taille d’un arbre vide est 0.Exemples :>>> hauteur(a)2>>> taille(a)4>>> hauteur(None)-1>>> taille(None)0>>> hauteur(Noeud(1, None, None))0>>> taille(Noeud(1, None, None))12 / 3EXERCICE 2 (10 points)On rappelle que les tableaux sont représentés par des listes en Python du type list.Le but de cet exercice est d’écrire une fonction ajoute qui prend en paramètres troisarguments indice, element et tab et renvoie un tableau tab_ins dans lequel leséléments sont ceux du tableau tab avec, en plus, l’élément element à l’indice indice.On considère que les variables indice et element sont des entiers positifs et que leséléments de tab sont également des entiers.En réalisant cette insertion, Les éléments du tableau tab dont les indices sont supérieursou égaux à indice apparaissent décalés vers la droite dans le tableau tab_ins.Si indice est égal au nombre d’éléments du tableau tab, l’élément element est ajoutédans tab_ins après tous les éléments du tableau tab.Exemples :>>> ajoute(1, 4, [7, 8, 9])[7, 4, 8, 9]>>> ajoute(3, 4, [7, 8, 9])[7, 8, 9, 4]>>> ajoute(0, 4, [7, 8, 9])[4, 7, 8, 9]Compléter et tester le code ci-dessous :def ajoute(indice, element, tab):'''Renvoie un nouveau tableau obtenu en insérantelement à l'indice indice dans le tableau tab.'''nbre_elts = len(tab)tab_ins = [0] * (nbre_elts + 1)for i in range(indice):tab_ins[i] = ...tab_ins[...] = ...for i in range(indice + 1, nbre_elts + 1):tab_ins[i] = ...return tab_ins3 / 3

Texte de 41.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°41DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Un arbre binaire est soit vide, représenté en Python par la valeur None, soit un nœud,contenant une étiquette et deux sous-arbres gauche et droit et représenté par une instancede la classe Noeud donnée ci-dessous.class Noeud:def __init__(self, etiquette, gauche, droit):self.v = etiquetteself.gauche = gaucheself.droit = droitL’arbre ci-dessus sera donc implémenté de la manière suivante :a = Noeud(1, Noeud(4, None, None),Noeud(0, None,Noeud(7, None, None)))Écrire une fonction récursive taille prenant en paramètre un arbre a et qui renvoie lataille de l’arbre que cette instance implémente.Écrire de même une fonction récursive hauteur prenant en paramètre un arbre a et quirenvoie la hauteur de l’arbre que cette instance implémente.On considère que la hauteur d’un arbre vide est -1 et la taille d’un arbre vide est 0.Exemples :>>> hauteur(a)2>>> taille(a)4>>> hauteur(None)-1>>> taille(None)0>>> hauteur(Noeud(1, None, None))0>>> taille(Noeud(1, None, None))12 / 3EXERCICE 2 (10 points)On rappelle que les tableaux sont représentés par des listes en Python du type list.Le but de cet exercice est d’écrire une fonction ajoute qui prend en paramètres troisarguments indice, element et tab et renvoie un tableau tab_ins dans lequel leséléments sont ceux du tableau tab avec, en plus, l’élément element à l’indice indice.On considère que les variables indice et element sont des entiers positifs et que leséléments de tab sont également des entiers.En réalisant cette insertion, Les éléments du tableau tab dont les indices sont supérieursou égaux à indice apparaissent décalés vers la droite dans le tableau tab_ins.Si indice est égal au nombre d’éléments du tableau tab, l’élément element est ajoutédans tab_ins après tous les éléments du tableau tab.Exemples :>>> ajoute(1, 4, [7, 8, 9])[7, 4, 8, 9]>>> ajoute(3, 4, [7, 8, 9])[7, 8, 9, 4]>>> ajoute(0, 4, [7, 8, 9])[4, 7, 8, 9]Compléter et tester le code ci-dessous :def ajoute(indice, element, tab):'''Renvoie un nouveau tableau obtenu en insérantelement à l'indice indice dans le tableau tab.'''nbre_elts = len(tab)tab_ins = [0] * (nbre_elts + 1)for i in range(indice):tab_ins[i] = ...tab_ins[...] = ...for i in range(indice + 1, nbre_elts + 1):tab_ins[i] = ...return tab_ins3 / 3
18.pdf → 42.pdf (0.997)
Texte de 18.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°18DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction moyenne qui prend en paramètre un tableau d’entiers non vide et quirenvoie un nombre flottant donnant la moyenne de ces entiers.Attention : il est interdit d’utiliser la fonction sum ou la fonction mean (module statis-tics) de Python.Exemples>>> moyenne([1])1.0>>> moyenne([1, 2, 3, 4, 5, 6, 7])4.0>>> moyenne([1, 2])1.52 / 3EXERCICE 2 (10 points)Le but de l’exercice est de compléter une fonction qui détermine si une valeur est présentedans un tableau de valeurs triées dans l’ordre croissant.Compléter l’algorithme de dichotomie donné ci-après.def dichotomie(tab, x):"""applique une recherche dichotomique pour déterminersi x est dans le tableau trié tab.La fonction renvoie True si tab contient x et False sinon"""debut = 0fin = ...while debut <= fin:m = ...if x == tab[m]:return ...if x > tab[m]:debut = ...else:fin = ...return FalseExemples :>>> dichotomie([15, 16, 18, 19, 23, 24, 28, 29, 31, 33], 28)True>>> dichotomie([15, 16, 18, 19, 23, 24, 28, 29, 31, 33], 27)False>>> dichotomie([15, 16, 18, 19, 23, 24, 28, 29, 31, 33], 1)False>>> dichotomie([], 28)False3 / 3

Texte de 42.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°42DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction moyenne qui prend en paramètre un tableau d’entiers non vide et quirenvoie un nombre flottant donnant la moyenne de ces entiers.Attention : il est interdit d’utiliser la fonction sum ou la fonction mean (module statis-tics) de Python.Exemples>>> moyenne([1])1.0>>> moyenne([1, 2, 3, 4, 5, 6, 7])4.0>>. moyenne([1, 2])1.52 / 3EXERCICE 2 (10 points)Le but de l’exercice est de compléter une fonction qui détermine si une valeur est présentedans un tableau de valeurs triées dans l’ordre croissant.Compléter l’algorithme de dichotomie donné ci-après.def dichotomie(tab, x):"""applique une recherche dichotomique pour déterminersi x est dans le tableau trié tab.La fonction renvoie True si tab contient x et False sinon"""debut = 0fin = ...while debut <= fin:m = ...if x == tab[m]:return ...if x > tab[m]:debut = ...else:fin = ...return FalseExemples :>>> dichotomie([15, 16, 18, 19, 23, 24, 28, 29, 31, 33], 28)True>>> dichotomie([15, 16, 18, 19, 23, 24, 28, 29, 31, 33], 27)False>>> dichotomie([15, 16, 18, 19, 23, 24, 28, 29, 31, 33], 1)False>>> dichotomie([], 28)False3 / 3
19.pdf → 25.pdf (0.997)
Texte de 19.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°19DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)Écrire une fonction recherche_min qui prend en paramètre un tableau de nombres tabnon vide, et qui renvoie l’indice de la première occurrence du minimum de ce tableau. Lestableaux seront représentés sous forme de liste Python.Exemples :>>> recherche_min([5])0>>> recherche_min([2, 4, 1])2>>> recherche_min([5, 3, 2, 2, 4])2>>> recherche_min([-1, -2, -3, -3])22 / 4EXERCICE 2 (10 points)On considère la fonction separe ci-dessous qui prend en argument un tableau tab dontles éléments sont des 0 et des 1 et qui sépare les 0 des 1 en plaçant les 0 en début detableau et les 1 à la suite.def separe(tab):'''Separe les 0 et les 1 dans le tableau tab'''gauche = 0droite = ...while gauche < droite:if tab[gauche] == 0 :gauche = ...else :tab[gauche] = ...tab[droite] = ...droite = ...return tabCompléter la fonction separe ci-dessus.Exemples :>>> separe([1, 0, 1, 0, 1, 0, 1, 0])[0, 0, 0, 0, 1, 1, 1, 1]>>> separe([1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0])[0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1]Description d’étapes effectuées par la fonction separe sur le tableau ci-dessous, les carac-tères ^ indiquent les cases pointées par les indices gauche et droite :tab = [1, 0, 1, 0, 1, 0, 1, 0]^ ^• Étape 1 : on regarde la première case, qui contient un 1 : ce 1 va aller dans la secondepartie du tableau final et on l’échange avec la dernière case. Il est à présent bienpositionné : on ne prend plus la dernière case en compte.tab = [0, 0, 1, 0, 1, 0, 1, 1]^ ^• Étape 2 : on regarde à nouveau la première case, qui contient maintenant un 0 : ce 0va aller dans la première partie du tableau final et est bien positionné : on ne prendplus la première case en compte.tab = [0, 0, 1, 0, 1, 0, 1, 1]^ ^• Étape 3 : on regarde la seconde case, qui contient un 0 : ce 0 va aller dans la premièrepartie du tableau final et est bien positionné : on ne prend plus la seconde case encompte.tab = [0, 0, 1, 0, 1, 0, 1, 1]^ ^3 / 4• Étape 4 : on regarde la troisième case, qui contient un 1 : ce 1 va aller dans la secondepartie du tableau final et on l’échange avec l’avant-dernière case. Il est à présent bienpositionné : on ne prend plus l’avant-dernière case en compte.tab = [0, 0, 1, 0, 1, 0, 1, 1]^ ^Et ainsi de suite…tab = [0, 0, 0, 0, 1, 1, 1, 1]4 / 4

Texte de 25.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°25DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)Écrire une fonction recherche_min qui prend en paramètre un tableau de nombres tab,et qui renvoie l’indice de la première occurrence du minimum de ce tableau. Les tableauxseront représentés sous forme de liste Python.Exemples :>>> recherche_min([5])0>>> recherche_min([2, 4, 1])2>>> recherche_min([5, 3, 2, 2, 4])2>>> recherche_min([-1, -2, -3, -3])22 / 4EXERCICE 2 (10 points)On considère la fonction separe ci-dessous qui prend en argument un tableau tab dontles éléments sont des 0 et des 1 et qui sépare les 0 des 1 en plaçant les 0 en début detableau et les 1 à la suite.def separe(tab):'''Separe les 0 et les 1 dans le tableau tab'''gauche = 0droite = ...while gauche < droite:if tab[gauche] == 0 :gauche = ...else :tab[gauche] = ...tab[droite] = ...droite = ...return tabCompléter la fonction separe ci-dessus.Exemples :>>> separe([1, 0, 1, 0, 1, 0, 1, 0])[0, 0, 0, 0, 1, 1, 1, 1]>>> separe([1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0])[0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1]Description d’étapes effectuées par la fonction separe sur le tableau ci-dessous, les carac-tères ^ indiquent les cases pointées par les indices gauche et droite :tab = [1, 0, 1, 0, 1, 0, 1, 0]^ ^• Étape 1 : on regarde la première case, qui contient un 1 : ce 1 va aller dans la secondepartie du tableau final et on l’échange avec la dernière case. Il est à présent bienpositionné : on ne prend plus la dernière case en compte.tab = [0, 0, 1, 0, 1, 0, 1, 1]^ ^• Étape 2 : on regarde à nouveau la première case, qui contient maintenant un 0 : ce 0va aller dans la première partie du tableau final et est bien positionné : on ne prendplus la première case en compte.tab = [0, 0, 1, 0, 1, 0, 1, 1]^ ^• Étape 3 : on regarde la seconde case, qui contient un 0 : ce 0 va aller dans la premièrepartie du tableau final et est bien positionné : on ne prend plus la seconde case encompte.tab = [0, 0, 1, 0, 1, 0, 1, 1]^ ^3 / 4• Étape 4 : on regarde la troisième case, qui contient un 1 : ce 1 va aller dans la secondepartie du tableau final et on l’échange avec l’avant-dernière case. Il est à présent bienpositionné : on ne prend plus l’avant-dernière case en compte.tab = [0, 0, 1, 0, 1, 0, 1, 1]^ ^Et ainsi de suite…tab = [0, 0, 0, 0, 1, 1, 1, 1]4 / 4
20.pdf → 14.pdf (0.993)
Texte de 20.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°20DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)Écrire une fonction min_et_max qui prend en paramètre un tableau de nombres tab nonvide, et qui renvoie la plus petite et la plus grande valeur du tableau sous la forme d’undictionnaire à deux clés min et max.Les tableaux seront représentés sous forme de liste Python.L’utilisation des fonctions natives min, max et sorted, ainsi que la méthode sort n’estpas autorisée.Exemples :>>> min_et_max([0, 1, 4, 2, -2, 9, 3, 1, 7, 1]){'min': -2, 'max': 9}>>> min_et_max([0, 1, 2, 3]){'min': 0, 'max': 3}>>> min_et_max([3]){'min': 3, 'max': 3}>>> min_et_max([1, 3, 2, 1, 3]){'min': 1, 'max': 3}>>> min_et_max([-1, -1, -1, -1, -1]){'min': -1, 'max': -1}2 / 4EXERCICE 2 (10 points)On dispose d’une classe Carte permettant de créer des objets modélisant des cartes àjouer.Compléter la classe Paquet_de_cartes suivante en respectant les spécifications don-nées dans les chaînes de documentation.Ajouter une assertion dans la méthode recuperer_carte de la classe Pa-quet_de_cartes afin de vérifier que le paramètre pos est correct.On rappelle que l’instructionassert condition, messagepermet de vérifier que la condition est vraie. Si ce n’est pas le cas, le programme s’arrête etaffiche le message d’erreur fourni.class Carte:def __init__(self, c, v):"""Initialise les attributs couleur (entre 1 et 4),et valeur (entre 1 et 13). """self.couleur = cself.valeur = vdef recuperer_valeur(self):""" Renvoie la valeur de la carte :As, 2, ..., 10, Valet, Dame, Roi """valeurs = ['As','2', '3', '4', '5', '6', '7', '8','9', '10', 'Valet', 'Dame', 'Roi']return valeurs[self.valeur - 1]def recuperer_couleur(self):""" Renvoie la couleur de la carte(parmi pique, coeur, carreau, trèfle). """couleurs = ['pique', 'coeur', 'carreau', 'trèfle']return couleurs[self.couleur - 1]class Paquet_de_cartes:def __init__(self):""" Initialise l'attribut contenu avec une liste des 52objets Carte possibles rangés par valeurs croissantes encommençant par pique, puis cœur, carreau et trèfle. """............def recuperer_carte(self, pos):""" Renvoie la carte qui se trouve à la position pos(entier compris entre 0 et 51). """......3 / 4Exemple :>>> jeu = Paquet_de_cartes()>>> carte1 = jeu.recuperer_carte(20)>>> carte1.recuperer_valeur() \+ " de " + carte1.recuperer_couleur()"8 de coeur">>> carte2 = jeu.recuperer_carte(0)>>> carte2.recuperer_valeur() \+ " de " + carte2.recuperer_couleur()"As de pique">>> carte3 = jeu.recuperer_carte(52)AssertionError : paramètre pos invalide4 / 4

Texte de 14.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°14DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)Écrire une fonction min_et_max qui prend en paramètre un tableau de nombres tab nonvide, et qui renvoie la plus petite et la plus grande valeur du tableau sous la forme d’undictionnaire à deux clés min et max.Les tableaux seront représentés sous forme de liste Python.L’utilisation des fonctions natives min, max et sorted, ainsi que la méthode sort n’estpas autorisée.Exemples :>>> min_et_max([0, 1, 4, 2, -2, 9, 3, 1, 7, 1]){'min': -2, 'max': 9}>>> min_et_max([0, 1, 2, 3]){'min': 0, 'max': 3}>>> min_et_max([3]){'min': 3, 'max': 3}>>> min_et_max([1, 3, 2, 1, 3]){'min': 1, 'max': 3}>>> min_et_max([-1, -1, -1, -1, -1]){'min': -1, 'max': -1}2 / 4EXERCICE 2 (10 points)On dispose d’une classe Carte permettant de créer des objets modélisant des cartes àjouer.Compléter la classe Paquet_de_cartes suivante en respectant les spécifications don-nées dans les chaînes de documentation.Ajouter une assertion dans la méthode recuperer_carte afin de vérifier que leparamètre pos est correct.On rappelle que l’instructionassert condition, messagepermet de vérifier que la condition est vraie. Si ce n’est pas le cas, le programme s’arrête etaffiche le message d’erreur fourni.class Carte:def __init__(self, c, v):"""Initialise les attributs couleur (entre 1 et 4),et valeur (entre 1 et 13). """self.couleur = cself.valeur = vdef recuperer_valeur(self):""" Renvoie la valeur de la carte :As, 2, ..., 10, Valet, Dame, Roi """valeurs = ['As','2', '3', '4', '5', '6', '7', '8','9', '10', 'Valet', 'Dame', 'Roi']return valeurs[self.valeur - 1]def recuperer_couleur(self):""" Renvoie la couleur de la carte(parmi pique, coeur, carreau, trèfle). """couleurs = ['pique', 'coeur', 'carreau', 'trèfle']return couleurs[self.couleur - 1]class Paquet_de_cartes:def __init__(self):""" Initialise l'attribut contenu avec une liste des 52objets Carte possibles rangés par valeurs croissantes encommençant par pique, puis cœur, carreau et trèfle. """............def recuperer_carte(self, pos):""" Renvoie la carte qui se trouve à la position pos(entier compris entre 0 et 51). """......3 / 4Exemple :>>> jeu = Paquet_de_cartes()>>> carte1 = jeu.recuperer_carte(20)>>> carte1.recuperer_valeur() \+ " de " + carte1.recuperer_couleur()"8 de coeur">>> carte2 = jeu.recuperer_carte(0)>>> carte2.recuperer_valeur() \+ " de " + carte2.recuperer_couleur()"As de pique">>> carte3 = jeu.recuperer_carte(52)AssertionError : paramètre pos invalide4 / 4
21.pdf → 38.pdf (0.999)
Texte de 21.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°21DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction indices_maxi qui prend en paramètre un tableau non vide de nombreentiers tab, représenté par une liste Python et qui renvoie un tuple (maxi, indices)où :• maxi est le plus grand élément du tableau tab ;• indices est une liste Python contenant les indices du tableau tab où apparaît ceplus grand élément.Exemple :>>> indices_maxi([1, 5, 6, 9, 1, 2, 3, 7, 9, 8])(9, [3, 8])>>> indices_maxi([7])(7, [0])2 / 3EXERCICE 2 (10 points)Cet exercice utilise des piles qui seront représentées par des listes Python.Si pile est une pile, alors pile == [] indique si la pile est vide, pile.pop() retireet renvoie le sommet de la pile et pile.append(v) ajoute la valeur v au sommet de lapile.Si on considère qu’une fonction manipule une pile, elle ne peut pas utiliser d’autres opéra-tions que celles décrites ci-dessus.On cherche à écrire une fonction positifs qui prend une pile de nombres entiers enparamètre et qui renvoie une nouvelle pile contenant les entiers positifs de la pile initiale,dans le même ordre, quitte à modifier la pile initiale.Pour cela, on va également écrire une fonction renverse qui prend une pile en paramètreet qui renvoie une nouvelle pile contenant les mêmes éléments que la pile initiale, maisdans l’ordre inverse. Cette fonction sera également amenée à modifier la pile passée enparamètre.Compléter le code Python des fonctions renverse et positifs ci-après.def renverse(pile):'''renvoie une pile contenant les mêmes éléments que pile,mais dans l'ordre inverse.Cette fonction détruit pile.'''pile_inverse = ...while pile != []:... .append(...)return ...def positifs(pile):'''renvoie une pile contenant les éléments positifs de pile,dans le même ordre. Cette fonction détruit pile.'''pile_positifs = ...while pile != []:... = pile.pop()if ... >= 0:...return ...Exemples :>>> renverse([1, 2, 3, 4, 5])[5, 4, 3, 2, 1]>>> positifs([-1, 0, 5, -3, 4, -6, 10, 9, -8])[0, 5, 4, 10, 9]>>> positifs([-2])[]3 / 3

Texte de 38.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°38DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction indices_maxi qui prend en paramètre un tableau non vide de nombreentiers tab, représenté par une liste Python et qui renvoie un tuple (maxi, indices)où :• maxi est le plus grand élément du tableau tab ;• indices est une liste Python contenant les indices du tableau tab où apparaît ceplus grand élément.Exemple :>>> indices_maxi([1, 5, 6, 9, 1, 2, 3, 7, 9, 8])(9, [3, 8])>>> indices_maxi([7])(7, [0])2 / 3EXERCICE 2 (10 points)Cet exercice utilise des piles qui seront représentées par des listes Python.Si pile est une pile, alors pile == [] indique si la pile est vide, pile.pop() retireet renvoie le sommet de la pile et pile.append(v) ajoute la valeur v au sommet de lapile.Si on considère qu’une fonction manipule une pile, elle ne peut pas utiliser d’autres opéra-tions que celles décrites ci-dessus.On cherche à écrire une fonction positifs qui prend une pile de nombres entiers enparamètre et qui renvoie une nouvelle pile contenant les entiers positifs de la pile initiale,dans le même ordre, quitte à modifier la pile initiale.Pour cela, on va également écrire une fonction renverse qui prend une pile en paramètreet qui renvoie une nouvelle pile contenant les mêmes éléments que la pile initiale, maisdans l’ordre inverse. Cette fonction sera également amenée à modifier la pile passée enparamètre.Compléter le code Python des fonctions renverse et positifs ci-après.def renverse(pile):'''renvoie une pile contenant les mêmes éléments que pile,mais dans l'ordre inverse.Cette fonction détruit pile.'''pile_inverse = ...while pile != []:... .append(...)return ...def positifs(pile):'''renvoie une pile contenant les éléments positifs de pile,dans le même ordre. Cette fonction détruit pile.'''pile_positifs = ...while pile != []:... = pile.pop()if ... >= 0:...return ...Exemples :>>> renverse([1, 2, 3, 4, 5])[5, 4, 3, 2, 1]>>> positifs([-1, 0, 5, -3, 4, -6, 10, 9, -8])[0, 5, 4, 10, 9]>>> positifs([-2])[]3 / 3
22.pdf → 39.pdf (0.999)
Texte de 22.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°22DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction recherche qui prend en paramètres elt un nombre entier et tab untableau de nombres entiers (type list), et qui renvoie l’indice de la dernière occurrencede elt dans tab si elt est dans tab et None sinon.Exemples :>>> recherche(1, [2, 3, 4]) # renvoie None>>> recherche(1, [10, 12, 1, 56])2>>> recherche(1, [1, 0, 42, 7])0>>> recherche(1, [1, 50, 1])2>>> recherche(1, [8, 1, 10, 1, 7, 1, 8])52 / 3EXERCICE 2 (10 points)On définit une classe gérant une adresse IPv4.On rappelle qu’une adresse IPv4 est une adresse de longueur 4 octets, notée en décimale àpoint, en séparant chacun des octets par un point. On considère un réseau privé avec uneplage d’adresses IP de 192.168.0.0 à 192.168.0.255.On considère que les adresses IP saisies sont valides.Les adresses IP 192.168.0.0 et 192.168.0.255 sont des adresses réservées.Le code ci-dessous implémente la classe AdresseIP.class AdresseIP:def __init__(self, adresse):self.adresse =...def liste_octets(self):"""renvoie une liste de nombres entiers,la liste des octets de l'adresse IP"""# Note : split découpe la chaine de caractères# en fonction du séparateurreturn [int(i) for i in self.adresse.split(".")]def est_reservee(self):"""renvoie True si l'adresse IP est une adresseréservée, False sinon"""reservees = [ ... ]return ...def adresse_suivante(self):"""renvoie un objet de AdresseIP avec l'adresseIP qui suit l'adresse self si elle existe et None sinon"""octets = ...if ... == 254:return Noneoctet_nouveau = ... + ...return AdresseIP('192.168.0.' + ...)Compléter le code ci-dessus et instancier trois objets : adresse1, adresse2, adresse3avec respectivement les arguments suivants :'192.168.0.1', '192.168.0.2', '192.168.0.0'Vérifier que :>>> adresse1.liste_octets()[192, 168, 0, 1]>>> adresse1.est_reservee()False>>> adresse3.est_reservee()True>>> adresse2.adresse_suivante().adresse # acces valide à adresse# ici car on sait que l'adresse suivante existe'192.168.0.3'3 / 3

Texte de 39.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°39DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction recherche qui prend en paramètres elt un nombre entier et tab untableau de nombres entiers (type list), et qui renvoie l’indice de la dernière occurrencede elt dans tab si elt est dans tab et None sinon.Exemples :>>> recherche(1, [2, 3, 4]) # renvoie None>>> recherche(1, [10, 12, 1, 56])2>>> recherche(1, [1, 0, 42, 7])0>>> recherche(1, [1, 50, 1])2>>> recherche(1, [8, 1, 10, 1, 7, 1, 8])52 / 3EXERCICE 2 (10 points)On définit une classe gérant une adresse IPv4.On rappelle qu’une adresse IPv4 est une adresse de longueur 4 octets, notée en décimale àpoint, en séparant chacun des octets par un point. On considère un réseau privé avec uneplage d’adresses IP de 192.168.0.0 à 192.168.0.255.On considère que les adresses IP saisies sont valides.Les adresses IP 192.168.0.0 et 192.168.0.255 sont des adresses réservées.Le code ci-dessous implémente la classe AdresseIP.class AdresseIP:def __init__(self, adresse):self.adresse =...def liste_octets(self):"""renvoie une liste de nombres entiers,la liste des octets de l'adresse IP"""# Note : split découpe la chaine de caractères# en fonction du séparateurreturn [int(i) for i in self.adresse.split(".")]def est_reservee(self):"""renvoie True si l'adresse IP est une adresseréservée, False sinon"""reservees = [ ... ]return ...def adresse_suivante(self):"""renvoie un objet de AdresseIP avec l'adresseIP qui suit l'adresse self si elle existe et None sinon"""octets = ...if ... == 254:return Noneoctet_nouveau = ... + ...return AdresseIP('192.168.0.' + ...)Compléter le code ci-dessus et instancier trois objets : adresse1, adresse2, adresse3avec respectivement les arguments suivants :'192.168.0.1', '192.168.0.2', '192.168.0.0'Vérifier que :>>> adresse1.liste_octets()[192, 168, 0, 1]>>> adresse1.est_reservee()False>>> adresse3.est_reservee()True>>> adresse2.adresse_suivante().adresse # acces valide à adresse# ici car on sait que l'adresse suivante existe'192.168.0.3'3 / 3
23.pdf → 09.pdf (0.999)
Texte de 23.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°23DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)On veut trier par ordre croissant les notes d’une évaluation qui sont des nombres entierscompris entre 0 et 10 (inclus).Ces notes sont contenues dans un tableau notes_eval (type list).Écrire une fonction effectif_notes prenant en paramètre le tableau notes_eval etrenvoyant un tableau de longueur 11 tel que la valeur d’indice i soit le nombre de notesvalant i dans le tableau notes_eval.Écrire ensuite une fonction notes_triees prenant en paramètre le tableau des effectifsdes notes et renvoyant un tableau contenant les mêmes valeurs que notes_eval maistriées dans l’ordre croissant.Exemple :>>> notes_eval = [2, 0, 5, 9, 6, 9, 10, 5, 7,9, 9, 5, 0, 9, 6, 5, 4]>>> eff = effectif_notes(notes_eval)>>> eff[2, 0, 1, 0, 1, 4, 2, 1, 0, 5, 1]>>> notes_triees(eff)[0, 0, 2, 4, 5, 5, 5, 5, 6, 6, 7, 9, 9, 9, 9, 9, 10]2 / 4EXERCICE 2 (10 points)L’objectif de cet exercice est d’écrire deux fonctions récursives dec_to_bin etbin_to_dec assurant respectivement la conversion de l’écriture décimale d’un nombreentier vers son écriture en binaire et, réciproquement, la conversion de l’écriture en binaired’un nombre vers son écriture décimale.Dans cet exercice, on s’interdit l’usage des fonctions Python bin et int.L’exemple suivant montre comment obtenir l’écriture en binaire du nombre 25 :25 = 2 × 12 + 1= 2 × (2 × 6 + 0) + 1= 2 × (2 × (2 × 3 + 0) + 0) + 1= 2 × (2 × (2 × (2 × 1 + 1) + 0) + 0) + 1= 2 × (2 × (2 × (2 × (2 × 0 + 1) + 1) + 0) + 0) + 1= 1 × 24 + 1 × 23 + 0 × 22 + 0 × 21 + 1 × 20= 110012L’écriture binaire de 25 est donc 11001.On rappelle également que• l’expression a // 2 calcule le quotient de la division euclidienne de a par 2 ;• l’expression a % 2 calcule le reste dans la division euclidienne de a par 2.On indique enfin qu’en Python si mot = "informatique", alors• l’expression mot[-1] vaut 'e', c’est-à-dire le dernier caractère de la chaîne decaractères mot ;• l’expression mot[:-1] vaut 'informatiqu' , c’est-à-dire l’ensemble de la chaînede caractères mot privée de son dernier caractère.Compléter, puis tester, le code des deux fonctions situées à la page suivante.On précise que la fonction récursive dec_to_bin prend en paramètre un nombre entieret renvoie une chaîne de caractères contenant l’écriture en binaire du nombre passé enparamètre.Exemple :>>> dec_to_bin(25)'11001'La fonction récursive bin_to_dec prend en paramètre une chaîne de caractères représen-tant l’écriture d’un nombre en binaire et renvoie l’écriture décimale de ce nombre.>>> bin_to_dec('101010')423 / 4def dec_to_bin(nb_dec):q, r = nb_dec // 2, nb_dec % 2if q == ...:return ...else:return dec_to_bin(...) + ...def bin_to_dec(nb_bin):if len(nb_bin) == 1:if ... == '0':return 0else:return ...else:if nb_bin[-1] == '0':bit_droit = 0else:...return ... * bin_to_dec(nb_bin[:-1]) + ...4 / 4

Texte de 09.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°09DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)On veut trier par ordre croissant les notes d’une évaluation qui sont des nombres entierscompris entre 0 et 10 (inclus).Ces notes sont contenues dans un tableau notes_eval (type list).Écrire une fonction effectif_notes prenant en paramètre le tableau notes_eval etrenvoyant un tableau de longueur 11 tel que la valeur d’indice i soit le nombre de notesvalant i dans le tableau notes_eval.Écrire ensuite une fonction notes_triees prenant en paramètre le tableau des effectifsdes notes et renvoyant un tableau contenant les mêmes valeurs que notes_eval maistriées dans l’ordre croissant.Exemple :>>> notes_eval = [2, 0, 5, 9, 6, 9, 10, 5, 7,9, 9, 5, 0, 9, 6, 5, 4]>>> eff = effectif_notes(notes_eval)>>> eff[2, 0, 1, 0, 1, 4, 2, 1, 0, 5, 1]>>> notes_triees(eff)[0, 0, 2, 4, 5, 5, 5, 5, 6, 6, 7, 9, 9, 9, 9, 9, 10]2 / 4EXERCICE 2 (10 points)L’objectif de cet exercice est d’écrire deux fonctions récursives dec_to_bin etbin_to_dec assurant respectivement la conversion de l’écriture décimale d’un nombreentier vers son écriture en binaire et, réciproquement, la conversion de l’écriture en binaired’un nombre vers son écriture décimale.Dans cet exercice, on s’interdit l’usage des fonctions Python bin et int.L’exemple suivante montre comment obtenir l’écriture en binaire du nombre 25 :25 = 2 × 12 + 1= 2 × (2 × 6 + 0) + 1= 2 × (2 × (2 × 3 + 0) + 0) + 1= 2 × (2 × (2 × (2 × 1 + 1) + 0) + 0) + 1= 2 × (2 × (2 × (2 × (2 × 0 + 1) + 1) + 0) + 0) + 1= 1 × 24 + 1 × 23 + 0 × 22 + 0 × 21 + 1 × 20= 110012L’écriture binaire de 25 est donc 11001.On rappelle également que• l’expression a // 2 calcule le quotient de la division euclidienne de a par 2 ;• l’expression a % 2 calcule le reste dans la division euclidienne de a par 2.On indique enfin qu’en Python si mot = "informatique", alors• l’expression mot[-1] vaut 'e', c’est-à-dire le dernier caractère de la chaîne decaractères mot ;• l’expression mot[:-1] vaut 'informatiqu' , c’est-à-dire l’ensemble de la chaînede caractères mot privée de son dernier caractère.Compléter, puis tester, le code des deux fonctions situées à la page suivante.On précise que la fonction récursive dec_to_bin prend en paramètre un nombre entieret renvoie une chaîne de caractères contenant l’écriture en binaire du nombre passé enparamètre.Exemple :>>> dec_to_bin(25)'11001'La fonction récursive bin_to_dec prend en paramètre une chaîne de caractères représen-tant l’écriture d’un nombre en binaire et renvoie l’écriture décimale de ce nombre.>>> bin_to_dec('101010')423 / 4def dec_to_bin(nb_dec):q, r = nb_dec // 2, nb_dec % 2if q == ...:return ...else:return dec_to_bin(...) + ...def bin_to_dec(nb_bin):if len(nb_bin) == 1:if ... == '0':return 0else:return ...else:if nb_bin[-1] == '0':bit_droit = 0else:...return ... * bin_to_dec(nb_bin[:-1]) + ...4 / 4
24.pdf → 44.pdf (0.998)
Texte de 24.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°24DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)Écrire une fonction enumere qui prend en paramètre un tableau tab (type list) et renvoieun dictionnaire d dont les clés sont les éléments de tab avec pour valeur associée la listedes indices de l’élément dans le tableau tab.Exemple :>>> enumere([]){}>>> enumere([1, 2, 3]){1: [0], 2: [1], 3: [2]}>>> enumere([1, 1, 2, 3, 2, 1]){1: [0, 1, 5], 2: [2, 4], 3: [3]}2 / 4EXERCICE 2 (10 points)Un arbre binaire est soit vide, représenté en Python par la valeur None, soit un nœud,contenant une étiquette et deux sous-arbres gauche et droit représentés par une instancede la classe Noeud donnée ci-dessous.class Noeud:"""Classe représentant un noeud d'un arbre binaire"""def __init__(self, etiquette, gauche, droit):"""Crée un noeud de valeur etiquette avecgauche et droit comme fils."""self.etiquette = etiquetteself.gauche = gaucheself.droit = droitdef parcours(arbre, liste):"""parcours récursivement l'arbre en ajoutant les étiquettesde ses noeuds à la liste passée en argument en ordre infixe."""if arbre != None:parcours(arbre.gauche, liste)liste.append(arbre.etiquette)parcours(arbre.droit, liste)return listeLa fonction récursive parcours renvoie la liste des étiquettes des nœuds de l’arbre implé-menté par l’instance arbre dans l’ordre du parcours en profondeur infixe à partir d’une listevide passée en argument.Compléter le code de la fonction insere, présenté page suivante, qui prend en argumentun arbre binaire de recherche arbre représenté ainsi et une étiquette cle, non présentedans l’arbre, et qui :• renvoie une nouvelle feuille d’étiquette cle s’il est vide ;• renvoie l’arbre après l’avoir modifié en insérant cle sinon ;• garantit que l’arbre ainsi complété soit encore un arbre binaire de recherche.Tester ensuite ce code en utilisant la fonction parcours et en insérant successivement desnœuds d’étiquette 1, 4, 6 et 8 dans l’arbre binaire de recherche représenté ci- dessous :3 / 4def insere(arbre, cle):"""insere la cle dans l'arbre binaire de recherchereprésenté par arbre.Retourne l'arbre modifié."""if arbre == None:return Noeud(cle, None, None) # creation d'une feuilleelse:if ...:arbre.gauche = insere(arbre.gauche, cle)else:arbre.droit = ...return arbre4 / 4

Texte de 44.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°44DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)Écrire une fonction enumere qui prend en paramètre un tableau tab (type list) et renvoieun dictionnaire d dont les clés sont les éléments de tab avec pour valeur associée la listedes indices de l’élément dans le tableau tab.Exemple :>>> enumere([]){}>>> enumere([1, 2, 3]){1: [0], 2: [1], 3: [2]}>>> enumere([1, 1, 2, 3, 2, 1]){1: [0, 1, 5], 2: [2, 4], 3: [3]}2 / 4EXERCICE 2 (10 points)Un arbre binaire est soit vide, représenté en Python par la valeur None, soit un nœud,contenant une étiquette et deux sous-arbres gauche et droit et représenté par une instancede la classe Noeud donnée ci-dessous.class Noeud:"""Classe représentant un noeud d'un arbre binaire"""def __init__(self, etiquette, gauche, droit):"""Crée un noeud de valeur etiquette avecgauche et droit comme fils."""self.etiquette = etiquetteself.gauche = gaucheself.droit = droitdef parcours(arbre, liste):"""parcours récursivement l'arbre en ajoutant les étiquettesde ses noeuds à la liste passée en argument en ordre infixe."""if arbre != None:parcours(arbre.gauche, liste)liste.append(arbre.etiquette)parcours(arbre.droit, liste)return listeLa fonction récursive parcours renvoie la liste des étiquettes des nœuds de l’arbre implé-menté par l’instance arbre dans l’ordre du parcours en profondeur infixe à partir d’une listevide passée en argument.Compléter le code de la fonction insere, présenté page suivante, qui prend en argumentun arbre binaire de recherche arbre représenté ainsi et une étiquette cle, non présentedans l’arbre, et qui :• renvoie une nouvelle feuille d’étiquette cle s’il est vide ;• renvoie l’arbre après l’avoir modifié en insérant cle sinon ;• garantit que l’arbre ainsi complété soit encore un arbre binaire de recherche.Tester ensuite ce code en utilisant la fonction parcours et en insérant successivement desnœuds d’étiquette 1, 4, 6 et 8 dans l’arbre binaire de recherche représenté ci- dessous :3 / 4def insere(arbre, cle):"""insere la cle dans l'arbre binaire de recherchereprésenté par arbre.Retourne l'arbre modifié."""if arbre == None:return Noeud(cle, None, None) # creation d'une feuilleelse:if ...:arbre.gauche = insere(arbre.gauche, cle)else:arbre.droit = ...return arbre4 / 4
25.pdf → 35.pdf (0.999)
Texte de 25.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°25DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)On a relevé les valeurs moyennes annuelles des températures à Paris pour la période allantde 2013 à 2019. Les résultats ont été récupérés sous la forme de deux tableaux (de typelist) : l’un pour les températures, l’autre pour les années :t_moy = [14.9, 13.3, 13.1, 12.5, 13.0, 13.6, 13.7]annees = [2013, 2014, 2015, 2016, 2017, 2018, 2019]Écrire la fonction annee_temperature_minimale qui prend en paramètres ces deuxtableaux et qui renvoie la plus petite valeur relevée au cours de la période et l’année corre-spondante.On suppose que la température minimale est atteinte une seule fois.Exemple :>>> annee_temperature_minimale(t_moy, annees)(12.5, 2016)2 / 3EXERCICE 2 (10 points)Un mot palindrome peut se lire de la même façon de gauche à droite ou de droite à gauche :kayak, radar, et non sont des mots palindromes.De même certains nombres ont des écritures décimales qui sont des palindromes : 33, 121,345543.L’objectif de cet exercice est d’obtenir un programme Python permettant de tester si unnombre est un nombre palindrome.Pour remplir cette tâche, on vous demande de compléter le code des trois fonctions ci-dessous qui s’appuient les unes sur les autres :• inverse_chaine : qui renvoie une chaîne de caractères inversée ;• est_palindrome : qui teste si une chaîne de caractères est un palindrome ;• est_nbre_palindrome : qui teste si un nombre est un palindrome.Compléter le code des trois fonctions ci-dessous.def inverse_chaine(chaine):'''Retourne la chaine inversée'''resultat = ...for caractere in chaine:resultat = ...return resultatdef est_palindrome(chaine):'''Renvoie un booléen indiquant si la chaine chest un palindrome'''inverse = inverse_chaine(chaine)return ...def est_nbre_palindrome(nbre):'''Renvoie un booléen indiquant si le nombre nbreest un palindrome'''chaine = ...return est_palindrome(chaine)Exemples :>>> inverse_chaine('bac')'cab'>>> est_palindrome('NSI')False>>> est_palindrome('ISN-NSI')True>>> est_nbre_palindrome(214312)False>>> est_nbre_palindrome(213312)True3 / 3

Texte de 35.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°35DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)On a relevé les valeurs moyennes annuelles des températures à Paris pour la période allantde 2013 à 2019. Les résultats ont été récupérés sous la forme de deux tableaux (de typelist) : l’un pour les températures, l’autre pour les années :t_moy = [14.9, 13.3, 13.1, 12.5, 13.0, 13.6, 13.7]annees = [2013, 2014, 2015, 2016, 2017, 2018, 2019]Écrire la fonction annee_temperature_minimale qui prend en paramètres ces deuxtableaux et qui renvoie la plus petite valeur relevée au cours de la période et l’année corre-spondante.On suppose que la température minimale est atteinte une seule fois.Exemple :>>> annee_temperature_minimale(t_moy, annees)(12.5, 2016)2 / 3EXERCICE 2 (10 points)Un mot palindrome peut se lire de la même façon de gauche à droite ou de droite à gauche :kayak, radar, et non sont des mots palindromes.De même certains nombres ont des écritures décimales qui sont des palindromes : 33, 121,345543.L’objectif de cet exercice est d’obtenir un programme Python permettant de tester si unnombre est un nombre palindrome.Pour remplir cette tâche, on vous demande de compléter le code des trois fonctions ci-dessous qui s’appuient les unes sur les autres :• inverse_chaine : qui renvoie une chaîne de caractères inversée ;• est_palindrome : qui teste si une chaîne de caractères est un palindrome ;• est_nbre_palindrome : qui teste si un nombre est un palindrome.Compléter le code des trois fonctions ci-dessous.def inverse_chaine(chaine):'''Retourne la chaine inversée'''resultat = ...for caractere in chaine:resultat = ...return resultatdef est_palindrome(chaine):'''Renvoie un booléen indiquant si la chaine chest un palindrome'''inverse = inverse_chaine(chaine)return ...def est_nbre_palindrome(nbre):'''Renvoie un booléen indiquant si le nombre nbreest un palindrome'''chaine = ...return est_palindrome(chaine)Exemples :>>> inverse_chaine('bac')'cab'>>> est_palindrome('NSI')False>>> est_palindrome('ISN-NSI')True>>> est_nbre_palindrome(214312)False>>> est_nbre_palindrome(213312)True3 / 3
26.pdf → 26.pdf (0.984)
Texte de 26.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°26DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction ajoute_dictionnaires qui prend en paramètres deux diction-naires d1 et d2 dont les clés sont des nombres et renvoie le dictionnaire d défini de la façonsuivante :• les clés de d sont celles de d1 et celles de d2 réunies ;• si une clé est présente dans les deux dictionnaires d1 et d2, sa valeur associée dansle dictionnaire d est la somme de ses valeurs dans les dictionnaires d1 et d2 ;• si une clé n’est présente que dans un des deux dictionnaires, sa valeur associée dansle dictionnaire d est la même que sa valeur dans le dictionnaire où elle est présente.Exemples :>>> ajoute_dictionnaires({1: 5, 2: 7}, {2: 9, 3: 11}){1: 5, 2: 16, 3: 11}>>> ajoute_dictionnaires({}, {2: 9, 3: 11}){2: 9, 3: 11}>>> ajoute_dictionnaires({1: 5, 2: 7}, {}){1: 5, 2: 7}2 / 3EXERCICE 2 (10 points)On considère une piste carrée qui contient 4 cases par côté. Les cases sont numérotées de 0inclus à 12 exclu comme ci-dessous :L’objectif de l’exercice est d’implémenter le jeu suivant :Au départ, le joueur place son pion sur la case 0. A chaque coup, il lance un dé équilibré àsix faces et avance son pion d’autant de cases que le nombre indiqué par le dé (entre 1 et 6inclus) dans le sens des aiguilles d’une montre.Par exemple, s’il obtient 2 au premier lancer, il pose son pion sur la case 2 puis s’il obtient 6au deuxième lancer, il le pose sur la case 8, puis s’il obtient à nouveau 6, il pose le pion surla case 2.Le jeu se termine lorsque le joueur a posé son pion sur toutes les cases de la piste.Compléter la fonction nombre_coups ci-dessous de sorte qu’elle renvoie le nombre delancers aléatoires nécessaires pour terminer le jeu.from random import randintdef nombre_coups():'''Simule un jeu de plateau avec 12 cases et renvoie le nombrenécessaire de coups pour visiter toutes les cases.'''nombre_cases = 12# indique si une case a été vuecases_vues = [ False ] * nombre_casesnombre_cases_vues = 1cases_vues[0] = Truecase_en_cours = 0n = ...while ... < ...:x = randint(1, 6)case_en_cours = (case_en_cours + ...) % ...if ...:cases_vues[case_en_cours] = Truenombre_cases_vues = ...n = ...return n3 / 3

Texte de 26.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°26DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction ajoute_dictionnaires qui prend en paramètres deux diction-naires d1 et d2 dont les clés sont des nombres et renvoie le dictionnaire d défini de la façonsuivante :• les clés de d sont celles de d1 et celles de d2 réunies ;• si une clé est présente dans les deux dictionnaires d1 et d2, sa valeur associée dansle dictionnaire d est la somme de ses valeurs dans les dictionnaires d1 et d2 ;• si une clé n’est présente que dans un des deux dictionnaires, sa valeur associée dansle dictionnaire d est la même que sa valeur dans le dictionnaire où elle est présente.Exemples :>>> ajoute_dictionnaires({1: 5, 2: 7}, {2: 9, 3: 11}){1: 5, 2: 16, 3: 11}>>> ajoute_dictionnaires({}, {2: 9, 3: 11}){2: 9, 3: 11}>>> ajoute_dictionnaires({1: 5, 2: 7}, {}){1: 5, 2: 7}2 / 3EXERCICE 2 (10 points)On considère une piste carrée qui contient 4 cases par côté. Les cases sont numérotées de 0inclus à 12 exclu comme ci-dessous :L’objectif de l’exercice est d’implémenter le jeu suivant :Au départ, le joueur place son pion sur la case 0. A chaque coup, il lance un dé équilibré àsix faces et avance son pion d’autant de cases que le nombre indiqué par le dé (entre 1 et 6inclus) dans le sens des aiguilles d’une montre.Par exemple, s’il obtient 2 au premier lancer, il pose son pion sur la case 2 puis s’il obtient 6au deuxième lancer, il le pose sur la case 8, puis s’il obtient à nouveau 6, il pose le pion surla case 2.Le jeu se termine lorsque le joueur a posé son pion sur toutes les cases de la piste.Compléter la fonction nombre_coups ci-dessous de sorte qu’elle renvoie le nombre delancers aléatoires nécessaires pour terminer le jeu.Proposer ensuite quelques tests pour en vérifier le fonctionnement.from random import randintdef nombre_coups():'''Simule un jeu de plateau avec 12 cases et renvoie le nombreminimal de coups pour visiter toutes les cases.'''nombre_cases = 12# indique si une case a été vuecases_vues = [ False ] * nombre_casesnombre_cases_vues = 1cases_vues[0] = Truecase_en_cours = 0n = ...while ... < ...:x = randint(1, 6)case_en_cours = (case_en_cours + ...) % ...if ...:cases_vues[case_en_cours] = Truenombre_cases_vues = ...n = ...return n3 / 3
27.pdf → 06.pdf (0.999)
Texte de 27.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°27DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)Écrire une fonction verifie qui prend en paramètre un tableau de valeurs numériques etqui renvoie True si ce tableau est trié dans l’ordre croissant, False sinon.Un tableau vide est considéré comme trié.Exemples :>>> verifie([0, 5, 8, 8, 9])True>>> verifie([8, 12, 4])False>>> verifie([-1, 4])True>>> verifie([])True>>> verifie([5])True2 / 4EXERCICE 2 (10 points)On considère dans cet exercice l’élection d’un vainqueur à l’issue d’un vote. Les résultatsdu vote sont stockés dans un tableau : chaque vote exprimé est le nom d’un ou d’unecandidate.Par exemple, les résultats pourraient correspondre au tableau :urne = ['A', 'A', 'A', 'B', 'C', 'B', 'C', 'B', 'C', 'B']indiquant que 3 candidats ont obtenu au moins un vote chacun : A, B et C.On cherche à déterminer le ou les candidats ayant obtenu le plus de suffrages. Pour cela, onpropose d’écrire deux fonctions :• la fonction depouille doit permettre de compter le nombre de votes exprimés pourchacune des issues. Elle prend en paramètre un tableau et renvoie le résultat dans undictionnaire dont les clés sont les noms des issues et les valeurs le nombre de votesen leur faveur ;• la fonction vainqueurs doit désigner le nom du ou des gagnants. Elle prend enparamètre un dictionnaire non vide dont la structure est celle du dictionnaire renvoyépar la fonction depouille et renvoie un tableau. Ce tableau peut donc contenirplusieurs éléments s’il y a des artistes ex-aequo.Compléter les fonctions depouille et vainqueurs ci-après pour qu’elles renvoient lesrésultats attendus.def depouille(urne):'''prend en paramètre une liste de suffrages et renvoie undictionnaire avec le nombre de voix pour chaque candidat'''resultat = ...for bulletin in urne:if ...:resultat[bulletin] = resultat[bulletin] + 1else:...return resultatdef vainqueurs(election):'''prend en paramètre un dictionnaire non vide avec le nombrede voix↪pour chaque candidat et renvoie la liste des vainqueurs'''nmax = 0for candidat in election:if ... > ... :nmax = ...liste_finale = [ nom for nom in election if ... ]return ...3 / 4Exemples d’utilisation :>>> depouille([ 'A', 'B', 'A' ]){'A': 2, 'B': 1}>>> depouille([]){}>>> election = depouille(['A', 'A', 'A', 'B', 'C','B', 'C', 'B', 'C', 'B'])>>> election{'A': 3, 'B': 4, 'C': 3}>>> vainqueurs(election)['B']>>> vainqueurs({ 'A' : 2, 'B' : 2, 'C' : 1})['A', 'B']4 / 4

Texte de 06.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°06DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)Écrire une fonction verifie qui prend en paramètre un tableau de valeurs numériques etqui renvoie True si ce tableau est trié dans l’ordre croissant, False sinon.Un tableau vide est considéré comme trié.Exemples :>>> verifie([0, 5, 8, 8, 9])True>>> verifie([8, 12, 4])False>>> verifie([-1, 4])True>>> verifie([])True>>> verifie([5])True2 / 4EXERCICE 2 (10 points)On considère dans cet exercice l’élection d’un vainqueur à l’issue d’un vote. Les résultatsdu vote sont stockés dans un tableau : chaque vote exprimé est le nom d’un ou d’unecandidate.Par exemple, les résultats pourraient correspondre au tableau :urne = ['A', 'A', 'A', 'B', 'C', 'B', 'C', 'B', 'C', 'B']indiquant que 3 candidats ont obtenus au moins un vote chacun : A, B et C.On cherche à déterminer le ou les candidats ayant obtenu le plus de suffrages. Pour cela, onpropose d’écrire deux fonctions :• la fonction depouille doit permettre de compter le nombre de votes exprimés pourchacune des issues. Elle prend en paramètre un tableau et renvoie le résultat dans undictionnaire dont les clés sont les noms des issues et les valeurs le nombre de votesen leur faveur ;• la fonction vainqueurs doit désigner le nom du ou des gagnants. Elle prend enparamètre un dictionnaire non vide dont la structure est celle du dictionnaire renvoyépar la fonction depouille et renvoie un tableau. Ce tableau peut donc contenirplusieurs éléments s’il y a des artistes ex-aequo.Compléter les fonctions depouille et vainqueurs ci-après pour qu’elles renvoient lesrésultats attendus.def depouille(urne):'''prend en paramètre une liste de suffrages et renvoie undictionnaire avec le nombre de voix pour chaque candidat'''resultat = ...for bulletin in urne:if ...:resultat[bulletin] = resultat[bulletin] + 1else:...return resultatdef vainqueurs(election):'''prend en paramètre un dictionnaire non vide avec le nombrede voix↪pour chaque candidat et renvoie la liste des vainqueurs'''nmax = 0for candidat in election:if ... > ... :nmax = ...liste_finale = [ nom for nom in election if ... ]return ...3 / 4Exemples d’utilisation :>>> depouille([ 'A', 'B', 'A' ]){'A': 2, 'B': 1}>>> depouille([]){}>>> election = depouille(['A', 'A', 'A', 'B', 'C','B', 'C', 'B', 'C', 'B'])>>> election{'A': 3, 'B': 4, 'C': 3}>>> vainqueurs(election)['B']>>> vainqueurs({ 'A' : 2, 'B' : 2, 'C' : 1})['A', 'B']4 / 4
28.pdf → 43.pdf (0.973)
Texte de 28.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°28DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)Écrire une fonction a_doublon qui prend en paramètre un tableau trié de nombres dansl’ordre croissant et renvoie True si ce tableau contient au moins deux nombres identiques,False sinon.Exemple :>>> a_doublon([])False>>> a_doublon([1])False>>> a_doublon([1, 2, 4, 6, 6])True>>> a_doublon([2, 5, 7, 7, 7, 9])True>>> a_doublon([0, 2, 3])False2 / 4EXERCICE 2 (10 points)On souhaite générer des grilles du jeu de démineur à partir de la position des bombes àplacer. On se limite à la génération de grilles carrées de taille 𝑛 × 𝑛 où 𝑛 est le nombre debombes du jeu.Dans le jeu du démineur, chaque case de la grille contient soit une bombe, soit une valeurqui correspond aux nombres de bombes situées dans le voisinage direct de la case (au-dessus, en dessous, à droite, à gauche ou en diagonale : chaque case a donc 8 voisins si ellen’est pas située au bord de la grille).Un exemple de grille 5 × 5 de démineur dans laquelle la bombe est représentée par uneétoile est représenté ci-dessous.On utilise une liste de listes pour représenter la grille et on choisit de coder une bombe parla valeur -1.L’exemple ci-dessus sera donc codé par la liste :[[1, 1, 1, 0, 0],[1, -1, 1, 1, 1],[2, 2, 3, 2, -1],[1, -1, 2, -1, 3],[1, 1, 2, 2, -1]]Compléter le code situé à la page suivante afin de générer des grilles de démineur, on pourravérifier que l’appelgenere_grille([(1, 1), (2, 4), (3, 1), (3, 3), (4, 4)])renvoie bien la liste donnée en exemple.3 / 4def voisinage(n, ligne, colonne):""" Renvoie la liste des coordonnées des voisins de la case(ligne, colonne) dans un grille de taille n x n,en tenant compte des cases sur les bords. """voisins = []for dl in range(-1, 2):for dc in range(-1, 2):l = ligne + dlc = colonne + dcif (l, c) != (ligne, colonne) \and 0 <= l < n and 0 <= c < n:voisins.append((l,c))return voisinsdef incremente_voisins(grille, ligne, colonne):""" Incrémente de 1 toutes les cases voisines d'une bombe."""voisins = ...for l, c in voisins:if grille[l][c] != ...: # si ce n'est pas une bombe... # on ajoute 1 à sa valeurdef genere_grille(bombes):""" Renvoie une grille de démineur de taille nxn où n estle nombre de bombes, en plaçant les bombes à l'aide dela liste bombes de coordonnées (tuples) passée enparamètre. """n = len(bombes)# Initialisation d'une grille nxn remplie de 0grille = [[0 for colonne in range(n)] for ligne in range(n)]# Place les bombes et calcule les valeurs des autres casesfor ligne, colonne in bombes:grille[ligne][colonne] = ... # place la bombe... # incrémente ses voisinsreturn grille4 / 4

Texte de 43.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°43DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)Écrire une fonction a_doublon qui prend en paramètre un tableau trié de nombres dansl’ordre croissant et renvoie True si ce tableau contient au moins deux nombres identiques,False sinon.Exemple :>>> a_doublon([])False>>> a_doublon([1])False>>> a_doublon([1, 2, 4, 6, 6])True>>> a_doublon([2, 5, 7, 7, 7, 9])True>>> a_doublon([0, 2, 3])False2 / 4EXERCICE 2 (10 points)On souhaite générer des grilles du jeu de démineur à partir de la position des bombes àplacer. On se limite à la génération de grilles carrées de taille 𝑛 × 𝑛 où 𝑛 est le nombre debombes du jeu.Dans le jeu du démineur, chaque case de la grille contient soit une bombe, soit une valeurqui correspond aux nombres de bombes situées dans le voisinage direct de la case (au-dessus, en dessous, à droite, à gauche ou en diagonale : chaque case a donc 8 voisins si ellen’est pas située au bord de la grille).Un exemple de grille 5 × 5 de démineur dans laquelle la bombe est représentée par uneétoile est représenté ci-dessous.On utilise une liste de listes pour représenter la grille et on choisit de coder une bombe parla valeur -1.L’exemple ci-dessus sera donc codé par la liste :[[1, 1, 1, 0, 0],[1, -1, 1, 1, 1],[2, 2, 3, 2, -1],[1, -1, 2, -1, 3],[1, 1, 2, 2, -1]]Compléter le code situé à la page suivante afin de générer des grilles de démineur, on pourravérifier que l’appelgenere_grille([(1, 1), (2, 4), (3, 1), (3, 3), (4, 4)])renvoie bien la liste donnée en exemple.3 / 4def voisinage(n, ligne, colonne):""" Renvoie la liste des coordonnées des voisins de la case(ligne, colonne) en gérant les cases sur les bords. """voisins = []for l in range(max(0,ligne-1), min(n, ligne+2)):for c in range(max(0, colonne-1), min(n, colonne+2)):if (l, c) != (ligne, colonne):voisins.append((l,c))return voisinsdef incremente_voisins(grille, ligne, colonne):""" Incrémente de 1 toutes les cases voisines d'une bombe."""voisins = ...for l, c in voisins:if grille[l][c] != ...: # si ce n'est pas une bombe... # on ajoute 1 à sa valeurdef genere_grille(bombes):""" Renvoie une grille de démineur de taille nxn où n estle nombre de bombes, en plaçant les bombes à l'aide dela liste bombes de coordonnées (tuples) passée enparamètre. """n = len(bombes)# Initialisation d'une grille nxn remplie de 0grille = [[0 for colonne in range(n)] for ligne in range(n)]# Place les bombes et calcule les valeurs des autres casesfor ligne, colonne in bombes:grille[ligne][colonne] = ... # place la bombe... # incrémente ses voisinsreturn grille4 / 4
29.pdf → 40.pdf (0.998)
Texte de 29.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°29DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)On considère des tables, c’est-à-dire des tableaux de dictionnaires ayant tous les mêmesclés, qui contiennent des enregistrements relatifs à des animaux hébergés dans un refuge.Les attributs des enregistrements sont 'nom', 'espece', 'age', 'enclos'.Voici un exemple d’une telle table :animaux = [ {'nom':'Medor', 'espece':'chien', 'age':5, 'enclos':2},{'nom':'Titine', 'espece':'chat', 'age':2, 'enclos':5},{'nom':'Tom', 'espece':'chat', 'age':7, 'enclos':4},{'nom':'Belle', 'espece':'chien', 'age':6, 'enclos':3},{'nom':'Mirza', 'espece':'chat', 'age':6, 'enclos':5}]Programmer une fonction selection_enclos qui :• prend en paramètres :– une table animaux contenant des enregistrements relatifs à des animaux(comme dans l’exemple ci-dessus),– un numéro d’enclos num_enclos ;• renvoie une table contenant les enregistrements de animaux dont l’attribut'enclos' est num_enclos.Exemples avec la table animaux ci-dessus :>>> selection_enclos(animaux, 5)[{'nom':'Titine', 'espece':'chat', 'age':2, 'enclos':5},{'nom':'Mirza', 'espece':'chat', 'age':6, 'enclos':5}]>>> selection_enclos(animaux, 2)[{'nom':'Medor', 'espece':'chien', 'age':5, 'enclos':2}]>>> selection_enclos(animaux, 7)[]2 / 4EXERCICE 2 (10 points)On considère des tableaux de nombres dont tous les éléments sont présents exactementtrois fois à la suite, sauf un élément qui est présent une unique fois et que l’on appelle «l’intrus ». Voici quelques exemples :tab_a = [3, 3, 3, 9, 9, 9, 1, 1, 1, 7, 2, 2, 2, 4, 4, 4, 8, 8, 8]#l'intrus est 7tab_b = [8, 5, 5, 5, 9, 9, 9, 18, 18, 18, 3, 3, 3]#l'intrus est 8tab_c = [5, 5, 5, 1, 1, 1, 0, 0, 0, 6, 6, 6, 3, 8, 8, 8]#l'intrus est 3On remarque qu’avec de tels tableaux :• pour les indices multiples de 3 situés strictement avant l’intrus, l’élément correspon-dant et son voisin de droite sont égaux,• pour les indices multiples de 3 situés après l’intrus, l’élément correspondant et sonvoisin de droite - s’il existe - sont différents.Ce que l’on peut observer ci-dessous en observant les valeurs des paires de voisins marquéespar des caractères ^ :[3, 3, 3, 9, 9, 9, 1, 1, 1, 7, 2, 2, 2, 4, 4, 4, 8, 8, 8]^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^0 3 6 9 12 15Dans des tableaux comme celles ci-dessus, un algorithme récursif pour trouver l’intrusconsiste alors à choisir un indice i multiple de 3 situé approximativement au milieu desindices parmi lesquels se trouve l’intrus.Puis, en fonction des valeurs de l’élément d’indice i et de son voisin de droite, à appliquerrécursivement l’algorithme à la moitié droite ou à la moitié gauche des indices parmi lesquelsse trouve l’intrus.Par exemple, si on s’intéresse à l’indice 12, on voit les valeurs 2 et 4 qui sont différentes :l’intrus est donc à gauche de l’indice 12 (indice 12 compris)En revanche, si on s’intéresse à l’indice 3, on voit les valeurs 9 et 9 qui sont identiques :l’intrus est donc à droite des indices 3-4-5, donc à partir de l’indice 6.Compléter la fonction récursive trouver_intrus proposée page suivante qui met en œuvrecet algorithme.3 / 4def trouver_intrus(tab, g, d):"""Renvoie la valeur de l'intrus situé entre les indices g et d↪dans le tableau tab où :tab vérifie les conditions de l'exercice,g et d sont des multiples de 3."""if g == d:return ...else:nombre_de_triplets = (d - g) // ...indice = g + 3 * (nombre_de_triplets // 2)if ...:return ...else:return ...Exemples :>>> trouver_intrus([3, 3, 3, 9, 9, 9, 1, 1, 1, 7,2, 2, 2, 4, 4, 4, 8, 8, 8], 0, 18)7>>> trouver_intrus([8, 5, 5, 5, 9, 9, 9, 18, 18, 18, 3, 3, 3],0, 12)8>>> trouver_intrus([5, 5, 5, 1, 1, 1, 0, 0, 0,6, 6, 6, 3, 8, 8, 8], 0, 15)34 / 4

Texte de 40.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°40DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)On considère des tables, c’est-à-dire des tableaux de dictionnaires ayant tous les mêmesclés, qui contiennent des enregistrements relatifs à des animaux hébergés dans un refuge.Les attributs des enregistrements sont 'nom', 'espece', 'age', 'enclos'.Voici un exemple d’une telle table :animaux = [ {'nom':'Medor', 'espece':'chien', 'age':5, 'enclos':2},{'nom':'Titine', 'espece':'chat', 'age':2, 'enclos':5},{'nom':'Tom', 'espece':'chat', 'age':7, 'enclos':4},{'nom':'Belle', 'espece':'chien', 'age':6, 'enclos':3},{'nom':'Mirza', 'espece':'chat', 'age':6, 'enclos':5}]Programmer une fonction selection_enclos qui :• prend en paramètres :– une table animaux contenant des enregistrements relatifs à des animaux(comme dans l’exemple ci-dessus),– un numéro d’enclos num_enclos ;• renvoie une table contenant les enregistrements de table_animaux dont l’attribut'enclos' est num_enclos.Exemples avec la table animaux ci-dessus :>>> selection_enclos(animaux, 5)[{'nom':'Titine', 'espece':'chat', 'age':2, 'enclos':5},{'nom':'Mirza', 'espece':'chat', 'age':6, 'enclos':5}]>>> selection_enclos(animaux, 2)[{'nom':'Medor', 'espece':'chien', 'age':5, 'enclos':2}]>>> selection_enclos(animaux, 7)[]2 / 4EXERCICE 2 (10 points)On considère des tableaux de nombres dont tous les éléments sont présents exactementtrois fois à la suite, sauf un élément qui est présent une unique fois et que l’on appelle «l’intrus ». Voici quelques exemples :tab_a = [3, 3, 3, 9, 9, 9, 1, 1, 1, 7, 2, 2, 2, 4, 4, 4, 8, 8, 8]#l'intrus est 7tab_b = [8, 5, 5, 5, 9, 9, 9, 18, 18, 18, 3, 3, 3]#l'intrus est 8tab_c = [5, 5, 5, 1, 1, 1, 0, 0, 0, 6, 6, 6, 3, 8, 8, 8]#l'intrus est 3On remarque qu’avec de tels tableaux :• pour les indices multiples de 3 situés strictement avant l’intrus, l’élément correspon-dant et son voisin de droite sont égaux,• pour les indices multiples de 3 situés après l’intrus, l’élément correspondant et sonvoisin de droite - s’il existe - sont différents.Ce que l’on peut observer ci-dessous en observant les valeurs des paires de voisins marquéespar des caractères ^ :[3, 3, 3, 9, 9, 9, 1, 1, 1, 7, 2, 2, 2, 4, 4, 4, 8, 8, 8]^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^0 3 6 9 12 15Dans des tableaux comme celles ci-dessus, un algorithme récursif pour trouver l’intrusconsiste alors à choisir un indice i multiple de 3 situé approximativement au milieu desindices parmi lesquels se trouve l’intrus.Puis, en fonction des valeurs de l’élément d’indice i et de son voisin de droite, à appliquerrécursivement l’algorithme à la moitié droite ou à la moitié gauche des indices parmi lesquelsse trouve l’intrus.Par exemple, si on s’intéresse à l’indice 12, on voit les valeurs 2 et 4 qui sont différentes :l’intrus est donc à gauche de l’indice 12 (indice 12 compris)En revanche, si on s’intéresse à l’indice 3, on voit les valeurs 9 et 9 qui sont identiques :l’intrus est donc à droite des indices 3-4-5, donc à partir de l’indice 6.Compléter la fonction récursive trouver_intrus proposée page suivante qui met en œuvrecet algorithme.3 / 4def trouver_intrus(tab, g, d):"""Renvoie la valeur de l'intrus situé entre les indices g et d↪dans le tableau tab où :tab vérifie les conditions de l'exercice,g et d sont des multiples de 3."""if g == d:return ...else:nombre_de_triplets = (d - g) // ...indice = g + 3 * (nombre_de_triplets // 2)if ...:return ...else:return ...Exemples :>>> trouver_intrus([3, 3, 3, 9, 9, 9, 1, 1, 1, 7,2, 2, 2, 4, 4, 4, 8, 8, 8], 0, 18)7>>> trouver_intrus([8, 5, 5, 5, 9, 9, 9, 18, 18, 18, 3, 3, 3],0, 12)8>>> trouver_intrus([5, 5, 5, 1, 1, 1, 0, 0, 0,6, 6, 6, 3, 8, 8, 8], 0, 15)34 / 4
30.pdf → 08.pdf (0.997)
Texte de 30.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°30DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)Le codage par différence (delta encoding en anglais) permet de compresser un tableaude données en indiquant pour chaque donnée, sa différence avec la précédente (plutôtque la donnée elle-même). On se retrouve alors avec un tableau de données plus petit,nécessitant moins de place en mémoire. Cette méthode se révèle efficace lorsque les valeursconsécutives sont proches.Programmer la fonction delta(liste) qui prend en paramètre un tableau non vide denombres entiers et qui renvoie un tableau contenant les valeurs entières compressées àl’aide cette technique.Exemples :>>> delta([1000, 800, 802, 1000, 1003])[1000, -200, 2, 198, 3]>>> delta([42])[42]2 / 4EXERCICE 2 (10 points)Une expression arithmétique ne comportant que les quatre opérations +, −, ×, ÷ peut êtrereprésentée sous forme d’arbre binaire. Les nœuds internes sont des opérateurs et lesfeuilles sont des nombres. Dans un tel arbre, la disposition des nœuds joue le rôle desparenthèses que nous connaissons bien.En parcourant en profondeur infixe l’arbre binaire ci-dessus, on retrouve l’expression notéehabituellement :(3 × (8 + 7)) − (2 + 1)La classe Expr ci-après permet d’implémenter une structure d’arbre binaire pour représen-ter de telles expressions.Compléter la méthode récursive infixe qui renvoie une chaîne de caractères contenantdes parenthèses représentant l’expression arithmétique sur laquelle on l’applique.class Expr:"""Classe implémentant un arbre d'expression."""def __init__(self, g, v, d):"""un objet Expr possède 3 attributs :- gauche : la sous-expression gauche ;- valeur : la valeur de l'étiquette, opérateur ou nombre ;- droite : la sous-expression droite."""self.gauche = gself.valeur = vself.droite = ddef est_une_feuille(self):"""renvoie True si et seulementsi le noeud est une feuille"""return self.gauche is None and self.droite is None3 / 4def infixe(self):"""renvoie la représentation infixe de l'expression enchaine de caractères"""s = ...if self.gauche is not None:s = s + '(' + ... .infixe()s = s + ...if ... is not None:s = s + ... + ...return sExemples :>>> a = Expr(Expr(None, 1, None), '+', Expr(None, 2, None))>>> a.infixe()'(1+2)'>>> b = Expr(Expr(Expr(None, 1, None), '+', Expr(None, 2, None)),'*', Expr(Expr(None, 3, None), '+', Expr(None, 4, None)))>>> b.infixe()'((1+2)*(3+4))'>>> e = Expr(Expr(Expr(None, 3, None), '*', Expr(Expr(None, 8, None),'+', Expr(None, 7, None))),'-', Expr(Expr(None, 2, None), '+', Expr(None, 1, None)))>>> e.infixe()'((3*(8+7))-(2+1))'4 / 4

Texte de 08.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°08DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)Le codage par différence (delta encoding en anglais) permet de compresser un tableaude données en indiquant pour chaque donnée, sa différence avec la précédente (plutôtque la donnée elle-même). On se retrouve alors avec un tableau de données plus petit,nécessitant moins de place en mémoire. Cette méthode se révèle efficace lorsque les valeursconsécutives sont proches.Programmer la fonction delta(liste) qui prend en paramètre un tableau non vide denombres entiers et qui renvoie un tableau contenant les valeurs entières compressées àl’aide cette technique.Exemples :>>> delta([1000, 800, 802, 1000, 1003])[1000, -200, 2, 198, 3]>>> delta([42])[42]2 / 4EXERCICE 2 (10 points)Une expression arithmétique ne comportant que les quatre opérations +, −, ×, ÷ peut êtrereprésentée sous forme d’arbre binaire. Les nœuds internes sont des opérateurs et lesfeuilles sont des nombres. Dans un tel arbre, la disposition des nœuds joue le rôle desparenthèses que nous connaissons bien.En parcourant en profondeur infixe l’arbre binaire ci-dessus, on retrouve l’expression notéehabituellement :(3 × (8 + 7)) − (2 + 1)La classe Expr ci-après permet d’implémenter une structure d’arbre binaire pour représen-ter de telles expressions.Compléter la méthode récursive infixe qui renvoie une chaîne de caractères contenantdes parenthèses représentant l’expression arithmétique sur laquelle on l’applique.class Expr:"""Classe implémentant un arbre d'expression."""def __init__(self, g, v, d):"""un objet Expr possède 3 attributs :- gauche : la sous-expression gauche ;- valeur : la valeur de l'étiquette, opérande ou nombre ;- droite : la sous-expression droite."""self.gauche = gself.valeur = vself.droite = ddef est_une_feuille(self):"""renvoie True si et seulementsi le noeud est une feuille"""return self.gauche is None and self.droite is None3 / 4def infixe(self):"""renvoie la représentation infixe de l'expression enchaine de caractères"""s = ...if self.gauche is not None:s = '(' + s + ... .infixe()s = s + ...if ... is not None:s = s + ... + ...return sExemples :>>> a = Expr(Expr(None, 1, None), '+', Expr(None, 2, None))>>> a.infixe()'(1+2)'>>> b = Expr(Expr(Expr(None, 1, None), '+', Expr(None, 2, None)),'*', Expr(Expr(None, 3, None), '+', Expr(None, 4, None)))>>> b.infixe()'((1+2)*(3+4))'>>> e = Expr(Expr(Expr(None, 3, None), '*', Expr(Expr(None, 8, None),'+', Expr(None, 7, None))),'-', Expr(Expr(None, 2, None), '+', Expr(None, 1, None)))>>> e.infixe()'((3*(8+7))-(2+1))'4 / 4
31.pdf → 21.pdf (0.995)
Texte de 31.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°31DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction recherche_motif qui prend en paramètre une chaîne de caractèresmotif non vide et une chaîne de caractères texte et qui renvoie la liste des positions demotif dans texte. Si motif n’apparaît pas, la fonction renvoie une liste vide.Exemples:>>> recherche_motif("ab", "")[]>>> recherche_motif("ab", "cdcdcdcd")[]>>> recherche_motif("ab", "abracadabra")[0, 7]>>> recherche_motif("ab", "abracadabraab")[0, 7, 11]2 / 3EXERCICE 2 (10 points)Dans cet exercice, on considère un graphe non orienté représenté sous forme de listesd’adjacence. On suppose que les sommets sont numérotés de 0 à n-1.Ainsi, le graphe suivant:sera représenté par la liste d’adjacence suivante:adj = [[1, 2], [0, 3], [0], [1], [5], [4]]On souhaite déterminer les sommets accessibles depuis un sommet donné dans le graphe.Pour cela, on va procéder à un parcours en profondeur du graphe.Compléter la fonction suivante.def parcours(adj, x, acc):'''Réalise un parcours en profondeur récursifdu graphe donné par les listes d'adjacence adjdepuis le sommet x en accumulant les sommetsrencontrés dans acc'''if x ...:acc.append(x)for y in ...:parcours(adj, ...)def accessibles(adj, x):'''Renvoie la liste des sommets accessibles dans legraphe donné par les listes d'adjacence adj depuisle sommet x.'''acc = []parcours(adj, ...)return accExemples :>>> accessibles([[1, 2], [0, 3], [0], [1], [5], [4]], 0)[0, 1, 3, 2]>>> accessibles([[1, 2], [0, 3], [0], [1], [5], [4]], 4)[4, 5]3 / 3

Texte de 21.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°21DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction recherche_motif qui prend en paramètre une chaîne de caractèresmotif non vide et une chaîne de caractères texte et qui renvoie la liste des positions demotif dans texte. Si motif n’apparaît pas, la fonction renvoie une liste vide.Exemples:>>> recherche_motif("ab", "")[]>>> recherche_motif("ab", "cdcdcdcd")[]>>> recherche_motif("ab", "abracadabra")[0, 7]>>> recherche_motif("ab", "abracadabraab")[0, 7, 11]2 / 3EXERCICE 2 (10 points)Dans cet exercice, on considère un graphe non orienté représenté sous forme de listesd’adjacence. On suppose que les sommets sont numérotés de 0 à n-1.Ainsi, le graphe suivant:sera représenté par la liste d’adjacence suivante:adj = [[1, 2], [0, 3], [0], [1], [5], [4]]On souhaite déterminer les sommets accessibles depuis un sommet donné dans le graphe.Pour cela, on va procéder à un parcours en profondeur du graphe.Compléter la fonction suivante.def parcours(adj, x, acc):'''Réalise un parcours en profondeur récursifdu graphe donné par les listes d'adjacence adjdepuis le sommet x en accumulant les sommetsrencontrés dans acc'''if x ...:acc.append(x)for y in ...:parcours(adj, ...)def accessibles(adj, x):'''Renvoie la liste des sommets accessibles dans legraphe donné par les listes d'adjacence adj depuisle sommet x.'''acc = []parcours(adj, ...)return accExemples :>>> accessibles([[1, 2], [0], [0, 3], [1], [5], [4]], 0)[0, 1, 2, 3]>>> accessibles([[1, 2], [0], [0, 3], [1], [5], [4]], 4)[4, 5]3 / 3
32.pdf → 36.pdf (0.999)
Texte de 32.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°32DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction occurrences(caractere, chaine) qui prend en paramètrescaractere, une chaîne de caractère de longueur 1, et chaine, une chaîne de carac-tères.Cette fonction renvoie le nombre d’occurrences de caractere dans chaine, c’est-à-direle nombre de fois où caractere apparaît dans chaine.Exemples :>>> occurrences('e', "sciences")2>>> occurrences('i',"mississippi")4>>> occurrences('a',"mississippi")02 / 3EXERCICE 2 (10 points)On s’intéresse à un algorithme récursif qui permet de rendre la monnaie à partir d’une listedonnée de valeurs de pièces et de billets.Le système monétaire est donné sous forme d’une liste valeurs = [100, 50, 20,10, 5, 2, 1]. On suppose que les pièces et les billets sont disponibles sans limitation.On cherche à donner la liste des valeurs à rendre pour une somme donnée en argument.L’algorithme utilisé est de type glouton.Compléter le code Python ci-dessous de la fonction rendu_glouton qui implémente cetalgorithme et renvoie la liste des pièces à rendre.valeurs = [100, 50, 20, 10, 5, 2, 1]def rendu_glouton(a_rendre, rang):if a_rendre == 0:return ...v = valeurs[rang]if v <= ...:return ... + rendu_glouton(a_rendre - v, rang)else:return rendu_glouton(a_rendre, ...)On devra obtenir :>>> rendu_glouton(67, 0)[50, 10, 5, 2]>>> rendu_glouton(291, 0)[100, 100, 50, 20, 20, 1]>>> rendu_glouton(291,1) # si on ne dispose pas de billets de 100[50, 50, 50, 50, 50, 20, 20, 1]3 / 3

Texte de 36.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°36DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction occurrences(caractere, chaine) qui prend en paramètrescaractere, une chaîne de caractère de longueur 1, et chaine, une chaîne de carac-tères.Cette fonction renvoie le nombre d’occurrences de caractere dans chaine, c’est-à-direle nombre de fois où caractere apparaît dans chaine.Exemples :>>> occurrences('e', "sciences")2>>> occurrences('i',"mississippi")4>>> occurrences('a',"mississippi")02 / 3EXERCICE 2 (10 points)On s’intéresse à un algorithme récursif qui permet de rendre la monnaie à partir d’une listedonnée de valeurs de pièces et de billets.Le système monétaire est donné sous forme d’une liste valeurs = [100, 50, 20,10, 5, 2, 1]. On suppose que les pièces et les billets sont disponibles sans limitation.On cherche à donner la liste des valeurs à rendre pour une somme donnée en argument.L’algorithme utilisé est de type glouton.Compléter le code Python ci-dessous de la fonction rendu_glouton qui implémente cetalgorithme et renvoie la liste des pièces à rendre.valeurs = [100, 50, 20, 10, 5, 2, 1]def rendu_glouton(a_rendre, rang):if a_rendre == 0:return ...v = valeurs[rang]if v <= ...:return ... + rendu_glouton(a_rendre - v, rang)else:return rendu_glouton(a_rendre, ...)On devra obtenir :>>> rendu_glouton(67, 0)[50, 10, 5, 2]>>> rendu_glouton(291, 0)[100, 100, 50, 20, 20, 1]>>> rendu_glouton(291,1) # si on ne dispose pas de billets de 100[50, 50, 50, 50, 50, 20, 20, 1]3 / 3
33.pdf → 23.pdf (0.996)
Texte de 33.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°33DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Dans cet exercice, on considère des arbres binaires de recherche qui sont :• soit l’arbre vide identifié par None ;• soit un nœud, contenant une clé et deux sous-arbres gauche et droit et représentépar un triplet (g, v, d) où g et d sont les sous-arbres gauche et droit et v la clé.Ainsi, l’arbre binaire de recherche abr1 ci-dessus est créé par le code python ci-dessousn0 = (None, 0, None)n3 = (None, 3, None)n2 = (None, 2, n3)abr1 = (n0, 1, n2)Écrire une fonction récursive insertion_abr(a, cle) qui prend en paramètres uneclé cle et un arbre binaire de recherche a , et qui renvoie un arbre binaire de recherchedans lequel cle a été insérée.Dans le cas où cle est déjà présente dans a, la fonction renvoie un arbre identique à a.Résultats à obtenir :>>> insertion_abr(abr1, 4)((None,0,None),1,(None,2,(None,3,(None,4,None))))>>> insertion_abr(abr1, -5)(((None,-5,None),0,None),1,(None,2,(None,3,None)))>>> insertion_abr(abr1, 2)((None,0,None),1,(None,2,(None,3,None)))2 / 3EXERCICE 2 (10 points)On dispose d’un ensemble d’objets dont on connaît, pour chacun, la masse. On souhaiteranger l’ensemble de ces objets dans des boites identiques de telle manière que la sommedes masses des objets contenus dans une boîte ne dépasse pas la capacité c de la boîte. Onsouhaite utiliser le moins de boîtes possibles pour ranger cet ensemble d’objets.Pour résoudre ce problème, on utilisera un algorithme glouton consistant à placer chacundes objets dans la première boîte où cela est possible.Par exemple, pour ranger dans des boîtes de capacité c = 5 un ensemble de trois objetsdont les masses sont représentées en Python par la liste [1, 5, 2], on procède de lafaçon suivante :• Le premier objet, de masse 1, va dans une première boite.• Le deuxième objet, de masse 5, ne peut pas aller dans la même boite que le premierobjet car cela dépasserait la capacité de la boite. On place donc cet objet dans unedeuxième boîte.• Le troisième objet, de masse 2, va dans la première boîte.On a donc utilisé deux boîtes de capacité c = 5 pour ranger les 3 objets.Compléter la fonction Python empaqueter(liste_masses, c) suivante pour qu’ellerenvoie le nombre de boîtes de capacité c nécessaires pour empaqueter un ensembled’objets dont les masses sont contenues dans la liste liste_masses. On supposera quetoutes les masses sont inférieures ou égales à c.def empaqueter(liste_masses, c):"""Renvoie le nombre minimal de boîtes nécessaires pourempaqueter les objets de la liste liste_masses, sachantque chaque boîte peut contenir au maximum c kilogrammes"""n = len(liste_masses)nb_boites = 0boites = [ 0 for _ in range(n) ]for masse in ...:i = 0while i < nb_boites and boites[i] + ... > c:i = i + 1if i == nb_boites:...boites[i] = ...return ...Exemples :>>> empaqueter([1, 2, 3, 4, 5], 10)2>>> empaqueter([1, 2, 3, 4, 5], 5)4>>> empaqueter([7, 6, 3, 4, 8, 5, 9, 2], 11)53 / 3

Texte de 23.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°23DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Dans cet exercice, on considère des arbres binaires de recherche qui sont :• soit l’arbre vide identifié par None ;• soit un nœud, contenant une clé et deux sous-arbres gauche et droit et représentépar un triplet (g, v, d) où g et d sont les sous-arbres gauche et droit et v la clé.Ainsi, l’arbre binaire de recherche abr1 ci-dessus est créé par le code python ci-dessousn0 = (None, 0, None)n3 = (None, 3, None)n2 = (None, 2, n3)abr1 = (n0, 1, n2)Écrire une fonction récursive insertion_abr(a, cle) qui prend en paramètres uneclé cle et un arbre binaire de recherche a , et qui renvoie un arbre binaire de recherchedans lequel cle a été insérée.Dans le cas où cle est déjà présente dans a, la fonction renvoie l’arbre a inchangé.Résultats à obtenir :>>> insertion_abr(abr1, 4)((None,0,None),1,(None,2,(None,3,(None,4,None))))>>> insertion_abr(abr1, -5)(((None,-5,None),0,None),1,(None,2,(None,3,None)))>>> insertion_abr(abr1, 2)((None,0,None),1,(None,2,(None,3,None)))2 / 3EXERCICE 2 (10 points)On dispose d’un ensemble d’objets dont on connaît, pour chacun, la masse. On souhaiteranger l’ensemble de ces objets dans des boites identiques de telle manière que la sommedes masses des objets contenus dans une boîte ne dépasse pas la capacité c de la boîte. Onsouhaite utiliser le moins de boîtes possibles pour ranger cet ensemble d’objets.Pour résoudre ce problème, on utilisera un algorithme glouton consistant à placer chacundes objets dans la première boîte où cela est possible.Par exemple, pour ranger dans des boîtes de capacité c = 5 un ensemble de trois objetsdont les masses sont représentées en Python par la liste [1, 5, 2], on procède de lafaçon suivante :• Le premier objet, de masse 1, va dans une première boite.• Le deuxième objet, de masse 5, ne peut pas aller dans la même boite que le premierobjet car cela dépasserait la capacité de la boite. On place donc cet objet dans unedeuxième boîte.• Le troisième objet, de masse 2, va dans la première boîte.On a donc utilisé deux boîtes de capacité c = 5 pour ranger les 3 objets.Compléter la fonction Python empaqueter(liste_masses, c) suivante pour qu’ellerenvoie le nombre de boîtes de capacité c nécessaires pour empaqueter un ensembled’objets dont les masses sont contenues dans la liste liste_masses. On supposera quetoutes les masses sont inférieures ou égales à c.def empaqueter(liste_masses, c):"""Renvoie le nombre minimal de boîtes nécessaires pourempaqueter les objets de la liste liste_masses, sachantque chaque boîte peut contenir au maximum c kilogrammes"""n = len(liste_masses)nb_boites = 0boites = [ 0 for _ in range(n) ]for masse in ...:i = 0while i < nb_boites and boites[i] + ... > c:i = i + 1if i == nb_boites:...boites[i] = ...return ...Exemples :>>> empaqueter([1, 2, 3, 4, 5], 10)2>>> empaqueter([1, 2, 3, 4, 5], 5)4>>> empaqueter([7, 6, 3, 4, 8, 5, 9, 2], 11)53 / 3
34.pdf → 12.pdf (0.998)
Texte de 34.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°34DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction tri_selection qui prend en paramètre un tableau tab de nombresentiers (type list) et qui le modifie afin qu’il soit trié par ordre croissant.On utilisera l’algorithme suivant :• on recherche le plus petit élément du tableau, en le parcourant du rang 0 au dernierrang, et on l’échange avec l’élément d’indice 0 ;• on recherche ensuite le plus petit élément du tableau restreint du rang 1 au dernierrang, et on l’échange avec l’élément d’indice 1 ;• on continue de cette façon jusqu’à ce que le tableau soit entièrement triée.Exemple :>>> tab = [1, 52, 6, -9, 12]>>> tri_selection(tab)>>> tab[-9, 1, 6, 12, 52]2 / 3EXERCICE 2 (10 points)Le jeu du « plus ou moins » consiste à deviner un nombre entier choisi entre 1 et 99.Une élève de NSI décide de le coder en langage Python de la manière suivante :• le programme génère un nombre entier aléatoire compris entre 1 et 99 ;• si la proposition de l’utilisatrice est plus petite que le nombre cherché, l’utilisatrice enest avertie. Elle peut alors en tester un autre ;• si la proposition de l’utilisatrice est plus grande que le nombre cherché, l’utilisatriceen est avertie. Elle peut alors en tester un autre ;• si l’utilisatrice trouve le bon nombre en 10 essais ou moins, elle gagne ;• si l’utilisatrice a fait plus de 10 essais sans trouver le bon nombre, elle perd.La fonction randint est utilisée.Si a et b sont des entiers tels que a <= b, randint(a,b) renvoie un nombre entiercompris entre a et b inclus.Compléter le code ci-dessous et le tester :from random import randintdef plus_ou_moins():nb_mystere = randint(1, ...)nb_test = int(input("Proposez un nombre entre 1 et 99 : "))compteur = ...while nb_mystere != ... and compteur < ...:compteur = compteur + 1if nb_mystere ... nb_test:nb_test = int(input("Trop petit ! Testez encore : "))else:nb_test = int(input("Trop grand ! Testez encore : "))if nb_mystere == nb_test:print ("Bravo ! Le nombre était ", ...)print("Nombre d'essais: ", ...)else:print ("Perdu ! Le nombre était ", ...)3 / 3

Texte de 12.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°12DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction tri_selection qui prend en paramètre un tableau tab de nombresentiers (type list) et qui le modifie afin qu’il soit trié par ordre croissant.On utilisera l’algorithme suivant :• on recherche le plus petit élément du tableau, en la parcourant du rang 0 au dernierrang, et on l’échange avec l’élément d’indice 0 ;• on recherche ensuite le plus petit élément du tableau restreint du rang 1 au dernierrang, et on l’échange avec l’élément d’indice 1 ;• on continue de cette façon jusqu’à ce que le tableau soit entièrement triée.Exemple :>>> tab = [1, 52, 6, -9, 12]>>> tri_selection(tab)>>> tab[-9, 1, 6, 12, 52]2 / 3EXERCICE 2 (10 points)Le jeu du « plus ou moins » consiste à deviner un nombre entier choisi entre 1 et 99.Une élève de NSI décide de le coder en langage Python de la manière suivante :• le programme génère un nombre entier aléatoire compris entre 1 et 99 ;• si la proposition de l’utilisatrice est plus petite que le nombre cherché, l’utilisatrice enest avertie. Elle peut alors en tester un autre ;• si la proposition de l’utilisatrice est plus grande que le nombre cherché, l’utilisatriceen est avertie. Elle peut alors en tester un autre ;• si l’utilisatrice trouve le bon nombre en 10 essais ou moins, elle gagne ;• si l’utilisatrice a fait plus de 10 essais sans trouver le bon nombre, elle perd.La fonction randint est utilisée.Si a et b sont des entiers tels que a <= b, randint(a,b) renvoie un nombre entiercompris entre a et b inclus.Compléter le code ci-dessous et le tester :from random import randintdef plus_ou_moins():nb_mystere = randint(1, ...)nb_test = int(input("Proposez un nombre entre 1 et 99 : "))compteur = ...while nb_mystere != ... and compteur < ...:compteur = compteur + 1if nb_mystere ... nb_test:nb_test = int(input("Trop petit ! Testez encore : "))else:nb_test = int(input("Trop grand ! Testez encore : "))if nb_mystere == nb_test:print ("Bravo ! Le nombre était ", ...)print("Nombre d'essais: ", ...)else:print ("Perdu ! Le nombre était ", ...)3 / 3
35.pdf → 47.pdf (0.999)
Texte de 35.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°35DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)Sur le réseau social TipTop, on s’intéresse au nombre de « like » des abonnés. Les donnéessont stockées dans des dictionnaires où les clés sont les pseudos et les valeurs correspon-dantes sont les nombres de « like » comme ci-dessous :{ 'Bob': 102, 'Ada': 201, 'Alice': 103, 'Tim': 50 }Écrire une fonction max_dico qui :• prend en paramètre un dictionnaire dico non vide dont les clés sont des chaînes decaractères et les valeurs associées sont des entiers ;• et qui renvoie un tuple dont :– la première valeur est la clé du dictionnaire associée à la valeur maximale ;– la seconde valeur est la première valeur maximale présente dans le dictionnaire.Exemples :>>> max_dico({ 'Bob': 102, 'Ada': 201, 'Alice': 103, 'Tim': 50 })('Ada', 201)>>> max_dico({ 'Alan': 222, 'Ada': 201, 'Eve': 222, 'Tim': 50 })('Alan', 222)2 / 4EXERCICE 2 (10 points)Nous avons l’habitude de noter les expressions arithmétiques avec des parenthèses commepar exemple : (2 + 3) × 5.Il existe une autre notation utilisée par certaines calculatrices, appelée notation postfixe,qui n’utilise pas de parenthèses. L’expression arithmétique précédente est alors obtenueen saisissant successivement 2, puis 3, puis l’opérateur +, puis 5, et enfin l’opérateur ×. Onmodélise cette saisie par le tableau [2, 3, '+', 5, '*'].Autre exemple, la notation postfixe de 3 × 2 + 5 est modélisée par le tableau :[3, 2, '*', 5, '+'].D’une manière plus générale, la valeur associée à une expression arithmétique en notationpostfixe est déterminée à l’aide d’une pile en parcourant l’expression arithmétique degauche à droite de la façon suivante :• si l’élément parcouru est un nombre, on le place au sommet de la pile ;• si l’élément parcouru est un opérateur, on récupère les deux éléments situés au som-met de la pile et on leur applique l’opérateur. On place alors le résultat au sommet dela pile.• à la fin du parcours, il reste alors un seul élément dans la pile qui est le résultat del’expression arithmétique.Dans le cadre de cet exercice, on se limitera aux opérations × et +.Pour cet exercice, on dispose d’une classe Pile qui implémente les méthodes de base surla structure de pile.Compléter le script de la fonction eval_expression qui reçoit en paramètre une listepython représentant la notation postfixe d’une expression arithmétique et qui renvoie savaleur associée.class Pile:"""Classe définissant une structure de pile."""def __init__(self):self.contenu = []def est_vide(self):"""Renvoie un booléen indiquant si la pile est vide."""return self.contenu == []def empiler(self, v):"""Place l'élément v au sommet de la pile"""self.contenu.append(v)def depiler(self):"""Retire et renvoie l'élément placé au sommet de la pile,si la pile n’est pas vide. Produit une erreur sinon."""assert not self.est_vide()return self.contenu.pop()3 / 4def eval_expression(tab):p = Pile()for ... in tab:if element != '+' ... element != '*':p.empiler(...)else:if element == ...:resultat = ... + ...else:resultat = ...p.empiler(...)return ...Exemples :>>> eval_expression([2, 3, '+', 5, '*'])25>>> eval_expression([1, 2, '+', 3, '*'])9>>> eval_expression([1, 2, 3, '+', '*'])54 / 4

Texte de 47.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°47DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)Sur le réseau social TipTop, on s’intéresse au nombre de « like » des abonnés. Les donnéessont stockées dans des dictionnaires où les clés sont les pseudos et les valeurs correspon-dantes sont les nombres de « like » comme ci-dessous :{ 'Bob': 102, 'Ada': 201, 'Alice': 103, 'Tim': 50 }Écrire une fonction max_dico qui :• prend en paramètre un dictionnaire dico non vide dont les clés sont des chaînes decaractères et les valeurs associées sont des entiers ;• et qui renvoie un tuple dont :– la première valeur est la clé du dictionnaire associée à la valeur maximale ;– la seconde valeur est la première valeur maximale présente dans le dictionnaire.Exemples :>>> max_dico({ 'Bob': 102, 'Ada': 201, 'Alice': 103, 'Tim': 50 })('Ada', 201)>>> max_dico({ 'Alan': 222, 'Ada': 201, 'Eve': 222, 'Tim': 50 })('Alan', 222)2 / 4EXERCICE 2 (10 points)Nous avons l’habitude de noter les expressions arithmétiques avec des parenthèses commepar exemple : (2 + 3) × 5.Il existe une autre notation utilisée par certaines calculatrices, appelée notation postfixe,qui n’utilise pas de parenthèses. L’expression arithmétique précédente est alors obtenueen saisissant successivement 2, puis 3, puis l’opérateur +, puis 5, et enfin l’opérateur ×. Onmodélise cette saisie par le tableau [2, 3, '+', 5, '*'].Autre exemple, la notation postfixe de 3 × 2 + 5 est modélisée par le tableau :[3, 2, '*', 5, '+'].D’une manière plus générale, la valeur associée à une expression arithmétique en notationpostfixe est déterminée à l’aide d’une pile en parcourant l’expression arithmétique degauche à droite de la façon suivante :• si l’élément parcouru est un nombre, on le place au sommet de la pile ;• si l’élément parcouru est un opérateur, on récupère les deux éléments situés au som-met de la pile et on leur applique l’opérateur. On place alors le résultat au sommet dela pile.• à la fin du parcours, il reste alors un seul élément dans la pile qui est le résultat del’expression arithmétique.Dans le cadre de cet exercice, on se limitera aux opérations × et +.Pour cet exercice, on dispose d’une classe Pile qui implémente les méthodes de base surla structure de pile.Compléter le script de la fonction eval_expression qui reçoit en paramètre une listepython représentant la notation postfixe d’une expression arithmétique et qui renvoie savaleur associée.class Pile:"""Classe définissant une structure de pile."""def __init__(self):self.contenu = []def est_vide(self):"""Renvoie un booléen indiquant si la pile est vide."""return self.contenu == []def empiler(self, v):"""Place l'élément v au sommet de la pile"""self.contenu.append(v)def depiler(self):"""Retire et renvoie l'élément placé au sommet de la pile,si la pile n’est pas vide. Produit une erreur sinon."""assert not self.est_vide()return self.contenu.pop()3 / 4def eval_expression(tab):p = Pile()for ... in tab:if element != '+' ... element != '*':p.empiler(...)else:if element == ...:resultat = ... + ...else:resultat = ...p.empiler(...)return ...Exemples :>>> eval_expression([2, 3, '+', 5, '*'])25>>> eval_expression([1, 2, '+', 3, '*'])9>>> eval_expression([1, 2, 3, '+', '*'])54 / 4
36.pdf → 11.pdf (0.999)
Texte de 36.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°36DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Dans cet exercice, on considère des phrases composées de mots.• On appelle mot une chaîne de caractères composée avec des caractères choisis parmiles 26 lettres minuscules ou majuscules de l’alphabet.• On appelle phrase une chaîne de caractères :– composée avec un ou plusieurs mots séparés entre eux par un seul caractèreespace ' ',– se finissant :* soit par un point '.' qui est alors collé au dernier mot,* soit par un point d’exclamation '!' ou d’interrogation '?' qui est alorsséparé du dernier mot par un seul caractère espace ' '.Voici deux exemples de phrases :'Cet exercice est simple.''Le point d exclamation est separe !'Après avoir remarqué le lien entre le nombre de mots et le nombre de caractères espacedans une phrase, programmer une fonction nombre_de_mots qui prend en paramètreune phrase et renvoie le nombre de mots présents dans cette phrase.>>> nombre_de_mots('Cet exercice est simple.')4>>> nombre_de_mots('Le point d exclamation est séparé !')6>>> nombre_de_mots('Combien de mots y a t il dans cette phrase ?')10>>> nombre_de_mots('Fin.')12 / 3EXERCICE 2 (10 points)Un arbre binaire de recherche est soit vide, représenté en Python par la valeur None, soitun nœud, contenant une étiquette et deux sous-arbres gauche et droit et représenté parune instance de la classe Noeud donnée ci-dessous.On considère ici que les étiquettes des nœuds sont des entiers et que les arbres binaires derecherche considérés ne contiennent pas de doublons.class Noeud:def __init__(self, etiquette):'''Méthode constructeur pour la classe Noeud.Crée une feuille d'étiquette donnée.'''self.etiquette = etiquetteself.gauche = Noneself.droit = Nonedef inserer(self, cle):'''Insère la clé dans l'arbre binaire de rechercheen préservant sa structure.'''if cle < self.etiquette:if self.gauche != None:...else:self.gauche = ...else:......else:... = Noeud(cle)Compléter la méthode récursive inserer afin qu’elle permette d’insérer une clé dansl’arbre binaire de recherche non vide sur lequel on l’appelle.Voici un exemple d’utilisation :>>> arbre = Noeud(7)>>> for cle in (3, 9, 1, 6):arbre.inserer(cle)>>> arbre.gauche.etiquette3>>> arbre.droit.etiquette9>>> arbre.gauche.gauche.etiquette1>>> arbre.gauche.droit.etiquette63 / 3

Texte de 11.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°11DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Dans cet exercice, on considère des phrases composées de mots.• On appelle mot une chaîne de caractères composée avec des caractères choisis parmiles 26 lettres minuscules ou majuscules de l’alphabet.• On appelle phrase une chaîne de caractères :– composée avec un ou plusieurs mots séparés entre eux par un seul caractèreespace ' ',– se finissant :* soit par un point '.' qui est alors collé au dernier mot,* soit par un point d’exclamation '!' ou d’interrogation '?' qui est alorsséparé du dernier mot par un seul caractère espace ' '.Voici deux exemples de phrases :'Cet exercice est simple.''Le point d exclamation est separe !'Après avoir remarqué le lien entre le nombre de mots et le nombre de caractères espacedans une phrase, programmer une fonction nombre_de_mots qui prend en paramètreune phrase et renvoie le nombre de mots présents dans cette phrase.>>> nombre_de_mots('Cet exercice est simple.')4>>> nombre_de_mots('Le point d exclamation est séparé !')6>>> nombre_de_mots('Combien de mots y a t il dans cette phrase ?')10>>> nombre_de_mots('Fin.')12 / 3EXERCICE 2 (10 points)Un arbre binaire de recherche est soit vide, représenté en Python par la valeur None, soitun nœud, contenant une étiquette et deux sous-arbres gauche et droit et représenté parune instance de la classe Noeud donnée ci-dessous.On considère ici que les étiquettes des nœuds sont des entiers et que les arbres binaires derecherche considérés ne contiennent pas de doublons.class Noeud:def __init__(self, etiquette):'''Méthode constructeur pour la classe Noeud.Crée une feuille d'étiquette donnée.'''self.etiquette = etiquetteself.gauche = Noneself.droit = Nonedef inserer(self, cle):'''Insère la clé dans l'arbre binaire de rechercheen préservant sa structure.'''if cle < self.etiquette:if self.gauche != None:...else:self.gauche = ...else:......else:... = Noeud(cle)Compléter la méthode récursive inserer afin qu’elle permette d’insérer une clé dansl’arbre binaire de recherche non vide sur lequel on l’appelle.Voici un exemple d’utilisation :>>> arbre = Noeud(7)>>> for cle in (3, 9, 1, 6):arbre.inserer(cle)>>> arbre.gauche.etiquette3>>> arbre.droit.etiquette9>>> arbre.gauche.gauche.etiquette1>>> arbre.gauche.droit.etiquette63 / 3
37.pdf → 07.pdf (0.999)
Texte de 37.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°37DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)On considère dans cet exercice une représentation binaire d’un entier non signé en tant quetableau de booléens.Sitab = [True, False, True, False, False, True, True]est un tel tableau, alors l’entier qu’il représente est 26 + 24 + 21 + 20 = 83. Cette représen-tation consistant à placer en premier le booléen indiquant la puissance la plus élevée de 2est dite big-endian ou grand-boutiste.Écrire une fonction gb_vers_entier qui prend en paramètre un tel tableau et renvoiel’entier qu’il représente.Exemple :>>> gb_vers_entier([])0>>> gb_vers_entier([True])1>>> gb_vers_entier([True, False, True,False, False, True, True])83>>> gb_vers_entier([True, False, False, False,False, False, True, False])1302 / 3EXERCICE 2 (10 points)La fonction tri_insertion suivante prend en argument un tableau tab (type list) ettrie ce tableau en utilisant la méthode du tri par insertion. Compléter cette fonction pourqu’elle réponde à la spécification demandée.On rappelle le principe du tri par insertion : on considère les éléments à trier un par un, lepremier élément constituant, à lui tout seul, un tableau trié de longueur 1. On range ensuitele second élément pour constituer un tableau trié de longueur 2, puis on range le troisièmeélément pour avoir un tableau trié de longueur 3 et ainsi de suite…A chaque étape, le premier élément du sous-tableau non trié est placé dans le sous-tableaudes éléments déjà triés de sorte que ce sous-tableau demeure trié.Le principe du tri par insertion est donc d’insérer à la n-ième itération, le n-ième élément àla bonne place.def tri_insertion(tab):'''Trie le tableau tab par ordre croissanten appliquant l'algorithme de tri par insertion'''n = len(tab)for i in range(1, n):valeur_insertion = ...# la variable j sert à déterminer# où placer la valeur à rangerj = ...# tant qu'on n'a pas trouvé la place de l'élément à# insérer on décale les valeurs du tableau vers la droitewhile j > ... and valeur_insertion < tab[...]:tab[j] = tab[j-1]j = ...tab[j] = ...Exemple :>>> tab = [98, 12, 104, 23, 131, 9]>>> tri_insertion(tab)>>> tab[9, 12, 23, 98, 104, 131]3 / 3

Texte de 07.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°07DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)On considère dans cet exercice une représentation binaire d’un entier non signé en tant quetableau de booléens.Sitab = [True, False, True, False, False, True, True]est un tel tableau, alors l’entier qu’il représente est 26 + 24 + 21 + 20 = 83. Cette représen-tation consistant à placer en premier le booléen indiquant la puissance la plus élevée de 2est dite big-endian ou grand-boutiste.Écrire une fonction gb_vers_entier qui prend en paramètre un tel tableau et renvoiel’entier qu’il représente.Exemple :>>> gb_vers_entier([])0>>> gb_vers_entier([True])1>>> gb_vers_entier([True, False, True,False, False, True, True])83>>> gb_vers_entier([True, False, False, False,False, False, True, False])1302 / 3EXERCICE 2 (10 points)La fonction tri_insertion suivante prend en argument un tableau tab (type list) ettrie ce tableau en utilisant la méthode du tri par insertion. Compléter cette fonction pourqu’elle réponde à la spécification demandée.On rappelle le principe du tri par insertion : on considère les éléments à trier un par un, lepremier élément constituant, à lui tout seul, un tableau trié de longueur 1. On range ensuitele second élément pour constituer un tableau trié de longueur 2, puis on range le troisièmeélément pour avoir un tableau trié de longueur 3 et ainsi de suite…A chaque étape, le premier élément du sous-tableau non trié est placé dans le sous-tableaudes éléments déjà triés de sorte que ce sous-tableau demeure trié.Le principe du tri par insertion est donc d’insérer à la n-ième itération, le n-ième élément àla bonne place.def tri_insertion(tab):'''Trie le tableau tab par ordre croissanten appliquant l'algorithme de tri par insertion'''n = len(tab)for i in range(1, n):valeur_insertion = ...# la variable j sert à déterminer# où placer la valeur à rangerj = ...# tant qu'on n'a pas trouvé la place de l'élément à# insérer on décale les valeurs du tableau vers la droitewhile j > ... and valeur_insertion < tab[...]:tab[j] = tab[j-1]j = ...tab[j] = ...Exemple :>>> tab = [98, 12, 104, 23, 131, 9]>>> tri_insertion(tab)>>> tab[9, 12, 23, 98, 104, 131]3 / 3
38.pdf → 15.pdf (0.998)
Texte de 38.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°38DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction moyenne qui prend en paramètre un tableau non vide de nombresflottants et qui renvoie la moyenne des valeurs du tableau. Les tableaux seront représentéssous forme de liste Python.Exemples :>>> moyenne([1.0])1.0>>> moyenne([1.0, 2.0, 4.0])2.33333333333333352 / 3EXERCICE 2 (10 points)On considère la fonction binaire à la page suivante. Cette fonction prend en paramètreun entier positif a en écriture décimale et renvoie son écriture binaire sous la forme d’unechaine de caractères.L’algorithme utilise la méthode des divisions euclidiennes successives comme l’illustrel’exemple ci-après.Compléter le code de la fonction binaire.def binaire(a):'''convertit un nombre entier a en sa representationbinaire sous forme de chaine de caractères.'''if a == 0:return ...bin_a = ...while ... :bin_a = ... + bin_aa = ...return bin_aExemples :>>> binaire(83)'1010011'>>> binaire(6)'110'>>> binaire(127)'1111111'>>> binaire(0)'0'3 / 3

Texte de 15.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°15DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction moyenne qui prend en paramètre un tableau non vide de nombresflottants et qui renvoie la moyenne des valeurs du tableau. Les tableaux seront représentéssous forme de liste Python.Exemples :>>> moyenne([1.0])1.0>>> moyenne([1.0, 2.0, 4.0])2.33333333333333352 / 3EXERCICE 2 (10 points)On considère la fonction binaire à la page suivante. Cette fonction prend en paramètreun entier positif a en écriture décimale et renvoie son écriture binaire sous la forme d’unechaine de caractères.L’algorithme utilise la méthode des divisions euclidiennes successives comme l’illustrel’exemple ci-après.Compléter le code de la fonction binaire.def binaire(a):'''convertit un nombre entier a en sa representationbinaire sous forme de chaine de caractères.'''if a == 0:return ...bin_a = ...while ... :bin_a = ... + bin_aa = ...return bin_aExemples :>>> binaire(83)'1010011'>>> binaire(6)'110'>>> binaire(127)'1111111'>>> binaire(0)'0'3 / 3
39.pdf → 37.pdf (0.999)
Texte de 39.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°39DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Programmer la fonction moyenne prenant en paramètre un tableau d’entiers tab (de typelist) qui renvoie la moyenne de ses éléments si le tableau est non vide. Proposer unefaçon de traiter le cas où le tableau passé en paramètre est vide.Dans cet exercice, on s’interdira d’utiliser la fonction Python sum.Exemples :>>> moyenne([5,3,8])5.333333333333333>>> moyenne([1,2,3,4,5,6,7,8,9,10])5.5>>> moyenne([])# Comportement différent suivant le traitement proposé.2 / 3EXERCICE 2 (10 points)On considère un tableau d’entiers tab (de type list) dont les éléments sont des 0 ou des1). On se propose de trier ce tableau selon l’algorithme suivant : à chaque étape du tri, letableau est constitué de trois zones consécutives, la première ne contenant que des 0, laseconde n’étant pas triée et la dernière ne contenant que des 1. Au départ, les zones necontenant que des 0 et des 1 sont vides.[0, ..., 0, <zone non triée>, 1, ..., 1]Tant que la zone non triée n’est pas réduite à un seul élément, on regarde son premierélément :• si cet élément vaut 0, on considère qu’il appartient désormais à la zone ne contenantque des 0 ;• si cet élément vaut 1, il est échangé avec le dernier élément de la zone non triée et onconsidère alors qu’il appartient à la zone ne contenant que des 1.Dans tous les cas, la longueur de la zone non triée diminue de 1.Compléter la fonction tri suivante :def tri(tab):'''tab est un tableau d'entiers contenant des 0 et des 1.La fonction trie ce tableau en plaçant tous les 0 à gauche'''i = ... # premier indice de la zone non triéej = ... # dernier indice de la zone non triéewhile i < j:if tab[i] == 0:i = ...else:valeur = ...tab[j] = ......j = ...Exemple :>>> tab = [0,1,0,1,0,1,0,1,0]>>> tri(tab)>>> tab[0, 0, 0, 0, 0, 1, 1, 1, 1]3 / 3

Texte de 37.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°37DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Programmer la fonction moyenne prenant en paramètre un tableau d’entiers tab (de typelist) qui renvoie la moyenne de ses éléments si le tableau est non vide. Proposer unefaçon de traiter le cas où le tableau passé en paramètre est vide.Dans cet exercice, on s’interdira d’utiliser la fonction Python sum.Exemples :>>> moyenne([5,3,8])5.333333333333333>>> moyenne([1,2,3,4,5,6,7,8,9,10])5.5>>> moyenne([])# Comportement différent suivant le traitement proposé.2 / 3EXERCICE 2 (10 points)On considère un tableau d’entiers tab (de type list) dont les éléments sont des 0 ou des1). On se propose de trier ce tableau selon l’algorithme suivant : à chaque étape du tri, letableau est constitué de trois zones consécutives, la première ne contenant que des 0, laseconde n’étant pas triée et la dernière ne contenant que des 1. Au départ, les zones necontenant que des 0 et des 1 sont vides.[0, ..., 0, <zone non triée>, 1, ..., 1]Tant que la zone non triée n’est pas réduite à un seul élément, on regarde son premierélément :• si cet élément vaut 0, on considère qu’il appartient désormais à la zone ne contenantque des 0 ;• si cet élément vaut 1, il est échangé avec le dernier élément de la zone non triée et onconsidère alors qu’il appartient à la zone ne contenant que des 1.Dans tous les cas, la longueur de la zone non triée diminue de 1.Compléter la fonction tri suivante :def tri(tab):'''tab est un tableau d'entiers contenant des 0 et des 1.La fonction trie ce tableau en plaçant tous les 0 à gauche'''i = ... # premier indice de la zone non triéej = ... # dernier indice de la zone non triéewhile i < j:if tab[i] == 0:i = ...else:valeur = ...tab[j] = ......j = ...Exemple :>>> tab = [0,1,0,1,0,1,0,1,0]>>> tri(tab)>>> tab[0, 0, 0, 0, 0, 1, 1, 1, 1]3 / 3
40.pdf → 22.pdf (0.999)
Texte de 40.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°40DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)Écrire une fonction recherche_indices_classement qui prend en paramètres unentier elt et un tableau d’entiers tab représenté par une liste Python, et qui renvoie troislistes Python d’entiers:• la première liste contient les indices des valeurs du tableau tab strictement inférieuresà elt ;• la deuxième liste contient les indices des valeurs du tableau tab égales à elt ;• la troisième liste contient les indices des valeurs du tableau tab strictementsupérieures à elt.Exemples :>>> recherche_indices_classement(3, [1, 3, 4, 2, 4, 6, 3, 0])([0, 3, 7], [1, 6], [2, 4, 5])>>> recherche_indices_classement(3, [1, 4, 2, 4, 6, 0])([0, 2, 5], [], [1, 3, 4])>>>recherche_indices_classement(3, [1, 1, 1, 1])([0, 1, 2, 3], [], [])>>> recherche_indices_classement(3, [])([], [], [])2 / 4EXERCICE 2 (10 points)Une professeure de NSI décide de gérer les résultats de sa classe sous la forme d’un diction-naire :• les clefs sont les noms des élèves ;• les valeurs sont des dictionnaires dont les clefs sont les types d’épreuves sous formede chaîne de caractères et les valeurs sont les notes obtenues associées à leurs coeffi-cients dans une liste.Avec :resultats = {'Dupont': {'DS1': [15.5, 4],'DM1': [14.5, 1],'DS2': [13, 4],'PROJET1': [16, 3],'DS3': [14, 4]},'Durand': {'DS1': [6 , 4],'DS2': [8, 4],'PROJET1': [9, 3],'IE1': [7, 2],'DS3': [12, 4]}}L’élève dont le nom est Durand a ainsi obtenu au DS2 la note de 8 avec un coefficient 4.La professeure crée une fonction moyenne qui prend en paramètre le nom d’un de sesélèves et renvoie sa moyenne arrondie au dixième. Si l’élève n’a pas de notes, on considèreque sa moyenne est nulle. Si le nom donné n’est pas dans les résultats, la fonction renvoieNone.Compléter le code de la professeure ci-dessous :def moyenne(nom, resultats):'''Renvoie la moyenne de l'élève nom, selon le dictionnaireresultats. Si nom n'est pas dans le dictionnaire,la fonction renvoie None.'''if nom in ...:notes = resultats[nom]if ...: # pas de notesreturn 0total_points = ...total_coefficients = ...for ... in notes.values():note, coefficient = valeurstotal_points = total_points + ... * coefficient... = ... + coefficientreturn round( ... / total_coefficients, 1 )else:return None3 / 4Exemples :>>> moyenne("Dupont", resultats)14.5>>> moyenne("Durand", resultats)8.54 / 4

Texte de 22.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°22DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)Écrire une fonction recherche_indices_classement qui prend en paramètres unentier elt et un tableau d’entiers tab représenté par une liste Python, et qui renvoie troislistes Python d’entiers:• la première liste contient les indices des valeurs du tableau tab strictement inférieuresà elt ;• la deuxième liste contient les indices des valeurs du tableau tab égales à elt ;• la troisième liste contient les indices des valeurs du tableau tab strictementsupérieures à elt.Exemples :>>> recherche_indices_classement(3, [1, 3, 4, 2, 4, 6, 3, 0])([0, 3, 7], [1, 6], [2, 4, 5])>>> recherche_indices_classement(3, [1, 4, 2, 4, 6, 0])([0, 2, 5], [], [1, 3, 4])>>>recherche_indices_classement(3, [1, 1, 1, 1])([0, 1, 2, 3], [], [])>>> recherche_indices_classement(3, [])([], [], [])2 / 4EXERCICE 2 (10 points)Une professeure de NSI décide de gérer les résultats de sa classe sous la forme d’un diction-naire :• les clefs sont les noms des élèves ;• les valeurs sont des dictionnaires dont les clefs sont les types d’épreuves sous formede chaîne de caractères et les valeurs sont les notes obtenues associées à leurs coeffi-cients dans une liste.Avec :resultats = {'Dupont': {'DS1': [15.5, 4],'DM1': [14.5, 1],'DS2': [13, 4],'PROJET1': [16, 3],'DS3': [14, 4]},'Durand': {'DS1': [6 , 4],'DS2': [8, 4],'PROJET1': [9, 3],'IE1': [7, 2],'DS3': [12, 4]}}L’élève dont le nom est Durand a ainsi obtenu au DS2 la note de 8 avec un coefficient 4.La professeure crée une fonction moyenne qui prend en paramètre le nom d’un de sesélèves et renvoie sa moyenne arrondie au dixième. Si l’élève n’a pas de notes, on considèreque sa moyenne est nulle. Si le nom donné n’est pas dans les résultats, la fonction renvoieNone.Compléter le code de la professeure ci-dessous :def moyenne(nom, resultats):'''Renvoie la moyenne de l'élève nom, selon le dictionnaireresultats. Si nom n'est pas dans le dictionnaire,la fonction renvoie None.'''if nom in ...:notes = resultats[nom]if ...: # pas de notesreturn 0total_points = ...total_coefficients = ...for ... in notes.values():note, coefficient = valeurstotal_points = total_points + ... * coefficient... = ... + coefficientreturn round( ... / total_coefficients, 1 )else:return None3 / 4Exemples :>>> moyenne("Dupont", resultats)14.5>>> moyenne("Durand", resultats)8.54 / 4
41.pdf → 32.pdf (0.995)
Texte de 41.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°41DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)L’opérateur « ou exclusif » entre deux bits renvoie 0 si les deux bits sont égaux et 1 s’ils sontdifférents. Il est symbolisé par le symbole ⊕. Ainsi :• 0 ⊕ 0 = 0• 0 ⊕ 1 = 1• 1 ⊕ 0 = 1• 1 ⊕ 1 = 0Écrire une fonction ou_exclusif qui prend en paramètres deux tableaux de 0 ou de 1 demême longueur et qui renvoie un tableau où l’élément situé à position i est le résultat, parl’opérateur « ou exclusif », des éléments à la position i des tableaux passés en paramètres.Exemples :>>> ou_exclusif([1, 0, 1, 0, 1, 1, 0, 1], [0, 1, 1, 1, 0, 1, 0, 0])[1, 1, 0, 1, 1, 0, 0, 1]>>> ou_exclusif([1, 1, 0, 1], [0, 0, 1, 1])[1, 1, 1, 0]2 / 4EXERCICE 2 (10 points)Dans cet exercice, on appelle carré d’ordre 𝑛 un tableau de 𝑛 lignes et 𝑛 colonnes dontchaque case contient un entier naturel.Exemples :Un carré est dit semimagique lorsque les sommes des éléments situés sur chaque ligne,chaque colonne sont égales.• Ainsi c2 et c3 sont semimagiques car la somme de chaque ligne et chaque colonneest égale à 8 pour c2 et 12 pour c3.• Le carre c3bis n’est pas semimagique car la somme de la première ligne est égale à 15alors que celle de la deuxième ligne est égale à 10.La classe Carre ci-après contient des méthodes qui permettent de manipuler des carrés.• La méthode constructeur crée un carré sous forme d’un tableau à deux dimensions àpartir d’une liste d’entiers, et d’un ordre.• La méthode affiche permet d’afficher le carré créé.Exemple :>>> lst_c3 = [3, 4, 5, 4, 4, 4, 5, 4, 3]>>> c3 = Carre(lst_c3, 3)>>> c3.affiche()[3, 4, 5][4, 4, 4][5, 4, 3]Compléter la méthode est_semimagique qui renvoie True si le carré est semimagique,False sinon.class Carre:def __init__(self, liste, n):self.ordre = nself.tableau = [[liste[i + j * n] for i in range(n)]for j in range(n)]def affiche(self):'''Affiche un carré'''for i in range(self.ordre):print(self.tableau[i])3 / 4def somme_ligne(self, i):'''Calcule la somme des valeurs de la ligne i'''somme = 0for j in range(self.ordre):somme = somme + self.tableau[i][j]return sommedef somme_col(self, j):'''Calcule la somme des valeurs de la colonne j'''somme = 0for i in range(self.ordre):somme = somme + self.tableau[i][j]return sommedef est_semimagique(self):s = self.somme_ligne(0)#test de la somme de chaque lignefor i in range(...):if ... != s:return ...#test de la somme de chaque colonnefor j in range(...):if ... != s:return ...return ...Tester la méthode est_semimagique sur les carrés c2, c3 et c3bis.4 / 4

Texte de 32.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°32DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)L’opérateur « ou exclusif » entre deux bits renvoie 0 si les deux bits sont égaux et 1 s’ils sontdifférents. Il est symbolisé par le symbole ⊕. Ainsi :• 0 ⊕ 0 = 0• 0 ⊕ 1 = 1• 1 ⊕ 0 = 1• 1 ⊕ 1 = 0Écrire une fonction ou_exclusif qui prend en paramètres deux tableaux de 0 ou de 1 demême longueur et qui renvoie un tableau où l’élément situé à position i est le résultat, parl’opérateur « ou exclusif », des éléments à la position i des tableaux passés en paramètres.Exemples :>>> ou_exclusif([1, 0, 1, 0, 1, 1, 0, 1], [0, 1, 1, 1, 0, 1, 0, 0])[1, 1, 0, 1, 1, 0, 0, 1]>>> ou_exclusif([1, 1, 0, 1], [0, 0, 1, 1])[1, 1, 1, 0]2 / 4EXERCICE 2 (10 points)Dans cet exercice, on appelle carré d’ordre 𝑛 un tableau de 𝑛 lignes et 𝑛 colonnes dontchaque case contient un entier naturel.Exemples :Un carré est dit semimagique lorsque les sommes des éléments situés sur chaque ligne,chaque colonne sont égales.• Ainsi c2 et c3 sont semimagiques car la somme de chaque ligne, chaque colonne etchaque diagonale est égale à 8 pour c2 et 12 pour c3.• Le carre c3bis n’est pas semimagique car la somme de la première ligne est égale à 15alors que celle de la deuxième ligne est égale à 10.La classe Carre ci-après contient des méthodes qui permettent de manipuler des carrés.• La méthode constructeur crée un carré sous forme d’un tableau à deux dimensions àpartir d’une liste d’entiers, et d’un ordre.• La méthode affiche permet d’afficher le carré créé.Exemple :>>> lst_c3 = [3, 4, 5, 4, 4, 4, 5, 4, 3]>>> c3 = Carre(lst_c3, 3)>>> c3.affiche()[3, 4, 5][4, 4, 4][5, 4, 3]Compléter la méthode est_semimagique qui renvoie True si le carré est semimagique,False sinon.class Carre:def __init__(self, liste, n):self.ordre = nself.tableau = [[liste[i + j * n] for i in range(n)]for j in range(n)]def affiche(self):'''Affiche un carré'''for i in range(self.ordre):print(self.tableau[i])3 / 4def somme_ligne(self, i):'''Calcule la somme des valeurs de la ligne i'''somme = 0for j in range(self.ordre):somme = somme + self.tableau[i][j]return sommedef somme_col(self, j):'''Calcule la somme des valeurs de la colonne j'''somme = 0for i in range(self.ordre):somme = somme + self.tableau[i][j]return sommedef est_semimagique(self):s = self.somme_ligne(0)#test de la somme de chaque lignefor i in range(...):if ... != s:return ...#test de la somme de chaque colonnefor j in range(...):if ... != s:return ...return ...Tester la méthode est_semimagique sur les carrés c2, c3 et c3bis.4 / 4
42.pdf → 17.pdf (0.998)
Texte de 42.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°42DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction Python appelée nb_repetitions qui prend en paramètres un élé-ment elt et un tableau tab (type list) d’éléments du même type et qui renvoie le nombrede fois où l’élément apparaît dans le tableau.Exemples :>>> nb_repetitions(5, [2, 5, 3, 5, 6, 9, 5])3>>> nb_repetitions('A', ['B', 'A', 'B', 'A', 'R'])2>>> nb_repetitions(12, [1, '!', 7, 21, 36, 44])02 / 3EXERCICE 2 (10 points)Pour rappel, la conversion d’un nombre entier positif en binaire peut s’effectuer à l’aide desdivisions successives comme illustré ici :Voici une fonction Python basée sur la méthode des divisions successives permettant deconvertir un nombre entier positif en binaire :Compléter la fonction binaire.def binaire(a):'''convertit un nombre entier a en sa representationbinaire sous forme de chaine de caractères.'''if a == 0:return '0'bin_a = ...while ...:bin_a = ... + bin_aa = ...return bin_aExemples :>>> binaire(0)'0'>>> binaire(77)'1001101'3 / 3

Texte de 17.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°17DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction Python appelée nb_repetitions qui prend en paramètres un élé-ment elt et un tableau tab (type list) d’éléments du même type et qui renvoie le nombrede fois où l’élément apparaît dans le tableau.Exemples :>>> nb_repetitions(5, [2, 5, 3, 5, 6, 9, 5])3>>> nb_repetitions('A', ['B', 'A', 'B', 'A', 'R'])2>>> nb_repetitions(12, [1, '!', 7, 21, 36, 44])02 / 3EXERCICE 2 (10 points)Pour rappel, la conversion d’un nombre entier positif en binaire peut s’effectuer à l’aide desdivisions successives comme illustré ici :Voici une fonction Python basée sur la méthode des divisions successives permettant deconvertir un nombre entier positif en binaire :Compléter la fonction binaire.def binaire(a):'''convertit un nombre entier a en sa representationbinaire sous forme de chaine de caractères.'''if a == 0:return '0'bin_a = ...while ...:bin_a = ... + bin_aa = ...return bin_aExemples :>>> binaire(0)'0'>>> binaire(77)'1001101'3 / 3
43.pdf → 27.pdf (0.989)
Texte de 43.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°43DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction couples_consecutifs qui prend en paramètre un tableau de nom-bres entiers tab non vide (type list), et qui renvoie la liste Python (éventuellement vide)des couples d’entiers consécutifs successifs qu’il peut y avoir dans tab.Exemples :>>> couples_consecutifs([1, 4, 3, 5])[]>>> couples_consecutifs([1, 4, 5, 3])[(4, 5)]>>> couples_consecutifs([1, 1, 2, 4])[(1, 2)]>>> couples_consecutifs([7, 1, 2, 5, 3, 4])[(1, 2), (3, 4)]>>> couples_consecutifs([5, 1, 2, 3, 8, -5, -4, 7])[(1, 2), (2, 3), (-5, -4)]2 / 3EXERCICE 2 (10 points)Soit une image binaire représentée dans un tableau à 2 dimensions. Les éléments M[i][j],appelés pixels, sont égaux soit à 0 soit à 1.Une composante d’une image est un sous-ensemble de l’image constitué uniquement de 1et de 0 qui sont côte à côte, soit horizontalement soit verticalement.Par exemple, les composantes desontOn souhaite, à partir d’un pixel égal à 1 dans une image M, donner la valeur val à tous lespixels de la composante à laquelle appartient ce pixel.La fonction colore_comp1 prend pour paramètre une image M (représentée par une listede listes), deux entiers i et j et une valeur entière val. Elle met à la valeur val tous lespixels de la composante du pixel M[i][j] s’il vaut 1 et ne fait rien sinon.Par exemple, colore_comp1(M, 2, 1, 3) donneCompléter le code récursif de la fonction colore_comp1 donné ci-dessous :def colore_comp1(M, i, j, val):if M[i][j] != 1:returnM[i][j] = valif i-1 >= 0: # propage en hautcolore_comp1(M, i-1, j, val)if ... < len(M): # propage en bascolore_comp1(M, ..., j, val)if ...: # propage à gauchecolore_comp1(M, ..., ..., val)if ...: # propage à droite...Exemple :>>> M = [[0, 0, 1, 0], [0, 1, 0, 1], [1, 1, 1, 0], [0, 1, 1, 0]]>>> colore_comp1(M, 2, 1, 3)>>> M[[0, 0, 1, 0], [0, 3, 0, 1], [3, 3, 3, 0], [0, 3, 3, 0]]3 / 3

Texte de 27.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°27DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction couples_consecutifs qui prend en paramètre un tableau de nom-bres entiers tab non vide (type list), et qui renvoie la liste Python (éventuellement vide)des couples d’entiers consécutifs successifs qu’il peut y avoir dans tab.Exemples :>>> couples_consecutifs([1, 4, 3, 5])[]>>> couples_consecutifs([1, 4, 5, 3])[(4, 5)]>>> couples_consecutifs([1, 1, 2, 4])[(1, 2)]>>> couples_consecutifs([7, 1, 2, 5, 3, 4])[(1, 2), (3, 4)]>>> couples_consecutifs([5, 1, 2, 3, 8, -5, -4, 7])[(1, 2), (2, 3), (-5, -4)]2 / 3EXERCICE 2 (10 points)Soit une image binaire représentée dans un tableau à 2 dimensions. Les éléments M[i][j],appelés pixels, sont égaux soit à 0 soit à 1.Une composante d’une image est un sous-ensemble de l’image constitué uniquement de 1et de 0 qui sont côte à côte, soit horizontalement soit verticalement.Par exemple, les composantes desontOn souhaite, à partir d’un pixel égal à 1 dans une image M, donner la valeur val à tous lespixels de la composante à laquelle appartient ce pixel.La fonction colore_comp1 prend pour paramètre une image M (représentée par une listede listes), deux entiers i et j et une valeur entière val. Elle met à la valeur val tous lespixels de la composante du pixel M[i][j] s’il vaut 1 et ne fait rien sinon.Par exemple, colore_comp1(M, 2, 1, 3) donneCompléter le code récursif de la fonction colore_comp1 donné ci-dessous :def colore_comp1(M, i, j, val):if M[i][j] != 1:returnM[i][j] = valif i-1 >= 0: # propage à gauchecolore_comp1(M, i-1, j, val)if ... < len(M): # propage à droitecolore_comp1(M, ..., j, val)if ...: # propage en hautcolore_comp1(M, ..., ..., val)if ...: # propage en bas...Exemple :>>> M = [[0, 0, 1, 0], [0, 1, 0, 1], [1, 1, 1, 0], [0, 1, 1, 0]]>>> colore_comp1(M, 2, 1, 3)>>> M[[0, 0, 1, 0], [0, 3, 0, 1], [3, 3, 3, 0], [0, 3, 3, 0]]3 / 3
44.pdf → 10.pdf (0.996)
Texte de 44.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°44DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)Dans cet exercice on cherche à calculer la moyenne pondérée d’un élève dans une matièredonnée. Chaque note est associée à un coefficient qui la pondère.Par exemple, si ses notes sont : 14 avec coefficient 3, 12 avec coefficient 1 et 16 avec coeffi-cient 2, sa moyenne pondérée sera donnée par14 × 3 + 12 × 1 + 16 × 23 + 1 + 2 = 14, 333...Écrire une fonction moyenne :• qui prend en paramètre une liste notes non vide de tuples à deux éléments entiersde la forme (note, coefficient) (int ou float) positifs ou nuls ;• et qui renvoie la moyenne pondérée des notes de la liste sous forme de flottant si lasomme des coefficients est non nulle, None sinon.Exemple :>>> moyenne([(8, 2), (12, 0), (13.5, 1), (5, 0.5)])9.142857142857142>>> moyenne([(3, 0), (5, 0)])None2 / 4EXERCICE 2 (10 points)On travaille sur des dessins en noir et blanc obtenus à partir de pixels noirs et blancs : Lafigure « cœur » ci-dessus va servir d’exemple. On la représente par une grille de nombres,c’est-à-dire par une liste composée de sous-listes de même longueur. Chaque sous-listereprésentera donc une ligne du dessin.Dans le code ci-dessous, la fonction affiche permet d’afficher le dessin. Les pixels noirs(1 dans la grille) seront représentés par le caractère '*' et les pixels blancs (0 dans la grille)par une espace.La fonction liste_zoom prend en argument une liste liste_depart et un entier k. Ellerenvoie une liste où chaque élément de liste_depart est dupliqué k fois.La fonction dessin_zoom prend en argument une grille grille et renvoie une nouvellegrille où toutes les lignes de grille sont zoomées k fois et répétées k fois.Compléter les fonctions liste_zoom et dessin_zoom du code suivant :def affiche(dessin):''' affichage d'une grille : les 1 sont représentés parun "*" , les 0 par une espace " " '''for ligne in dessin:affichage = ''for col in ligne:if col == 1:affichage = affichage + "*"else:affichage = affichage + " "print(affichage)def liste_zoom(liste_depart,k):'''renvoie une liste contenant k fois chaque élément deliste_depart'''liste_zoomee = ...for elt in ... :for i in range(k):...return liste_zoomee3 / 4def dessin_zoom(grille,k):'''renvoie une grille où les lignes sont zoomées k foisET répétées k fois'''grille_zoomee=[]for ligne in grille:ligne_zoomee = ...for i in range(k):... .append(...)return grille_zoomeeExemples :>>> coeur = [[0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0],[0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0],[0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0],[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0],[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0],[0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],[0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0],[0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0],[0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0]]>>> affiche(coeur)** *** * * ** * ** ** ** ** ** ** **>>> affiche(dessin_zoom(coeur,2))**** ******** ****** ** ** **** ** ** **** ** **** ** **** **** **** **** **** **** **** **** **** **** **** **** ******>>> liste_zoom([1,2,3],3)[1, 1, 1, 2, 2, 2, 3, 3, 3]4 / 4

Texte de 10.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°10DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)Dans cet exercice on cherche à calculer la moyenne pondérée d’un élève dans une matièredonnée. Chaque note est associée à un coefficient qui la pondère.Par exemple, si ses notes sont : 14 avec coefficient 3, 12 avec coefficient 1 et 16 avec coeffi-cient 2, sa moyenne pondérée sera donnée par14 × 3 + 12 × 1 + 16 × 23 + 1 + 2 = 14, 333...Écrire une fonction moyenne :• qui prend en paramètre une liste notes non vide de tuples à deux éléments entiersde la forme (note, coefficient) (int ou float) positifs ou nuls ;• et qui renvoie la moyenne pondérée des notes de la liste sous forme de flottant si lasomme des coefficients est non nulle, None sinon.Exemple :>>> moyenne([(8, 2), (12, 0), (13.5, 1), (5, 0.5)])9.142857142857142>>> moyenne([(3, 0), (5, 0)])None2 / 4EXERCICE 2 (10 points)On travaille sur des dessins en noir et blanc obtenus à partir de pixels noirs et blancs :la figure « cœur » ci-dessus va servir d’exemple. On la représente par une grille denombres, c’est-à-dire par une liste composée de sous-listes de même longueur. Chaquesous-liste représentera donc une ligne du dessin.Dans le code ci-dessous, la fonction affiche permet d’afficher le dessin. Les pixels noirs(1 dans la grille) seront représentés par le caractère '*' et les pixels blancs (0 dans la grille)par des espaces.La fonction liste_zoom prend en argument une liste liste_depart et un entier k. Ellerenvoie une liste où chaque élément de liste_depart est dupliqué k fois.La fonction dessin_zoom prend en argument une grille grille et renvoie une nouvellegrille où toutes les lignes de grille sont zoomées k fois et répétées k fois.Compléter les fonctions liste_zoom et dessin_zoom du code suivant :def affiche(dessin):''' affichage d'une grille : les 1 sont représentés pardes "*" , les 0 par un espace " " '''for ligne in dessin:affichage = ''for col in ligne:if col == 1:affichage = affichage + "*"else:affichage = affichage + " "print(affichage)def liste_zoom(liste_depart,k):'''renvoie une liste contenant k fois chaque élément deliste_depart'''liste_zoomee = ...for elt in ... :for i in range(k):...return liste_zoomee3 / 4def dessin_zoom(grille,k):'''renvoie une grille où les lignes sont zoomées k foisET répétées k fois'''grille_zoomee=[]for ligne in grille:ligne_zoomee = ...for i in range(k):... .append(...)return grille_zoomeeExemples :>>> coeur = [[0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0],[0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0],[0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0],[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0],[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0],[0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],[0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0],[0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0],[0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0]]>>> affiche(coeur)** *** * * ** * ** ** ** ** ** ** **>>> affiche(dessin_zoom(coeur,2))**** ******** ****** ** ** **** ** ** **** ** **** ** **** **** **** **** **** **** **** **** **** **** **** **** ******>>> liste_zoom([1,2,3],3)[1, 1, 1, 2, 2, 2, 3, 3, 3]4 / 4
45.pdf → 02.pdf (0.999)
Texte de 45.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°45DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)On considère des chaînes de caractères contenant uniquement des majuscules et des carac-tères * appelées mots à trous.Par exemple INFO*MA*IQUE, ***I***E** et *S* sont des mots à trous.Programmer une fonction correspond :• qui prend en paramètres deux chaînes de caractères mot et mot_a_trous oùmot_a_trous est un mot à trous comme indiqué ci-dessus ;• et qui renvoie :– True si on peut obtenir mot en remplaçant convenablement les caractères '*'de mot_a_trous ;– False sinon.Exemple :>>> correspond('INFORMATIQUE', 'INFO*MA*IQUE')True>>> correspond('AUTOMATIQUE', 'INFO*MA*IQUE')False>>> correspond('STOP', 'S*')False>>> correspond('AUTO', '*UT*')True2 / 4EXERCICE 2 (10 points)On considère au plus 26 personnes A, B, C, D, E, F … qui peuvent s’envoyer des messagesavec deux règles à respecter :• chaque personne ne peut envoyer des messages qu’à une seule personne (éventuelle-ment elle-même),• chaque personne ne peut recevoir des messages qu’en provenance d’une seule per-sonne (éventuellement elle-même).Voici un exemple - avec 6 personnes - de « plan d’envoi des messages » qui respecte lesrègles ci-dessus, puisque chaque personne est présente une seule fois dans chaque colonne:• A envoie ses messages à E• E envoie ses messages à B• B envoie ses messages à F• F envoie ses messages à A• C envoie ses messages à D• D envoie ses messages à CLe dictionnaire correspondant à ce plan d’envoi est alors le suivant :plan_a = {'A':'E', 'B':'F', 'C':'D', 'D':'C', 'E':'B', 'F':'A'}Un cycle est une suite de personnes dans laquelle la dernière est la même que la première.Sur le plan d’envoi plan_a des messages ci-dessus, il y a deux cycles distincts : un premiercycle avec A, E, B, F et un second cycle avec C et D.En revanche, le plan d’envoi plan_b ci-dessous :plan_b = {'A':'C', 'B':'F', 'C':'E', 'D':'A', 'E':'B', 'F':'D'}comporte un unique cycle : A, C, E, B, F, D. Dans ce cas, lorsqu’un plan d’envoi comporte ununique cycle, on dit que le plan d’envoi est cyclique.Pour savoir si un plan d’envoi de messages comportant N personnes est cyclique, on peututiliser l’algorithme ci-dessous :• on part d’un expéditeur (ici A) et on inspecte son destinataire dans le plan d’envoi,• chaque destinataire devient à son tour expéditeur, selon le plan d’envoi, tant qu’onne « retombe » pas sur l’expéditeur initial,• le plan d’envoi est cyclique si on l’a parcouru en entier.Compléter la fonction est_cyclique située à la page suivante en respectant la spécifica-tion. On rappelle que la fonction Python len permet d’obtenir la longueur d’un diction-naire.3 / 4def est_cyclique(plan):'''Prend en paramètre un dictionnaire `plan` correspondant àun plan d'envoi de messages (ici entre les personnes A, B, C,D, E, F).Renvoie True si le plan d'envoi de messages est cyclique etFalse sinon.'''expediteur = 'A'destinataire = plan[...]nb_destinataires = 1while destinataire != expediteur:destinataire = ...nb_destinataires = ...return nb_destinataires == ...Exemples :>>> est_cyclique({'A':'E','F':'A','C':'D','E':'B','B':'F','D':'C'})False>>> est_cyclique({'A':'E','F':'C','C':'D','E':'B','B':'F','D':'A'})True>>> est_cyclique({'A':'B','F':'C','C':'D','E':'A','B':'F','D':'E'})True>>> est_cyclique({'A':'B','F':'A','C':'D','E':'C','B':'F','D':'E'})False4 / 4

Texte de 02.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°02DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 4 pages numérotées de 1 / 4 à 4 / 4Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 4EXERCICE 1 (10 points)On considère des chaînes de caractères contenant uniquement des majuscules et des carac-tères * appelées mots à trous.Par exemple INFO*MA*IQUE, ***I***E** et *S* sont des mots à trous.Programmer une fonction correspond :• qui prend en paramètres deux chaînes de caractères mot et mot_a_trous oùmot_a_trous est un mot à trous comme indiqué ci-dessus ;• et qui renvoie :– True si on peut obtenir mot en remplaçant convenablement les caractères '*'de mot_a_trous ;– False sinon.Exemple :>>> correspond('INFORMATIQUE', 'INFO*MA*IQUE')True>>> correspond('AUTOMATIQUE', 'INFO*MA*IQUE')False>>> correspond('STOP', 'S*')False>>> correspond('AUTO', '*UT*')True2 / 4EXERCICE 2 (10 points)On considère au plus 26 personnes A, B, C, D, E, F … qui peuvent s’envoyer des messagesavec deux règles à respecter :• chaque personne ne peut envoyer des messages qu’à une seule personne (éventuelle-ment elle-même),• chaque personne ne peut recevoir des messages qu’en provenance d’une seule per-sonne (éventuellement elle-même).Voici un exemple - avec 6 personnes - de « plan d’envoi des messages » qui respecte lesrègles ci-dessus, puisque chaque personne est présente une seule fois dans chaque colonne:• A envoie ses messages à E• E envoie ses messages à B• B envoie ses messages à F• F envoie ses messages à A• C envoie ses messages à D• D envoie ses messages à CLe dictionnaire correspondant à ce plan d’envoi est alors le suivant :plan_a = {'A':'E', 'B':'F', 'C':'D', 'D':'C', 'E':'B', 'F':'A'}Un cycle est une suite de personnes dans laquelle la dernière est la même que la première.Sur le plan d’envoi plan_a des messages ci-dessus, il y a deux cycles distincts : un premiercycle avec A, E, B, F et un second cycle avec C et D.En revanche, le plan d’envoi plan_b ci-dessous :plan_b = {'A':'C', 'B':'F', 'C':'E', 'D':'A', 'E':'B', 'F':'D'}comporte un unique cycle : A, C, E, B, F, D. Dans ce cas, lorsqu’un plan d’envoi comporte ununique cycle, on dit que le plan d’envoi est cyclique.Pour savoir si un plan d’envoi de messages comportant N personnes est cyclique, on peututiliser l’algorithme ci-dessous :• on part d’un expéditeur (ici A) et on inspecte son destinataire dans le plan d’envoi,• chaque destinataire devient à son tour expéditeur, selon le plan d’envoi, tant qu’onne « retombe » pas sur l’expéditeur initial,• le plan d’envoi est cyclique si on l’a parcouru en entier.Compléter la fonction est_cyclique située à la page suivante en respectant la spécifica-tion. On rappelle que la fonction Python len permet d’obtenir la longueur d’un diction-naire.3 / 4def est_cyclique(plan):'''Prend en paramètre un dictionnaire `plan` correspondant àun plan d'envoi de messages (ici entre les personnes A, B, C,D, E, F).Renvoie True si le plan d'envoi de messages est cyclique etFalse sinon.'''expediteur = 'A'destinataire = plan[...]nb_destinataires = 1while destinataire != expediteur:destinataire = ...nb_destinataires = ...return nb_destinataires == ...Exemples :>>> est_cyclique({'A':'E','F':'A','C':'D','E':'B','B':'F','D':'C'})False>>> est_cyclique({'A':'E','F':'C','C':'D','E':'B','B':'F','D':'A'})True>>> est_cyclique({'A':'B','F':'C','C':'D','E':'A','B':'F','D':'E'})True>>> est_cyclique({'A':'B','F':'A','C':'D','E':'C','B':'F','D':'E'})False4 / 4
46.pdf → 45.pdf (0.999)
Texte de 46.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°46DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction compte_occurrences prenant en paramètres une valeur x et untableau tab (de type list) et renvoyant le nombre d’occurrences de x dans tab.L’objectif de cet exercice étant de parcourir un tableau, il est interdit d’utiliser la méthodecount des listes Python.Exemples :>>> compte_occurrences(5, [])0>>> compte_occurrences(5, [-2, 3, 1, 5, 3, 7, 4])1>>> compte_occurrences('a', ['a','b','c','a','d','e','a'])32 / 3EXERCICE 2 (10 points)On considère dans cet exercice un algorithme glouton pour le rendu de monnaie. Pourrendre une somme en monnaie, on utilise à chaque fois la plus grosse pièce possible et ainside suite jusqu’à ce que la somme restante à rendre soit nulle.Les pièces de monnaie utilisées sont :pieces = [1, 2, 5, 10, 20, 50, 100, 200]On souhaite écrire une fonction rendu_monnaie qui prend en paramètres• un entier somme_due représentant la somme à payer ;• un entier somme_versee représentant la somme versée qui est supérieure ou égaleà somme_due ;• et qui renvoie un tableau de type list contenant les pièces qui composent le rendude la monnaie restante, c’est-à-dire de somme_versee - somme_due.Ainsi, l’instruction rendu_monnaie(452, 500) renvoie le tableau [20, 20, 5, 2,1].En effet, la somme à rendre est de 48 euros soit 20 + 20 + 5 + 2 + 1.Le code de la fonction rendu_monnaie est donné ci-dessous :def rendu_monnaie(somme_due, somme_versee):'''Renvoie la liste des pièces à rendre pour rendre la monnaielorsqu'on doit rendre somme_versee - somme_due'''rendu = ...a_rendre = ...i = len(pieces) - 1while a_rendre > ...:while pieces[i] > a_rendre:i = i - 1rendu.append(...)a_rendre = ...return renduCompléter ce code et le tester :>>> rendu_monnaie(700, 700)[]>>> rendu_monnaie(102, 500)[200, 100, 50, 20, 20, 5, 2, 1]3 / 3

Texte de 45.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°45DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Écrire une fonction compte_occurrences prenant en paramètres une valeur x et untableau tab (de type list) et renvoyant le nombre d’occurrences de x dans tab.L’objectif de cet exercice étant de parcourir un tableau, il est interdit d’utiliser la méthodecount des listes Python.Exemples :>>> compte_occurrences(5, [])0>>> compte_occurrences(5, [-2, 3, 1, 5, 3, 7, 4])1>>> compte_occurrences('a', ['a','b','c','a','d','e','a'])32 / 3EXERCICE 2 (10 points)On considère dans cet exercice un algorithme glouton pour le rendu de monnaie. Pourrendre une somme en monnaie, on utilise à chaque fois la plus grosse pièce possible et ainside suite jusqu’à ce que la somme restante à rendre soit nulle.Les pièces de monnaie utilisées sont :pieces = [1, 2, 5, 10, 20, 50, 100, 200]On souhaite écrire une fonction rendu_monnaie qui prend en paramètres• un entier somme_due représentant la somme à payer ;• un entier somme_versee représentant la somme versée qui est supérieure ou égaleà somme_due ;• et qui renvoie un tableau de type list contenant les pièces qui composent le rendude la monnaie restante, c’est-à-dire de somme_versee - somme_due.Ainsi, l’instruction rendu_monnaie(452, 500) renvoie le tableau [20, 20, 5, 2,1].En effet, la somme à rendre est de 48 euros soit 20 + 20 + 5 + 2 + 1.Le code de la fonction rendu_monnaie est donné ci-dessous :def rendu_monnaie(somme_due, somme_versee):'''Renvoie la liste des pièces à rendre pour rendre la monnaielorsqu'on doit rendre somme_versee - somme_due'''rendu = ...a_rendre = ...i = len(pieces) - 1while a_rendre > ...:while pieces[i] > a_rendre:i = i - 1rendu.append(...)a_rendre = ...return renduCompléter ce code et le tester :>>> rendu_monnaie(700, 700)[]>>> rendu_monnaie(102, 500)[200, 100, 50, 20, 20, 5, 2, 1]3 / 3
47.pdf → 01.pdf (0.999)
Texte de 47.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°47DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Dans cet exercice, un arbre binaire de caractères non vide est stocké sous la forme d’undictionnaire où les clefs sont les caractères des nœuds de l’arbre et les valeurs, pour chaqueclef, la liste des caractères des fils gauche et droit du nœud. On utilise la valeur '' pourreprésenter un fils vide.Par exemple, l’arbreest stocké dansa = {'F':['B','G'], 'B':['A','D'], 'A':['',''], 'D':['C','E'], \'C':['',''], 'E':['',''], 'G':['','I'], 'I':['','H'], \'H':['','']}Écrire une fonction récursive taille prenant en paramètres un arbre binaire arbre nonvide sous la forme d’un dictionnaire et un caractère lettre qui est la valeur du sommet del’arbre, et qui renvoie la taille de l’arbre à savoir le nombre total de nœuds.On observe que, par exemple, arbre[lettre][0], respectivement arbre[let-tre][1], permet d’atteindre la clé du sous-arbre gauche, respectivement droit, de l’arbrearbre de sommet lettre.Exemples :>>> taille(a, 'F')9>>> taille(a, 'B')5>>> taille(a, 'I')22 / 3EXERCICE 2 (10 points)On considère l’algorithme de tri de tableau suivant : à chaque étape, on parcourt le sous-tableau des éléments non rangés et on place le plus petit élément en première position dece sous-tableau.Exemple avec le tableau : t = [41, 55, 21, 18, 12, 6, 25]• Étape 1 : on parcourt tous les éléments du tableau, on permute le plus petit élémentavec le premier.Le tableau devient t = [6, 55, 21, 18, 12, 41, 25]• Étape 2 : on parcourt tous les éléments sauf le premier, on permute le plus petitélément trouvé avec le second.Le tableau devient : t = [6, 12, 21, 18, 55, 41, 25]Et ainsi de suite.Le programme ci-dessous implémente cet algorithme.def echange(tab, i, j):'''Echange les éléments d'indice i et j dans le tableau tab.'''temp = ...tab[i] = ...tab[j] = ...def tri_selection(tab):'''Trie le tableau tab dans l'ordre croissantpar la méthode du tri par sélection.'''N = len(tab)for k in range(...):imin = ...for i in range(..., N):if tab[i] < ...:imin = iechange(tab, ..., ...)Compléter ce code de façon à obtenir :>>> tab = [41, 55, 21, 18, 12, 6, 25]>>> tri_selection(tab)>>> tab[6, 12, 18, 21, 25, 41, 55]3 / 3

Texte de 01.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°01DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Dans cet exercice, un arbre binaire de caractères non vide est stocké sous la forme d’undictionnaire où les clefs sont les caractères des nœuds de l’arbre et les valeurs, pour chaqueclef, la liste des caractères des fils gauche et droit du nœud. On utilise la valeur '' pourreprésenter un fils vide.Par exemple, l’arbreest stocké dansa = {'F':['B','G'], 'B':['A','D'], 'A':['',''], 'D':['C','E'], \'C':['',''], 'E':['',''], 'G':['','I'], 'I':['','H'], \'H':['','']}Écrire une fonction récursive taille prenant en paramètres un arbre binaire arbre nonvide sous la forme d’un dictionnaire et un caractère lettre qui est la valeur du sommet del’arbre, et qui renvoie la taille de l’arbre à savoir le nombre total de nœuds.On observe que, par exemple, arbre[lettre][0], respectivement arbre[let-tre][1], permet d’atteindre la clé du sous-arbre gauche, respectivement droit, de l’arbrearbre de sommet lettre.Exemples :>>> taille(a, 'F')9>>> taille(a, 'B')5>>> taille(a, 'I')22 / 3EXERCICE 2 (10 points)On considère l’algorithme de tri de tableau suivant : à chaque étape, on parcourt le sous-tableau des éléments non rangés et on place le plus petit élément en première position dece sous-tableau.Exemple avec le tableau : t = [41, 55, 21, 18, 12, 6, 25]• Étape 1 : on parcourt tous les éléments du tableau, on permute le plus petit élémentavec le premier.Le tableau devient t = [6, 55, 21, 18, 12, 41, 25]• Étape 2 : on parcourt tous les éléments sauf le premier, on permute le plus petitélément trouvé avec le second.Le tableau devient : t = [6, 12, 21, 18, 55, 41, 25]Et ainsi de suite.Le programme ci-dessous implémente cet algorithme.def echange(tab, i, j):'''Echange les éléments d'indice i et j dans le tableau tab.'''temp = ...tab[i] = ...tab[j] = ...def tri_selection(tab):'''Trie le tableau tab dans l'ordre croissantpar la méthode du tri par sélection.'''N = len(tab)for k in range(...):imin = ...for i in range(..., N):if tab[i] < ...:imin = iechange(tab, ..., ...)Compléter ce code de façon à obtenir :>>> tab = [41, 55, 21, 18, 12, 6, 25]>>> tri_selection(tab)>>> tab[6, 12, 18, 21, 25, 41, 55]3 / 3
48.pdf → 04.pdf (0.996)
Texte de 48.pdf
BACCALAURÉATSESSION 2025Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°48DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Programmer la fonction recherche, prenant en paramètre un tableau non vide tab (typelist) d’entiers et un entier n, et qui renvoie l’indice de la dernière occurrence de l’élémentcherché. Si l’élément n’est pas présent, la fonction renvoie None.Exemples>>> recherche([5, 3],1) # renvoie None>>> recherche([2,4],2)0>>> recherche([2,3,5,2,4],2)32 / 3EXERCICE 2 (10 points)On souhaite programmer une fonction indiquant le point le plus proche d’un point de départdans un tableau de points non vide. Les points sont tous à coordonnées entières et sontdonnés sous la forme d’un tuple de deux entiers. Le tableau des points à traiter est donc untableau de tuples.On rappelle que la distance 𝑑 entre deux points du plan de coordonnées (𝑥; 𝑦) et (𝑥′; 𝑦′)vérifie la formule :𝑑2 = (𝑥 − 𝑥′)2 + (𝑦 − 𝑦′)2Compléter le code des fonctions distance_carre et point_le_plus_prochefournies ci-dessous pour qu’elles répondent à leurs spécifications.def distance_carre(point1, point2):""" Calcule et renvoie la distance au carre entredeux points."""return (...)**2 + (...)**2def point_le_plus_proche(depart, tab):""" Renvoie les coordonnées du premier point du tableau tab setrouvant à la plus courte distance du point depart."""min_point = tab[0]min_dist = ...for i in range(1, len(tab)):if distance_carre(tab[i], depart) < ...:min_point = ...min_dist = ...return min_pointExemples :>>> distance_carre((1, 0), (5, 3))25>>> distance_carre((1, 0), (0, 1))2>>> point_le_plus_proche((0, 0), [(7, 9), (2, 5), (5, 2)])(2, 5)>>> point_le_plus_proche((5, 2), [(7, 9), (2, 5), (5, 2)])(5, 2)3 / 3

Texte de 04.pdf
BACCALAURÉATSESSION 2024Épreuve de l'enseignement de spécialitéNUMÉRIQUE et SCIENCESINFORMATIQUESPartie pratiqueClasse Terminale de la voie généraleSujet n°04DURÉE DE L'ÉPREUVE : 1 heureLe sujet comporte 3 pages numérotées de 1 / 3 à 3 / 3Dès que le sujet vous est remis, assurez-vous qu’il est complet.Le candidat doit traiter les 2 exercices.1 / 3EXERCICE 1 (10 points)Programmer la fonction recherche, prenant en paramètre un tableau non vide tab (typelist) d’entiers et un entier n, et qui renvoie l’indice de la dernière occurrence de l’élémentcherché. Si l’élément n’est pas présent, la fonction renvoie None.Exemples>>> recherche([5, 3],1) # renvoie None>>> recherche([2,4],2)0>>> recherche([2,3,5,2,4],2)32 / 3EXERCICE 2 (10 points)On souhaite programmer une fonction indiquant le point le plus proche d’un point de départdans un tableau de points. Les points sont tous à coordonnées entières et sont donnés sousla forme d’un tuple de deux entiers. Le tableau des points à traiter est donc un tableau detuples.On rappelle que la distance 𝑑 entre deux points du plan de coordonnées (𝑥; 𝑦) et (𝑥′; 𝑦′)vérifie la formule :𝑑2 = (𝑥 − 𝑥′)2 + (𝑦 − 𝑦′)2Compléter le code des fonctions distance_carre et point_le_plus_prochefournies ci-dessous pour qu’elles répondent à leurs spécifications.def distance_carre(point1, point2):""" Calcule et renvoie la distance au carre entredeux points."""return (...)**2 + (...)**2def point_le_plus_proche(depart, tab):""" Renvoie les coordonnées du premier point du tableau tab setrouvant à la plus courte distance du point depart."""min_point = tab[0]min_dist = ...for i in range(1, len(tab)):if distance_carre(tab[i], depart) < ...:min_point = ...min_dist = ...return min_pointExemples :>>> distance_carre((1, 0), (5, 3))25>>> distance_carre((1, 0), (0, 1))2>>> point_le_plus_proche((0, 0), [(7, 9), (2, 5), (5, 2)])(2, 5)>>> point_le_plus_proche((5, 2), [(7, 9), (2, 5), (5, 2)])(5, 2)3 / 3