Folgen von Ausgabeanweisungen in Java (Folgen von Ausgabeanweisungen in Java), Lektion, Seite 724184
https://www.purl.org/stefan_ram/pub/ausgabeanweisungsfolgen_java (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Java-Kurs

Folgen von Ausgabeanweisungen in Java 

Einfügen von Ausgabeanweisungen

Regel Vor  oder hinter  eine Ausgabeanweisung darf in unserem Programm eine andere Ausgabeanweisung eingefügt  werden, und es entsteht so wieder ein korrektes Programm. (In späteren Kapiteln gilt diese Regel nicht mehr immer.)

Durch Einfügen einer weiteren Ausgabeanweisung hinter der Ausgabeanweisung, welche »2« ausgibt, kommen wir zum nächsten Programmbeispiel, das zwei direkt aufeinanderfolgende Ausgabeanweisungen  (also eine Folge von zwei Ausgabeanweisungen) enthält.

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

Das obenstehende Programm kann nun nicht  mehr durch Einsetzen eines Ausdrucks in den bisher verwendeten Ausdruckrahmen erhalten werden.

Durch Einfügen einer weiteren Ausgabeanweisung hinter der Ausgabeanweisung, welche »2« ausgibt, kommen wir zum nächsten Programmbeispiel, das drei direkt aufeinanderfolgende Ausgabeanweisungen  enthält.

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

Regel Eine Ausgabeanweisung darf in unserem Programm gelöscht  werden, und es entsteht so wieder ein korrektes Programm. (In späteren Kapiteln gilt diese Regel nicht mehr immer.)

Durch Löschen der ersten Ausgabeanweisung kommen wir zu dem folgenden Programm.

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

Die Bedeutung von Ausgabeanweisungsfolgen

Bei der Ausführung eines Programmes mit einer Folge von Ausgabeanweisungen werden die Ausgabeanweisungen in der durch den Quelltext gegebenen Reihenfolge hintereinander ausgeführt. Die Ausführung beginnt mit der ersten Ausgabeanweisung. Die Ausführung jeder weiteren Ausgabeanweisung beginnt nach dem Ende der Ausführung der direkt vor ihr stehenden Ausgabeanweisung.

Die Wirkungen der Ausführungen der einzelnen Ausgabeanweisungen treten hintereinander in der Reihenfolge jener Ausgabeanweisungen ein.

Anweisungen erlauben es, zeitliche Abläufe zu bestimmen.

Der Lauf der Kontrolle ⃗

Bei der Ausführung des obenstehenden Programms wird zuerst die erste Ausgabeanweisung mit der »7« ausgeführt, dann die zweite mit der »8« und schließlich die dritte mit der »9«.

Man sagt auch, daß zuerst die erste Ausgabeanweisung mit der »7« die Kontrolle  (über den Rechner) habe, dann die zweite mit der »8« und schließlich die dritte mit der »9«.

Entsprechend spricht man auch vom „Lauf der Kontrolle “ und sagt, daß die Kontrolle sich bei diesem Programm zuerst bei der Ausgabeanweisung mit der »7« befindet, sich dann von dort zur zweiten mit der »8« bewegt und schließlich die dritte mit der »9« erreicht.

Rückgabe und Ausgabe

(Dieses Thema wurde zuvor schon in einer Übungsfrage behandelt, wird hier aber noch einmal aufgegriffen.)

Man beachte die unterschiedliche Bedeutung von „Rückgabe“ und „Ausgabe“ sowie von „zurückgeben“ und „ausgeben“: Eine Methode  gibt einen Wert zurück. Eine Ausgabeanweisung  gibt einen Wert aus. Anfänger verwechseln gerne noch die Begriffe „Rückgabe “ und „Ausgabe “. In der folgenden Beispielprogrammausführung geschieht auch beides gemeinsam, so daß es wirklich nicht einfach ist, dies auseinanderzuhalten.

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

Der Unterschied ist jedoch folgender: Der Wert 0,8550395425903289 wird in der obigen Ausführung zuerst von der Operation/Methode »java.lang.Math.random()« zurückgegeben. Dann wird er von dem Ausdruckrahmen ausgegeben  (beispielsweise auf einen Bildschirm oder Drucker). Ein bloß zurückgegebener  Wert ist aber im allgemeinen nicht von außen sichtbar, weil die Rückgabe eines Wertes ein programminterner Vorgang ist, welcher keine Außenwirkung entfaltet. (Deswegen gilt die bloße Festlegung eines Rückgabewertes auch nicht als eine Wirkung.) Die Rückgabe besteht ja darin, daß ein Wert für eine Auswertung eines Ausdrucks festgelegt wird, der Wert wird damit aber nicht ausgegeben. Die Ausgabe erfolgt nur, wenn dieses Aufrufausdruck in den runden Klammern am Ende des Ausdruckrahmens steht. Die Ausgabe  ist die Sichtbarmachung, Zugänglichmachung oder das Abspielen eines Textes, Bildes, Klangs oder einer anderen Form der Informationswiedergabe durch das Programm.

Die Rückgabe  eines Wertes ist ein programminterner Vorgang, der nicht  als eine Wirkung angesehen wird. Bei der Ausgabe  eines Wertes wird eine Information vom Programm nach außen  gegeben, und die Ausgabe wird als Wirkung angesehen.

Das folgende Beispielprogramm zeigt nun den umkehrten Fall: Der Wert 1 wird zwar ausgegeben, aber nicht zurückgegeben.

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

Bei einem Literal, wie dem Literal »1«, spricht man nämlich nicht davon, daß diese ihren Wert „zurückgeben“. Ein Literal hat  seinen Wert. Im obigen Beispiel hat  das Literal »1« den Wert 1, welcher dann ausgegeben, aber nicht zurückgegeben  wird. Zurückgegeben  werden kann ein Wert ja nur von etwas, das vorher auch aufgerufen  wurde. Ein Literal ist aber kein Aufrufausdruck.

In dem folgenden Programmbeispiel wird ein Wert von dem ersten Aufruf »java.lang.Math.random()« zurückgegeben. Aber dieser Wert wird nicht ausgegeben. (Vielmehr wird seine Summe  mit einem anderen Wert ausgegeben.)

Main.java
public class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( java.lang.Math.random() + java.lang.Math.random() ); }}
transcript
1.668040400394999

Daneben gibt es noch das Wort „angeben“: Eine Wertausdruck, der keine Methode ist, gibt seinen Wert an, aber nicht zurück. So gibt der Ausdruck »7_2« beispielsweise den Wert »72« an. Neben „angeben“ verwendet man aber auch andere Verben dafür. Man sagt beispielsweise auch einfach, daß der Ausdruck »7_2« den Wert »72« habe, darstelle  oder notiere.

Übungsaufgaben _

/   Übungsaufgabe _

Löschen Sie die erste Ausgabeanweisung aus dem folgenden Programm und fügen Sie eine Ausgabeanweisung hinter die derzeit letzte Ausgabeanweisung ein.

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

/   Übungsaufgabe (1) _

Schreiben Sie ein Programm, das genau vier  Ausgabeanweisungen hintereinander enthält.

Zusatzaufgaben *

/   Würfelsimulation *

Schreiben Sie eine Ausgabeanweisung, welche mit annähernd gleicher Wahrscheinlichkeit eine der folgenden sechs Ausgaben erzeugt: »1.0«, »2.0«, »3.0«, »4.0«, »5.0« oder »6.0«.

Kopieren Sie diese Ausgabeanweisung dann so in ein Programm, daß dieses Programm dann insgesamt fünf hintereinanderstehende Kopien dieser Ausgabeanweisung enthält. Starten Sie das Programm anschließend, um fünf Würfelzahlen zu erhalten.

Jede Kopie der Ausgabeanweisung soll also eine Zahl ausgegeben werden, deren Vorkommastelle zwischen 1 (einschließlich) und 6 (einschließlich) liegt, wobei jeder der Werte 1, 2, 3, 4, 5 und 6 mit gleicher Wahrscheinlichkeit als Vorkommastelle vorkommt.

Anmerkung Diese Übungsaufgabe gehört zum roten Faden „Würfeln“.

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 stefanram724184 stefan_ram:724184 Folgen von Ausgabeanweisungen in Java Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd724184, slrprddef724184, 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/ausgabeanweisungsfolgen_java