Sous-programme

Les sous-programmes (ou procédures) sont des ensembles nommés d'instructions qui s'utilisent comme une simple instruction. Ils permettent d'organiser le code d'un programme en modules réutilisables et d'apporter un niveau d'abstraction supérieur (c'est à dire de s'éloigner des contraintes matérielles).

Trois blocs spécifiques sont utilisés :

    • le bloc « Procédure » définit un sous-programme en lui donnant un nom et un point de départ ;
    • le bloc « Gosub » permet d'appeler le sous-programme, c'est à dire de poursuivre l'exécution du programme en « sautant » à la première instruction du sous-programme ;
    • le bloc « Return » termine le sous-programme : l'exécution se poursuit par l'instruction qui suit immédiatement le Gosub qui a appelé le sous-programme.

Les appels de sous programmes peuvent être imbriqués : des sous-programmes peuvent appeler d'autres sous programmes (tant qu'il y a assez de mémoire pour enregistrer les points d'appels pour les retours).

Par exemple, dans le programme ci-dessous :

    • Gauche avant est un sous-programme qui met la roue gauche en rotation vers l'avant ;
    • Gauche stop est un sous-programme qui arrête la roue gauche ;
    • la boucle principale appelle ces deux sous-programmes pour faire avancer la roue gauche par intermittence : en avant pendant une seconde puis arrêt pendant une seconde ;
    • l'utilisation de ces sous-programmes dans la boucle principale permet d'écrire un code qui se concentre sur l'effet produit plutôt que sur la manière dont cet effet est obtenu : les instructions Low et High n'apparaissent plus ; c'est une abstraction ;
    • ces sous-programmes pourraient être réutilisés facilement dans un autre programme en copiant leur définition.

Dans le groupe Procedures du logiciel PICAXE Editor 6 :

    • le bloc Procedure permet de :
      • définir un sous-programme ;
      • de lui donner un nom (Name of subroutine) ;
      • de lui associer un commentaire ;
    • le bloc Gosub permet d'appeler un sous-programme dont le nom apparaît dans une liste des sous-programmes déjà définis ; il faut donc définir les sous-programmes avant de pouvoir les appeler ;
    • le bloc Return termine un sous-programme.