Numeralia in C++ (Numeralia in C++), Lektion, Seite 722558
https://www.purl.org/stefan_ram/pub/numeralia_c++ (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
C++-Kurs

Numeralia in C++ 

Einführende Beispiele

Auch eine Folge von Ziffern  ist ein Ausdruck. Der Wert solch eines Ausdrucks repräsentiert eine Zahl. Wir bezeichnen einen Wert, der eine bestimmte Zahl repräsentiert, meist einfach als eine Zahl.

Das folgende Programm gibt beispielsweise eine Textdarstellung der Zahl «32767» aus.

main.cpp

#include <iostream>
#include <ostream>
#include <string>

using namespace ::std::literals;

int main() { ::std::cout << 32767 << "\n"s; }

::std::cout
32767

Das folgende Programm gibt eine Textdarstellung der Zahl 0 (Null) aus.

main.cpp

#include <iostream>
#include <ostream>
#include <string>

using namespace ::std::literals;

int main() { ::std::cout << 0 << "\n"s; }

::std::cout
0

Das folgende Programm gibt eine Textdarstellung der Zahl «12» (Zwölf) aus.

main.cpp

#include <iostream>
#include <ostream>
#include <string>

using namespace ::std::literals;

int main() { ::std::cout << 12 << "\n"s; }

::std::cout
12

Die Ausgabe des folgenden Programms läßt sich nicht von der Ausgabe des vorigen Programms unterscheiden, obwohl der Wert des Ausdrucks diesmal eine Zeichenfolge  ist.

main.cpp

#include <iostream>
#include <ostream>
#include <string>

using namespace ::std::literals;

int main() { ::std::cout << "12"s << "\n"s; }

::std::cout
12

Numeralia

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

Numerale
32767
Bedeutung des Numerales (Zahl)
32767

Das Numerale »32767« ist ein Teil des Quelltextes, es besteht aus konkreten Schriftzeichen. Die Zahl 32767 ist ein Gegenstand der Anschauung, sie existiert nur in unserer Vorstellung.

Einleitenden Nullen »0«

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

Apostrophe in Numeralia

Das Zeichen »'« wird in der DIN 66003  Apostroph genannt. Diese Bezeichnung wird hier übernommen.

Zur optischen Gliederung können auch Apostrophe »'« in Numeralia zwischen zwei Dezimalziffern  eingefügt werden. Es dürfen aber nicht zwei Apostrophe direkt aufeinander folgen. Eine Million kann damit beispielsweise als »1'000'000« geschrieben werden.

main.cpp

#include <iostream>
#include <ostream>
#include <string>

using namespace ::std::literals;

int main() { ::std::cout << 32'767 << "\n"s; }

::std::cout
32767

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 darf ein Apostroph eingefügt sein. Beispiele: »0«, »1«, »2«, »10«, »11«, »100«, »101«, »1000«, »1'000«, »1'0'0'0«.

Das folgende Aufbaudiagramm 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 |
'---------------'

Dezimalnumerale .-.
.---( ' )---.
| '-' |
V |
.---'<----------'---.
| |
| |
V .-. |
.--------------->'------>( 0 )-------'------------------------------------------.
| '-' |
| .---------------. |
| | Jede | v
|-|---'--->| Dezimalziffer |---.--------------------------------------------------.-->'--->|-|
| ausser 0 | ^ |
'---------------' | |
| .---------------. |
'-----| Dezimalziffer |---.<-------------------.---'
'---------------' ^ |
| .-. |
'--------( ' )-------'
'-'

Werte

Bisher haben wir Zahl und Zeichenfolgen als Werte kennengelernt.

Werte

Wert

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

Zahl Zeichenfolge

Der Begriff „Wert“ kommt ursprünglich von den Zahlen. Zahlen werden ja auch „Zahlenwerte“ oder „Werte“ genannt. Da ein Computer aber nicht nur mit Zahlen  umgeht, sondern auch mit Zeichenfolgen, wurde der Begriff „Wert“ dann von den Zahlen ausgehend so verallgemeinert, daß er auch Zeichenfolgen umfaßt.

Werte sind kein Quelltext, sondern existieren nur bei der Ausführung eines Programms im Inneren einer C++ -Implementation (oder in unserer Vorstellung).

Ein Wert ist eine interne Repräsentation einer Zahl oder eine Zeichenfolge, die bei der Ausführung eines Programms gebildet wird. Beispielsweise steht der Wert »2« (also der Wert des Ausdrucks »2«) für die ganze Zahl Zwei.

Literale

Ein Literal  ist ein Numerale oder ein Zeichenfolgenliteral.

Literal

Literal

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

Numerale Zeichenfolgenliteral

Ein Literal steht im Quelltext für einen bestimmten Wert.

Der Wert eines Numerales ist die Zahl, für welche das Numerale steht, und der Wert eines Zeichenfolgenliterals ist die in ihm zwischen den Anführungszeichen enthaltene Zeichenfolge.

Wenn ein Teil eines Programmes für einen bestimmten Wert steht, so sagt man auch, daß er diesen Wert habe  oder angebe  oder notiere  oder darstelle.

Ein Wert  kann nicht  direkt in ein Programm hineingeschrieben werden. In ein Programm kann nur ein Literal  geschrieben werden. Der Wert wird dann bei der Ausführung des Programms aus diesem Literal  gebildet.

Ein Literal ist nicht der Wert selber, sondern eine Schreibweise für einen Wert.

Wenn man die Semantik eines Literals erklärt, so erklärt man, wie man seinen Wert ermitteln kann.

Abgrenzung der Werte  zu den Zahlen  * Während es die Zahl Zwei nur einmal  gibt, kann der Wert «2» mehrfach  im Speicher eines Computers vorkommen.

Abgrenzung der Werte  zu den Literalen  * Verschiedene  Literale, wie »22« und »2'2« können für denselben  Wert stehen. Während die Ausdrücke  im Quelltext  vorkommen, existieren die Werte  während der Ausführung  eines Programmes im Speicher des Computers.

Ermittlung der Bedeutung eines Numerales

Den von einem Numerale ausgedrückten Zahlenwert erhält man, indem man zunächst alle Apostrophe entfernt und dann den auch aus dem Alltag für Numeralia geläufigen Wert abliest. Beispielsweise steht das Numerale »10« für den Wert «10».

Eine abkürzende Schreibweise

In diesem Kurs schreiben wir oft etwas wie „der Wert «65»“ und meinen damit den Wert, der ausführlich und korrekt als „der Wert des Ausdrucks »65«“ bezeichnet werden müßte.

Übungsfragen

?   Ausgabe vorhersagen

Was gibt das folgende Programm aus?

main.cpp

#include <iostream>
#include <ostream>
#include <string>

using namespace ::std::literals;

int main() { ::std::cout << 7 << "\n"s; }

?   Gleichheit von Werten

Ist der Wert des Numerales »32767« gleich dem Wert des Numerales »32'767«?

?   Gleichheit von Numeralia

Ist das Numerale »32767« gleich dem Numerale »32'767«?

?   Programm lesen *

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

main.cpp

#include <iostream>
#include <ostream>
#include <string>

using namespace ::std::literals;

int main() { ::std::cout << O << "\n"s; }

?   Programm lesen *

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

main.cpp

#include <iostream>
#include <ostream>
#include <string>

using namespace ::std::literals;

int main() { ::std::cout << l << "\n"s; }

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 stefanram722558 stefan_ram:722558 Numeralia in C++ Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722558, slrprddef722558, 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_c++