Datentypen
Datentypen beschreiben den Wertebereich von Daten.
Damit wird festgelegt, welche speziellen Operationen mit den Daten ausgeführt werden können.
Ausgewählte Datentypen in Scheme
| Zahlen | Zeichen | Zeichenketten | Wahrheitswerte | |
|---|---|---|---|---|
| Beispiele | 12 -0.25 3e-04 2/3 |
#\a #\B #\+ #\space #\tab #\newline |
"Informatik" "Heute ist ein schoener Tag" "12.03" "(+ 1.5 2.3)" |
#t #f |
| Operatoren | +, -, *, / expt abs, sqr, sqrt sin, cos, tan asin, acos, atan |
string-append string-length |
not, and, or | |
| Prädikate | number? | char? char=? char |
string? string=? string |
|
| Konstruktoren | string | |||
| Selektoren | string-ref substring |
|||
| Anwendungen |
<eval id="4c76c0a04fb1c">(+ 2/3 4/5)</eval> <eval id="4c76cc4792ae6">(expt -3 4)</eval> |
<eval id="4c913ce3b4af8">(char? #\B)</eval> <eval id="4c913ce3b4c59">(char #\k #\b)</eval> |
<eval id="4ca256b632e13">(string #\D #\u)</eval> <eval id="4ca256b632f7e">(substring "Kurs" 1 3)</eval> |
<eval id="4c836d2799ac7">(< 4 1)</eval> <eval id="4c836d2799c1e">(>= 4 1)</eval> |
Zusätzlich gibt es Operatoren zur Konvertierung zwischen Daten unterschiedlicher Datentypen:
<eval id="4c76c2ae86ced"> (string->list "Informatik") </eval>
<eval id="4c76c2ae86e1c"> (number->string 12.34) </eval>
<eval id="4c76c2ae86f43"> (string->number "2/3") </eval>
Symbole
Mit der Quotierung kann die Evaluation von Ausdrücken unterdrückt werden:
| <eval id="4c82acbf5b4a0">hallo</eval> | <eval id="4c82acbf5b609">'hallo</eval> |
Damit wird zusätzlich die Definition eines Datentyps Symbol sinnvoll.
Symbole sind nichtnumerische und nichtstrukturierte (d.h. atomare) Ausdrücke, deren Evaluation mit quote unterdrückt wird.
Beispiele:
| <eval id="4c82acbf5b767">'x</eval> | <eval id="4c82acbf5b8c3">'11er</eval> | <eval id="4c82acbf5ba21">'|der Unterricht|</eval> | <eval id="4c82acbf5bb81">(quote Informatik)</eval> |
| Syntax | Beispiele | |
|---|---|---|
| Prädikat | symbol? | <eval id="4c82acbf5bce5">(symbol? 'pi)</eval> <eval id="4c82acbf5be46">(symbol? '1)</eval> |
| Konvertierungen | symbol->string string->symbol |
<eval id="4c82acbf5bfa7">(symbol->string 'name)</eval> <eval id="4c82acbf5c103">(string->symbol "12")</eval> |
Wir wissen bereits aus der Einführung in die Kommunikation mit Scheme:
Mit define kann man an ein Symbol einen Wert binden.
Symbole, an die Werte gebunden sind, heißen Variablen.
<eval id="4c82acbf5c260"> (define 11er "Wahlgrundkurs Informatik") 11er </eval>
Aufgaben
-
Testen Sie die oben angegebenen Beispiele ausführlich.
-
Nachfolgend ist eine Prozedur zur universellen Datentypprüfung (universal datacheck) implementiert.
Untersuchen Sie damit weitere Datentypen und -strukturen.<eval id="4c76cc479300d"> (udc sqrt) </eval>