Übungen zum Schreiben von Aufrufen in Java (Übungen zum Schreiben von Aufrufen in Java), Lektion, Seite 723045
https://www.purl.org/stefan_ram/pub/aufrufe_java (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Java-Kurs

Übungen zum Schreiben von Aufrufen in Java 

In dieser Lektion geht es zunächst nur um die Syntax (Schreibweise) von Aufrufen. Andere Anforderungen, wie Typanforderungen, oder die Bedeutung der Aufrufe spielt dabei zunächst keine Rolle.

Wir drucken zunächst erneut das für diese Aufgaben wichtige Syntaxdiagramm  für Aufrufe mit Kontext ab. Es wird in dieser Lektion immer wieder benötigt.

Aufruf mit Kontext (Syntaxdiagramm) ::=
Aufruf
.---------. .---. .------------.
--->| Kontext |--->( . )--->| Verbaufruf |--->
'---------'  '---' '------------'
Verbaufruf ::=

Verbaufruf
.------------. .-. .---------------. .-.
--->| Bezeichner |--->( ( )--->| Ausdruckliste |--->( ) )--->
'------------' '-' '---------------' '-'

Ausdruckliste
.---------------------------.
| .----------. v
---'---.--->| Ausdruck |---.---'--->
^ '----------' |
| .-. |
'-------( , )<------'
'-'

Nun folgen Übungsaufgaben zum Schreiben solcher Aufrufe mit Kontext in Java.

Übungsaufgaben

/   Inkarnation von Syntaxdiagrammen

Schreiben Sie ein »Alpha« auf, das nach dem folgenden Syntaxdiagramm gebildet ist.

Syntaxdiagramm

Alpha
.-------. .-. .-------.
--->| Gamma |--->( . )--->| Delta |--->
'-------'  '-' '-------'

Gamma
.-------.
--->( "Hallo" )--->
  '-------'

Delta
.------. .-. .-.
--->( length )--->( ( )--->( ) )--->
  '------' '-' '-'

Die Lösung soll auf einer von Leerzeilen umgebenden Zeile für sich stehen.

Wertaufrufe und Wirkaufrufe

Im Grundkurs wurden Wert- und Wirkaufruf ausführlich vorgestellt. In diesem Abschnitt wird kurz das Wichtigste wiederholt:

In jeder Aufgabe soll ein Wertaufruf oder ein Wirkaufruf geschrieben werden. Ein Wertaufruf ist ein Aufruf, dessen Auswertung einen Wert ergibt, sein Typ ist nicht »void«. Ein Wirkaufruf ist ein Aufruf, dessen Auswertung eine Wirkung hat. Ein reiner Wirkaufruf ist ein Wirkaufruf, der keinen Wert hat.

Wenn ein Wertaufruf in eine Programm eingebaut werden soll, so kann dies – falls nichts anderes sinnvoller ist – geschehen, indem sein Wert mit »java.lang.System.out.println« ausgegeben wird. Ein Wirkaufruf kann im allgemein ausgewertet werden, indem er in die Aufrufanweisung  eingesetzt wird.

Beispiel eines Wertaufrufs in den Klammern hinter »println«
java.lang.System.out.println( java.lang.Math.cos( 0 ));
Beispiel eines reinen Wirkaufrufs in einer Aufrufanweisung
java.lang.Thread.dumpStack();

Falls ein Leser diese Begriffe nicht kennt, kann er sie weiter vorne im Grundkurs nachlesen.

Bei den folgenden Übungsaufgaben sollen die Werte von Wertaufrufe ausgegeben werden, während Aufrufe ohne Wert mit einer Aufrufanweisung ausgewertet werden sollen.

/   Fehlerausgabe verwenden

Hinweis für den Dozenten  ► Vor der Bearbeitung der nächsten Aufgabe sollte in Kursen zunächst diese Aufgabe nachbesprochen werden.

Der Ausdruck »java.lang.System.err« hat den Typ »java.io.PrintStream«. Schreiben Sie ein Programm, bei dessen Ausführung der Verbaufruf »println( 38 )« mit diesem Ausdruck »java.lang.System.err« als Kontext ausgewertet wird.

Anders gesagt: Ein Aufruf soll aus diesem Kontext und Verbaufruf zusammengesetzt werden. Wenn der erstellte Aufruf dann in ein Programm eingebaut wird, sollte es beim Starten des Programms keine Fehlermeldung geben.

Es handelt sich bei dem zu erstellenden Aufruf um einen reinen Wirkaufruf , das heißt, er hat nur eine Wirkung, aber keinen Wert.

Um die Aufgabe zu erledigen, können der folgende Kontext und der folgende Verbaufruf in das folgende Syntaxdiagramm „Aufruf mit Kontext“ eingesetzt werden, um den vollständigen Aufruf zu erhalten.

Kontext: »java.lang.System.err«.

Verbaufruf: »println( 38 )«.

Aufruf mit Kontext (Syntaxdiagramm)

Aufruf mit Kontext
.---------. .-. .------------.
--->| Kontext |--->( . )--->| Verbaufruf |--->
'---------'  '-' '------------'

Kontext
.----. .-. .----. .-. .------. .-. .---.
--->( java )--->( . )--->( lang )--->( . )--->( System )--->( . )--->( err )--->
'----' '-' '----' '-' '------' '-' '---'

Verbaufruf
.-------. .-. .--. .-.
--->( println )--->( ( )--->( 38 )--->( ) )--->
'-------' '-' '--' '-'

/   Ablauf untersuchen ⃗

Hinweis für den Dozenten  ► Vor der Bearbeitung dieser Aufgabe sollte in Kursen zunächst die voranstehende Übung nachbesprochen werden.

Der Ausdruck »java.lang.Thread.currentThread()« hat den Typ »java.lang.Thread«. Schreiben Sie ein Programm, in dem der Kontext »java.lang.Thread.currentThread()« für den Verbaufruf »getName()« verwendet wird.

Bei dem zu schreibenden Ausdruck handelt sich um einen Wertaufruf, das heißt, er hat einen Wert.

Kontext: »java.lang.Thread.currentThread()«.

Verbaufruf: »getName()«.

Aufruf mit Kontext (Syntaxdiagramm)
Aufruf mit Kontext
.---------. .-. .------------.
--->| Kontext |--->( . )--->| Verbaufruf |--->
'---------'  '-' '------------' Kontext
.----. .-. .----. .-. .------. .-. .-------------. .-. .-.
--->( java )--->( . )--->( lang )--->( . )--->( Thread )--->( . )--->( currentThread )--->( ( )--->( ) )--->
'----' '-' '----' '-' '------' '-' '-------------' '-' '-' Verbaufruf
.-------. .-. .-.
--->( getName )--->( ( )--->( ) )--->
'-------' '-' '-'

/   String-Ausdrücke als Kontext

Hinweis für den Dozenten  ► Vor der Bearbeitung dieser Aufgabe sollte in Kursen zunächst die voranstehende Übung nachbesprochen werden.

Der Ausdruck »"Hallo!"« hat den Typ »java.lang.String«. Schreiben Sie ein Programm, bei dessen Ausführung der Verbaufruf »length()« mit diesem Ausdruck »"Hallo!"« als Kontext ausgewertet wird.

Bei dem zu schreibenden Ausdruck handelt sich um einen Wertaufruf, das heißt, er hat einen Wert.

Kontext: »"Hallo!"«.

Verbaufruf: »length()«.

Aufruf mit Kontext (Syntaxdiagramm)

Aufruf mit Kontext
.---------. .-. .------------.
--->| Kontext |--->( . )--->| Verbaufruf |--->
'---------'  '-' '------------'

Kontext
.--------.
--->( "Hallo!" )--->
'--------'

Verbaufruf
.------. .-. .-.
--->( length )--->( ( )--->( ) )--->
'------' '-' '-'

Übungsaufgaben (zweite Gruppe) ⃗

Falls die Aufgaben bis hier gut bewältigt wurden, können die Übungsaufgaben der dritten Gruppe nun bearbeitet werden, ohne daß weiterhin die Nachbesprechung der vorigen Aufgabe abgewartet werden muß!

/   Freispeicherverwaltung ⃗

Schreiben Sie ein Programm, bei dessen Ausführung die Speicherbereinigung aktiviert wird, indem der Typname »java.lang.System« als Kontext für den Verbaufruf »gc()« verwendet wird. Es handelt sich um einen reinen Wirkaufruf, dessen Wirkung aber bei der Programmausführung nicht sichtbar wird!

/   Aktueller Monat ⃗

Schreiben Sie ein Programm, bei dessen Ausführung der aktuelle Monat auf deutsch ausgegeben wird, indem der Wert des Verbaufrufs »getDisplayName( java.util.Calendar.MONTH, java.util.Calendar.LONG, java.util.Locale.GERMAN )« im Kontext »java.util.Calendar.getInstance()« ausgegeben wird. Es handelt sich also um einen Wertaufruf, dessen Wert in Ihrem Programm dann ausgegeben werden soll.

/   Aktuelle Fadengruppe ⃗

Wenn Sie den Verbaufruf »list()« in dem Kontext »java.lang.Thread.currentThread().getThreadGroup()« aufrufen, erhalten Sie einen reinen Wirkaufruf. Lassen Sie diesen Wirkaufruf in einem Programm auswerten, um dessen Wirkung zu sehen!

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 stefanram723045 stefan_ram:723045 Übungen zum Schreiben von Aufrufen in Java Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723045, slrprddef723045, 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/aufrufe_java