6.4.

maggusxy
Erstie
Erstie
Beiträge: 19
Registriert: 26. Okt 2011 08:45

6.4.

Beitrag von maggusxy »

Hallo Leute,

kurze Frage zur 6.4. a;

Ich habe die Anzahl der einzelnen Operationen (Inkrementierungen, Vergleiche usw) jetzt einfach mithilfe von Eclipse gezählt indem ich einfach ein paar Zählvariablen angelegt habe, die vor jedem entsprechenden Aufruf um 1 hochgezählt wurden.

Reicht das aus für die a einfach die Ergebnisse hinzuschreiben oder soll man das auf eine andere Art ermitteln oder beweisen können?

Gruß

Benutzeravatar
JannikV
Nerd
Nerd
Beiträge: 609
Registriert: 24. Apr 2011 12:42

Re: 6.4.

Beitrag von JannikV »

Es reicht wenn du die Anzahl der Operationen angeben kannst.

VG

maggusxy
Erstie
Erstie
Beiträge: 19
Registriert: 26. Okt 2011 08:45

Re: 6.4.

Beitrag von maggusxy »

Alles klar,
danke dir Jannik!

Gruß Markus

maggusxy
Erstie
Erstie
Beiträge: 19
Registriert: 26. Okt 2011 08:45

Re: 6.4.

Beitrag von maggusxy »

Noch ne kurze Frage:

Zählt eine Inkrementierung (z.B. i++) als zwei Operationen oder nur als eine?

Weil einmal muss i+1 berechnet werden => arith. Operation
und einmal muss der neu errechnete Wert ja wieder zurück in i geschrieben werden (i = neuer wert)?

Benutzeravatar
JannikV
Nerd
Nerd
Beiträge: 609
Registriert: 24. Apr 2011 12:42

Re: 6.4.

Beitrag von JannikV »

Das sehe ich so wie du. Kann sein dass im Lösungsvorschlag i++ nur als eine Operation gezählt wird, aber beides sollte akzeptiert werden.

Benutzeravatar
JannikV
Nerd
Nerd
Beiträge: 609
Registriert: 24. Apr 2011 12:42

Re: 6.4.

Beitrag von JannikV »

Ok, ich habe da mal was ausprobiert..

Möglicherweise ist es doch sinnvoll i++ nur als eine Operation zu zählen, denn i++ ist in Java nicht unmittelbar nur Syntactic-Sugar für i = i + 1.
Der von javac erzeugte Bytecode unterscheidet sich schon deutlich in der Anzahl der Instruktionen (nach denen hier nicht gefragt ist, ich habe das nur mal just4fun ausprobiert).

Code: Alles auswählen

int i = 0;
i = i + 1;
kompiliert zu

Code: Alles auswählen

0: iconst_0      
1: istore_1      
2: iload_1       
3: iconst_1      
4: iadd          
5: istore_1
wohingegen

Code: Alles auswählen

int i = 0;
i++;
lediglich zu

Code: Alles auswählen

0: iconst_0      
1: istore_1      
2: iinc          1, 1
kompiliert.

Undurchsichtig ist da jetzt was der Just-In-Time Compiler der JVM beim Ausführen des Programms aus der Sache macht. Möglicherweise wird am Ende doch noch das gleiche draus. Lässt sich jetzt schwer sagen.

Das dürfte allerdings zeigen, warum es gerechtfertigt ist beide Lösungen zu akzeptieren ;-)

VG

PS: wem das jetzt gar nichts sagt und nur verwirrt - es ist nicht wichtig um die Aufgabe zu lösen, das hier ist lediglich ein wenig Hintergrundinformation.

Jan.A
Neuling
Neuling
Beiträge: 4
Registriert: 2. Mai 2013 15:55

Re: 6.4.

Beitrag von Jan.A »

Bei der 6.4 frage ich mich hier und da auch, wie genau gezählt werden soll.

z.b.

swap(array,i+1,right);

- man zählt hier nur eine Operation
- man zählt hier zwei Operationen, da im Aufruf eine arithmetische Operation ausgeführt wird
- man zählt hier 5 Operationen. Einen Methodenaufruf, eine arithmetische Operation, drei "Zuweisungen" (Parameter)

Benutzeravatar
JannikV
Nerd
Nerd
Beiträge: 609
Registriert: 24. Apr 2011 12:42

Re: 6.4.

Beitrag von JannikV »

Der Lösungsvorschlag macht zweiteres.

VG

JohnDoe
Windoof-User
Windoof-User
Beiträge: 24
Registriert: 9. Okt 2011 13:26

Re: 6.4.

Beitrag von JohnDoe »

Wenn diese Aufgabenstellung, wie man anhand dieses Themas erkennt, recht schwammig ist, warum wird dann beim Testat strikt nach Musterlösung korrigiert?
Finde ich eigentlich schade, da es hier ja nun wirklich auf den Prozessor und Compiler ankommt wie das Inkrement gehändelt wird. Die Betrachtung des Prozessors oder Compilers war in der Aufgabenstellung aber gar nicht gefragt.

John

Prof. Karsten Weihe
Dozentin/Dozent
Beiträge: 1824
Registriert: 21. Feb 2005 16:33

Re: 6.4.

Beitrag von Prof. Karsten Weihe »

JohnDoe hat geschrieben:Wenn diese Aufgabenstellung, wie man anhand dieses Themas erkennt, recht schwammig ist, warum wird dann beim Testat strikt nach Musterlösung korrigiert?
Das Wort war nicht "Musterlösung", sondern "Lösungsvorschlag". :idea:

Wenn Sie Ihre Zählung plausibel machen, dann sollte der Tutor das auch akzeptieren.

Auf der sicheren Seite sind Sie mit Ihrer dritten Variante, d.h. Methodenaufruf, arithmetische Operation und drei Zuweisungen. Kein Tutor wird etwas dagegen haben, wenn Sie genauer zählen als im Lösungsvorschlag als absolutes Minimum verlangt wird. :)

KW

Benutzeravatar
JannikV
Nerd
Nerd
Beiträge: 609
Registriert: 24. Apr 2011 12:42

Re: 6.4.

Beitrag von JannikV »

Außerdem habe ich oben doch beschrieben dass das mit dem Bytecode nicht relevant ist, aber eben ein Argument, dass mehrere Lösungen akzeptiert werden.
Es ist schließlich unmöglich bei einer High-Level Sprache wie Java vorherzusagen was der Prozessor damit am Ende genau macht.

VG

JohnDoe
Windoof-User
Windoof-User
Beiträge: 24
Registriert: 9. Okt 2011 13:26

Re: 6.4.

Beitrag von JohnDoe »

Prof. Karsten Weihe hat geschrieben:[...]
Das Wort war nicht "Musterlösung", sondern "Lösungsvorschlag". :idea:
Sehr geehrter Herr Prof. Weihe,
leider war in diesem Fall seitens des Tutor konkret von der "Musterlösung" die Rede.
Prof. Karsten Weihe hat geschrieben: Wenn Sie Ihre Zählung plausibel machen, dann sollte der Tutor das auch akzeptieren.
Dem war leider nicht so. Und genau das finde ich schade. Es wurde sich einfach an der "Musterlösung" festgeklammert.

Letztlich akzeptiere ich das Ergebnis des Testats, möchte an dieser Stelle eigentlich nur auf diese Differenzen aufmerksam machen, damit die Vorlesung in Zukunft weiter verbessert werden kann.

John

Prof. Karsten Weihe
Dozentin/Dozent
Beiträge: 1824
Registriert: 21. Feb 2005 16:33

Re: 6.4.

Beitrag von Prof. Karsten Weihe »

JohnDoe hat geschrieben: leider war in diesem Fall seitens des Tutor konkret von der "Musterlösung" die Rede.
Sorry, ich dachte, Sie bezogen sich auf Herrn Vietens Antwort.

JohnDoe hat geschrieben:
Prof. Karsten Weihe hat geschrieben: Wenn Sie Ihre Zählung plausibel machen, dann sollte der Tutor das auch akzeptieren.
Dem war leider nicht so.
Dann sollte wir im Gespräch mit den Tutoren dieses Thema noch einmal aufgreifen.

KW

jw.
Erstie
Erstie
Beiträge: 12
Registriert: 20. Apr 2013 11:54

Re: 6.4.

Beitrag von jw. »

JannikV hat geschrieben:Das sehe ich so wie du. Kann sein dass im Lösungsvorschlag i++ nur als eine Operation gezählt wird, aber beides sollte akzeptiert werden.
Wie wird es denn jetzt konkret im "Lösungsvorschlag" gemacht, i++ als 1 oder 2 Operationen?

Benutzeravatar
JannikV
Nerd
Nerd
Beiträge: 609
Registriert: 24. Apr 2011 12:42

Re: 6.4.

Beitrag von JannikV »

1

Antworten

Zurück zu „Archiv“