[Hauptseite]
MARTIN-LUTHER-UNIVERSITÄT HALLE-WITTENBERG
Institut für Informatik
Prof. Dr. Stefan Brass
Objektorientierte Programmierung
(Winter 2008/2009)
Hinweise zu Hausaufgabenblatt 1
Erstes Übungsblatt
(für Teilnehmer ohne StudIP-Zugang):
[PDF].
Leider muß man für die Lösung des Übungsblattes
noch einige Dinge wissen,
die in der Vorlesung nicht behandelt wurden.
Diese Dinge werden in der nächsten Übung
noch ausführlich besprochen
(Sie müssen das Übungsblatt ja erst nach der Übung
abgeben.)
Hier schon einige Tipps:
- In der Vorlesung wurde zwar erwähnt,
das Zahlen intern als Bitmuster abgespeichert werden,
aber nicht,
wie die genaue Codierung funktioniert.
Während Menschen das Dezimalsystem gewohnt sind,
in denen die am weitesten rechts stehende Ziffer
der Wert 1 (10 hoch 0) hat,
die nächste Ziffer den Wert 10 (10 hoch 1),
dann die nächste den Wert 100 (10 hoch 2),
u.s.w.,
verwenden Computer das Binärsystem:
Dort hat die am weitesten rechts stehende Ziffer
wieder den Wert 1 (2 hoch 0),
die nächste Ziffer den Wert 2 (2 hoch 1),
die nächste Ziffer den Wert 4 (2 hoch 2),
u.s.w.
Im Dezimalsystem benötigt man 10 Ziffern (0 bis 9),
im Binärsystem nur 2 Ziffern (0 und 1).
Z.B. hätte die 8 Bit Zahl 00100101
den Wert 0*128+0*64+1*32+0*16+0*8+1*4+0*2+1*1=37.
Bei dieser Codierung können mit 8 Bit
Zahlen von 0 (00000000) bis 255 (11111111) dargestellt werden.
Wenn man auch negative Zahlen darstellen will,
wird eine etwas andere Codierung verwendet,
das kommt aber in den Aufgaben nicht vor.
- Was ein Wort (engl. Word) ist,
hängt eigentlich von der CPU ab
(typischerweise die Größe der Register).
In der Welt der Intel CPUs (und etwas darüber hinaus)
werden darunter aber häufig 16 Bit verstanden,
weil das beim 8086-Prozessor so war,
und alle folgenden CPUs der Reihe kompatibel sein sollten,
obwohl sie eigentlich schon 32 Bit CPUs waren.
Die Aufgabe c) ist auch so gemeint,
daß Sie die gegebene Anzahl Bit einfach durch 16
teilen.
- Zu Aufgabe i) wäre noch zu sagen,
daß die gegebenen 5 Anweisungen
natürlich nur der Inhalt der main()-Prozedur sind.
Ohne den allgemeinen Rahmen darum
würde es der Compiler nicht übersetzen,
sondern einen Syntaxfehler melden.
Noch ein Tipp:
In der Vorlesung wurde ja gesagt,
daß return den Ergebniswert der Prozedur festlegt.
Es wurde nicht explizit gesagt,
was passiert,
wenn es anschließend noch weitere Anweisungen gibt
(das kam im Beispiel der Vorlesung nicht vor).
Die "return"-Anweisung tut aber das,
was der englische Name besagt:
die Ausführung kehrt zum Aufrufer zurück,
was in diesem Fall das Betriebssystem ist
(bzw. der allgemeine Programmrahmen,
der dann seinerseits die Ausführung an das
Betriebssystem zurückgibt).
Der "Instruction Pointer" wird in diesem Fall
also nicht einfach auf den folgenden Befehl gesetzt.
Sie haben in der Übung aber auch sicher die Gelegenheit,
die Programme einfach einzugeben und auszuführen,
um Ihre Vermutung zu bestätigen.
Stefan Brass
(brass@acm.org),
8. Oktober 2008
Original URL:
http://www.informatik.uni-halle.de/~brass/oop08/h1_tipps.html
[HTML 3.2 Checked]
[Links Geprüft]