Sophie

Sophie

distrib > Mandriva > 2009.0 > i586 > by-pkgid > 3a7b4dfc766af1222d90c7f03a0844e6 > files > 6292

lilypond-doc-2.11.57-1mdv2009.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- header_tag -->
<html lang="de">
<head>
<title>Scheme-Übung - GNU LilyPond Handbuch zum Lernen</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="GNU LilyPond Handbuch zum Lernen">
<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.de.html#Top">
<link rel="prev" href="Templates.de.html#Templates" title="Vorlagen">
<link rel="next" href="GNU-Free-Documentation-License.de.html#GNU-Free-Documentation-License" title="GNU Free Documentation License">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
Copyright (C) 1999--2007 bei den Autoren

_The translation of the following copyright notice is provided
for courtesy to non-English speakers, but only the notice in English
legally counts._

_Die Übersetzung der folgenden Lizenzanmerkung ist zur Orientierung
für Leser, die nicht Englisch sprechen. Im rechtlichen Sinne ist aber
nur die englische Version gültig._

     Es ist erlaubt, dieses Dokument unter den Bedingungen der GNU Free
     Documentation Lizenz (Version 1.1 oder spätere, von der Free
     Software Foundation publizierte Versionen, ohne Invariante
     Abschnitte), zu kopieren, verbreiten und/oder zu verändern. Eine
     Kopie der Lizenz ist im Abschnitt ``GNU Free Documentation
     License'' angefügt.
     Permission is granted to copy, distribute and/or modify this
     document under the terms of the GNU Free Documentation License,
     Version 1.1 or any later version published by the Free Software
     Foundation; with no Invariant Sections.  A copy of the license is
     included in the section entitled ``GNU Free Documentation
     License''.
   -->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
  pre.display { font-family:inherit }
  pre.format  { font-family:inherit }
  pre.smalldisplay { font-family:inherit; font-size:smaller }
  pre.smallformat  { font-family:inherit; font-size:smaller }
  pre.smallexample { font-size:smaller }
  pre.smalllisp    { font-size:smaller }
  span.sc    { font-variant:small-caps }
  span.roman { font-family:serif; font-weight:normal; } 
  span.sansserif { font-family:sans-serif; font-weight:normal; } 
hr { border:0; height:1; color: #000000; background-color: #000000; }
/* hr {
  border:  none;
  height: 1px;
  color: #666666;
  background-color: #666666;
}
body {
  border-left: 1px solid #666666;
  border-right: 1px solid #666666;
  color: #332d28;
  margin-right: auto;
  margin-left: auto;
  width: 60em;
  list-style-type: square;
  font-family: Arial,Helvetica,sans-serif;
  padding-right: 1em;
  padding-left: 1em;
}
a {
  border-bottom: 1px dashed #344242;
  text-decoration: none;
  color: #344242;
}
a:link {
  text-decoration: none;
}
a:visited {
  border-bottom: 1px dashed #666666;
  color: #666666;
}
a:active {
  border-bottom: 1px solid #00cccc;
  color: #00cccc;
}
a:hover {
  border-bottom: 1px solid #1d7b85;
  color: #1d7b85;
}
blockquote {
  border: 1px solid #cccccc;
  padding: 3px;
  width: 40em;
}
.node {
  border-left: 1px solid #666666;
  margin: -0.5em 0px 1em;
  padding: 2px 1px 0px;
  font-style: italic;
}
.node a {
  border:  none;
  text-decoration: underline;
  font-style: normal;
  font-weight: bold;
}
.verbatim {
  font-family: "Courier New",Courier,monospace;
}
.unnumberedsubsubsec {
  font-size: large;
  color: #1d7b85;
}
.subsubheading {
  font-size: large;
  color: #3b220d;
}
.contents {
  border: 1px dashed #339999;
  margin: 3px 2em;
  list-style-type: square;
  padding-right: 1em;
  width: 40em;
  background-color: #fcfff9;
}
.contents a {
  border-bottom: 1px dashed #423d34;
  text-decoration: none;
  color: #423d34;
}
.contents a:visited {
  border-bottom: 1px dashed #666666;
  color: #666666;
}
.contents a:active {
  border-bottom: 1px solid #f0d86d;
  color: #f0d86d;
}
.contents a:hover {
  border-bottom: 1px solid #3b220d;
  color: #3b220d;
}
.menu {
  border-left: 1px dashed #339999;
  margin: 3px 2em 1em;
  list-style-type: square;
  padding-left: 1.4em;
  width: 40em;
}
.unnumbered {
}
h2 {
  font-size: x-large;
  color: #1d7b85;
}
*/
--></style>
</head>
<BODY BGCOLOR=WHITE TEXT=BLACK>

<div class="node">
<p>
<a name="Scheme-tutorial"></a>
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="GNU-Free-Documentation-License.de.html#GNU-Free-Documentation-License">GNU Free Documentation License</a>,
voriges:&nbsp;<a rel="previous" accesskey="p" href="Templates.de.html#Templates">Vorlagen</a>,
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="index.de.html#Top">Top</a>
<hr>
</div>

<h2 class="appendix">Anhang B Scheme-Übung</h2>

<p><a name="index-g_t_0023-263"></a><a name="index-g_t_0023-264"></a>
<a name="index-Scheme-265"></a><a name="index-GUILE-266"></a><a name="index-Scheme_002c-in_002dline-code-267"></a><!-- @cindex accessing Scheme -->
<!-- @cindex evaluating Scheme -->
<a name="index-LISP-268"></a>
LilyPond verwendet die Scheme-Programmiersprache sowohl als Teil
der Eingabesyntax als auch als internen Mechanismus, um Programmmodule
zusammenzufügen. Dieser Abschnitt ist ein sehr kurzer Überblick über
die Dateneingabe mit Scheme. Wenn Sie mehr über Scheme wissen wollen,
gehen Sie zu <a href="http://www.schemers.org">http://www.schemers.org</a>.

   <p>Das Grundlegendste an einer Sprache sind Daten: Zahlen, Zeichen,
Zeichenketten, Listen usw. Hier ist eine Liste der Datentypen, die für
LilyPond-Eingabedateien relevant sind.

     <dl>
<dt>Boolesche Variablen<dd>Werte einer Booleschen Variable sind Wahr oder Falsch. Die Scheme-Entsprechung
für Wahr ist <code>#t</code> und für Falsch <code>#f</code>. 
<a name="index-g_t_0023_0023t-269"></a><a name="index-g_t_0023_0023t-270"></a>
<a name="index-g_t_0023_0023f-271"></a><a name="index-g_t_0023_0023f-272"></a>

     <br><dt>Zahlen<dd>Zahlen werden wie üblich eingegeben, <code>1</code> ist die (ganze)
Zahl Eins, während <code>-1.5</code> ist eine Gleitkommazahl (also
eine nicht-ganze).

     <br><dt>Zeichenketten<dd>Zeichenketten werden in doppelte Anführungszeichen gesetzt:

     <pre class="example">     "Das ist eine Zeichenkette"
</pre>
     <p>Zeichenketten können über mehrere Zeilen reichen:

     <pre class="example">     "Das
     ist
     eine Zeichenkette"
</pre>
     <p>Anführungszeichen und neue Zeilen können auch mit sogenannten
Fluchtsequenzen eingefügt werden. Die Zeichenkette
<code>a sagt "b"</code> wird wie folgt eingegeben:

     <pre class="example">     "a sagt \"b\""
</pre>
     <p>Neue Zeilen und Backslashe werden mit <code>\n</code> bzw. <code>\\</code>
eingegeben. 
</dl>

   <p>In einer Notationsdatei werden kleine Scheme-Abschnitte mit der
Raute (<code>#</code>) eingeleitet. Die vorigen Beispiele heißen also in
LilyPond:

<pre class="example">##t ##f
#1 #-1.5
#"Das ist eine Zeichenkette"
#"Das
ist
eine Zeichenkette"
</pre>
   <p>Für den Rest dieses Abschnitts nehmen wir an, dass die Daten immer in
einer LilyPond-Datei stehen, darum wird immer die Raute verwendet.

   <p>Scheme kann verwendet werden, um Berechnungen durchzuführen. Es
verwendet eine <em>Präfix</em>-Syntax. Um 1 und&nbsp;2 zu addieren, muss
man <code>(+ 1 2)</code> schreiben, und nicht 1+2, wie in traditioneller
Mathematik.

<pre class="lisp">#(+ 1 2)
   #3
</pre>
   <p>Der Pfeil  zeigt an, dass das Ergebnis der Auswertung von
<code>(+ 1 2)</code> <code>3</code>&nbsp;ist. Berechnungen können geschachtelt
werden und das Ergebnis einer Berechnung kann für eine neue
Berechnung eingesetzt werden.

<pre class="lisp">#(+ 1 (* 3 4))
   #(+ 1 12)
   #13
</pre>
   <p>Diese Berechnungen sind Beispiele von Auswertungen. Ein Ausdruck
wie <code>(* 3 4)</code> wird durch seinen Wert <code>12</code> ersetzt. Ähnlich
verhält es sich mit Variablen. Nachdem eine Variable definiert ist:

<pre class="example">twelve = #12
</pre>
   <p class="noindent">kann man sie in Ausdrücken weiterverwenden:

<pre class="example">twentyFour = #(* 2 twelve)
</pre>
   <p class="noindent">Die 24 wird in der Variablen <code>twentyFour</code> gespeichert. 
Die gleiche Zuweisung kann auch vollständig in Scheme geschrieben
werden:

<pre class="example">#(define twentyFour (* 2 twelve))
</pre>
   <p>Der <em>Name</em> einer Variable ist auch ein Ausdruck, genauso wie
eine Zahl oder eine Zeichenkette. Er wird wie folgt eingegeben:

<pre class="example">#'twentyFour
</pre>
   <p><a name="index-g_t_0023_0027symbol-273"></a><a name="index-g_t_0023_0027symbol-274"></a>
<a name="index-Zitieren-in-Scheme-275"></a>
Das Apostroph <code>'</code> verhindert, dass bei der Scheme-Auswertung
 <code>twentyFour</code> durch <code>24</code> ersetzt wird. Anstatt dessen erhalten
 wir die Bezeichnung <code>twentyFour</code>.

   <p>Diese Syntax wird sehr oft verwendet, weil es manche
Einstellungsveränderungen erfordern, dass Scheme-Werte einer
internen Variable zugewiesen werden, wie etwa

<pre class="example">\override Stem #'thickness = #2.6
</pre>
   <p>Diese Anweisung verändert die Erscheinung der Notenhälse. Der Wert
<code>2.6</code> wird der Variable <code>thickness</code> (Dicke) eines
<code>Stem</code>-(Hals)-Objektes gleichgesetzt. 
<code>thickness</code> wird relativ zu den Notenlinien errechnet, in diesem
Fall sind die Hälse also 2,6 mal so dick wie die Notenlinien. Dadurch
werden Hälse fast zweimal so dick dargestellt, wie sie normalerweise sind. 
Um zwischen Variablen zu unterscheiden, die in den Quelldateien direkt
definiert werden (wie <code>twentyFour</code> weiter oben), und zwischen denen,
die für interne Objekte zuständig sind, werden hier die ersteren
&bdquo;Bezeichner&ldquo; genannt, die letzteren dagegen &bdquo;Eigenschaften&ldquo;. 
Das Hals-Objekt hat also eine <code>thickness</code>-Eigenschaft, während
<code>twentyFour</code> ein Bezeichner ist.

   <p><a name="index-Eigenschaften-versus-Bezeichner-276"></a><a name="index-Bezeichner-versus-Eigenschaften-277"></a>
Sowohl zweidimensionale Abstände (X- und Y-Koordinaten) als auch
Größen von Objekten (Intervalle mit linker und rechter Begrenzung) werden
als <code>pairs</code> (Paare) eingegeben. Ein Paar<a rel="footnote" href="#fn-1" name="fnd-1"><sup>1</sup></a> wird als <code>(erster . zweiter)</code>
eingegeben und sie müssen mit dem Apostroph eingeleitet werden, genauso
wie Symbole:

<pre class="example">\override TextScript #'extra-offset = #'(1 . 2)
</pre>
   <p>Hierdurch wird das Paar (1, 2) mit der Eigenschaft <code>extra-offset</code>
des TextScript-Objektes verknüpft. Diese Zahlen werden in
Systembreiten  gemessen, so dass der Befehl das Objekt eine Systembreite
nach rechts verschiebt und zwei Breiten nach oben.

   <p>Die zwei Elemente eines Paares können von beliebigem Inhalt sein, etwa

<pre class="example">#'(1 . 2)
#'(#t . #f)
#'("blah-blah" . 3.14159265)
</pre>
   <p>Eine Liste wird eingegeben, indem die Elemente der Liste in Klammern
geschrieben werden, mit einem Apostroph davor. Beispielsweise:

<pre class="example">#'(1 2 3)
#'(1 2 "string" #f)
</pre>
   <p>Die ganze Zeit wurde hier schon Listen benutzt. Eine Berechnung,
wie <code>(+ 1 2)</code>, ist auch eine Liste (welche das Symbol <code>+</code>
und die Nummern 1 und&nbsp;2 enthält. Normalerweise werden Listen
als Berechnungen interpretiert und der Scheme-Interpreter ersetzt
die Liste mit dem Ergebnis der Berechnung. Um eine Liste an sich
einzugeben, muss die Auswertung angehalten werden. Das geschieht,
indem der Liste ein Apostroph vorangestellt wird. Für Berechnungen
kann man also den Apostroph nicht verwenden.

   <p>Innerhalb einer zitierten Liste (also mit Apostroph) muss man keine
Anführungszeichen mehr setzen. Im Folgenden ein Symbolpaar, eine
Symbolliste und eine Liste von Listen:

<pre class="example">#'(stem . head)
#'(staff clef key-signature)
#'((1) (2))
</pre>
   <div class="footnote">
<hr>
<h4>Fußnoten</h4><p class="footnote"><small>[<a name="fn-1" href="#fnd-1">1</a>]</small> In der
Scheme-Terminologie wird ein Paar <code>cons</code> genannt und seine
zwei Elemente <code>car</code> und <code>cdr</code>.</p>

   <hr></div>

   <!-- footer_tag --><div class="node">
<p>
n&auml;chstes:&nbsp;<a rel="next" accesskey="n" href="GNU-Free-Documentation-License.de.html#GNU-Free-Documentation-License">GNU Free Documentation License</a>,
voriges:&nbsp;<a rel="previous" accesskey="p" href="Templates.de.html#Templates">Vorlagen</a>,
aufw&auml;rts:&nbsp;<a rel="up" accesskey="u" href="index.de.html#Top">Top</a>
</div>

<div style="background-color: #e8ffe8; padding: 2; border: #c0ffc0 1px solid;">
<p>
<font size="-1">
Diese Seite ist für LilyPond-2.11.57 (Entwicklungszweig).
<br>
<address>
Fehler bitte an <a href="http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs">http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs</a> melden. </address>
<br>
Ihre <a href="http://lilypond.org/web/devel/participating/documentation-adding">Vorschläge für die Dokumentation</a> sind willkommen.
</font>
</p>
</div>


<P>
 Andere Sprachen: <a href="Scheme-tutorial.html">English</a>, <a href="Scheme-tutorial.es.html">español</a>.
 <BR>
 
</P>
</BODY></html>