Skip to main content

Welcome to a Grasp lesson

Create a free account to keep studying and create your own study path.

Lesson 5

Trace d'exécution d'algorithme simple

Recommended resources

Bonjour ! Bienvenue dans cette cinquième leçon. Nous allons aujourd'hui nous attaquer à une compétence fondamentale qui va vous servir tout au long de votre parcours, de l'algorithmique jusqu'au développement Java : le traçage manuel.

Introduction

Dans la leçon précédente, vous avez appris à construire des expressions arithmétiques et logiques. Vous savez maintenant comment demander à un algorithme d'effectuer un calcul (prix * 1.2) ou de vérifier une condition (age >= 18).

Mais comment être certain que ces instructions s'exécutent comme prévu et dans le bon ordre ? Comment "voir" ce qui se passe à l'intérieur de l'algorithme ?

L'objectif de cette leçon est de vous apprendre à tracer manuellement l'exécution d'un algorithme simple pour en suivre le déroulement. C'est un peu comme si vous preniez la place de l'ordinateur, un crayon à la main, pour exécuter le programme ligne par ligne. C'est une méthode infaillible pour comprendre la logique d'un algorithme, vérifier son exactitude et, surtout, trouver des erreurs.

Cette compétence est directement liée à votre objectif d'écrire du "code clean" : un code que l'on comprend bien est un code plus facile à maintenir et à corriger.


1. Qu'est-ce que le traçage manuel ?

Tracer un algorithme, c'est simuler son exécution étape par étape, en notant méticuleusement la valeur de chaque variable à chaque instant. L'outil principal pour cela est le tableau de suivi d'exécution (ou table de traçage).

Un tableau de suivi simple contient :

  • Une colonne pour chaque variable de l'algorithme.
  • Parfois, une colonne supplémentaire pour noter ce qui est affiché à l'écran (la "Sortie").
  • Chaque ligne du tableau représente l'état des variables après l'exécution d'une instruction.

2. Tracer un algorithme séquentiel simple

Commençons par un exemple très simple, sans condition ni boucle.

Algorithme CalculCercle

Variables
  rayon : Réel
  aire : Réel
Début
  Afficher("Saisir le rayon du cercle :")
  Lire(rayon)
  aire ← 3.14 * rayon * rayon
  Afficher("L'aire du cercle est : ", aire)
Fin

Maintenant, traçons son exécution. Imaginons que l'utilisateur saisisse la valeur 10 pour le rayon. Voici le tableau de suivi :

Instruction exécutée rayon aire Sortie à l'écran
Initialisation ? ?
Afficher(...) ? ? Saisir le rayon du cercle :
Lire(rayon) 10 ?
aire ← 3.14 * rayon * rayon 10 314
Afficher(...) 10 314 L'aire du cercle est : 314

Au début, les valeurs des variables sont inconnues (notées ?). Chaque instruction met à jour soit une variable, soit l'affichage. Simple, n'est-ce pas ?


3. Tracing a Conditional Structure

Les choses deviennent plus intéressantes avec des conditions. Le chemin d'exécution change en fonction des données. Prenons l'algorithme suivant qui calcule la valeur absolue d'une différence.

Algorithme de calcul de la distance en pseudo-code et algorigramme
Cet algorithme, présenté en pseudo-code et en organigramme, calcule la distance (différence absolue) entre deux nombres `a` et `b`.

Traçons-le pour deux scénarios différents (deux "jeux d'essai").

Jeu d'essai 1 : a = 7, b = 4

Instruction Condition a b d
Lire(a, b) 7 4 ?
si (a > b) 7 > 4 est VRAI
d ← a - b 7 4 3
Afficher(d) 7 4 3

Jeu d'essai 2 : a = 5, b = 9

Instruction Condition a b d
Lire(a, b) 5 9 ?
si (a > b) 5 > 9 est FAUX
d ← b - a (on exécute le sinon) 5 9 4
Afficher(d) 5 9 4

Vous voyez que selon la condition, nous ne suivons pas le même chemin. Le traçage nous permet de visualiser ce flux.


4. Tracing a Loop

Les boucles sont là où le traçage devient indispensable. Une petite erreur peut faire tourner la boucle une fois de trop, ou pas assez, ou même à l'infini !

Pour découvrir la méthode appliquée aux boucles, je vous propose d'étudier deux excellents exemples.

Pré-requis ---- Les notions de base de l'algorithmique

Ce premier document montre comment tracer une boucle qui calcule la somme des premiers entiers. C'est un exemple classique et très clair.

Allez à la section 3.1, 'Itération simple'. Étudiez l'algorithme 'Programme Somme'. Juste en dessous, analysez le tableau de suivi pour l'entrée n=5. Suivez l'évolution des variables 'i' et 's' à chaque 'Itération' (chaque passage dans la boucle). Ensuite, la lecture rapide de la section D, 'Vérification et preuve', vous confirmera l'importance de cette méthode.

ALGORITHMIQUE POUR LE LYCÉE

Ce second document présente un autre exemple, cette fois avec une boucle 'tant que'. Le principe est le même, mais la condition est vérifiée au début de chaque tour.

Lisez d'abord l'algorithme de l'Exemple 5 (dans la section 1.8.1). Puis, lisez la section 1.9 'Exécution « manuelle » d’un algorithme'. Vous y trouverez un tableau de suivi détaillé qui trace l'exécution de cet algorithme pour les entrées a=17 et b=4. C'est une démonstration parfaite de la méthode.

La méthode pour tracer une boucle :

  1. Initialisez votre tableau avec les valeurs des variables avant la boucle.
  2. Avant chaque tour de boucle, évaluez la condition de la boucle.
  3. Si la condition est vraie, exécutez les instructions du corps de la boucle une par une, en mettant à jour les valeurs dans une nouvelle ligne (ou un nouveau groupe de lignes) de votre tableau.
  4. Revenez à l'étape 2 et répétez.
  5. Si la condition est fausse, sortez de la boucle et continuez avec les instructions qui suivent.

5. À vous de jouer !

La meilleure façon d'apprendre est de pratiquer. Voici deux algorithmes "mystères". Votre mission est de les tracer pour découvrir ce qu'ils font.


Exercice 1

Que fait l'algorithme suivant ? Prenez un papier et un crayon, et tracez son exécution avec les valeurs d'entrée a = 5 et b = 8.

Algorithme mystèreADécouvrir

Variables
  a, b : Entier
Début
  Entrer(a, b)
  a ← a + b
  b ← a - b
  a ← a - b
  Afficher(a, b)
Fin
Cliquez ici pour voir la solution

Voici la table de traçage pour a = 5 et b = 8 :

Instruction a b Sortie
Initialisation ? ?
Entrer(a, b) 5 8
a ← a + b 13 8
b ← a - b 13 5 (b devient 13 - 8)
a ← a - b 8 5 (a devient 13 - 5)
Afficher(a, b) 8 5 "8, 5"

Conclusion : Cet algorithme échange les valeurs des variables a et b !


Exercice 2

Celui-ci est un peu plus complexe, il contient une boucle et une condition. Tracez-le avec les valeurs d'entrée a = 5 et b = 3.

Algorithme mystèreBoucle1

Variables
  a, b, c : Entier
Début
  Entrer(a, b)
  c ← 0
  tantque (a ≠ 0) faire
    si ((a MOD 2) ≠ 0) alors
      c ← c + b
    fin_si
    a ← a div 2
    b ← b * 2
  fin_tantque
  Afficher(c)
Fin
Cliquez ici pour voir la solution

Voici la table de traçage pour a = 5 et b = 3 :

Instruction Condition (a ≠ 0) ? Condition (a MOD 2 ≠ 0) ? a b c Sortie
Initialisation ? ? ?
Entrer(a, b) 5 3 ?
c ← 0 5 3 0
Début boucle 1 5≠0 (VRAI)
si ... 5 MOD 2 ≠ 0 (VRAI)
c ← c + b 5 3 3
a ← a div 2 2 3 3
b ← b * 2 2 6 3
Début boucle 2 2≠0 (VRAI)
si ... 2 MOD 2 ≠ 0 (FAUX)
a ← a div 2 1 6 3
b ← b * 2 1 12 3
Début boucle 3 1≠0 (VRAI)
si ... 1 MOD 2 ≠ 0 (VRAI)
c ← c + b 1 12 15
a ← a div 2 0 12 15
b ← b * 2 0 24 15
Début boucle 4 0≠0 (FAUX)
Afficher(c) 0 24 15 "15"

Conclusion : Cet algorithme calcule le produit de a et b (5 * 3 = 15). C'est une ancienne méthode de multiplication, connue sous le nom de "multiplication égyptienne".


Résumé de la leçon

Félicitations pour avoir complété cette leçon ! C'est une compétence qui demande de la rigueur, mais qui est extrêmement gratifiante.

  • Tracer un algorithme, c'est l'exécuter manuellement ligne par ligne.
  • Le tableau de suivi est l'outil essentiel pour garder une trace de la valeur de chaque variable.
  • Le traçage permet de comprendre le flux d'exécution, en particulier avec les conditions (si...sinon) et les boucles (tantque, pour).
  • C'est la technique de base pour vérifier la correction d'un algorithme et pour débugger (trouver et corriger les erreurs).

Et après ?

Vous avez maintenant assemblé toutes les pièces du puzzle des fondamentaux. Vous connaissez les variables, les expressions et vous savez comment suivre une exécution. Dans la prochaine leçon, nous mettrons tout cela en pratique en apprenant à concevoir un algorithme séquentiel simple pour résoudre un problème de calcul, comme le calcul d'une moyenne. Vous passerez du statut d'analyste à celui de concepteur d'algorithmes