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!