Chapitre 2 — Structure générale d’un algorithme
Comprendre l’organisation, les instructions élémentaires et l’ordre d’exécution
Fiche pédagogique du chapitre
Objectifs d’apprentissage
À la fin de ce chapitre, l’étudiant devra être capable de :
- identifier les différentes parties qui composent un algorithme ;
- choisir un nom d’algorithme clair et conforme aux règles de nommage ;
- distinguer la partie déclarative de la partie principale ;
- déclarer correctement des variables et des constantes ;
- utiliser les instructions d’affectation, de lecture et d’écriture ;
- insérer des commentaires utiles sans surcharger l’algorithme ;
- expliquer le principe de l’exécution séquentielle ;
- réaliser le traçage manuel d’un algorithme simple ;
- déterminer l’état d’une variable avant et après chaque instruction.
Prérequis
- comprendre la notion générale d’algorithme ;
- savoir distinguer un problème, un algorithme et un programme ;
- reconnaître les notions d’entrée, de traitement et de sortie ;
- maîtriser les opérations arithmétiques élémentaires.
Plan du chapitre
2.1 Organisation d’un algorithme
2.2 Instructions élémentaires
2.3 Ordre d’exécution
Synthèse, exercices d’application et corrigé indicatif
Organisation pédagogique indicative
Activité | Durée indicative | Objectif principal |
|---|---|---|
| Cours | 2 h | Présenter la structure et les instructions fondamentales. |
| Travaux dirigés | 2 h | Analyser, compléter et tracer des algorithmes simples. |
| Travaux pratiques | 2 h | Traduire les algorithmes dans un langage de programmation. |
Idée directrice du chapitre Un algorithme n’est pas une suite de phrases placées au hasard. Il possède une organisation identifiable : on précise d’abord les données nécessaires, puis on décrit les instructions à exécuter dans un ordre déterminé. |
2.1 Organisation d’un algorithme
2.1.1 Vue d’ensemble
Un algorithme simple est généralement composé de deux grandes parties : une partie déclarative et une partie principale. L’ensemble est encadré par un nom, une instruction de début et une instruction de fin. Cette organisation permet au lecteur de repérer immédiatement les données utilisées et les actions exécutées.
Structure générale
| Algorithme Nom_Algorithme Constantes nom_constante = valeur Variables nom_variable : Type Début instruction 1 instruction 2 ... Fin |
Élément | Fonction | Question à se poser |
|---|---|---|
| Nom de l’algorithme | Identifier clairement la solution proposée. | Quel problème cet algorithme résout-il ? |
| Partie déclarative | Présenter les constantes et variables nécessaires. | Quelles données faut-il mémoriser ? |
| Début | Marquer le commencement des instructions exécutables. | À partir de quel point commence le traitement ? |
| Partie principale | Décrire les actions dans leur ordre d’exécution. | Que doit faire l’algorithme, étape par étape ? |
| Fin | Marquer l’arrêt de l’algorithme. | À quel moment le traitement est-il terminé ? |
Remarque La syntaxe exacte du pseudo-code peut varier selon les établissements ou les ouvrages. L’essentiel est d’adopter une convention cohérente, lisible et utilisée de manière constante dans tout le cours. |
2.1.2 Nom de l’algorithme
Le nom de l’algorithme est placé au début. Il résume l’objectif principal et permet de distinguer l’algorithme d’autres solutions. Un bon nom doit être court, explicite et directement lié au problème traité.
- Privilégier un verbe ou un groupe nominal explicite : Calculer_Moyenne, Convertir_Temperature, Perimetre_Rectangle.
- Éviter les noms trop vagues : Algo1, Test, Programme, Exercice.
- Éviter les espaces dans le nom : on utilise généralement le caractère de soulignement « _ ».
- Éviter les caractères spéciaux : ponctuation, symboles mathématiques ou lettres susceptibles de poser un problème dans un langage de programmation.
- Conserver une convention stable : par exemple, commencer chaque mot par une majuscule ou utiliser uniquement des minuscules séparées par des soulignements.
Nom proposé | Appréciation | Justification |
|---|---|---|
| Perimetre_Rectangle | Bon | L’objectif est immédiatement identifiable. |
| CalculerPrixTTC | Bon | Le nom décrit clairement le traitement réalisé. |
| Algo2 | À éviter | Le nom ne renseigne pas sur le problème résolu. |
| calcul moyenne | À corriger | La présence d’un espace est déconseillée. |
| X | À éviter | Le nom est trop court et ne possède aucune signification pédagogique. |
Exemple
| Algorithme Perimetre_Rectangle ... |
Bon réflexe Le nom de l’algorithme doit permettre à un autre étudiant de deviner sa fonction sans avoir à lire toutes les instructions. |
2.1.3 Partie déclarative
La partie déclarative présente les informations que l’algorithme devra mémoriser pendant son exécution. Elle contient principalement les constantes et les variables. Déclarer une donnée consiste à préciser son nom et, le plus souvent, son type.
Constantes
Une constante est une donnée dont la valeur ne change pas pendant l’exécution. Elle est utile pour représenter une valeur fixe possédant un sens particulier, comme un taux, une limite ou une valeur mathématique.
| Constantes TAUX_TVA = 0,20 NOTE_MAXIMALE = 20 |
Variables
Une variable est une zone de mémoire identifiée par un nom. Sa valeur peut évoluer au cours de l’exécution. Le type indique la nature des valeurs qu’elle peut contenir : entier, réel, booléen, caractère ou chaîne de caractères.
Type | Nature des valeurs | Exemples |
|---|---|---|
| Entier | Nombres sans partie décimale. | -3, 0, 12, 2026 |
| Réel | Nombres pouvant posséder une partie décimale. | 2,5 ; 19,75 ; -0,4 |
| Booléen | Valeur logique vraie ou fausse. | Vrai, Faux |
| Caractère | Un seul symbole. | A, ?, 7 |
| Chaîne | Suite de caractères. | "Algorithmique", "ENSA" |
Exemple de déclaration
| Variables longueur, largeur, perimetre : Réel nombre_etudiants : Entier admis : Booléen nom : Chaîne |
Pourquoi déclarer ? La déclaration améliore la lisibilité, évite l’utilisation de noms incohérents et permet de vérifier que les opérations appliquées à une variable sont compatibles avec son type. |
2.1.4 Partie principale
La partie principale contient les instructions exécutables. Elle décrit le traitement à effectuer dans l’ordre où les actions doivent être réalisées. Dans un premier temps, les algorithmes étudiés sont séquentiels : chaque instruction est exécutée une seule fois, de haut en bas.
- les données peuvent être saisies à l’aide d’instructions de lecture ;
- les valeurs peuvent être calculées ou modifiées par des affectations ;
- les résultats peuvent être communiqués par des instructions d’écriture ;
- les commentaires expliquent une intention, mais ne sont pas exécutés.
Exemple de partie principale
| Début Lire(longueur) Lire(largeur) perimetre ← 2 × (longueur + largeur) Écrire("Périmètre : ", perimetre) Fin |
Indentation et présentation
Les instructions de la partie principale sont décalées vers la droite. Cette indentation ne change pas le résultat mathématique, mais elle rend la structure visuelle plus facile à comprendre. Elle deviendra indispensable lorsque le cours abordera les conditions, les boucles, les fonctions et les procédures.
Présentation conseillée | Présentation déconseillée |
|---|---|
| Début Lire(a) Lire(b) somme ← a + b Écrire(somme) Fin | Début Lire(a) Lire(b) somme ← a+b Écrire(somme) Fin |
2.1.5 Instructions de début et de fin
Les mots-clés Début et Fin délimitent la partie exécutable de l’algorithme. Ils indiquent clairement où commence le traitement et où il s’achève. Tout ce qui se trouve avant Début appartient normalement à l’en-tête ou à la partie déclarative.
À retenir Les déclarations décrivent les données ; les instructions placées entre Début et Fin décrivent les actions. |
Exemple complet et annoté
Le problème consiste à calculer le prix toutes taxes comprises à partir d’un prix hors taxe et d’un taux de TVA fixé à 20 %.
| Algorithme Calculer_Prix_TTC // Nom de l’algorithme Constantes TAUX_TVA = 0,20 // Donnée fixe Variables prix_ht, montant_tva, prix_ttc : Réel Début // Début du traitement Écrire("Saisir le prix HT : ") Lire(prix_ht) montant_tva ← prix_ht × TAUX_TVA prix_ttc ← prix_ht + montant_tva Écrire("Prix TTC : ", prix_ttc) Fin // Fin du traitement |
Donnée | Rôle | Évolution pendant l’exécution |
|---|---|---|
| TAUX_TVA | Constante utilisée dans le calcul. | Ne change pas. |
| prix_ht | Valeur fournie par l’utilisateur. | Reçoit une valeur lors de la lecture. |
| montant_tva | Résultat intermédiaire. | Reçoit le produit prix_ht × TAUX_TVA. |
| prix_ttc | Résultat final. | Reçoit la somme du prix HT et de la TVA. |
2.2 Instructions élémentaires
Les instructions élémentaires constituent les briques de base d’un algorithme. Avant d’étudier les choix et les répétitions, il faut maîtriser les opérations simples permettant de créer des données, de leur attribuer une valeur, de recevoir des informations et d’afficher des résultats.
Instruction | Rôle | Forme générale |
|---|---|---|
| Déclaration | Créer une donnée et préciser son type. | nom_variable : Type |
| Affectation | Placer une valeur dans une variable. | variable ← expression |
| Lecture | Recevoir une valeur depuis l’extérieur. | Lire(variable) |
| Écriture | Afficher une information ou un résultat. | Écrire(expression) |
| Commentaire | Expliquer une intention sans exécution. | // texte du commentaire |
2.2.1 Déclaration
La déclaration prépare les données utilisées par l’algorithme. Elle associe un nom à un type. Selon les conventions, plusieurs variables de même type peuvent être déclarées sur la même ligne.
| Variables age : Entier taille, poids, imc : Réel nom_complet : Chaîne est_majeur : Booléen |
Règles de nommage des variables
- utiliser un nom qui exprime le contenu de la variable ;
- ne pas commencer par un chiffre ;
- ne pas utiliser d’espace ;
- éviter les accents et les caractères spéciaux lorsqu’une traduction en programme est prévue ;
- ne pas utiliser un mot-clé du pseudo-code ou du langage de programmation ;
- conserver la même orthographe à chaque utilisation.
Nom | Appréciation | Explication |
|---|---|---|
| moyenne_notes | Correct | Nom explicite et sans espace. |
| n | Possible mais peu lisible | Acceptable seulement si le contexte est évident. |
| 2eme_note | Incorrect | Un identificateur ne doit pas commencer par un chiffre. |
| prix total | Incorrect | L’espace doit être remplacé par un soulignement. |
| réel | Déconseillé | Le nom ressemble à un mot désignant un type. |
Erreur fréquente Déclarer une variable ne signifie pas nécessairement lui attribuer une valeur. Une variable déclarée mais non initialisée ne doit pas être utilisée dans un calcul. |
2.2.2 Affectation
L’affectation place une valeur dans une variable. Elle est représentée en pseudo-code par une flèche orientée vers la variable : ←. L’expression placée à droite est d’abord évaluée, puis son résultat est enregistré dans la variable située à gauche.
| age ← 20 somme ← note1 + note2 + note3 moyenne ← somme / 3 compteur ← compteur + 1 |
Instruction | Interprétation |
|---|---|
| x ← 5 | La variable x reçoit la valeur 5. |
| y ← x + 2 | On calcule x + 2, puis y reçoit le résultat. |
| x ← x + 1 | On utilise l’ancienne valeur de x, on ajoute 1, puis on remplace x par le résultat. |
| nom ← "Sara" | La chaîne « Sara » est mémorisée dans nom. |
Affectation et égalité mathématique
L’affectation ne doit pas être confondue avec l’égalité mathématique. En mathématiques, l’écriture x = x + 1 est impossible. En algorithmique, x ← x + 1 signifie que la nouvelle valeur de x est calculée à partir de son ancienne valeur.
Lecture correcte de l’affectation Lire « x reçoit x plus 1 » et non « x est égal à x plus 1 ». |
Compatibilité des types
La valeur affectée doit être compatible avec le type de la variable. Une variable entière peut recevoir 12, mais elle ne devrait pas recevoir directement une chaîne comme « douze ». Les conversions de types seront étudiées lors du passage à la programmation.
Variable déclarée | Affectation | Validité |
|---|---|---|
| age : Entier | age ← 21 | Valide |
| moyenne : Réel | moyenne ← 14,75 | Valide |
| nom : Chaîne | nom ← "Amine" | Valide |
| admis : Booléen | admis ← Vrai | Valide |
| age : Entier | age ← "vingt" | Incompatible |
Exemple : échanger deux valeurs
Pour échanger le contenu de deux variables, une variable temporaire est nécessaire afin de ne pas perdre la première valeur.
| temporaire ← a a ← b b ← temporaire |
Pourquoi une variable temporaire ? Si l’on écrit directement a ← b puis b ← a, l’ancienne valeur de a est perdue dès la première instruction. Les deux variables finissent avec la même valeur. |
2.2.3 Lecture
L’instruction de lecture permet à l’algorithme de recevoir une valeur provenant de l’utilisateur, d’un fichier, d’un capteur ou d’un autre système. Dans les premiers exercices, on considère généralement que la valeur est saisie au clavier.
| Écrire("Saisir votre âge : ") Lire(age) |
Lors de l’exécution, l’algorithme s’arrête temporairement au niveau de Lire(age), attend une valeur, puis place cette valeur dans la variable age. La variable doit avoir été déclarée auparavant.
Étape | Action | État de la variable age |
|---|---|---|
| Avant la lecture | La variable est déclarée mais aucune saisie n’a encore été effectuée. | Non définie ou non initialisée. |
| Pendant la lecture | L’algorithme attend la saisie de l’utilisateur. | En attente. |
| Après la saisie de 22 | La valeur saisie est stockée. | age vaut 22. |
Invite de saisie
Il est conseillé d’afficher un message avant une lecture afin que l’utilisateur sache quelle information fournir. Une suite d’instructions Lire(a), Lire(b) sans explication peut fonctionner, mais elle rend l’utilisation difficile.
À éviter | À privilégier |
|---|---|
| Lire(longueur) Lire(largeur) | Écrire("Longueur : ") Lire(longueur) Écrire("Largeur : ") Lire(largeur) |
Point de vigilance La lecture ne garantit pas que la valeur saisie est correcte. Le contrôle des données sera approfondi avec les structures conditionnelles et répétitives. |
2.2.4 Écriture
L’instruction d’écriture communique une information. Elle peut afficher un texte fixe, la valeur d’une variable, le résultat d’une expression ou une combinaison de plusieurs éléments.
| Écrire("Bonjour") Écrire(age) Écrire("Votre âge est : ", age) Écrire("Somme : ", a + b) |
Écriture | Résultat possible |
|---|---|
| Écrire("Bonjour") | Bonjour |
| Écrire(12 + 3) | 15 |
| Écrire("Périmètre : ", perimetre) | Périmètre : 30 |
| Écrire(nom, " a obtenu ", moyenne) | Sara a obtenu 15,5 |
Texte et variables
Le texte fixe est généralement placé entre guillemets. Le nom d’une variable n’est pas placé entre guillemets, car l’algorithme doit afficher son contenu et non son nom.
Instruction | Ce qui est affiché |
|---|---|
| Écrire("age") | Le mot age. |
| Écrire(age) | La valeur contenue dans la variable age. |
| Écrire("Âge : ", age) | Un libellé suivi de la valeur. |
Bonne pratique Toujours accompagner un résultat d’un libellé et, si nécessaire, de son unité : « Distance : 15 km » est plus clair que « 15 ». |
2.2.5 Commentaires
Un commentaire est un texte destiné au lecteur. Il explique l’objectif d’une instruction, justifie un choix ou sépare les grandes étapes. Il n’est pas exécuté par l’ordinateur. Dans ce support, on utilise la notation // pour introduire un commentaire sur une ligne.
| // Lecture des dimensions du rectangle Lire(longueur) Lire(largeur) // Calcul selon la formule P = 2 × (L + l) perimetre ← 2 × (longueur + largeur) |
Caractéristiques d’un bon commentaire
- il explique l’intention plutôt que de répéter mot à mot l’instruction ;
- il reste court et directement lié au traitement ;
- il est mis à jour lorsque l’algorithme change ;
- il aide à comprendre un calcul, une convention ou une étape importante ;
- il n’est pas utilisé pour compenser des noms de variables imprécis.
Commentaire | Appréciation |
|---|---|
| // Ajouter 1 à compteur | Peu utile : l’instruction compteur ← compteur + 1 est déjà explicite. |
| // Passer à l’étudiant suivant | Utile : le commentaire explique l’intention du changement. |
| // Le taux est fixé par l’énoncé | Utile : il justifie la présence d’une constante. |
| // Calcul | Trop vague : il n’apporte aucune information réelle. |
Principe Un algorithme bien nommé et bien structuré nécessite peu de commentaires. Les commentaires doivent éclairer le raisonnement, non décrire l’évidence. |
Exemple intégrateur : conversion d’une durée
On souhaite convertir une durée exprimée en secondes en heures, minutes et secondes. Cet exemple réunit la déclaration, la lecture, l’affectation, l’écriture et les commentaires.
| Algorithme Convertir_Duree Variables total_secondes, heures, minutes, secondes_restantes : Entier Début Écrire("Durée totale en secondes : ") Lire(total_secondes) // Calcul du nombre d’heures complètes heures ← total_secondes div 3600 // Calcul des minutes après retrait des heures minutes ← (total_secondes mod 3600) div 60 // Secondes restantes secondes_restantes ← total_secondes mod 60 Écrire(heures, " h ", minutes, " min ", secondes_restantes, " s") Fin |
Si total_secondes vaut | heures | minutes | secondes_restantes | Affichage |
|---|---|---|---|---|
| 3665 | 1 | 1 | 5 | 1 h 1 min 5 s |
| 7200 | 2 | 0 | 0 | 2 h 0 min 0 s |
| 59 | 0 | 0 | 59 | 0 h 0 min 59 s |
Notations div et mod div représente la division entière ; mod donne le reste d’une division entière. Ces opérateurs seront réutilisés dans de nombreux exercices. |
2.3 Ordre d’exécution
2.3.1 Exécution séquentielle
Dans un algorithme séquentiel, les instructions sont exécutées une par une, de haut en bas, dans l’ordre où elles sont écrites. Une instruction ne commence normalement qu’après la fin de l’instruction précédente.
| a ← 4 b ← 7 somme ← a + b a ← 10 Écrire(somme) |
L’affichage vaut 11 et non 17. La variable somme a été calculée avant que a ne reçoive la valeur 10. Une affectation ultérieure de a ne modifie pas automatiquement les valeurs déjà calculées et enregistrées dans d’autres variables.
Ordre | Instruction | Effet |
|---|---|---|
| 1 | a ← 4 | a vaut 4. |
| 2 | b ← 7 | b vaut 7. |
| 3 | somme ← a + b | somme reçoit 11. |
| 4 | a ← 10 | a vaut maintenant 10 ; somme reste 11. |
| 5 | Écrire(somme) | L’algorithme affiche 11. |
Dépendance entre les instructions
L’ordre devient particulièrement important lorsqu’une instruction utilise une valeur calculée auparavant. Une variable doit être initialisée avant d’être lue dans une expression.
Ordre correct | Ordre incorrect |
|---|---|
| prix_tva ← prix_ht × taux prix_ttc ← prix_ht + prix_tva | prix_ttc ← prix_ht + prix_tva prix_tva ← prix_ht × taux |
Erreur fréquente Utiliser une variable avant de lui avoir attribué une valeur conduit à un résultat indéterminé ou à une erreur lors de la traduction en programme. |
2.3.2 Traçage manuel d’un algorithme
Le traçage manuel consiste à simuler l’exécution d’un algorithme sur papier. On suit les instructions dans l’ordre et on note, après chaque étape, la valeur des variables. Cette méthode permet de comprendre le fonctionnement, de vérifier un résultat et de détecter une erreur logique avant la programmation.
Méthode de traçage
1. Choisir un jeu de données d’entrée.
2. Écrire les variables dans les colonnes d’une table de trace.
3. Commencer avec des valeurs non définies pour les variables non initialisées.
4. Exécuter mentalement la première instruction.
5. Mettre à jour uniquement les variables modifiées par cette instruction.
6. Continuer jusqu’à l’instruction Fin.
7. Comparer la sortie obtenue avec le résultat attendu.
Exemple de traçage
| Algorithme Exemple_Trace Variables a, b, c : Entier Début a ← 3 b ← a + 2 a ← b × 2 c ← a - b Écrire(a, b, c) Fin |
Étape | Instruction | a | b | c | Observation |
|---|---|---|---|---|---|
| 0 | Début | — | — | — | Aucune variable n’est initialisée. |
| 1 | a ← 3 | 3 | — | — | Seule a est modifiée. |
| 2 | b ← a + 2 | 3 | 5 | — | b reçoit 3 + 2. |
| 3 | a ← b × 2 | 10 | 5 | — | La nouvelle valeur de a remplace 3. |
| 4 | c ← a - b | 10 | 5 | 5 | c reçoit 10 - 5. |
| 5 | Écrire(a, b, c) | 10 | 5 | 5 | Valeurs affichées : 10, 5, 5. |
Notation « — » Dans une table de trace, le symbole — indique qu’aucune valeur n’a encore été attribuée à la variable. Il ne faut pas le confondre avec zéro. |
2.3.3 État d’une variable avant et après une instruction
L’état d’un algorithme correspond à l’ensemble des valeurs actuellement mémorisées dans ses variables. Chaque instruction peut conserver cet état ou le modifier. Pour comprendre une affectation, il est utile de distinguer l’ancienne valeur de la nouvelle valeur.
Instruction | État avant | Calcul effectué | État après |
|---|---|---|---|
| x ← 8 | x non définie | Valeur fixe 8 | x = 8 |
| x ← x + 3 | x = 8 | 8 + 3 | x = 11 |
| y ← 2 × x | x = 11 ; y non définie | 2 × 11 | x = 11 ; y = 22 |
| x ← y - 5 | x = 11 ; y = 22 | 22 - 5 | x = 17 ; y = 22 |
Une affectation modifie uniquement la variable située à gauche de la flèche. Les variables utilisées à droite servent au calcul, mais leur valeur ne change pas sauf si une autre instruction les modifie explicitement.
Exemple : évolution d’un compteur
| compteur ← 0 compteur ← compteur + 1 compteur ← compteur + 1 compteur ← compteur + 3 |
Après l’instruction | Valeur de compteur |
|---|---|
| compteur ← 0 | 0 |
| compteur ← compteur + 1 | 1 |
| compteur ← compteur + 1 | 2 |
| compteur ← compteur + 3 | 5 |
Exemple : perte d’une ancienne valeur
Lorsqu’une variable reçoit une nouvelle valeur, son ancienne valeur est remplacée. Elle n’est plus accessible, sauf si elle a été préalablement copiée dans une autre variable.
| x ← 12 ancien_x ← x x ← 25 |
À la fin, x vaut 25 et ancien_x vaut 12. Sans la deuxième instruction, la valeur 12 aurait été perdue.
2.3.4 Erreurs courantes liées à l’ordre
Erreur | Exemple | Conséquence | Correction |
|---|---|---|---|
| Utilisation avant initialisation | total ← total + note | La valeur initiale de total est inconnue. | Écrire total ← 0 avant le calcul. |
| Écrasement prématuré | a ← b puis b ← a | L’ancienne valeur de a est perdue. | Utiliser une variable temporaire. |
| Calcul trop tôt | moyenne ← somme / 3 avant somme ← ... | La moyenne utilise une valeur incorrecte. | Calculer d’abord la somme. |
| Confusion texte/variable | Écrire("moyenne") | Le mot moyenne est affiché. | Écrire(moyenne). |
| Lecture oubliée | surface ← longueur × largeur | Les dimensions n’ont aucune valeur. | Lire les dimensions avant le calcul. |
Stratégie de vérification Pour chaque ligne, demander : quelles variables sont lues ? Ont-elles déjà une valeur ? Quelle variable est modifiée ? L’ordre choisi correspond-il au raisonnement du problème ? |
Synthèse du chapitre
Notion | À retenir |
|---|---|
| Organisation | Un algorithme comporte un nom, une partie déclarative et une partie principale encadrée par Début et Fin. |
| Déclaration | Elle associe un nom et un type à une donnée qui sera utilisée. |
| Affectation | La variable située à gauche reçoit le résultat de l’expression située à droite. |
| Lecture | Elle reçoit une donnée extérieure et la mémorise dans une variable. |
| Écriture | Elle affiche un texte, une valeur ou le résultat d’une expression. |
| Commentaire | Il explique le raisonnement et n’est pas exécuté. |
| Exécution séquentielle | Les instructions sont exécutées de haut en bas. |
| Traçage manuel | Il permet de suivre l’évolution des variables et de valider le résultat. |
Question de contrôle Pouvez-vous expliquer, pour chaque variable d’un algorithme, quand elle reçoit sa première valeur, comment cette valeur évolue et à quel moment elle est utilisée ? |
Exercices d’application
Exercice 1 — Repérer les différentes parties
On considère l’algorithme suivant :
| Algorithme Aire_Triangle Variables base, hauteur, aire : Réel Début Lire(base) Lire(hauteur) aire ← (base × hauteur) / 2 Écrire(aire) Fin |
1. Donner le nom de l’algorithme.
2. Identifier la partie déclarative.
3. Identifier les entrées.
4. Identifier le traitement.
5. Identifier la sortie.
6. Proposer deux messages d’invite de saisie et un libellé pour le résultat.
Exercice 2 — Corriger la structure
L’algorithme suivant contient plusieurs erreurs de présentation ou d’ordre. Le réécrire correctement.
| Variables prix_ht, prix_ttc : Réel prix_ttc ← prix_ht × 1,20 Algorithme Prix Écrire(prix_ttc) Lire(prix_ht) Fin Début |
Exercice 3 — Table de trace
Compléter la table de trace de l’algorithme suivant.
| a ← 2 b ← 3 c ← a + b a ← c × 2 b ← a - c |
Étape | Instruction | a | b | c |
|---|---|---|---|---|
| 0 | Début | — | — | — |
| 1 | a ← 2 | |||
| 2 | b ← 3 | |||
| 3 | c ← a + b | |||
| 4 | a ← c × 2 | |||
| 5 | b ← a - c |
Exercice 4 — Échange de valeurs
Les variables a et b valent respectivement 7 et 12. Écrire les instructions permettant d’échanger leurs valeurs. Réaliser ensuite une table de trace.
Exercice 5 — Conception d’un algorithme complet
Concevoir un algorithme qui demande la longueur et la largeur d’un rectangle, calcule son aire et son périmètre, puis affiche les deux résultats avec des libellés clairs. Le pseudo-code doit comporter :
- un nom explicite ;
- une partie déclarative ;
- des messages d’invite ;
- deux lectures ;
- deux affectations de calcul ;
- deux écritures de résultat ;
- au moins un commentaire utile.
Corrigé indicatif
Correction de l’exercice 1
Élément | Réponse |
|---|---|
| Nom | Aire_Triangle. |
| Partie déclarative | base, hauteur et aire sont déclarées comme réelles. |
| Entrées | base et hauteur. |
| Traitement | aire ← (base × hauteur) / 2. |
| Sortie | La valeur de aire. |
| Amélioration | Afficher « Base : », « Hauteur : » et « Aire du triangle : ». |
Correction de l’exercice 2
| Algorithme Calculer_Prix_TTC Variables prix_ht, prix_ttc : Réel Début Écrire("Prix hors taxe : ") Lire(prix_ht) prix_ttc ← prix_ht × 1,20 Écrire("Prix TTC : ", prix_ttc) Fin |
Le nom est placé au début, les variables sont déclarées avant utilisation, la lecture précède le calcul, et les instructions exécutables sont placées entre Début et Fin.
Correction de l’exercice 3
Étape | Instruction | a | b | c |
|---|---|---|---|---|
| 0 | Début | — | — | — |
| 1 | a ← 2 | 2 | — | — |
| 2 | b ← 3 | 2 | 3 | — |
| 3 | c ← a + b | 2 | 3 | 5 |
| 4 | a ← c × 2 | 10 | 3 | 5 |
| 5 | b ← a - c | 10 | 5 | 5 |
Correction de l’exercice 4
| temporaire ← a a ← b b ← temporaire |
Étape | Instruction | a | b | temporaire |
|---|---|---|---|---|
| 0 | Valeurs initiales | 7 | 12 | — |
| 1 | temporaire ← a | 7 | 12 | 7 |
| 2 | a ← b | 12 | 12 | 7 |
| 3 | b ← temporaire | 12 | 7 | 7 |
Correction de l’exercice 5
| Algorithme Aire_Et_Perimetre_Rectangle Variables longueur, largeur, aire, perimetre : Réel Début // Lecture des dimensions Écrire("Longueur : ") Lire(longueur) Écrire("Largeur : ") Lire(largeur) aire ← longueur × largeur perimetre ← 2 × (longueur + largeur) Écrire("Aire : ", aire) Écrire("Périmètre : ", perimetre) Fin |
Prolongement en programmation Lors du passage à Python, C ou Java, la structure logique restera la même. Seules les règles de syntaxe pour les déclarations, les entrées, les sorties et l’affectation changeront. |
Éléments essentiels à mémoriser
1. Donner à l’algorithme un nom explicite.
2. Déclarer les constantes et les variables avant de les utiliser.
3. Placer les instructions exécutables entre Début et Fin.
4. Lire les données avant les calculs qui en dépendent.
5. Comprendre que variable ← expression remplace l’ancienne valeur de la variable.
6. Afficher des résultats accompagnés de libellés clairs.
7. Utiliser les commentaires pour expliquer l’intention et non l’évidence.
8. Respecter l’ordre d’exécution séquentiel.
9. Utiliser une table de trace pour vérifier l’évolution des variables.
10. Contrôler qu’aucune variable n’est utilisée avant son initialisation.
Transition vers le chapitre suivant Après avoir appris à organiser une suite d’instructions simples, l’étudiant pourra étudier plus précisément les variables, les constantes, les types de données et les conversions. |