DEF FN |
Définition de fonction |
---|---|
DISK BASIC |
Syntaxe
DEF FN var1(var2[,var...])=exp |
Paramètres
Nom | Description |
---|---|
var1 | Ce paramètre permet d'indiquer le nom de la fonction, et n'importe quel nom de variable de LEVEL II valide. |
var2 | Ce paramètre permet d'indiquer les var-items suivants sont utilisés pour définir ce que fait la fonction. |
exp | Ce paramètre permet d'indiquer une expression impliquant généralement la ou les variables passées à gauche du signe égal. |
Description
Cette instruction vous permet de créer vos propres fonctions implicites. Autrement dit, vous n'avez qu'à l'appeler par son nom et la fonction implicite que vous avez définie sera automatiquement exécutée. Une fois qu'une fonction a été définie avec l'instruction DEF FN, vous pouvez l'appeler simplement en référençant le nom de la fonction préfixé par FN. Vous pouvez l'utiliser exactement comme vous utiliseriez l'une des fonctions intrinsèques, par exemple, SIN, ABS, STRING$.
Le type de variable utilisé pour nommer la fonction détermine le type de valeur que la fonction renverra. Par exemple, si le nom de la fonction a l'attribut simple précision, cette fonction renverra une valeur simple précision, quelle que soit la précision des paramètres.
Exemples
- DEF FNA$(TITLE$,GRAPHICS%)=STRING$(LEN(TITLE$),GRAPHICS%)
La fonction A$ nécessitera deux paramètres - un entier, une chaîne ; et il renverra une valeur de chaîne de caractères.
- DEF FNRC!(A)=1/(A*A)
La fonction RC! nécessite un paramètre et renvoie une valeur simple précision, quelle que soit la précision de le paramètre.
Les noms de variable particuliers que vous utilisez comme paramètres dans l'instruction DEF FN ne sont pas affectés à la fonction; lorsque vous appelez la fonction ultérieurement, n'importe quel nom de variable valide du même type peut être utilisé. De plus, l'utilisation d'une variable comme paramètre dans une instruction DEF FN n'a aucun effet sur la valeur de cette variable.
La fonction doit être définie avec au moins un paramètre - même si cet paramètre n'est pas réellement utilisé pour transmettre une valeur à la fonction. Par exemple :
- DEF FNR(A)=RND(0)
Exemples :
Notez que FNMLT est défini avec les paramètres A, B, mais que lorsque la fonction est appelée à la ligne 30, les variables X et Y sont utilisées. Deux noms de variables valides peuvent être utilisés pour transmettre des valeurs à la fonction.
- DEF FNRR(A,B)=A+INT(B*RND(0))
Renvoie un nombre aléatoire entre A et B.
- DEF FNL8$(A$)=LEFT$(A$,8)
Renvoie les 8 premiers caractères du paramètre de chaîne de caractères.
- DEF FNX#(A#,B#)=(A#-B#)*(A#-B#)
Renvoie la valeur double précision du "carré de la différence".
- 100 'PROGRAMME : STRING
- 110 'EXEMPLE D'UNE FONCTION DE CHAINE DE CARACTERES DEFFN
- 120 '
- 130 '****** FONCTION POUR CONCATENER DES CHAINES DE CARACTERES *******
- 140 DEF FNADD$(A$,B$)=A$+" "+B$
- 150 CLS:PRINT TAB(15);"EXEMPLE DE CHAINE DE CARACTERES DEFFN"
- 160 PRINT:F$="":INPUT"ENTRER LE PRENOM :";F$
- 165 IF F$=""THEN END
- 170 INPUT"ENTRER LE NOM DE FAMILLE :";L$
- 180 '
- 190 '****** AJOUT DE F$ VERS L$ AVEC 1 BLANC ENTRE ******
- 200 '
- 210 Z$=FNADD$(F$,L$)
- 220 PRINT TAB(6);"NOM COMPLET : ";Z$
- 230 GOTO 160
Vous tapez la commande suivante :
RUNENTER |
on obtiendra un résultat ressemblant à ceci :
EXEMPLE DE CHAINE DE CARACTERES DEFFNENTRER LE PRENOM : JEANENTER
ENTRER LE NOM DE FAMILLE : TREMBLAYENTER
NOM COMPLET : JEAN TREMBLAY
Voici maintenant un exemple d'un programme MINMAX :
- 100 'PROGRAMME : MINMAX
- 110 'EXEMPLE DE FONCTION DEFFN
- 120 '
- 130 '****** DEFINIE LES FONCTIONS MIN ET MAX *******
- 135 '
- 140 DEF FNMIN(A,B)=(A+B-ABS(A-B))/2
- 150 DEF FNMAX(A,B)=(A+B+ABS(A-B))/2
- 160 '
- 170 '****** LECTURE DE LA PREMIERE VALEUR - APPELEZ-LE LE MIN ET LE MAX *******
- 180 'MN EST LA VALEUR MINIMUM
- 190 'MX EST LA VALEUR MAXIMUM
- 200 '
- 210 READ MN:MX=MN
- 220 '
- 230 '****** DEMANDE LA PROCHAINE VALEUR ET RECHERCHE LE NOUVEAU MIN/MAX *******
- 240 '
- 250 READ V:IF V=99999 THEN 320 'V=99999 SIGNIFIE TOUT FAIT
- 260 MN=FNMIN(MN,V) 'DEMANDE LE NOUVEAU MINIMUM
- 270 MX=FNMAX(MN,V) 'DEMANDE LE NOUVEAU MAXIMUM
- 280 GOTO 250
- 290 '
- 300 '****** AFFICHE LES RESULTATS ******
- 310 '
- 320 PRINT"VALEUR MINIMUM = ",MN
- 330 PRINT"VALEUR MAXIMUM = ",MX
- 340 '
- 350 '****** LES DONNEES SUIVENT - LA DERNIÈRE VALEUR DOIT ÊTRE 99999 ******
- 360 '
- 370 DATA 1.2, 2, 3, 4.7, 5.332, 0.314, 6, 7, 8.3, 9.57, 99999
Vous tapez ensuite :
>RUNENTER VALEUR MINIMUM = .314 VALEUR MAXIMUM = 9.57 READY >370 DATA -1, 9, 0, 8, 1, 7, 2, 6, 3, 5, 4, 99999ENTER >RUNENTER VALEUR MINIMUM = -1 VALEUR MAXIMUM = 9 READY >_ |