• Keine Ergebnisse gefunden

Programmiertechnik Übungen zu Klassen & -methoden

N/A
N/A
Protected

Academic year: 2022

Aktie "Programmiertechnik Übungen zu Klassen & -methoden"

Copied!
9
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Programmiertechnik

Übungen zu Klassen & -methoden

Prof. Dr. Oliver Haase

(2)

Übung 1

Ein Verfahren, den größten gemeinsamen Teiler (ggT) zweier Zahlen a und b, a <= b, besteht darin, für alle Zahlen

zwischen 1 und a zu testen, ob sie sowohl a als auch b teilen, die größte solche Zahl ist der ggT von a und b.

Schreiben Sie eine Java-Methode, die den ggT zweier

positiver Zahlen nach der oben beschriebenen Brute-Force-

Methode berechnet.

(3)

Übung 2

Der Euklidische Algorithmus zur Berechnung des größten

gemeinsamen Teilers zweier Zahlen gründet sich auf die folgende Beobachtung:

ggT(a,b) = ggT(a %b, b) Desweiteren ist zu beachten, dass

ggT(a,0) = a und

ggT(a,b) = ggT(b,a)

Schreiben Sie basierend auf diesen Beobachtungen einen

rekursiven Algorithmus zur Berechnung des größten gemeinsamen

Teilers zweier beliebiger natürlicher Zahlen.

(4)

Übung 3

Bestimmen Sie die Ausgabe des folgenden Programms:

public class BooleanMethods {

public static boolean test1(int val) {

System.out.println("test1(" + val + ")");

System.out.println("result: " + (val < 1));

return val < 1;

}

public static boolean test2(int val) {

System.out.println("test2(" + val + ")");

System.out.println("result: " + (val < 2));

return val < 2;

}

public static boolean test3(int val) {

System.out.println("test3(" + val + ")");

System.out.println("result: " + (val < 3));

return val < 3;

}

public static void main(String args[]) {

(5)

Übung 4

public class Signatur {

public static void hoppla(long x, double y, double z) { System.out.println("ldd");

}

public static void hoppla(long x, long y, double z) { System.out.println("lld");

}

public static void hoppla(long x, long y, long z) { System.out.println("lll");

}

public static void hoppla(double x, long y, double z) { System.out.println("dld");

}

public static void main (String[] args) { long a = 333;

double b = 4.44;

hoppla(a,a,a); // Aufruf 1 hoppla(b,b,b); // Aufruf 2 hoppla(a,a,b); // Aufruf 3 hoppla(b,b,a); // Aufruf 4 hoppla(a,b,a); // Aufruf 5

welche Aufrufe sind

zulässig, welche

(6)

Übung 5

public static void quadrat(double x) { return Math.pow(x, 2);

}

Was ist falsch in den folgenden Programmzeilen?

double[][] matrix3x3 = { 1.0, 2.0, 3.0,

4.0, 5.0, 6.0,

7.0, 8.0, 9.0 };

(7)

Übung 6

public static int komisch(int n) { if ( n == 0 )

return 1;

else

return n * komisch(n-1) * komisch(n-2);

}

Was ist das Problem mit den folgenden Methoden?

public static int sum(int[] z) {

// berechnet die Summe der Komponenten des Feldes z int s = 0, i = 0;

while ( i < z.length ) s = s + z[++i];

return s;

(8)

Übung 7

public static int kehrwertFakul(int n) {

// liefert 1/n * 1/ (n-1) * ... * 1/3 * 1/2 return 1/n * kehrwertFakul(n-1);

}

Warum führt das folgenden Programmfragmente zu einem Laufzeitfehler?

(9)

Zusatzübung

Schreiben Sie ein Java-Programm, das eine beliebige Anzahl von double –Werten einliest und so in ein Feld abspeichert, dass gleiche Werte hintereinander angeordnet sind und alle positive Zahlen vor allen negativen Zahlen stehen. Gehen Sie wie folgt vor:

 Schreiben Sie eine Methode enter (mit Parametern d , k und dFeld ), die den double -Wert d vor der k -ten Komponente in das Feld einfügt und das dabei

entstehende (um eine Komponente verlängerte) Feld als Ergebnis zurückliefert. Ist k gleich der Länge von dFeld , dann ist d nach der letzten Komponente des Feldes dFeld einzufügen.

 Schreiben Sie eine Methode position (mit Parametern d und dFeld ), die zunächst feststellt, ob der double -Wert d in dFeld bereits gespeichert ist. Wenn dies der Fall ist, soll der Feldindex zurückgeliefert werden. Ist d noch nicht in dFeld enthalten, dann soll für positive Werte d die Position 0 und für alle anderen Werte die Position n zurückgeliefert werden, wobei n die Feldlänge ist.

 Schreiben Sie eine main -Methode, die in einer Schleife double -Werte einliest, und unter Verwendung von position und enter an der richtigen Stelle in ein Feld

einfügt. Die Schleife soll bei der Eingabe von 0 abgebrochen werden. Danach ist das

Feld auszugeben.

Referenzen

ÄHNLICHE DOKUMENTE

Wenn in einer &#34;Klasse&#34; KEINE Methode implementiert ist, wird sie als interface &#34;Schnittstelle&#34; bezeichnet. public interface

• Eine Klasse kann ein Interface auch dann implementieren, wenn sie nicht alle seine Methoden implementiert. • Die Klasse ist dann als abstrakte Klasse

Bewege Turm der Höhe n von start nach ziel, unter Verwendung von über:?.  Turm der Höhe 1: bewege Scheibe von start nach

 Antwort: Über eine geeignete Schnittstelle, die jeder Event-Listener implementieren

Beispiel 2: initialisiere ein Feld mit den ersten 100 ungeraden Zahlen – auch hier kann die vereinfachte Schleife nicht verwendet

 Dazu muss als Komponententyp der gemeinsame Supertyp, T, von Ohrring und Socke verwendet werden, denn dann kann dank.. Polymorphismus sowohl Ohrring als auch Socke an

Schreiben Sie ein Java-Programm, das eine Feld von Integerwerten von der Tastatur einliest und anschliessend die größte Zahl bestimmt und auf dem Bildschirm ausgibt.... Oliver Haase

 innere Klasse: Die Klasse wird innerhalb einer anderen Klasse definiert..!. (Beachte: der untere, leere Teil wird später