AlgoPy

Sujets d'algorithme inspirés des examens du bac, avec solutions détaillées

Convention
 

CONVENTION PYTHON

Importer un module

from nom_du module import *

# commentaire

Afficher A

print(A)

Affecter à A une valeur

A= valeur

Saisir un entier A

A=int(input(« Saisir un entier : « )

Saisir un réel X

X=float(input(« Saisir un réel : « )

Saisir une chaîne S

S=input(« Saisir une chaîne : « )

Structure conditionnelle

if condition1 :

       traitement1

elif condition2 :

       traitement2

else :

       traitement3

Boucle non bornée

while condition :

       traitement

Boucle bornée

for i in range (vi,vf+1,Pas) :

       Traitement

 

Définition d’une fonction

def f (pf1, pf2, …) :

         y = …..

         return y

Racine carré de x

sqrt(x)

Tester si une chaîne S est numérique

S.isnumeric()

 

Reste de la division A par B

% B

Quotient de la division de A par B

A//B

A=B (égalité)

A==B

A ≠ B

!= B

Nombre aléatoire compris entre a et b

randint(a,b)

Nombre de caractères dans une chaîne S

len(s)

Cherche l’existance d’une chaîne S1 dans une chaîne S2

S2.find(S1)  

Code ASCII d’un caractère

chr( )

Caractère d’un code ASCII

ord( )

La partie entière d’un réel x

int(x)

Copier des caractères d’une chaîne S

S[début :fin]

Effacer des caractères d’une chaîne S

S[:début]    S[fin:  

Mettre la châine en majuscule S

S.upper( )

Convertir le type d’une variable

Int( )     float( )      str( )

Déclarer un tableau numpy T

from numpy import*

T=np.array([type( )]*n

Edit Template

Consultez la page Référence avant de plongez dans un sujet!

Compétences évaluées : manipulation d’un tableau de chaînes, test de nombre premier et utilisation d’une fonction de recherche.

Ce sujet d’algorithme inspiré du bac informatique tunisien permet à l’élève de travailler la gestion des structures de données textuelles ainsi que l’analyse arithmétique. Il combine traitement de tableaux et vérification de primalité, tout en intégrant une fonction de recherche structurée. L’objectif est de renforcer la logique algorithmique et la décomposition modulaire d’un problème complexe.

Sujet n°1

Exercice 1 :

On veut déterminer et afficher le nombre de diviseurs d’un entier n strictement positif.

Exemple:

Pour n=6, le nombre de diviseurs de 6 est égal à 4. En effet les diviseurs de 6 sont {1 ; 2 ; 3 ; 6}.

On vous propose les trois séquences instructions algorithmiques suivantes :

Séquence_1Séquence_2Séquence_3

c ← 0

Pour k de 1 à n faire

Si (n mod k = 0) alors

c ← c + 1

Fin Si

Fin Pour

Écrire (c)

c ← 0

Pour k de 2 à (n div 2) faire

Si (n mod k = 0) alors

c ← c + 1

Fin Si

Fin Pour

Écrire (c)

c ← 0

Pour k de 2 à (n – l) faire

Si (n mod k = 0) alors

c ← c + 1

Fin Si

Fin Pour

Écrire (c)

  • Compléter le tableau ci-dessous par la valeur de la variable c après exécution de chaque séquence, et ce pour n=4.
SéquenceValeur de la variable c
1 
2 
3 
  • Donner le numéro de la séquence qui ne permet pas d’afficher le nombre de diviseurs. Justifier votre réponse.

………………………………………………………………………………………………………

Exercice 2 :

Un médecin veut chercher la fiche d’un de ses patients en connaissant son nom.

Pour cela, il utilise un tableau T contenant N noms.

  1. Compléter la séquence algorithmique présentée ci-dessous, afin de vérifier l’existence d’un nom donné ,
    dans un tableau T non vide.
Algorithme recherche
Début
       Ecrire ("Donner le nom à chercher ")
       Lire (…………)
       Existe ← ……..
       i ← ………
       Répéter
          Si (T[i] = NOM) alors
                 Existe .........
          Sinon    
                 i ← ………
          Finsi
       Jusqu'à (…………) ou (…………. )
       Si (……………………………………………) alors
             Ecrire ("Le nom recherché existe dans ce tableau." )
       Sinon
             Ecrire ("Le nom recherché n'existe pas dans ce tableau. ")
       Finsi
 Fin
  1. Ce médecin veut chercher les numéros des fiches de ses patients ayant le même nom.

Modifier la séquence algorithmique présentée ci-dessus afin d’afficher ces numéros.
………………………………………………..

Exercice 3 :

La propagation de l’épidémie Covid- 19 suit une croissance exponentielle.
Pour déterminer et afficher le nombre total de personnes contaminées pendant un nombre de jours donné n, et pour x personnes initialement contaminées on utilise la formule suivante :

ex = 1+X+X²/2! + X3/3! + … + Xn/n!

Donner un algorithme solution à ce problème.

Problème :

Un débutant en anglais veut élaborer son  propre carnet comme étant un dictionnaire FRANÇAIS/ANGLAIS pour l’utiliser afin de traduire des phrases au cours de sa formation. Pour cela, on admettra qu’un traducteur du français à l’anglais peut être simplifié par une traduction de mot-à-mot.

Ce carnet FRANÇAIS/ANGLAIS est formé par N mots en français et par N mots en anglais, de sorte que chaque mot en français lui correspond son équivalent en anglais, avec 2 ≤N <NMAX≤ (NMAX est une constante égale à 100).

Pour chaque mot ajouté en français, dans le carnet, en lui ajoute en même temps son équivalent en anglais.

Sachant que chaque mot en français qu’en anglais est une chaîne non vide de longueur maximale 15 lettres non accentuées.

Après l’élaboration du carnet, on veut traduire une phrase donnée en français (formée seulement par des lettres et par des espaces) en son équivalent en anglais. Dans le cas où l’un des mots ne figure pas dans le carnet, le mot en français va figurer dans la phrase en anglais mais entre deux accolades.

La phrase traduite doit être suivie par un message de succès ou un message d’échec indiquant le nombre de mots non traduits.

NB : On suppose que la phrase ne contient ni un espace au début, ni un espace à la fin, ni des espaces superflus(un seul espace sépare deux mots).

Exemple : Pour N=5, le carnet sera présenté comme suit :

FRecolejelibresuisun
 01234
ENGSchoolifreeama

FR contient les mots en français et ENG contient les mots en anglais.

  • Pour la phrase « ecole libre »,  le résultat affiché sera : « school free : Traduction totale « 
  • Pour la phrase « je suis un etre libre », le résultat affiché sera : « i am a {etre} free : Traduction partielle, 1 mot(s) non traduit(s) »

On vous demande d’élaborer :

  1. un algorithme du programme principal, solution à ce problème, en le décomposant en modules,
  2. l’algorithme de chaque module.
'); printWindow.document.close(); printWindow.print(); printWindow.close(); }

Compétences évaluées : définition de fonctions et manipulation de variables de type numérique.

Ce sujet type bac met l’accent sur la structuration d’un algorithme à travers des fonctions bien définies. L’élève doit analyser et traiter des variables numériques en respectant les contraintes de calcul et de validation. Ce type d’exercice développe la rigueur dans l’écriture algorithmique et la compréhension des paramètres, des valeurs retournées et des traitements conditionnels.

Sujet n°2

Exercice 1 :

Soit l’algorithme de la fonction « Traitement » suivante :

FONCTION Traitement (n : entier) : entier

r 0

Répéter

r r + n MOD 10

n n DIV 10

Jusqu’à (n = 0)

retourner r

FIN

  1. Quelle est la valeur retournée par la fonction « Traitement » pour n = 125 ?   …………………………………
  2. Quelle est la valeur retournée par la fonction « Traitement » pour n = 458 ? …………………………………
  3. Donner le rôle de cette fonction :    ………………………………………………………………………………………………………..……………………………………………….

Exercice 2 :

Répondre par Vrai si la proposition est correcte ou par Faux dans le cas contraire.

PropositionRéponse
Un tableau de réels peut être rempli par des entiers. 
Le compteur d’une structure répétitive complète doit être de type scalaire. 
Les opérateurs % et // peuvent être appliqués sur les nombres réels. 
Efface (S, long(S)-1,2) efface les deux derniers caractères de la chaîne ch. 

Problème :

Un entier n de 4 chiffres est dit valable, si ses trois derniers chiffres sont des multiples de son chiffre des milliers.
Exemple : L’entier 2648 est valable car son chiffre des milliers est 2 et il est suivi par les chiffres 6, 4 et 8 qui sont tous multiples de 2.
On se propose d’écrire un programme qui permet de lire un entier positif n composé de 4 chiffres, puis d’afficher s’il est valable ou non.

Exemple 1 : Si n= 2888 alors le programme affichera : Cet entier est valable.

Exemple 2 : Si n= 2179 alors le programme affichera : Cet entier n’est pas valable.

Questions

  1. Un algorithme du programme principal, solution à ce problème, en le décomposant en modules,
  2. L’algorithme de chaque module.
'); printWindow.document.close(); printWindow.print(); printWindow.close(); }

Compétences évaluées : structures répétitives et traitement des nombres premiers.

Inspiré des exercices classiques du bac informatique, ce sujet entraîne l’élève à utiliser efficacement les boucles pour analyser des propriétés numériques. Le traitement des nombres premiers exige une logique précise et un contrôle rigoureux des conditions. Il s’agit d’un excellent entraînement pour maîtriser les structures itératives et optimiser les algorithmes de vérification mathématique.

Sujet n°3

Exercice :  

Afin de réaliser les tâches décrites dans la première colonne du tableau suivant, un élève fournit les propositions suivantes. Remplir la colonne « Correction » en apportant les corrections nécessaires pour que ces propositions soient les plus adéquates relativement au choix de la structure itérative.

TâchePropositionCorrection
Saisir un entier positif nwhile (n > 0) :
n= int(input (« Saisir un entier positif : »))

……………………………………………..

……………………………………………..

……………………………………………..

Chercher la valeur maximale dans un tableau T de taille n. i ← 1
Max ←T[1]
Répéter
Si (T [i]< Max) alors
Max ←T[i]
Fin Si Jusqu’à (i > n)

…………………………………………..

…………………………………………..

……………………………………………..

……………………………………………..

Vérifier l’existence d’un caractère C dans un tableau T de n caractères.

Trv = False

for i in range(n) :

if (T[i] = C) :

trv =True

else :

Trv = False

……………………………………………..

……………………………………………..

……………………………………………..

……………………………………………..

Exercice 2 :

Le jeu de dominos est un jeu chinois qui comporte 28 dominos. Un domino est formé de 2 parties.

Chaque partie contient de 0 à 6 points.

Une suite de dominos est dite valide lorsque la 2 partie d’un domino est identique à la I partie du domino voisin.

La suite de dominos de la est invalide car la 2ème partie du 2ème domino (6 points) est différente de la partie du domino voisin (2 points).

          Afin d’automatiser ce jeu, on se propose d’utiliser un tableau D d’entiers. Chaque case contient une valeur comprise entre O et 6. Ainsi, le tableau correspondant à la Figure I est représenté comme suit : Les paires (D[1],D[2]), (D[3],D[4]), (D[5],D[6]), (D[7],D[8]), représentent une suite de 4 dominos

Questions :

1) Présenter, sous forme d’un tableau D, la suite de dominos de la

2) Ecrire un algorithme nommé qui permet de :

      • Saisir la taille n du tableau D, avec n un entier pair et 4n
      • Remplir le tableau D par n entiers compris entre O et 6.
      • Vérifier si la suite de dominos représentée par le tableau D est valide ou invalide puis afficher un message adéquat.

3) Dresser le tableau de déclaration des Objets utilisés dans l’algorithme Suite_Dominos.

Problème :

Un nombre M est dit « nombre premier sûr », s’il est un nombre premier de la forme 2*p+1 avec p un nombre premier.

Exemples :
  • Si M = 11, alors M est un nombre premier sûr. En effet, 11 est premier et il peut s’écrire sous la forme 2*p+1 où p = 5 qui est un nombre premier.
  • Si M = 31, alors M n’est pas un nombre premier sûr. En effet, 31 est premier et il peut s’écrire sous la forme 2*p+1 où p = 15 qui n’est pas un nombre premier.

NB : Un nombre entier supérieur à 1 est dit premier s’il n’est divisible que par 1 et par lui-même.

On se propose d’écrire un programme qui permet de :

  1. Remplir un tableau T par N entiers strictement supérieurs à 1 (avec 10 ≤ N < 45).
  2. Trier dans l’ordre croissant les éléments premiers sûrs du tableau T suivis du reste des éléments sans tri.
  3. Afficher le tableau T résultant.

Exemple : Pour N = 10 et le tableau T suivant :

le contenu du tableau suivant :

T52559231347311007107
 0123456789

Le programme affichera

T57234759107251331100
 0123456789

                                                      Eléments premiers sûrs triés                                                                              Eléments non premiers sûrs

On vous demande d’élaborer :

    1. un algorithme du programme principal, solution à ce problème, en le décomposant en modules,
    2. l’algorithme de chaque module
'); printWindow.document.close(); printWindow.print(); printWindow.close(); }

Compétences évaluées : manipulation de chaînes de caractères, génération aléatoire et gestion de tableaux sans répétition.

Ce sujet propose une combinaison intéressante entre traitement textuel et manipulation de données numériques. L’élève doit appliquer une transformation sur une chaîne, exploiter une fonction aléatoire et construire un tableau de nombres distincts. Ce type d’exercice développe la précision dans les traitements conditionnels et la maîtrise des structures de contrôle.

Sujet n°4

Exercice 1 :

Une translation d’ordre n appliquée à une chaîne de caractères s, consiste à déplacer les n derniers caractères de la chaîne vers son début.

Exemples :

  • Pour ch = « bonjour » et n = 1, il s’agit de déplacer le dernier caractère de ch vers le début, ce qui donne après translation ch = « rbonjou »
  • pour ch = « bonjour » et n = 4, il s’agit de déplacer les 4 derniers caractères de ch vers le début, ce qui donne après translation ch = « jourbon »

Questions

  1. Pour s = « bac_info », donner le résultat de la translation d’ordre :

n=6 ……………………………………………………………………………………………………………………..

n=8 ……………………………………………………………………………………………………………………..

  1. Ecrire un algorithme nommé Translation qui permet de :
      • Lire une chaine s non vide de 10 caractères au maximum.
      • Lire l’ordre de translation n (n est un entier compris entre I et la longueur de la chaine s).
      • Appliquer le principe de la translation d’ordre n sur la chaine s puis afficher le résultat.
  1. Dresser le tableau de déclaration des objets utilisés dans l’algorithme Translation

Exercice 2 :

Dans le cadre des jeux Homme-Machine, les programmeurs ont souvent recours à un module permettant de simuler l’interaction de la machine. Comme exemple, nous vous proposons la fonction Alea(n) qui permet de générer automatiquement un nombre aléatoire entre O et n-l avec n un entier naturel non nul.

Exemple: Alea (10) retourne un entier compris entre 0 et 9.

En se basant sur la définition de la fonction Alea, compléter le tableau ci-dessous en écrivant le traitement adéquat, faisant appel à cette fonction, afin de répondre à chacune des situations du jeu proposé.

Le jeu de chance pile ou face :
On jete une pièce de monnaie.
Dont Pile symbolisée par 1 et face symbolisée par O.

Il s’agit de simuler le résultat de la lancée d’une pièce de monnaie. Le résultat est affecté à une variable P

P=aléa( ……………………………………………

Le ieu de dé :
un dé contient 6 facettes numérotées de 1 à 6.
Il s’agit de simuler le résultat de la lancée d’un dé.
Le résultat est affecté à une variable D.

D ← ………………………..

Le jeu Vache-Taureau:
il s’agit de proposer un entier positif de 4 chiffres à deviner par l’ utilisateur.
Il s ‘agit de simuler la génération de l’entier VT à deviner.

VT ← ………………………..

Le jeu de Scrabble :
l’ordinateur effectue un tirage de 7 lettres majuscules aléatoires.
rappel: Nous disposons de 26 lettres de « A » à « Z » avec ASCII 65
Il s ‘agit de simuler le tirage de 7 lettres majuscules à placer dans un tableau T.

…………………………………………………………………….………………………..

……………………………………………………………………………………………….

………………………………………………………………………………………………

.
Problème :

On désire remplir un tableau T par n entiers distincts puis de former et d’afficher un autre tableau Res qui va contenir les n entiers du tableau T classés en ordre croissant selon le principe suivant : Pour chaque élément du tableau T

  1. Déterminer le nombre Nbr d’éléments de T qui lui sont inférieurs.
  2. Placer cet élément dans la position Nbr, du tableau Res

.

Exemple : pour les éléments du tableau suivant :

T3140917584
 01234567
Res 3      
 01234567

L’entier T[1] = 3 à 1 élément qui lui est inférieur (0), il sera placé dans la position 1 du tableau Res.

L’entier T[2] = 14 a 6 éléments qui lui sont inférieurs (3, O , 9 , 5 , 8 et 4), il sera

Res 3    14 
 01234567

placé dans la position 6 du tableau Res. Ainsi de suite pour les autres éléments

Le tableau Res aura les éléments placés dans un ordre croissant comme suit :

Res0345891417
 01234567

Travail demandé :

  • un algorithme du programme principal, solution à ce problème, en le décomposant en modules,
      1. l’algorithme de chaque module.
'); printWindow.document.close(); printWindow.print(); printWindow.close(); }

Compétences évaluées : analyse d’un nombre heureux, traitement simultané de deux tableaux et modularisation par fonctions.

Ce sujet inspiré du bac met en œuvre une logique algorithmique progressive. L’élève doit comprendre le principe du nombre heureux tout en manipulant deux tableaux interdépendants. L’utilisation de fonctions permet de structurer la solution et de clarifier les traitements successifs, conformément aux exigences méthodologiques de l’examen.

Sujet n°5

Exercice 1:

Fonction Inconnu (Ch1, Ch2 : Chaîne) : ...................................
Début
Ch ← ""
Pour i de 0 à Long(Ch1) -1 Faire
Si (Pos (Ch1[ i ], Ch2) -1) et (Pos (Ch1[ i ], Ch) = -1) Alors
Ch ← Ch + Ch1[ i ]
FinSi
FinPour
Retourner Ch
Fin
  1. Compléter l’entête de la fonction intitulée  » Inconnu « , définie en-dessus.
  2. Compléter le tableau de déclaration des objets locaux.
 

T . D . O . L

Objets

Nature / Type

  

3) Compléter la colonne « Résultat affiché » du tableau ci-dessous par le résultat affiché pour chaque appel de la fonction « Inconnu« .

Instruction

Résultat Affiché

Écrire (Inconnu( « Réussite » , « Succès » ))

……………………………………………

Écrire (Inconnu( « Sciences » , « Informatique » ))

…………………………………………….

Écrire (Inconnu( « bac », « BAC2024 » ))

……………………………………………..

4) En déduire le rôle de cette fonction.

…………………………………………………………………………………………………………………………………………………………………….

Exercice 2:

Un nombre heureux est un entier positif, qui, lorsqu’on additionne les carrés de chacun de ses chiffres, puis on additionne les carrés des chiffres de la somme obtenue et ainsi de suite, on obtient un entier à un seul chiffre égal à 1.

Exemple 1 :

Exemple 2 :

Pour l’entier 319 on a : 32+12+92=91

9²+1²=82

8²+2²=68

6²+8²=100

1²+0²+0²=1

🡪 On a obtenu un entier à un seul chiffre qui est égal à 1 ; donc l’entier 319 est Heureux.

Pour l’entier 85 on a : 8²+5²=89

8²+9²=145

1²+4²+5²=42

4²+2²=20

2²+0²=4

🡪 On a obtenu un entier à un seul chiffre mais qui est différent de 1 ; donc l’entier 85 n’est pas Heureux.

Questions:

  1. Pour chacune des propositions ci-dessous, mettre dans la case correspondante la lettre V si la réponse est correcte ou la lettre F dans le cas contraire.
  2. La ou les suite(s) d’instructions qui permet(tent) de calculer la somme S des carrés des chiffres d’un entier X (avec X ≥ 10) est (sont) :

S ← 0

Répéter

S ← S+ (X mod 10) * (X mod 10)

X ← X div 10

Jusqu’à (X=0)

Ch ← Convch(X)

S ← 0

Pour i de 0 à long(ch)-1 Faire

S ← Valeur(Ch[i]) * Valeur(Ch[i])

FinPour

Ch ← Convch(X)

S ← Valeur (Ch[0]) * Valeur (Ch[0])

Pour i de 1 à long(ch)-1 Faire

S ← S+Valeur(Ch[i]) * Valeur (Ch[i])

FinPour

S ← 0

Tant que (X ≠ 0) Faire

S ← S+ (X mod 10)*(X mod 10)

X ← X div 10

FinTant que

  1. L’entête de la fonction SommeCarre qui permet de déterminer la somme S des carrés des chiffres d’un entier X est :

Fonction SommeCarre (X : Entier ; S : Entier)

Fonction SommeCarre (X : Entier) : S

Fonction SommeCarre (X : Entier) : Entier

Fonction SommeCarre (S : Entier) : Entier

  1. Développer l’algorithme du module Heureux permettant de vérifier si un entier N (avec N ≥ 10) est Heureux ou non. (N.B. Il s’agit d’utiliser la fonction SommeCarre).

Problème:

Structure de championnat de Tunisie de football :

La première division est composée de N clubs sélectionnés à la fin de chaque saison. Le club champion et le vice-champion sont qualifiés pour la Ligue des champions de la CAF et le troisième pour la coupe de la CAF tandis que les deux derniers du classement sont relégués en Ligue II.

On désire écrire un programme simulant la structure de championnat de Tunisie de football qui permet de :

  1. Remplir un tableau C par N noms distincts de clubs, avec 9≤N≤16 sachant que le nom d’un club est une chaine de caractère non vide composée uniquement par des lettres alphabétiques majuscules.
  2. Remplir un tableau P par N points de clubs compris entre 10 et 80.
  3. Afficher :
    • Les 2 clubs qualifiés pour la Ligue des champions de la CAF
    • Le club qualifié pour la coupe de la CAF
    • Les 2 clubs relégués en Ligue II.

Exemple : pour N=12 et les deux tableaux C et P suivants

C

ASM

CSS

SG

ESS

JSK

CAB

CA

ESM

OB

CSHL

EST

EOSB

P

22

52

36

57

56

20

44

60

70

19

50

68

Le programme affichera :

Clubs qualifiés pour la Ligue des champions de la CAF : OB et EOSB

Club qualifié pour la coupe de la CAF : ESM

Clubs relégués en Ligue II: CSHL et CAB

Travail demandé:

1/ Ecrire un algorithme du programme principal, solution à ce problème, en le décomposant en modules.

2/ Ecrire un algorithme pour chaque module envisagé.

'); printWindow.document.close(); printWindow.print(); printWindow.close(); }

Compétences évaluées : calcul de suites arithmétiques, utilisation des boucles et tri d’un tableau.

Ce sujet type bac combine raisonnement mathématique et traitement algorithmique. L’élève applique les formules des suites arithmétiques tout en exploitant les structures répétitives pour générer et trier des valeurs. Cet exercice permet de consolider la logique séquentielle et la compréhension des algorithmes de tri dans un contexte proche de l’examen national.

Sujet n°6

Exercice 1 :

Développer un module qui permet de calculer et afficher la somme S suivante  :

                               S = 1 + x/1! +x²/2! + … + xn/n!

.……………………………………………………………………………………

……………………………………………………………………………………

……………………………………………………………………………………

……………………………………………………………………………………

Exercice 2 :

Soit la séquence algorithmique suivante, où x est un entier naturel : :

nb ← 1
TantQue (x div 10) ≠ 0 Faire
        nb ← nb + 1
           x ← x div 10
Fin TantQue

Question:

1. Calculer la valeur finale de nb pour les valeurs suivantes de x :
x = 5403,  nb= ………..
x = 176,     nb= ………..
x = 3,         nb= ………..
2. Donner le rôle de cette séquence.
3. Ecrire une séquence algorithmique équivalente à celle donnée précédemment sans utiliser une structure
itérative

Problème :

            Ecrire un algorithme d’un programme intitule Tri permettant de trier un tableau T de N entiers distincts (5 < N < 20) selon le principe suivant :

Pour chaque élément du tableau T :
            •   Déterminer le nombre d’éléments qui lui sont inférieurs.
            •   En déduire sa position au sein d’un autre tableau résultat appelé R.

Exemple : Pour un tableau T de 10 éléments :

Exemple : Pour un tableau T de 10 éléments :
1) Quatre valeurs sont inférieures au premier élément du tableau T. Cet élément sera donc placé à la position 4 du tableau R.

T15101820235825419

15 > 10, 15 > 5, 15 > 8 et 15 > 4

R    15    

2) Trois valeurs sont inférieures au deuxième élément du tableau T. Cet élément sera donc placé à la position 3 du tableau R.

T15101820235825419

10 > 5, 10 > 8 et 10 > 4

R   1015    

3) Cinq valeurs sont inférieures au Troisième élément du tableau T. Cet élément sera donc placé à la position 5 du tableau R.

T15101820235825419

18 > 15, 18 > 10 , 18 > 5, 18 > 8 et 18 > 4

R   101518   


à la fin

R45810151819202325

Travail demandé:

  1. Ecrire un algorithme modulaire solution 
  2. Ecrire l’algorithme de chaque module envisagé et dresser les différents TDO.
'); printWindow.document.close(); printWindow.print(); printWindow.close(); }

Compétences évaluées : conception de fonctions et élaboration d’un algorithme de génération sécurisée.
Ce sujet s’inspire des problématiques modernes liées à la sécurité informatique. L’élève doit structurer un algorithme capable de générer un mot de passe selon des critères précis. L’exercice développe la modularité, la validation des conditions et la rigueur dans la manipulation des caractères, compétences essentielles au bac informatique.

Sujet n°7

Exercice 1 :

Soit l’algorithme du module inconnu suivant :

  • Compléter l’entête de la fonction par le type de résultat convenable :
  • Déduire le tableau de déclaration des objets utilisés de cette fonction.
  • Exécuter le module manuellement et déterminer pour chaque cas la valeur de résultat retournée. 

X=123456.  la valeur retournée : ………………………….

i

        

aux

        

sp

        

si

        

X=28109     la valeur retournée : ………………………….

i

        

aux

        

sp

        

si

        
  • Déduire le rôle de cette fonction

………………………………………………………………………………………

  • Réécrire la structure surligné dans la fonction inconnu d’une autre façon.

.……………………………………………………………………………………

……………………………………………………………………………………

……………………………………………………………………………………

……………………………………………………………………………………

Problème :

               Dans le cadre de la réforme des chèques en Tunisie, la banque centrale a lancé nouvelle plateforme électronique de gestion des chèques « Tunichèque ». Pour bénéficier des services de cette plateforme, l’utilisateur doit créer un compte en fournissant son mail, son numéro de téléphone et un mot de passe.

On vous propose alors d’écrire un algorithme d’un programme « force_mot_de_passe » qui permet de saisir une chaine mp de taille minimale égale à 8 puis évaluer et afficher la force de ce mot de passe. La force d’un mot de passe varie, selon la valeur d’un score s, de « Très faible » jusqu’à « Très fort » :

  • Si le score < 20, la force est « Très faible »
  • Score < 40, la force est « Faible »
  • Score < 60, la force est « Moyen »
  • Score < 80, la force est « Fort »
  • Sinon la force est « Très fort »

Le score se calcule comme suit :

  • (Nombre total de caractères – nombre de lettres majuscules) *2
  • (Nombre total de caractères – nombre de lettres minuscules) *3
  • Nombre de caractères non alphabétiques * 5

Exemple : Pour le mot de passe « 2@TechInfo_2025« 

Le score = (15-2) *2 + (15-6) *3 + 7*5 = 94

ainsi la force de ce mot de passe est « Très Fort« 

Car :  à   Le nombre total de caractères = 15

à   Le nombre de lettres majuscules = 2

à   Le nombre de lettres minuscule = 6

Travail demandé:

  1. Ecrire un algorithme d’un programme principal
  2. Ecrire l’algorithme de chaque module
  3. Dresser les différents TDO
'); printWindow.document.close(); printWindow.print(); printWindow.close(); }

Compétences évaluées : calcul du factoriel, utilisation des boucles et tri parallèle de deux tableaux.

Ce sujet met en œuvre plusieurs notions fondamentales de l’algorithmique. L’élève doit combiner calcul mathématique et traitement simultané de données. Le tri coordonné de deux tableaux exige une attention particulière à la cohérence des indices, renforçant ainsi la précision et la maîtrise des structures itératives exigées au bac.

Sujet n°8

Exercice 1: 

Compléter le tableau ci-dessous en indiquant si la syntaxe algorithmique de chacune des fonctions est valide ou invalide. Expliquer l’erreur en cas d’invalide.

Algorithme

Mettre une

(×)

Justification

Fonction F1(a,b:entier ): entier Début

Tant que (a ≠ b) faire Si ( a > b ) alors

a ← a – b

Sinon

b ← b – a

Fin Si

Fin Tant que

Fin

  • Valide
  • Invalide

…………………………………………………………………

…………………………………………………………………

…………………………………………………………………

…………………………………………………………………

…………………………………………………………………

…………………………………………………………………

Fonction F2(N:entier): chaine

Début

RES ← 1

Pour de à faire

RES ← RES * i Fin Pour Retourner RES

Fin

  • Valide
  • Invalide

…………………………………………………………………

…………………………………………………………………

…………………………………………………………………

…………………………………………………………………

…………………………………………………………………

Fonction F3(N:entier): booléen

Début

Nb ← 2

Pour de à N div 2 faire

Si N mod i = 0 alors

Nb ← Nb + 1

Fin Si

Fin Pour

Retourner Nb

Fin

  • Valide
  • Invalide

…………………………………………………………………

…………………………………………………………………

…………………………………………………………………

…………………………………………………………………

…………………………………………………………………

…………………………………………………………………

Exercice 2: 

Soit le code python de la fonction « inconnue » :

def inconnue(c1,c2,ch):

while ch.find(c1)!=-1:

p=ch.find(c1)

ch=ch[:p]+c2+ch[p+1:]

return ch

Questions :
  1. Donner la valeur retournée par la fonction pour :

c1= »r » c2= »m » ch= »raison » ……………………………….

c1= »t » c2= »b » ch= »tonton » ……………………………….

  1. Quel est le rôle de la fonction « inconnue »

……………………………………………………………………………………………………………………….

……………………………………………………………………………………………………………………….

  1. Quel est l’appel de la fonction « inconnue » qui permet de supprimer toutes les occurrences du caractère « i » dans la chaîne « initiation »

……………………………………………………………………………………………………………………….

……………………………………………………………………………………………………………………….

  1. Proposer une autre version de la fonction « inconnue » sans utiliser la méthode prédéfinie « find » :

……………………………………………………………………………………………………………………….

……………………………………………………………………………………………………………………….

……………………………………………………………………………………………………………………….

……………………………………………………………………………………………………………………….

……………………………………………………………………………………………………………………….

……………………………………………………………………………………………………………………….

……………………………………………………………………………………………………………………….

……………………………………………………………………………………………………………………….

Exercice 3: 

En mathématiques, la factorielle d’un entier naturel n, notée n! est définie comme le produit des entiers de 1 à n.

Par exemple 7! = 1 × 2 × 3 × 4 × 5 × 6 × 7 = 5040.

La primorielle de ne conserve, dans le produit définissant la factorielle, que les nombres premiers.

Elle est notée n# ou P(n). Par exemple P(7) = 2 × 3 × 5 × 7 = 210.

Ecrire une fonction qui retourne la primorielle d’un un entier passé en paramètre.

………………………………………………………………………………………………………………………………………………….

………………………………………………………………………………………………………………………………………………….

………………………………………………………………………………………………………………………………………………….

………………………………………………………………………………………………………………………………………………….

………………………………………………………………………………………………………………………………………………….

………………………………………………………………………………………………………………………………………………….

………………………………………………………………………………………………………………………………………………….

………………………………………………………………………………………………………………………………………………….

………………………………………………………………………………………………………………………………………………….

………………………………………………………………………………………………………………………………………………….

………………………………………………………………………………………………………………………………………………….

………………………………………………………………………………………………………………………………………………….

………………………………………………………………………………………………………………………………………………….

………………………………………………………………………………………………………………………………………………….

………………………………………………………………………………………………………………………………………………….

………………………………………………………………………………………………………………………………………………….

………………………………………………………………………………………………………………………………………………….

………………………………………………………………………………………………………………………………………………….

………………………………………………………………………………………………………………………………………………….

………………………………………………………………………………………………………………………………………………….

………………………………………………………………………………………………………………………………………………….

………………………………………………………………………………………………………………………………………………….

………………………………………………………………………………………………………………………………………………….

………………………………………………………………………………………………………………………………………………….

………………………………………………………………………………………………………………………………………………….

Problème: 

En Tunisie, le BAC Sport est un examen pratique d’éducation physique et sportive qui précède les examens théoriques du baccalauréat. Dans cet examen un bachelier est évalué obligatoirement dans une épreuve de gymnastique ainsi que dans deux autres épreuves au choix parmi: le saut, le lancement du poids et la course rapide.

Durant le déroulement de l’examen, les notes de chaque élève sont envoyées par les centres d’examen via un réseau sécurisé ensuite rassemblées sur un ordinateur central où seront sauvegardées dans un tableau T1 de type Tab1 et de taille N.

Chaque case du tableau contient une chaîne qui regroupe les notes d’un élève sous la forme:

« Num*G:Note|S:Note|L:Note|C:Note »

Num désigne le numéro de l’élève sur 6 chiffres et les lettres GSL, et désignent respectivement Gymnastique, Saut, Lancement du poids, et Course rapide.

Exemple :

T1

« 061452*G:18.50|S:16.00|L:0.0|C:19.25 »

« 083311*G:16.00|S:15.00|L:19.00|C:0.0 »

Travail demandé :

Ecrire une solution algorithmique modulaire d’un programme qui permet de :

  1. Remplir à partir du tableau T1 (déjà rempli), un tableau T2 de type Tab2 contenant la moyenne de chaque élève en utilisant la formule suivante :

Moy = ( NoteG + NoteS + NoteL + NoteC ) / 3

  1. Ranger les deux tableaux T1 et T2 selon un ordre décroissant de la moyenne.
  2. Afficher les données des élèves sous la forme : Rang i : Num ( Moy ) Exemple d’affichage : Rang 1 : 479802 ( 18.50 )

Rang 2 : 061452 ( 17.92 )

Rang 3 : 083311 ( 16.67 )

N.B : Il n’est demandé ni de lire le nombre d’élèves N, ni de remplir le tableau T1

'); printWindow.document.close(); printWindow.print(); printWindow.close(); }
Retour en haut