Aller au contenu principal

Ch. 01 · Leçon 1

Rappel : constantes, variables et types de données

180 minanalyse · python
Affichage du code

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

  1. Identificateur — le nom d'un objet, soumis à des règles de syntaxe.
  2. Type — le contrat qui limite les valeurs et les opérations possibles.
  3. T.D.O — le tableau qui déclare tous les objets manipulés par le programme.
  4. 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 ← 5 en 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ègleExemple valideExemple invalide
Commence par une lettre ou un underscore _age, _total, Nom22age (commence par chiffre)
Composé de lettres, chiffres ou _ uniquementnote_finale, moyenne1note-finale (tiret interdit), prix€ (caractère spécial)
Sensible à la casse : AgeageAGE
N'est pas un mot réservé du langagenote (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 algorithmiqueType Python 3Exemple de valeurUsage typique
entierint17, -3, 0, 2026Compteurs, âges, indices
réelfloat3.14, -0.5, 1.0e3Mesures, moyennes, prix
caractèrestr (longueur 1)'A', '?', '9'Lettre, symbole isolé
chaîne de caractèresstr"Bonjour", "4ème sci"Mots, phrases, identifiants
booléenboolvrai / 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 algorithmiquePython 3
age ← 17age = 17
surface ← PI * rayon * rayonsurface = PI * rayon * rayon
temp ← A ; A ← B ; B ← temptemp = 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émentDétail
Résultat attenduAfficher la surface
Données nécessairesLe rayon (saisi), PI (constante)
Traitementsurface ← 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

Trace d'exécution (avec rayon = 2.0)

Trace d'exécution
0 / 4
InstructionPIrayonsurface
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

Exercice 1facile
Identifiants valides ?

Pour chacun des identificateurs suivants, indiquez s'il est valide ou invalide en notation algorithmique. Justifiez chaque cas.

  1. note_finale
  2. 2eme_trimestre
  3. moyenne-generale
  4. Age
  5. _total
  6. prénom
  7. if
Voir le corrigé
IdentificateurVerdictJustification
note_finale✅ ValideLettres + underscore, commence par une lettre
2eme_trimestre❌ InvalideCommence par un chiffre
moyenne-generale❌ InvalideContient un tiret (interprété comme soustraction)
Age✅ ValideNotez que Ageage (sensible à la casse)
_total✅ ValideL'underscore est autorisé en première position
prénom⚠️ À éviterLe caractère accentué é n'est pas universellement accepté ; préférez prenom
if❌ InvalideMot réservé du langage

Niveau Intermédiaire — Type bac difficile

Exercice 2moyen
Échange de deux valeurs sans variable auxiliaire

Soient A et B deux variables entières.

  1. Écrire l'algorithme classique qui échange leurs contenus avec une variable auxiliaire temp.
  2. Écrire un algorithme qui échange leurs contenus sans utiliser de variable auxiliaire (uniquement des opérations arithmétiques).
  3. 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 :

ÉtapeAB
Initial73
A ← A + B103
B ← A - B107
A ← A - B37

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)

Exercice 3difficile
T.D.O d'une fiche élève

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 :

  1. Construire le T.D.O complet en justifiant chaque choix de type.
  2. Écrire la partie déclarative correspondante en Python 3 (uniquement les affectations initiales, sans saisie ni affichage).
  3. Proposer une expression booléenne qui retourne vrai si 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 pour jour : 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 utiliserait enum.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) et vrai/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)

1

Parmi ces identificateurs, lequel est INVALIDE en notation algorithmique ?

2

L'instruction X ← X + 1 signifie :

3

Quel type choisir pour stocker la moyenne trimestrielle d'un élève (entre 0 et 20, avec décimales) ?

4

En Python 3, comment écrit-on le booléen vrai ?

5

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.

Bravo d'être arrivé jusqu'ici. Marquez la leçon terminée pour ancrer le progrès.