Strukturierte Programmierung Uebungen Ferien: Unterschied zwischen den Versionen

Aus CCWiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(14 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
Wir wünschen euch schöne Ferien. Genießt die Freie Zeit aber Sie sollte auch genutzt werden um die Dinge zu festigen.
Wir wünschen euch schöne Ferien. Genießt die freie Zeit und nützt sie auch um die Dinge zu festigen.


Im folgenden finden sich ein paar Übungsbeispiele. Erledigt werden sollten:
Hier findet ihr noch die [[Strukturierte_Programmierung_Uebungen|Übungsbeispiele]].
 
Weiters bitte ich diejenigen, die noch offene Punkte in der [[Selbstkontrolle_Strukturierte_Programmierung|Selbstkontrolle]] haben, diese nachzuholen.
Die Bonusaufgabe in Punkt 4) muss nicht gemacht werden
 
Übungen zu '''Regular Expressions''': [https://www.bs7-augsburg.de/aicher/files_codeconcert/12Prog/ANPR_TSK_01_RegexInJava.pdf]
 
Im folgenden finden sich ein paar Übungsbeispiele. '''Erledigt werden sollten''':
# [[Strukturierte_Programmierung_Uebungen_Ferien#Aufgabe:_GameOfLife|GameOfLife]]
# [[Strukturierte_Programmierung_Uebungen_Ferien#Aufgabe:_GameOfLife|GameOfLife]]
# [[Strukturierte_Programmierung_Uebungen_Ferien#Aufgabe:_TicTacToe|TicTacToe]]
# [[Strukturierte_Programmierung_Uebungen_Ferien#Aufgabe:_TicTacToe|TicTacToe]]
Weiters bitte ich diejenigen, die noch offene Punkte in der [[Selbstkontrolle_Strukturierte_Programmierung|Selbstkontrolle]] haben, nachzuholen. Die Bonusaufgabe in Punkt 4) muss nicht gemacht werden.


{{TOC limit|4}}
{{TOC limit|4}}


=== Aufgabe: GameOfLife ===
=== Aufgabe: GameOfLife ===
Wie im Unterricht besprochen.


=== Aufgabe: TicTacToe ===
=== Aufgabe: TicTacToe ===
Zeile 20: Zeile 26:


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


=== Aufgabe: Hashsumme/Prüfsumme ===
=== Aufgabe: Hashsumme/Prüfsumme ===
Zeile 39: Zeile 45:
     return new BigInteger(1,digest.digest()).toString(16);
     return new BigInteger(1,digest.digest()).toString(16);
}
}
}}
{{BML|code=
#Prüfsummen für assets/file.txt
md5: a82e2148461ca6b10c48ddb920a40f15
sha256: 4711958a43201ac481b37ab2f50a1fd366cc14f5996ad7e02bc01b2f9ea0d12
}}
==== Rainbow Table ====
Datenbank mit sehr vielen '''Hashsummen''' für '''Passwörter''': [https://crackstation.net/ Crackstation]
==== 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 22. Oktober 2021, 11:06 Uhr

Wir wünschen euch schöne Ferien. Genießt die freie Zeit und nützt sie auch um die Dinge zu festigen.

Hier findet ihr noch die Übungsbeispiele.

Weiters bitte ich diejenigen, die noch offene Punkte in der Selbstkontrolle haben, diese nachzuholen.

Die Bonusaufgabe in Punkt 4) muss nicht gemacht werden

Übungen zu Regular Expressions: [1]

Im folgenden finden sich ein paar Übungsbeispiele. Erledigt werden sollten:

  1. GameOfLife
  2. TicTacToe

Aufgabe: GameOfLife

Wie im Unterricht besprochen.

Aufgabe: TicTacToe

Implementiere das berühmte Spiel TicTacToe[2]. Erstelle dafür ein 2-dimensionales Array und Frage dabei wechselweise jeden Spieler nach einer Koordinate die gesetzt werden soll. Ist das Feld schon belegt, oder ist die Eingabe ungültig, so soll erneut nachgefragt werden. Prüfe zu jeder Runde ob das Spiel beendet und ein Sieger ermittelt werden kann.

Aufgabe: TicTacToe KI

Erweitere die vorhergehende Aufgabe so, dass gegen den Computer gespielt werden kann. Siehe MiniMax Algorithmus.

Aufgabe: Türme von Hanoi

Finde eine programmatische Lösung für die Türme von Hanoi.

Aufgabe: Hashsumme/Prüfsumme

Erstelle ein Programm welches die Prüfsumme einer gegebenen Datei berechnet und ausgibt. Hierbei kann auch gerne assets/file.txt verwendet werden. Nähere Informationen zur Hashsumme finden sich hier. Lies die Datei mithilfe eines FileInputStream:

FileInputStream in = new FileInputStream("assets/file.txt");
byte[] buffer = new byte[1024];
int read = 0;
while((read = in.read(buffer)) > 0) {
    //Digest aktualisieren           
}

Erstelle einen MessageDigest für MD5 und SHA256 und befülle diesen mit dem byte[] buffer. Instanzen von MessageDigest erhältst du mittels MessageDigest.getInstance([algorithm]). Um die Prüfsumme des MessageDigest lerbar zu machen verwende:

private static String toString(MessageDigest digest) {
    return new BigInteger(1,digest.digest()).toString(16);
}


#Prüfsummen für assets/file.txt
md5: a82e2148461ca6b10c48ddb920a40f15
sha256: 4711958a43201ac481b37ab2f50a1fd366cc14f5996ad7e02bc01b2f9ea0d12

Rainbow Table

Datenbank mit sehr vielen Hashsummen für Passwörter: Crackstation

Online MD5 Hash generator

Hier kann die Hashsumme für einen gegebenen Text berechnet werden: 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 encrypt(String) welche einen String zurückgibt und und eine Methode decrypt(String) welche einen String.

Entschlüsselt

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)

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.