4 wxMaxima |
Mit
(Anweisung1, Anweisung2...)
werden die in Klammern geschriebenen durch Kommata getrennten
Anweisungen nacheinander abgearbeitet.
Das Ergebnis der letzten Anweisung ist dann auch das Ergebnis der
gesamten Sequenz.
Mit
block([Variablen], Anweisung(en))
werden mehrere sequentielle Anweisungen zu einem Block
zusammengefasst, für den Block werden lokale Variablen
bereitgestellt.
Vor der Bearbeitung der Anweisungen werden für die benannten
Variablen evtl. vorhandene gebundene Symbole gesichert,
anschließend die gebundenen Symbole entfernt. Nach Abarbeitung der
Anweisungen werden die gelisteten Symbole erneut entfernt,
anschließend wird der am Block-Beginn gesicherte Zustand
wiederhergestellt.
Die Wirkung entspricht dem Mechanismus lokaler Variablen aus
anderen Programmiersprachen. Blöcke werden häufig für die
Definition von Funktionen eingesetzt.
Bei der Wertbestimmung kann mit
if Bedingung then Ausdruck1 else Ausdruck2
verzweigt werden. Ist die Bedingung erfüllt, ist das Ergebnis der if-Anweisung der Wert Ausdruck1, ansonsten Ausdruck2. Für beide Ausdrücke kann auch eine Sequenz bzw. ein Block eingesetzt werden.
Im Beispiel wird die if-Anweisung eingesetzt, um eine Division durch 0 zu verhindern.
parallel(x,y):=( if x > 0 then if y > 0 then ( (x*y)/(x+y) ) else 0 ) else 0 )$
for Variable: Startwert thru Endwert step Schrittweite do Anweisung
führt eine Anweisung (auch Sequenz oder Block) mehrfach aus.
Falls die Schrittweite 1 ist, kann "step Schrittweite"
weggelassen werden.
for Variable: Startwert step Schrittweite while Bedingung do Anweisung for Variable: Startwert step Schrittweite unless Bedingung do Anweisung
Die Variable erhält den angegebenen Startwert
zugewiesen. Vor jedem Schleifendurchlauf wird getestet, ob die
angegebene Bedingung erfüllt ist (while) bzw. nicht erfüllt ist
(unless). Falls ja, wird diie Anweisung (auch Sequenz oder Block)
ausgeführt und anschließend die Variable um die
Schrittweite geändert.
Ist die Bedingung nicht erfüllt (while) bzw. erfüllt (unless), wird
die Schleife beendet.
Alle drei Schleifen (for, while, unless) liefern als Ergebnis das
Atom "done". Mit einer return-Anweisung im Schleifenkörper
kann explizit ein Rückgabewert festgelegt werden.
Steht der Schleifenkörper in einem Block, verlässt das
return nur den Schleifenkörper, nicht aber den
umgebenden Block. Dies ist ein Unterschied zu vielen anderen
Programmiersprachen, in denen ein return die jeweilige
Funktion verlässt. Auch der Rückgabewert gilt nur für die
Schleifenanweisung, nicht für den umgebenden Block.