Aller au contenu principal
Précédente·Suivante

Module 01 · Leçon 1

Constantes, variables et types standards

180 minanalyse · pascal
Affichage du code

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.50 dinars), 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 :

  1. Commencer par une lettre (jamais un chiffre).
  2. Contenir uniquement des lettres, chiffres ou _ (pas d'espace, pas de caractère accentué).
  3. 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 :

TypeNotation algoPascalExemples
Entierentierinteger0, 42, -17
Réelréelreal3.14, -0.5, 0.0
Caractèrecaractèrechar'A', '?', ' '
Chaînechaînestring"Bonjour", "4SI"
BooléenbooléenbooleanVrai, 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

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 ».

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

Exercice 1facile
Déclaration de variables

É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

ObjetType/NatureRôle
MAJORITEconstante=18 (entier)Âge de la majorité
nomvariable chaîneNom de la personne
agevariable 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.
Exercice 2moyen
Échange sans variable tampon (type bac courant)

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.

Exercice 3difficile
Choix de types pour une fiche élève (hors bac, bonus)

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

ObjetType/NatureJustification
nomchaîneTexte de longueur variable
prenomchaîneIdem
jour_naissentier1 à 31
mois_naissentier1 à 12
annee_naissentierToujours ≥ 1900
note_bacréelDécimale (ex. 14.75)
mentionchaîneValeur parmi 4 chaînes — type énuméré idéal (leçon 2)
admisbooléenVrai/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)

1

L'identificateur `2_age` est-il valide ?

2

Quel type choisir pour le booléen 'l'élève est-il admis ?'

3

Que vaut `x` après l'exécution de `x ← 3; x ← x * 2; x ← x + 1` ?

4

En Pascal, comment écrit-on l'affectation ?

5

Quelle est la principale différence entre `'A'` et `"A"` ?

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