i

Die Programmiersprache Racket

Warum Racket?

Racket ist eine sehr schematische und einfach zu erlernende Programmiersprache. Diese Eigenschaften ermöglichen es uns, die Konzepte der funktionalen Programmierung nahezu direkt in Racket abzubilden. Somit können wir uns auf die zu erlernenden Konzepte konzentrieren, ohne uns in der Syntax einer Programmiersprache zu verlieren.

Was brauchen wir um mit Racket zu programmieren?

Um mit Racket zu programmieren brauchen wir eine Entwicklungsumgebung die Racket unterstützt. Mit DrRacket gibt es eine geeignete IDE, die direkt mit der Installation von Racket über die offizielle Webseite von Racket über "DOWNLOAD" bezogen werden kann. Von der Programmiersprache Racket gibt es verschiedene Versionen, die unterschiedliche Eigenschaften haben. So gibt es beispielsweise typed und untyped Versionen der Sprache, Versionen die lazy-Evaluation unterstützen und mehrere Lehrsprachen die spezielle Features für die (Aus)Bildung liefern. Es gilt jedoch: Wenn man eine Version von Racket beherrscht, dann wird man auch keine Probleme haben sich in eine der anderen einzuarbeiten, da der grundlegende Aufbau und die Programmierlogik stets die selbe ist. Innerhalb von DrRacket kann fließend zwischen den verschiedenen Versionen gewechselt werden. Wir werden hier eine Version verwenden, die speziell für das Lehrbuch "Schreibe dein Programm!" entworfen wurde. Diese Version hat einige integrierte Features, wie das sehr einfach Testen von Funktionen, was uns den Einstieg noch zusätzlich etwas erleichtert.

Beispielhafter Racket Code

;Ein Haustier ist eines der folgenden:
;- Katze
;- Hund
;- Schlange
(define pet
  (signature (enum "Katze" "Hund" "Schlange")))

;Tausche nicht süßes Haustier gegen süßes Haustier
(: exchange-pet (pet -> pet))
(check-expect (exchange-pet "Katze")"Katze")
(check-expect (exchange-pet "Hund")"Hund")
(check-expect (exchange-pet "Schlange")"Katze")
(define exchange-pet
  (lambda (p)
    (if (cute? p) p "Katze")))


;Überprüfe ob Tier Cute ist
(: cute? (pet -> boolean))
(check-expect (cute? "Katze")#t)
(check-expect (cute? "Hund")#t)
(check-expect (cute? "Schlange")#f)
(define cute?
  (lambda (p)
    (cond
      ((string=? p "Katze") #t)
      ((String=? p "Hund") #t)
      ((String=? p "Schlange") #f)
      )))

;Berechne Betrag einer Zahl
(: absolut (integer -> natural))
(check-expect (absolut 0) 0)
(check-expect (absolut 5) 5)
(check-expect (absolut -5) 5)
(define absolut
  (lambda (n)
    (if (< n 0) (* n -1) n)))

;Wiederhole übergebenen Text X-Mal
(: wdh-text (string natural -> string))
(check-expect (wdh-text "Drei" 3) "DreiDreiDrei")
(define wdh-text
  (lambda (str x)
    (if (= 0 x) ""
    (string-append str (wdh-text str (- x 1))))))

(absolut -17)
(wdh-text "Vier" 4)

Suche

v
100.137.1.2
https://inf-schule.de/entwuerfe/racket/einfuehrung/programmiersprache_racket
https://inf-schule.de/100.137.1.2
https://inf-schule.de/@/page/gSuqvxyk6xQSiXAd

Rückmeldung geben