|
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 A % B |
|
Quotient de la division de A par B A//B |
|
A=B (égalité) A==B |
|
A ≠ B A != 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 |
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_1 | Séquence_2 | Sé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équence | Valeur 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.
- 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- 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 :
| FR | ecole | je | libre | suis | un |
| 0 | 1 | 2 | 3 | 4 | |
| ENG | School | i | free | am | a |
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 :
- un algorithme du programme principal, solution à ce problème, en le décomposant en modules,
- l’algorithme de chaque module.
Solution 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 d’instructions algorithmiques suivantes :
c ← 0
Pour k de 1 à n faire
Si (n mod k = 0) alors
c ←c+1
Fin Si
Fin Pour
Ecrire (c) | c ← 0
Pour k de 2 à (n div 2) faire
Si (n mod k = 0) alors>
c ←c+1
Fin Si
Fin Pour
Ecrire (c) | c ← 0
Pour k de 2 à (n-l) faire
Si (n mod k = 0) alors
c ←c+1
Fin Si
Fin pour
Ecrire (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équence | Valeur de la variable c |
| 1 | 3 |
| 2 | 1 |
| 3 | 1 |
- Donner le numéro de la séquence qui ne permet pas d’afficher le nombre de diviseurs. Justifier votre réponse. 2
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.
- Compléter la séquence algorithmique présentée ci-dessous afin de vérifier l’existence d’un nom donné NOM dans un tableau T non vide.
Algorithme recherche
Début
Ecrire (« Donner le nom à chercher
Lire (nom)
Existe ← Faux
i ← 0
Répéter
Si (T[i] = NOM) alors Existe ← Vrai
Sinon i ← i + 1
Finsi
Jusqu’à (Existe) ou ( i > n )
Si (Existe) alors
Ecrire (« Le nom recherché existe dans ce tableau. » )
Sinon
Ecrire (« Le nom recherché n’existe pas dans ce tableau. « )
Finsi
Fin
- 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.
Algorithme recherche
Début
Ecrire (« Donner le nom à chercher
Lire (nom)
nb ← 0
Pour i de 0 à n faire
Si (T[i] = NOM) alors
Ecrire (num)
Finsi
Finpour
Fin
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.
Algorithme solution
Début
Ecrire (« Donner le nombre de jours: « ),Lire (n)
Ecrire (« Donner le nombre de personnes: « ),Lire (x)
e← 1
Pour i de 1 à n faire
p ← 1
f ← 1
pour j de 1 à i faire
p ← p*x
f ← f * j
fin pour
e← e+p/f
Finpour
Ecrire (« La propagation de l’épédimie pendant: « , n, » jours vaut : », e)
Fin
