Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
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.864 Aufrufe

Veröffentlicht am

Von den Grundlagen zu fortgeschrittenen Programmiertechniken.

Ein Vortrag im Rahmen der FileMaker Konferenz 2012 in Salzburg.

  • 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

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

×