i

Verschlüsselung mit einer Verschiebung

Eine Verschiebung festlegen

Wir betrachten die von Caesar benutzte Alpbhabetverschiebung um 3 Buchstaben:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
| | | | | | | | | | | | | | | | | | | | | | | | | |
D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

Bei der Implementierung könnte man genauso vorgehen wie im letzten Abschnitt, indem man die Zuordnung Zeichen für Zeichen festlegt. Etwas eleganter ist eine Implementierung, die das Verschieben mit Hilfe von Rechnenoperationen durchführt:

Char.toCode 'G' -> 71 
71 - 65 -> -6
6 + 3 -> 9
modBy 26 9 -> 9
65 + 9 -> 74
Char.fromCode 74 -> 'J'

Die Implementierung in Elm könnte so erfolgen:

module Verschluesselung exposing (..)

verschiebungCaesar: Char -> Char
verschiebungCaesar zeichen = 
    Char.fromCode ((modBy 26 (((Char.toCode zeichen)-65)+3))+65)
> import Verschluesselung exposing (..)

> verschiebungCaesar 'A'
'D' : Char
> verschiebungCaesar 'H'
'K' : Char

Aufgabe 1

Teste die Implementierung und erläutere alle Details in der Implementierung.

Die Caesar-Verschiebung auf Texte anwenden

Wir gehen hier genauso vor wie im letzten Abschnitt bei der Verwendung einer Zuordnung. Hilfreich ist wieder die Verwendung der folgenden vordefinierten Hilfsfunktionen.

> String.toList "HALLO"
['H','A','L','L','O'] : List Char
> String.fromList ['H','A','L','L','O']
"HALLO" : String

Die Verschlüsselung eines Textes - als Liste von Zeichen - lässt sich jetzt leicht mit dem map-Operator durchführen.

Aufgabe 1

(a) Ergänze den Aufruf des map-Operators im unten gezeigten REPL-Dialog. Verwende die bereits definierte Funktion zuordnung.

module Verschluesselung exposing (..)

verschiebungCaesar: Char -> Char
verschiebungCaesar zeichen = 
    Char.fromCode ((modBy 26 (((Char.toCode zeichen)-65)+3))+65)
> import Verschluesselung exposing (..)

> textAlsListe = ['H','A','L','L','O'] 
['H','A','L','L','O'] : List Char
> List.map ...
['U','G','D','D','T'] : List Char

(b) Entwickle eine Funktion verschluesselungVerschiebungCaesar, die den Aufruf des map-Operators mit den oben gezeigten Umwandlungsfunktionen kombiniert.

module Verschluesselung exposing (..)

verschiebungCaesar: Char -> Char
verschiebungCaesar zeichen = 
    ...

verschluesselungVerschiebungCaesar: String -> String
verschluesselungVerschiebungCaesar text = 
    ...
> import Verschluesselung exposing (..)

> verschluesselungVerschiebungCaesar "HALLO"
"KDOOR" : String

Suche

v
110.2.11.1.1.2
inf-schule.de/fp_elm_alteversion/elm_programme/funktionenalsdaten/verschluesselung/lernstrecke/verschiebung
inf-schule.de/110.2.11.1.1.2
inf-schule.de/@/page/cmtOPUBpta636jHa

Rückmeldung geben