Die Division in Java (Die Division in Java, Schrägstrich, Divisionsoperator, binärer Operator), Lektion, Seite 722418
https://www.purl.org/stefan_ram/pub/division_java_de (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Java-Kurs

Die Division »…/…« in Java 

Einführendes Beispiel

Die Division wird mit einem Schrägstrich »/« geschrieben. Der Schrägstrich »/« sollte nicht mit dem inversen Schrägstrich »\« verwechselt werden!

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 70/10 ); }}
java.lang.System.out
7
Java 
70/10
auf deutsch
70 geteilt durch 10
in der Mathematik
70 ÷ 10
70 : 10
70∕10

70
----
10

Syntax

Wir hatten einen Operator bisher als ein Zeichen kennengelernt, das mit einem  Operanden zusammen geschrieben wird. Nun erweitern wir den Begriff dahingehend, daß ein Operator auch zwei  Operanden haben kann. Der Divisionsoperator wird zwischen  seine beiden Operanden geschrieben.

Dies wird durch die folgende Produktionsregel »Multiplikativausdruck« wiedergegeben.

Sund A  und a  ein Vorzeichenausdrücke, so ist »A /a « wieder ein Ausdruck, der Quotient  von A  und a. Dabei wird A  auch Dividend  und a  Divisor  genannt.

Die Division »/« ist linksassoziativ. Ihre Priorität  ist schwächer als die eines Vorzeichens.

Wir erweitern das Syntaxdiagramm für Ausdrücke um den Divisionsoperator »/« (Multiplikativausdruck).

Neue, erweiterte Syntax (Syntaxdiagramm)

Primaerausdruck
.-. .----------. .-.
--->.--->( ( )--->| Ausdruck |--->( ) )--->.--->
| '-' '----------' '-' ^
| .----------. |
'------------>| Literal |-------------'
'----------'

Vorzeichenausdruck
.--------------------.
---.------------>| Primaerausdruck |----.---->
| '--------------------' ^
| .-. .--------------------. |
'--->( - )--->| Vorzeichenausdruck |----'
| '-' '--------------------' |
| .-. .--------------------. |
'--->( + )--->| Vorzeichenausdruck |----'
'-' '--------------------'

Multiplikativausdruck
.--------------------.
---.--->| Vorzeichenausdruck |--------------------------------------.--->
| '--------------------' ^
| .--------------------. .-. .--------------------. |
'--->| Vorzeichenausdruck |--->( / )--->| Vorzeichenausdruck |---'
'--------------------' '-' '--------------------'

Ausdruck
.------------------------.
--->| Multiplikativausdruck |--->
'------------------------'

Eine Division wird im Syntaxdiagramm als Multiplikativausdruck  bezeichnet, da die syntaktischen Eigenschaften des Divisionsoperators so sind wie die syntaktischen Eigenschaften des (bisher noch nicht vorgestellten) Multiplikationsoperators.

Wie schon beim Vorzeichenausdruck bezeichnen wir einen Multiplikativausdruck, der kein Vorzeichenausdruck ist, als einen echten Multiplikativausdruck. Beispielsweise ist das Literal »2« zwar ein Multiplikativausdruck, aber kein  echter Multiplikativausdruck.

Begriffe zu Operatoren

Lücken

Man stellt sich vor, daß sich hinter dem Vorzeichenoperator »-« eine leere Stelle befindet, in die ein Operand eingefügt werden kann: »-«. Eine Lücke  (auch Stelle  oder Parameter  genannt) ist also ein Platz bei einem Operator, der einen Ausdruck aufnehmen kann. Ein Ausdruck wie »-25« entsteht durch Besetzung  der Operandenstelle mit einem Operandenausdruck (hier mit dem Ausdruck »25«).

Beim Divisionsoperator »/« stellt man sich vor, daß er zwei Lücken  besitzt (eine links und eine rechts vom Operatorzeichen, »/«) und sagt auch daß er zwei Operanden  akzeptiere.

Ein Vorzeichenoperator hat eine  Stelle.

Ein Operator mit einer Stelle
-

Der Divisionsoperator hat zwei  Stellen.

Ein Operator mit zwei Stellen
/

Die Parameter gehören zum Laufzeitmodell.

Arität

Die Anzahl der Stellen eines Operators bezeichnet man auch als die Arität  jenes Operators.

Ein Operator mit genau einer Stelle wird einstellig  oder unär  genannt.

Ein Operator mit genau zwei Stellen wird zweistellig  oder binär  genannt.

Ein Vorzeichenoperator ist ein unärer  Operator.

Ein unärer Operator
-

Der Divisionsoperator ist ein binärer  Operator.

Ein binärer Operator
/

Position

Ein Präfixoperator  ist ein Operator, der vor  seinen Operanden geschrieben wird. – Beispielsweise ist das Vorzeichen »-« ein Präfixoperator.

Weil der Divisionsoperator zwischen  seinen Operandenausdrücken steht, wird er auch als ein Infixoperator  bezeichnet.

Ein Vorzeichenoperator ist ein Präfixoperator.

Ein Präfixoperator
-

Der Divisionsoperator ist ein Infixoperator.

Ein Infixoperator
/

Begriffe der Division

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  (diˈviːzoːʌ̯) genannt: „Dividend/Divisor“. (Diese vereinfachte Syntax bringt die Assoziativität der Division nicht richtig zum Ausdruck. Diese wird daher später separat erklärt.)

Ein Quotient
 Dividend
----------
Divisor

Merkhilfe: Der Dividend wird durch den  Divisor geteilt. Der Dividend  ist also passiv erleidend, während der Divsor  aktiv ist (wie ein Motor ).

Typanforderungen

Der Dividend und der Divisor müssen beide jeweils numerisch sein (also jeweils den Typ »int« oder »double« haben).

Der Typ »long« wird in diesem Kurs nur für einige Beispiele verwendet und zur Vereinfachung ansonsten ignoriert. Daher wird »long« in dieser Lektion hier nicht in Zusammenhang mit dem Divisionsoperator behandelt.

Typregeln

Der Divisionsoperator »/« kann mit double - und mit int -Werten verwendet werden.

Ist der Typ mindestens einen Operanden »double«, so ist Typ des gesamten Ausdrucks »double«, sonst ist er »int«. (Daraus folgt insbesondere: Ist der Typ beider Operanden »double«, hat der gesamte Ausdruck den Typ »double«. Ist der Typ beider Operanden »int«, hat der gesamte Ausdruck den Typ »int«. Ist der Typ des einen Operanden »double« und der des anderen »int«, so ist der Typ des gesamten Ausdrucks »double«.)

Typregeln
mindestens ein double -Operand → Ergebnis double 
nur int -Operanden → Ergebnis int 
Typregeln (andere Formulierung)
double /double  double 
double /int  double 
int /double  double 
int /int  int 
Typregeln (andere Formulierung)
int  / int int 
double  / … → double 
/ double double 

Auswertung

Verwendung mit zwei double-Operanden

Zunächst betrachten wir Fälle, in denen beide Operandenausdrücke den Typ »double« haben.

In diesem Fall ergibt die Division den normalerweise nach der Schulmathematik erwarteten Wert (manchmal nur näherungsweise).

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 1./2. ); }}
java.lang.System.out
0.5

Verwendung mit zwei int-Operanden

Sind beide  Operandenausdrücke int, bedeutet der Operator die „ganzzahlige Division“. Dabei werden die Nachkommastellen  des Ergebnisses, das sich bei einer normalen Division ergeben würde, abgeschnitten  (wir gehen hier zur Vereinfachung nicht auf die Situation bei negativen Zahlen ein).

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 1/2 ); }}
java.lang.System.out
0

Der ganzzahlige Anteil einer Division ‹x y › wird in der Mathematik auch als ‹x  y › geschrieben.

Verwendung mit verschiedenen  Typen

Bei einer Mischung int /double  oder double /int  wird der int -Wert in den ihn entsprechenden double -Wert uminterpretiert (aus dem int -Wert »2« wird beispielsweise der double -Wert »2.0«.). Anschließend erfolgt dann eine double/double-Division.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 1./2 ); }}
java.lang.System.out
0.5
Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 1/2. ); }}
java.lang.System.out
0.5

Dieses Prinzip wird auch bei den anderen Operatoren für die Grundrechenarten angewendet, die wir in diesem Kapitel noch kennenlernen werden.

Allgemeine Beschreibung

Bei der Auswertung einer Division werden zunächst beide Operanden ausgewertet. Der Wert des Multiplikativausdrucks ist dann die Summe der erhaltenen Werte der Operanden.

Hat mindestens ein Operand den Typ ›double‹, so erfolgt die Division mit Nachkommastellen.

Der Wert einer Division mit einem double-Operanden ist (bis auf meist kleine Abweichungen) der normale Quotient der beiden Werte, der Wert einer int /int -Division jedoch nur der ganzzahlige Anteil dieses Quotienten.

(Falls das mathematisch korrekte Ergebnis im Wertebereich des Datentyps des Ergebnisses nicht darstellbar ist, wird an Stelle des mathematisch korrekten Ergebnisses ein Wert aus dem Wertebereich des Datentyps des Ergebnisses verwendet. Das Ergebnis ist dann nicht  mathematisch korrekt. Die Details dieses Verfahrens sollen an dieser Stelle des Kurses noch nicht vertieft werden.)

Übungsfragen

?   Übungsfrage

Welche Typen und Werte haben die folgenden Ausdrücke jeweils?

A »2. / 8«
B »2 / 8«
Typregeln
double /double  double 
double /int  double 
int /double  double 
int /int  int 

/   Operanden _

Welche Operanden gibt es in dem folgenden Ausdruck (es gibt insgesamt vier verschiedene Operanden)?

Ausdruck
3/(2/4)

?   Übungsfragen

Für die Beantwortung der folgenden Übungsfragen soll das unten stehende Syntaxdiagramm zugrundegelegt werden.

Syntax

Primaerausdruck
.-. .----------. .-.
--->.--->( ( )--->| Ausdruck |--->( ) )--->.--->
| '-' '----------' '-' ^
| .----------. |
'------------>| Literal |-------------'
'----------'

Vorzeichenausdruck
.--------------------.
---.------------>| Primaerausdruck |----.---->
| '--------------------' ^
| .-. .--------------------. |
'--->( - )--->| Vorzeichenausdruck |----'
| '-' '--------------------' |
| .-. .--------------------. |
'--->( + )--->| Vorzeichenausdruck |----'
'-' '--------------------'

Multiplikativausdruck
.--------------------.
---.--->| Vorzeichenausdruck |--------------------------------------.--->
| '--------------------' ^
| .--------------------. .-. .--------------------. |
'--->| Vorzeichenausdruck |--->( / )--->| Vorzeichenausdruck |---'
'--------------------' '-' '--------------------'

Ausdruck
.------------------------.
--->| Multiplikativausdruck |--->
'------------------------'

Übungsaufgaben

/   Quotient

Berechnen Sie den Quotienten (mitsamt den korrekten Nachkommastellen) von Drei (Dividend) und Vier (Divisor) mit Hilfe eines Java -Programms.

Ausdrücken  und Zitieren  *

Das folgende Programm zeigt den Ausdruck  eines Quotienten in Java.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 2 / 4. ); }}
Protokoll
0.5

Das folgende Programm zeigt das Zitat  eines Quotientenausdrucks in Java.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( "2 / 4." ); }}
transcript
2 / 4.

Bei der Auswertung einer Zitierung ergibt sich der Quotientenausdruck, aber noch nicht  den Quotientenwert. Eine zitierte Division müsste doppelt ausgewertet werden, um den Quotientenwert zu ergeben (was aber in Java  nicht auf einfache Weise möglich ist).

Die Abstraktion des unsichtbaren Implementation (black box ) *

Der Operator »/« wird in der Regel nur dadurch beschrieben, welches Ergebnis  er liefert. Die Technik, wie  der Operator »/« es erreicht, das richtige Ergebnis zu „finden“ wird verborgen. Dadurch wird der Verwender dieses Operators davon entlastet, sich über die Details der Umsetzung Gedanken machen zu müssen.

Man kann dies mit einer Maschine wie beispielsweise einem Fahrstuhl vergleichen: Der Bediener muß nur wissen, welche Wirkung die einzelnen Knöpfe haben (er muß also nur die Oberfläche zur Bedienung kennen), aber nicht, wie die Technik das im einzelnen realisiert. Das Innere der Maschine ist für den Benutzer nicht sichtbar (abstrahiert).

Diese Abstraktion der „unsichtbaren Implementation“ (black box ) ist eine der wichtigsten Techniken, die in der Programmierung zur Beherrschung der Komplexität großer Programm eingesetzt wird.

Die Umsetzung von Methoden wird Implementation  (hier wäre dies also die „Implementation der Addition“) genannt. Die Implementation wird in der Programmierung oft verborgen.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram722418 stefan_ram:722418 Die Division in Java, Schrägstrich, Divisionsoperator, binärer Operator Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722418, slrprddef722418, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/division_java_de