Datentypen

Aus ProgrammingWiki
Archivierte Version vom 2010-10-11T08:24:33+00:00. Aktuelle Version

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">(&lt; 4 1)</eval> <eval id="4c836d2799c1e">(&gt;= 4 1)</eval>

Zusätzlich gibt es Operatoren zur Konvertierung zwischen Daten unterschiedlicher Datentypen:

<eval id="4c76c2ae86ced"> (string-&gt;list "Informatik") </eval>

<eval id="4c76c2ae86e1c"> (number-&gt;string 12.34) </eval>

<eval id="4c76c2ae86f43"> (string-&gt;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-&gt;string 'name)</eval>
<eval id="4c82acbf5c103">(string-&gt;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

  1. Testen Sie die oben angegebenen Beispiele ausführlich.

  2. Nachfolgend ist eine Prozedur zur universellen Datentypprüfung (universal datacheck) implementiert.
    Untersuchen Sie damit weitere Datentypen und -strukturen.

    <eval id="4c76cc479300d"> (udc sqrt) </eval>