Macros

La vidéo du tutoriel

Exercice d’application

Retour sur la notion de Macro

Création d’une macro

L’utilisateur crée une nouvelle macro en précisant s’il s’agit d’une macro simple ou d’une boucle. Cette macro sera identifiée par un nom unique et l’utilisateur pourra préciser son rôle.

Ensuite, l’utilisateur construira le code de la macro comme vu précédemment. Cependant, une nouvelle possibilité est offerte. Lors de l’enregistrement des actions, l’utilisateur peut exécuter directement le programme d’une macro par un simple clic. 

Si, par exemple, il incrémente i puis j et ensuite, il exécute la macro FaireCela, le code produit sera :
   i = i + 1 ;
   j = j + 1 ;
   FaireCela ;
FaireCela est devenue une “nouvelle” instruction, d’où le nom de “macro-instruction”

Exemple d’utilisation de macro

Le problème à résoudre consiste à :
  • saisir une note positive (supérieure à 0),
  • saisir une autre note positive (supérieure à 0),
  • effectuer la moyenne des deux valeurs,
  • afficher le résultat.

Code de la macro SaisirNote

La première étape consiste à construire une Macro SaisirNote qui saisit une note poitive, supérieure à 0.
Define SaisirNote
From
  Read "Saisir une note supérieure à 0 " note ;
  // ...
Until
  note >= 0
// ...
Loop
  Read "Saisir une note supérieure à 0 " note ;
  // ...
Terminate
  // ...
End

Utilisation de la macro SaisirNote

Résoudre un problème revient à résoudre des sous problèmes du problème initial

Chacun de ces sous problèmes devient un nouveau problème à résoudre (qui lui-même peut éventuellement se décomposer en sous problèmes!)

Pour résoudre un sous problème, on définit un sous programme

  • il possède un nom
  • il devient une nouvelle instruction (macro instruction) utilisable dans d’autres programmes ou sous programmes
Define MyNotes
Do
  SaisirNote ;
  somme = note ;
  SaisirNote ;
  somme = somme + note ;
  moyenne = somme / 2 ;
  Write "Valeur de moyenne " moyenne ;
  // ...
End

Autre utilisation de la macro SaisirNote

Le problème à résoudre est plus général. Le programme à réaliser doit saisir 10 notes positives et en calculer la moyenne.

 

Une macro boucle est nécessaire pour ne pas avoir à générer un programme qui répète 10 fois la séquence :

SaisirNote ;
somme = somme + note ;
Define MyNotes
From
  somme = 0 ;
  nb = 0 ;
  // ...
Until
  nb >= NB_NOTES
  // ...
Loop
  SaisirNote ;
  somme = somme + note ;
  nb = nb + 1 ;
  // ...
Terminate
  moyenne = somme / nb ;
  Write "Valeur de moyenne " moyenne ;
  // ...
End