2.4 Ausdrücke
Jede Angabe einer Zahl, sei es in literaler Form oder als Ergebnis einer Operation, eines Funktionsaufrufes oder einer Folge von Operationen und Funktionsaufrufen nennt man Ausdruck bzw. genauer arithmetischen Ausdruck im Gegensatz zu Ausdrücken, die nicht zahlenartige Daten angeben.
Falls mehrere Operationen und Funktionsaufrufe in einem Ausdruck beschrieben werden, muß die Reihenfolge festgelegt werden, in der diese auszuführen sind. Matlab unterscheidet sich da nicht vom Üblichen. Man kann die Reihenfolge wie gewohnt durch Klammerung angeben, daneben gilt die (übliche) Prioritätenregelung für Operatoren. Die Angaben der Klammerung haben immer Vorrang vor der Prioritätenregelung.
Die Prioritätsstufen sind von oben nach unten:
18. Potenzbildung ^ bzw. .^
Man beachte, daß hier das Minuszeichen als Operatorsymbol und nicht als Teil der literalen Zahlendarstellung interpretiert wird. Im Zweifelsfalle verfährt Matlab immer in dieser Form.
Diese Regel erlaubt einige in anderen Programmiersprachen eher seltene Konstrukte, die aber nicht unbedingt zu empfehlen sind.
Die Prioritätenregelung legt nicht fest, wie der folgende Ausdruck zu interpretieren ist:
Es gibt jedoch hier nur eine sinnvolle Reihenfolge und Matlab wählt diese auch.
20. Multiplikation *, .* sowie Rechts- und Links-Division /, ./ bzw. \, .\
21. zweistellige Addition + und Subtraktion -
Steht ein Ausdruck in Klammern, so kann nur der Wert des gesamten Klammerausdruckes als Operand in eine Operation eingehen, die außerhalb der Klammer steht.
Es versteht sich von selbst, daß bei einem Funktionsaufruf das Argument zuerst ausgerechnet werden muß bevor der Funktionswert ermittelt und mit diesem weitergerechnet werden kann.
Wenn die Reihenfolge weder durch Klammerung noch durch Prioritätsregeln festgelegt ist, werden die betreffenden Teile eines Ausdrucks von links nach rechts abgearbeitet.
Aufgabe 2.1:
Lassen Sie die Werte von pi, eps sowie 1.0 + eps ausgeben. Letzteres ist die kleinste Zahl größer 1.0, die Matlab von 1.0 unterscheiden kann.
Welches Ergebnis liefert Matlab für 1.0+0.5*eps?
Können Sie Matlab dazu bringen, eine Zahl auszugeben, deren Wert zwischen pi und (1+eps)*pi liegt?
|