====== Sous-programmes ====== [[. |retour]] ===== Au sujet des Sous-Programmes ===== Un sous-programme est un petit programme à l'intérieur du programme principal. Les sous-programmes sont utilisés typiquement quand une opération a besoin d'être répétée plusieurs fois dans différentes parties du programme principal. Il y a deux usages principaux des sous-programmes : * Maintenir les programmes clairs y faciles à lire. * Réduire la taille des programmes permettant de réutiliser des sections communes. Quand le programme du PIC arrive à un sous-programme, il sauve son adresse dans le programme présent avant de sauter au commencement de celle-ci, ou appel le sous-programme. Une fois qu'il atteint la fin du sous-programme il retourne au programme principal, y continue de parcourir le code qu'il a laissé avant. Normalement, il est possible que les sous-programmes peuvent appeler d'autres sous-programmes. Cependant il y a des limites au nombre de fois qu'un sous-programme puisse en appeler d'autre, ceci varie selon les puces, comme on l'observe dans la table suivante: ^ Famille de PICs ^Largeur des Instructions ^Nombre de sous programmes appelés ^ | 10F*, 12C5*, 12F5*, 16C5*, 16F5* | 12 | 1 | | 12C*, 12F*, 16C*, 16F*, excepté ceux au-dessus | 14 | 7 | |18F*, 18C* | 16 |31| Ces limites sont dus à la quantité de mémoire dans le PIC qui sauvegarde l'adresse avant de sauter au nouveau sous-programme. Quelques commandes de GCBASIC sont des sous-programmes, de manière qu'on ne pourra se permettre que 2 à 3 appels à des sous-programmes en plus de son programme principal. Autre commodité des sous-programmes est qu'ils permettent d'accepter des paramètres. Ceux sont des valeurs qui sont passées depuis le programme principal au sous-programme quand il est appelé, et ils sont retournés quand le sous-programme se termine. ===== Utilisation des sous-programmes ===== Appeler un sous-programme est très simple - tout ce qu'on a besoin est le nom du sous-programme, et une liste de paramètres. Ce code pourra appeler un sous-programme appelé "Buzz" qui n'a pas de paramètres : Buzz Si le sous-programme a des paramètres, alors ils devront être listés après le nom du sous-programme. Ceci pourrait être la commande pour appeler un sous-programme appelé "BougeBras" celui-ci a trois paramètres : BougeBras NouveauX, NouveauY, 10 Créer un sous-programme est presque toujours très simple. Il devra avoir une ligne au début qui contient "sub ", et ensuite le nom du sous-programme. Il faut aussi avoir une ligne à la fin du sous-programme que doit dire : "end sub". Pour créer un sous-programme appelé "Buzz", ceci est le code requis : sub Buzz 'Le code du sous-programme vient ici end sub Si le sous-programme a des paramètres, alors il faut mettre la liste après le nom. Par exemple, pour définir le sous-programme "MueveBrazo" on utilise ce code: sub BougeBras(BrasX, BrasY, BrasZ) #NR 'Le code du sous-programme vient ici end sub Dans le sous-programme au dessus, BrasX, BrasY and BrasZ sont toutes des variables. si l'appel au dessus est utilisé, les variables devront avoir ces valeurs au début du sous-programme : · BrasX = NoveauX · BrasY = NouveauY · BrasZ = 10 "#NR" signifie "No Return" (Ne pas retourner). si c'est spécifié, alors GCBASIC ne copiera pas les valeurs des paramètres dans les variables originales quand le sous-programme se terminera. Si "#NR" es enlevé de la fin de la ligne, alors GCBASIC copiera les valeurs au retour - dans l'exemple, NouveauX pourra être mis comme BrasX et NouveauY prendra la valeur de BrasY quand le sous-programme se terminera. Il est possible d'utiliser des variables de type word (16-bit) comme paramètres pour les sous-programmes - on ajoute juste "As Word" à la fin du nom du paramètre. Par exemple : sub BougeBras(BrasX As Word, BrasY As Word, BrasZ As Word) ... end sub Voir aussi : [[fonctions]] [[. |retour]]