10.02.2015 Aufrufe

Übung 1 Datentypen in Java

Übung 1 Datentypen in Java

Übung 1 Datentypen in Java

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Algorithmen und Datenstrukturen 1<br />

Prof. Dr. C. Stamm christoph.stamm@fhnw.ch Tel.: 056 462 47 44<br />

Übung 1 <strong>Datentypen</strong> <strong>in</strong> <strong>Java</strong><br />

Aufgabe 1: <strong>Java</strong>-Syntax<br />

Repetieren Sie oder eignen Sie sich die <strong>Java</strong>-Syntax für Ausdrücke, Zuweisungen, Datentypkonversionen<br />

und Kontrollstrukturen an.<br />

Aufgabe 2: Zuweisungen und Zahlentypen<br />

Nehmen Sie, dass folgende Variablen def<strong>in</strong>iert seien:<br />

byte bi;<br />

<strong>in</strong>t i;<br />

long l;<br />

char c;<br />

boolean b;<br />

float f;<br />

double d;<br />

a) Gültige und ungültige Zuweisungen<br />

Betrachten Sie die folgenden Zuweisungen und entscheiden Sie ohne Computer, welche der<br />

folgenden Zuweisungen korrekt s<strong>in</strong>d.<br />

i = 97;<br />

bi = i;<br />

c = i;<br />

c = (char)i;<br />

c = 'a';<br />

c = 8364;<br />

c = 0x20ac;<br />

c = '€';<br />

c = \u20ac;<br />

c = '\n';<br />

i = c;<br />

bi = (byte)257;<br />

b = 1;<br />

b = true;<br />

i = l;<br />

l = i;<br />

b = i < l;<br />

b = i > c;<br />

f = i;<br />

i = f;<br />

d = 2.3;<br />

i = 2.3;<br />

f = d;<br />

d = f;


) Berechnen Sie den Wert<br />

Berechnen Sie den Wert der Variablen nach der Zuweisung ohne Computer.<br />

// arithmetische Operatoren<br />

l = 20/6; l =<br />

l = 20%6; l =<br />

i = -20%6; i =<br />

i = 5;<br />

i += 10; i =<br />

i++; i =<br />

++i; i =<br />

bi = 7;<br />

b = 7 == bi++; b =<br />

// logische und vergleichende Operatoren<br />

b = 2.5 > 50.0; b =<br />

b = 40.0/6.0 == 6.666666; b =<br />

f = (float)2.0000000000001;<br />

b = f != 2; b =<br />

d = 2.0000000000001;<br />

b = d == 2; b =<br />

b = (true && false) || (true && !false); b =<br />

b = (true || false) && (false || !true); b =<br />

b = (1/10) == 0.1; b =<br />

Aufgabe 3: Zahlentypen und Genauigkeit<br />

a) Integerüberläufe, Genauigkeitsverluste <strong>in</strong> Rechenoperationen<br />

Alle <strong>Datentypen</strong> haben e<strong>in</strong>en klar def<strong>in</strong>ierten Wertebereich. So bewegen sich ganze Zahlen<br />

vom Typ <strong>in</strong>t im Bereich von -2 31 bis 2 31 -1. Was passiert, wenn das Resultat e<strong>in</strong>er Rechenoperation<br />

plötzlich diesen Bereich verlässt Diese Problematik soll hier untersucht werden.<br />

Erzeugen Sie zunächst e<strong>in</strong> neues <strong>Java</strong> Projekt, um die Programme dieser Aufgabe aufnehmen<br />

zu können. Nennen Sie dieses Projekt zum Beispiel „Aufgabe2“.<br />

Schreiben Sie e<strong>in</strong> kle<strong>in</strong>es Programm mit dem Namen IntegerLimits.<br />

• Deklarieren Sie <strong>in</strong> diesem Programm e<strong>in</strong>e Variable vom Typ <strong>in</strong>t und <strong>in</strong>itialisieren Sie die<br />

Variable auf den Wert 1.<br />

• Multiplizieren Sie den Wert Ihrer Variablen mit 256 und drucken Sie das Resultat auf dem<br />

Bildschirm aus.<br />

• Wiederholen Sie den letzten Schritt m<strong>in</strong>destens 4-mal.<br />

Beobachten Sie (mit dem Debugger und an der Programmkonsole), was mit der Variablen<br />

passiert.<br />

Was ist der grösstmögliche Integerwert<br />

Was ist der kle<strong>in</strong>ste (negative) Integerwert<br />

In <strong>Java</strong> gibt es auch den e<strong>in</strong>fachen Datentyp long. Welches ist der grösstmögliche und<br />

welches der kle<strong>in</strong>stmögliche Wert des Datentyps long


) Genauigkeit der unter <strong>Java</strong> verwendeten Fliesskommazahlen<br />

Schreiben Sie nun e<strong>in</strong> kle<strong>in</strong>es Programm mit dem Namen FloatPrecision.<br />

• Deklarieren Sie <strong>in</strong> diesem Programm e<strong>in</strong>e float Variable und <strong>in</strong>itialisieren Sie ihren Wert<br />

auf 1.<br />

• Multiplizieren Sie den Wert Ihrer Variablen mit 256 und drucken Sie das Resultat auf dem<br />

Bildschirm aus.<br />

• Wie oft können Sie den letzten Schritt wiederholen, bevor e<strong>in</strong> Überlauf stattf<strong>in</strong>det Wie<br />

oft können Sie den Schritt wiederholen, wenn Sie die Variable als double def<strong>in</strong>ieren<br />

Versuchen Sie anschliessend das Folgende:<br />

• Setzen Sie e<strong>in</strong>e float Variable auf den Wert 1'000'000'000 (e<strong>in</strong>e Milliarde, oder 1.e9)<br />

• Def<strong>in</strong>ieren Sie e<strong>in</strong>e zweite Variable vom Typ float, setzen Sie deren Wert auf<br />

1'000'000'001 (e<strong>in</strong>e Milliarde und E<strong>in</strong>s)<br />

• Berechnen Sie den Unterschied (Differenz) zwischen den beiden Variablen<br />

• Testen Sie, ob die beiden Werte gleich s<strong>in</strong>d mit dem Operator ==<br />

Erklären Sie die Befunde. Würden Sie die gleichen Resultate antreffen, hätten Sie statt e<strong>in</strong>er<br />

float Variable e<strong>in</strong>e double Variable oder e<strong>in</strong>e <strong>in</strong>t Variable verwendet<br />

Aufgabe 4: Testfragen<br />

a) Gibt es e<strong>in</strong>en <strong>in</strong>t-Wert, für den gilt: -x == x<br />

b) Welches ist die kle<strong>in</strong>ste float/double Zahl, für die gilt: x == x + 1<br />

c) Gibt es e<strong>in</strong>e float-Zahl, für die gilt: x != x

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!