Ch. 01 · Leçon 1
Rappel : constantes, variables et types de données
Ce que vous saurez faire
- Distinguer une constante d'une variable et d'un littéral
- Déclarer une variable en notation algorithmique tunisienne et en Python 3
- Choisir le type de donnée le plus adapté à une situation concrète
- Construire un T.D.O complet à partir de l'énoncé d'un problème
Plan de cours
Avant la première ligne de code : nommer, ranger, protéger
Cette leçon ouvre l'année de 4ème année et consolide un acquis essentiel de la 3ème : la gestion des données dans un programme. Sans données bien typées et bien nommées, aucun algorithme n'est lisible — encore moins corrigible.
Concepts clés
- Identificateur — le nom d'un objet, soumis à des règles de syntaxe.
- Type — le contrat qui limite les valeurs et les opérations possibles.
- T.D.O — le tableau qui déclare tous les objets manipulés par le programme.
- Affectation — l'instruction qui range une valeur dans une variable.
Avant de commencer — qu'est-ce que vous savez déjà ?
Prenez 30 secondes pour répondre mentalement (ou sur une feuille) à ces trois questions de rappel. Aucune triche : si vous séchez, c'est le bon moment de réviser avant d'aller plus loin.
- Q1. Quelle est la différence entre une variable et une constante ?
- Q2. Citez trois types de données standard que vous avez utilisés en 3ème année.
- Q3. Que signifie l'instruction
X ← 5en notation algorithmique ?
Si une seule de ces questions vous met en difficulté, lisez attentivement la section suivante. Si les trois vous semblent évidentes, prenez les exercices niveau intermédiaire directement : la partie cours sera un rafraîchissement rapide.
1. Le contenu du cours
1.1 Analogie de la boîte étiquetée
Imaginez une étagère de salle de classe. Chaque boîte y porte trois caractéristiques :
- un nom écrit sur l'étiquette (« cahiers de Salma », « craies blanches »),
- une forme qui limite ce qu'on peut y ranger (une boîte de 30×20 cm ne peut pas contenir un ballon),
- un contenu actuel (qui peut être vide, plein, ou modifié au cours de la journée).
En programmation, chaque variable est exactement cette boîte étiquetée :
- l'identificateur est l'étiquette,
- le type est la forme imposée,
- la valeur est le contenu rangé.
Quand vous écrivez age ← 17 en algorithmique, vous rangez la valeur 17 dans la boîte étiquetée age. La boîte existait déjà (vous l'aviez déclarée), seul son contenu change.
1.2 Identificateur : les règles de nommage
Règles valables à la fois en notation algorithmique tunisienne et en Python 3 :
| Règle | Exemple valide | Exemple invalide |
|---|---|---|
Commence par une lettre ou un underscore _ | age, _total, Nom2 | 2age (commence par chiffre) |
Composé de lettres, chiffres ou _ uniquement | note_finale, moyenne1 | note-finale (tiret interdit), prix€ (caractère spécial) |
Sensible à la casse : Age ≠ age ≠ AGE | — | — |
| N'est pas un mot réservé du langage | note (libre) | if, for, print (réservés Python) |
1.3 Les types de données standard
Le programme officiel impose cinq types standards à maîtriser :
| Type algorithmique | Type Python 3 | Exemple de valeur | Usage typique |
|---|---|---|---|
entier | int | 17, -3, 0, 2026 | Compteurs, âges, indices |
réel | float | 3.14, -0.5, 1.0e3 | Mesures, moyennes, prix |
caractère | str (longueur 1) | 'A', '?', '9' | Lettre, symbole isolé |
chaîne de caractères | str | "Bonjour", "4ème sci" | Mots, phrases, identifiants |
booléen | bool | vrai / faux (Python : True / False) | Conditions, drapeaux |
1.4 Constante vs Variable vs Littéral
Trois notions à ne pas confondre :
1.5 Le T.D.O : la fiche d'identité du programme
Le Tableau de Déclaration des Objets est la première chose qu'attend tout correcteur de bac. Il liste tous les objets manipulés par le programme — variables et constantes — avec leur type et leur rôle.
Format standard à respecter :
T.D.O
Objet | Type / Nature | Rôle
----------|--------------------------|------------------------
rayon | Variable / réel | Rayon du cercle saisi
PI | Constante / réel = 3.14 | Valeur approchée de π
surface | Variable / réel | Surface calculée du cercle
1.6 L'affectation
| Notation algorithmique | Python 3 |
|---|---|
age ← 17 | age = 17 |
surface ← PI * rayon * rayon | surface = PI * rayon * rayon |
temp ← A ; A ← B ; B ← temp | temp = A; A = B; B = temp |
1.7 Exemple complet de A à Z
Énoncé. Calculer la surface d'un cercle dont le rayon est saisi au clavier.
Étape 1 — Analyse
| Élément | Détail |
|---|---|
| Résultat attendu | Afficher la surface |
| Données nécessaires | Le rayon (saisi), PI (constante) |
| Traitement | surface ← PI × rayon² |
Étape 2 — Algorithme
0) Début surface_cercle
1) Lire(rayon)
2) surface ← PI * rayon * rayon
3) Écrire("La surface est : ", surface)
4) Fin surface_cercle
T.D.O
rayon | Variable / réel | Rayon saisi par l'utilisateur
PI | Constante / réel = 3.14159 | Valeur approchée de π
surface | Variable / réel | Surface calculée
Étape 3 — Traduction Python
0) Début surface_cercle
1) Lire(rayon)
2) surface ← PI * rayon * rayon
3) Écrire("La surface est : ", surface)
4) Fin surface_cercle
0) Début surface_cercle
1) Lire(rayon)
2) surface ← PI * rayon * rayon
3) Écrire("La surface est : ", surface)
4) Fin surface_cercle
PI: float = 3.14159 # constante (convention : majuscules)
rayon = float(input("Rayon : "))
surface = PI * rayon * rayon
print("La surface est :", surface)
Trace d'exécution (avec rayon = 2.0)
| N° | Instruction | PI | rayon | surface |
|---|---|---|---|---|
| 01 | ··· | ? | ? | ? |
| 02 | ··· | ? | ? | ? |
| 03 | ··· | ? | ? | ? |
| 04 | ··· | ? | ? | ? |
2. Exercices pratiques
Faites une tentative sérieuse sur chaque exercice avant de cliquer « Voir le corrigé ». Le bénéfice pédagogique vient de l'effort, pas de la lecture passive du corrigé.
Niveau Débutant — Type bac courant
Pour chacun des identificateurs suivants, indiquez s'il est valide ou invalide en notation algorithmique. Justifiez chaque cas.
note_finale2eme_trimestremoyenne-generaleAge_totalprénomif
Voir le corrigé
| Identificateur | Verdict | Justification |
|---|---|---|
note_finale | ✅ Valide | Lettres + underscore, commence par une lettre |
2eme_trimestre | ❌ Invalide | Commence par un chiffre |
moyenne-generale | ❌ Invalide | Contient un tiret (interprété comme soustraction) |
Age | ✅ Valide | Notez que Age ≠ age (sensible à la casse) |
_total | ✅ Valide | L'underscore est autorisé en première position |
prénom | ⚠️ À éviter | Le caractère accentué é n'est pas universellement accepté ; préférez prenom |
if | ❌ Invalide | Mot réservé du langage |
Niveau Intermédiaire — Type bac difficile
Soient A et B deux variables entières.
- Écrire l'algorithme classique qui échange leurs contenus avec une variable auxiliaire
temp. - Écrire un algorithme qui échange leurs contenus sans utiliser de variable auxiliaire (uniquement des opérations arithmétiques).
- Traduire les deux versions en Python 3.
Voir le corrigé
Version 1 — avec variable auxiliaire
temp ← A
A ← B
B ← temp
temp = A
A = B
B = temp
Version 2 — sans variable auxiliaire (opérations arithmétiques)
A ← A + B { A contient maintenant la somme }
B ← A - B { B reçoit la valeur initiale de A }
A ← A - B { A reçoit la valeur initiale de B }
A = A + B
B = A - B
A = A - B
Trace avec A = 7 et B = 3 :
| Étape | A | B |
|---|---|---|
| Initial | 7 | 3 |
A ← A + B | 10 | 3 |
B ← A - B | 10 | 7 |
A ← A - B | 3 | 7 |
Remarque pédagogique. La version sans auxiliaire est élégante mais fragile : elle peut provoquer un dépassement de capacité avec de très grands entiers, et ne fonctionne que pour les types numériques. En production, on préfère toujours la version avec variable temporaire — elle est plus claire et plus sûre.
Niveau Avancé — Hors bac (bonus)
Vous devez écrire un programme qui stocke et affiche les informations d'un élève :
- nom et prénom,
- date de naissance (jour, mois, année séparés),
- moyenne du dernier trimestre,
- mention obtenue parmi : Passable, Assez Bien, Bien, Très Bien, Excellent,
- admissibilité au passage en classe supérieure (oui / non).
Questions :
- Construire le T.D.O complet en justifiant chaque choix de type.
- Écrire la partie déclarative correspondante en Python 3 (uniquement les affectations initiales, sans saisie ni affichage).
- Proposer une expression booléenne qui retourne
vraisi et seulement si l'élève est admis et que sa mention est au moins « Bien ».
Voir le corrigé
1. T.D.O complet
T.D.O
Objet | Type / Nature | Rôle
--------------|---------------------|--------------------------------
nom | Variable / chaîne | Nom de famille de l'élève
prenom | Variable / chaîne | Prénom de l'élève
jour | Variable / entier | Jour de naissance (1..31)
mois | Variable / entier | Mois de naissance (1..12)
annee | Variable / entier | Année de naissance
moyenne | Variable / réel | Moyenne du trimestre (0.0..20.0)
mention | Variable / chaîne | Mention textuelle parmi 5 valeurs
admis | Variable / booléen | Vrai si l'élève passe, faux sinon
Justifications :
nom,prenom: suite de caractères → chaîne.jour,mois,annee: entiers dans des intervalles fermés → entier. (En 3ème, on aurait pu utiliser un type intervalle pourjour : 1..31, mais Python ne le formalise pas.)moyenne: note avec décimales → réel.mention: on stocke le libellé textuel → chaîne. (Une alternative plus rigoureuse serait un type énuméré ; en Python on utiliseraitenum.Enum.)admis: réponse oui/non → booléen par excellence.
2. Déclaration Python 3
nom: str = "Trabelsi"
prenom: str = "Salma"
jour: int = 14
mois: int = 3
annee: int = 2009
moyenne: float = 15.75
mention: str = "Très Bien"
admis: bool = True
3. Expression booléenne
En notation algorithmique :
admis ET (mention = "Bien" OU mention = "Très Bien" OU mention = "Excellent")
En Python 3 :
admis and mention in ("Bien", "Très Bien", "Excellent")
Astuce. L'opérateur in sur un tuple est plus lisible que trois or chaînés. Il faut toutefois s'assurer que la valeur de mention correspond exactement (casse, accents) à une des valeurs attendues — d'où l'intérêt d'un type énuméré pour éliminer ces erreurs à la source.
⚠️ Erreurs fréquentes au bac
Avant le quiz, mémorisez ces pièges classiques qui font perdre des points :
- Erreur 1. Confondre
=(affectation) et==(comparaison) en Python.if x = 5:lève une SyntaxError. - Erreur 2. Oublier le T.D.O dans la copie. C'est la première chose que cherche le correcteur — perte automatique de 2 à 3 points.
- Erreur 3. Utiliser un identificateur invalide :
2eme_note,note-finale,if. Toujours vérifier les règles avant de nommer. - Erreur 4. Confondre
True/False(Python) etvrai/faux(algorithmique). Respecter la convention du langage demandé.
3. Quiz de vérification
Cinq questions courtes pour valider votre compréhension avant de passer à la leçon suivante. Visez 5/5 : c'est un quiz de base, pas une évaluation.
Constantes, variables, types (5 questions)
Parmi ces identificateurs, lequel est INVALIDE en notation algorithmique ?
L'instruction X ← X + 1 signifie :
Quel type choisir pour stocker la moyenne trimestrielle d'un élève (entre 0 et 20, avec décimales) ?
En Python 3, comment écrit-on le booléen vrai ?
Le T.D.O sert à :
En résumé
Avant de passer à la leçon suivante (Structures conditionnelles : Si...Sinon, Selon), assurez-vous de pouvoir :
- ✅ Écrire un identificateur valide sans hésitation,
- ✅ Construire un T.D.O à partir d'un énoncé en moins de 3 minutes,
- ✅ Distinguer une affectation d'une équation,
- ✅ Choisir le bon type parmi entier, réel, caractère, chaîne, booléen.
Si l'un de ces points reste flou, reprenez la section concernée ou faites de nouveau les exercices niveau débutant et intermédiaire. La suite du cours repose entièrement sur cette base.