Un programme manipule des données stockées dans la mémoire centrale. Les types numériques incluent les
entiers (int $\mathbb{Z}$) et les réels (float $\mathbb{R}$).
📌 Règle Mnémonique PEMDAS : Ordre de priorité des opérations
En informatique comme en mathématiques, les expressions numériques sont évaluées selon l'ordre de priorité
PEMDAS :
Parenthèses (
)
Exposants / Puissance **
Multiplication *
Division / , // ,
%
Addition +
Soustraction -
PEMDAS
Opération
Priorité
Algorithme
Python
Exemple
P
Parenthèses
1 (Max)
( )
( )
(1 + 5) * (3 - 5) → -12
E
Exposants / Puissance
2
Puissance(x, n)
**
2 ** 3 → 8
M
Multiplication
3
*
*
2 * 3 → 6
D
Division réelle
3
/
/
5 / 2 → 2.5
Division entière
3
div
//
5 // 2 → 2
Reste division (Modulo)
3
mod
%
5 % 2 → 1
A
Addition
4
+
+
5 + 3 → 8
S
Soustraction
4
-
-
5 - 3 → 2
b. Partie entière et partie décimale
c. Opérateurs de division & Division euclidienne
d. Les fonctions prédéfinies sur les nombres
Algorithme
Python
Description
Exemple
Ent(x)
int(x)
Retourne la partie entière
Ent(5.75) ⟶ 5
Arrondi(x)
round(x)
Retourne l'entier le plus proche (entier pair si .5)
round(3.5) ⟶ 4
Racine(x)
sqrt(x) (from math)
Retourne la racine carrée d'un nombre positif
sqrt(25) ⟶ 5.0
Abs(x)
abs(x)
Retourne la valeur absolue de x
abs(-4) ⟶ 4
Aléa(a, b)
randint(a, b) (from random)
Retourne un nombre aléatoire dans [a, b]
randint(1, 6) ⟶ 4
2. Le type booléen
Une variable booléenne ne peut prendre que la valeur Faux ou Vrai
(False / True en Python).
1. Fonctions logiques de base (NON, ET, OU) & Portes logiques
En informatique et en électronique numérique, les opérations logiques fondamentales sont concrétisées par des
portes logiques (symboles normalisés ANSI / IEEE d'origine américaine et
CEI / IEC européenne).
⚡ Circuit en Série : Allumée
uniquement si x ET y sont tous les deux Fermés (1).
Fonction OU (Disjonction)x or y / x ou y
Équation : S = x + yPython : x or y
Schémas à porte logique :
x
y
Sortie S = x ou y
0
0
0 (Faux)
0
1
1 (Vrai)
1
0
1 (Vrai)
1
1
1 (Vrai)
⚡ Circuit en Parallèle : Allumée
dès qu'au moins x OU y est Fermé (1).
2. ⚡ Simulation Interactive des Portes Logiques (Circuits & Diodes)
Testez chaque circuit indépendamment des autres : cliquez directement sur les
entrées (0 ou 1) de chaque porte logique (ou sur ses boutons) pour faire basculer son état et
observer la diode de sortie en temps réel !
1. Opérateur NONnon x
Schéma & EntréeCliquez sur x
⚡ Diode ALLUMÉE (Vrai)
not (False) ⟶ True
2. Opérateur ETx et y
Schéma & EntréesCliquez sur x ou y
⚡ Diode ÉTEINTE (Faux)
False and False ⟶ False
3. Opérateur OUx ou y
Schéma & EntréesCliquez sur x ou y
⚡ Diode ÉTEINTE (Faux)
False or False ⟶ False
3. 🔢 Ordre d'évaluation des opérateurs de Comparaison et des opérateurs logiques
Priorité
Catégorie d'opérateurs
Algorithme
Python
Exemple d'évaluation
1 (Max)
Parenthèses
( )
( )
(5 > 2) et (3 < 4) → Vrai
2
Opérateurs Arithmétiques
+ , - , * , / , mod , div
+ , - , * , / , % , //
5 + 3 > 7 → 8 > 7 → Vrai
3
Opérateurs de Comparaison
= , ≠ , > , ≥ , < , ≤
== , != , > , >= , < , <=
x == 5 , age >= 18
4
NON Logique (Négation)
non
not
not (5 > 2) → False
5
ET Logique (Conjonction)
et
and
True and False → False
6 (Min)
OU Logique (Disjonction)
ou
or
True or False → True
3. Les types textuels
Les données textuelles sont stockées, en algorithmique, dans des variables de type :
Caractère ;
Chaîne.
En Python, on dispose uniquement du type str.
a. Le type caractère
i. Présentation
Le type caractère représente un seul caractère qui peut être :
Une lettre : majuscule ("A", "B", ...) ou minuscule
("a", "b", ...)
Un chiffre : "0", "1", "2", ...,
"9"
Un symbole : "!", "\"", "#", "$",
"%", ...
ii. Table ASCII
Dans la mémoire de l'ordinateur, un caractère est représenté par son code ASCII
(American Standard Code for Information Interchange). Ainsi, chaque caractère possède un code (un
nombre) correspondant :
Important : En algorithme, il n'y a pas de fonction minus(car).
Pour convertir une lettre majuscule car en minuscule, on peut écrire : chr(ord(car) + 32)
b. Le type Chaîne
i. Présentation
Une Chaîne de caractères est la succession de n caractères ASCII ($n \ge 0$).
Si $n$ est nulle ($n = 0$), on parle d'une Chaîne vide :
ch ← "" // Chaîne vide
On peut accéder au $i^e$ caractère ($0 \le i < n$) d'une Chaîne ch en
utilisant la notation : ch[i]
Pour concaténer (coller) deux Chaînes, on utilise l'opérateur +
:
ii. Les fonctions prédéfinies sur les Chaînes
Algorithme
Python
Description
Exemple
long(ch)
len(ch)
Calcule la longueur de la Chaîne ch.
long("BAC26") → 5 long("") → 0
Pos(ch1, ch2)
ch2.find(ch1)
Retourne la position (indice) de la 1ère occurrence de ch1 dans ch2 (-1 si non trouvée).
Pos("26", "BAC26") → 3 Pos("Hi", "BAC26") → -1
ConvCh(x)
str(x)
Convertir une valeur numérique x en Chaîne.
ConvCh(10) → "10" ConvCh(17.5) → "17.5"
Valeur(ch)
int(ch) float(ch)
Convertit une Chaîne en une valeur numérique, sinon provoque une erreur.
Valeur("10") → 10 Valeur("17.5") → 17.5
EstNum(ch)
ch.isdecimal()
Vérifie si la Chaîne ch est composée uniquement de chiffres.
EstNum("10") → Vrai EstNum("2k") → Faux
sous_chaîne(ch, d, f)
ch[d:f]
Extrait de la Chaîne ch les caractères situés entre la position d (incluse) et f (non incluse).
sous_chaîne("BAC26", 3, 5) → "26"
effacer(ch, d, f)
ch[:d] + ch[f:]
Efface de la Chaîne ch les caractères situés entre la position d (incluse) et f (non incluse).
effacer("BAC26", 3, 5) → "BAC"
majus(ch)
ch.upper()
Convertit la Chaîne ch en majuscules.
majus("bac 26") → "BAC 26"
Exercices Interactifs
Exercice 1 – Opérateurs numériques
Compléter le tableau ci-dessous (Expression Python équivalente, Résultat et Type) :
💡 Afficher les indices de résolution
📌 Règles et astuces pour l'Exercice 1 :
Division réelle (/) : En Python, la division simple produit toujours un flottant (float). Ainsi, 12 / 4 donne 3.0 (et non 3).
Division entière (div → //) : Renvoie le quotient entier (ex : 11 // 5 donne 2, de type int).
Reste de la division (mod → %) : Calcule le reste de la division euclidienne (ex : 11 % 4 donne 3 car $11 = 4 \times 2 + 3$, type int).
Opérateurs relationnels en Python :
Égalité : == (ex : 1+2 == 3-0).
Différence : != (pour $\ne$).
Inférieur ou égal : <= (pour $\le$).
Appartenance : in avec une liste entre crochets (ex : 5 in [12, 6, -3, 5, 7]).
Type booléen (bool) : Le résultat d'une comparaison est un booléen : True ou False (avec majuscule initiale).
Expression en Algorithme
Expression en Python
Résultat
Type
✔️
5 + 6
4.5 - 2.5
12 / 4
11 mod 4
11 div 5
12 ≠ (10+2)
4 ≤ 4
5 ∈ {12, 6, -3, 5, 7}
1+2 = 3-0
Exercice 2 – Expressions numériques / logiques
Compléter le tableau ci-dessous. Les cellules grises sont données, les cases blanches sont à
remplir :
💡 Afficher les indices de résolution
📌 Règles et astuces pour l'Exercice 2 :
Correspondance Algorithme → Python :
Abs(x) → abs(x) (valeur absolue).
Ent(x) → int(x) (partie entière, type int).
Arrondi(x) → round(x) (arrondi à l'entier le plus proche).
Racine(x) → sqrt(x) (module math). Attention :sqrt() retourne toujours un float (ex : sqrt(16) donne 4.0).
Aléa(a, b) → randint(a, b) (module random).
mod → % et div → //.
Propagation du type réel (float) : Tout nombre avec un point décimal (ex: 15. ou 1.5) ou division réelle (/) convertit toute l'expression arithmétique en float.
Priorité des opérations (PEMDAS) : Parenthèses → Exposants → Multiplications, Divisions et Modulo → Additions et Soustractions.
Simulation conditionnelle : Dans x = (a > b) * a + (a <= b) * b, la condition vraie vaut 1 et la fausse vaut 0, sélectionnant la plus grande valeur (maximum).
Test hors limites : Dans Aléa(10, 20) > 30, un nombre tiré entre 10 et 20 ne peut jamais être supérieur à 30, donc le résultat est toujours False (type bool).
#
Expression en algorithme
Expression en Python
Résultat
Type
✔️
1
x = 15 + 3 * 2 + 5
2
x ← (18 mod 5) / 2
3
x = (13 % 5) // 2
4
x ← Abs(-12.5)+3
5
a = 3 ; b = 6 x
= (a > b) * a + (a <= b) * b
6
c ← 8 ; d ←
1 ; x ← Abs(a-c) + Abs(b-d)
7
x ←
Ent(Racine((a-c)*(a-c)+(b-d)*(b-d)))
8
x ← 15 + 3 * 2 + Ent(5.56)
9
x ← 15. + 3 * 2 + Ent(5.56)
10
x = (7+ round(14.36)) % 2
11
x ← 20 > 10 * 1.5
12
x ← Aléa(10, 20) > 30
13
x ← Arrondi(Abs(-12.9)) +
Racine(16)
Exercice 3 – Exécution manuelle (Trace mémoire)
Donner la trace d'exécution des variables X, Y et Z après l'exécution
de chaque instruction :
💡 Afficher les indices de résolution
📌 Conseils méthodologiques (Trace mémoire) :
Initialisation : Tant qu'une variable n'a reçu aucune affectation, indiquer un tiret - (ou laisser vide).
Conservation des valeurs : À chaque nouvelle ligne, seules les variables affectées changent de valeur. Les autres variables conservent leur valeur de la ligne précédente.
Priorité des opérations : Les opérateurs *, div et mod sont prioritaires sur + et -. N'effectuez les additions ou soustractions qu'après avoir évalué les multiplications ou divisions.
Rôle des parenthèses : Toute opération entre parenthèses ( ) doit être calculée en premier, avant toute autre opération extérieure.
Rappel des opérateurs :
div : quotient entier de la division euclidienne (sans virgule ni décimales).
mod : reste entier de la division euclidienne.
#
Instruction
X
Y
Z
✔️
1
X ← 10
2
Y ← 2
3
X ← X + Y * 2
4
Z ← X div 2 + Y
5
Y ← (Z + X) mod 2
6
Z ← X * 3 + 4 mod 2
Exercice 4 – Fonction Aléa
Compléter le tableau ci-dessous avec l'instruction Python équivalente et l'intervalle de variation de la
variable X :
💡 Afficher les indices de résolution
📌 Règles et exemples d'encadrement des intervalles :
Traduction Python :Aléa(a, b) se traduit par x = randint(a, b) (module random), avec $a \le x \le b$.
Multiplication par une constante positive (ex: $\times 2$) :
On multiplie chaque membre de l'inégalité :
1 ≤ x ≤ 5
1 * 2 ≤ x * 2 ≤ 5 * 2
→ 2 ≤ x * 2 ≤ 10
Multiplication par une constante négative (ex: $\times -3$) : Attention : multiplier par un nombre négatif inverse le sens des bornes :
1 ≤ x ≤ 5
5 * (-3) ≤ x * (-3) ≤ 1 * (-3)
→ -15 ≤ x * (-3) ≤ -3
Division entière (ex: // 2) :
On applique la division entière aux bornes :
1 ≤ x ≤ 7
1 // 2 ≤ x // 2 ≤ 7 // 2
→ 0 ≤ x // 2 ≤ 3
Produit de deux tirages indépendants ($x \times y$) :
Si $1 \le x \le 4$ et $0 \le y \le 3$ :
Min : 1 * 0 = 0 • Max : 4 * 3 = 12
→ 0 ≤ x * y ≤ 12
Quotient de deux tirages indépendants ($x / y$) :
Si $10 \le x \le 40$ et $2 \le y \le 5$ :
Min : plus petit numérateur / plus grand dénominateur = 10 / 5 = 2.0
Max : plus grand numérateur / plus petit dénominateur = 40 / 2 = 20.0
→ 2.0 ≤ x / y ≤ 20.0
#
Instruction Algorithme
Instruction Python
Intervalle de variation
✔️
1
x ← Aléa(1, 6)
≤ X ≤
2
x ← Aléa(1, 6) *
10
≤ X ≤
3
x ← Aléa(1, 6) *
-2
≤ X ≤
4
x ← Aléa(1, 6)
// 2
≤ X ≤
5
x ← Aléa(1, 6) *
Aléa(0, 2)
≤ X ≤
6
x ← Aléa(10, 90)
/ Aléa(1, 9)
≤ X ≤
Exercice 5 – Concaténation de Chaînes
Soient les variables Python : ch1 = "python", ch2 = "javascript",
ch3 = "uml" et ch4 = "perl".
📊 Représentation visuelle des chaînes et des indices de leurs caractères (0 à n-1)
ch1 = "python"
0p
1y
2t
3h
4o
5n
ch2 = "javascript"
0j
1a
2v
3a
4s
5c
6r
7i
8p
9t
ch3 = "uml"
0u
1m
2l
ch4 = "perl"
0p
1e
2r
3l
💡 Afficher les indices de résolution
📌 Décomposition pas à pas des 6 expressions :
Expression 1 (ch1[0]) : Extrait le 1er caractère (indice 0) de "python" → 'p'.
Expression 2 (ch2.upper()) : Met toute la chaîne "javascript" en lettres majuscules.
Expression 3 : Concatène les lettres aux indices donnés : ch1[0] ('p') + ch3[0] ('u') + ch2[5] ('c') + ch4[1] ('e').
Expression 4 :ch2[9].upper() donne 'T', ch1[2].upper() donne 'T'. Assembler avec ch2[7] ('i'), ch2[8] ('p'), ch1[4] ('o') et ch1[0] ('p').
Expression 5 :len(ch1) - len(ch4) = 6 - 4 = 2 → str(2) = "2". Pour le terme chr(ord(ch1[3]) - 3) : ch1[3] est 'h' (ASCII 104), et $104 - 3 = 101$ qui est la lettre 'e'.
Soient les variables : ch1 = "Algorithmique", ch2 = "Python", et
ch3 = "4502".
📊 Représentation visuelle des chaînes et des indices de leurs caractères (0 à n-1)
ch1 = "Algorithmique"
0A
1l
2g
3o
4r
5i
6t
7h
8m
9i
10q
11u
12e
ch2 = "Python"
0P
1y
2t
3h
4o
5n
ch3 = "4502"
04
15
20
32
Compléter le tableau ci-dessous en évaluant chaque instruction :
💡 Afficher les indices de résolution
📌 Règles et astuces pour l'Exercice 6 :
Lignes 1 à 3 (Long, ConvCh, Valeur) :Long() → len() ; ConvCh() → str() (concatène `"13"` et `"6"` en `"136"`) ; Valeur() → int() (convertit `"613"` en nombre entier 613).
Ligne 4 (Réel) :Réel(C) → float(C). La soustraction avec un nombre réel donne un float ($613 - 136.0 = 477.0$).
Lignes 5 et 6 (Découpage et Effacement) :sous_chaine(ch, d, f) correspond à ch[d:f] (de l'indice $d$ à $f-1$). Effacer(F, 0, 2) supprime les 2 premiers caractères (équivaut à F[2:]). Note : $136 - 15 = 121$ et chr(121) = 'y'.
Ligne 7 (EstNum / isdecimal) :isdecimal() vaut True (1) si la chaîne ne contient que des chiffres, sinon False (0). C ("136") est décimal mais pas G ("Rhythmique"), donc $1 \times 3 + 0 \times 10 = 3$.
Ligne 8 (Pos / find) :Pos(motif, ch) → ch.find(motif). Retourne la position (indice à partir de 0) du motif dans la chaîne (ex: `"go"` commence à l'indice 2 dans `"Algorithmique"`).
Lignes 9 et 10 (Combinaison finale) : Calcul arithmétique de $K$ ($4502 - 477 - 2000 = 2025$), puis assemblage des tranches de chaîne avec K.
🧪 Simulateur Graphique SVG des Fonctions PrédéfiniesMode Interactif
Cocher la ou les bonnes réponses pour chacune des propositions ci-dessous :
1. Soit l'instruction X ← Ent(12.33) :
💡 Afficher l'indication
Indication : La fonction Ent(x) extrait la partie entière d'un nombre réel
(ex : Ent(12.33) = 12). Le résultat obtenu est toujours un nombre entier.
2. L'instruction R ← arrondi(12.75) permet d'affecter à la
variable R :
💡 Afficher l'indication
Indication : La fonction Arrondi(x) arrondit au nombre entier le plus
proche. Comme la partie décimale 0.75 est supérieure ou égale à 0.5, 12.75 s'arrondit à 13.
3. Soit l'instruction :
C ← sous_chaine("informatique", 2, 5) :
💡 Afficher l'indication
Indication :sous_chaine("informatique", 2, 5) extrait les caractères de l'indice 2 à 5 (exclu), ce qui correspond aux positions 2 ('f'), 3 ('o') et 4 ('r') → "for". Le résultat d'une fonction
sous_chaine est toujours une chaîne de caractères (string).
4. L'instruction T ← EstNum("123") affecte à T :
💡 Afficher l'indication
Indication : La fonction EstNum(ch) vérifie si la chaîne est composée
exclusivement de chiffres. Elle renvoie un résultat booléen (VRAI ou FAUX).
Pour "123", elle renvoie VRAI.
5. Soit l'instruction : P ← Pos("2", "FIFA 2022") :
💡 Afficher l'indication
Indication : La fonction Pos(ch1, ch2) recherche l'indice de la première
occurrence de ch1 dans ch2. Dans "FIFA 2022", le premier
'2' se trouve à l'indice 5. Une position/indice est toujours de type entier.
Exercice 8 – Générateur de Mot de Passe (Password)
Création d'un mot de passe mp de 6 caractères composé de 2 chiffres (0 →
9), 2 majuscules ("A" → "Z") et 2 minuscules ("a" → "z") :
💡 Afficher les indices de conception (Algorithme & ASCII)
📌 Principe algorithmique de génération du mot de passe :
2 Chiffres ('0' → '9') : Codes ASCII de 48 à 57. Obtenus par chr(alea(48, 57)) ou convch(alea(0, 9)).
2 Majuscules ('A' → 'Z') : Codes ASCII de 65 à 90. Obtenus par chr(alea(65, 90)).
2 Minuscules ('a' → 'z') : Codes ASCII de 97 à 122. Obtenus par chr(alea(97, 122)).
Assemblage final : Concaténation des 6 caractères générés dans la variable résultat : mp ← c1 + c2 + m1 + m2 + min1 + min2.
🔑 Mot de passe :
Exercice 9 – Permutation des Chiffres
Saisir un entier a composé de 2 chiffres (10 → 99) et permuter ses chiffres pour obtenir
b (ex: 49 → 94) :
💡 Afficher les indices de résolution (Division & Modulo)
📌 Décomposition arithmétique d'un entier à 2 chiffres :
Chiffre des dizaines : Obtenu par la division entière par 10 : d ← a div 10 (en Python : d = a // 10). Pour 49, $49 // 10 = 4$.
Chiffre des unités : Obtenu par le reste de la division par 10 : u ← a mod 10 (en Python : u = a % 10). Pour 49, $49 \% 10 = 9$.
Reconstruction du nombre permuté : On multiplie les unités par 10 et on ajoute les dizaines : b ← u * 10 + d. Pour 49 : $9 \times 10 + 4 = 94$.
Entier a =
Exercice 10 – Autonomie de la Batterie
Calculer la consommation moyenne (en % aux 100 km) et la distance maximale dm (autonomie
restante en km) qu'un véhicule électrique peut parcourir avec le niveau de batterie actuel :
Autonomie de la Batterie💡 Afficher les indices & formules de calcul
📌 Formules mathématiques et algorithmiques :
Distance parcourue ($\text{dp}$) : Différence des compteurs kilométriques : $\text{dp} = \text{ikf} - \text{ikd}$ (en km).
Énergie consommée ($\text{ec}$) : Baisse du niveau de batterie : $\text{ec} = \text{nib} - \text{nfb}$ (en %).
Consommation moyenne aux 100 km ($\text{cm}$) : Règle de trois : $\text{cm} = \frac{\text{ec} \times 100}{\text{dp}}$ (% / 100 km).
Simulation du circuit logique de l'équation booleénne : $$L = (a \cdot \bar{c}) + (b \cdot
c)$$
💡 Afficher les indices & rôle du circuit (Multiplexeur)
📌 Analyse des portes logiques et de l'équation :
Porte NON (Inverseur) : Calcule $\bar{c}$ ($0 \rightarrow 1$ et $1 \rightarrow 0$).
Porte ET supérieure ($T_1 = a \cdot \bar{c}$) : Active (sortie 1) uniquement lorsque $a=1$ et $c=0$.
Porte ET inférieure ($T_2 = b \cdot c$) : Active (sortie 1) uniquement lorsque $b=1$ et $c=1$.
Porte OU finale ($L = T_1 + T_2$) : Allume la lampe si $T_1=1$ ou $T_2=1$.
Rôle de sélection (Multiplexeur 2:1) : La variable $c$ agit comme un commutateur :
si $c=0$, la lampe recopie l'état de l'entrée $a$ ($L=a$) ; si $c=1$, elle recopie l'état de l'entrée $b$ ($L=b$).
État de la Lampe L : FAUX
(0) — Éteinte 🔴
📊 Table de Vérité de la fonction $L = (a \cdot \bar{c}) + (b
\cdot c)$ :
a
b
c
c̄
T1 = a • c̄
T2 = b • c
L = T1 + T2
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
1
0
0
0
0
1
1
0
0
1
1
1
0
0
1
1
0
1
1
0
1
0
0
0
0
1
1
0
1
1
0
1
1
1
1
0
0
1
1
Exercice 12 – Citerne d'Huile et Logistique de Transport
Un oléiculteur dispose d'une quantité d'huile Q (Litres). L'huile est mise en bouteilles de 1L,
rangées dans des caisses de 12 bouteilles, puis transportées par un camion de 30
caisses max par voyage :
💡 Afficher les indices de calcul (Divisions euclidiennes)
📌 Enchaînement des calculs de logistique :
Nombre total de bouteilles : Division de la quantité par la contenance : $\text{bouteilles} = \text{Ent}(Q / \text{vol})$.
Reste d'huile non embouteillée : $\text{reste\_huile} = Q \pmod{\text{vol}}$.
Caisses pleines de 12 bouteilles : Quotient entier : $\text{caisses} = \text{bouteilles} \text{ div } 12$ (en Python : // 12).
Bouteilles restantes sans caisse : Reste entier : $\text{bouteilles\_restantes} = \text{bouteilles} \text{ mod } 12$ (en Python : % 12).
Voyages complets du camion (30 caisses) : $\text{voyages} = \text{caisses} \text{ div } 30$ (en Python : // 30).
Caisses du dernier voyage partiel : $\text{caisses\_dernier} = \text{caisses} \text{ mod } 30$ (en Python : % 30).
Exercice 13 – Fonctions sur les Chaînes
Compléter le tableau ci-dessous avec la chaîne ch ← "programme 2025"
:
💡 Afficher les indices de résolution
📌 Règles des fonctions algorithmiques de chaînes et types :
Fonction chr(code) : Convertit un code ASCII numérique en caractère (ex: ent(100.5) = 100, et le code ASCII 100 donne 'd', type Caractère). Mettre entre apostrophes simples.
Fonction ord(car) : Retourne le code ASCII entier du caractère (ex: ord('o') donne 111, type Entier).
Indices de la chaîne ch :ch[0]='p', ch[2]='o', ch[3]='g', ch[5]='a', ch[8]='e', ch[13]='5'.
sous_chaine(ch, d, f) : Extrait les caractères de l'indice $d$ jusqu'à $f-1$ exclu (longueur $f-d$, type Chaîne, ex: sous_chaine(ch, 3, 9) donne "gramme").
effacer(ch, d, f) : Supprime la portion entre $d$ et $f-1$ et recolle les morceaux (type Chaîne, ex: effacer(ch, 3, 9) donne "pro 2025").
Génération de lettre majuscule :alea(0, 25) + 65 donne un code ASCII entre 65 ('A') et 90 ('Z'), donc chr(...) produit une lettre majuscule de type Caractère.
Comparaison booléenne : La condition "A" ≤ e ≤ "Z" teste si e est une majuscule, ce qui est toujours VRAI (type Booleen).
convch() et valeur() :convch() transforme un nombre en Chaîne, et valeur() transforme une chaîne en Entier.
🔤 Visualisation de la chaîne ch ← "programme 2025"14 Caractères (indices 0 à 13)
Instruction en algorithme
Type
Résultat
✔️
a ← chr(ent(100.5))
b ← majus(ch[0]) + ch[5] + ch[3] + ch[8]
c ← sous_chaine(ch, 3, 9)
d ← effacer(ch, 3, 9)
e ← chr(65 + alea(0, 25))
f ← convch(45 div 10 + 15 mod 2 + arrondi(3.2))
g ← "A" ≤ e ≤ "Z"
i ← valeur(ch[13] + sous_chaine(ch, 10, 13))
j ← ord(ch[2])
Exercice 14 – Générateur de Pseudonymes
Un site propose des pseudonymes automatisés lors de la création d'un compte.
Le pseudonyme est composé par les trois premières lettres du prénom suivies par la
longueur du prénom, les trois dernières lettres du nom suivies par la
longueur du nom, le tout succédé par un nombre aléatoire de 2 chiffres. Exemple : Nom & Prénom = "Sami Ben Salah" → Pseudonyme proposé : SAM4_LAH9_31
🧪 Simulateur Interactif de PseudonymesChaîne Unique (Prénom Nom)
📘 Correction : Algorithme & Code Python de Génération