Module 01 · Leçon 1
Constantes, variables et types standards
Ce que vous saurez faire
- Distinguer constante, variable et littéral
- Déclarer une variable en notation algorithmique et en Pascal
- Choisir le type adapté à une donnée concrète
Avant de commencer
Vous avez sûrement déjà manipulé des variables en mathématiques (x = 5,
y = 2x + 3). En programmation, la variable est le bloc de construction
de tout algorithme. Posez-vous ces questions :
- Quel est le nom le plus précis pour stocker l'âge d'un élève ?
- Si on stocke un prix (par exemple
12.50dinars), peut-on utiliser le même type que pour un nombre de personnes ? - Pourquoi déclarer une constante plutôt qu'une variable, par exemple
pour la valeur
3.14159?
1. Pourquoi déclarer ?
Un programme manipule des données. Avant de pouvoir s'en servir, il faut les désigner par un nom (l'identificateur), leur réserver de la place en mémoire, et indiquer ce qu'on va y mettre (le type).
Règles de nommage
Un identificateur doit :
- Commencer par une lettre (jamais un chiffre).
- Contenir uniquement des lettres, chiffres ou
_(pas d'espace, pas de caractère accentué). - Ne pas être un mot réservé du langage (
Si,Pour,Begin,End, etc.).
2. Les types standards
Cinq types de base couvrent l'immense majorité des besoins :
| Type | Notation algo | Pascal | Exemples |
|---|---|---|---|
| Entier | entier | integer | 0, 42, -17 |
| Réel | réel | real | 3.14, -0.5, 0.0 |
| Caractère | caractère | char | 'A', '?', ' ' |
| Chaîne | chaîne | string | "Bonjour", "4SI" |
| Booléen | booléen | boolean | Vrai, Faux |
3. Déclaration : T.D.N.T et T.D.O
En notation algorithmique tunisienne, on déclare dans deux tableaux :
- T.D.N.T (Tableau de Déclaration des Nouveaux Types) — déclare les types maison (énumérés, intervalles, enregistrements…). On le verra dans la leçon suivante.
- T.D.O (Tableau de Déclaration des Objets — c'est le Tableau de Déclaration des Objets) — déclare toutes les variables et constantes du programme, avec leur type et leur rôle.
Exemple : un programme qui calcule un prix TTC
T.D.O
─────────────────────────────────────────────
Objet │ Type/Nature │ Rôle
─────────────────────────────────────────────
TVA │ constante=0.19 (réel) │ Taux de TVA
prix_ht │ variable réel │ Prix hors taxe
prix_ttc │ variable réel │ Prix toutes taxes
─────────────────────────────────────────────
Algorithme Prix_TTC
Début
prix_ht ← Donnée("Prix HT en DT : ")
prix_ttc ← prix_ht * (1 + TVA)
Ecrire("Prix TTC = ", prix_ttc)
Fin
T.D.O
─────────────────────────────────────────────
Objet │ Type/Nature │ Rôle
─────────────────────────────────────────────
TVA │ constante=0.19 (réel) │ Taux de TVA
prix_ht │ variable réel │ Prix hors taxe
prix_ttc │ variable réel │ Prix toutes taxes
─────────────────────────────────────────────
Algorithme Prix_TTC
Début
prix_ht ← Donnée("Prix HT en DT : ")
prix_ttc ← prix_ht * (1 + TVA)
Ecrire("Prix TTC = ", prix_ttc)
Fin
PROGRAM Prix_TTC;
CONST
TVA = 0.19;
VAR
prix_ht, prix_ttc : real;
BEGIN
Write('Prix HT en DT : ');
Readln(prix_ht);
prix_ttc := prix_ht * (1 + TVA);
Writeln('Prix TTC = ', prix_ttc:5:3);
END.
4. L'affectation
L'affectation copie une valeur dans une variable. Elle ne traduit
pas une équation : x ← x + 1 veut dire « prendre la valeur actuelle
de x, lui ajouter 1, et ranger le résultat dans x ».
| N° | Instruction | a | b | temp |
|---|---|---|---|---|
| 01 | ··· | ? | ? | ? |
| 02 | ··· | ? | ? | ? |
| 03 | ··· | ? | ? | ? |
| 04 | ··· | ? | ? | ? |
| 05 | ··· | ? | ? | ? |
C'est la technique classique pour échanger deux variables : on a besoin d'une troisième variable pour ne pas écraser la première avant d'avoir sauvegardé sa valeur.
5. Exercices pratiques
Écrire le T.D.O et le programme Pascal qui déclare :
- une variable
nom(chaîne) initialisée à"Amine", - une variable
age(entier) initialisée à17, - une constante
MAJORITE(entier) égale à18,
puis affiche nom, age, et indique si la personne est majeure.
Voir le corrigé
T.D.O
| Objet | Type/Nature | Rôle |
|---|---|---|
| MAJORITE | constante=18 (entier) | Âge de la majorité |
| nom | variable chaîne | Nom de la personne |
| age | variable entier | Âge de la personne |
Pascal
PROGRAM Maj;
CONST
MAJORITE = 18;
VAR
nom : string;
age : integer;
BEGIN
nom := 'Amine';
age := 17;
Writeln(nom, ' a ', age, ' ans.');
IF age >= MAJORITE THEN
Writeln('Majeur')
ELSE
Writeln('Mineur');
END.
Soit A et B deux variables entières. Écrire en notation
algorithmique un programme qui échange leurs contenus sans utiliser
de troisième variable (uniquement avec des opérations arithmétiques).
Voir le corrigé
T.D.O
─────────────────────────────────
A │ variable entier
B │ variable entier
─────────────────────────────────
Début
A ← A + B { A vaut maintenant la somme }
B ← A - B { B vaut l'ancien A (somme − ancien B) }
A ← A - B { A vaut l'ancien B (somme − nouveau B) }
Fin
Attention : cette technique ne marche que pour des entiers (pas de risque d'overflow) et échoue silencieusement si la somme dépasse la capacité du type.
Vous devez stocker les informations d'un élève : nom, prénom, date de naissance, note de bac, mention obtenue (Passable / Assez Bien / Bien / Très Bien), admissibilité (oui/non).
Question 1 — Proposer un T.D.O complet en justifiant chaque choix de type.
Question 2 — Indiquer quelles informations devraient être des constantes dans un programme qui traite plusieurs élèves.
Voir le corrigé
Q1 — T.D.O
| Objet | Type/Nature | Justification |
|---|---|---|
| nom | chaîne | Texte de longueur variable |
| prenom | chaîne | Idem |
| jour_naiss | entier | 1 à 31 |
| mois_naiss | entier | 1 à 12 |
| annee_naiss | entier | Toujours ≥ 1900 |
| note_bac | réel | Décimale (ex. 14.75) |
| mention | chaîne | Valeur parmi 4 chaînes — type énuméré idéal (leçon 2) |
| admis | booléen | Vrai/Faux uniquement |
Q2 — Constantes
Les seuils des mentions ne changent jamais : SEUIL_PASSABLE = 10.0,
SEUIL_AB = 12.0, SEUIL_BIEN = 14.0, SEUIL_TB = 16.0. Les déclarer
en CONST rend le code lisible et facile à mettre à jour si la
réglementation change.
6. Erreurs fréquentes au bac
- Oublier le point-virgule entre déclarations en Pascal.
- Confondre
=(comparaison) et:=(affectation) en Pascal. - Affecter un réel à une variable entière (perte de précision).
- Utiliser un identificateur avant de l'avoir déclaré dans le T.D.O.
7. Quiz de vérification
Quiz (5 questions)
L'identificateur `2_age` est-il valide ?
Quel type choisir pour le booléen 'l'élève est-il admis ?'
Que vaut `x` après l'exécution de `x ← 3; x ← x * 2; x ← x + 1` ?
En Pascal, comment écrit-on l'affectation ?
Quelle est la principale différence entre `'A'` et `"A"` ?