|
|
| (5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
| Zeile 1: |
Zeile 1: |
| == Zeitlicher Ablauf ==
| | '''Wir wünschen euch schöne Ferien. Genießt die freie Zeit und nützt diese auch zum programmieren üben!''' |
| 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
| | {{TOC limit|4}} |
| 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 == | | === Aufgabe: Selbstkontrolle === |
| | '''Die Selbstkontrolle, diese solltet ihr bearbeiten und ist eine gute Wiederholung''' |
|
| |
|
| | [[DCV_2024_09/Selbstkontrolle_Strukturierte_Programmierung|Selbstkontrolle]] |
|
| |
|
| | === Aufgabe: Wiederholung Objektorientierte Programmierung === |
| | '''Wiederholung der Klassen Objekte''' |
|
| |
|
| == Schleifen ==
| | [[DCV_2024_09/Selbstkontrolle_Objektorientierte_Programmierung|Wiederholung]] |
|
| |
|
| ==== Aufgabe 1) ====
| |
| Zähle in einer '''for-Schleife''' '''rückwärts''' von '''10''' bis '''inklusive 0''' und gib jede Zahl aus.
| |
|
| |
|
| '''Ausgabe'''
| | === Tipp des Tages: Hackerrank === |
| | Probiert es doch mal aus, macht spaß: https://hackerrank.com |
|
| |
|
| {{BSL|10 9 8 7 6 5 4 3 2 1 0}}
| | === BonusAufgabe: GameOfLife === |
| | [[DCV_2023_03/Strukturierte_Programmierung_Uebungen/Arrays#Aufgabe:_Conways_Game_of_life|Conways Game of life]] |
|
| |
|
| ==== Aufgabe 2) ==== | | === BonusAufgabe: TicTacToe KI === |
| Zähle in einer '''for-Schleife''' von '''-30''' bis '''inklusive 30''' und gib jede Zahl aus die '''ohne Rest''' durch '''3''' teilbar ist.
| | Erweitere [[DCV_2023_03/Strukturierte_Programmierung_Uebungen/Arrays#Aufgabe:_TicTacToe|TicTacToe]], dass gegen den Computer gespielt werden kann. Siehe [https://www.geeksforgeeks.org/minimax-algorithm-in-game-theory-set-3-tic-tac-toe-ai-finding-optimal-move/ MiniMax Algorithmus]. |
|
| |
|
| '''Ausgabe'''
| | === BonusAufgabe: Türme von Hanoi === |
| {{BML|code=
| | Finde eine programmatische Lösung für die [https://de.wikipedia.org/wiki/T%C3%BCrme_von_Hanoi Türme von Hanoi]. |
| -30
| |
| -27
| |
| -24
| |
| ... | |
| 24
| |
| 27
| |
| 30
| |
| }}
| |
|
| |
|
| ==== Aufgabe 3) ====
| | Als Datenstruktur wird ein 2-Dimensionales Array benötigt: |
| 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'''.
| | {{JML|code= |
| | | int[][] hanoi = new int[3][Anzahl Scheiben] |
| '''Ausgabe'''
| |
| | |
| {{BML|code= | |
| 0
| |
| 1
| |
| 2
| |
| 3 | |
| 4
| |
| 5
| |
| 6
| |
| | |
| 7
| |
| | |
| 8
| |
| | |
| 9
| |
| | |
| 10
| |
| }} | | }} |
|
| |
|
| == Methoden ==
| | Jede Scheibe wird durch eine Zahl reprästentiert, die dessen Größe beschreibt. |
| | |
| ==== Aufgabe 1) ====
| |
| Erstelle eine '''Methode''' welche einen {{JSL|String}} und einen {{JSL|int}} Parameter erhält. Der angegebene {{JSL|String}} soll so oft wie beim {{JSL|int}} angegeben, in einer Zeile wiederholt ausgegeben und mit einem '''Whitespace''' getrennt werden.
| |
| | |
| '''Aufruf'''
| |
| | |
| {{JSL|printLineStipple("X", 10);}}
| |
| | |
| '''Ausgabe'''
| |
| | |
| {{BSL|X X X X X X X X X X}}
| |
| | |
| ==== Aufgabe 2) ====
| |
| Erstelle eine '''Methode''' welche einen {{JSL|String}} und einen {{JSL|int}} Parmeter erhält. Der angegebene {{JSL|String}} soll so oft wie beim {{JSL|int}} angegeben in einer '''eigenen''' Zeile wiederholt werden. Trenne die Zeilen zusätzlich durch ein '''Linebreak'''.
| |
| | |
| '''Aufruf'''
| |
| | |
| {{JSL|printRowStipple("X", 3);}}
| |
|
| |
|
| | '''Folgende Methoden werden benötigt''': |
| | * Spielfeld ausgeben |
| | * Spielfeld initialisieren |
| | * hanoiMove(int from, int to, int using, int count) |
| | * count == 1 // direct move |
| | * ansonstens 3 Schritte |
| | * hanoiMove(from, using, to, count - 1) |
| | * hanoiMove(from, to, using, 1) // Wirkliche Bewegung |
| | * hanoiMove(using, to, from, count - 1) |
|
| |
|
| '''Ausgabe''' | | '''Tip:''' [https://de.wikipedia.org/wiki/Fibonacci-Folge Fibonacci] |
|
| |
|
| {{BML|code=
| | === BonusAufgabe: Blackjack === |
| X
| |
|
| |
|
| X
| | Regeln: http://www.hitorstand.net/strategy.php (Wir machen ohne Split) |
|
| |
|
| X}}
| |
|
| |
| ==== Aufgabe 3) ====
| |
| Erstelle eine '''Methode''' welche einen {{JSL|String}} und einen {{JSL|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'''
| |
|
| |
| {{JSL|printStippleL("X", 3);}}
| |
|
| |
| '''Ausgabe'''
| |
|
| |
| {{BML|code=
| |
| X X X
| |
| X
| |
|
| |
| X
| |
|
| |
| X}}
| |
|
| |
| == Input ==
| |
|
| |
|
| |
| ==== Aufgabe 1) ====
| |
| Lies einen {{JSL|String}} vom Benutzer ein (ganze Zeile) und einen {{JSL|int}}. Die Zahl besagt wie oft der {{JSL|String}} ausgegeben werden soll. Wird ein leerer {{JSL|String}} oder eine ungültiger {{JSL|int}} eingegeben, so soll die Eingabe erneut erfolgen.
| |
|
| |
| '''Eingabe'''
| |
| {{BML|code=
| |
| Bitte geben Sie einen Text ein:
| |
| >> Heute wird ein guter Tag
| |
| Wie oft soll der Text ausgegeben werden:
| |
| >> 3
| |
| }}
| |
|
| |
| '''Ausgabe'''
| |
| {{BML|code=
| |
| Heute wird ein guter Tag
| |
| Heute wird ein guter Tag
| |
| Heute wird ein guter Tag
| |
| }}
| |
|
| |
| == Arrays ==
| |
|
| |
| ==== Aufgabe 1) ====
| |
| Erstelle eine '''Methode''' die ein {{JSL|int[]}} als Parameter erhält und das '''erste''' und '''letzte''' Element zu einem {{JSL|String}} zusammenfügt und zurückgibt. Verwende dazu die Beispielarrays in der Klasse und gib das Ergebnis aus.
| |
|
| |
| '''Aufruf'''
| |
|
| |
| {{JSL|System.out.println(getFirstAndLast(arr));}}
| |
|
| |
| '''Ausgabe'''
| |
|
| |
| {{BSL|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 {{JSL|int[]}} berechnet. Teste alle Methoden in der {{JSL|main}} Methode mit allen gegebenen {{JSL|int[]}} der Klasse.
| |
|
| |
| '''Beispiel Aufruf'''
| |
|
| |
| {{JSL|System.out.println("Minimum: " + getMin(arr));}}
| |
|
| |
| '''Beispiel Ausgabe'''
| |
|
| |
| {{BSL|Minimum: 0}}
| |
|
| |
| '''Beispiel Aufruf'''
| |
|
| |
| {{JSL|System.out.println("Maximum: " + getMax(arr));}}
| |
|
| |
| '''Beispiel Ausgabe'''
| |
|
| |
| {{BSL|Maximum: 23}}
| |
|
| |
| ==== Aufgabe 3) ====
| |
| Erstelle eine '''Methode''' welche einen {{JSL|int}} als Parameter nimmt. Diese '''Methode''' soll ein {{JSL|int[]}} erstellen und das {{JSL|int[]}} mit den Zahlen von '''0''' bis '''inklusive der angegebenen Zahl''' befüllen und dann zurückgeben. Teste diese '''Methode''' in der {{JSL|main}} '''Methode''' und gib das Array aus (egal wie, z.b.: Schleife, oder {{JSL|Arrays.toString(...)}})
| |
|
| |
| '''Aufruf'''
| |
| {{JML|code= | | {{JML|code= |
| int[] arr = fillArr(10); | | int[] deck = new int[52]; (initialisiert von 0, 1, 2 bis 51.) |
| //Ausgabe arr}}
| |
| | |
| '''Ausgabe'''
| |
| {{BML|code=
| |
| 0 1 2 3 4 5 6 7 8 9 10 | |
| }} | | }} |
|
| |
|
| ==== Aufgabe 4) ====
| | '''Methoden:''' |
| Sortiere das in der Klasse gegebene {{JSL|int[]}} mit Hilfe von '''Bubblesort''' und gib das Array aus. Ob '''aufsteigend''' oder '''absteigend''' Sortiert bleibt dir überlassen.
| | * Mischen mit swap |
| | | * getColor() auf Basis value / 13 |
| == Kalender ==
| | * getFigure() auf Basis value % 13 |
| | | * getValue() |
| ==== Aufgabe 1) ====
| | * getValueHand() // zB: Summe von 3 Karten |
| Gib mit Hilfe der {{JSL|Calendar}} Api den Wochentag des aktuellen Tages inklusive Datum aus.
| |
| | |
| '''Ausgabe'''
| |
|
| |
|
| {{BSL|DI 19.10.2021}}
| | Strategie für die Bank: Zieht bis < 17 |
|
| |
|
| == String manipulation ==
| | Achte auf eine schöne Ausgabe! |
Wir wünschen euch schöne Ferien. Genießt die freie Zeit und nützt diese auch zum programmieren üben!
Aufgabe: Selbstkontrolle
Die Selbstkontrolle, diese solltet ihr bearbeiten und ist eine gute Wiederholung
Selbstkontrolle
Aufgabe: Wiederholung Objektorientierte Programmierung
Wiederholung der Klassen Objekte
Wiederholung
Tipp des Tages: Hackerrank
Probiert es doch mal aus, macht spaß: https://hackerrank.com
BonusAufgabe: GameOfLife
Conways Game of life
BonusAufgabe: TicTacToe KI
Erweitere TicTacToe, dass gegen den Computer gespielt werden kann. Siehe MiniMax Algorithmus.
BonusAufgabe: Türme von Hanoi
Finde eine programmatische Lösung für die Türme von Hanoi.
Als Datenstruktur wird ein 2-Dimensionales Array benötigt:
int[][] hanoi = new int[3][Anzahl Scheiben]
Jede Scheibe wird durch eine Zahl reprästentiert, die dessen Größe beschreibt.
Folgende Methoden werden benötigt:
- Spielfeld ausgeben
- Spielfeld initialisieren
- hanoiMove(int from, int to, int using, int count)
* count == 1 // direct move
* ansonstens 3 Schritte
* hanoiMove(from, using, to, count - 1)
* hanoiMove(from, to, using, 1) // Wirkliche Bewegung
* hanoiMove(using, to, from, count - 1)
Tip: Fibonacci
BonusAufgabe: Blackjack
Regeln: http://www.hitorstand.net/strategy.php (Wir machen ohne Split)
int[] deck = new int[52]; (initialisiert von 0, 1, 2 bis 51.)
Methoden:
- Mischen mit swap
- getColor() auf Basis value / 13
- getFigure() auf Basis value % 13
- getValue()
- getValueHand() // zB: Summe von 3 Karten
Strategie für die Bank: Zieht bis < 17
Achte auf eine schöne Ausgabe!