Einführung in Numeralia in Java im Rahmen der Lehre der Programmiersprache Java. (Numeralia in Java), Lektion, Seite 722249
https://www.purl.org/stefan_ram/pub/numeralia-java (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Java-Kurs

Numeralia in Java 

Einführende Beispiele

Im Ausdruckrahmen ist an Stelle eines Zeichenfolgenliterals auch eine Folge von Ziffern  ohne Anführungszeichen erlaubt, die eine Zahl  angeben kann (falls es nicht zu viele  Ziffern sind).

Das folgende Programm gibt beispielsweise eine Darstellung der Zahl 32767 aus.

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

Das folgende Programm gibt eine Darstellung der Zahl 0 aus.

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

Numeralia

Ein Numerale  (also ein Zahlwort, Plural: „Numeralia“) ist eine Schreibweise einer bestimmten Zahl (vor allem im Quelltext). Ein Zahlenwert ist die Bedeutung  eines Numerales.

Numerale
32767
Wert (hier bedeutet «32767» „der Wert des Ausdrucks »32767«, ist aber kein Quelltext!)
«32767»

»0« und »00« sind zwei verschiedene Numeralia, haben aber dieselbe  Zahl als Bedeutung.

Numerale
0
Wert
«0»
Numerale
00
Wert
«0»

Numeralia, außer »0« selber, sollten nicht mit »0« beginnen. Die Zahl Zwölf sollte also beispielsweise als »12« und nicht als »012« geschrieben werden! (Ein Numerale wie »012« hat in Java  eine besondere Bedeutung, die aber nur selten benötigt wird und deswegen hier noch nicht weiter behandelt wird.)

Grundstriche in Numeralia

Das Zeichen »_« wird in DIN 32743  Grundstrich genannt. Diese Bezeichnung wird hier übernommen.

Zur optischen Gliederung können auch Grundstriche »_« zwischen zwei Dezimalziffern eingefügt werden. Die Bedeutung  des Numerales ist dann der Bedeutung des Numerales nach dem Entfernen aller Grundstriche.

Numerale
32_767
Wert
«32_767»
Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 32_767 ); }}
java.lang.System.out
32767

Der Grundstrich »_« ist hier also nur eine Lesehilfe  für Menschen, von einer Java -Implementation wird er ignoriert.

Wenn Quelltext für Menschen nicht  gut lesbar ist, kann er nicht  mehr überarbeitet werden, um an neue Umstände angepaßt zu werden, und die in ein Programm investierte Arbeit könnte auf diese Weise verloren gehen. Deswegen sagt man heute, daß Programme vor allem für Menschen  geschrieben werden sollen (so daß sie gut lesbar und gut verständlich sind, denn nur dann können sie auch gut überarbeitet werden und erlauben es, Fehler zu entdecken und zu beheben).

Zum Neuschreiben von Programmen
They decided to rewrite the code from scratch.
https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/

Aufbau

Eine Dezimalziffer  ist eines der zehn Schriftzeichen »0«, »1«, »2«, »3«, »4«, »5«, »6«, »7«, »8«, und »9«.

Ein Numerale ist eine Folge von Dezimalziffern. Sie darf, außer beim Numerale »0« nicht mit der Ziffer »0« beginnen. Zwischen zwei benachbarten Ziffern dürfen beliebige viele Grundstriche eingefügt sein. Beispiele: »0«, »1«, »2«, »10«, »11«, »100«, »101«, »1000«, »1_000«, »1__000«, »1___0__0_0«.

Das folgende Diagramm stellt diese Regeln bildlich dar.

Aufbaudiagramm

Jede Dezimalziffer ausser 0
.-.
|-|---.--->( 1 )---.--->|-|
| '-' ^
| .-. |
'--->( 2 )---'
| '-' ^
| .-. |
'--->( 3 )---'
| '-' ^
| .-. |
'--->( 4 )---'
| '-' ^
| .-. |
'--->( 5 )---'
| '-' ^
| .-. |
'--->( 6 )---'
| '-' ^
| .-. |
'--->( 7 )---'
| '-' ^
| .-. |
'--->( 8 )---'
| '-' ^
| .-. |
'--->( 9 )---'
'-'

Dezimalziffer
.-.
|-|---.-------->( 0 )----------.--->|-|
| '-' |
| .---------------. |
| | Jede | |
'--->| Dezimalziffer |---'
| ausser 0 |
'---------------'

Numerale

                                    .-.
.--->( _ )---.
| '-' |
.---'------------'---.
v .-. |
.-------------------'------->( 0 )-------'--------------------------------------.
| '-' |
| .---------------. |
| | Jede | v
|-|---'--->| Dezimalziffer |---.--------------------------------------------------.---'--->|-|
| ausser 0 | ^ |
'---------------' | |
| .---------------. |
'-----| Dezimalziffer |----------------------------'
'---------------' ^ |
| .-. |
'----.---( _ )---.---'
| '-' ^
| |
'-----------'

Literale

Zeichenfolgenliterale und Numeralia bezeichnen wir zusammenfassend als Literale.

»"abc"« ist ein Zeichenfolgenliteral und »123« ist ein Numerale, beides sind Literale und damit Ausdrücke.

Begriffshierarchie der Ausdrücke

Ausdruck

^
|

Literal

^
|
.-----------'-----------.
| |

Zeichenfolgenliteral Numerale
"abc" 123

Semantik

Die Semantik eines Numerales beschreibt, wie man dessen Wert aus den Zeichen des Numerales gewinnt.

Um den Wert eines Numerales zu ermitteln, kann man zunächst sämtliche Grundstriche aus dem Numerale entfernen.

Danach hat ein Numerale den Wert, wie man ihn schon in der Schule für solche Numeralia kennengelernt hat. Beispielsweise steht das Numerals »10« für die Zahl Zehn.

(Das Zeichen »0« hat den Wert Null, die weiteren Ziffern »1«, »2«, »3«, »4«, »5«, »6«, »7«, »8« und »9« haben dann jeweils den Nachfolger des Wertes der vorangehenden Ziffer als Wert [»1« steht für den Nachfolger von Null und so weiter]. Der Wert eines Numerals mit genau einer Ziffer ist der Wert jener Ziffer. Der Wert einer Folge von mehr als einer Ziffer ist die Summe aus dem Wert der letzten Ziffer und dem Zehnfachen des Wertes des vor der letzten Ziffer stehenden Numerals.)

Übungsfragen

?   Ausgabe vorhersagen

Was gibt das folgende Programm aus? (Dies ist eine einfache Aufgabe, keine Trickfrage.)

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

?   Gleichheit von Werten

Ist der Wert des Numerales »2_2« gleich dem Wert des Numerales »22«?

?   Gleichheit von Numeralia

Ist das Numerale »2_2« gleich dem Numerale »22« (als Numerale [Teil des Quelltextes] betrachtet)?

?   Programm lesen *

Warum gibt das folgende Programm keine Darstellung des Wertes »0« aus?

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

?   Programm lesen *

Warum gibt das folgende Programm keine Darstellung des Wertes »1« aus?

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

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 stefanram722249 stefan_ram:722249 Numeralia in Java Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722249, slrprddef722249, 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/numeralia-java