Inhaltsverzeichnis
Ü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++; } } }