Eigene Funktionen / Custom Functions                                         Von den Grundlagen zu                        ...
Zu meiner Person            •     Diplom-Ingenieur der Technischen Informatik            •     6½ Jahre in den USA als IT ...
Theoretische Betrachtungen
Eigene Funktionen            •     Was ist eine Funktion?                      „Eine vordefinierte, benannte Formel, die e...
Eigene Funktionen            Eine Eigene Funktion …            •     ist eine gespeicherte Formel            •     hat kei...
Aufbau einer Funktion         NullWert( Wert; Null )             Wenn( IstLeer( Wert );             ! Null;             //...
Funktionsname            •     Der Name muss eindeutig sein            •     Darf nicht länger als 100 Zeichen sein       ...
Funktionsparameter            •     Es muss kein Parameter angegeben werden            •     Der Parametername unterliegt ...
Funktionscode und Rückgabewert            •     Es ist keine Programmiersprache.            •     Der Code besteht aus ein...
FileMaker Dialoge
Dialog: Funktionen verwalten            •     Aufruf: Ablage > Verwalten > Eigene Funktionen…                             ...
Dialog: Funktionen importieren            •     Aufruf: Ablage > Verwalten > Eigene Funktionen… > ImportierenDipl.-Ing. Ar...
Funktionen importieren            •     Es werden nur Funktionen importiert, keine Bezugsobjekte, etc.            •     Fi...
Dialog: Funktionen bearbeiten               Parameter hinzufügen             Parameter löschen                            ...
Programmierung vonEigenen Funktionen
Übersicht Programmierung            •     Kommentare            •     Operatoren            •     Funktionsumfang         ...
Kommentare            •     Zeilenkommentare                  Hole( LetzteFehlerNr ) = 109 // Berechtigung fehlt          ...
Operatoren            •     Alle bekannten Operatoren aus FileMaker                  Standarddialogen können verwendet wer...
Funktionsumfang            •     Fast alle internen FileMaker Funktionen                 ‣     Ausnahme: Selbst           ...
SetzeVars            •     SetzeVars erlaubt die Zusammenfassung mehrerer Ausdrücke                 ‣     Um wiederholte B...
SetzeVars         SetzeVars( [         ! $$GLOBAL = "globale Variable";             Variablendeklarationen         ! $Loka...
SetzeVars Beispiel         Wenn( HoleNtenDatensatz( Test::Ergebnis; $X ) < 1,0 ODER         HoleNtenDatensatz( Test::Ergeb...
Variablen
Globale und lokale Variablen            •     Globale Variable: $$Variable            •     Lokale Variable: $Variable    ...
Einfache Variablen            •     Werden in SetzeVars definiert            •     Müssen definiert werden, bevor sie verwen...
Gültigkeitsbereich von Variablen          Modul A                                  Globale Variablen             Script 1 ...
Gültigkeitsbereich von Variablen          Modul A                                     Lokale Variablen             Script ...
Gültigkeitsbereich von Variablen          Script 1                                      Einfache Variablen             Set...
FortgeschritteneProgrammiertechniken
Funktionskapselung            •     Aufgaben einer Funktionskapselung:                 ‣     Vereinfachung des Funktionsau...
Funktionskapselung          FMSQL Plug-in           • qFMSQL_ExecuteSQL( Query {; ColumnSeparator_ASCIINumber ; RowSeparat...
Funktionskapselung          FMSQL Plug-in           • qFMSQL_ExecuteSQL( Query {; ColumnSeparator_ASCIINumber ; RowSeparat...
Optionale Parameter            •     Optionale Parameter müssen nicht angegeben werden            •     Wenn nicht angegeb...
Optionale Paramter bei Eigenen Funktionen            •     Reguläre Parameter                 ‣     Bei Standardaufruf wir...
Mehrere Rückgabewerte            •     Lokale oder globale Variablen            •     Geeignete Namen wählen: z. B. $CFNam...
Rekursionen
Rekursion            •     Rekursion bedeutet, die Funktion ruft sich selbst auf            •     Direkter oder indirekt A...
Beispiel Rekursion         Aufgabe:               Ein Text soll beliebig oft wiederholt werden         Name:              ...
Beispiel Rekursion         Wiederholen( Text; Anzahl )            •     Text ist ein gültiger Variablenname            •  ...
Beispiel Rekursion         Wiederholen( _Text; _Anzahl )                           Kein Abbruch                _Text & Wie...
Endrekursion / Tail Recursion            •     FileMaker ist Endrekursion-optimiert            •     Endrekursionen erhöhe...
Beispiel Endrekursion          SumN( n )                                Keine Endrekursion             Wenn( n = 0;!0; n +...
Beispiel Endrekursion          SumN( n )             AddSumN( 0; n )          AddSumN( m; n )             Wenn( n = 0;!m; ...
Praxisbeispiele
Beispiel Summenfunktion          SumN( n )             AddSumN( 0; n )          AddSumN( m; n )             Wenn( n = 0;!m...
Die einfachste Eigene Funktion          _( )            •     Die einfachste Funktion besteht aus einem einzigen Zeichen  ...
Vielen Dank für Ihre AufmerksamkeitDipl.-Ing. Arnold Kegebein               FileMaker Konferenz 2012 SalzburgCustomer Func...
Vielen Dank unseren Sponsoren      Danke für das Bewerten dieses VortragesDipl.-Ing. Arnold Kegebein                 FileM...
Nächste SlideShare
Wird geladen in …5
×

FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

2.440 Aufrufe

Veröffentlicht am

Von den Grundlagen zu fortgeschrittenen Programmiertechniken.

Ein Vortrag im Rahmen der FileMaker Konferenz 2012 in Salzburg.

1 Kommentar
1 Gefällt mir
Statistik
Notizen
  • Ein sehr gut gemachter Vortrag , der die Grundlagen der CF gut erklärt.
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
Keine Downloads
Aufrufe
Aufrufe insgesamt
2.440
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
1
Aktionen
Geteilt
0
Downloads
88
Kommentare
1
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein

  1. 1. Eigene Funktionen / Custom Functions Von den Grundlagen zu fortgeschrittenen ProgrammiertechnikenDipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  2. 2. Zu meiner Person • Diplom-Ingenieur der Technischen Informatik • 6½ Jahre in den USA als IT Manager • Seit 2006 Entwicklung mit FileMaker • 25 Jahre Datenbankerfahrungen: Access, Oracle, MySQL, u. a. • Hohe Aufmerksamkeit auf Usability und Design • Regelmäßiger Autor im FileMaker MagazinDipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  3. 3. Theoretische Betrachtungen
  4. 4. Eigene Funktionen • Was ist eine Funktion? „Eine vordefinierte, benannte Formel, die eine spezielle Berechnung durchführt und einen eindeutigen einzelnen Wert liefert.“ (FileMaker Pro 11, Hilfe, Glossar) • Wieso »Eigene« Funktion? Es gibt drei verschiedene Gruppen von Funktionen: ‣ FileMaker Funktionen sind im Programm direkt eingebaut ‣ Externe Funktionen als Schnittstelle zu Plugins ‣ Eigene Funktionen vom Entwickler frei programmiertDipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  5. 5. Eigene Funktionen Eine Eigene Funktion … • ist eine gespeicherte Formel • hat keinen, einen oder mehrere Eingabewerte (Parameter) • gibt genau einen Wert zurück • wird wie eine normale FileMaker Funktion verwendet • ist nur im verwendeten Modul bekannt • kann zwischen Modulen kopiert werden • kann in FileMaker Pro aufgerufen, aber nur mit FileMaker Pro Advanced erstellt und modifiziert werden • kann im Zugriff beschränkt sein (Anwenderrechte)Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  6. 6. Aufbau einer Funktion NullWert( Wert; Null ) Wenn( IstLeer( Wert ); ! Null; // Sonst ! Wert ) • Funktionsname • Funktionsparameter • Funktionscode • FunktionsergebnisDipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  7. 7. Funktionsname • Der Name muss eindeutig sein • Darf nicht länger als 100 Zeichen sein • Darf bestimmte Zeichen nicht enthalten: + - * / ^ & = ≠ < > ≤ ≥ ( , ; ) [ ] " :: $ } • Darf Leerzeichen enthalten • Darf nicht mit einer Ziffer, Punkt oder Leerzeichen beginnen • Darf nicht UND, ODER, XODER, NICHT enthalten • Darf nicht den gleichen Namen wie eine Funktion, ein Parameter der aktuellen Funktion oder ein Schlüsselwort sein • Vorsicht bei mehrsprachigen ArbeitsumgebungenDipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  8. 8. Funktionsparameter • Es muss kein Parameter angegeben werden • Der Parametername unterliegt den gleichen Beschränkungen wie der Funktionsname • Die Reihenfolge der Parameter hat Bedeutung • Es gibt keine optionalen Parameter, d. h. definierte Parameter müssen im Funktionsaufruf berücksichtigt werden • Die Parameter müssen im Funktionscode nicht vorkommenDipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  9. 9. Funktionscode und Rückgabewert • Es ist keine Programmiersprache. • Der Code besteht aus einer einzigen Formel. • Das Ergebnis der Formel ist der Rückgabewert der Funktion.Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  10. 10. FileMaker Dialoge
  11. 11. Dialog: Funktionen verwalten • Aufruf: Ablage > Verwalten > Eigene Funktionen… Funktionen aus anderen Modulen importierenDipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  12. 12. Dialog: Funktionen importieren • Aufruf: Ablage > Verwalten > Eigene Funktionen… > ImportierenDipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  13. 13. Funktionen importieren • Es werden nur Funktionen importiert, keine Bezugsobjekte, etc. • FileMaker überwacht und „korrigiert“ Funktionen beim Import • Es wird eine Importzusammenfassung und Protokoll erzeugt • Gleichheit im Funktionsnamen wird durch einen Zähler ausgeglichen • Verweise auf andere Eigene Funktionen werden zuerst auf die gleichzeitig importierten Funktionen angewand, sonst auf schon existierende CFs • Bei fehlenden Verweisen wird der gesamte Code in einen Kommentar umgewandeltDipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  14. 14. Dialog: Funktionen bearbeiten Parameter hinzufügen Parameter löschen Parameter umbenennenDipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  15. 15. Programmierung vonEigenen Funktionen
  16. 16. Übersicht Programmierung • Kommentare • Operatoren • Funktionsumfang • Variablen und deren Gültigkeitsbereiche (Scope) • Spezielle Funktion: SetzeVars • Fortgeschrittene Programmiertechniken ‣ Funktionskapselung ‣ Optionale Parameter ‣ Mehrere Rückgabewerte • Komplexe Funktionsstrukturen ‣ Rekursion ‣ Schleifen ‣ Wechselseitiger FunktionsaufrufDipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  17. 17. Kommentare • Zeilenkommentare Hole( LetzteFehlerNr ) = 109 // Berechtigung fehlt ‣ Vom // bis zum Zeilenende • Blockkommentare Auswahl( x; "" /* Null */; 100; 250; 333; 500; 750 ) ‣ Vom /* bis zum entsprechenden */ ‣ Kann sich über mehrere Zeilen erstrecken ‣ Blockkommentare können verschachtelt werden • Auswertungspriotität von Zeilen- und Blockkommentaren ist abhängig von der VerarbeitungsreihenfolgeDipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  18. 18. Operatoren • Alle bekannten Operatoren aus FileMaker Standarddialogen können verwendet werden • Rechenoperatoren: + - * / ^ • Textoperatoren: " " & ¶ • Klammern: ( ) • Vergleichsoperatoren: = ≠ > < ≥ ≤ • Logische Operatoren: UND ODER XODER NICHTDipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  19. 19. Funktionsumfang • Fast alle internen FileMaker Funktionen ‣ Ausnahme: Selbst ‣ Landesspezifische Sprache und immer Englisch • Alle Externen Funktionen (von Plug-ins) • Alle Eigenen Funktionen ‣ Einschließlich sich selbst (Rekursion) • Alle Tabellenfelder, die im Modul definiert bzw. referenziert sind ‣ Keine Eingabehilfe für die Feldauswahl im Dialog ‣ Wenn Bezüge bei Funktionsaufruf nicht bestehen, dann gibt die Funktion einen Fehler zurück.Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  20. 20. SetzeVars • SetzeVars erlaubt die Zusammenfassung mehrerer Ausdrücke ‣ Um wiederholte Berechnungen zu vermeiden ‣ Um Ausdrücke übersichtlicher zu strukturieren • Mit SetzeVars können Variablen definiert werden ‣ Globale Variablen ‣ Lokale Variablen ‣ Einfache VariablenDipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  21. 21. SetzeVars SetzeVars( [ ! $$GLOBAL = "globale Variable"; Variablendeklarationen ! $Lokal = "lokale Variable"; ! _Einfach = "einfache Variable" ]; ! "Heute ist der " ! & Ausdruck mit Rückgabewert Hole( SystemDatum ) ) • SetzeVars erlaubt die Deklaration von einer oder mehreren Variablen • SetzeVars erwartet einen Ausdruck, dessen Ergebnis der Rückgabewert der Funktion istDipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  22. 22. SetzeVars Beispiel Wenn( HoleNtenDatensatz( Test::Ergebnis; $X ) < 1,0 ODER HoleNtenDatensatz( Test::Ergebnis; $X ) > 1,8); ! "Ergebnis ausserhalb Testbereich" ) • Wiederholte Berechnung • Optimierung möglich für schneller Berechnung und geringere Speicherauslastung SetzeVars( [ ! Ergebnis = HoleNtenDatensatz( Test::Ergebnis; $X ) ]; ! Wenn( Ergebnis < 1,0 ODER Ergebnis > 1,8); ! ! "Ergebnis ausserhalb Testbereich" ! ) )Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  23. 23. Variablen
  24. 24. Globale und lokale Variablen • Globale Variable: $$Variable • Lokale Variable: $Variable • Variablen müssen nicht definiert werden • Variablen werden durch Wertzuweisung bekannt gemacht • Durch Zuweisung von "" wird die Variable wieder entfernt • Variablen können Wiederholungen haben ‣ Anzahl der Wiederholungen müssen nicht definiert werden • Variablen können direkt in der Datenanzeige überwacht und auch verändert werden ‣ Lokale Variablen nur während der Laufzeit eines ScriptsDipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  25. 25. Einfache Variablen • Werden in SetzeVars definiert • Müssen definiert werden, bevor sie verwendet werden • Können keine Wiederholungen haben • Können nur per Überwachung in der Datenanzeige dargestellt, aber nicht verändert werdenDipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  26. 26. Gültigkeitsbereich von Variablen Modul A Globale Variablen Script 1 $$X = "global" • Im gesamten Modul bekannt, in dem sie Script 1-1 $$X = "global" definiert werden Script 1-2 $$X = "global" • Können überall im Modul geändert werden; neuer Wert ist im gesamten Script 2 $$X = "global" Modul sichtbar Script 2-1 $$X = "global" • Unbekannt in anderen Modulen Modul B Script 3Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  27. 27. Gültigkeitsbereich von Variablen Modul A Lokale Variablen Script 1 $X = "lokal" • Nur in dem Script bekannt, in dem sie Script 1-1 definiert werden Script 1-2 • Untergeordnete Scripts können eine Variable mit dem gleichen Namen Script 2 definieren, ohne dadurch Script 2-1 den Wert der anderen Variable zu verändern Modul B Script 3Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  28. 28. Gültigkeitsbereich von Variablen Script 1 Einfache Variablen SetzeVars _X = "einfach" • Werden in der Funktion SetzeVars _X = "temp" SetzeVars erstellt • Sind nur im gleichen oder SetzeVars untergeordneten SetzeVars- Konstrukten bekannt SetzeVars • Untergeordnete SetzeVars- Konstrukte können zeit- weilig den Wert ändern, aber der ursprüngliche Wert wird beim Verlassen wieder hergestelltDipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  29. 29. FortgeschritteneProgrammiertechniken
  30. 30. Funktionskapselung • Aufgaben einer Funktionskapselung: ‣ Vereinfachung des Funktionsaufrufs ‣ Funktionssicherheit • Vergleichbar mit einer Black Box ‣ Eingabewerte und Ausgabewerte sind kontrollierbar ‣ Änderungen in der Black Box dringen nicht nach außen • Empfohlen für Externe Funktionen (Plug-ins) ‣ Wechsel des Plug-ins erfordert anderen Funktionsaufruf ‣ Neue Plug-in Version verändert die erforderlichen Parameter ‣ Standardaufruf erfordert nur wenige ParameterDipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  31. 31. Funktionskapselung FMSQL Plug-in • qFMSQL_ExecuteSQL( Query {; ColumnSeparator_ASCIINumber ; RowSeparator_ASCIINumber } ) SQL( query ) ! qFMSQL_ExecuteSQL( query ) DoSQL Plug-in • mFMb_DoSQL( sqlString {; executeOnIdle } ) • mFMb_DoSQL_SetColumnSeparator( unicodeNumber ) • mFMb_DoSQL_SetRowSeparator( unicodeNumber ) SQL( query ) ! mFMb_DoSQL( query ) FileMaker Pro 12 • ExecuteSQL( sqlQuery; fieldSeparator; rowSeparator {; arguments ... } ) SQL( query ) ! ExecuteSQL( query; "{Tab}"; ¶ )Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  32. 32. Funktionskapselung FMSQL Plug-in • qFMSQL_ExecuteSQL( Query {; ColumnSeparator_ASCIINumber ; RowSeparator_ASCIINumber } ) SQL( query ) Let( [ ! _result = qFMSQL_ExecuteSQL( query ); ! _error = Position( _result; "Query ERROR:"; 1; 1 ) > 0; ! $$SQL.ERROR.MSG = If( _error; _result ); ! $$SQL.ERROR.NO = Left( _result; 7 ); ! $$SQL.ERROR.QUERY = If( _error; query; "" ) ]; ! If( _error; "?"; _result ) )Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  33. 33. Optionale Parameter • Optionale Parameter müssen nicht angegeben werden • Wenn nicht angegeben, wird intern ein Vorgabewert verwendet • Vorteile von optionalen Parametern: ‣ Vereinfachung (kürzerer Aufruf im Standardfall) ‣ Fehlerverringerung (weniger Angaben = weniger Fehler) ‣ Flexiblere Funktionen, da vielseitiger nutzbar • FileMaker interne Funktionen und Externe Funktionen kennen optionale Parameter, Eigene Funktionen leider nicht FensterNamen( {Dateiname} ) Wenn( Bedingung; ErgebnisWennWahr {; ErgebnisWennFalsch} ) Liste( Feld {; Feld...} ) Austauschen( Text; [Suche1; Ersatz1] {; [Suche2; Ersatz2]; ...} ) SetzeVars( {[} Var1 = Term1 {; Var2 = Term2... ]}; Rechenanweisung )Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  34. 34. Optionale Paramter bei Eigenen Funktionen • Reguläre Parameter ‣ Bei Standardaufruf wird ein Leertext übergeben Alpha( Notwendig; {Optional} ) Aufruf: Alpha( "Lorem ipsum"; _ ) • Option Parameter ‣ Ein Text übernimmt beliebig viele zusammensetzte Optionen Beta( Notwendig; {Optionen} ) Aufruf: Beta( 475/12; "Einheit=€ Genauigkeit=2" ) • Lokale oder globale Variablen Gamma( Notwendig ) Aufruf: SetzeVars( $Gamma.Option = "xyz"; _ ) & Gamma( “LiLaLu” )Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  35. 35. Mehrere Rückgabewerte • Lokale oder globale Variablen • Geeignete Namen wählen: z. B. $CFName.Ergebnis • Variablen können auch Wiederholungen haben $$CF.Name[1], $$CF.Name[2], … • Variablen sollten immer in der Funktion initialisiert werdenDipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  36. 36. Rekursionen
  37. 37. Rekursion • Rekursion bedeutet, die Funktion ruft sich selbst auf • Direkter oder indirekt Aufruf (Funktion A ruft Funktion B auf, die wiederum Funktion A aufruft) • Eine Abbruchbedingung ist erforderlich, um die Rekursion abzubrechen • FileMaker: max. insgesamt 50.000 rekursive Aufrufe max. 10.000 Aufrufe in einem Call Stack • Rekursionen potenzieren die Möglichkeiten von Funktionen ‣ Programm- und Zahlschleifen ‣ Listen- und Kettenverarbeitungen ‣ Komplexe „Programmierungen“ innerhalb einer FunktionDipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  38. 38. Beispiel Rekursion Aufgabe: Ein Text soll beliebig oft wiederholt werden Name: Wiederholen Parameter: Text (Text) Der zu wiederholende Text Anzahl (Zahl) Anzahl der Wiederholungen Rückgabe: (Text) Der wiederholte Text Rekursion: Text ausgeben Abbruch: Nach der n-ten Wiederholung → Schleifenzähler → Initialisierung, Inkrementierung, Überprüfung Initialisierung: Autom. beim Funktionsaufruf (Parameterübergabe) Inkrement: Beim rekursiven Funktionsaufruf: Anzahl - 1 Überprüfung: Anzahl < 1Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  39. 39. Beispiel Rekursion Wiederholen( Text; Anzahl ) • Text ist ein gültiger Variablenname • Anzahl ist in einer deutscher Arbeitssumgebung nicht erlaubt • In einer englischen Umgebung kann dagegen Anzahl als Parametername verwendet werden ‣ Beim Wechsel in eine deutsche Umgebung arbeitet die Eigene Funktion weiterhin korrekt ‣ Sie kann dann aber nicht mehr leicht geändert werden • Empfehlung: Parameter und einfache Variablen sollten daher in einer Funktion immer mit einem Unterstrich beginnenDipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  40. 40. Beispiel Rekursion Wiederholen( _Text; _Anzahl ) Kein Abbruch _Text & Wiederholen( _Text; _Anzahl - 1 ) Wiederholen( _Text; _Anzahl ) Abbruchbedingung Wenn( _Anzahl ) < 1; ! // Abbruch der Rekursion // Sonst ! _Text & Wiederholen( _Text; _Anzahl - 1 ) ) Wiederholen( _Text; _Anzahl ) Rekursionsbedingung Wenn( _Anzahl ≥ 1; ! _Text & Wiederholen( _Text; _Anzahl - 1 ) ) • Statt einer Abbruchbedingung kann man auch eine Rekursionsbedingung schreibenDipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  41. 41. Endrekursion / Tail Recursion • FileMaker ist Endrekursion-optimiert • Endrekursionen erhöhen nicht den Aufrufstapel (call stack) • Endrekursiv bedeutet, der rekursive Funktionsaufruf ist die letzte Aktion zur Berechnung des FunktionswertesDipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  42. 42. Beispiel Endrekursion SumN( n ) Keine Endrekursion Wenn( n = 0;!0; n + SumN( n - 1 ) ) SumN(3) ! SumN(3) = 3 + SumN(2) ! SumN(2) = 2 + SumN(1) ! ! SumN(1) = 1 + SumN(0) ! ! ! SumN(0) = 0 ! ! SumN(1) = 1 + 0 = 1 ! SumN(2) = 2 + 1 = 3 SumN(3) = 3 + 3 = 6Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  43. 43. Beispiel Endrekursion SumN( n ) AddSumN( 0; n ) AddSumN( m; n ) Wenn( n = 0;!m; AddSumN( m + n; n - 1 ) ) SumN(3) ! SumN(3) = AddSumN( 0; 3 ) = AddSumN( 3; 2 ) = AddSumN( 5; 1 ) = AddSumN( 6; 0 ) = 6Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  44. 44. Praxisbeispiele
  45. 45. Beispiel Summenfunktion SumN( n ) AddSumN( 0; n ) AddSumN( m; n ) Wenn( n = 0;!m; AddSumN( m + n; n - 1 ) ) SumN( n; m ) Wenn( n = 0; ! m; // Sonst ! SumN( n - 1; GetAsNumber( m ) + n ) ) SumN( n ) ( n * ( n + 1 ) ) / 2Dipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  46. 46. Die einfachste Eigene Funktion _( ) • Die einfachste Funktion besteht aus einem einzigen Zeichen • Der Name ist notwendig; der Unterstrich gehört zu den erlaubten Zeichen • Kein Parameter erforderlich • Kein Funktionscode erforderlich • Der Rückgabewert der Funktion: eine leere Zeichenfolge • Einsatzgebiete dieser Funktion: ‣ Als Platzhalter für „optionale“ Funktionsparameter ‣ Erleichterung im Einsatz mit FileMaker Funktion BerechneDipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustom Functions / Eigene Funktionen www.filemaker-konferenz.com
  47. 47. Vielen Dank für Ihre AufmerksamkeitDipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustomer Functions / Eigene Funktionen www.filemaker-konferenz.com
  48. 48. Vielen Dank unseren Sponsoren Danke für das Bewerten dieses VortragesDipl.-Ing. Arnold Kegebein FileMaker Konferenz 2012 SalzburgCustomer Functions / Eigene Funktionen www.filemaker-konferenz.com

×