DCV 2024 09/Selbsttest: Unterschied zwischen den Versionen

Aus CCWiki
Zur Navigation springen Zur Suche springen
Sandro (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Sandro (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
 
(6 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!'''
08:30 bis 12:30


== Viel Spaß und Erfolg ==
{{TOC limit|4}}


=== Aufgabe: Selbstkontrolle ===
'''Die Selbstkontrolle, diese solltet ihr bearbeiten und ist eine gute Wiederholung'''


[[DCV_2024_09/Selbstkontrolle_Strukturierte_Programmierung|Selbstkontrolle]]


== Schleifen ==
=== Aufgabe: Wiederholung Objektorientierte Programmierung ===
'''Wiederholung der Klassen Objekte'''


==== Aufgabe 1) ====
[[DCV_2024_09/Selbstkontrolle_Objektorientierte_Programmierung|Wiederholung]]
Zähle in einer '''for-Schleife''' '''rückwärts''' von '''10''' bis '''inklusive 0''' und gib jede Zahl aus.


'''Ausgabe'''


{{BSL|10 9 8 7 6 5 4 3 2 1 0}}
=== Tipp des Tages: Hackerrank ===
Probiert es doch mal aus, macht spaß: https://hackerrank.com


==== Aufgabe 2) ====
=== BonusAufgabe: GameOfLife ===
Zähle in einer '''for-Schleife''' von '''-30''' bis '''inklusive 30''' und gib jede Zahl aus die '''ohne Rest''' durch '''3''' teilbar ist.
[[DCV_2023_03/Strukturierte_Programmierung_Uebungen/Arrays#Aufgabe:_Conways_Game_of_life|Conways Game of life]]


'''Ausgabe'''
=== BonusAufgabe: TicTacToe KI ===
{{BML|code=
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].
-30
-27
-24
...
24
27
30
}}


==== Aufgabe 3) ====
=== BonusAufgabe: Türme von Hanoi ===
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'''.
Finde eine programmatische Lösung für die [https://de.wikipedia.org/wiki/T%C3%BCrme_von_Hanoi Türme von Hanoi].


'''Ausgabe'''
Als Datenstruktur wird ein 2-Dimensionales Array benötigt:
 
{{JML|code=
{{BML|code=
int[][] hanoi = new int[3][Anzahl Scheiben]
0
1
2
3
4
5
6
 
7
 
8
 
9
 
10
}}
 
== Methoden ==
 
==== 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);}}
 
 
'''Ausgabe'''
 
{{BML|code=
X
 
X
 
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 ==
Jede Scheibe wird durch eine Zahl reprästentiert, die dessen Größe beschreibt.
 
==== 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'''
'''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)


{{JSL|System.out.println(getFirstAndLast(arr));}}
'''Tip:''' [https://de.wikipedia.org/wiki/Fibonacci-Folge Fibonacci]


'''Ausgabe'''
=== BonusAufgabe: Blackjack ===


{{BSL|First: 0, last: 10}}
Regeln: http://www.hitorstand.net/strategy.php (Wir machen ohne Split)


==== 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!