Sie befinden sich hier: SIGMA 15 » Simulation » Benutzerdefinierte Funktionen

Benutzerdefinierte Funktionen

Dies ist eine alte Version des Dokuments!


Benutzerdefinierte Funktionen

Benutzerdefinierte Funktionen

Für die Definition benutzerdefinierter Funktionen wurde eine eigene, minimale (Programmier-)Sprache entwickelt. In dieser Sprache können beliebig komplexe, mathematische Ausdrücke formuliert werden. Außerdem bietet sie die Möglichkeit der bedingten Ausführung anhand logischer Ausdrücke. Im Folgenden wird näher auf die Eigenschaften dieser Sprache eingegangen.

Bearbeiten benutzerdefinierter Funktionen

Steuerpfad: Hauptmenu: Simulation > Benutzerdefinierte Funktionen…



Es können benutzerdefinierte Funktionen zur Bearbeitung ausgewählt werden. Die Bearbeitung der jeweiligen Funktion ermöglicht das in der Abbildung dargestellten Dialogfenster Benutzerdefinierte Funktionen verwalten.

Abbildung: Bearbeiten der benutzerdefinierten Funktionen

Der obere Teil dient zur Festlegung des Namens und der Einheit eines Funktionswertes dieser Funktion. Ist der Name einmal bestimmt, so kann er nicht mehr geändert werden.

Der mittlere Teil umfasst ein großes Textfeld, in dem die Funktion als solche definiert werden kann. Der Text in diesem Feld wird farbig dargestellt, wobei verschiedenen Aspekten der Funktion verschiedene Farben zugeordnet werden (Syntaxhervorhebung). Schlüsselwörter werden beispielsweise blau dargestellt.

Im unteren Teil können vordefinierte Variablen, die z. B. Berechnungsergebnisse oder einfache Geometriedaten enthalten, oder mathematische Funktionen an der Stelle des Cursors in das Textfeld eingefügt werden. Da es 144 solcher vordefinierten Variablen gibt, stellt dies eine enorme Vereinfachung dar.

Im linken Teil des Dialoges können die benutzerdefinierten Funktionen verwaltet (erstellen, löschen) werden.

Beim Drücken auf Ok wird geprüft, ob die definierte Funktion ausgewertet werden kann. Sind syntaktische Fehler in der Funktion enthalten, so werden diese ausgegeben und die Fehlerstelle im Textfeld farblich markiert.

Mathematische Ausdrücke

Mathematische Ausdrücke repräsentieren einen (noch zu bestimmenden) Wert. In einem solchen Ausdruck können Variablen, mathematische Operatoren, vordefinierte Funktionen und Klammern beliebig verwendet werden. Die folgende Auflistung führt auf, welche Elemente in einem mathematischen Ausdruck verwendet werden kann, damit dieser den Anforderungen der benutzerdefinierten Funktionen genügt:

  • Binäre Operatoren: In mathematischen Ausdrücken können fünf Operatoren für die Grundrechenarten Potenzieren (^), Multiplizieren (*), Dividieren (/), Addieren (+) und Subtrahieren (-) verwendet werden.
  • Unäre Operatoren: Es ist nur das unäre Minus(-) als Operator definiert.
  • Klammern: Mathematische Ausdrücke können beliebig geklammert werden.
  • Variablen: In einem mathematischen Ausdruck können Variablen benutzt werden. Es gibt 144 vordefinierte Variablen und der Nutzer kann beliebige weitere Variablen anlegen und in einer Funktion benutzen.
  • Vordefinierte Funktionen: Es können 13 grundlegende mathematische Funktionen wie die Sinus- oder Logarithmus-Funktion benutzt werden.
  • Benutzerdefinierte Funktionen: Bereits definierte benutzerdefinierte Funktionen können ebenfalls verwendet werden.

Des Weiteren gibt es einige Rechenregeln, die dem Benutzer bekannt sein sollten, wenn er benutzerdefinierte Funktionen definieren möchte:

Präzedenz von Operatoren und Klammerung

  • Die Rechenzeichen * und / binden stärker als + und -.
  • Potenzen werden vorrangig ausgerechnet.
  • Vordefinierte Funktionen binden stärker als der Potenzoperator.
  • Inhalte, der in Klammern steht, wird zuerst ausgerechnet.

Assoziativität

Alle definierten binären Operatoren sind links-assoziativ. Das heißt, falls in einem Term mehrere Operatoren gleicher Präzedenz hintereinander stehen, so wird der Term von links nach rechts ausgewertet.

Beispiele

$a^3+b^2+0.815$ Gültiger Ausdruck
$42+(-7)$ Gültiger Ausdruck (unäres Minus)
$\frac{a}{b}/3$ Gültiger Ausdruck, er wird als $\frac{a/b}{3}$ ausgewertet!
$\sin(2) \cdot 3.1415$ Gültiger Ausdruck, er entspricht $(\sin 2) \cdot 3.1415$
$\sin(2 \cdot 3.1415)$ Gültiger Ausdruck
$x^{1/2}$ oder $\sqrt{x}$ Gültiger Ausdruck, Quadratwurzel von x

Logische Ausdrücke

Logische Ausdrücke repräsentieren einen Wahrheitswert. In einem solchen Ausdruck können Vergleichsoperatoren sowie logische Operatoren verwendet werden. Die sechs binären Vergleichsoperatoren Kleiner (<), Kleiner-oder-gleich (⇐), Gleich ( == ), Größer-oder-gleich ( >= ), Größer (>) und Ungleich ( != ) vergleichen jeweils zwei mathematische Ausdrücke miteinander. Ihre Rückgabewerte sind Wahrheitswerte und können mit den zwei logischen Operatoren and und or weiter verknüpft werden. Dabei gilt, dass and stärker bindet als or. Logische Ausdrücke können nicht geklammert werden. Der Einsatz von logischen Ausdrücken ist auf bedingte Anweisungen beschränkt, die im nächsten Abschnitt näher erläutert werden.

Beispiele

$a < 0$ Gültiger Ausdruck, wahr, wenn $a$ negativ ist
$0.5 < a \land a \leq 1$ Gültiger Ausdruck, wahr, wenn $a \in (0.5, 1]$ ist
$a \lor b$ Kein gültiger Ausdruck, Wahrheitswerte können nicht in Variablen gespeichert werden
$|0-a| < \varepsilon$ Gültiger Ausdruck, linke und rechte Seite sind jeweils mathematische Ausdrücke

Anweisungen

Die oben beschriebenen Ausdrücke können nicht für sich stehen, sondern können immer nur in Verbindung mit Anweisungen genutzt werden. Für die benutzerdefinierten Funktionen werden dabei vier Anweisungen unterschieden. Jede Anweisung beginnt in einer neuen Zeile und muss am Ende einer Zeile abgeschlossen sein.

Zuweisungen

Eine Zuweisung bindet den Wert eines mathematischen Ausdrucks an eine Variable. Dabei steht auf der linken Seite des Zuweisungszeichens ( = ) der Variablenname und auf der rechten Seite ein gültiger mathematischer Ausdruck. Die Syntax ist wie folgt:

<Bezeichner> = <Mathematischer Ausdruck>

Durch Verwenden einer Zuweisungsanweisung wird die entsprechende Variable, sofern noch nicht bekannt, angelegt und mit dem Wert des Ausdrucks belegt. Existiert bereits eine Variable mit diesem Namen, so wird der alte Wert überschrieben. So angelegte Variablen können anschließend wieder in mathematischen Ausdrücken verwendet werden. Variablennamen müssen immer mit einem Buchstaben beginnen, dürfen aber Ziffern enthalten. Der Wert von logischen Ausdrücken kann nicht an Variablen gebunden werden! Nachfolgend sind einige Beispiele für Zuweisungen aufgeführt.

$\pi = 3.1415$ Gültige Zuweisung
$ab2 = a^2 + 2ab + b^2$ Gültige Zuweisung
$soNicht = (a < 0)$ Keine gültige Zuweisung, Wahrheitswerte können nicht an Variablen gebunden werden
$a = b = 0.0$ Ungültig, nur eine Zuweisung erlaubt
$2Pi = 2 + \pi$ Ungültig, „2Pi“ ist kein gültiger Variablenname

Return

Eine return-Anweisung legt den Funktionswert der benutzerdefinierten Funktion fest und beendet die weitere Auswertung der Funktion. Der Wert des hinter dem Schlüsselwort (return) stehenden mathematischen Ausdrucks ist dabei der Funktionswert. Dabei gilt folgende Syntax:

return <Mathematischer Ausdruck>

Bedingte Ausführung

Eine if-then-else Anweisung führt eine Anweisung abhängig von einer gegebenen Bedingung aus. Diese Bedingung wird durch einen logischen Ausdruck definiert. Ist der Ausdruck wahr, so wird die auf das then-Schlüsselwort folgende Anweisung ausgeführt, andernfalls die auf das else-Schlüsselwort folgende Anweisung. Der else-Fall ist optional.

if <Logischer Ausdruck> then <Anweisung> [else <Anweisung>]

Als einfachstes Beispiel kann man die Bestimmung des Maximums zweier Werte betrachten:

if a < b        # Wenn a kleiner als b ist
then           # Dann
  max= b       # Ist b das Maximum
else           # Sonst
  max= a       # Ist a das Maximum

Gruppierung

Die Schlüsselwörter begin und end klammern eine Folge von Anweisungen so, dass die zwischen begin und end aufgeführten Anweisungen als eine Anweisung behandelt werden können. Auf diese Weise können auch mehrere Anweisungen zusammen bedingt ausgeführt werden.

begin
  <Anweisung 1>
  ...
  <Anweisung n>
end
simulation/benutzerdefinierte_funktionen.1768076198.txt.gz · Zuletzt geändert: 2026/01/10 21:16