Jump to content
  • entries
    69
  • comments
    19
  • views
    7067

Créons une fonction personnalisée - 3e partie


David Julot

1007 views

 Share

Nous voici arrivé au terme de cette série où nous allons enfin réaliser cette fameuse fonction personnalisée récursive !

Pour celles et ceux qui arrivent seulement, je propose depuis trois semaines une série sur la réalisation de fonctions personnalisées récursives.


Donc, nous allons mettre en place la fonction personnalisée qui correspond au script donné la semaine dernière, à savoir une fonction qui a comme objectif d’inverser les items.

Bon, pour ceux du fond qui sont pressés de partir en vacances, on fournit à la fonction une liste de valeurs (A, B, C, D) et elle devra nous retourner cette liste mais avec les items inversés (D, C, B, A).

 

Petits rappels

Pour créer une fonction personnalisée vous devez avoir le logiciel FileMaker Pro Advanced. C’est avec ce logiciel que vous allez pouvoir mettre dans votre base de données la fonction personnalisée, car elle appartiendra au fichier, ce qui permet aux utilisateurs n’ayant pas FileMaker Pro Advanced de pouvoir l’exécuter sans problème à partir d’une formule de calcul.

Si vous souhaitez connaître la procédure pour la réalisation d’une fonction personnalisée, je vous recommande de lire la chronique disponible en cliquant ici.

 

La réalisation d’une fonction récursive

Pour rappel, je n’arrête pas de le rappeler, une fonction récursive est une fonction qui s’appelle elle-même pour palier le fait qu’on n’a pas d’instruction de boucle.

Notre fonction devra avoir la forme suivante : InverserListe( listeATraiter ), avec :

  • InverserListe : le nom de la fonction, que l’on retrouvera dans la liste des fonctions des formules de calcul;
  • listeATraiter : le paramètre de la fonction, qui sera justement une liste.

Deuxième petit rappel, dans FileMaker une liste de valeurs est une liste où chaque item est séparé par une retour à la ligne (symbole ¶).

Voici le logigramme correspondant à la fonction que nous allons mettre en place:

logigramme01.jpg

Et vous remarquez que j’ai ajouté deux paramètres à la fonction : i et l. Car je dois, à chaque itération de ma boucle (appel à la fonction), transmettre des valeurs transitoires :

  • i : contient lors du 1er appel à la fonction une valeur vide et ensuite le numéro de l’item à récupérer ;
  • l : contient la liste inversée encours de construction.

Voici donc la formule de la fonction récursive :

DEFINIR (
  [
    _L = ListeATraiter ;
    _i = CAS( ESTVIDE( i ) ; DECOMPTEVALEURS( _L ) ; i - 1 ) ;
    _lt = l & "¶" & OBTENIRVALEUR( _L ; _i ) 
  ] ;
  CAS(
    _i  1 ; _lt ; 
    InverserListe( _L ; _i : _lt )
  )
)

 

Pour ceux qui veulent supprimer le premier retour chariot du résultat

Car la formule précédente génère un retour chariot inutile en début de liste, mais comme je ne voulais compliquer la formule, la voici donc avec le retour chariot en moins :

DEFINIR (
  [
    _L = ListeATraiter ;
    _i = CAS( ESTVIDE( i ) ; DECOMPTEVALEURS( _L ) ; i - 1 ) ;
    _la = OBTENIRVALEUR( _L ; _i ) ;
    _lt = CAS( ESTVIDE( l ) ; _la ; l & "¶" & _la ) 
  ] ;
  CAS(
    _i ≤ 1 ; _lt ; 
    InverserListe( _L ; _i : _lt )
  )
)

 

C’est tout pour aujourd’hui

Vous trouverez en pièce jointe à cette chronique le fichier FileMaker contenant la fonction personnalisée. En attendant la prochaine chronique, je vous souhaite à toutes et à tous une excellente semaine ensoleillée et chaude !

 Share

0 Comments


Recommended Comments

There are no comments to display.

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...