Programmieren in Java 6. Übung 1. Aufgabe Es soll ein Applet geschrieben werden, das folgende Darstellung in seinem Fenster anzeigt: Wie die Abbildung zeigt handelt es sich um ein Schachbrett, das aus sog. 3D-Rechtecken (Quadraten) besteht. Die Positionierung des Schachbretts soll abhängig von der Größe des Fensters erfolgen, die einzelnen 3D-Quadrate haben eine Größe von 40 Pixel. Auf dem Schachbrett sind 8 Damen positioniert. Die Symbole zu den 8 Damen sind aus Polygone aufgebaut. Das zu schreibende Applet soll die vorliegende Abbildung möglichst genau wiedergeben. 2. Aufgabe a) Schreibe eine Java-Anwendung, die die Initialisierungswerte primitiver Typen anzeigt. Hinweis zur Lösung: Instanzvariable erhalten standardmäßig Initialisierungswerte zugeordnet. b) Gib zu jedem der primitiven Typen einen eigenen Initialisierungswert an. 3. Aufgabe 1. Welche Ausgaben zeigen die folgenden Anwendungen? a) public class Gleichheit { public static void main(String[] args) { Integer n1 = new Integer(13); 1 Programmieren in Java Integer n2 = new Integer(13); System.out.println(n1 == n2); } } b) public class GleichMethode { public static void main(String[] args) { Integer n1 = new Integer(13); Integer n2 = new Integer(13); System.out.println(n1.equals(n2)); } } c) class Wert { int i; } public class GleichMethode2 { public static void main(String[] args) { Wert w1 = new Wert(); Wert w2 = new Wert(); w1.i = w2.i = 100; System.out.println(w1.equals(w2)); } } 2. Implementiere die drei Anwendungen und überprüfe die unter a) bis c) angegebene Vorhersage. 4. Aufgabe a) Schreibe ein Programm, das Primzahlen (von der Primzahl 2 an) ermittelt. Was ist eine Primzahl? Eine Primzahl ist eine natürliche Zahl, die genau zwei verschiedene Teiler besitzt (1 und sich selbst). Die Zahl ist 1 ist keine Primzahl, weil sie keine zwei verschiedene Teiler besitzt. Nach dieser Definition ist die Zahl 2 die kleinste Primzahl. Weiter geht es mit 3, 5, 7, 11, ... Wie findet man eine Primzahl? Man teilt die primzahlverdächtigen Zahlen durch alle Zahlen von 2 ab bis kurz vor der Zahl selbst. War die Zahl nie teilbar, dann ist sie eine Primzahl, anderenfalls nicht. Primzahlen startet man mit der Zahl 2 und wiederholt das Verfahren so oft, bis die gewünschte Zahl erreicht wurde. Wie kann man den vorliegenden Algorithmus verbessern? (1) Scheide alle geraden Zahlen aus, denn sie sind garantiert durch 2 teilbar (2) Teile die so verbliebenen Zahlen mindestes durch Divisor 3 (3) Teile nur durch Primzahlen als Divisoren, denn jede Nichtprimzahl läßt sich als Produkt von Primzahlen aufbauen (4) Gehe mit den Primzahldivisoren nur bis höchstens zur Wurzel aus der primzahlverdächtigen Zahl. Warum? 25 ist bspw. 5 * 5, d.h. weiteres Probieren über 5 ist sinnlos. b) Die Anzahl der zu ermittelten Primzahlen (erste Primzahl ist 2) soll per Default 100 sein. Ist eine davon abweichende Größe gewünscht, so soll das über die Kommandozeile bestimmt werden können. 2 Programmieren in Java c) Die so ermittelten Primzahlen sollen in einen Array ausgegeben werden. Die in diesem Array gespeicherten Primzahlen sollen auf der Standardausgabeeinheit protokolliert werden. Dabei sollen jeweils 12 Primzahlen je Zeile angezeigt werden. 3