Java-Teil

Werbung
Computergestütztes Experimentieren in der Kognitionspsychologie
4. Aufgabenblatt
1 von 3
Java-Teil
(Grundlagen, Kontrollstrukturen, Funktionen, Rekursion, Schleifen)
Aufgabe 1: Folgendes Programm gibt alle natürlichen Zahlen bis 20 aus.
import java.io.*;
class Numbers {
static final int MAX = 20; // Konstante festlegen
public static void main(String[] args) {
for(int i = 1; i <= MAX; ++i)
System.out.println(i);
}
}
a) Teste es auf deinem eigenen Rechner.
b) Erweitere es derart, dass es eine Überschrift wie z.B. Alle natürlichen Zahlen bis... anzeigt
c) Schreibe ein ähnliches Programm, welches eine andere Folge von Zahlen ausgibt, z.B.
Quadratzahlen.
Aufgabe 2: Schreibe eine Funktion, welche den Inhalt einer Reihung aufsummiert, z.B. kannst
Du von folgendem Grundgerüst ausgehen.
import java.io.*;
public class ArrSum {
public static int sum(int[] ar) {
// Hier die Summe ar[0] + ar[1] + ... + ar[ar.length-1] berechnen
return 0;
}
public static void main(String[] args) {
int[] a = new int[5];
int[] b = { 10, 5, 2, 100, 9, 11 };
a[0]
a[1]
a[2]
a[3]
a[4]
}
}
=
=
=
=
=
1;
2;
3;
4;
5;
System.out.println("1+2+3+4+5 = " + sum(a));
System.out.println("10+5+2+100+9+11 = " + sum(b));
Computergestütztes Experimentieren in der Kognitionspsychologie
4. Aufgabenblatt
2 von 3
Aufgabe 3: Der ternäre oder Bedingungsoperator
<Bedingung> ? <Ausdruck1> : <Ausdruck2>
ist bereits aus PXLab bekannt.
a) Benutze diesen um die Funktionen
max
sgn
abs
welche das Maximum zweier Zahlen liefert
welche Auskunft über das Vorzeichen einer Zahl gibt
welche den Absolutbetrag einer Zahl liefert
zu implementieren, die Funktion
sgn
sei hier als Beispiel ohne ternären Operator angege-
ben.
public static int sgn(int num) {
if(num < 0)
return -1;
return 1;
}
b) Versuche folgenden Quelltext unter Benutzung dieser Funktionen möglichst verständlich
umzuschreiben.
int a, min;
// ...
if(a > 0) {
a = a + (a < min ? min : a);
}
else {
a = a + (-a < min ? min : -a);
}
Aufgabe 4: Gegeben sei folgendes Java-Programm:
import java.io.*;
public class Mystery {
public static int mystery(int m, int n) {
if (m < n) {
int t = m;
m = n;
n = t;
}
int r = m % n;
if (r == 0) {
return n;
} else {
return mystery(n, r);
Computergestütztes Experimentieren in der Kognitionspsychologie
4. Aufgabenblatt
}
3 von 3
}
}
public static void main(String[] args) {
System.out.println(mystery(10,5));
System.out.println(mystery(100,7));
System.out.println(mystery(13,65));
}
Versuche bitte folgende Fragen zu beantworten.
a) Welche Ausgabe produziert dieses Programm?
b) Was berechnet die Funktion
mystery?
c) Schreibe eine Funktion ohne Rekursion, also mit einer Schleife, die dasselbe berechnet.
Viel Erfolg, Stefan!
Herunterladen