DCV 2024 09/Selbsttest: Unterschied zwischen den Versionen

Aus CCWiki
Zur Navigation springen Zur Suche springen
Sandro (Diskussion | Beiträge)
Sandro (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
 
(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!

Aktuelle Version vom 25. Oktober 2024, 07:18 Uhr

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!