i

Beispiel - Verschlüsselung

Das Caesar-Verfahren mit einer Funktionsdefinition implementieren

Ausgehend von Berechnungen mit konkreten Datenwerten entwickeln wir hier eine Funktion, die diese Berechnungen für beliebige Datenwerte ausführt.

'H' -> 72 -> 75 -> 'K'

Dieses Verschiebeverfahren kann man für (zumindest einige) konkrete Datenwerte mit dem folgenden Ausdruck beschreiben.

> Char.fromCode ((Char.toCode 'H') + 3)
'K' : Char

Ziel ist es, eine Funktion verschobenesZeichen zu konzipieren, die verallgemeinernd die folgende Übergabe-Rückgabe-Situation implementiert.

Übergabe: 
- Zeichen, das verschoben werden soll: 'H'
- Verschiebezahl: 3
Rückgabe: 
- verschobenes Zeichen: 'K'

Aufgabe 1

Erkläre die Signatur der Funktion verschobenesZeichen. Ergänze auch die fehlenden Angaben in den Beispielaufrufen.

Signatur:
verschobenesZeichen: Char -> Int -> Char 
Beispiele:
verschobenesZeichen 'H' 3 -> 'K'
verschobenesZeichen 'B' 5 -> ...
verschobenesZeichen 'L' 7 -> ...

Aufgabe 2

Implementiere die Funktion verschobenesZeichen mit einer Funktionsdefinition und teste diese mit Funktionsaufrufen. Nutze eine Verallgemeinerung des oben gezeigten Ausdrucks.

Aufgabe 3

Implementiere die Funktion verschobenesZeichen für das komplizierte Verschiebeverfahren, das auch die "Randfälle" berücksicht.

'A' -> 65 -> 0  -> (modBy 26 (0+3))  = 3  -> 68 -> 'D'
'B' -> 66 -> 1  -> (modBy 26 (1+3))  = 4  -> 69 -> 'E'
...
'Y' -> 89 -> 24 -> (modBy 26 (24+3)) = 1 -> 66 -> 'B'
'Z' -> 90 -> 25 -> (modBy 26 (25+3)) = 2 -> 67 -> 'C'

Das Umkehrverfahren mit einer Funktionsdefinition implementieren

Ausgehend von Berechnungen mit konkreten Datenwerten entwickeln wir hier eine Funktion, die diese Berechnungen für beliebige Datenwerte ausführt.

Betrachte noch einmal dieses Verschlüsselungsverfahren:

HALLO -> OLLAH -> Z OLLAH A -> ZOLLAHA
ALLESKLAR -> RALKSELLA -> Z RALKSELLA A -> ZRALKSELLAA
UMDREHENUNDERGAENZEN -> NEZNEAGREDNUNEHERDMU -> Z NEZNEAGREDNUNEHERDMU A -> ZNEZNEAGREDNUNEHERDMUA
...

Das Verfahren lässt sich für fest vorgegebene Datenwerte mit einem Ausdruck so umsetzen.

> String.append "Z" (String.append (String.reverse "HALLO") "A")
"ZOLLAHA" : String

Aufgabe 4

Erkläre die Signatur der Funktion verschluesselterText. Ergänze einen weiteren Beispielaufruf.

Signatur:
verschluesselterText: String -> String 
Beispiele:
verschluesselterText "HALLO" -> "ZOLLAHA"
...

Aufgabe 5

Implementiere die Funktion verschluesselterText mit einer Funktionsdefinition und teste diese mit Funktionsaufrufen. Nutze eine Verallgemeinerung des oben gezeigten Ausdrucks.

Suche

v
110.2.2.2.1.2
inf-schule.de/fp_elm_alteversion/elm_programme/funktionen/beispiele/lernstrecke/verschluesselung
inf-schule.de/110.2.2.2.1.2
inf-schule.de/@/page/N9Dx0GWsTvJeXyzr

Rückmeldung geben