Komplexe Anwendungen: Prozeduren mit Zeichenketten und Listen
Aus ProgrammingWiki
Inhaltsverzeichnis |
Weitere Selektoren für Zeichenketten
In Anlehnung an die Selektoren car / cdr für Listen sollen zunächst analoge Selektoren für Zeichenketten entwickelt werden. Dabei ist genau auf deren Definitions- und Wertebereich zu achten. Man spricht in diesem Zusammenhang von der Signatur einer Prozedur:
Beispiel:
string-car: $string \longmapsto char$
Quelltext überprüfen:
|
|
Quelltext überprüfen:
|
|
Quelltext überprüfen:
|
Generierung von Benutzernamen und Passwörtern
Beispiel:
(benutzername "Beatrix" "Berger") --> "beaberger" (passwort "Beatrix" "Berger") --> "b13r"
Implementieren Sie beide Prozeduren.
Hinweis:
Im ProgrammingWiki können folgende Scheme-Prozeduren genutzt werden:
(string-downcase <zk>) ; ... Konvertierung einer Zeichenkette in Kleinbuchstaben (string-upcase <zk>) ; ... Konvertierung einer Zeichenkette in Großbuchstaben
Quelltext überprüfen:
Quelltext überprüfen:
Kfz-Kennzeichen
Das persönliche Kfz-Kennzeichen
Viele Autofahrer legen großen Wert auf ein ganz individuelles polizeiliches Kennzeichen an ihrem Fahrzeug. Häufig soll es die Anfangsbuchstaben des Vor- und Nachnamens sowie den Geburtstag und den Geburtsmonat beinhalten.
Schreiben Sie eine Prozedur, die die persönliche Daten entgegennimmt und das gewünschte Kennzeichen als Zeichenkette für den Landkreis Görlitz in Großbuchstaben zurückgibt.
Beispiel:
(kennzeichen "Romy" "Berger" '(14 02 1988)) --> "GR-RB 142"
Quelltext überprüfen:
Das zufällige Kfz-Kennzeichen
Persönliche Wunsch-Kennzeichen sind leider oft vergeben. Nun muss das Kennzeichen aus zufällig gewählten Buchstaben und Zahlen generiert werden. Wir experimentieren deshalb mit Zufallszahlen. Dazu nutzen wir die einstellige Prozedur random:
Dabei stellen wir fest: (random <max>) gibt eine ganze Zufallszahl $z$ zurück mit $0 \le z < max$.
Mit der nachfolgenden nullstelligen Prozedur zufallszahl lässt sich also eine zufällige ganze Zahl $z$ mit $1 \le z \le 10$ erzeugen:
Nun können wir auch zufällige Kfz-Kennzeichen generieren. Dazu vereinbaren wir:
-
Dem Landkreiskürzel "GR" sollen (zunächst) immer zwei zufällig gewählte Großbuchstaben folgen.
Hier sind im Gegensatz zu realen Kennzeichen alle Buchstabenkombinationen zulässig. - Die darauf folgende Zufallszahl $z$ muss im Intervall $1 \le z \le 9999$ liegen.
Erstellen Sie die nullstellige Prozedur zufallskennzeichen, die für den Landkreis Görlitz zufällige Kfz-Kennzeichen erzeugt. Nutzen Sie dazu die Variable alphabet, mit der eine Zeichenkette aus allen Großbuchstaben definiert wird:
Quelltext überprüfen:
Zum Weiterarbeiten: Das allgemeine zufällige Kfz-Kennzeichen
Es ist durchaus zulässig, dass dem Landkreiskürzel nur ein Buchstabe folgt.
Verallgemeinern Sie die Prozedur zufallskennzeichen in der Form, dass ein oder zwei Buchstaben hinter einem beliebigen Landkreiskürzel auftreten können.
Zur Problemlösung.