Logo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

Minimallogo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

s n h m r u
i

Partielle Funktionsanwendung

Flexibilisierung des Caesar-Verfahrens

Der Überlieferung nach nutzte Caesar zur Verschlüsselung immer eine Verschiebung um drei Buchstaben. Mit Hilfe einer anderen Verschiebezahl, also eines anderen Schlüssels zur Verschlüsselung, kann man das Verfahren flexibilisieren. Wir müssen dazu nur die Zahl 3 durch einen Parameter schluessel ersetzen:

verschiebeZeichen : Int -> Char -> Char
verschiebeZeichen schluessel zeichen =
    Char.fromCode (modBy 26 (Char.toCode zeichen - 65 + schluessel) + 65)

Aufgabe 1

Erkläre warum wir diese Funktion so nicht direkt anwenden können, um mit Hilfe von String.map verschiebeZeichen "HALLO" eine Zeichenkette zu verschlüsseln.

Argumentiere mit der Zahl der Parameter, die wir bräuchten und der Zahl der Parameter, die wir haben.

Experimente in der REPL

Wir führen wieder einige Experimente in der REPL durch.

> verschiebeZeichen
...
> verschiebeZeichen 1
...
> f = verschiebeZeichen 1
...
> f 'H'
...
> f 'Z'
...
> String.map f "HALLO"
...
> String.map (verschiebeZeichen 1) "HALLO"
...

Aufgabe 2

Formuliere eine Vermutung welche Ausgabe jeder Ausruck in der REPL bewirkt. Überprüfe deine Vermutung in der REPL.

Aufgabe 3

Schreibe eine Funktion verschiebeText schluessel klartext, die einen Text anhand des übergebenen Schlüssels nach dem Caesar-Verfahren verschlüsselt.

Suche

v
8.2.2.3.2.1.3
dev.inf-schule.de/deklarativ/fp_elm/elm_programme/listen/caesar/lernstrecke/partiell
dev.inf-schule.de/8.2.2.3.2.1.3
dev.inf-schule.de/@/page/2XvjBdloKAiRTzZA

Rückmeldung geben