Prozeduren und bedingte Ausdrücke

Aus ProgrammingWiki

Wechseln zu: Navigation, Suche

Zur Übungsübersicht

Inhaltsverzeichnis

Define and Set!

Definition von Variablen

Definieren Sie die folgenden Variablen und beachten Sie die zugehörigen Ausgaben von Scheme.Machen Sie sich noch einmal klar, warum define eine Sonderform (special form) ist. Verweilen Sie bei den Fehlermeldungen solange, bis Sie sie vollständig interpretieren können.

Geben die folgenden Ausdrücke ein und interpretieren Sie die Schemeantworten. Versuchen Sie diese Antworten vorherzusagen. Machen Sie sich an passender Stelle auch mit dem Datentyp “String” (Zeichenkette) im Manual vertraut.


Experimentieren Sie mit define und set!

Erproben Sie die Verwendung von define und set! anhand selbst gewählter Beispiele (z.B. pi). Überprüfen Sie anschließend, ob die neuen Variablenbindungen in der globalen Umgebung eingetragen wurden.

<eval rows=10 cols=30>;define und set!</run>

Gebundene Variablen

Der folgende Ausdruck beschreibt eine Prozedur zur Ermittlung einer Quadratzahl.

Ersetzen Sie die gebundene Variable n mit dem Symbol basis und wiederholen Sie den Aufruf. Modifizieren Sie den Ausdruck so, dass die Kubikzahl berechnet wird. <eval rows=5 cols=30>;Kubikzahl </run>

Flächeninhalt Kreis

Geben Sie einen Ausdruck ein, der den Flächeninhalt eines Kreises mit dem Radius r berechnet. Machen Sie dabei Gebrauch von dem Symbol pi, dessen Variablenbindung Sie nach dem Muster von Aufgabe 2 herstellen.

Listen

cons und list

Verwenden Sie cons und list um die nachstehenden Listen zu erzeugen.

Beispiel:

Hinweis: Beachten Sie, dass cons ein Paar erzeugt, wenn Sie als zweites Argument keine Liste übergeben.

conslist
(5 4 3)

̈
(5 (4 (3)))

((1 3) (4) 5)

((1 2) (3 4) (5))

car und cdr

Verwenden Sie die Prozeduren car und cdr, um auf die jeweils geforderten Elemente zuzugreifen. Hinweis: Vergessen Sie nicht die Evaluation der Liste als Schemeausdruck zu unterdrücken.

Zugriff auf:

die Zahl 1 in (+ 1 2 3 4 5)

die Zahl 5 in (+ 1 2 3 4 5)

das Symbol für die Addition in (* 3 (+ 8 9))

die 9 in (* 3 (+ 8 9))

das Ausrufezeichen (als Scheme-Zeichen) #\!
in (string-append "Hallo " (string #\O #\t #\t #\o #\!))


Briefporto

Briefporto 1

Erproben Sie die Prozedur briefporto für verschiedene Briefgewichte. Die Prozedur nimmt eine natürliche Zahl für das Gewicht (in Gramm) eines Briefes und gibt einen Preis (in Euro) als Dezimalzahl zurück. Falls ein Brief schwerer als 1000g ist, übernimmt unser fiktives Postunternehmen die Zustellung für 12345 Euro.

Briefporto 2

Entwickeln Sie nach dem Vorbild von briefporto eine Prozedur briefporto2, die zusätzlich zum Gewicht der Briefe deren Abmessungen auswertet. Dabei sollen folgende Vorgaben gelten:

BezeichnungGewichtLängeBreiteHöhePreis
Standardbrief20g235mm125mm5mm1.10
Kompaktbrief50g235mm125mm10mm2.20
Großbrief500g353mm250mm20mm3.00
Maxibrief1000g353mm250mm50mm4.40

Die Prozedur soll den Preis des jeweiligen Briefes als Zahl ohne Währungseinheit zurückgeben.

 

Quelltext überprüfen:

Zuzahlungsbeitrag

Für bestimmte Medikamente müssen von Patienten gesetzlich festgelegte Zuzahlungsbeiträge entrichtet werden. Schreiben Sie eine Prozedur abzug, die als Argument einen Preis nimmt und den entsprechenden Zuzahlungbetrag als natürliche Zahl ausgibt. Verwenden Sie dafür cond!

PreisZuzahlung
308,-
509,-
>5010,-

 

Quelltext überprüfen:


Würfeln

Denken Sie sich ein Spiel aus, das mit zwei Würfeln (random) arbeitet. Diese werden unabhängig voneinander und gleichzeitig geworfen. Wenn die Augensumme einen Wert aus einer Vorgabemenge annimmt soll der Spieler einen Gewinn erhalten.Hinweis: Verwenden Sie case und schlagen Sie random im Manual (Help Desk) nach.

Signum

Schreiben Sie eine einstellige Prozedur signum, mit der sich das Vorzeichen einer Zahl bestimmen lässt. (Funktionswerte: -1, 1 oder 0)

 

Quelltext überprüfen:

Absolutbetrag

Schreiben Sie eine einstellige Prozedur zur Ermittlung des Absolutbetrags einer ganzen Zahl.

 

Quelltext überprüfen:

Even and Odd

Schreiben Sie eine Prozedur my-odd? (und my-even?), die eine natürliche Zahl n nimmt und #t bzw. #f zurückgibt, wenn n ungerade bzw. gerade ist. Achtung: Die geforderten Prozedurdefinitionen dürfen die eingebauten Prozeduren odd? und even? nicht verwenden!Hinweis: Verwenden Sie die erstellte Prozedur my-odd? zur Definition von my-even?

 

Quelltext überprüfen:

Zur Übungsübersicht

Persönliche Werkzeuge