|
|
| (28 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) |
| Zeile 5: |
Zeile 5: |
|
| |
|
| '''Befindet sich bei einer Aufgabe eine Nummerierung im Inhalt, so sind diese als unterschiedliche Varianten anzusehen. Also eigentlich mehrere Aufgaben. Ihr dürft aber gerne auf bestehenden Code zurückgreifen''' | | '''Befindet sich bei einer Aufgabe eine Nummerierung im Inhalt, so sind diese als unterschiedliche Varianten anzusehen. Also eigentlich mehrere Aufgaben. Ihr dürft aber gerne auf bestehenden Code zurückgreifen''' |
| = Schleifen = | | = [[DCV_2022_03/Strukturierte_Programmierung_Uebungen/Schleifen|Schleifen]] = |
| === Aufgabe: Zählen ===
| |
| Zähle in einer Schleife von '''0''' bis inklusive '''10''' und gib die Zahlen aus.
| |
| # Verwende dazu eine '''for-Schleife'''
| |
| # Verwende dazu eine '''while-Schleife''' und erstelle eine separate Zählvariable
| |
|
| |
|
| === Aufgabe: Zählen 2 === | | = [[DCV_2022_03/Strukturierte_Programmierung_Uebungen/Methoden_%26_Schleifen|Methoden & Schleifen]] = |
| Zähle in einer Schleife von '''0''' bis exklusive '''10''' und gib die Zählvariable aus.
| |
|
| |
|
| === Aufgabe: Zählen mit Trick === | | = [[DCV_2022_03/Strukturierte_Programmierung_Uebungen/Primitive_Datentypen|Primitive Datentypen]] = |
| Zähle in einer Schleife von '''0 bis inklusive 10''' gib nur jede '''gerade Zahl''' aus.
| |
| # Verwende um zu prüfen ob es eine '''gerade Zahl''' ist den '''Modulo Operator'''
| |
| # Modifiziere die Zählvariable so, dass die Zählvariable nur jede '''gerade Zahlen''' enthält
| |
|
| |
|
| === Aufgabe: Rewind === | | = [[DCV_2022_03/Strukturierte_Programmierung_Uebungen/Input|Input]] = |
| Zähle in einer Schleife '''rückwärts''' von '''10''' bis inklusive '''-10''' und gib die Zählvariable aus.
| |
|
| |
|
| = Methoden & Schleifen = | | = [[DCV_2022_03/Strukturierte_Programmierung_Uebungen/Arrays|Arrays]] = |
| Wähle immer einen '''sinnvollen Methodennamen''' der beschreibt was die Methode macht und überlege dir '''Rückgabewert''' und '''Übergabeparameter''' gut. Teste deine Methoden ausgiebig. Überlege auch immer gut, was du alles in Methoden auslagern kannst. Es macht dir die Übungen leichter.
| |
| Wenn du es als sinnvoll erachtest, greife auf Methoden von anderen Übungen zu (aber schreib sie zumindest einmal selbst).
| |
| === Aufgabe: Print Characters ===
| |
| Erstelle eine Methode die eine bestimmte Anzahl parameterisierbarer Zeichen einer Zeile ausgibt.
| |
|
| |
|
| '''Aufruf:'''
| | = [[DCV_2022_03/Strukturierte_Programmierung_Uebungen/Kalender|Kalender]] = |
|
| |
|
| {{JSL|printChars("x", 10);}}
| | = [[DCV_2022_03/Strukturierte_Programmierung_Uebungen/String_Operationen|String Operationen]] = |
|
| |
|
| '''Ausgabe:'''
| | = [[DCV_2022_03/Strukturierte_Programmierung_Uebungen/Datenströme|Datenströme]] = |
|
| |
|
| {{BSL|xxxxxxxxxx}}
| | = [[DCV_2022_03/Strukturierte_Programmierung_Uebungen/Comma_Separated_Values|'''C'''omma '''S'''eparated '''V'''alue]] = |
| | |
| === Aufgabe: Print Square ===
| |
| Erstelle eine Methode welche ein Quader mit variabler Größe und mit angegebenem Zeichen ausgibt.
| |
| | |
| '''Aufruf:'''
| |
| | |
| {{JSL|printSquare("x", 10);}}
| |
| | |
| '''Ausgabe:'''
| |
| | |
| {{BML|code=
| |
| xxxxxxxxxx
| |
| xxxxxxxxxx
| |
| xxxxxxxxxx
| |
| xxxxxxxxxx
| |
| xxxxxxxxxx
| |
| xxxxxxxxxx
| |
| xxxxxxxxxx
| |
| xxxxxxxxxx
| |
| xxxxxxxxxx
| |
| xxxxxxxxxx
| |
| }}
| |
| | |
| === Aufgabe: Print Rectangle ===
| |
| Erstelle eine Methode welche ein Viereck mit variabler Größe und mit angegebenem Zeichen ausgibt.
| |
| | |
| '''Aufruf:'''
| |
| | |
| {{JSL|printRect("x", 10, 3);}}
| |
| | |
| '''Ausgabe:'''
| |
| | |
| {{BML|code=
| |
| xxxxxxxxxx
| |
| xxxxxxxxxx
| |
| xxxxxxxxxx
| |
| }}
| |
| | |
| === Aufgabe: Print Trinangle (1) ===
| |
| Erstelle eine Methode welche ein Dreieck mit variabler Größe und mit angegebenem Zeichen ausgibt.
| |
| | |
| '''Aufruf:'''
| |
| | |
| {{JSL|printTriangleBottomLeft("x", 4);}}
| |
| | |
| '''Ausgabe:'''
| |
| | |
| {{BML|code=
| |
| x
| |
| xx
| |
| xxx
| |
| xxxx
| |
| }}
| |
| | |
| === Aufgabe: Print Trinangle (2) ===
| |
| Erstelle eine Methode welche ein Dreieck mit variabler Größe und mit angegebenem Zeichen ausgibt.
| |
| | |
| '''Aufruf:'''
| |
| | |
| {{JSL|printTriangleTopLeft("x", 5);}}
| |
| | |
| '''Ausgabe:'''
| |
| | |
| {{BML|code=
| |
| xxxxx
| |
| xxxx
| |
| xxx
| |
| xx
| |
| x
| |
| }}
| |
| | |
| === Aufgabe: Print Trinangle (3) ===
| |
| Erstelle eine Methode welche ein Dreieck mit variabler Größe und mit angegebenem Zeichen ausgibt.
| |
| | |
| '''Aufruf:'''
| |
| | |
| {{JSL|printTriangleTopRight("x", 5);}}
| |
| | |
| '''Ausgabe:'''
| |
| | |
| {{BML|code=
| |
| xxxxx
| |
| xxxx
| |
| xxx
| |
| xx
| |
| x
| |
| }}
| |
| | |
| === Aufgabe: Print Trinangle (4) ===
| |
| Erstelle eine Methode welche ein Dreieck mit variabler Größe und mit angegebenem Zeichen ausgibt.
| |
| | |
| '''Aufruf:'''
| |
| | |
| {{JSL|printTriangleBottomRight("x", 5);}}
| |
| | |
| '''Ausgabe:'''
| |
| | |
| {{BML|code=
| |
| {{NoLine}}
| |
| x
| |
| xx
| |
| xxx
| |
| xxxx
| |
| xxxxx
| |
| }}
| |
| | |
| === Aufgabe: Print Empty Square ===
| |
| Erstelle eine Methode welche ein Quader mit variabler Größe und mit angegebenem Zeichen ausgibt.
| |
| | |
| '''Aufruf:'''
| |
| | |
| {{JSL|printEmptySquare("x", 10);}}
| |
| | |
| '''Ausgabe:'''
| |
| | |
| {{BML|code=
| |
| xxxxxxxxxx
| |
| x x
| |
| x x
| |
| x x
| |
| x x
| |
| x x
| |
| x x
| |
| x x
| |
| x x
| |
| xxxxxxxxxx
| |
| }}
| |
| | |
| '''Aufruf:'''
| |
| | |
| {{JSL|printEmptySquare("A", 3);}}
| |
| | |
| '''Ausgabe:'''
| |
| | |
| {{BML|code=
| |
| 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:'''
| |
| | |
| {{JSL|printSlash("x", 3, true);}}
| |
| | |
| '''Ausgabe:'''
| |
| {{BML|code=
| |
| x
| |
| x
| |
| x
| |
| }}
| |
| | |
| '''Aufruf:'''
| |
| | |
| {{JSL|printSlash("y", 4, false);}}
| |
| | |
| '''Ausgabe:'''
| |
|
| |
| {{Code|lang='bash'|code=
| |
| {{NoLine}}
| |
| 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:'''
| |
| | |
| {{JSL|printTriangle("x", 3);}}
| |
| | |
| '''Ausgabe:'''
| |
| | |
| {{BML|code=
| |
| {{NoLine}}
| |
| x
| |
| x x
| |
| xxxxx
| |
| }}
| |
| | |
| '''Aufruf:'''
| |
| | |
| {{JSL|printTriangle("x", 5);}}
| |
| | |
| '''Ausgabe:'''
| |
| | |
| {{BML|code=
| |
| {{NoLine}}
| |
| x
| |
| x x
| |
| x x
| |
| x x
| |
| xxxxxxxxx
| |
| }}
| |
| | |
| '''Aufruf:'''
| |
| | |
| {{JSL|printTriangle("x", 1);}}
| |
| | |
| '''Ausgabe:'''
| |
| | |
| {{BSL|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.
| |
| # Löse das Problem wie es dir gefällt
| |
| # Löse das Problem mit nur zwei ineinander verschachtelten Schleifen
| |
| | |
| '''Aufruf:'''
| |
| {{JSL|printRhombus("x", 7);}}
| |
| | |
| {{BML|code=
| |
| {{NoLine}}
| |
| 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.
| |
| # Löse das Problem wie es dir gefällt
| |
| # Löse das Problem mit '''nur zwei''' ineinander verschachtelten Schleifen
| |
| | |
| '''Aufruf:'''
| |
| | |
| {{JSL|printX('x', 5);}}
| |
| | |
| '''Ausgabe:'''
| |
| | |
| {{BML|code=
| |
| x x
| |
| x x
| |
| x
| |
| x x
| |
| x x
| |
| }}
| |
| | |
| === Aufgabe: Print Christmastree ===
| |
| Erstelle eine Methode welche einen Christbaum von variabler Größe ausgibt.
| |
| | |
| Teile das Problem in kleinere Probleme auf!
| |
| | |
| '''Aufruf:'''
| |
| | |
| {{JSL|printChristmasTree(9);}}
| |
| | |
| '''Ausgabe:'''
| |
| | |
| {{BML|code=
| |
| {{NoLine}}
| |
| *
| |
| ***
| |
| *****
| |
| *******
| |
| *********
| |
| ***********
| |
| *************
| |
| ***************
| |
| *****************
| |
| O O O O O O O O O
| |
| +++++
| |
| +++++
| |
| }}
| |
| | |
| === '''Bonusaufgabe: Print circle Pythagoras''' ===
| |
| Erstelle eine Methode welche einen ausgefüllten Kreis von variabler Größe ausgibt. Der Radius des Kreises soll als Parameter übergeben werden können.
| |
| | |
| Verwende dazu den Satz des Pythagoras: '''a<sup>2</sup> + b<sup>2</sup> = c<sup>2</sup>'''
| |
| | |
| '''Aufruf:'''
| |
| | |
| {{JSL|printCirclePythagoras(10);}}
| |
| | |
| '''Ausgabe:'''
| |
| Eine Zeile des IntelliJ Terminals ist etwa 2.6 * höher als ein Zeichen breit ist, dadurch sieht die Ausgabe verzerrt aus.
| |
| {{BML|code=
| |
| {{NoLine}}
| |
| XXXXXXXXX
| |
| XXXXXXXXXXX
| |
| XXXXXXXXXXXXXXX
| |
| XXXXXXXXXXXXXXX
| |
| XXXXXXXXXXXXXXXXX
| |
| XXXXXXXXXXXXXXXXXXX
| |
| XXXXXXXXXXXXXXXXXXX
| |
| XXXXXXXXXXXXXXXXXXX
| |
| XXXXXXXXXXXXXXXXXXX
| |
| XXXXXXXXXXXXXXXXXXX
| |
| XXXXXXXXXXXXXXXXXXX
| |
| XXXXXXXXXXXXXXXXXXX
| |
| XXXXXXXXXXXXXXXXXXX
| |
| XXXXXXXXXXXXXXXXXXX
| |
| XXXXXXXXXXXXXXXXX
| |
| XXXXXXXXXXXXXXX
| |
| XXXXXXXXXXXXXXX
| |
| XXXXXXXXXXX
| |
| XXXXXXXXX
| |
| }}
| |
| | |
| === '''Bonusaufgabe: Print circle Sinus + Cosinus''' ===
| |
| Erstelle eine Methode welche einen Kreis von variabler Größe ausgibt. Der Radius des Kreises soll als Parameter übergeben werden können.
| |
| | |
| Verwende dazu {{JSL|Math.sin(...)}} und {{JSL|Math.cos(...)}} um herauszufinden ob ein Punkt gezeichnet werden soll.
| |
| | |
| '''Aufruf:'''
| |
| | |
| {{JSL|printCircleSinCos(10);}}
| |
| | |
| '''Ausgabe:'''
| |
| Eine Zeile des IntelliJ Terminals ist etwa 2.6 * höher als ein Zeichen breit ist, dadurch sieht die Ausgabe verzerrt aus.
| |
| {{BML|code=
| |
| {{NoLine}}
| |
| **********
| |
| ** **
| |
| ** **
| |
| * *
| |
| * *
| |
| ** **
| |
| * *
| |
| * *
| |
| * *
| |
| * *
| |
| * *
| |
| * *
| |
| * *
| |
| * *
| |
| ** **
| |
| * *
| |
| * *
| |
| ** **
| |
| ** **
| |
| **********
| |
| }}
| |
| | |
| = Native Datentypen =
| |
| Im folgenden werden verschiedene Datentypen verwendet. Erstelle wo nötig Methoden um die Komplexität gering zu halten.
| |
| | |
| === Aufgabe: Von 0 bis 100 Zählen mit 0.1 Schritt ===
| |
| Erstelle eine Funktion, die von 0 bis 100 mit 0.1 Schritte zählt, und alle werte Ausdrückt
| |
| (Zwei Lösungsweg ist auch möglich)
| |
| | |
| === Aufgabe: Divide et impera ===
| |
| Schreibe ein Program mit Ergebnis:
| |
| | |
| * 4?
| |
| * Ein drittel von 4?
| |
| * Ein fünftel von 4?
| |
| * Ein siebtel von 4?
| |
| | |
| === Aufgabe: Kalkulation von Pi (Leibniz Reihe) ===
| |
| Rechne die Annäherung von Pi mit der Formel
| |
| π = (4/1) - (4/3) + (4/5) - (4/7) + (4/9) - (4/11) + (4/13) - (4/15) ...
| |
| | |
| (Original aus: https://www.wikihow.com/Calculate-Pi)
| |
| | |
| Benutze double Datentypen.
| |
| | |
| Wie genau ist deine Lösung?
| |
| | |
| === Aufgabe: Kalkulation von Pi (Nilakantha Reihe) ===
| |
| Rechne die Annäherung von Pi mit der Formel
| |
| π = 3 + 4/(2*3*4) - 4/(4*5*6) + 4/(6*7*8) - 4/(8*9*10) + 4/(10*11*12) - 4/(12*13*14)
| |
| | |
| (Original aus: https://www.wikihow.com/Calculate-Pi)
| |
| | |
| Benutze double Datentypen.
| |
| | |
| Wie genau ist deine Lösung?
| |
| | |
| === Aufgabe: Geheime Reihe ===
| |
| | |
| Starte eine neue Reihe mit dem Wert 1.0
| |
| | |
| Für jede weitere Wert<sub>N+1</sub> = Wert<sub>N</sub>/2 + 1/Wert<sub>N</sub>
| |
| | |
| Wohin führt diese Reihe?
| |
| | |
| | |
| === Aufgabe: Ratenspiel ===
| |
| | |
| Schreibe eine Funktion die aus einer Positive Zahl (double) deren Wurzeln annähern kann.
| |
| | |
| Input: eine Zahl von 1 bis 10000 (double)
| |
| | |
| Beim jeden Zyklus nehmen wir die Mitte und versuchen wir als Wurzeln verwenden.
| |
| | |
| Wenn es größer als der Zielzahl ist, nehmen wir die Mitte als MAXIMUM, sonst als neue MINIMUM.
| |
| | |
| Lass eine gute Schätzung auf Wurzeln geben.
| |
| | |
| = 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 {{JSL|Scanners}} einen {{JSL|String}} des Benutzers ein und gib diesen aus.
| |
| | |
| === Aufgabe: Zahl einlesen ===
| |
| Lies mit Hilfe des berühmten {{JSL|Scanners}} einen {{JSL|int}} des Benutzers ein und gib diese aus.
| |
| # Wird keine Zahl eingegeben kann das Programm abstürzen
| |
| # Frag solange nach einer Zahl bis auch eine eingegeben wurde, das Programm darf bei Fehleingabe nicht abstürzen
| |
| | |
| === Aufgabe: Ratespiel ===
| |
| Es soll eine beliebige Zahl zwischen '''0 und 100''' mittels {{JSL|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.
| |
| | |
| '''Ausgabe'''
| |
| | |
| {{BML|code=
| |
| 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!!!
| |
| }}
| |
| | |
| === Aufgabe: Erweitere die frühere Aufgaben mit User Input ===
| |
| Erweitere deine früheren Lösungen so, dass die Parameter über die Konsole eingegeben werden können.
| |
| | |
| | |
| === Aufgabe: Taschenrechner ===
| |
| Erstelle einen Taschenrechner. Lies mit Hilfe berühmten {{JSL|Scanners}} vom Benutzer zuerst einen {{JSL|float}} ein, dann den Operator (+,-,*,^,/), dann wieder einen {{JSL|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 (Code Review) ===
| |
| Mach ein Code Review mit einem von deinen Kollegen, identifiziere Verbesserungspotentiale (z.B. Code-Duplikate zu eliminieren)
| |
| | |
| === 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.
| |
| | |
| === '''Bonusaufgabe: Taschenrechner weiterrechnen''' ===
| |
| Erweiter deinen Taschenrechner mit der Funktion, um das Zwischenergebnis weiterverwenden zu können
| |
| | |
| Zum Beispiel:
| |
| | |
| {{JSL|3}}
| |
| | |
| {{JSL|+}}
| |
| | |
| {{JSL|2}} (Ergebnis: 5)
| |
| | |
| {{JSL|*}}
| |
| | |
| {{JSL|4}} (Ergebnis: 20)
| |
| | |
| {{JSL|/}}
| |
| | |
| {{JSL|40}} (Ergebnis: 0.5)
| |
| | |
| | |
| === '''Bonusaufgabe: Taschenrechner mit Memory Funktion''' ===
| |
| Erweiter deinen Taschenrechner mit der Memory Funktion.
| |
| | |
| Neue Operationen sind:
| |
| | |
| {{JSL|MC}} Memory Clear
| |
| | |
| {{JSL|M+}} Memory Add
| |
| | |
| {{JSL|M-}} Memory Sub
| |
| | |
| {{JSL|MR}} Memory Read
| |
| | |
| Die erwartete Funktion ist identisch mit dem normalen Taschenrechner
| |
| | |
| = Arrays =
| |
| Im folgenden finden sich Aufgaben für Arrays und deren Sortierung.
| |
| === Aufgabe: Random Number Array ===
| |
| Erstelle ein {{JSL|int[]}} und befülle es mit Zufallszahlen von '''0''' bis '''100'''.
| |
| {{JML|code=
| |
| Random random new Random();
| |
| ...
| |
| int randomNumber random.nextInt([Upper bound]);
| |
| }}
| |
| # Gib es mit Hilfe einer '''foreach-Schleife''' aus.
| |
| # Gib den zweiten, fünften und zehnten Wert des Arrays aus.
| |
| # Gib jeden zweiten Wert des {{JSL|int[]}} mit Hilfe einer '''Schleife''' aus aus.
| |
| | |
| === Aufgabe: Random Number Array Crazy Range ===
| |
| Erstelle ein {{JSL|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 {{JSL|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 {{JSL|main}} Methode Rufe die Methoden mit den Zufallszahlen auf und gib diese aus.
| |
| | |
| === Aufgabe: Bubblesort mit Zahlen ===
| |
| Erstelle ein {{JSL|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 {{JSL|main}} Methode.
| |
| # Sortiere der Größe nach aufsteigend (Ascending)
| |
| # Sortiere der Größe nach absteigend (Descending)
| |
| | |
| === Aufgabe: Bubblesort mit Strings ===
| |
| Verwende das gegebene {{JSL|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 {{JSL|main}} Methode.
| |
| # Sortiere die Namen aufsteigend (Ascending)
| |
| # Sortiere die Namen absteigend (Descending)
| |
| Tip.: Strings können mit der Instanz Methode {{JSL|compareTo}} der {{JSL|String}} Klasse verglichen werden: {{JSL|"a".compareTo("b")}}
| |
| {{JML|code=
| |
| 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 {{JSL|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 {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|boolean}} als Parameter erhalten. Dieser {{JSL|boolean}} entscheidet, ob das {{JSL|String[]}} '''aufsteigend''', oder '''absteigend''' sortiert wird.
| |
| | |
| === Aufgabe: Bubblesort mit Strings an Character Index ===
| |
| Verwende das aus der vorhergehenden Aufgabe gegebene {{JSL|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 {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|int}} als Parameter erhalten. Dieser {{JSL|int}} steht für den Index des {{JSL|char}} im {{JSL|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 Funktionen der {{JSL|Calendar}} Api erlernt werden.
| |
| | |
| === Aufgabe: Wann ist Sonntag? ===
| |
| Erstelle eine neue {{JSL|Calendar}} Instanz und gib das Datum des nächsten '''Sonntags''' aus.
| |
| | |
| === Aufgabe: Wieviele Sonntage hat der Monat? ===
| |
| Erstelle eine Methode welche als Parameter das Jahr und den Monat nimmt und die Anzahl der '''Sonntage''' zurückgibt. Teste diese Methode in der {{JSL|main}} Methode. Wie dieses Problem gelöst wird, steht dir völlig frei.
| |
| | |
| '''Aufruf:'''
| |
| | |
| {{JSL|System.out.println(getSundays(2021, 10));}}
| |
| | |
| '''Ausgabe:'''
| |
| | |
| {{BSL|5}}
| |
| | |
| '''Aufruf:'''
| |
| | |
| {{JSL|System.out.println(getWorkdays(2021, 9));}}
| |
| | |
| '''Ausgabe:'''
| |
| | |
| {{BSL|4}}
| |
| | |
| === Aufgabe: Wieviele Arbeitstage? ===
| |
| Erstelle eine Methode welche als Parameter das Jahr und den Monat nimmt und die Anzahl der '''Arbeitstage''' zurückgibt (Mo-Fr). Teste diese Methode in der {{JSL|main}} Methode. Wie dieses Problem gelöst wird, steht dir völlig frei.
| |
| | |
| '''Aufruf:'''
| |
| | |
| {{JSL|System.out.println(getWorkdays(2021, 6));}}
| |
| | |
| '''Ausgabe:'''
| |
| | |
| {{BSL|22}}
| |
| | |
| '''Aufruf:'''
| |
| | |
| {{JSL|System.out.println(getWorkdays(2021, 3));}}
| |
| | |
| '''Ausgabe:'''
| |
| | |
| {{BSL|23}}
| |
| | |
| '''Aufruf:'''
| |
| | |
| {{JSL|System.out.println(getWorkdays(2021, 2));}}
| |
| | |
| '''Ausgabe:'''
| |
| | |
| {{BSL|20}}
| |
| | |
| = String Operationen =
| |
| Im folgenden sollen die {{JSL|String}} Operationen {{JSL|replaceAll(...)}}, {{JSL|matches(...)}}, {{JSL|split(...)}} erarbeitet werden.
| |
| | |
| === Aufgabe: Email Regex aka. Regbert ===
| |
| Erstelle einen '''regulären Ausdruck''' ('''Reg'''ular '''Ex'''pression) für Email Adressen.
| |
| | |
| {{JML|code=
| |
| String regex = "[richtiger Regex hier]";
| |
| }}
| |
| | |
| '''Aufruf'''{{Space10}}{{JSL|System.out.println("alfons@drlue.at".matches(regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|true}}
| |
| | |
| '''Aufruf'''{{Space10}}{{JSL|System.out.println("rambina.alfons@drlue.at".matches(regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|true}}
| |
| | |
| '''Aufruf'''{{Space10}}{{JSL|System.out.println("rambina1.1alfons@drlue.at".matches(regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|true}}
| |
| | |
| '''Aufruf'''{{Space10}}{{JSL|System.out.println("1rambina1.alfons@drlue.at".matches(regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|false}}
| |
| | |
| '''Aufruf'''{{Space10}}{{JSL|System.out.println("@drlue.at".matches(regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|false}}
| |
| | |
| '''Aufruf'''{{Space10}}{{JSL|System.out.println("drlue.at".matches(regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|false}}
| |
| | |
| '''Aufruf'''{{Space10}}{{JSL|System.out.println("asdf@drlue".matches(regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|false}}
| |
| | |
| '''Aufruf'''{{Space10}}{{JSL|System.out.println("asdf@microsoft.c".matches(regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|false}}
| |
| | |
| === Aufgabe: Replace all ===
| |
| Ersetze im {{JSL|String}}
| |
| | |
| {{JSL|"Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!"}}
| |
| | |
| '''wird''' durch '''war und ist''' und gib ihn aus.
| |
| | |
| === Aufgabe: Replace all 2 ===
| |
| Lösche im {{JSL|String}}
| |
| | |
| {{JSL|"Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!"}}
| |
| | |
| # Jeden '''Kleinbuchstaben''' und gib ihn aus
| |
| # Jeden '''Großbuchstaben''' und gib ihn aus
| |
| # Jedes '''Leerzeichen''' und gib ihn aus
| |
| # Jedes '''Ausrufezeichen !''' und gib ihn aus
| |
| | |
| === Aufgabe: Replace all 3 ===
| |
| Lösche im {{JSL|String}}
| |
| | |
| {{JSL|"749813247132984712039487123049871204398712039487"}}
| |
| | |
| # Alle Zahlen von '''0 bis 9''' und gib ihn aus
| |
| # Alle Zahlen von '''1 bis 9''' und gib ihn aus
| |
| # Alle Zahlen von '''2 bis 4''' und gib ihn aus
| |
| # Alle Zahlen von '''1 bis 3''' und '''6 bis 9''' und gib ihn aus
| |
| | |
| === Aufgabe: Split ===
| |
| Erstelle eine Methode welche den {{JSL|String}}
| |
| | |
| {{JSL|"Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!"}}
| |
| | |
| mit Hilfe eines gegebenen Strings zerlegt, welcher als Parameter mitgegeben wird und den das {{JSL|String[]}} zurückgibt. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen füge jedoch nach jedem {{JSL|append}} auch einen {{JSL|System.lineSeparator()}} hinzu. Gib dann den {{JSL|String}} den du vom {{JSL|StringBuilder}} erhältst aus. Teste deine Methode in der {{JSL|main}} Methode mit einigen Beispielen.
| |
| | |
| '''Aufruf'''
| |
| | |
| {{JML|code=
| |
| String[] words = wordSplit(text, "Tag");
| |
| ...
| |
| }}
| |
| | |
| '''Ausgabe'''
| |
| | |
| {{BML|code=
| |
| Heute wird ein guter
| |
| ! Heute wird der beste
| |
| überhaupt! Heute wird ein spitzen super
| |
| !
| |
| }}
| |
| | |
| === Aufgabe: Split & Sort ===
| |
| Erstelle eine Methode welche den {{JSL|String}}
| |
| | |
| {{JSL|"Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!"}}
| |
| | |
| in seine Worte zerlegt. Sortiere dann die Worte mit '''Bubblesort'''. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen gib dann den {{JSL|String}}, den du von {{JSL|StringBuilder}} erhältst aus.
| |
| | |
| = Datenströme =
| |
| Im folgenden geht es um das einlesen und verarbeiten von Textdateien. Erstelle wo möglich und nötig für die einzelnen Schritte eine eigene Methode. Verwende dazu die Datei '''file.txt''' im '''assets''' Ordner.
| |
| {{JML|code=
| |
| String path = "assets/file.txt";
| |
| }}
| |
| | |
| === Aufgabe: File einlesen und Ausgeben ===
| |
| Lies das '''File''' mit hilfe von {{JSL|Scanner}} oder {{JSL|BufferedRead}} ein und gib es aus.
| |
| | |
| === Aufgabe: Buchstaben zählen ===
| |
| Lies das '''File''' mit hilfe von {{JSL|Scanner}} oder {{JSL|BufferedRead}} ein.
| |
| # Gib die Anzahl der Buchstaben aus
| |
| # Erstelle eine Methode welche nur einen bestimmten Buchstaben des Texts zählt, welcher als Parameter mitgegeben wird.
| |
| # Erstelle eine Methode welche ein {{JSL|char[]}} von Bestimmten Buchstaben des Texts zählt. Das {{JSL|char[]}} soll als Parameter mitgegeben werden können. Es soll nur die Gesamtzahl aller Vorkommnisse der Buchstaben gezählt werden. Wie oft ein einzelner Buchstabe vorkommt ist hier uninteressant.
| |
| | |
| '''Tip zu 2)'''
| |
| | |
| {{JSL|System.out.println(countChar(text, 'a'));}}
| |
| | |
| '''Tip zu 3)'''
| |
| | |
| {{JML|code=
| |
| char[] charsToCount = new char[]{'a', 'z', 'e'};
| |
| System.out.println(countChars(text, charsToCount));
| |
| }}
| |
| | |
| === Aufgabe: Wörter zählen ===
| |
| Lies das '''File''' mit Hilfe von {{JSL|Scanner}} oder {{JSL|BufferedRead}} ein. Und gib die Anzahl der Wörter aus. Es muss nicht exakt sein.
| |
| | |
| === Aufgabe: Dynamisches Wörter zählen ===
| |
| Lies das '''File''' mit Hilfe von {{JSL|Scanner}} oder {{JSL|BufferedRead}} ein. Frage den Benutzer nach einem '''bestimmten Wort''' und gib aus wie oft es vorkommt.
| |
| | |
| === Aufgabe: Dynamisches Wörter ersetzen ===
| |
| Lies das '''File''' mit Hilfe von {{JSL|Scanner}} oder {{JSL|BufferedRead}} ein. Frage den Benutzer nach '''zwei Wörtern'''. Das '''erste Wort''' soll durch das '''zweite Wort''' im Text ersetzt werden. Gib dannach den Text aus.
| |
| | |
| === Aufgabe: File schreiben ===
| |
| Lies solange eingaben vom Benutzer, bis eine Leerzeile eingegeben wird. Dann schreibe die Eingaben in eine Datei. Der Pfad soll lauten '''assets/tmp/output.txt'''.
| |
| | |
| = '''C'''omma '''S'''eparated '''V'''alue =
| |
| CSV Dateien sind strukturierte Textdateien, die durch einen Separator (z.B.: ,) getrennt sind.
| |
| === Aufgabe: Read and Display ===
| |
| Lies die CSV Datei '''assets/sales_100.csv''' ein und speichere diese in einem {{JSL|String}}. Zerlege den {{JSL|String}} zuerst nach Zeilen, dann nach Spalten und erstelle somit ein {{JSL|String[][]}}, ein '''zweidimensionales Array'''. Gib nun mit Hilfe des {{JSL|String[][]}}, die Daten schön formatiert aus.
| |
| | |
| === Aufgabe: Read and Display optimiert ===
| |
| Verarbeite die CSV Datei wie in der vorhergehenden Aufgabe. Für die Ausgabe finde zuerst die optimale Spaltenbreite für jede Spalte.
| |
| | |
| === Aufgabe: Read and Display sortiert ===
| |
| Verarbeite die CSV Datei wie in den vorhergehenden Aufgaben. Weiters erfrage vom Benutzer nach welcher Spalte die Datei sortiert werden soll. Suche nach der Eingabe zuerst nach der gewünschten Spalte. Ist diese vorhanden, sortiere das {{JSL|String[][]}} '''lexikografisch''' und gib es aus.
| |
| '''Achtung''' der Header darf nicht sortiert werden!!! '''Achtung'''
| |
| | |
| === Aufgabe: Read and Display sortiert extended ===
| |
| Verfahre wie in der vorhergehenden Aufgabe. Handelt es sich bei dem Inhalt einer Spalte um '''Zahlen''' so behandle diese auch als solche.
| |
| | |
| Tip: {{JSL|Float.parseFloat(...)}}, {{JSL|Integer.parseInt(...)}}
| |
| | |
| === Aufgabe: Read and Write ===
| |
| Lies und verarbeite die CSV Datei wie in vorhergehender [[Strukturierte_Programmierung_Uebungen#Aufgabe:_Read_and_Display|Aufgabe]] ein. Schreib das {{JSL|String[][]}} als CSV nun in eine neue Datei. Verwende als Separator (Trennzeichen) {{BSL|;}}.
| |