Seite 1 von 1

Übung 12 - Aufgabe 4

Verfasst: 10. Feb 2012 15:37
von Melkom
Auf Wunsch hier eine ergänzende Erklärung zur Aufgabe 4 (Scope von Variablen) von Michael Stoica:

Code: Alles auswählen

Achtung:
Im Konstruktor wir dem PARAMETER z ein Wert zugewiesen,
und NICHT der Objektvariablen, da man sonst
"this.z = x+ y;" hätte schreiben müssen.
z bekommt im Konstruktor also keinen Wert zugewiesen und ist folglich 0.

Nach dem Konstruktoraufruf haben die Objektvariablen also folgende Werte:
x=42
y=23
z=0

Nun Arbeiten wir die Methode m von oben nach unten ab:
v=19
w=19
x=19
v=0
w= 1 - 19 = -18
x = 19 + 23 = 42          //hier wird der LOKALEN Variable x ein Wert zugewiesen und nicht der Objektvariable
y = 42 - 0 = 42
z = 0 - (-18) + 0 = 18

=> Endergebnis:
x=42
y=42
z=18

Bemerkung: Da z bis auf die letzte Zeile von m() 0 ist,
gilt das f die Identität ist (d.h f(x)=x), da ja z/y = 0/y =0 ist
(Diese Musterlösung wurde bereits letztes Jahr in diesem Forum veröffentlicht, siehe hier)

Re: Übung 12 - Aufgabe 4

Verfasst: 12. Feb 2012 19:05
von Gast
Danke, das war sehr hilfreich!
Als nicht It-ler wär ich da echt nie draufgekommen!!
Lg, Andi

Re: Übung 12 - Aufgabe 4

Verfasst: 4. Mär 2012 00:33
von s.k.
Äh. Hätten wir wissen sollen, dass man Objektvariablen nicht initialisieren braucht, lokale Variablen aber schon (so wie ich das jetzt auf die schnelle verstanden habe)? Hat das irgendeinen höheren Sinn??
Ich hätte fest mit einem Fehler beim compilieren gerechnet..

Re: Übung 12 - Aufgabe 4

Verfasst: 4. Mär 2012 18:31
von Gast
Hallo, guten Abend zusammen,

kann mir bitte jemand erklären, wieso w = y / x - f ( f ( z + x ) ) = 1 - 19 ist? Die-19 leuchtet ein,
aber y/x sollte doch eigentlich 23/19 sein, oder?

Vielen Dank im Voraus

Re: Übung 12 - Aufgabe 4

Verfasst: 4. Mär 2012 18:52
von Owyn
Wenn man zwei ganze Zahlen dividiert, ist das Ergebnis wieder eine ganze Zahl, die Nachkommastellen werden also abgeschnitten...

Gruß,
Christian Heinig

Re: Übung 12 - Aufgabe 4

Verfasst: 4. Mär 2012 19:22
von Gast
Vielen Dank für die schnelle Antwort Christian!
Beste Grüße

Re: Übung 12 - Aufgabe 4

Verfasst: 5. Mär 2012 21:13
von Mario
Hallo zusammen,

ich kann die gepostet Lösung an folgendem Punkt nicht nachfollziehen:

w= 1 - 19 = -18
(w = y / x - f(f(z+x));)

Um das Problem zu finden zerleg ich mal die Gleichung in einzelteile:

f(f(z+x)) = f(f(0+19)) = 19
x = 19
y = 0
Ich vermutet bei y meinen Fehler. Davon ausgehend das y nicht explizit initalisiert wurde würde ich davon ausgehen das implizit 0 angenommen wird.

Grüße,
Mario

Re: Übung 12 - Aufgabe 4

Verfasst: 5. Mär 2012 21:39
von Daniel S.
y wird im Konstruktor mit 23 initialisiert (y = z; z hat den Wert 23).

Re: Übung 12 - Aufgabe 4

Verfasst: 5. Mär 2012 21:40
von mmec
Hallo, du verstehst ja folgende stelle nicht:

Code: Alles auswählen

w = y / x - f(f(z + x));
An der stelle ist y==23, denn dieser Wert wurde der Variable im Konstuktor zugewiesen. Die Ganzzahldivision von 23/19 ergibt dann 1.

Grüße, Johannes