Aufgabe 1
Implementieren Sie ein Java (Konsolenprogramm), welches zwei Werte a und b einliest und danach:
- die Summe,
- das Produkt
- den Quotienten
- das Maximum
- den Mittelwert
dieser Zahlen bestimmt und ausgibt.
Implementieren Sie das Programm einmal, indem Sie Methoden ohne Rückgabewert nutzen und einmal, indem Sie Methoden mit Rückgabewert verwenden. Im ersten Fall sollen die Ergebnisse also innerhalb der Methoden ausgegeben werden, im zweiten in der Hauptmethode main.
Aufgabe 2
Implementieren Sie jeweils ein Java-Programm, welches für eine eingegebene Zahl die Quersumme, die Anzahl der Ziffern der Zahl und die Fakultät der Zahl bestimmt.
Verwenden Sie für die Bestimmung der Werte Methoden mit Rückgabewert, d.h. die Ergebnisse sollen in der main-Methode ausgegeben werden.
Aufgabe 3
Analysieren Sie die gegebenen Quelltexte.
- Wie wird der Code abgearbeitet?
- Was wird das Programm ausgeben?
- Programmieren Sie die Programme nach und testen Sie Ihre Vermutungen.
public class Print {
public static void main(String[] arguments) {
print(1, "Martin");
print(2, "Arthur");
print(3, "Florian");
print(4, "Robert");
}
public static void print(int zahl, String name) {
System.out.println(zahl + ": " + name);
}
}
public class ReturnDouble {
public static void main(String[] arguments) {
System.out.println(gibMirNeZahl());
}
public static double gibMirNeZahl() {
return 15.3;
}
}
public class ReturnBoolean {
public static void main(String[] arguments) {
System.out.println(mathematik(1, 2));
System.out.println(mathematik(1, 5));
System.out.println(mathematik(3, 4));
}
public static boolean mathematik(int argument1, int argument2) {
return (argument1 + 5) < (argument2 * 2);
}
}
public class ReturnInt {
public static void main(String[] arguments) {
System.out.println("2 + 7 = " + add(2, 7));
System.out.println("0 + 8 = " + add(0, 8));
System.out.println("-7 + 7 = " + add(-7, 7));
}
public static int add(int int1, int int2) {
return int1 + int2;
}
}
Aufgabe 4
Implementieren Sie ein Java-Konsolenprogramm, welches für eingegebene Werte für drei Kanten eines Quaders
- das Volumen,
- die Oberfläche und
- die Länge der Raumdiagonale
berechnet.
Verwenden Sie in Ihrem Java-Programm für das Berechnen der Werte jeweils Methoden mit Rückgabewerten.
Aufgabe 5
Ein kleines Programm für das 1×1 ist gesucht. Es soll also das kleine 1×1 in der Form ausgegeben werden:
1 x 1 = 1
2 x 1 = 2
...
10 x 9 = 90
10 x 10 = 100
Aufgabe 6
Implementieren Sie ein Programm mit der Methode aufzinsen(…). Als Argumente sollen das Grundkapital, der Zinssatz und die Anzahl der Jahre angegeben werden. Die Methode gibt das Kapital (Grundkapital+Zinsen) nach den angegebenen Jahren zurück. Testen Sie die Methode mit einer geeigneten main-Methode.
Potenzieren können Sie in Java (hier) mit der vorhandene Methode
double c = Math.pow(double a, double b)
Aufgabe 7
public class Zins {
public static void berechneZins(int jahre, double kapital) {
double zins;
for (int i = 1; i < jahre; i--)
zins = kapital * 0.05
kapital = kapital + zins;
System.out.println("Das Kapital beträgt " + kapital + "€");
}
public static void main(String[] args) {
double kapital;
int jahre;
Scanner sc = new Scanner(System.in);
System.out.println("Geben Sie das Startkapital ein (in €): ");
kapital = sc.nextInt();
berechneZins(kapital);
}
}
- Der gegebene Quelltext enthält mehrere syntaktische und logische Fehler. Finden Sie diese Fehler. Implementieren Sie das Zinsprogramm in intelliJ und testen Sie, ob es fehlerfrei funktioniert.
- Wandeln Sie die dargestellt Schleifenart in eine anfangsgeprüfte Schleife um.
- Der Quelltext beschreibt einen Algorithmus aus der Zinsrechnung, der innerhalb einer Methode ohne Rückgabewert abläuft und dort auch das Ergebnis ausgibt. Wandeln Sie das Programm so um, dass die Ausgabe des Ergebnisses in der Hauptmethode main erfolgt.
- Ändern Sie das Programm so ab, dass auch die Eingabe der Jahre und des (ganzzahligen) Startkapitals in einer Methode erfolgt … in EINER Methode erfolgt, die daher zweimal aufgerufen werden muss.
Aufgabe 8 (Zahlensysteme I)
Wir rechnen für gewöhnlich im Dezimalsystem, also einem System mit 10 Zahlzeichen 0,…,9. Ab der Zahl 10 werden dann alle höheren Zahlen als Kombination mehrerer dieser Zahlzeichen geschrieben. Natürlich ist dies nur eine Vereinbarung, und man könnte genausogut mit jeder anderen Anzahl von Ziffern rechnen. Hat man zum Beispiel nur zwei Ziffern 0 und 1 zur Verfügung, so kann man mit diesen auch sämtliche Zahlen darstellen. Allerdings müßte man die „2“ aus unserem Zehnersystem dann als „10“ darstellen, da sie die erste Zahl ist, die nicht mehr nur durch eine einzelne Ziffer dargestellt werden kann … diese Darstellung kennen wir schon als Dualsystem.
Wie rechnet man Zahlen aus dem Dualsystem in das Dezimalsystem um?
Dafür gibt es verschiedene Algorithmen – einer soll im Folgenden beschrieben werden.
In jedem Stellenwertsystem hat eine Ziffer an einer bestimmten Stelle einen entsprechenden Wert. Zum Beispiel hat im Zehnersystem eine „1“ an der zweiten Stelle von rechts immer den Wert 10; in anderen Zahlensystemen kann sie aber einen völlig anderen Wert haben.
Die Werte an den Stellen ermittelt man im System mit n Ziffern folgendermaßen: Die Stelle rechts hat immer den Wert 1*Ziffer, die dort steht. Die zweite Stelle von rechts hat immer den Wert n*Ziffer, die dort steht. Die dritte Stelle von rechts hat den Wert n*n*Ziffer, die vierte den Wert n*n*n*Ziffer etc.
Den Wert der Zahl erhält man dann einfach durch Aufsummieren der so erhaltenen Werte.
Um dies verständlicher zu machen, hier ein Beispiel:
Man möchte „1011“ aus dem Dualsystem in das Zehnersystem umrechnen. Ganz rechts steht eine 1, also hat man dort den Wert 1*1=1. Links daneben steht ebenfalls eine 1, also hat man dort den Wert 2*1=2. Noch weiter links steht eine 0, diese entspricht 2*2*0=0. Ganz links steht eine 1, die 2*2*2*1=8 entspricht.
Also erhält man als Wert im Zehnersystem 8+0+2+1=11.
Programm zum Umwandeln von Dualzahlen in Dezimalzahlen
Implementieren Sie ein Java-Programm, welches Dualzahlen in Dezimalzahlen umwandelt.
Das Programm soll folgende Grundstruktur haben:
import java.util.Scanner;
public class BinDec {
public static int wandleBinInDec(int b) {
...
}
public static void main(String[] args) {
int binaer, dezimal;
Scanner sc = new Scanner(System.in);
System.out.print("Geben Sie eine Binärzahl ein: ");
binaer = sc.nextInt();
dezimal = wandleBinInDec(binaer);
System.out.println("Deziamlzahl: " + dezimal);
}
}
Programm zum Umwandeln von Dezimalzahlen in Dualzahlen
Auch das ist nicht schwer: Man nimmt sich die Zahl, die man umrechnen will, und teilt sie durch die Anzahl Ziffern im Zahlensystem, in diesem Fall 2. Den Divisionsrest notiert man sich als Ziffer und das Divisionsergebnis teilt man erneut. Die einzelnen Ziffern notiert man sich dann von rechts nach links. Dies setzt man so lange fort, bis man am Ende als Divisionsergebnis die 0 erhält.
Auch hier wieder ein Beispiel: Wir wollen 147 in das Dualsystem umrechnen.
147 : 2 = 73 Rest 1, also 1 ist Ziffer ganz rechts.
73 : 2 = 36 Rest 1, also 1 ist nächste Ziffer von rechts.
36 : 2 = 18 Rest 0, also ist die 0 nächste Ziffer.
18 : 2 = 9 Rest 0, also ist die nächste Ziffer wieder eine 0.
9 : 2 = 4 Rest 1, also kommt als nächstes eine 1.
4 : 2 = 2 Rest 0; 2 : 2 = 1 Rest 0 und 1 : 1 = 1 Rest 1
147 hat also im Dualsystem die Darstellung 10010011.
Analalog zum ersten Programm soll nun ein Programm DecBin implementiert werden, welches eine eingegebene Dezimalzahl in eine Binärzahl umwandelt. Ach dies sollwieder in einer extra Methode mit Rückgabewert geschehen.
Aufgabe 9 (Zahlensysteme II – schwierig)
Aus der Aufgabe 8 heraus soll nun ein Javaprogramm implementiert werden, welches jedes beliebige Zahlensystem in jedes andere umwandeln kann.
Dazu sind das Ausgangszahkensystem, das Zielzahlensystem und die umzuwandelnde Zahl einzugeben.
Das Ganze geht natürlich auch direkt, aber wir können auch die beiden Methoden aus Aufgabe 8 nutzen … man wandelt die gegebene Zahl erstmal in Dezimalsystem und dann von dort in das gewünschte Zielsystem um.
Da wir noch nicht mit Strings arbeiten können, können wir nur mit Zahlensystemen bis 10 arbeiten.