Macros

Habituellement un programme peut compter plusieurs milliers, voire plusieurs millions de lignes de code ! Pour réussir à gérer cette complexité, un programme est décomposé en unités de quelques dizaines de lignes de codes réalisant chacune une fonction particulière.

Dans les langages de programmation, ces unités s’appellent fonction, procédure, ou méthodes. Chacune est identifiée par un nom unique (comme une variable), et peut être “appelée” dans une autre unité.

A cet instant, ses instructions sont exécutées comme une seule instruction. Une unité appelée peut elle-même appeler l’exécution d’une autre unité et ainsi de suite (il n’y a pas de limite a priori).

AlgoTouch propose également un mécanisme similaire, simplifié, avec la notion de macro (pour macro-instruction). Une macro est une unité de programme soit de type simple (Do…End) soit de type boucle (From…End).

Dans ce tutoriel nous montrons comment définir une nouvelle macro, puis comment l’utiliser dans une autre macro. Dans un tutoriel suivant, nous montrerons comment, grâce à ce mécanisme, il est possible de réaliser des programmes complexes.

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 somme des deux valeurs,
  • afficher le résultat.

Code de la macro SaisirNote

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 SommeNote
  Do
    SaisirNote ;
    somme = note ;
    SaisirNote ;
    somme = somme + note ;
    Write "La valeur de somme" somme ;
End

Exercice

Le programme, la macro Saisir0a20, à réaliser doit saisir dans une variable note une valeur comprise en 0 et 20. Pour réaliser ce programme, il est possible d'utiliser la macro SaisirSup0 qui oblige la saisie d'une valeur supérieure à 0 dans note. Cette macro est la copie exacte de la macro SaisirNote vue dans ce cours :

/*
 * Saisir une note supérieure à 0
 */
Define SaisirSup0
  From
    Read "Saisir une note supérieure à 0" note ;
  Until
    (note >= 0)
  Loop
    Read "Saisir une note supérieure à 0" note ;
  Terminate
End

Source AlgoTouch : Saisir0a20

[embedyt] https://www.youtube.com/watch?v=2QJ5G3S3sJo[/embedyt]
/*
 * Saisir une notre comprise entre 0 et 20
 */
Define Saisir0a20
  From
    SaisirSup0 ;
  Until
    (note <= vingt)
  Loop
    SaisirSup0 ;
  Terminate
End
Le code solution : Saisir0a20
Défiler vers le haut