i

Übungen

Aufgabe 1

Betrachte das Caesar-Verfahren zum Verschieben von Buchstaben:

'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)) = 24 -> 66 -> 'B'
'Z' -> 90 -> 25 -> (modBy 26 (25+3)) = 25 -> 67 -> 'C'

Dieses Verschiebeverfahren kann man mit der Funktion verschobenesZeichen implementieren.

verschobenesZeichen zeichen =
    Char.fromCode (modBy 26 (((Char.toCode zeichen) - 65) + 3) + 65)

(a) Teste diese Funktionsdefinition mit mehreren Funktionsaufrufen in der REPL.

(b) Der Ausdruck in der Funktionsdefinition ist komplex. Verdeutliche das Hintereinanderschalten von Funktionen in diesem Ausdruck mit Hilfe von Funktionsboxen.

(c) Führe lokale Konstanten ein, um den Ausdruck verständlicher zu gestalten.

Aufgabe 2

(a) In der einfachen Variante des Caesar-Verfahrens ignorieren wir, dass Zeichen über das Z hinaus geschoben werden könnten. Formuliere den Ausdruck zum Verschieben eines Zeichens um drei Stellen im Alphabet mit Hilfe des Pipe-Operators.

(b) Begründe warum man die Variante aus Aufgabe 1 nicht (direkt) mit Hilfe des Pipe-Operators umsetzen kann.

(c) Formuliere den Ausdruck aus Aufgabe 1 zum Verschieben eines Zeichens um drei Stellen im Alphabet mit Hilfe des Pipe-Operators und der Addition einer negativen Zahl anstelle der Subtraktion.

Aufgabe 3

Betrachte die Berechnung des Anhaltewegs nach den Faustformeln aus der Fahrschule.

$\begin{array}{lcl} \text{Reaktionsweg [in m]} & = & \displaystyle\frac{\text{Geschwindigkeit [in km/h]}}{10} \cdot 3 \\ \\ \text{Bremsweg [in m]} & = & \displaystyle\frac{\text{Geschwindigkeit [in km/h]}}{10} \cdot \frac{\text{Geschwindigkeit [in km/h]}}{10} \\ \\ \text{Anhalteweg [in m]} & = & \text{Reaktionsweg [in m]} + \text{Bremsweg [in m]} \end{array}$

Die Berechnung lässt sich mit der Funktion anhalteweg durchführen.

anhalteweg geschwindigkeit =
    (geschwindigkeit / 10) * 3 + (geschwindigkeit / 10) * (geschwindigkeit / 10)

Führe lokale Konstanten ein, um den Ausdruck möglichst verständlich zu gestalten.

Aufgabe 4

Schreibe eine Funktion , die alle Zeichenketten einer Liste in Großbuchstaben umwandelt und umdreht. Ein Aufruf in der REPL soll also folgende Wirkung haben:
> verarbeite ["Anne", "Bruno", "Charlotte"]
["ENNA","ONURB","ETTOLRAHC"] : List String

Nutze dazu lokale Konstanten und/oder den Pipe-Operator.

Suche

v
8.2.2.4.2
www.inf-schule.de/deklarativ/fp_elm/elm_programme/teilausdruecke/uebungen
www.inf-schule.de/8.2.2.4.2
www.inf-schule.de/@/page/bGctflAiRBxVH9e6

Rückmeldung geben