Jump to content
  • 0

In-zichzelf-herhalende-functies


Sanne

Question

Posted

De vraag werd gesteld hoe je een gegeven tekst in een tekstveld met een functie zou kunnen omkeren.

 

Dus de tekst "Tekst" moet worden: "tskeT".

 

Loopen, right() en een hulpveldje kan natuurlijk, maar het kan in FMP7 ook met een functie.

 

Peter vond dat wel een uitdaging en heeft de functie Reverse(text) gemaakt:

 

function Reverse(text):
---------------------------
Right ( text ; 1 ) & 

  If ( Length ( text )  > 1; 
    Reverse ( Left ( text; Length ( text )  - 1 ) 
  ) ; "" )
---------------------------

 

Argh. Het heeft eventjes geduurd voordat ik het loopen goed onder de knieën had zitten (eerst de ene knie, dan de volgende knie, doorgaan tot er geen knieën meer zijn, en dan stoppen).

 

Komen ze dus nu met in-zichzelf-herhalend-functies aanzetten.

 

Kan iemand mij uitleggen hoe dat werkt? Ik snap gewoon nog niet hoe ik zo'n formule moet lezen: hoe je dat interpreteert in woorden. 8O:?:

 

 

8 answers to this question

Recommended Posts

  • 0
Posted

Custom functies en alles wat daarbij hoort - functies die zichzelf oproepen en voorlopige variabelen, de nieuwe FileMaker Pro 7 functies en zo, vereisen misschien dat we hier een verzameling van aanleggen op de Clarify site, en de functies indien nodig - en zeker in het begin - grondig bespreken.

Dus doe ik een voorstel: wat denken jullie over een subforum te maken dat puur over de calculaties en functies gaat. Dus niet echt een Q&A, eerder een forum waar we dit soort dingen in verzamelen.

Het is weer niks op TV, dus zit ik hier mijn schoot op te warmen in de zetel met mijn powerboekje. Heb net weer eentje klaar (of toch in "beta"). Deze is wat ingewikkelder, heb 'm de "Rotate()" functie genoemd. Je kent misschien de Rot(13) text encoding. Met Rotate() kan je de karakters van een tekst "roteren" en dus onleesbaar maken. "A" heeft als ASCII waarde 65, Rotate("A";1) geeft B, enfin, je begrijpt hopelijk wat ik bedoel.

Moet er nog wat aan schaven, heb vooral nog een probleempje met ASCII karakters die je niet zomaar in een formule box kan steken, als ik ze alle 255 plak in 1 keer en dan OK klik, krijg ik een mooie "spinning beachball of deatch" op mijn Mac, en moet ik FileMaker "killen".

  • 0
Posted

Leuk dat je dat vraagt. Probeer misschien eens het woordje in te vullen in de functie:

 

dan krijgen we voor het woord "pot" het volgende:

Right ( "pot" ; 1 ) & If ( Length ( "pot" ) > 1;

Reverse ( Left ( "pot" ; Length ("pot" ) - 1 )

) ; "" )

 

geeft:

 

"t" & if(3>1 ; Reverse("po") ; "" )

 

die reverse("po") geeft het volgende resultaat

 

"o" & if(2>1 ; Reverse("p") ; "" )

 

dus hebben we nu al:

 

"t" & "o" & if(2>1 ; Reverse("p") ; "" )

 

reverse("p") heft als resultaat: "p"

 

dus krijgen we "t" & "o" & "p" wat geeft "top"

 

 

Hopelijk een beetje duidelijk zo. En hoe groter je loop wordt hoe trager de functie uiteraart.

 

Koen

  • 0
Posted
function Reverse(text):
---------------------------
Right ( text ; 1 ) & 

  If ( Length ( text )  > 1; 
    Reverse ( Left ( text; Length ( text )  - 1 ) 
  ) ; "" )
---------------------------

Kan iemand mij uitleggen hoe dat werkt? Ik snap gewoon nog niet hoe ik zo'n formule moet lezen: hoe je dat interpreteert in woorden. 8O:?:

 

 

Recursieve functies kan je het beste in gewoon Nederlands "vertalen".

 

De functie van Peter doet het volgende:

 

1) Geef mij de omgekeerde tekst van een woord

 

Na analyse kan je dit ook formuleren als

 

2) Geef mij het laatste teken van een woord en plaats de omgekeerde tekst van de posities voor het laatste teken daarachter.

 

In Pseudokode:

 

Functie Omkeren

Terug(Laatste positie & Omkeren(Alle posities minus laatste positie))

 

Recursieve functies moeten minimaal 1 If-statement bevatten anders stoppen ze nooit. Bovenstaand voorbeeld gaat tot in het oneindige door!

 

Dus:

Functie Omkeren(Woord)

Indien Lengte(Woord) <= 1

Dan Terug(Woord)

Anders Terug(Right(Woord;1) & Omkeren(Left(Woord);length(Woord)-1))

  • 0
Posted (edited)

Ik heb inmiddels het licht zien gaan schijnen, vooral door de heldere bundel die door Koen is gericht. Het idee om een woordje in te vullen en dan het gebeuren in de formule door te denken is uiterst subliem en bijzonder effectief gebleken.

 

We zijn nu overigens nog op zoek naar een zinvolle toepassing van deze functie "Reverse" ... :D

 

 

 

 

 

 

 

----------------------

Edited by Guest
  • 0
Posted
We zijn overigens nog op zoek naar een zinvolle toepassing van deze functie "Reverse" ... :D

 

Maar Ennas toch!

 

(Is dit lovniz?)

  • 0
Posted

We zijn nu overigens nog op zoek naar een zinvolle toepassing van deze functie "Reverse" ... :D

 

Ik gebruik de reverse calc voor het dynamisch sorteren van portalen....

 

Gaat een stuk sneller en overzichtelijker.....

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

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

×
×
  • Create New...