DCV 2024 09/Selbstkontrolle Strukturierte Programmierung
Zeitlicher Ablauf
Geschätzte Zeit : 3-4 Stunden. (Das ist nur eine ungefähre Richtlinie, nicht eine zeitliche Vorgabe!)
Lies dir die Aufgaben alle zuerst durch und überlege dir vor dem Coden wie du die Probleme in einzelne Schritte zerlegen und dann behandeln kannst. Versuche so gut du kannst alle Übungen alleine ohne Hilfe zu lösen und notiere dir die Übungen, bei denen du dir schwer getan hast.
Viel Spaß und Erfolg
Schleifen
Aufgabe 1)
Zähle in einer for-Schleife rückwärts von 10 bis inklusive 0 und gib jede Zahl aus.
Ausgabe
10 9 8 7 6 5 4 3 2 1 0
Aufgabe 2)
Zähle in einer for-Schleife von -30 bis inklusive 30 und gib jede Zahl aus die ohne Rest durch 3 teilbar ist.
Ausgabe
-30
-27
-24
...
24
27
30
Aufgabe 3)
Zähle mit Hilfe einer while-Schleife und einer separaten Zählvariable von 0 bis inklusive 10 und gib die Zahlen aus. Wenn die Zahl größer als 5 ist mach 2 Zeilenumbrüche.
Ausgabe
0
1
2
3
4
5
6
7
8
9
10
Methoden
Aufgabe 1)
Erstelle eine Methode welche einen String und einen int Parameter erhält. Der angegebene String soll so oft wie beim int angegeben, in einer Zeile wiederholt ausgegeben und mit einem Whitespace getrennt werden.
Aufruf
printLineStipple("X", 10);
Ausgabe
X X X X X X X X X X
Aufgabe 2)
Erstelle eine Methode welche einen String und einen int Parmeter erhält. Der angegebene String soll so oft wie beim int angegeben in einer eigenen Zeile wiederholt werden. Trenne die Zeilen zusätzlich durch ein Linebreak.
Aufruf
printRowStipple("X", 3);
Ausgabe
X
X
X
Aufgabe 3)
Erstelle eine Methode welche einen String und einen int Parameter erhält. Nun sollen mit diesen beiden Parametern die beiden Methoden aus den vorhergehenden Aufgaben aufgerufen werden. Die Methoden aus den vorhergehenden Aufgaben sollen nicht neu geschrieben werden.
Aufruf
printStippleL("X", 3);
Ausgabe
X X X
X
X
X
Bonus Aufgabe)
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.
- Löse das Problem wie es dir gefällt
- 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...........X
.X.........X.
..X.......X..
...X.....X...
....X...X....
.....X.X.....
......X......
Input
Aufgabe 1)
Lies einen String vom Benutzer ein (ganze Zeile) und einen int. Die Zahl besagt wie oft der String ausgegeben werden soll. Wird ein leerer String oder eine ungültiger int eingegeben, so soll die Eingabe erneut erfolgen.
Eingabe
Bitte geben Sie einen Text ein:
>> Heute wird ein guter Tag
Wie oft soll der Text ausgegeben werden:
>> 3
Ausgabe
Heute wird ein guter Tag
Heute wird ein guter Tag
Heute wird ein guter Tag
Aufgabe 2)
Es soll eine beliebige Zahl zwischen 0 und 100 mittels new Random().nextInt(...) gewählt werden. Nun soll die Zahl durch Eingabe über die Konsole erraten werden. Ist die Zahl zu hoch oder zu niedrig, so soll diese Information ausgegeben werden. Wurde die Zahl getroffen, so ist das Spiel gewonnen und das Programm wird beendet.
Wird keine Zahl eingegeben so darf das Programm nicht abstürzen und es soll erneut nach einer Zahl gefragt werden.
Ausgabe
Willkommen beim super coolen Zahlen Ratespiel!
Errate die Zahl zwischen 0 und 100!
Gib die Zahl nun ein:
>>>4
Die Zahl ist zu niedrig!
>>>90
Die Zahl ist zu hoch!
>>>30
Die Zahl ist zu hoch!
>>>15
Du hast gewonnen!!!
Arrays
Aufgabe 1)
Erstelle eine Methode die ein int[] als Parameter erhält und das erste und letzte Element zu einem String zusammenfügt und zurückgibt. Verwende dazu die Beispielarrays in der Klasse und gib das Ergebnis aus.
Aufruf
System.out.println(getFirstAndLast(arr));
Ausgabe
First: 0, last: 10
Aufgabe 2)
Ertelle jeweils eine Methode für Minimum (min), Maximum (max), und Durchschnitt (avg), welche den jeweiligen Wert für ein übergebenes int[] berechnet. Teste alle Methoden in der main Methode mit allen gegebenen int[] der Klasse.
Beispiel Aufruf
System.out.println("Minimum: " + getMin(arr));
Beispiel Ausgabe
Minimum: 0
Beispiel Aufruf
System.out.println("Maximum: " + getMax(arr));
Beispiel Ausgabe
Maximum: 23
Aufgabe 3)
Erstelle eine Methode welche einen int als Parameter nimmt. Diese Methode soll ein int[] erstellen und das int[] mit den Zahlen von 0 bis inklusive der angegebenen Zahl befüllen und dann zurückgeben. Teste diese Methode in der main Methode und gib das Array aus (egal wie, z.b.: Schleife, oder Arrays.toString(...))
Aufruf
int[] arr = fillArr(10);
//Ausgabe arr
Ausgabe
0 1 2 3 4 5 6 7 8 9 10
Aufgabe 4)
Sortiere das in der Klasse gegebene int[] mit Hilfe von Bubblesort und gib das Array aus. Ob aufsteigend oder absteigend Sortiert bleibt dir überlassen.
Kalender
Siehe Package: at/digitialcampus/codingcampus/calendar/
Aufgabe 1)
Gib mit Hilfe der Calendar Api den Wochentag des aktuellen Tages inklusive Datum aus.
Ausgabe
DI 19.10.2021
String manipulation (Optional)
Siehe Package: at/digitialcampus/codingcampus/stringmanipulation/
Aufgabe 1)
Ersetze mit Hilfe von regulären Ausdrücken folgendes aus dem in der Klasse gegebenen String. Folgende Aufzählung ist als Ganzes zu betrachten.
- a bis c durch X
- f bis z durch Y
- 1 bis 5 durch a
- 4 bis 9 durch b
und gib den String, bei dem alles ersetzt wurde, aus.
Ausgabe
HeYYe deY ab.a0.a0aa YYYd eYY YeYY YYYeY TXY. ZYXY YYXY eY YYYXY YYe eYYeY TeYY, deY aa LeYYe YXYYeYXeY, XXeY dXY YYY dYXY eYXY!
Aufgabe 2)
Erstelle einen regulären Ausdruck der folgendem Sachverhalt entspricht und prüfe diesen in der main Methode. Die Punkte gehören alle zum gleichen regulären Ausdruck und sollen nacheinander zutreffen:
- Drei oder mehr Kleinbuchstaben
- Eine Zahl größer als 0
- Zwei Zahlen
- Ein oder mehr Großbuchstaben
Aufruf "abc100A".matches(regex); Ausgabe true
Aufruf "Abc100A".matches(regex); Ausgabe false
Aufruf "luke010A".matches(regex); Ausgabe false
Aufruf "test101ABCDE".matches(regex); Ausgabe true
Aufruf "test1ABCDE".matches(regex); Ausgabe false
Datenströme (Optional)
Dieses Thema haben wir nicht bearbeitet. Wer trotzdem eine Herausforderung sucht, für den ist das etwas.
Siehe Package: at/digitialcampus/codingcampus/streams/
Die Einlesemethode in allen Aufgaben ist frei wählbar
Aufgabe 1)
Lies die Datei assets/file.txt in einen String ein und gib diesen anschließend aus.
Aufgabe 2)
Lies die Datei assets/file.txt in einen String ein und gib die Anzahl der Worte des String aus.
Aufgabe 3)
Lies die Datei assets/file.txt in einen String ein, zerlege diesen in Worte und sortiere diese mittels Bubblesort lexikographisch (string.compareTo(otherString) und gib das sortierte String[] aus.
Aufgabe 4) Bonus
Sortiere wie in der vorhergehenden Aufgabe. Bei der Ausgabe sollen Wörter nicht mehrfach ausgegeben werden, weiters füge bei jedem Wort die Anzahl der vorkommnisse hinzu.