Test 1: Programmierung I – Circle-Klasse und Quersumme

Informatik4,7 KB

Test 1: Programmierung I

Datum: Montag, 29. September 2008
Name: ____________________________________________________________

Abschnitt A: Die Klasse Circle

Angesichts der Circle-Klasse, die mit den folgenden Attributen und Methoden bereits implementiert wurde, arbeiten Sie mit den Signaturen der einzelnen Verfahren wie folgt:

Definition der Klasse Circle

private int radius; private int x, y;
public Circle(int x, int y, int radius)
public Circle() // mit Nullen füllen ...
static double area(Circle c)
public String toString()
public int getX()
public int getY()
public int getRadius()
void setX(int x1)
void setY(int y1)
void setRadius(int r1)
void wachsen(int anteil)

Aufgabenstellung

Nutzen Sie die vorherige Klasse für folgende Lösung:

  1. Erstellen Sie zwei Objekte vom Typ Circle: c1 mit dem ersten Konstruktor und Zufallswerten zwischen 1 und 10, sowie c2 mit dem zweiten Konstruktor.
  2. Berechnen Sie die Fläche von c1 mit einer statischen Methode.
  3. Berechnen Sie den Umfang von c1 (Hinweis: Der Umfang ist 2 * 3,14159 * Radius).
  4. Geben Sie die Attribute von c1 auf dem Bildschirm aus.
  5. Bearbeiten Sie den Radius von c1, indem ein von der Tastatur gelesener Wert addiert wird.
  6. Erweitern Sie den Radius von c1 um 10 % mit der wachsen-Methode.
  7. Stellen Sie die grafischen Objekte mit ihren Attributen und deren Änderungen dar. Berücksichtigen Sie dabei Grafik-Variablen und Werte sowie die Bildschirmausgabe mit den entsprechenden Zeilenumbrüchen.

Abschnitt B: Quersumme einer Zahl

Es soll ein versteckter Wert in einer fünfstelligen Nummer gefunden werden, die von der Tastatur gelesen wird. Dieser Wert ist die Summe aller ihrer Ziffern. Beschreiben Sie die Ein- und Ausgaben anhand eines schrittweisen numerischen Beispiels und schreiben Sie anschließend den Code für den verborgenen Betrag.

Beispiele:
13512 -> Quersumme -> 12
11111 -> Quersumme -> 5

Code-Implementierung (Teil A)

Klasse Programm (public static void main() throws Exception {
Scanner lesen = new Scanner(System.in);
Circle c1 = new Circle((int)(Math.random() * 10), (int)(Math.random() * 10), (int)(Math.random() * 10)); // 3 Punkte
Circle c2 = new Circle(); // 1 Punkt
double flaeche, umfang;
int tastatur;
flaeche = Circle.area(c1); // 3 Punkte
umfang = 2 * 3.14159 * c1.getRadius(); // 3 Punkte
System.out.println(c1); // 1 Punkt
System.out.println("Wert eingeben, um Radius zu addieren:");
tastatur = lesen.nextInt(); // 1 Punkt
c1.setRadius(c1.getRadius() + tastatur); // 4 Punkte
c1.wachsen(10); // 2 Punkte
})

Wertetabelle / Trace

c1 | c2 | Tastatur | Bereich (Fläche) | Perimeter (Umfang)
x = x1 | x = 0 | Wert | 3,14159 * r1 * r1 | 2 * 3,14159 * r1
y = y1 | y = 0 | (0,4) | (0,4) | (0,4)
r1 = 0,4 | Radius = 0 | (0,4)
r1 + Wert (0,3)
(r1 * Wert) * 0,1 (0,3) | Insgesamt: 3,0 Punkte

Bildschirmausgabe

x = x1, y = y1, Radius = r1
"Eingegebener Wert zur Radius-Erhöhung ="
Wert (0,4 Punkte). Sum-Sonde 1 (21 Punkte)

Lösung Teil B

Eingabe: fünfstellige Ganzzahl (1 Punkt)
Ausgabe: eine ganze Zahl (1 Punkt)

Numerischer Lösungsweg

sum = 13512 % 10 // sum = 2 (0,2)
n = 13512 / 10 // 1351 (0,33)
sum = sum + 1351 % 10 // sum = 2 + 1 = 3 (0,2)
n = 1351 / 10 // 135 (0,33)
sum = sum + 135 % 10 // sum = 3 + 5 = 8 (0,2)
n = 135 / 10 // 13 (0,33)
sum = sum + 13 % 10 // sum = 11 (0,2)
sum = sum + 13 / 10 // Summe = 12 (0,2)
sum = 1

Code-Implementierung (Teil B)

Klasse Programm2 (0,2)
public static void main() throws Exception (0,2)
{
Scanner lesen = new Scanner(System.in); (0,2)
int sum = 0, n; (0,4)
System.out.println("Wert eingeben");
n = lesen.nextInt(); // Beispiel: 13512 (1)
sum = n % 10; (1)
n = n / 10; (1)
sum = sum + n % 10; (1)
n = n / 10; // 135 (1)
sum = sum + n % 10; (1)
n = n / 10; (1)
sum = sum + n % 10; (1)
sum = sum + n / 10; (1 + sum = 2)
System.out.println("Summe = " + sum);
}

1 ... 13 PROG2 18

Herunterladen

PDF Word HTML