Section courante

A propos

Section administrative du site

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

  1. 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.

  1. 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 :

  1. DEF FNR(A)=RND(0)

Exemples :

  1. 10 DEF FNMLT(A,B)=A*B
  2. 20 INPUT"ENTRER LE PARAMETRE",X,Y
  3. 30 PRINT"LE PRODUIT EST";FNMLT(X,Y)

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.

  1. DEF FNRR(A,B)=A+INT(B*RND(0))

Renvoie un nombre aléatoire entre A et B.

  1. DEF FNL8$(A$)=LEFT$(A$,8)

Renvoie les 8 premiers caractères du paramètre de chaîne de caractères.

  1. DEF FNX#(A#,B#)=(A#-B#)*(A#-B#)

Renvoie la valeur double précision du "carré de la différence".

  1. 100 'PROGRAMME : STRING
  2. 110 'EXEMPLE D'UNE FONCTION DE CHAINE DE CARACTERES DEFFN
  3. 120 '
  4. 130 '****** FONCTION POUR CONCATENER DES CHAINES DE CARACTERES *******
  5. 140 DEF FNADD$(A$,B$)=A$+" "+B$
  6. 150 CLS:PRINT TAB(15);"EXEMPLE DE CHAINE DE CARACTERES DEFFN"
  7. 160 PRINT:F$="":INPUT"ENTRER LE PRENOM :";F$
  8. 165 IF F$=""THEN END
  9. 170 INPUT"ENTRER LE NOM DE FAMILLE :";L$
  10. 180 '
  11. 190 '****** AJOUT DE F$ VERS L$ AVEC 1 BLANC ENTRE ******
  12. 200 '
  13. 210 Z$=FNADD$(F$,L$)
  14. 220 PRINT TAB(6);"NOM COMPLET : ";Z$
  15. 230 GOTO 160

Vous tapez la commande suivante :

RUNENTER

on obtiendra un résultat ressemblant à ceci :

               EXEMPLE DE CHAINE DE CARACTERES DEFFN

ENTRER LE PRENOM : JEANENTER
ENTRER LE NOM DE FAMILLE : TREMBLAYENTER
      NOM COMPLET : JEAN TREMBLAY

Voici maintenant un exemple d'un programme MINMAX :

  1. 100 'PROGRAMME : MINMAX
  2. 110 'EXEMPLE DE FONCTION DEFFN
  3. 120 '
  4. 130 '****** DEFINIE LES FONCTIONS MIN ET MAX *******
  5. 135 '
  6. 140 DEF FNMIN(A,B)=(A+B-ABS(A-B))/2
  7. 150 DEF FNMAX(A,B)=(A+B+ABS(A-B))/2
  8. 160 '
  9. 170 '****** LECTURE DE LA PREMIERE VALEUR - APPELEZ-LE LE MIN ET LE MAX *******
  10. 180 'MN EST LA VALEUR MINIMUM
  11. 190 'MX EST LA VALEUR MAXIMUM
  12. 200 '
  13. 210 READ MN:MX=MN
  14. 220 '
  15. 230 '****** DEMANDE LA PROCHAINE VALEUR ET RECHERCHE LE NOUVEAU MIN/MAX *******
  16. 240 '
  17. 250 READ V:IF V=99999 THEN 320 'V=99999 SIGNIFIE TOUT FAIT
  18. 260 MN=FNMIN(MN,V) 'DEMANDE LE NOUVEAU MINIMUM
  19. 270 MX=FNMAX(MN,V) 'DEMANDE LE NOUVEAU MAXIMUM
  20. 280 GOTO 250
  21. 290 '
  22. 300 '****** AFFICHE LES RESULTATS ******
  23. 310 '
  24. 320 PRINT"VALEUR MINIMUM = ",MN
  25. 330 PRINT"VALEUR MAXIMUM = ",MX
  26. 340 '
  27. 350 '****** LES DONNEES SUIVENT - LA DERNIÈRE VALEUR DOIT ÊTRE 99999 ******
  28. 360 '
  29. 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
>_


Dernière mise à jour : Vendredi, le 3 Mars 2023