Anweisungen Ausdrücke

steeeeel

Mitglied
Hey Leute in meiner Vorlesung wurde uns vom Prof gesagt, dass Ausdrücke immer einen Wert haben und Anweisungen nicht. Jetzt ist mir klar, dass ich wenn ich Zb einer Variable,nennen wir sie int x einen Wert Zuweise (zb den Wert von int y=7), dann habe ich einen Ausdruck mit dem Wert 7 , diesen füge ich der Variable x an Speicherstelle ........... zu .( oder habe ich da was falsch verstanden?) So und jetzt wurde gesagt , dass die Anweisung zb von einer for Schleife keinen Wert liefert ... Jetzt klingt das für mich etwas unlogisch. Warum mache ich dann erst eine for schleife. ein Beispiel:

int b=0;
for(int i=0,i<7,i++){
b=b+1;
}

da es sich hierbei um keinen Ausdruck sondern einer Anweisung handelt wird ja hier kein Wert zurückgeliefert.
Aber ich habe doch den Wert von der Variable b an Speicherstelle xxxxxxxx verändert und könnt jetzt mit dem neuen b weiterarbeiten . somit verstehe ich die Aussage nicht ,dass da kein Wert zurückgegebn wird nicht .Ich könnte doch jetzt nach der for schleife durch system.out.print(b).... den wert ausgeben?
 
Zuletzt bearbeitet von einem Moderator:
ein Beispiel:

Java:
int b=0;
for(int i=0,i<7,i++){
  b=b+1;
}
da es sich hierbei um keinen Ausdruck sondern einer Anweisung handelt wird ja hier kein Wert zurückgeliefert.
Es gibt in Deinem Beispiel genau zwei Ausdrücke:
Ausdruck
Code:
b+1
Teil der Anweisung
Code:
b=b+1;
Ausdruck
Code:
i<7
Teil der Anweisung
Code:
for(int i=0,i<7,i++)
Code:
i++
Ist kein Ausdruck, sondern eine Anweisung! Sie ist wierum Teil einer kompexeren Anweisung.

[EDIT]Mit anderen Worten könnte man sagen, dass Ausdrücke keine Variablen verändern, Anweisungen tun dies oder beeinflussen den Programmablauf.[/EDIT]

bye
TT
 
Zuletzt bearbeitet:
Es gibt in Deinem Beispiel genau zwei Ausdrücke:
Ausdruck
Code:
b+1
Teil der Anweisung
Code:
b=b+1;
Ausdruck
Code:
i<7
Teil der Anweisung
Code:
for(int i=0,i<7,i++)
Code:
i++
Ist kein Ausdruck, sondern eine Anweisung! Sie ist wierum Teil einer kompexeren Anweisung.

[EDIT]Mit anderen Worten könnte man sagen, dass Ausdrücke keine Variablen verändern, Anweisungen tun dies oder beeinflussen den Programmablauf.[/EDIT]

bye
TT

Das heisst Ausdrücke und Anweisungen sind sozusagen gar nicht vergleichbar das eine ist Teil des anderem? ......... Also hat das ganze auch nichts mit void Methoden zutun, die keinen Wert zurückliefern?
 
mit Methoden allgemein hat das schon etwas zu tun, void-Methoden kann man aber in der Tat etwas ausklammern

Ausdrücke sind immer Teil von Anweisungen, das kann man sagen, ein Ausdruck für sich ist ohne Sinn und verboten

eine Anweisung, etwa ein Methodenaufruf, kann aber auch ein Ausdruck sein, wenn man dessen Rückgabewert (eben != void) zuweist,
(edit: nach dem Link/ Zitat unten ist ein Methodenaufruf grundsätzlich ein Ausdruck, kann aber mit Semikolon zur Anweisung werden,
naja, das ist eher Philosophie als Programmierung..)


'anweisung ausdruck java' in Suchmaschinen findet einiges, z.B.
Galileo Computing :: Java ist auch eine Insel – 2.2 Anweisungen formen Programme

2.2.8 Ausdrucksanweisung

Wird ein Ausdruck mit einem Semikolon zu einer Anweisung, so nennen wir das Ausdrucksanweisung (engl. expression statement). Neben Methodenaufrufen gibt es andere Formen von Ausdrucksanweisungen, wie etwa Zuweisungen. Doch allen ist gemeinsam, dass sie mit einem Semikolon abgeschlossen werden. [Das Semikolon dient auch nicht wie in Pascal zur Trennung von Anweisungen, sondern schließt sie immer ab. ]

Hinweis: Nicht jeder Ausdruck kann eine Ausdrucksanweisung sein. In JavaScript ist im Quellcode einfach 3+4; erlaubt, in Java nicht.
usw., vieles nachzulesen

eine for-Schleife, was auch immer man da betrachtet, ob insgesamt überhaupt möglich ist..,
ist jedenfalls klar bei Anweisungen angesiedelt, ist kein Ausdruck, wobei intern Teile sehr wohl Ausdrücke sind,
etwa der mittlere Teil i<7
 
Zuletzt bearbeitet von einem Moderator:
eine Anweisung, etwa ein Methodenaufruf, kann aber auch ein Ausdruck sein, wenn man dessen Rückgabewert (eben != void) zuweist,
An dieser Stelle würde ich gern den Korinthenkacker raushängen lassen:

Methoden selbst sind immer Anweisungen.
Wenn Methoden einen Rückgabewert haben (!=void) können sie Teil von Ausdrücken sein.

Solche "philosophischen" Betrachtungen sind notwendig, weil diese Begriffe in API-Beschreibungen vorkommen.

bye
TT
 
wenn der Methodenaufruf nur ein Teil ist, was wäre denn dann der gesamte Ausdruck im folgenden Beispiel?
int x = get();

ist nicht der Ausdruck alles nach dem = vor dem ;, also genau und nur der Methodenaufruf?


allein schon damit ich nicht falsch zitiert werde, weise ich nochmal daraufhin, dass der Methodenaufruf für sich zunächst ein Ausdruck sein kann, der mit Semikolon zur Anweisung wird,
aber ich habe da wirklich kein Interesse auf Präferenz einer bestimmten Sichtweise 😉
 

Zurück
Oben