Studium, Ausbildung und Beruf

web uni-protokolle.de
 powered by
NachrichtenLexikonProtokolleBücherForenMittwoch, 22. Mai 2013 

Scheme


Dieser Artikel von Wikipedia ist u.U. veraltet. Die neue Version gibt es hier.
Die Programmiersprache Scheme ist ein LISP -Dialekt. Es unterstützt sowohl funktionale als auch imperative Programmierung. Scheme liegt das Prinzip zugrunde eine Programmiersprache nicht dadurch beschreibungsmächtig wird dass Feature über Feature häuft sondern dadurch dass unnötige Einschränkungen entfernt. Z.B. gibt es im keine Hilfsmittel zur objektorientierten Programmierung es ist dank Makros und λ-Ausdrücken sehr einfach sich solche in der zu programmieren: Scheme ist eine programmierbare Programmiersprache von der Programmiererin bei Bedarf sehr flexibel werden kann.

Entwickelt wurde Scheme am Massachusetts Institute of Technology wo auch die formale Spezifikation zur Verfügung steht der so genannte Report.

Inhaltsverzeichnis

Sprachelemente

Kommentare

Kommentare werden durch ein Semikolon (;) eingeleitet.

Notation

Scheme verwendet die Präfixnotation. Beispielsweise schreibt nicht (10 - 8) sondern (- 10

Variablen

Variablen werden durch define let und einigen anderen Anweisungen definiert wobei eine Definition mit define globale Variablen entstehen ( define darf nicht in Prozeduren verwendet werden).

 (define var wert)  

Variablen die durch let definiert werden sind nur innerhalb dieses gültig.

 (let ([var1 wert1] [var2 wert2]) ... var1 und var2 sind nur innerhalb von let  gültig ... )  

Prozeduren

Prozeduren gehören zu den wichtigsten Sprachelementen Scheme. In der Regel erstellt man sie dem lambda -Befehl. Prozeduren können durch define einer Variable zugeteilt werden.

Beispiel: Eine Prozedur mit zwei Argumenten

 (define test (lambda (arg1 arg2) ...  

Der lambda -Befehl kann auch weggelassen werden:

 (define (test arg1 arg2) ...)  

Aufgerufen wird diese Prozedur wie folgt:

 (test wert1 wert2)  

Prozeduren müssen generell mit zwei Klammern werden. Der Rückgabewert wird durch die letzte Anweisung bestimmt. Beachtlich dabei ist dass Scheme den geeignetsten Datentyp wählt.

Man unterscheidet zwei Arten von Prozeduren: die durch den Programmierer erstellt werden und die bereits vordefiniert sind ( set! car cdr + - * / ). Diese vordefinierten Prozeduren können neu definiert wie folgendes Beispiel zeigt:

 (define + (lambda (x y) (- y)))  

+ würde jetzt nicht addieren sondern subtrahieren.

Listen

Listen werden in Scheme-Programmen relativ häufig Eine leere Liste wird mit '() gebildet. cons kann eine Liste erweitert werden. Das gibt Scheme an dass der nachfolgende Ausdruck interpretiert werden soll sondern dass eine Liste wird.

Beispiel:

 (cons 5 '())  

 (cons 1 (cons 2 (cons 3 4 '()))))  

Dies kann wie folgt abgekürzt werden

 (list 1 2 3 4)  

Listen in Scheme sind mit binären Bäumen vergleichbar. Die rechte Seite wird mit car dargestellt die linke Seite mit cdr (sprich: „cudder“). Durch die Anwendung mit car erhält man für gewöhnlich einen Wert; cdr enthält einen Zeiger auf das nächste oder auf die leere Liste.

Beispiel:

 (car '(1 2 3 4)) ;ergibt Ausgabe: 1  

 (cdr '(1 2 3 4)) ;ergibt Ausgabe: (2 3 4)  

Datentypen

Weitere Datentypen neben Listen sind unter

  • integer (ganze Zahlen)
  • rational (Brüche
  • real (Kommazahlen)
  • complex (komplexe Zahlen)
  • symbol
  • string (Zeichenkette)
  • port

Wahr und falsch werden durch #t und #f dargestellt Scheme jedoch nur #f als wirklich falsch interpretiert würde; alles andere – auch Listen – gelten als wahr .

Bedingungen

If:

If wertet einen Befehl oder einen Wert und führt je nach Ergebnis (#t oder eine entsprechende Anweisung aus.

 (if (= wert #t) (display "Der ist wahr") (display "Der Wert ist falsch"))) 

Cond:

Mit Cond ist es möglich mehrere Fälle abzufangen. keiner dieser Fälle ein so wird eine else -Behandlung für alle sonstigen Möglichkeiten eingeleitet.

 (cond ((= wert 1) (display "Der ist 1")) ((= wert 2) (display "Der ist 2")) (else (display "Der Wert ist 1 noch 2)))  

Darüber hinaus gibt es noch when und case als weitere Möglichkeit um mit Bedingungen arbeiten.

Schleifen

Schleifen werden in Scheme für gewöhnlich eine Rekursion erreicht. Ein häufiges gezeigtes Beispiel um zu demonstrieren ist die Berechnung der Fakultät .

 (define fak (lambda (x) (if (= 0) 1 (* x (fak (- x  

Beispiele

Scheme-Quellcode kann in folgenden Wikipedia-Artikeln gefunden

Hallo Welt Türme von Hanoi ...

  

Literatur

  • Abelson Sussman: Structure and Interpretation of Computer Programs McGraw-Hill ISBN 0070004226
  • Abelson Sussman: Struktur und Interpretation von Computerprogrammen Springer-Verlag ISBN 3540423427

Weblinks




Bücher zum Thema Scheme

Dieser Artikel von Wikipedia unterliegt der GNU FDL.

ImpressumLesezeichen setzenSeite versendenSeite drucken

HTML-Code zum Verweis auf diese Seite:
<a href="http://www.uni-protokolle.de/Lexikon/Scheme.html">Scheme </a>