DEF FN |
Définir une fonction |
---|---|
QuickBASIC/QBasic |
Syntaxe
DEF FNnom[(listeParam)] = expression |
DEF FNnom[(listeParam)] [instructions] FNnom = expression [instructions] EXIT DEF] [instructions] END DEF |
Paramètres
Nom | Description | |
---|---|---|
nom | Ce paramètre permet d'indiquer le nom de la fonction | |
listeParam | Ces paramètres sont passés comme argument à la fonction utilisateur selon le format suivant : variable[( )] [AS type] [, variable[( )] [AS type]]... |
|
Valeur | Description | |
variable | Ce paramètre permet d'indiquer le nom de la variable de paramètre de la fonction | |
type | Ce paramètre permet d'indiquer le type de données : INTEGER, LONG, SINGLE, DOUBLE, STRING ou un type défini par l'utilisateur | |
expression | Ce paramètre permet d'indiquer la formule a employé dans la fonction | |
instructions | Ces paramètres permet d'indiquer le bloc d'instruction a exécuter dans la fonction |
Description
Cette commande permet de définir une fonction utilisateur.
Remarques
- Le paramètre listeParam représente une liste de paramètres avec la syntaxe suivante :
- La procédure FUNCTION offre une plus grande flexibilité et un meilleur contrôle que la fonction DEF FN.
- Vous devez définir une fonction DEF FN avec une instruction DEF FN avant que la fonction ne soit utilisée. L'appel d'une fonction DEF FN avant qu'elle ne soit définie produit le message d'erreur :
- Vous devez utiliser l'instruction EXIT DEF pour quitter immédiatement un DEF FN en multiligne. Les fonctions DEF FN ne peuvent être utilisées que dans le module dans lequel elles sont définies. Ils ne peuvent pas être référencés à partir d'autres modules.
- Une fonction DEF FN peut partager des variables avec le code au niveau du module. Les variables ne figurant pas dans la liste de paramètres sont globales - leurs valeurs sont partagées avec le programme appelant. Pour conserver une valeur de variable locale à une définition de fonction, déclarez-la dans une instruction STATIC.
- L'instruction DEF FN peut renvoyer des valeurs numériques ou des chaînes de caractères. L'instruction DEF FN renvoie une valeur de chaîne de caractères si nom est un nom de variable de chaîne de caractères et une valeur numérique si nom est un nom de variable numérique. L'attribution d'une valeur numérique à un nom de fonction de chaîne de caractères ou l'attribution d'une valeur de chaîne de caractères à un nom de fonction numérique produit le message d'erreur :
- Si la fonction est numérique, «DEF FNname» renvoie une valeur avec la précision spécifiée par nom. Par exemple, si name spécifie une variable avec une valeur réel de double précision, la valeur renvoyée par «DEF FNname» est une valeur de double précision, quelle que soit la précision de l'expression.
- Étant donné que QBASIC ou QuickBASIC peut réorganiser les expressions arithmétiques pour une plus grande efficacité, évitez d'utiliser les fonctions DEF FN modifiant les variables de programme dans les expressions pouvant être réorganisées. L'exemple suivant peut donner des résultats différents :
variable [type AS] [, variable [type AS]] ... |
Une variable est un nom de variable QBASIC ou QuickBASIC valide. Le type est INTEGER, LONG, SINGLE, DOUBLE ou STRING. Vous pouvez également indiquer le type d'une variable en incluant un caractère de déclaration de type («%», «&», «!», «#» ou «$») dans le nom.
Function not defined. |
Les définitions de fonction DEF FN ne peuvent pas apparaître dans d'autres définitions DEF FN. De plus, les fonctions DEF FN ne peuvent pas être récursives.
Type mismatch. |
DEF FNShort
I=10
FNShort=1
END DEF
I=1 : PRINT FNShort + I + I
Si QBASIC ou QuickBASIC réorganise l'expression afin que «FNShort» soit appelé après le calcul (I+I), le résultat est 3 plutôt que 21. Vous pouvez généralement éviter ce problème en isolant l'appel de la fonction DEF FN :
I = 1 : X = FNShort : PRINT X + I + I
Les opérations d'entrée/sortie dans les fonctions DEF FN utilisées dans les instructions d'entrées/sorties ou les opérations graphiques dans les fonctions DEF FN dans les instructions graphiques peuvent entraîner des problèmes similaires.
Exemple
Voici un exemple d'une fonction «teste» retourner 50 à l'écran :
- DEF FNteste(a)
- FNteste = a * 10
- END DEF
-
- PRINT FNteste(5)
on obtiendra le résultat suivant :
50Voir également
Langage de programmation - QuickBASIC/QBasic - Référence de procédures et de fonctions - EXIT
Langage de programmation - QuickBASIC/QBasic - Référence de procédures et de fonctions - FUNCTION
Langage de programmation - QuickBASIC/QBasic - Référence de procédures et de fonctions - SHARED
Langage de programmation - QuickBASIC/QBasic - Référence de procédures et de fonctions - STATIC