Teil 12: Challenges
Lernziele
- Ein grösseres Programm in Teilaufgaben zerlegen
- Alles bisher Gelernte kombinieren: Schleifen, Verzweigungen, Funktionen, Listen, Strings
- Ein Programm mit selbst gewählten Testfällen prüfen
- Den eigenen Code lesbar gestalten und kommentieren
Keine neuen Befehle. Diese Challenges bauen auf allem auf, was du kennst.
Challenges
Die folgenden drei Aufgaben sind grösser als alles bisher. Arbeite in Schritten: Zerlege die Aufgabe zuerst in Teile, schreibe jeden Teil einzeln und teste ihn, bevor du weitergehst.
Vorgehen bei grösseren ProgrammenSchreibe zuerst auf Papier, welche Schritte das Programm machen muss. Baue dann eine Funktion nach der anderen und teste jede sofort mit einem Beispiel. Erst wenn alle Teile funktionieren, setzt du sie zusammen. Wer alles auf einmal tippt, sucht am Schluss stundenlang den Fehler.
Challenge 1: Caesar-Verschlüsselung
Bei der Caesar-Verschlüsselung wird jeder Buchstabe um eine feste Anzahl Stellen im Alphabet verschoben. Mit Verschiebung 3 wird aus A ein D, aus B ein E und aus Z wieder ein C.
Aufgabe 12.1Schreibe die Funktion
verschluesseln(text, k), die jeden Buchstaben umkStellen verschiebt. Zeichen, die keine Buchstaben sind, bleiben unverändert.
Aufgabe 12.2Schreibe die passende Funktion
entschluesseln(text, k). Prüfe, obentschluesseln(verschluesseln("HALLO", 3), 3)wiederHALLOergibt.
Aufgabe 12.3Baue ein kleines Programm darum herum: Der Benutzer wählt, ob er ver- oder entschlüsseln will, gibt den Text und die Verschiebung ein und erhält das Ergebnis.
Challenge 2: Mastermind
Der Computer wählt zufällig vier Farben aus einer Liste, Wiederholungen erlaubt. Der Spieler rät. Nach jedem Versuch meldet das Programm, wie viele Farben an der richtigen Stelle stehen und wie viele zwar vorkommen, aber am falschen Platz.
Aufgabe 12.4Erzeuge den geheimen Code als Liste aus vier zufälligen Farben. Verwende die Farben rot, gruen, blau, gelb, schwarz und weiss.
Aufgabe 12.5Schreibe die Funktion
auswerten(code, tipp), die zurückgibt, wie viele Farben richtig platziert sind und wie viele nur enthalten sind.
Aufgabe 12.6Baue das Spiel fertig: zehn Versuche, nach jedem Versuch die Auswertung, am Schluss eine Meldung über Sieg oder Niederlage.
Challenge 3: Passwörter
Aufgabe 12.7Schreibe die Funktion
ist_sicher(passwort), die prüft, ob ein Passwort mindestens acht Zeichen lang ist und mindestens einen Grossbuchstaben, einen Kleinbuchstaben und eine Ziffer enthält.
Aufgabe 12.8Erweitere dein Programm so, dass es dem Benutzer sagt, welche Regel verletzt wurde, und so lange nachfragt, bis das Passwort sicher ist.
Aufgabe 12.9Speichere mehrere Benutzernamen und Passwörter in zwei Listen. Schreibe eine Anmeldung, die Namen und Passwort prüft und höchstens drei Versuche zulässt.
Weitere Aufgaben
Zusatzaufgabe 12.10Schreibe ein Programm, das eine Caesar-Verschlüsselung knackt, ohne den Schlüssel zu kennen. Probiere alle 26 Verschiebungen durch und gib alle Ergebnisse aus. Woran erkennst du das richtige?
Zusatzaufgabe 12.11Programmiere Vier gewinnt für zwei Personen. Verwende das Spielbrett aus Teil 9. Das Programm fragt abwechselnd nach einer Spalte, lässt den Stein hineinfallen und prüft nach jedem Zug, ob jemand gewonnen hat.
Zusatzaufgabe 12.12Erweitere Mastermind um eine Statistik: Wie viele Versuche brauchst du im Schnitt? Lass den Computer hundertmal zufällig raten und werte aus.