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