Chapitre 3 — Variables, constantes et types de données
Mémoriser, nommer, typer et convertir les données d’un algorithme
Fiche pédagogique du chapitre
Objectifs d’apprentissage
À la fin de ce chapitre, l’étudiant devra être capable de :
- expliquer le rôle d’une variable dans un algorithme ;
- distinguer le nom, la valeur, le type et la zone mémoire associés à une variable ;
- appliquer des règles de nommage claires et cohérentes ;
- distinguer une variable d’une constante ;
- utiliser des constantes symboliques pour améliorer la lisibilité et la maintenance ;
- choisir un type de donnée simple adapté à une information ;
- reconnaître les types entier, réel, booléen, caractère et chaîne de caractères ;
- réaliser une conversion de type simple ;
- repérer les risques de perte d’information ou d’échec lors d’une conversion ;
- concevoir des algorithmes simples de calcul et de conversion.
Prérequis
- connaître la structure générale d’un algorithme ;
- savoir utiliser les instructions Lire, Écrire et l’affectation ;
- maîtriser les opérations arithmétiques élémentaires ;
- comprendre l’exécution séquentielle d’une suite d’instructions.
Plan du chapitre
3.1 Notion de variable
3.2 Constantes
3.3 Types de données simples
3.4 Conversion de types
Applications, synthèse, exercices et corrigé indicatif
Organisation pédagogique indicative
Activité | Durée indicative | Objectif principal |
|---|---|---|
| Cours | 3 h | Présenter les données, leurs types et les conversions. |
| Travaux dirigés | 2 h | Choisir les types, tracer les valeurs et corriger des déclarations. |
| Travaux pratiques | 2 h | Mettre en œuvre les calculs et conversions dans un langage. |
Idée directrice du chapitre Un algorithme traite des données. Pour les mémoriser correctement, il faut leur attribuer un nom, connaître leur nature, prévoir les valeurs qu’elles peuvent prendre et choisir le type adapté. |
3.1 Notion de variable
3.1.1 Définition
Une variable est une information mémorisée pendant l’exécution d’un algorithme. Elle est identifiée par un nom et peut recevoir différentes valeurs compatibles avec son type. On peut la comparer à une boîte étiquetée : l’étiquette représente le nom de la variable, la nature de la boîte représente son type et le contenu représente sa valeur actuelle.
Définition à retenir Une variable est une zone de mémoire nommée, destinée à contenir une valeur susceptible de changer au cours de l’exécution d’un algorithme. |
Élément | Interprétation | Exemple |
|---|---|---|
| Nom | Identifiant utilisé dans l’algorithme. | age |
| Type | Nature des valeurs autorisées. | Entier |
| Valeur | Contenu actuel de la variable. | 21 |
| Zone mémoire | Emplacement réservé au stockage. | Emplacement géré par le système |
Exemple simple
| Variables age : Entier Début age ← 21 Écrire(age) Fin |
Dans cet exemple, la variable age est déclarée comme un entier. L’affectation age ← 21 place la valeur 21 dans la zone mémoire associée à cette variable. L’instruction Écrire(age) affiche ensuite la valeur mémorisée.
3.1.2 Nom d’une variable
Le nom d’une variable permet de la repérer et de l’utiliser dans les instructions. Un nom bien choisi doit indiquer clairement ce que la variable représente. Des noms explicites réduisent les erreurs et facilitent la lecture de l’algorithme par d’autres personnes.
Nom | Appréciation | Explication |
|---|---|---|
| temperature | Bon | Le contenu de la variable est immédiatement compréhensible. |
| nombre_etudiants | Bon | Le nom est précis et indique une quantité. |
| moyenne_notes | Bon | Le nom décrit le résultat mémorisé. |
| x | Acceptable dans un contexte mathématique court | Peu explicite dans un algorithme long. |
| a1 | À éviter sans contexte | Le rôle de la variable n’est pas identifiable. |
| variable | À éviter | Le nom ne renseigne pas sur l’information stockée. |
Bon réflexe Le nom d’une variable doit permettre de comprendre son rôle sans lire toutes les instructions qui l’utilisent. |
3.1.3 Valeur d’une variable
La valeur est le contenu actuel de la variable. Elle peut être fournie par l’utilisateur, calculée par l’algorithme ou modifiée par une nouvelle affectation. Une variable ne possède qu’une seule valeur à un instant donné : une nouvelle affectation remplace l’ancienne valeur.
Évolution d’une variable
| compteur ← 2 compteur ← compteur + 1 compteur ← compteur × 4 |
Après l’instruction | Valeur de compteur | Explication |
|---|---|---|
| compteur ← 2 | 2 | La valeur initiale devient 2. |
| compteur ← compteur + 1 | 3 | La valeur 2 est lue, augmentée de 1, puis remplacée par 3. |
| compteur ← compteur × 4 | 12 | La valeur 3 est multipliée par 4, puis remplacée par 12. |
Attention Dans une affectation, la partie droite est évaluée en premier. Le résultat obtenu est ensuite placé dans la variable située à gauche de la flèche. |
3.1.4 Type d’une variable
Le type précise la catégorie de valeurs qu’une variable peut contenir ainsi que les opérations qui peuvent lui être appliquées. Par exemple, on additionne des nombres, on concatène des chaînes de caractères et on applique des opérations logiques à des booléens.
Variable | Type adapté | Valeur possible | Opération typique |
|---|---|---|---|
| nombre_absences | Entier | 3 | Addition, comparaison |
| prix | Réel | 149,90 | Calcul numérique |
| est_admis | Booléen | Vrai | ET, OU, NON |
| initiale | Caractère | 'Y' | Comparaison |
| nom_complet | Chaîne | "Sara Amrani" | Concaténation |
3.1.5 Zone mémoire
Lorsqu’une variable est déclarée, le système réserve une zone de mémoire pour stocker sa valeur. Dans le pseudo-code, on ne manipule généralement pas l’adresse exacte de cette zone : on utilise le nom de la variable. Le langage de programmation et le système se chargent d’associer ce nom à un emplacement mémoire.
Nom symbolique | Type | Valeur actuelle | Représentation conceptuelle |
|---|---|---|---|
| age | Entier | 21 | Boîte contenant 21 |
| moyenne | Réel | 14,75 | Boîte contenant 14,75 |
| admis | Booléen | Vrai | Boîte contenant Vrai |
La quantité réelle de mémoire dépend du langage, de l’ordinateur et du type choisi. Un booléen, un entier, un réel ou une chaîne ne nécessitent pas nécessairement la même place. À ce niveau du cours, l’objectif est surtout de comprendre que chaque variable correspond à un espace de stockage distinct.
3.1.6 Déclaration, initialisation et modification
Trois opérations doivent être distinguées :
- Déclaration : création de la variable et indication de son type.
- Initialisation : première affectation d’une valeur à la variable.
- Modification : remplacement de la valeur actuelle par une nouvelle valeur.
| Variables note : Réel // Déclaration Début note ← 0 // Initialisation Lire(note) // Modification par une saisie note ← note + 1 // Nouvelle modification Fin |
Variable non initialisée Utiliser une variable avant de lui attribuer une valeur conduit à un résultat indéterminé ou à une erreur. Une variable doit être initialisée avant toute lecture de son contenu. |
3.1.7 Règles de nommage
Les conventions peuvent varier selon les langages, mais les règles suivantes constituent une base sûre pour le pseudo-code et la programmation :
- commencer le nom par une lettre ;
- utiliser des lettres, des chiffres et le caractère de soulignement « _ » ;
- ne pas utiliser d’espace ;
- éviter les accents et les caractères spéciaux dans les identifiants destinés à être traduits en programme ;
- ne pas utiliser un mot réservé comme Début, Fin, Si, Pour ou TantQue ;
- adopter un nom significatif ;
- respecter une convention uniforme dans tout l’algorithme.
Nom proposé | Valide ? | Correction ou commentaire |
|---|---|---|
| age | Oui | Nom simple et explicite. |
| prix_total | Oui | Les mots sont séparés par un soulignement. |
| note2 | Oui | Un chiffre est autorisé après le premier caractère. |
| 2note | Non | Le nom ne doit pas commencer par un chiffre. |
| prix total | Non | Les espaces ne sont pas autorisés. |
| prix-total | Non | Le tiret peut être interprété comme une soustraction. |
| Réel | À éviter | Il s’agit du nom d’un type. |
| Pour | Non | Mot réservé utilisé pour une structure répétitive. |
Conventions courantes
Convention | Exemple | Description |
|---|---|---|
| snake_case | nombre_etudiants | Mots en minuscules séparés par des soulignements. |
| camelCase | nombreEtudiants | Premier mot en minuscule, suivants avec une majuscule initiale. |
| PascalCase | NombreEtudiants | Chaque mot commence par une majuscule. |
| MAJUSCULES | TAUX_TVA | Souvent réservées aux constantes symboliques. |
Cohérence Aucune convention n’est universellement obligatoire dans un pseudo-code. En revanche, mélanger plusieurs conventions sans raison rend le travail difficile à lire. |
3.2 Constantes
3.2.1 Définition d’une constante
Une constante est une donnée dont la valeur est fixée une fois pour toutes et ne doit pas changer pendant l’exécution de l’algorithme. Elle représente généralement une valeur de référence : un taux, une limite, une constante mathématique, une taille maximale ou un message fixe.
Déclaration de constantes symboliques
| Constantes PI = 3,141592 TAUX_TVA = 0,20 NOTE_MAXIMALE = 20 SECONDES_PAR_MINUTE = 60 |
Définition à retenir Une constante symbolique associe un nom explicite à une valeur qui reste inchangée pendant toute l’exécution. |
3.2.2 Différence entre variable et constante
Critère | Variable | Constante |
|---|---|---|
| Valeur | Peut changer pendant l’exécution. | Reste fixe pendant l’exécution. |
| Déclaration | Nom et type, puis affectations possibles. | Nom associé à une valeur définie. |
| Usage | Résultats intermédiaires, saisies, compteurs. | Taux, limites, valeurs de référence. |
| Exemple | prix_ttc, age, compteur | PI, TAUX_TVA, NOTE_MAXIMALE |
| Réaffectation | Autorisée si le type reste compatible. | Interdite par principe. |
Variable et constante dans un même algorithme
| Constantes TAUX_REMISE = 0,10 Variables prix, remise, prix_final : Réel Début Lire(prix) remise ← prix × TAUX_REMISE prix_final ← prix - remise Écrire(prix_final) Fin |
Dans cet exemple, TAUX_REMISE ne change pas. En revanche, prix, remise et prix_final dépendent de la saisie et des calculs : ce sont donc des variables.
3.2.3 Utilisation de constantes symboliques
Une constante symbolique remplace une valeur littérale par un nom porteur de sens. Cette pratique améliore la qualité de l’algorithme de plusieurs manières :
- Lisibilité : TAUX_TVA est plus explicite que la valeur 0,20 répétée dans plusieurs calculs.
- Maintenance : si le taux change, une seule valeur doit être modifiée.
- Réduction des erreurs : la même référence est utilisée partout.
- Documentation : le nom explique la signification de la valeur.
- Réutilisation : la constante peut servir dans plusieurs expressions.
Écriture peu conseillée | Écriture conseillée |
|---|---|
| prix_ttc ← prix_ht + prix_ht × 0,20 | TAUX_TVA = 0,20 prix_ttc ← prix_ht + prix_ht × TAUX_TVA |
| surface ← 3,141592 × rayon × rayon | PI = 3,141592 surface ← PI × rayon × rayon |
| minutes ← secondes DIV 60 | SECONDES_PAR_MINUTE = 60 minutes ← secondes DIV SECONDES_PAR_MINUTE |
Valeurs littérales et valeurs symboliques
Une valeur littérale est écrite directement dans une instruction, par exemple 2, 60 ou 3,141592. Une valeur symbolique est représentée par un nom. Toutes les valeurs littérales ne doivent pas nécessairement devenir des constantes : les petites valeurs évidentes et utilisées une seule fois peuvent rester directement dans l’expression. Il convient surtout de nommer les valeurs qui possèdent une signification métier ou qui sont susceptibles d’être modifiées.
Exemple Dans la formule du périmètre d’un rectangle P = 2 × (L + l), la valeur 2 fait partie de la formule et reste compréhensible. En revanche, un taux de taxe ou une durée maximale gagne à être défini comme constante symbolique. |
3.3 Types de données simples
3.3.1 Pourquoi utiliser des types ?
Le type d’une donnée indique les valeurs possibles, les opérations autorisées et la manière dont la donnée est représentée en mémoire. Choisir le bon type permet d’éviter des calculs incohérents, de mieux contrôler les saisies et de traduire plus facilement l’algorithme dans un langage de programmation.
Type | Valeurs typiques | Opérations usuelles | Exemple de variable |
|---|---|---|---|
| Entier | -5, 0, 27 | +, −, ×, DIV, MOD, comparaisons | nombre_enfants |
| Réel | -2,5 ; 0,0 ; 19,75 | +, −, ×, /, comparaisons | temperature |
| Booléen | Vrai, Faux | ET, OU, NON | est_connecte |
| Caractère | 'A', '7', '?' | comparaison | reponse |
| Chaîne | "Maroc", "A12" | concaténation, longueur, comparaison | nom |
3.3.2 Type entier
Le type entier représente les nombres sans partie décimale. Il convient aux quantités dénombrables, aux indices, aux compteurs, aux années, aux âges exprimés en années entières et aux résultats de certaines divisions entières.
- nombre d’étudiants dans un groupe ;
- nombre de tentatives ;
- année de naissance ;
- position d’un élément dans un tableau ;
- nombre total de secondes.
| Variables nombre_etudiants, absents : Entier Début nombre_etudiants ← 32 absents ← 3 Écrire(nombre_etudiants - absents) Fin |
Division entière et reste
Deux opérations sont particulièrement utiles avec les entiers :
- DIV : donne le quotient entier d’une division.
- MOD : donne le reste de la division entière.
Expression | Résultat | Interprétation |
|---|---|---|
| 17 DIV 5 | 3 | Le nombre 5 entre trois fois entièrement dans 17. |
| 17 MOD 5 | 2 | Il reste 2 après avoir retiré 3 × 5. |
| 60 DIV 60 | 1 | Une minute complète. |
| 125 MOD 60 | 5 | Cinq secondes restantes après deux minutes. |
Attention Un entier ne convient pas à une mesure qui doit conserver une partie décimale. Stocker 14,75 dans une variable entière provoquerait une perte d’information ou une erreur selon le langage. |
3.3.3 Type réel
Le type réel représente les nombres qui peuvent comporter une partie décimale. Il est adapté aux mesures, aux moyennes, aux prix, aux distances, aux températures et aux résultats de divisions non entières.
Information | Exemple | Pourquoi Réel ? |
|---|---|---|
| Moyenne | 14,75 | La valeur peut contenir des décimales. |
| Température | 22,6 °C | La mesure n’est pas toujours entière. |
| Prix | 149,90 | Les centimes doivent être représentés. |
| Surface | 31,4159 | Le résultat d’un calcul géométrique peut être décimal. |
| Variables note1, note2, moyenne : Réel Début note1 ← 13,5 note2 ← 16 moyenne ← (note1 + note2) / 2 Écrire(moyenne) Fin |
Précision des réels Dans un programme, certains nombres décimaux ne peuvent pas être représentés exactement en mémoire. Des écarts très faibles peuvent apparaître. Pour les calculs financiers exigeants, on utilise souvent des types décimaux spécialisés ou des montants exprimés en unités minimales. |
3.3.4 Type booléen
Le type booléen ne possède que deux valeurs : Vrai et Faux. Il sert à représenter une situation logique, le résultat d’une comparaison ou l’état d’une condition.
Variable booléenne | Signification de Vrai | Signification de Faux |
|---|---|---|
| est_admis | L’étudiant est admis. | L’étudiant n’est pas admis. |
| mot_de_passe_valide | Le mot de passe respecte les règles. | Au moins une règle n’est pas respectée. |
| est_majeur | L’âge est supérieur ou égal à 18. | L’âge est inférieur à 18. |
| porte_ouverte | La porte est ouverte. | La porte est fermée. |
| Variables age : Entier est_majeur : Booléen Début Lire(age) est_majeur ← age >= 18 Écrire(est_majeur) Fin |
Opérateurs logiques
Opérateur | Signification | Exemple |
|---|---|---|
| ET | Vrai seulement si les deux conditions sont vraies. | (age >= 18) ET (age <= 30) |
| OU | Vrai si au moins une condition est vraie. | (jour = "samedi") OU (jour = "dimanche") |
| NON | Inverse la valeur logique. | NON(est_connecte) |
3.3.5 Type caractère
Le type caractère représente un seul symbole : une lettre, un chiffre considéré comme symbole, un signe de ponctuation ou un espace. Un caractère est généralement placé entre apostrophes dans le pseudo-code.
Valeur | Type | Interprétation |
|---|---|---|
| 'A' | Caractère | Une lettre majuscule. |
| '7' | Caractère | Le symbole 7, non le nombre entier 7. |
| '?' | Caractère | Un signe de ponctuation. |
| 7 | Entier | Le nombre sept, utilisable dans un calcul. |
| "A" | Chaîne | Une chaîne contenant un seul caractère. |
| Variables reponse : Caractère Début Écrire("Continuer ? O/N") Lire(reponse) Fin |
Caractère ou entier ? Le caractère '5' représente un symbole. L’entier 5 représente une quantité. On ne peut pas additionner directement le caractère '5' et l’entier 2 sans conversion préalable. |
3.3.6 Type chaîne de caractères
Une chaîne de caractères est une suite de zéro, un ou plusieurs caractères. Elle sert à mémoriser des noms, des phrases, des codes, des adresses ou toute information textuelle. Une chaîne est généralement placée entre guillemets.
Valeur | Type conseillé | Commentaire |
|---|---|---|
| "Youssef" | Chaîne | Nom composé de plusieurs caractères. |
| "A12B" | Chaîne | Code alphanumérique. |
| "2026" | Chaîne ou Entier selon l’usage | Texte si aucun calcul ; entier si opérations numériques. |
| "" | Chaîne vide | Ne contient aucun caractère. |
| "Bonjour le monde" | Chaîne | Phrase contenant des espaces. |
Concaténation
La concaténation consiste à assembler plusieurs chaînes. Selon la convention utilisée, elle peut être notée avec l’opérateur + ou avec un opérateur spécifique.
| prenom ← "Sara" nom ← "Amrani" nom_complet ← prenom + " " + nom Écrire(nom_complet) // Affiche : Sara Amrani |
Attention La chaîne "12" et l’entier 12 n’ont pas le même type. "12" + "3" peut produire "123" par concaténation, tandis que 12 + 3 produit 15. |
3.3.7 Choisir le type adapté
Le type doit être choisi en fonction de la nature de l’information et des traitements prévus. Il ne suffit pas d’observer l’apparence de la valeur : il faut également savoir comment elle sera utilisée.
Information | Type recommandé | Justification |
|---|---|---|
| Âge en années complètes | Entier | Une valeur entière suffit pour ce besoin. |
| Date de naissance écrite 15/07/2000 | Chaîne ou type Date dans un langage | Les séparateurs font partie de la représentation. |
| Numéro de téléphone | Chaîne | On ne réalise pas de calcul et le zéro initial doit être conservé. |
| Code postal | Chaîne | Peut contenir des zéros initiaux selon les pays. |
| Moyenne générale | Réel | La valeur peut comporter des décimales. |
| Réponse Oui/Non | Booléen ou Caractère | Booléen pour l’état ; caractère pour une saisie O/N. |
| CIN ou identifiant | Chaîne | Peut contenir lettres, chiffres et zéros initiaux. |
Compatibilité des opérations
Expression | Valide ? | Résultat ou problème |
|---|---|---|
| 12 + 3 | Oui | 15, calcul entier. |
| 12,5 + 3 | Oui | 15,5, calcul réel. |
| "12" + "3" | Oui selon la convention | "123", concaténation. |
| "12" + 3 | Non directement | Types incompatibles sans conversion. |
| Vrai ET Faux | Oui | Faux. |
| 'A' + 2 | Non directement | Conversion ou traitement spécifique nécessaire. |
Exercice guidé : choisir les types
Pour une application simple de gestion d’étudiants, proposer le type de chaque donnée : matricule, nom, note, nombre d’absences et état d’admission.
Donnée | Type proposé | Raison |
|---|---|---|
| matricule | Chaîne | Peut contenir des lettres et des chiffres. |
| nom | Chaîne | Information textuelle. |
| note | Réel | Possibilité de décimales. |
| nombre_absences | Entier | Quantité dénombrable. |
| est_admis | Booléen | Deux états possibles : Vrai ou Faux. |
3.4 Conversion de types
3.4.1 Définition et utilité
Une conversion de type transforme une valeur d’un type vers un autre type. Elle est nécessaire lorsqu’une donnée a été lue sous forme de texte mais doit être utilisée dans un calcul, lorsqu’un entier doit participer à une opération réelle ou lorsqu’un résultat doit être affiché dans une chaîne de caractères.
Exemple courant Une saisie clavier peut être reçue comme la chaîne "25". Pour calculer "25" + 5 comme une addition numérique, il faut convertir la chaîne en entier 25. |
3.4.2 Conversion d’un entier en réel
La conversion d’un entier en réel ajoute la possibilité de représenter une partie décimale. Elle ne provoque généralement pas de perte d’information pour les petites valeurs entières. Elle peut être réalisée explicitement ou automatiquement par le langage lorsque l’entier participe à une opération réelle.
| Variables nombre : Entier valeur_reelle : Réel Début nombre ← 7 valeur_reelle ← Réel(nombre) Écrire(valeur_reelle) // 7,0 Fin |
Avant conversion | Après conversion | Observation |
|---|---|---|
| 7 (Entier) | 7,0 (Réel) | La valeur numérique est conservée. |
| -3 (Entier) | -3,0 (Réel) | Le signe est conservé. |
| 0 (Entier) | 0,0 (Réel) | La représentation devient réelle. |
Division entière et division réelle
La présence d’un type réel peut modifier le résultat d’une division. Il faut distinguer le quotient entier du résultat décimal.
Expression | Résultat possible | Nature |
|---|---|---|
| 7 DIV 2 | 3 | Division entière. |
| 7 / 2 | 3,5 | Division réelle. |
| Réel(7) / 2 | 3,5 | Conversion explicite avant la division. |
3.4.3 Conversion d’une chaîne en nombre
Une chaîne peut contenir des chiffres sans être pour autant un nombre. Pour l’utiliser dans un calcul, il faut vérifier son format puis effectuer une conversion vers Entier ou Réel.
| Variables texte_age : Chaîne age : Entier Début texte_age ← "21" age ← Entier(texte_age) Écrire(age + 1) // Affiche 22 Fin |
Chaîne source | Conversion demandée | Résultat attendu |
|---|---|---|
| "25" | Entier | 25 |
| "-8" | Entier | -8 |
| "14,75" | Réel | 14,75 si le format décimal est reconnu |
| "12A" | Entier | Échec : présence d’une lettre |
| "bonjour" | Réel | Échec : contenu non numérique |
| "" | Entier | Échec ou valeur à traiter explicitement |
Validation préalable Avant de convertir une chaîne saisie par l’utilisateur, il faut vérifier qu’elle respecte le format attendu. Une conversion ne doit pas être considérée comme toujours réussie. |
Conversion d’un nombre en chaîne
L’opération inverse est utile pour construire un message ou concaténer une valeur numérique avec du texte.
| age ← 21 message ← "Vous avez " + Chaîne(age) + " ans." Écrire(message) |
3.4.4 Conversion explicite et implicite
Une conversion explicite est demandée clairement par l’algorithme. Une conversion implicite est réalisée automatiquement par le langage lorsqu’il estime que les types sont compatibles.
Conversion | Description | Exemple |
|---|---|---|
| Explicite | Le programmeur indique le type cible. | reel ← Réel(entier) |
| Implicite | Le langage convertit automatiquement une valeur. | reel ← entier + 0,5 |
| Explicite avec risque | Le type cible peut perdre de l’information. | entier ← Entier(12,9) |
La conversion explicite rend l’intention plus visible et facilite la relecture. La conversion implicite peut alléger l’écriture, mais son comportement dépend davantage du langage utilisé. Dans un cours d’algorithmique, il est préférable d’indiquer explicitement les conversions importantes.
3.4.5 Risques liés aux conversions
Risque | Exemple | Conséquence |
|---|---|---|
| Perte de décimales | Entier(12,9) | Le résultat peut devenir 12 selon la règle utilisée. |
| Chaîne non numérique | Entier("12A") | Échec de conversion. |
| Dépassement de capacité | Valeur trop grande pour le type cible | Erreur ou valeur incorrecte selon le langage. |
| Séparateur décimal | "14,5" ou "14.5" | Le format reconnu peut dépendre du langage ou de la locale. |
| Confusion concaténation/addition | "10" + "5" | Produit "105" au lieu de 15. |
| Arrondi | Réduction du nombre de décimales | Valeur approximative. |
| Conversion booléenne ambiguë | Booléen("Faux") | Une chaîne non vide peut parfois être interprétée comme vraie. |
Bonnes pratiques
- choisir le bon type dès la déclaration ;
- valider les données saisies avant la conversion ;
- indiquer explicitement les conversions susceptibles de modifier la valeur ;
- prévoir le cas où la conversion échoue ;
- ne pas utiliser un entier lorsque les décimales sont importantes ;
- vérifier le séparateur décimal attendu ;
- tester les valeurs limites et les entrées incorrectes.
Principe de prudence Une conversion doit être justifiée. Transformer une donnée uniquement pour contourner une incompatibilité peut masquer un mauvais choix de type au début de l’algorithme. |
Applications
Application 1 — Calcul de la surface d’un cercle
Analyse du problème
Élément | Contenu |
|---|---|
| Entrée | Rayon du cercle, de type Réel. |
| Constante | PI = 3,141592. |
| Traitement | surface ← PI × rayon × rayon. |
| Sortie | Surface du cercle, de type Réel. |
| Algorithme Surface_Cercle Constantes PI = 3,141592 Variables rayon, surface : Réel Début Écrire("Saisir le rayon : ") Lire(rayon) surface ← PI × rayon × rayon Écrire("Surface : ", surface) Fin |
Rayon | Calcul | Surface approximative |
|---|---|---|
| 2 | 3,141592 × 2 × 2 | 12,566368 |
| 5 | 3,141592 × 5 × 5 | 78,5398 |
Point pédagogique Le rayon et la surface sont réels, car ils peuvent comporter des décimales. PI est une constante symbolique, car sa valeur ne change pas pendant le calcul. |
Application 2 — Conversion d’une température
La conversion des degrés Celsius vers les degrés Fahrenheit utilise la formule F = C × 9 / 5 + 32.
Élément | Contenu |
|---|---|
| Entrée | Température en degrés Celsius, type Réel. |
| Traitement | fahrenheit ← celsius × 9 / 5 + 32. |
| Sortie | Température en degrés Fahrenheit, type Réel. |
| Algorithme Celsius_Vers_Fahrenheit Variables celsius, fahrenheit : Réel Début Lire(celsius) fahrenheit ← celsius × 9 / 5 + 32 Écrire(fahrenheit) Fin |
Celsius | Calcul | Fahrenheit |
|---|---|---|
| 0 | 0 × 9 / 5 + 32 | 32 |
| 20 | 20 × 9 / 5 + 32 | 68 |
| 37 | 37 × 9 / 5 + 32 | 98,6 |
Attention à la division Dans certains langages, une écriture entièrement entière peut provoquer une division entière. Utiliser des variables réelles ou écrire 9,0 / 5,0 permet de rendre l’intention explicite. |
Application 3 — Calcul de l’âge approximatif
Une première approximation de l’âge peut être obtenue en soustrayant l’année de naissance de l’année actuelle. Cette méthode ne tient pas compte du mois et du jour de naissance ; elle peut donc différer de l’âge exact d’une unité.
Élément | Contenu |
|---|---|
| Entrées | Année actuelle et année de naissance, type Entier. |
| Traitement | age_approximatif ← annee_actuelle - annee_naissance. |
| Sortie | Âge approximatif, type Entier. |
| Algorithme Age_Approximatif Variables annee_actuelle, annee_naissance, age_approximatif : Entier Début Lire(annee_actuelle) Lire(annee_naissance) age_approximatif ← annee_actuelle - annee_naissance Écrire(age_approximatif) Fin |
Année actuelle | Année de naissance | Résultat |
|---|---|---|
| 2026 | 2000 | 26 ans approximativement |
| 2026 | 1995 | 31 ans approximativement |
Limite du modèle Pour calculer l’âge exact, il faudrait comparer la date complète de naissance avec la date actuelle. L’algorithme présenté est volontairement simplifié pour illustrer les variables entières. |
Application 4 — Conversion d’une durée
On souhaite convertir une durée totale exprimée en secondes en heures, minutes et secondes. Cette application met en évidence l’utilité des entiers, de DIV et de MOD.
Élément | Contenu |
|---|---|
| Entrée | Durée totale en secondes, type Entier. |
| Constantes | SECONDES_PAR_HEURE = 3600 ; SECONDES_PAR_MINUTE = 60. |
| Traitement | Quotients entiers et restes successifs. |
| Sorties | Nombre d’heures, de minutes et de secondes restantes. |
| Algorithme Convertir_Duree Constantes SECONDES_PAR_HEURE = 3600 SECONDES_PAR_MINUTE = 60 Variables duree, heures, minutes, secondes, reste : Entier Début Lire(duree) heures ← duree DIV SECONDES_PAR_HEURE reste ← duree MOD SECONDES_PAR_HEURE minutes ← reste DIV SECONDES_PAR_MINUTE secondes ← reste MOD SECONDES_PAR_MINUTE Écrire(heures, " h ", minutes, " min ", secondes, " s") Fin |
Durée totale | Heures | Reste après heures | Minutes | Secondes |
|---|---|---|---|---|
| 3 725 s | 1 | 125 s | 2 | 5 |
| 7 380 s | 2 | 180 s | 3 | 0 |
| 59 s | 0 | 59 s | 0 | 59 |
Résultat pour 3 725 secondes 3 725 secondes correspondent à 1 heure, 2 minutes et 5 secondes. |
Synthèse du chapitre
Notion | Définition essentielle | Exemple |
|---|---|---|
| Variable | Zone mémoire nommée dont la valeur peut changer. | age : Entier |
| Nom | Identifiant significatif permettant d’utiliser une donnée. | nombre_etudiants |
| Valeur | Contenu actuel de la variable. | 32 |
| Type | Nature des valeurs et des opérations autorisées. | Réel |
| Constante | Valeur symbolique qui ne change pas. | PI = 3,141592 |
| Entier | Nombre sans partie décimale. | -4, 0, 18 |
| Réel | Nombre pouvant comporter une partie décimale. | 14,75 |
| Booléen | Valeur logique Vrai ou Faux. | est_admis |
| Caractère | Un seul symbole. | 'A' |
| Chaîne | Suite de caractères. | "Algorithmique" |
| Conversion | Transformation d’une valeur vers un autre type. | Entier("25") |
À retenir
- une variable doit être déclarée et initialisée avant l’utilisation de sa valeur ;
- le nom d’une variable doit être valide, cohérent et significatif ;
- une nouvelle affectation remplace l’ancienne valeur ;
- une constante symbolique améliore la lisibilité et la maintenance ;
- le type dépend de la nature de l’information et des traitements prévus ;
- les identifiants et numéros non calculés sont souvent mieux représentés par des chaînes ;
- une conversion peut échouer ou perdre de l’information ;
- les saisies doivent être validées avant une conversion numérique.
Erreurs fréquentes
Erreur | Pourquoi est-ce incorrect ? | Correction |
|---|---|---|
| Utiliser total avant son initialisation | La valeur de départ est inconnue. | Initialiser total, souvent à 0. |
| Déclarer une moyenne comme Entier | Les décimales peuvent être perdues. | Utiliser le type Réel. |
| Stocker un téléphone comme Entier | Le zéro initial peut disparaître et aucun calcul n’est utile. | Utiliser une Chaîne. |
| Modifier PI pendant l’exécution | PI doit rester une valeur de référence fixe. | Déclarer PI comme constante. |
| Additionner "12" et 3 | Les types chaîne et entier sont incompatibles. | Convertir "12" en Entier. |
| Nommer une variable 2note | Un identifiant ne commence pas par un chiffre. | Utiliser note2. |
Travaux dirigés et exercices d’application
Exercice 1 — Identifier les composants d’une variable
On considère la déclaration et les instructions suivantes :
| Variables prix : Réel Début prix ← 120,50 prix ← prix + 10 Fin |
1. Indiquer le nom et le type de la variable.
2. Donner sa valeur après la première affectation.
3. Donner sa valeur finale.
4. Expliquer ce qui arrive à l’ancienne valeur après la seconde affectation.
Exercice 2 — Corriger les noms
Pour chaque identifiant, indiquer s’il est valide. Lorsqu’il ne l’est pas, proposer une correction : 1note, nom étudiant, prix-total, moyenne_generale, Pour, adresseEmail, TAUX_TVA.
Exercice 3 — Variable ou constante ?
Classer les données suivantes : taux de TVA fixé, prix saisi par le client, nombre maximal de tentatives, compteur de tentatives, valeur de PI, température mesurée, note maximale 20, moyenne calculée.
Exercice 4 — Choisir le type
Proposer le type le plus adapté pour : le prénom, le nombre de pages, le prix d’un livre, la réponse O/N, l’état de connexion, un numéro de téléphone, la note moyenne et un code produit comme A-203.
Exercice 5 — Tracer les variables
| a ← 5 b ← 2 a ← a + b b ← a × 2 a ← b - 3 |
Compléter un tableau indiquant la valeur de a et de b après chaque instruction.
Exercice 6 — Conversions
1. Convertir la chaîne "48" en entier, puis ajouter 2.
2. Convertir l’entier 7 en réel, puis le diviser par 2.
3. Expliquer pourquoi la conversion Entier("4A") échoue.
4. Donner la différence entre "12" + "5" et 12 + 5.
5. Indiquer le risque de convertir le réel 19,8 en entier.
Exercice 7 — Algorithme à concevoir
Écrire un algorithme qui lit un prix hors taxe, utilise une constante TAUX_TVA, calcule le montant de la TVA et affiche le prix toutes taxes comprises. Les données numériques doivent être de type Réel.
Exercice 8 — Durée
Écrire un algorithme qui convertit une durée en minutes en un nombre d’heures et de minutes. Exemple : 135 minutes donnent 2 heures et 15 minutes.
Corrigé indicatif
Correction de l’exercice 1
- Nom : prix.
- Type : Réel.
- Après prix ← 120,50 : la valeur est 120,50.
- Après prix ← prix + 10 : la valeur finale est 130,50.
- L’ancienne valeur est lue pour effectuer le calcul, puis remplacée par la nouvelle valeur.
Correction de l’exercice 2
Identifiant | Réponse | Correction possible |
|---|---|---|
| 1note | Invalide | note1 |
| nom étudiant | Invalide | nom_etudiant |
| prix-total | Invalide | prix_total |
| moyenne_generale | Valide | Aucune correction. |
| Pour | Invalide | nombre_iterations ou autre nom explicite. |
| adresseEmail | Valide | Convention camelCase. |
| TAUX_TVA | Valide pour une constante | Convention claire. |
Correction de l’exercice 3
Donnée | Catégorie |
|---|---|
| Taux de TVA fixé | Constante |
| Prix saisi | Variable |
| Nombre maximal de tentatives | Constante |
| Compteur de tentatives | Variable |
| PI | Constante |
| Température mesurée | Variable |
| Note maximale 20 | Constante |
| Moyenne calculée | Variable |
Correction de l’exercice 4
Information | Type proposé |
|---|---|
| Prénom | Chaîne |
| Nombre de pages | Entier |
| Prix d’un livre | Réel |
| Réponse O/N | Caractère |
| État de connexion | Booléen |
| Numéro de téléphone | Chaîne |
| Note moyenne | Réel |
| Code produit A-203 | Chaîne |
Correction de l’exercice 5
Instruction exécutée | a | b |
|---|---|---|
| a ← 5 | 5 | Non initialisée |
| b ← 2 | 5 | 2 |
| a ← a + b | 7 | 2 |
| b ← a × 2 | 7 | 14 |
| a ← b - 3 | 11 | 14 |
Correction de l’exercice 6
- Entier("48") + 2 donne 50.
- Réel(7) / 2 donne 3,5.
- "4A" contient une lettre et ne représente pas un entier valide.
- "12" + "5" peut donner "125" par concaténation, alors que 12 + 5 donne 17.
- La conversion de 19,8 vers Entier peut supprimer la partie décimale et produire 19 selon la règle du langage.
Correction de l’exercice 7
| Algorithme Calculer_Prix_TTC Constantes TAUX_TVA = 0,20 Variables prix_ht, montant_tva, prix_ttc : Réel Début Lire(prix_ht) montant_tva ← prix_ht × TAUX_TVA prix_ttc ← prix_ht + montant_tva Écrire(montant_tva, prix_ttc) Fin |
Correction de l’exercice 8
| Algorithme Convertir_Minutes Constantes MINUTES_PAR_HEURE = 60 Variables duree, heures, minutes : Entier Début Lire(duree) heures ← duree DIV MINUTES_PAR_HEURE minutes ← duree MOD MINUTES_PAR_HEURE Écrire(heures, " h ", minutes, " min") Fin |
Auto-évaluation
L’étudiant peut vérifier ses acquis en répondant aux questions suivantes :
- Suis-je capable d’expliquer la différence entre une variable et une constante ?
- Puis-je choisir un nom de variable valide et significatif ?
- Sais-je distinguer une valeur, un type et une zone mémoire ?
- Puis-je choisir entre Entier, Réel, Booléen, Caractère et Chaîne ?
- Sais-je expliquer la différence entre le caractère '7', la chaîne "7" et l’entier 7 ?
- Puis-je utiliser DIV et MOD dans une conversion de durée ?
- Sais-je expliquer pourquoi une conversion peut échouer ?
- Puis-je concevoir un algorithme simple utilisant variables et constantes ?
Conclusion La maîtrise des variables, des constantes et des types constitue une base indispensable. Les structures conditionnelles et répétitives étudiées ensuite s’appuieront constamment sur des données correctement déclarées, mises à jour et comparées. |