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
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 6: Zeile 6:
'''Die Selbstkontrolle, diese solltet ihr bearbeiten und ist eine gute Wiederholung'''
'''Die Selbstkontrolle, diese solltet ihr bearbeiten und ist eine gute Wiederholung'''


[[DCV_2024_03/Selbstkontrolle_Strukturierte_Programmierung|Selbstkontrolle]]
[[DCV_2024_09/Selbstkontrolle_Strukturierte_Programmierung|Selbstkontrolle]]


Der Punkt Datenströme ist '''optional''', da dieser noch nicht behandelt wurde. Man kann es natürlich trotzdem erledigen!
=== Aufgabe: Wiederholung Objektorientierte Programmierung ===
'''Wiederholung der Klassen Objekte'''


=== Hackerrank ===
[[DCV_2024_09/Selbstkontrolle_Objektorientierte_Programmierung|Wiederholung]]
 
 
=== Tipp des Tages: Hackerrank ===
Probiert es doch mal aus, macht spaß: https://hackerrank.com
Probiert es doch mal aus, macht spaß: https://hackerrank.com


=== Aufgabe: GameOfLife ===
=== BonusAufgabe: GameOfLife ===
[[DCV_2023_03/Strukturierte_Programmierung_Uebungen/Arrays#Aufgabe:_Conways_Game_of_life|Conways Game of life]]
[[DCV_2023_03/Strukturierte_Programmierung_Uebungen/Arrays#Aufgabe:_Conways_Game_of_life|Conways Game of life]]


=== Aufgabe: TicTacToe KI ===
=== BonusAufgabe: TicTacToe KI ===
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].
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].


=== Aufgabe: Türme von Hanoi ===
=== BonusAufgabe: Türme von Hanoi ===
Finde eine programmatische Lösung für die [https://de.wikipedia.org/wiki/T%C3%BCrme_von_Hanoi Türme von Hanoi].
Finde eine programmatische Lösung für die [https://de.wikipedia.org/wiki/T%C3%BCrme_von_Hanoi Türme von Hanoi].


Zeile 41: Zeile 45:
  '''Tip:''' [https://de.wikipedia.org/wiki/Fibonacci-Folge Fibonacci]
  '''Tip:''' [https://de.wikipedia.org/wiki/Fibonacci-Folge Fibonacci]


=== Aufgabe: Blackjack ===
=== BonusAufgabe: Blackjack ===


Regeln: http://www.hitorstand.net/strategy.php (Wir machen ohne Split)
Regeln: http://www.hitorstand.net/strategy.php (Wir machen ohne Split)
Zeile 59: Zeile 63:


Achte auf eine schöne Ausgabe!
Achte auf eine schöne Ausgabe!
=== Aufgabe: Hashsumme/Prüfsumme ===
Erstelle ein Programm welches die Prüfsumme einer gegebenen Datei berechnet und ausgibt. Hierbei kann auch gerne '''resources/txt/simpeText.txt''' verwendet werden. Nähere Informationen zur Hashsumme finden sich [https://de.wikipedia.org/wiki/Hashfunktion hier].
Lies die Datei mithilfe eines {{JSL|FileInputStream}}:
{{JML|code=
InputStream in = [YourClass].class.getClassLoader().getResourceAsStream("txt/simpleText.txt");
byte[] buffer = new byte[1024];
int read = 0;
while((read = in.read(buffer)) > 0) {
    //Digest aktualisieren         
}
}}
Erstelle einen {{JSL|MessageDigest}} für '''MD5''' und '''SHA256''' und befülle diesen mit dem {{JSL|byte[] buffer}}. Instanzen von {{JSL|MessageDigest}} erhältst du mittels {{JSL|MessageDigest.getInstance([algorithm])}}.
Um die Prüfsumme des {{JSL|MessageDigest}} lerbar zu machen verwende:
{{JML|code=
private static String toString(MessageDigest digest) {
    return new BigInteger(1,digest.digest()).toString(16);
}
}}
{{BML|code=
#Prüfsummen für resources/txt/simpleText.txt
md5: a82e2148461ca6b10c48ddb920a40f15
sha256: 4711958a43201ac481b37ab2f50a1fd366cc14f5996ad7e02bc01b2f9ea0d12
}}
'''Online MD5 Hash generator'''
Hier kann die '''Hashsumme''' für einen gegebenen Text berechnet werden: [http://www.md5.cz/ MD5 Generator]
=== Aufgabe: Cäsar-Verschlüsselung ===
Bei der Cäsar-Verschlüsselung werden die Buchstaben um eine fixe Anzahl Stellen
verschoben (z.B. 2) a wird zu c, f wird zu h, z wird zu b usw.
Implementiere eine Methode {{JSL|encrypt(String)}} welche einen {{JSL|String}} zurückgibt und und eine Methode
{{JSL|decrypt(String)}} welche einen {{JSL|String}}.
'''Entschlüsselt'''
{{BML|code=
Dies ist ein Beispieltext der mit einem Klick verschlüsselt werden kann. Hier kann auch
ein eigenen Text herein geschrieben, oder ein Geheimcode zum Entschlüsseln herein
kopiert werden.
}}
'''Verschlüsselt (um 3 verschoben)'''
{{BML|code=
Glhv lvw hlq EhlvslhowhAw ghu plw hlqhp Nolfn yhuvfkoüvvhow zhughq ndqq. Klhu
ndqq dxfk hlq hljhqhq WhAw khuhlq jhvfkulhehq, rghu hlq Jhkhlpfrgh Cxp
Hqwvfkoüvvhoq khuhlq nrslhuw zhughq.
}}

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!