====== Übungen ====== ==== 0. Programmgerüst ==== Mit diesem Programmgerüst können Sie die folgenden Aufgaben bearbeiten: package test2; public class Uebung { public static void main(String[] args) { new Uebung().start(); } public void start(){ System.out.println("So kann man etwas ausgeben!"); // Hier kommt der Programmcode rein } } ==== Aufgabe 1 (Programme ohne Arrays) ==== **a) Schreiben Sie ein Programm, das in den zwei Variablen x und y die Werte 7 und -20 speichert, deren Summe berechnet und ausgibt!** \\ int x = 7; int y = -20; int summe = x + y; System.out.println(summe); **b) Erweitern Sie das Programm so, dass die Werte von x und y vertauscht und dann ausgegeben werden! \\ **Tipp: Sie benötigen eine dritte Variable… \\ int x = 7; int y = -20; int z = x; x = y; y = z; System.out.println("X: " + x + ", Y: " + y); **c) Schreiben Sie ein Programm, das die Zahlen von 1 bis 100 ausgibt!** \\ int i = 1; while(i <= 100){ System.out.println(i); i++; } **d) Schreiben Sei eine Methode mittelwert, die zwei Dezimalzahlen a, b entgegennimmt und deren Mittelwert zurückgibt!** \\ public class Uebung1 { public static void main(String[] args) { new Uebung1().start(); } private void start() { // Test der Funktion mittelwert double m = mittelwert(5, 11) System.out.println(m); } private double mittelwert(double a, double b) { return (a + b)/2; } } **e) Schreiben Sie eine Methode, die zwei ganze Zahlen start, ende entgegennimmt und die Summe start + (start + 1) + (start + 2) + … + ende zurückliefert!** \\ public class Uebung1 { public static void main(String[] args) { new Uebung1().start(); } private void start() { // Test der Funktion summeStartBisEnde double m = summeStartBisEnde(5, 20); System.out.println(m); } private int summeStartBisEnde(int start, int ende) { int summe = 0; int i = start; while(i <= ende){ summe = summe + i; // Es geht auch summe += i; i++; } return summe; } } **f) Ergänzen Sie die Methode so, dass sie auch funktioniert, wenn ende < start ist. In diesem Fall soll sie die Summe ende + (ende + 1) + … + start zurückliefern!** \\ public class Uebung1 { public static void main(String[] args) { new Uebung1().start(); } private void start() { // Test der Funktion summeStartBisEnde double m = summeStartBisEnde(5, 20); System.out.println(m); } private int summeStartBisEnde(int start, int ende) { if(start > ende){ int z = ende; ende = start; start = z; } int summe = 0; int i = start; while(i <= ende){ summe = summe + i; // Es geht auch summe += i; i++; } return summe; } } **g) Schreiben Sie eine Methode, die die Koordinaten x und y eines Punktes entgegennimmt und seinen Abstand zum Ursprung des Koordinatensystems zurückliefert!** \\ **Tipp: Die Funktion Math.sqrt berechnet die Wurzel einer Dezimalzahl.** \\ public class Uebung1 { public static void main(String[] args) { new Uebung1().start(); } private void start() { double m = abstandVomUrsprung(3, 4); System.out.println(m); } private double abstandVomUrsprung(double x, double y){ return Math.sqrt(x*x + y*y); } } ==== Aufgabe 2 (Programme mit Arrays) ==== **a) Schreiben Sie ein Programm, das ein Integer-Array der Länge 20 instanziert und mit Zufallszahlen von 0 bis 100 belegt!** \\ **Tipp: (int)(Math.random()*101) gibt eine entsprechende Zufallszahl zurück.** \\ **b) Erweitern Sie das Programm so, dass es die Liste auf dem Bildschirm ausgibt!** \\ **c) Erweitern Sie das Programm so, dass es die größte der Zahlen sucht und ausgibt!** \\ **d) Erweitern Sie das Programm so, dass es den Mittelwert der Zahlen berechnet und ausgibt!** \\ public class Aufgabe2 { public static void main(String[] args) { new Aufgabe2().start(); } private void start() { int[] feld = new int[20]; feldBelegen(feld); feldAusgeben(feld); int größteZahl = sucheGrößte(feld); System.out.println("Größte Zahl im Feld: " + größteZahl); double mittelwert = berechneMittelwert(feld); System.out.println("Mittelwert: " + mittelwert); } private double berechneMittelwert(int[] feld) { int summe = 0; // Kleinste mögliche int-Zahl int i = 0; while (i < feld.length) { summe = summe + feld[i]; i++; } return (double) summe / feld.length; } private int sucheGrößte(int[] feld) { int max = Integer.MIN_VALUE; // Kleinste mögliche int-Zahl int i = 0; while (i < feld.length) { if (feld[i] > max) { max = feld[i]; } i++; } return max; } private void feldAusgeben(int[] feld) { int i = 0; while (i < feld.length) { System.out.print(feld[i] + ", "); i++; } System.out.println(); } private void feldBelegen(int[] feld) { int i = 0; while (i < feld.length) { feld[i] = (int) (Math.random() * 101); i++; } } } ==== Aufgabe 3 (Bubblesort) ==== **a) Erweitern Sie das Programm aus Aufgabe 2 so, dass es die Liste sortiert und dann ausgibt!** \\ Tipp: Siehe http:%%//%%de.wikipedia.org/wiki/Bubblesort \\ public class Aufgabe2 { public static void main(String[] args) { new Aufgabe2().start(); } private void start() { int[] feld = new int[20]; feldBelegen(feld); feldAusgeben(feld); sortieren(feld); feldAusgeben(feld); } private void sortieren(int[] feld){ boolean fertig = false; while(!fertig) { fertig = true; int i = 0; while (i < feld.length - 1) { if (feld[i] > feld[i + 1]) { int z = feld[i]; feld[i] = feld[i + 1]; feld[i + 1] = z; fertig = false; } i++; } } } private void feldAusgeben(int[] feld) { int i = 0; while (i < feld.length) { System.out.print(feld[i] + ", "); i++; } System.out.println(); } private void feldBelegen(int[] feld) { int i = 0; while (i < feld.length) { feld[i] = (int) (Math.random() * 101); i++; } } }