Strukturierte Programmierung Uebungen

Aus CCWiki
Zur Navigation springen Zur Suche springen

Im folgenden finden sich verschiedene Übungsaufgaben für den Bereich der Strukturierten Programmierung in Java. Es müssen nicht alle Aufgaben zur gänze gelöst werden.

Befindet sich bei einer Aufgabe eine Nummerierung im Inhalt, so sind diese als unterschiedliche Varianten anzusehen.

Schleifen

Aufgabe: Zählen

Zähle in einer Schleife von 0 bis inklusive 10 und gib die Zahlen aus.

  1. Verwende dazu eine for-Schleife
  2. Verwende dazu eine while-Schleife und erstelle eine separate Zählvariable

Aufgabe: Zählen 2

Zähle in einer Schleife von 0 bis exklusive 10 und gib die Zählvariable aus.

Aufgabe: Zählen mit Trick

Zähle in einer Schleife von 0 bis inklusive 10 gib nur jede gerade Zahl aus.

  1. Verwende um zu prüfen ob es eine gerade Zahl ist den Modulo Operator
  2. Modifiziere die Zählvariable so, dass die Zählvariable nur jede gerade Zahlen enthält

Aufgabe: Rewind

Zähle in einer Schleife rückwärts von 10 bis inklusive -10 und gib die Zählvariable aus.

Methoden & Schleifen

Wähle immer einen sinnvollen Methodennamen der beschreibt was die Methode macht und überlege dir Rückgabewert und Übergabeparameter gut. Teste deine Methoden ausgiebig. Wenn eine Methode mehr als nur einen Zweck erfüllt überlege ob sie in weitere Methoden unterteilt werden kann.

Aufgabe: Print Characters

Erstelle eine Methode die eine bestimmte Anzahl parameterisierbarer Zeichen einer Zeile ausgibt.

Aufruf:

printChars("x", 10);

Ausgabe:

xxxxxxxxxx

Aufgabe: Print Square

Erstelle eine Methode welche ein Quader mit variabler Größe und mit angegebenem Zeichen ausgibt.

Aufruf:

printSquare(10, "x");

Ausgabe:

xxxxxxxxxx
x        x
x        x
x        x        
x        x
x        x
x        x
x        x
x        x
xxxxxxxxxx

Aufruf:

printSquare(3, "A");

Ausgabe:

AAA
A A
AAA

Aufgabe: Print Slash

Erstelle eine Methode welche eine Diagonale von variabler Größe und mit angegebene Zeichen ausgibt, weiters soll der Parameter backslash angegeben werden können. Wenn backslash wahr ist, soll die Diagonale von rechts Unten nach Links Oben gehen, ansonsten umgekehrt.

Aufruf:

printSlash("x", 3, true);

Ausgabe:

x
 x
  x

Aufruf:

printSlash("y", 4, false);

Ausgabe:  

#Diese Zeile gehört nicht zur Ausgabe! Leider verhaut es mir die Formatierung wenn die erste Zeile mit einem Leerzeichen beginnt :-|
   y
  y
 y
y

Aufgabe: Print Triangle

Erstelle eine Methode welche ein Dreick von variabler Größe und mit angegebene Zeichen ausgibt. Dabei sollen die angegebene Größe die Höhe des Dreicks sein. Nimm an dass die Zahl immer Ungerade ist.

Aufruf:

printTriangle("x", 3);

Ausgabe:

#Diese Zeile gehört nicht zur Ausgabe! Leider verhaut es mir die Formatierung wenn die erste Zeile mit einem Leerzeichen beginnt :-|
  x
 x x
xxxxx

Aufruf:

printTriangle("x", 5);

Ausgabe:

#Diese Zeile gehört nicht zur Ausgabe! Leider verhaut es mir die Formatierung wenn die erste Zeile mit einem Leerzeichen beginnt :-|
    x
   x x
  x   x
 x     x
xxxxxxxxx

Aufruf:

printTriangle("x", 1);

Ausgabe:

x

Aufgabe: Print Rhombus

Erstelle eine Methode welche einen Rhombus von variabler Größe und mit angegebene Zeichen ausgibt. Die Größe soll dabei die Höhe des Rhombus sein.

  1. Löse das Problem wie es dir gefällt
  2. Löse das Problem mit nur zwei ineinander verschachtelten Schleifen

Aufruf: printRhombus("x", 7);

#Diese Zeile gehört nicht zur Ausgabe! Leider verhaut es mir die Formatierung wenn die erste Zeile mit einem Leerzeichen beginnt :-|
   x
  x x
 x   x
x     x
 x   x
  x x
   x

Aufgabe: Print X

Erstelle eine Methode welche ein X von variabler Größe und mit angegebene Zeichen ausgibt.

  1. Löse das Problem wie es dir gefällt
  2. Löse das Problem mit nur zwei ineinander verschachtelten Schleifen

Aufruf:

printX('x', 5);

Ausgabe:

x   x
 x x
  x
 x x
x   x

Input

Im folgenden werden verschiedene Aufgaben zum Lesen von Userinput gestellt. Erstelle wo nötig Methoden um die Komplexität gering zu halten.

Aufgabe: String einlesen

Lies mit Hilfe des berühmten Scanners einen String des Benutzers ein und gib diesen aus.

Aufgabe: Zahl einlesen

Lies mit Hilfe des berühmten Scanners einen int des Benutzers ein und gib diese aus.

  1. Wird keine Zahl eingegeben kann das Programm abstürzen
  2. Frag solange nach einer Zahl bis auch eine eingegeben wurde, das Programm darf bei Fehleingabe nicht abstürzen

Aufgabe: Taschenrechner

Erstelle einen Taschenrechner. Lies mit Hilfe berühmten Scanners vom Benutzer zuerst einen float ein, dann den Operator (+,-,*,^,/), dann wieder einen float ein. Nach dem einlesen führe die gewünschte Rechenoperation aus. Bei Fehleingaben egal ob bei den Zahlen oder beim Operator, soll erneut nachgefragt werden.

Aufgabe: Taschenrechner extended

Erweitere den Taschenrechner aus der vorhergehenden Aufgabe so, dass nach der Berechnung nachgefragt wird, ob eine neue Berechnung stattfinden soll, falls nicht, soll das Programm beendet werden.

Errays

Im folgenden finden sich Aufgaben für Arrays und deren Sortierung.

Aufgabe: Random Number Array

Erstelle ein int[] und befülle es mit Zufallszahlen von 0 bis 100.

Random random  new Random();
...
int randomNumber  random.nextInt([Upper bound]);
  1. Gib es mit Hilfe einer foreach-Schleife aus.
  2. Gib den zweiten, fünften und zehnten Wert des Arrays aus.
  3. Gib jeden zweiten Wert des int[] mit Hilfe einer Schleife aus aus.

Aufgabe: Random Number Array Crazy Range

Erstelle ein int[] und befülle es mit Zufallszahlen von -50 bis 50 und gib es mit Hilfe einer foreach-Schleife aus.

Aufgabe: Random Number Array Min/Max/Avg

Erstelle ein int[] und befülle es mit Zufallszahlen von 0 bis 1000. Erstelle jeweils eine Methode für das Minimum, das Maximum und den Durchschnitt. Die Methoden sollen jeweils den Wert zurückgeben (nicht Ausgeben). In der main Methode Rufe die Methoden mit den Zufallszahlen auf und gib diese aus.

Aufgabe: Bubblesort mit Zahlen

Erstelle ein int[] und sortiere es mit einem selbsterstellten Bubblesort Algorithmus und gib es dann aus. Der Bubblesort Algorithmus soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der main Methode.

  1. Sortiere der Größe nach aufsteigend (Ascending)
  2. Sortiere der Größe nach absteigend (Descending)

Aufgabe: Bubblesort mit Strings

Verwende das gegebene String[] und sortiere es mit einem selbsterstellten Bubblesort Algorithmus und gib es dann aus. Der Bubblesort Algorithmus soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der main Methode.

  1. Sortiere die Namen aufsteigend (Ascending)
  2. Sortiere die Namen absteigend (Descending)
Tip.: Strings können mit der Instanz Methode compareTo der String Klasse verglichen werden: "a".compareTo("b")
String[] names  new String[]{"Plamena", "Sadaaq", "Gyula", "Eray", "Gerri", "Stefan", "Lena", "Danny", "Ömer", "Stjepan", "Sandro", "Bartosz", "Ingo", "Rauan", "Mahir", "Lukas", "Niklas"};

Aufgabe: Bubblesort mit Strings Extended

Verwende das aus der vorhergehenden Aufgabe gegebene String[] und sortiere es mit einem selbsterstellten Bubblesort Algorithmus und gib es dann aus. Der Bubblesort Algorithmus soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der main Methode. Die Methode soll nun zusätzlich zum String[] Parameter einen weiteren boolean als Parameter erhalten. Dieser boolean entscheidet, ob das String[] aufsteigend, oder absteigend sortiert wird.

Aufgabe: Bubblesort mit Strings Extended

Verwende das aus der vorhergehenden Aufgabe gegebene String[] und sortiere es mit einem selbsterstellten Bubblesort Algorithmus und gib es dann aus. Der Bubblesort Algorithmus soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der main Methode. Die Methode soll nun zusätzlich zum String[] Parameter einen weiteren int als Parameter erhalten. Dieser int steht für den Index des char im String nach dem sortiert werden soll. Prüfe zuerst ob die Sortierung nach dem gegebenen Index erfolgen kann. Wenn der Index zu groß ist, mach eine entsprechende Ausgabe und sortiere nicht.

Kalender

Im folgenden sollen einige Grundbegriffer der Calendar Api erlernt werden.

Aufgabe: Wann ist Sonntag?

Erstelle eine neue Calendar Instanz und gib das Datum des nächsten Sonntags aus.

Aufgabe: Wieviele Wochenenden

Erstelle eine Methode welche als Parameter das Jahr und den Monat nimmt und die Anzahl der Sonntage zurückgibt. Teste diese Methode in der main Methode.

Aufruf:

System.out.println(getSundays(2021, 10));

Ausgabe:

5

Aufruf:

System.out.println(getSundays(2021, 9));

Ausgabe:

4

String Operationen

Im folgenden sollen die String Operationen replaceAll([regbert]), matches([regbert]), split([regbert]) erarbeitet werden.

Aufgabe: Matches

Aufgabe: Replace all

Aufgabe: Split

Datenströme

Im folgenden geht es um das einlesen und verarbeiten von Textdateien.