Komplexe Anwendungen: Prozeduren mit Zeichenketten und Listen

Aus ProgrammingWiki

Wechseln zu: Navigation, Suche

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$
String car.GIF

 

Quelltext überprüfen:

String cdr.GIF

 

Quelltext überprüfen:

String last.GIF

 

Quelltext überprüfen:

Generierung von Benutzernamen und Passwörtern

Der Administrator eines Computernetzwerkes möchte die Festlegung von Benutzernamen und Passwörtern für eine größere Anzahl von Benutzern automatisieren. Dazu legt er fest:

  • Der Benutzername setzt sich aus den ersten drei Buchstaben des Vornamens und dem kompletten Nachnamen zusammen. Diese Zeichenkette wird grundsätzlich klein geschrieben.
  • Das Passwort zur Erstanmeldung soll aus dem ersten Buchstaben des Vornamens und dem letzten Buchstaben des Nachnamens bestehen. Beide Zeichen sollen Kleinbuchstaben sein und den Zahlenwert einschließen, der der Summe aller Zeichen im Vor- und Nachnamen entspricht.
Anmeldung.gif

Beispiel einer Netzwerkanmeldung

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

Aktuelles deutsches Kfz-Kennzeichen aus dem Landkreis Rastatt (Baden-Württemberg)

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.

Persönliche Werkzeuge