Einführung in die Programmierung Übungen P. Fierz / HS 2011/2012 Kapitel 3 Fundamentale Datentypen Aufgabe 3.1 [Formeln in Java] 1. Schreiben Sie die folgenden mathematischen Ausdrücke in Java s G = s0 + v0 t + 12 gt2 3 = 4π 2 p2 (ma1 +m2 ) FV c T = P V · 1 + IN 100 p a2 + b2 − 2ab cos(γ) = Y RS 2. Schreiben Sie die folgenden Java Ausdrücke in mathematischer Notation a. dm = m * (Math.sqrt(1 + v / c) / (Math.sqrt(1 - v / c) - 1)); b. volume = Math.PI * r * r * h; c. volume = 4 * Math.PI * Math.pow(r, 3) / 3; d. p = Math.atan(z / Math.sqrt(x * x + y * y)); 3. Was ist falsch in den folgenden Formeln zum lösen von quadratischen Gleichungen? x1 = (-b - Math.sqrt(b * b - 4 * a * c)) / 2 * a; x2 = (-b + Math.sqrt(b * b - 4 * a * c)) / 2 * a; Aufgabe 3.2 [Integer und Doubles] 1. Geben Sie ein Beispiel für Integeroverflow. Passiert in Ihrem Beispiel der Overflow auch wenn der Datenty double ist? 2. Geben Sie ein Beispiel für einen Rundungsfehler der beim Rechnen mit Doubles auftreten kann. 3. Der Output des Statements System.out.println(19.93 - 20); ist -0.07000000000000028. Erklären Sie dieses Phänomen. 4. Erklären Sie wie ein Double auf zwei Stellen nach dem Komma gerundet werden kann. 5. Wie kann man die erste und die letzte Ziffer einer Integerzahl herausfinden? Beispiel: Für 299826 ist die erste Ziffer 2 und die letzte Ziffer 6. Achtung: Die Zahl darf nicht zuerst in einen String umgewandelt werden. 3-1 Einführung in die Programmierung Übungen P. Fierz / HS 2011/2012 Aufgabe 3.3 [Programmierung] Schreiben Sie eine Klasse, die die zwei folgenden static Methoden zur Verfügung stellt: 1. public static int exchange(int number, int pos1, int pos2) Die Methode soll in number die Stellen pos1 und pos2 vertauschen. Die Stellen werden von rechts nach links beginnend mit 1 gezählt. Wenn eine der Stellen zu gross ist, soll keine Vertauschung stattfinden. Beispiele: number 19276 327172 12345 pos1 2 1 8 pos2 3 6 4 Output 19726 227173 12345 (8 zu gross) Achtung: Die Zahl darf nicht in einen String umgewandelt werden!! 2. public static String getTimeInterval(int time1, int time2) Die Methode soll die Differenz zwischen den zwei Zeiten als String der Form "HH:MM" zurückgeben. time1 und time2 sind Zeiten im sogenannten Militärformat (0950 oder 2315). Falls eine der Zeiten ungültig ist, so soll die Methode den String "Error" zurückgeben. Beispiele: time1 0900 1730 12000 time2 1730 0900 0830 Output "08:30" "15:30" "Error" 3-2