Übung 12 - Aufgabe 4

Melkom
Mausschubser
Mausschubser
Beiträge: 89
Registriert: 21. Okt 2005 13:58
Wohnort: Frankfurt am Main

Übung 12 - Aufgabe 4

Beitrag von Melkom » 10. Feb 2012 15:37

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)

Gast
Gast

Re: Übung 12 - Aufgabe 4

Beitrag von Gast » 12. Feb 2012 19:05

Danke, das war sehr hilfreich!
Als nicht It-ler wär ich da echt nie draufgekommen!!
Lg, Andi

s.k.
Gast

Re: Übung 12 - Aufgabe 4

Beitrag von s.k. » 4. Mär 2012 00:33

Ä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..

Gast
Gast

Re: Übung 12 - Aufgabe 4

Beitrag von Gast » 4. Mär 2012 18:31

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

Benutzeravatar
Owyn
BSc Spammer
BSc Spammer
Beiträge: 1012
Registriert: 5. Sep 2005 21:53
Wohnort: Rheingau

Re: Übung 12 - Aufgabe 4

Beitrag von Owyn » 4. Mär 2012 18:52

Wenn man zwei ganze Zahlen dividiert, ist das Ergebnis wieder eine ganze Zahl, die Nachkommastellen werden also abgeschnitten...

Gruß,
Christian Heinig
All those who believe in psycho-kinesis, raise my hand.
(Steven Wright)

Gast
Gast

Re: Übung 12 - Aufgabe 4

Beitrag von Gast » 4. Mär 2012 19:22

Vielen Dank für die schnelle Antwort Christian!
Beste Grüße

Mario
Gast

Re: Übung 12 - Aufgabe 4

Beitrag von Mario » 5. Mär 2012 21:13

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

Daniel S.
Mausschubser
Mausschubser
Beiträge: 87
Registriert: 25. Sep 2007 12:28
Wohnort: Mörfelden

Re: Übung 12 - Aufgabe 4

Beitrag von Daniel S. » 5. Mär 2012 21:39

y wird im Konstruktor mit 23 initialisiert (y = z; z hat den Wert 23).
Mit freundlichen Grüßen
Daniel

Benutzeravatar
mmec
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 203
Registriert: 7. Sep 2011 17:59
Wohnort: Darmstadt

Re: Übung 12 - Aufgabe 4

Beitrag von mmec » 5. Mär 2012 21:40

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
FC SEEMOO No.1

Antworten

Zurück zu „Archiv“