Die Division »…/…« in VBA
Einführendes Beispiel
Die Division wird mit einem Schrägstrich »/« geschrieben (in der Mathematik ist auch ‹÷› üblich). Der Schrägstrich »/« sollte nicht mit dem inversen Schrägstrich »\« verwechselt werden!
- Direktbereich
? 70/10
7
Vereinfachte Syntax
- vereinfachte Syntax
Ausdruck
.----------. .-. .----------.
--->| Ausdruck |--->· / ·-->| Ausdruck |--->
'----------' '-' '----------'
Sind D und d zwei Ausdrücke, so ist D /d wieder ein Ausdruck, der Quotient von D und d. Dabei wird D auch Dividend und d Divisor genannt. (Diese vereinfachte Syntax bringt die Assoziativität der Division nicht richtig zum Ausdruck. Diese wird daher weiter unten separat erklärt.) Dieser Operator hat zwei Operandenausdrücke (einen linken und einen rechten). Er wird daher binär genannt, während die zuvor vorgestellten Operatoren unär waren (sie hatten nur einen Operandenausdruck). Dieser Operator steht zwischen seinen Operandenausdrücken, daher wird er auch als ein Infixoperator bezeichnet.
Typanforderungen
Der Dividend und der Divisor müssen beide numerisch sein.
Typ
Ein Quotient hat den Typ »Double«. Dies gilt auch dann, wenn beide Operanden »Integer« sind und der Dividend durch den Divisor teilbar ist. Daher ist der Typ von »20/10« beispielsweise »Double«.
Wert Bei der Auswertung einer Division werden beide Operanden ausgewertet. Der Wert einer Division ist (bis auf meist kleine Abweichungen) der normale Quotient der beiden Werte.
Assoziativität
Die Division ist linksassoziativ, das heißt in »12/3/2« ist »12/3« ein Ausdruck, aber nicht »3/2«. »12/3/2« bedeutet also »(12/3)/2« – es wird von links beginnend zusammengefaßt.
- Direktbereich
? 12/3/2
2
Operationen bei der Auswertung von »12 / 3 / 2«:
______
12 / 3 / 2 →
4 / 2_____
4 / 2 →
2
Der Ausdruck »12 / 3 / 2« wird also mit zwei Operationen ausgewertet. Zuerst wird die linke Division ausgeführt, weil der Operator linksassoziativ ist, dann wird die rechte Division vollzogen.
- Direktbereich
? ( 12/3 )/2
2- Direktbereich
? 12/( 3 / 2 )
8
Operationen bei der Auswertung von »12 /( 3/2 )«:
_______
12 /( 3/2 ) →
12 / 1.5________
12 / 1.5 →
8
Im Falle des Ausdrucks »12 /( 3/2 )« wird der rechte Quotient als Ausdruck ausgewertet, weil er in runde Klammern eingeschlossen wurde.
Priorität
Der Vorzeichenwechsel hat eine höhere Priorität als die Division. Dies heißt, daß der Vorzeichenwechseloperator in »-3/2« sich nur auf die »3« bezieht und nicht etwas auf den gesamten Bruch.
Bei der Auswertung von »-3/2« wird zuerst der Vorzeichenwechsel und dann die Division ausgeführt.
Bei der Auswertung von »-( 3/2 )« wird zuerst die Division und dann der Vorzeichenwechsel ausgeführt.
Da es weiteren Verlauf des Lehrgangs nicht wichtig ist, die Auswertung von Vorzeichenwechseln ausdrücklich darzustellen, verzichten wir zur Vereinfachung darauf, wenn wir Operationen einer Auswertung angeben, so wie wir auch auf die Darstellung von Operationen zu Ausdruckklammern verzichten. Wir interpretieren beispielsweise die Auswertung von »-( 3/2 )« als eine Division mit dem Ergebnis »-1.5«, ohne die Klammern und das Vorzeichen als eigene Operationen zu würdigen.
In der folgenden Tabelle zur Priorität von Operatoren finden sich Operatoren mit höherer Priorität weiter oben
- Priorität der bisher behandelten Operatoren
() Eingeklammerter Ausdruck
+ - Unaere vorangestellte Operatoren
/ Division
Übungsfragen
? Ausdrücke
Welche Typen und Werte haben die folgenden Ausdrücke jeweils?
- A »8 / 2 / 4«
- B »8 /( 2 / 4 )«
? Verständnis von Fachbegriffen *
Zu einem (hypothetischen) binären Infixoperator »∘« wird erklärt: „Der Wert von »∘« ist der Wert des linken Operanden.“. Welchen Wert hat demnach »4∘7«? Welchen Wert hat »4∘2∘7«?
? Operanden und Operatoren *
Wie viele Operanden hat der erste Divisionsoperator »/« in dem Ausdruck »8/4/2«? Was sind diese Operanden? (Nicht die Werte der Operanden sind hier gesucht, sondern die Operandenausdrücke.)
Wie viele Operanden hat der zweite Divisionsoperator »/« in dem Ausdruck »8/4/2«? Was sind diese Operanden? (Nicht die Werte der Operanden sind hier gesucht, sondern die Operandenausdrücke.)
Welcher der beiden Divisionsoperatoren »/« wird bei der Ermittlung des Wertes des Ausdrucks »8/4/2« als letzter ausgeführt?