• Keine Ergebnisse gefunden

Übungen Programmieren in Clojure Serie 9

N/A
N/A
Protected

Academic year: 2021

Aktie "Übungen Programmieren in Clojure Serie 9"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Prof. Dr. Burkhardt Renz TH Mittelhessen

Programmieren in Clojure Übungen Serie 9

Übungen Programmieren in Clojure Serie 9

1. Datum in Clojure

Der Clojure-Reader erzeugt aus einer Eingabe der Form#inst"2017-09-01"ein Objekt vom Typ java.util.Date. In dieser Aufgabe entwickeln Sie einige Funktionen, mit denen man mit Datumsangaben arbeiten kann – auf Basis vonjava.util.Datesowie java.util.Calendar.

(a) Schreiben Sie eine Funktion, die ein Datum in der Zeitzone GMT aus Werten für Jahr, Monat und Tag erzeugt.

(defn date

"Constructs a date in the GMT timezone from the given year month and day"

[year month day]

)

Folgendes sollte damit möglich sein:

(def d1 #inst"2017-09-03") (def d2 (date 2017 9 3)) (= d1 d2)

; => true

(b) Eine Funktiontoday, die das aktuelle Datum in der Zeitzone GMT erzeugt.

(c) Eine Funktionaddmit der man Daten manipulieren kann. Folgende beispielhafte Aufrufe sollen möglich sein:

(add (today) :years 1) (add (today) :months 3) (add (today) :days 134)

(add (today) :years 1 :months 1 :days 10)

(d) Entwickeln Sie die Funktionenafter?undbefore?mit (defn after?

"Is date1 after date2?"

[date1 date2]

)

(defn before?

"Is date1 before date2?"

[date1 date2]

)

(e) Entwickeln Sie eine Funktion, die ein Datum als String formatiert, wobei die For- matangaben wie injava.text.SimpleDateFormatvorgegeben werden können.

Beispiele:

(date-string (today) "dd.MM.yyyy")

; => "04.09.2013"

(date-string (today) "yyyy-MM-dd")

; => "2013-09-04"

Wintersemester 2017/18 1

(2)

Prof. Dr. Burkhardt Renz TH Mittelhessen

Programmieren in Clojure Übungen Serie 9

2. Währungen und Geldbeträge in Clojure

Entwerfen und realisieren Siedefrecords für Währungen und Geldbeträge sowie Funk- tionen, so dass man Folgendes tun kann:

(a) Währungen definieren gemäß ISO-4217. Der letzte Parameter gibt an, wieviele Nachkommastellen ein Betrag in der Währung haben kann. Beim Euro sind das zum Beispiel 2, beim Yen 0. Folgendes soll man mit den entwickelten Funktionen zum Beispiel machen können:

(def euro (currency "EUR" "Euro" "Cent" 2)) (def dollar (currency "USD" "Dollar" "Cent" 2)) (def yen (currency "JPY" "Yen" "" 0))

(def pound (currency "GBP" "Pound" "Pence" 2)) (b) Beträge in Währungen definieren, etwa so:

(def a1 (amount euro 100.00M)) (def a2 (amount yen 1000M))

(c) Definieren Sie Funktionen(plus a1 a2),(minus a1 a2),(multiply a factor) (divide a divisor), mit denen man mit Beträgen rechnen kann. Beiplusund minus können Sie als Vorbedingung verlangen, dass die beiden Beträge dieselbe Währung haben.

(d) Schreiben Sie eine Funktion, die Beträge in eine andere Währung konvertiert, so dass man z.B. Folgendes berechnen kann:

(convert (amount euro 100.00M) dollar 1.12M)

3. Komplexe Zahlen mitdeftype unddefrecord

• Definieren Sie einen Datentyp für komplexe Zahlen mit deftype. Was passiert, wenn Sie so definierte komplexe Zahlen vergleichen?

• Definieren Sie einen Datentyp für komplexe Zahlen mitdefrecord. Was passiert, wenn Sie so definierte komplexe Zahlen vergleichen?

Rev 4.0 – 11. August 2017

Wintersemester 2017/18 2

Referenzen

ÄHNLICHE DOKUMENTE

gleicher Fälligkeit aber unterschiedlicher Währung (Inter- currency-Spread) oder zwischen Kontrakten gleicher Währung aber unterschiedlicher Fälligkeit

Was ergeben die folgenden Ausdrücke in der Repl, eingegeben in der vorgegebenen Rei- henfolge.. Burkhardt Renz

Eine Bank bezahlt Zinsen gestaffelt nach dem Guthaben: 1% bis 1000€, 1,25% bis 2000€ und 1,5% über 2000€.. Schreiben Sie eine Funktion, die zu einem Guthaben g den Jahreszins

Programmieren Sie eine Funktion (gcd n m), die mit dem Euklidischen Algorithmus den größten gemeinsamen Teiler (greatest common divisor ) der natürlichen Zahlen n und m berechnet..

Schreiben Sie eine Funktion (freq coll), die wie frequencies eine Map der verschie- denen Elemente einer Kollektion mit der Zahl ihres Vorkommens ermittelt. Verwenden Sie

Auch die Eulersche Zahl e kann durch einen Kettenbruch approzimiert werden, nämlich durch den Kettenbruch mit folgender Folge der a i 4 :.. [2; 1, 2, 1, 1, 4, 1, 1,

(a) Schreiben Sie eine „Factory-Funktion“ für komplexe Zahlen, basierend auf einer Implementierung als Vektor aus Real- und Imaginärteil.. (b) Schreiben Sie eine Multimethode (add x

Schreiben Sie ein Makro (assert-eq actual expected), das die beiden Ausdrücke auf Gleichheit überprüft und eine aussagekräftige Exception wirft, wenn sie nicht gleich sind,