Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
|
gcbasic:syntaxe:sous-programmes [2009/10/30 23:42] per créée |
gcbasic:syntaxe:sous-programmes [2009/11/01 22:08] (Version actuelle) per |
||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====== Sous-programmes ====== | ====== Sous-programmes ====== | ||
| [[. |retour]] | [[. |retour]] | ||
| - | |||
| - | Acerca de Subrutinas | ||
| - | Una subrutina es un programa pequeño dentro del programa principal. Las subrutinas son usadas tipicamente cuando una operacion necesita ser repetida varias veces en diferentes partes del programa principal. | + | ===== Au sujet des Sous-Programmes ===== |
| - | Hay dos usos principales para las subrutinas: | + | 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. |
| - | · Mantener los programas claros y faciles de leer. | + | |
| - | · Reducr el tamaño de los programas permitiendo secciones comunes ser reusadas. | + | |
| - | Cuando el programa del PIC llega a una subrutina el salva su localizacion en el presente programa antes de saltar al comienzo de esta, o llama la subrutina. Una vez que alcanza el final de la surutina el retorna al programa principal, y continua corriendo el codigo que dejo previamente. | + | 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. | ||
| - | Normalmente, es posible que las subrutinas puedan llamar otras subrutinas. Entonces hay limites al numero de veces que una subrutina pueda llamar a otra, esto varia de chip en chip, como se observa en la tabla siguiente: | + | 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. |
| - | Familia dePICs | + | |
| - | + | ||
| - | Ancho de Instruccion | + | |
| - | + | ||
| - | Numero de subs llamadas | + | |
| - | 10F*, 12C5*, 12F5*, 16C5*, 16F5* | + | |
| - | + | ||
| - | 12 | + | |
| - | + | ||
| - | 1 | + | |
| - | 12C*, 12F*, 16C*, 16F*, except those above | + | |
| - | + | ||
| - | 14 | + | |
| - | + | ||
| - | 7 | + | |
| - | 18F*, 18C* | + | |
| - | + | ||
| - | 16 | + | |
| - | + | ||
| - | 31 | + | |
| - | Esos limites son debidos al monto de memoria en el PIC el cual salva la localizacion antes de brincar a una nueva subrutina. Algunos comandos de GCBASIC son subrutinas, de manera que usted podria permitirse de 2 a 3 llamadas a subrutinas mas de la que su programa pueda tener. | + | 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| | ||
| - | Otra comodidad de las subrutinas es que ellas se permiten aceptar parametros. Esos son valores que son pasados desde le programa principal a la subrutina cuando ella es llamada, y son retornados cuando la subrutina finaliza. | + | 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. |
| - | Usando Subrutinas | + | 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. |
| - | Llamar a una subrutina es muy sencillo - todo lo que se necesita es el nombre de la subrutina, y una lista de parámetros. Este código podra llamar a una subrutina llamada "Buzz" que no tiene parametros: | + | ===== 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 | Buzz | ||
| - | Si la subrutina tiene parametros, entonces ellos deberan ser listados despues del nombre de la subrutina. Este podria ser el comando para llamar una subrutina llamada "MueveBrazo" esta tiene tres parametros: | + | 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 : |
| - | MueveBrazo NuevaX, NuevaY, 10 | + | BougeBras NouveauX, NouveauY, 10 |
| - | Crear una subroutina casi siempre es tan simple. Debera haber una linea al comienzo la cual tiene "sub ", y entonces el nombre de la subrutina. Tambien, se necesita tener una linea al final de la subrutina que debe decir: "end sub". Para crear una subrutina llamada "Buzz", este es el codigo requerido: | + | 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 | sub Buzz | ||
| - | 'codigo para la subrutina va aqui | + | 'Le code du sous-programme vient ici |
| end sub | end sub | ||
| - | If the subroutine has parameters, then they need to be listed after the name. For example, to define the "MueveBrazo" sub used above, use this code: | + | 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 MueveBrazo(BrazoX, BrazoY, BrazoZ) #NR | + | sub BougeBras(BrasX, BrasY, BrasZ) #NR |
| - | el codigo para la subrutina va aqui | + | 'Le code du sous-programme vient ici |
| end sub | end sub | ||
| - | En la subrutina de arriba, BrazoX, BrazoY and BrazoZ son todas variables. si la llamada de arriba es usada, las variables deberan tener esos valores al comienzo de la subrutina: | + | 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 : |
| - | · BrazoX = NuevoX | + | · BrasX = NoveauX |
| - | · BrazoY = NuevoY | + | · BrasY = NouveauY |
| - | · BrazoZ = 10 | + | · BrasZ = 10 |
| - | "#NR" significa "No Return" (No Devolver). si es especificado, entonces GCBASIC no copiara los valores de los parametros hacia atras dentro de las viariables originales cuando la subrutina finaliza. Si "#NR" es removido del final de la linea, entonces GCBASIC copiara los valores hacia atras - en el ejemplo, NuevoX podria ser puesta como BrazoX y NuevoY tomaria el valor de BrazoY cuando la subrutina finalize. | + | "#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. |
| - | Es posible usar variables tipo word (16-bit) como parámetros para las subrutinas - justo añada "As Word" al final del nombre del parámetro. Por ejemplo: | + | 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 MueveBrazo(BrazoX As Word, BrazoY As Word, BrazoZ As Word) | + | sub BougeBras(BrasX As Word, BrasY As Word, BrasZ As Word) |
| ... | ... | ||
| end sub | end sub | ||
| - | Vea Tambien: | + | Voir aussi : [[fonctions]] |
| - | Funciones | + | |
| + | [[. |retour]] | ||