Warning, /education/kturtle/po/de/docs/kturtle/programming-reference.docbook is written in an unsupported language. File is not indexed.

0001 <chapter id="reference">
0002 <title
0003 >Programmreferenz für &turtlescript;</title>
0004 <para
0005 >Dies ist die Referenz der in &kturtle; verwendeten Sprache &turtlescript;. Im ersten Abschnitt dieses Kapitels werden einige Grundzüge der <link linkend="grammar"
0006 >grammatischen Regeln</link
0007 > des Sprache &turtlescript; vorgestellt. Der zweite Abschnitt behandelt ausschließlich <link linkend="mathematical-operators"
0008 >mathematische Operatoren</link
0009 >, <link linkend="boolean-operators"
0010 >boolesche Operatoren  (wahr/falsch) </link
0011 > und <link linkend="comparing-operators"
0012 >Vergleichs-Operators</link
0013 >.Im dritten Abschnitt finden Sie eine große Liste aller <link linkend="commands"
0014 >Befehle</link
0015 >, die einzeln erklärt werden. Abschnitt vier behandelt die <link linkend="assignment-of-variables"
0016 >Zuweisung</link
0017 > von Werten and <link linkend="assignment-of-variables"
0018 >Variablen</link
0019 >. Zum Schluss wird im Abschnitt fünf die Steuerung des Programms mit <link linkend="controlling-execution"
0020 >Kontrollanweisungen</link
0021 > und dann im Abschnitt sechs erläutert, wie eigene Befehle oder Funktionen mit <link linkend="learn"
0022 ><userinput
0023 >lerne</userinput
0024 ></link
0025 > erzeugt werden.</para>
0026 
0027 <sect1 id="grammar">
0028 <title
0029 >Die grammatischen Regeln der Sprache &turtlescript;</title>
0030 <para
0031 >Wie in jeder Sprache gibt es in &turtlescript; verschiedene Arten von Wörtern und Symbolen. Englisch zum Beispiel unterscheidet zwischen Verben wie <quote
0032 >gehen</quote
0033 > oder <quote
0034 >singen</quote
0035 > und Substantiven wie <quote
0036 >Schwester</quote
0037 > oder <quote
0038 >Haus</quote
0039 >. Diese verschiedene Arten von Wörtern und Symbolen werden für verschiedene Zwecke benutzt. &turtlescript; ist eine Programmiersprache, die dazu benutzt wird, &kturtle; Anweisungen zu geben.</para>
0040 <para
0041 >In diesem Abschnitt werden einige der verschiedenen Arten von Wörtern und Symbolen in &turtlescript; kurz erklärt. In &turtlescript; gibt es <link linkend="comment"
0042 >Kommentare</link
0043 >, <link linkend="command"
0044 >Befehle</link
0045 > und die drei verschiedenen Arten von echten Werten: <link linkend="number"
0046 >Zahlen</link
0047 >, <link linkend="string"
0048 >Zeichenfolgen</link
0049 > und <link linkend="boolean-value"
0050 >boolesche Werte (wahr/falsch)</link
0051 >.</para>
0052 
0053 
0054 <sect2 id="comment">
0055 <title
0056 >Kommentare</title>
0057 <para
0058 >Ein Programm besteht aus Befehlen, die beim Ablauf ausgeführt werden, und sogenannten Kommentaren. Kommentare werden nicht ausgeführt, &kturtle; ignoriert sie beim Starten des Programms. Kommentare werden benutzt, damit andere Programmierer den Quelltext besser verstehen. Jeder Text nach einem <userinput
0059 >#</userinput
0060 >-Zeichen wird in &turtlescript; als Kommentar betrachtet. Dieses kleine Programm zum Beispiel tut nichts: <screen>
0061 # dieses kleine Programm tut nichts, das ist nur ein Kommentar
0062 </screen
0063 > Das Programm ist natürlich nutzlos, erklärt aber gut die Wirkung von Kommentaren.</para>
0064 <para
0065 >Kommentare sind sehr hilfreich, wenn das Programm komplizierter und umfangreicher wird. Außerdem erleichtern sie anderen Programmierern, den Quelltext zu verstehen. Im folgenden Programm werden Kommentare zusammen mit dem Befehl <link linkend="print"
0066 >drucke</link
0067 > verwendet: <screen>
0068 # Cies Breijs hat dieses Programm geschrieben.
0069 drucke "dieser Text wird auf der Zeichenfläche ausgedruckt"
0070 # die vorige Zeile ist kein Kommentar, aber die Folgende:
0071 # drucke "dieser Text wird nicht ausgedruckt"
0072 </screen
0073 > Die erste Zeile beschreibt das Programm. Die zweite Zeile wird von &kturtle; ausgeführt, es wird <userinput
0074 >dieser Text wird auf der Zeichenfläche ausgedruckt</userinput
0075 > geschrieben. Die dritte Zeile ist ein Kommentar. In der vierten Zeile steht ein Kommentar, der einen  Quelltext in &turtlescript; enthält. Wird das Symbol <userinput
0076 >#</userinput
0077 > in der vierten Zeile entfernt, wird der Druckbefehl von &kturtle; ausgeführt. Programmierer bezeichnen das als <quote
0078 >auskommentieren</quote
0079 >.</para>
0080 <para
0081 >Kommentarzeilen werden im <link linkend="the-editor"
0082 >Quelltexteditor</link
0083 > hellgrau <glossterm
0084 >hervorgehoben</glossterm
0085 >.</para>
0086 </sect2>
0087 
0088 <sect2 id="command">
0089 <title
0090 >Befehle</title>
0091 <para
0092 >Mit Befehlen geben Sie der Schildkröte oder &kturtle; Anweisungen, was sie tun soll. Einige Befehle brauchen eine Eingabe, andere geben einen Wert zurück. <screen>
0093 # der Befehl vorwärts braucht eine Eingabe, in diesem Fall die Zahl 100:
0094 vorwärts 100
0095 </screen
0096 > Die erste Zeile ist ein <link linkend="comment"
0097 >Kommentar</link
0098 >. Die zweite Zeile enthält den Befehl <userinput
0099 >vorwärts</userinput
0100 > und die <link linkend="number"
0101 >Zahl</link
0102 > <userinput
0103 >100</userinput
0104 >. Die Zahl ist nicht Bestandteil des Befehls, sie ist die „Eingabe“ für den Befehl. Einige Befehle wie &eg; <userinput
0105 >gehe</userinput
0106 > brauchen mehr als einen Eingabewert. Mehrere Werte müssen durch Komma (<userinput
0107 >,</userinput
0108 >) getrennt werden.</para>
0109 <para
0110 >Einige Befehle wie &eg; <userinput
0111 >gehe</userinput
0112 > brauchen mehr als einen Eingabewert. Mehrere Werte müssen durch Komma (<userinput
0113 >,</userinput
0114 >) getrennt werden.</para>
0115 <para
0116 >Eine ausführliche Übersicht aller von &kturtle; unterstützten Befehle finden Sie <link linkend="commands"
0117 >hier</link
0118 >. Die eingebauten Befehle werden dunkelblau <glossterm
0119 >hervorgehoben</glossterm
0120 >.</para>
0121 </sect2>
0122 
0123 <sect2 id="number">
0124 <title
0125 >Zahlen</title>
0126 <para
0127 >Wahrscheinlich wissen Sie schon ziemlich viel über Zahlen. In &kturtle; werden Zahlen etwa so wie in der Sprache oder in der Mathematik verwendet.</para>
0128 <para
0129 >Es gibt die so genannten natürlichen Zahlen: <userinput
0130 >0</userinput
0131 >, <userinput
0132 >1</userinput
0133 >, <userinput
0134 >2</userinput
0135 >, <userinput
0136 >3</userinput
0137 >, <userinput
0138 >4</userinput
0139 >, <userinput
0140 >5</userinput
0141 > &etc; Die negativen Zahlen: <userinput
0142 >-1</userinput
0143 >, <userinput
0144 >-2</userinput
0145 >, <userinput
0146 >-3</userinput
0147 > &etc; Und die Zahlen mit Dezimalstellen oder reelle Zahlen, zum Beispiel: <userinput
0148 >0.1</userinput
0149 >, <userinput
0150 >3.14</userinput
0151 >, <userinput
0152 >33.3333</userinput
0153 >, <userinput
0154 >-5.05</userinput
0155 >, <userinput
0156 >-1.0</userinput
0157 >. Der Punkt (<userinput
0158 >.</userinput
0159 >) wird als Dezimaltrennzeichen benutzt. </para>
0160 <para
0161 >Zahlen können in <link linkend="mathematical-operators"
0162 >mathematischen Berechnungen</link
0163 > und <link linkend="comparing-operators"
0164 >Vergleichen</link
0165 > benutzt werden. Sie können auch in <link linkend="assignment-of-variables"
0166 >Variablen</link
0167 > gespeichert werden. Zahlen werden in dunklem Rot <glossterm
0168 >hervorgehoben</glossterm
0169 >.</para>
0170 </sect2>
0171 
0172 <!-- constants like pi? -->
0173 
0174 <sect2 id="string">
0175 <title
0176 >Zeichenfolgen</title>
0177 <para
0178 >Zuerst ein Beispiel:<screen>
0179 drucke "Hallo, ich bin eine Zeichenfolge."
0180 </screen
0181 > In diesem Beispiel ist <userinput
0182 >drucke</userinput
0183 > ein Befehl und <userinput
0184 >"Hallo, ich bin eine Zeichenfolge."
0185 </userinput
0186 > eine Zeichenfolge. Zeichenfolgen haben am Anfang und am Ende das Zeichen <userinput
0187 >"</userinput
0188 >, daran erkennt sie &kturtle;.</para>
0189 <para
0190 >Zeichenfolgen können in <link linkend="assignment-of-variables"
0191 >Variablen</link
0192 > abgelegt werden, genauso wie <link linkend="number"
0193 >Zahlen</link
0194 >. Im Gegensatz zu Zahlen können Zeichenfolgen nicht in <link linkend="mathematical-operators"
0195 >mathematischen Berechnungen</link
0196 > und <link linkend="comparing-operators"
0197 >Vergleichen</link
0198 > benutzt werden. Zeichenfolgen werden in Rot <glossterm
0199 >hervorgehoben</glossterm
0200 >.</para>
0201 </sect2>
0202 
0203 <sect2 id="boolean-value">
0204 <title
0205 >Boolesche Werte (wahr/falsch)</title>
0206 <para
0207 >Es gibt nur zwei Boolesche Werte: <userinput
0208 >wahr</userinput
0209 ><indexterm
0210 ><primary
0211 >wahr</primary
0212 ></indexterm
0213 > und <userinput
0214 >falsch</userinput
0215 ><indexterm
0216 ><primary
0217 >falsch</primary
0218 ></indexterm
0219 >. Diese Werte werden auch <quote
0220 ><userinput
0221 >Ein</userinput
0222 ></quote
0223 > und <quote
0224 ><userinput
0225 >Aus</userinput
0226 ></quote
0227 >, <quote
0228 ><userinput
0229 >Ja</userinput
0230 ></quote
0231 > und <quote
0232 ><userinput
0233 >Nein</userinput
0234 ></quote
0235 >, <quote
0236 ><userinput
0237 >Eins</userinput
0238 ></quote
0239 > und <quote
0240 ><userinput
0241 >Null</userinput
0242 ></quote
0243 >genannt. Aber in &turtlescript; heißen Sie immer <userinput
0244 >wahr</userinput
0245 > und <userinput
0246 >falsch</userinput
0247 >. Betrachten Sie diesen Quelltext in &turtlescript;: <screen>
0248 $a = wahr
0249 </screen
0250 > Im <link linkend="the-inspector"
0251 >Kontrollfenster</link
0252 > können Sie sehen, dass die <link linkend="assignment-of-variables"
0253 >Variable</link
0254 > <userinput
0255 >$a</userinput
0256 > den Wert <userinput
0257 >wahr</userinput
0258 > hat und ein Boolescher Wert ist.</para>
0259 <para
0260 >Boolesche Werte sind häufig das Ergebnis eines <link linkend="comparing-operators"
0261 >Vergleichs</link
0262 >, wie der folgende Quelltext in &turtlescript; zeigt: <screen>
0263 $antwort = 10 &gt; 3
0264 </screen
0265 > Die <link linkend="assignment-of-variables"
0266 >Variable</link
0267 > <userinput
0268 >$antwort</userinput
0269 > erhält den Wert <userinput
0270 >wahr</userinput
0271 >, weil <userinput
0272 >10</userinput
0273 > größer als <userinput
0274 >3</userinput
0275 > ist.</para>
0276 <para
0277 >Boolesche Werte, <userinput
0278 >wahr</userinput
0279 > und <userinput
0280 >falsch</userinput
0281 >, werden dunkelrot <glossterm
0282 >hervorgehoben</glossterm
0283 >.</para>
0284 </sect2>
0285 
0286 </sect1>
0287 
0288 
0289 
0290 <sect1 id="operators">
0291 <title
0292 >Mathematische, Boolesche und Vergleichs-Operatoren</title>
0293 <para
0294 >Der Titel dieses Abschnitts mag sehr kompliziert klingen, aber das täuscht.</para>
0295 
0296 <sect2 id="mathematical-operators">
0297 <title
0298 >Mathematische Operatoren</title>
0299 <para
0300 >Dies sind alle grundlegenden mathematischen Symbole: addieren (<userinput
0301 >+</userinput
0302 >), subtrahieren (<userinput
0303 >-</userinput
0304 >), multiplizieren (<userinput
0305 >*</userinput
0306 >), dividieren (<userinput
0307 >/</userinput
0308 >) und die Potenz (<userinput
0309 >^</userinput
0310 >).</para>
0311 
0312 <para
0313 >Ein kleines Beispiel der mathematischen Operatoren, die Sie in &turtlescript; verwenden können: <screen>
0314 $plus     = 1 + 1
0315 $minus    = 20 - 5
0316 $multipiziert = 15 * 2
0317 $geteilt   = 30 / 30
0318 $potenz    = 2 ^ 2
0319 </screen
0320 > Die Werte, die sich aus diesen mathematischen Operationen ergeben, werden den verschiedenen <link linkend="assignment-of-variables"
0321 >Variablen</link
0322 > <link linkend="assignment-of-variables"
0323 >zugewiesen</link
0324 >. Im <link linkend="the-inspector"
0325 >Kontrollfenster</link
0326 > werden die Variablen und ihre Werte angezeigt.</para>
0327 <para
0328 >Für eine einfache Berechnung geben Sie zum Beispiel folgendes ein: <screen
0329 >drucke 2010-12
0330 </screen
0331 ></para>
0332 <para
0333 >Nun ein Beispiel mit Klammern: <screen>
0334 drucke ( ( 20 - 5 ) * 2 / 30 ) + 1
0335 </screen
0336 > Der Ausdruck in Klammern wird zuerst berechnet. In diesen Beispiel wird also 20-5 berechnet, dann mit 2 multipliziert, durch 30 dividiert und dann 1 addiert (das ergibt 2). Klammern können auch in anderen Fällen benutzt werden.</para>
0337 <para
0338 >&kturtle; hat noch erweiterte mathematische Funtionen in der Form von Befehlen. Schauen Sie sich die folgenden Befehle an, dabei handelt es sich um fortgeschrittene mathematische Operationen: <link linkend="round"
0339 >rund</link
0340 >, <link linkend="random"
0341 >zufall</link
0342 >, <link linkend="sqrt"
0343 >wurzel</link
0344 > , <link linkend="pi"
0345 >pi</link
0346 >, <link linkend="sin"
0347 >sin</link
0348 >, <link linkend="cos"
0349 >cos</link
0350 >, <link linkend="tan"
0351 >tan</link
0352 >, <link linkend="arcsin"
0353 >arcsin</link
0354 >, <link linkend="arccos"
0355 >arccos</link
0356 >, <link linkend="arctan"
0357 >arctan</link
0358 >.</para>
0359 </sect2>
0360 
0361 <sect2 id="boolean-operators">
0362 <title
0363 >Boolesche Operatoren (wahr/falsch)</title>
0364 <para
0365 >Während <link linkend="mathematical-operators"
0366 >mathematische Operatoren</link
0367 > <link linkend="number"
0368 >Zahlen</link
0369 > verarbeiten,  behandeln boolesche Operatoren die <link linkend="boolean-value"
0370 >boolesche Werte</link
0371 > <userinput
0372 >wahr</userinput
0373 > und <userinput
0374 >falsch</userinput
0375 >. Es gibt nur drei boolesche Operatoren, nämlich: <userinput
0376 >und</userinput
0377 ><indexterm
0378 ><primary
0379 >und</primary
0380 ></indexterm
0381 >, <userinput
0382 >oder</userinput
0383 ><indexterm
0384 ><primary
0385 >oder</primary
0386 ></indexterm
0387 > und <userinput
0388 >nicht</userinput
0389 ><indexterm
0390 ><primary
0391 >nicht</primary
0392 ></indexterm
0393 >. Im folgenden Quelltext von &turtlescript; wird gezeigt, wie sie verwendet werden:<screen>
0394 $und_1_1 = wahr und falsch    # -> wahr
0395 $und_1_0 = wahr und falsch   # -> false
0396 $und_0_1 = falsch und wahr   # -> false
0397 $und_0_0 = falsch und falsch  # -> false
0398 
0399 $oder_1_1 = wahr oder wahr    # -> wahr
0400 $oder_1_0 = wahr oder falsch   # -> wahr
0401 $oder_0_1 = falsch oder wahr   # -> wahr
0402 $oder_0_0 = falsch oder falsch  # -> falsch
0403 
0404 $nicht_1 = nicht wahr   # -> falsch
0405 $nicht_0 = nicht falsch  # -> wahr
0406 </screen
0407 > Im <link linkend="the-inspector"
0408 >Kontrollfenster</link
0409 > werden die Ergebnisse dargestellt, sie sind aber auch als Kommentar am Ende der Zeilen angefügt. <userinput
0410 >und</userinput
0411 > ergibt nur <userinput
0412 >wahr</userinput
0413 >, wenn beide Seiten <userinput
0414 >wahr</userinput
0415 > sind. <userinput
0416 >oder</userinput
0417 > ergibt <userinput
0418 >wahr</userinput
0419 >, wenn mindestens eine der beiden Seiten <userinput
0420 >true</userinput
0421 > ist. Und <userinput
0422 >nicht</userinput
0423 > ändert ein <userinput
0424 >wahr</userinput
0425 > in <userinput
0426 >falsch</userinput
0427 > und ein <userinput
0428 >falsch</userinput
0429 > in <userinput
0430 >wahr</userinput
0431 >.</para>
0432 <para
0433 >Boolesche Operatoren werden pinkfarben <glossterm
0434 >hervorgehoben</glossterm
0435 >.</para>
0436 
0437 <sect3 id="boolean-operators-advanced-examples">
0438 <title
0439 >Einige etwas schwierigere Beispiele</title>
0440 <para
0441 >Betrachten sie das folgende Beispiel mit <userinput
0442 >und</userinput
0443 >: <screen>
0444 $a = 1
0445 $b = 5
0446 wenn (($a &lt; 10) und ($b == 5)) und ($a &lt; $b) {
0447   drucke "Hallo"
0448 }
0449 </screen
0450 > In diesem Quelltext von &turtlescript; wird das Ergebnis von drei <link linkend="comparing-operators"
0451 >Vergleichsoperatoren</link
0452 > mit dem Operator  <userinput
0453 >und</userinput
0454 > miteinander verbunden. Daher müssen alle drei Vergleiche <quote
0455 >wahr</quote
0456 > ergeben, damit das Wort <quote
0457 >Hallo</quote
0458 > gedruckt wird..</para>
0459 
0460 <para
0461 >Ein Beispiel mit <userinput
0462 >oder</userinput
0463 >: <screen>
0464 $n = 1
0465 wenn ($n &lt; 10) oder ($n == 2) {
0466   drucke "Hallo"
0467 }
0468 </screen
0469 > In diesem Quelltext von &turtlescript; ergibt die linke Seite des <userinput
0470 >oder</userinput
0471 > <quote
0472 >wahr</quote
0473 >, die rechte Seite <quote
0474 >falsch</quote
0475 >. Da eine der beiden Seiten des Operators <userinput
0476 >oder</userinput
0477 > <quote
0478 >wahr</quote
0479 > ergibt, ist das Ergebnis des Operartors <userinput
0480 >oder</userinput
0481 > auch <quote
0482 >wahr</quote
0483 >. Damit wird das Wort <quote
0484 >Hallo</quote
0485 > gedruckt.</para>
0486 
0487 <para
0488 >Und schließlich ein Beispiel mit <userinput
0489 >nicht</userinput
0490 >, das <quote
0491 >wahr</quote
0492 > in <quote
0493 >falsch</quote
0494 > und <quote
0495 >falsch</quote
0496 > in <quote
0497 >wahr</quote
0498 > ändert: <screen
0499 >$n = 1
0500 wenn nicht ($n == 3) {
0501   drucke "Hallo"
0502 } sonst {
0503   drucke "nicht Hallo ;-)"
0504 }
0505 </screen
0506 ></para>
0507 </sect3>
0508 </sect2>
0509 
0510 <sect2 id="comparing-operators">
0511 <title
0512 >Vergleichs-Operatoren</title>
0513 <para
0514 >Betrachten Sie diesen einfachen Vergleich: <screen>
0515 $ergebnis = 10 &gt; 3
0516 </screen
0517 > Hier wird <userinput
0518 >10</userinput
0519 > mit <userinput
0520 >3</userinput
0521 > mit Hilfe des Operators <quote
0522 >größer als</quote
0523 > verglichen. Das Ergebnis dieses Vergleichs, der <link linkend="boolean-value"
0524 >Boolesche Wert</link
0525 > <userinput
0526 >wahr</userinput
0527 >, wird in der <link linkend="assignment-of-variables"
0528 >Variablen</link
0529 > <userinput
0530 >ergebnis</userinput
0531 > gespeichert. </para>
0532 <para
0533 >Alle <link linkend="number"
0534 >Zahlen</link
0535 > und <link linkend="assignment-of-variables"
0536 >Variablen</link
0537 >, die Zahlen enthalten, können durch die Vergleichs-Operatoren miteinander verglichen werden.</para>
0538 <para
0539 >Hier sind alle möglichen Vergleichs-Operatoren aufgeführt: <table
0540 > <title
0541 >Art der Frage</title
0542 > <tgroup cols="3"
0543 > <tbody
0544 > <row
0545 > <entry
0546 ><userinput
0547 >$A == B</userinput
0548 ></entry
0549 > <entry
0550 >gleich</entry
0551 > <entry
0552 >Ergebnis ist <quote
0553 >wahr</quote
0554 > wenn <userinput
0555 >$A</userinput
0556 > gleich <userinput
0557 >$B</userinput
0558 > ist</entry
0559 > </row
0560 > <row
0561 > <entry
0562 ><userinput
0563 >$A != $B</userinput
0564 ></entry
0565 > <entry
0566 >nicht gleich</entry
0567 > <entry
0568 >Ergebnis ist <quote
0569 >wahr</quote
0570 > wenn <userinput
0571 >$A</userinput
0572 > ungleich <userinput
0573 >$B</userinput
0574 > ist</entry
0575 > </row
0576 > <row
0577 > <entry
0578 ><userinput
0579 >$A &gt; $B</userinput
0580 ></entry
0581 > <entry
0582 >größer als</entry
0583 > <entry
0584 >Ergebnis ist <quote
0585 >wahr</quote
0586 > wenn <userinput
0587 >$A</userinput
0588 > größer ist als <userinput
0589 >$B</userinput
0590 ></entry
0591 > </row
0592 > <row
0593 > <entry
0594 ><userinput
0595 >$A &lt; $B</userinput
0596 ></entry
0597 > <entry
0598 >kleiner als</entry
0599 > <entry
0600 >Ergebnis ist <quote
0601 >wahr</quote
0602 > wenn <userinput
0603 >$A</userinput
0604 > kleiner ist als <userinput
0605 >$B</userinput
0606 ></entry
0607 > </row
0608 > <row
0609 > <entry
0610 ><userinput
0611 >$A &gt;= $B</userinput
0612 ></entry
0613 > <entry
0614 >größer oder gleich</entry
0615 > <entry
0616 >Ergebnis ist <quote
0617 >wahr</quote
0618 > wenn <userinput
0619 >$A</userinput
0620 > größer oder gleich <userinput
0621 >$B</userinput
0622 > ist</entry
0623 > </row
0624 > <row
0625 > <entry
0626 ><userinput
0627 >$A &lt;= $B</userinput
0628 ></entry
0629 > <entry
0630 >kleiner oder gleich</entry
0631 > <entry
0632 >Ergebnis ist <quote
0633 >wahr</quote
0634 > wenn <userinput
0635 >$A</userinput
0636 > kleiner oder gleich <userinput
0637 >$B</userinput
0638 > ist</entry
0639 > </row
0640 > </tbody
0641 > </tgroup
0642 > </table
0643 > $A und $B müssen <link linkend="number"
0644 >Zahlen</link
0645 > oder <link linkend="assignment-of-variables"
0646 >Variablen</link
0647 > sein, die Zahlen enthalten.</para>
0648 </sect2>
0649 
0650 
0651 </sect1>
0652 
0653 
0654 
0655 <sect1 id="commands">
0656 <title
0657 >Befehle</title>
0658 <para
0659 >Mit Befehlen sagen Sie der Schildkröte oder &kturtle;, was sie tun soll. Einige Befehle brauchen Eingabewerte, andere geben Werte zurück. In diesem Abschnitt werden alle eingebauten Befehle für &kturtle; erklärt. Zusätzlich können mit <link linkend="learn"
0660 ><userinput
0661 >lerne</userinput
0662 ></link
0663 > benutzerdefinierte Befehle erstellt werden. Eingebaute Befehle, die hier vorgestellt werden, sind dunkelblau <glossterm
0664 >hervorgehoben</glossterm
0665 >.</para>
0666 
0667 <sect2 id="moving-the-turtle">
0668 <title
0669 >Die Schildkröte in Bewegung setzen</title>
0670 <para
0671 >Es gibt verschiedene Befehle, um die Schildkröte auf dem Bildschirm zu bewegen.</para>
0672 
0673   <variablelist>
0674     <anchor id="forward"/>
0675     <varlistentry
0676 > 
0677       <term
0678 >vorwärts (vw)<indexterm
0679 ><primary
0680 >vorwärts (vw)</primary
0681 ></indexterm
0682 ></term>
0683       <listitem
0684 ><para
0685 ><screen
0686 >vorwärts X</screen
0687 ><userinput
0688 >vorwärts</userinput
0689 > bewegt die Schildkröte um einen Betrag von X Pixeln vorwärts. Wenn der Stift unten ist, zeichnet die Schildkröte eine Linie. <userinput
0690 >vorwärts</userinput
0691 > kann als <userinput
0692 >vw</userinput
0693 > abgekürzt werden.</para
0694 ></listitem>
0695     </varlistentry>
0696   </variablelist>
0697   <variablelist>
0698     <anchor id="backward"/>
0699     <varlistentry
0700 >  
0701       <term
0702 >rückwärts (rw)<indexterm
0703 ><primary
0704 >rückwärts (rw)</primary
0705 ></indexterm
0706 ></term>
0707       <listitem
0708 ><para
0709 ><screen
0710 >rückwärts X</screen
0711 ><userinput
0712 >rückwärts</userinput
0713 > bewegt die Schildkröte um einen Betrag von X Pixeln zurück. Wenn der Stift unten ist, zeichnet die Schildkröte eine Linie. <userinput
0714 >rückwärts</userinput
0715 > kann als <userinput
0716 >rw</userinput
0717 > abgekürzt werden.</para
0718 ></listitem>
0719     </varlistentry>
0720   </variablelist>
0721   <variablelist>
0722     <anchor id="turnleft"/>
0723     <varlistentry
0724 > 
0725       <term
0726 >linksdrehen (ld)<indexterm
0727 ><primary
0728 >linksdrehen (ld)</primary
0729 ></indexterm
0730 ></term>
0731       <listitem
0732 ><para
0733 ><screen
0734 >linksdrehen X</screen
0735 ><userinput
0736 >linksdrehen</userinput
0737 > dreht die Schildkröte um einen Betrag von X Grad nach links. <userinput
0738 >linksdrehen</userinput
0739 > kann als <userinput
0740 >ld</userinput
0741 > abgekürzt werden.</para
0742 ></listitem>
0743     </varlistentry>
0744   </variablelist>
0745   <variablelist>
0746     <anchor id="turnright"/>
0747     <varlistentry
0748 > 
0749       <term
0750 >rechtsdrehen (rd)<indexterm
0751 ><primary
0752 >rechtsdrehen (rd)</primary
0753 ></indexterm
0754 ></term>
0755       <listitem
0756 ><para
0757 ><screen
0758 >rechtsdrehen X</screen
0759 ><userinput
0760 >rechtsdrehen</userinput
0761 > dreht die Schildkröte um einen Betrag von X Grad nach rechts. <userinput
0762 >rechtsdrehen</userinput
0763 > kann als <userinput
0764 >rd</userinput
0765 > abgekürzt werden.</para
0766 ></listitem>
0767     </varlistentry>
0768   </variablelist>
0769   <variablelist>
0770     <anchor id="direction"/>
0771     <varlistentry
0772 > 
0773       <term
0774 >richtung (rtg)<indexterm
0775 ><primary
0776 >richtung (rtg)</primary
0777 ></indexterm
0778 ></term>
0779       <listitem
0780 ><para
0781 ><screen
0782 >richtung X</screen
0783 ><userinput
0784 >richtung</userinput
0785 > setzt die Bewegungsrichtung der Schildkröte auf X Grad gerechnet von Null, unabhängig von der vorherigen Bewegungsrichtung der Schildkröte. <userinput
0786 >richtung</userinput
0787 > kann als <userinput
0788 >rtg</userinput
0789 > abgekürzt werden.</para
0790 ></listitem>
0791     </varlistentry>
0792   </variablelist>
0793   <variablelist>
0794     <anchor id="getdirection"/>
0795     <varlistentry
0796 > 
0797       <term
0798 >holerichtung<indexterm
0799 ><primary
0800 >holerichtung</primary
0801 ></indexterm
0802 ></term>
0803       <listitem
0804 ><para
0805 ><screen
0806 >holerichtung</screen
0807 ><userinput
0808 >holerichtung</userinput
0809 > gibt die Bewegungsrichtung der Schildkröte in Grad bezogen auf die Richtung senkrecht nach oben, die als Null definiert ist. </para
0810 ></listitem>
0811     </varlistentry>
0812   </variablelist>
0813   <variablelist>
0814     <anchor id="center"/>
0815     <varlistentry
0816 > 
0817       <term
0818 >mitte<indexterm
0819 ><primary
0820 >mitte</primary
0821 ></indexterm
0822 ></term>
0823       <listitem
0824 ><para
0825 ><screen
0826 >mitte</screen
0827 ><userinput
0828 >mitte</userinput
0829 > bewegt die Schildkröte in die Mitte der Zeichenfläche.</para
0830 ></listitem>
0831     </varlistentry>
0832   </variablelist>
0833   <variablelist>
0834     <anchor id="go"/>
0835     <varlistentry
0836 > 
0837       <term
0838 >gehe<indexterm
0839 ><primary
0840 >gehe</primary
0841 ></indexterm
0842 ></term>
0843       <listitem
0844 ><para
0845 ><screen
0846 >gehe X,Y</screen
0847 ><userinput
0848 >gehe</userinput
0849 > bewegt die Schildkröte an eine bestimmten Stelle auf der Zeichenfläche. Dieser Ort ist X <glossterm linkend="pixels"
0850 >Pixel</glossterm
0851 > vom linken Rand und Y <glossterm linkend="pixels"
0852 >Pixel</glossterm
0853 > vom oberen Rand der Zeichenfläche entfernt.</para
0854 ></listitem>
0855     </varlistentry>
0856   </variablelist>
0857   <variablelist>
0858     <anchor id="gox"/>
0859     <varlistentry
0860 > 
0861       <term
0862 >gehex<indexterm
0863 ><primary
0864 >gehex (gx)</primary
0865 ></indexterm
0866 ></term>
0867       <listitem
0868 ><para
0869 ><screen
0870 >gehex X</screen
0871 >Mit dem Befehl <userinput
0872 >gehex</userinput
0873 > bewegt sich die Schildkröte auf X <glossterm linkend="pixels"
0874 >Pixel</glossterm
0875 > vom linken Rand der Zeichenfläche, bleibt dabei aber auf gleicher Höhe. <userinput
0876 >gehex</userinput
0877 > kann als <userinput
0878 >gx</userinput
0879 > abgekürzt werden.</para
0880 ></listitem>
0881     </varlistentry>
0882   </variablelist>
0883   <variablelist>
0884     <anchor id="goy"/>
0885     <varlistentry
0886 > 
0887       <term
0888 >gehey<indexterm
0889 ><primary
0890 >gehey (gy)</primary
0891 ></indexterm
0892 ></term>
0893       <listitem
0894 ><para
0895 ><screen
0896 >gehey Y</screen
0897 >Mit dem Befehl <userinput
0898 >gehey</userinput
0899 > bewegt sich die Schildkröte auf Y <glossterm linkend="pixels"
0900 >Pixel</glossterm
0901 > vom oberen Rand der Zeichenfläche, bleibt dabei aber auf gleicher Entfernung vom linken Rand der Zeichenfläche. <userinput
0902 >gehey</userinput
0903 > kann als <userinput
0904 >gy</userinput
0905 > abgekürzt werden.</para
0906 ></listitem>
0907     </varlistentry>
0908   </variablelist>
0909   <note
0910 ><para
0911 >Mit den Befehlen <userinput
0912 >gehe</userinput
0913 >, <userinput
0914 >gehex</userinput
0915 >, <userinput
0916 >gehey</userinput
0917 > und <userinput
0918 >mitte</userinput
0919 > zeichne die Schildkröte keine Linie, egal ob der Stift oben oder unten ist.</para>
0920   </note>
0921 </sect2>
0922 
0923 <sect2 id="locate-the-turtle">
0924 <title
0925 >Wo ist die Schildkröte?</title>
0926 <para
0927 >Es gibt zwei Befehle, die die Position der Schildkröte auf dem Bildschirm zurückgeben.</para>
0928 
0929   <variablelist>
0930     <anchor id="getx"/>
0931     <varlistentry
0932 > 
0933       <term
0934 >holex<indexterm
0935 ><primary
0936 >holex</primary
0937 ></indexterm
0938 ></term>
0939       <listitem
0940 ><para
0941 ><userinput
0942 >holex</userinput
0943 > gibt die Anzahl der Pixel vom linken Rand der Zeichenfläche bis zur aktuellen Position der Schildkröte zurück.</para
0944 ></listitem>
0945     </varlistentry>
0946   </variablelist>
0947   <variablelist>
0948     <anchor id="gety"/>
0949     <varlistentry
0950 > 
0951       <term
0952 >holey<indexterm
0953 ><primary
0954 >holey</primary
0955 ></indexterm
0956 ></term>
0957       <listitem
0958 ><para
0959 ><userinput
0960 >holey</userinput
0961 > gibt die Anzahl der Pixel vom oberen Rand der Zeichenfläche bis zur aktuellen Position der Schildkröte zurück.</para
0962 ></listitem>
0963     </varlistentry>
0964   </variablelist>
0965 </sect2>
0966 
0967 <sect2 id="pen">
0968 <title
0969 >Die Schildkröte kann zeichnen</title>
0970 <para
0971 >Die Schildkröte kann mit einem Stift Linien zeichnen, wenn sie sich bewegt. Um diesen Stift zu kontrollieren, gibt es einige Befehle, die diesem Abschnitt beschrieben werden.</para>
0972   <variablelist>
0973     <anchor id="penup"/>
0974     <varlistentry
0975 > 
0976       <term
0977 >stifthoch (sh)<indexterm
0978 ><primary
0979 >stifthoch (sh)</primary
0980 ></indexterm
0981 ></term>
0982       <listitem
0983 ><para
0984 ><screen
0985 >stifthoch</screen
0986 ><userinput
0987 >stifthoch</userinput
0988 > hebt den Stift von der Zeichenfläche. Wenn der Zeichenstift <quote
0989 >hoch</quote
0990 > ist, zeichnet die Schildkröte bei ihrer Bewegung keine Linie. Siehe auch <userinput
0991 >stiftrunter</userinput
0992 >. <userinput
0993 >stifthoch</userinput
0994 > kann als <userinput
0995 >sh</userinput
0996 > abgekürzt werden.</para
0997 ></listitem>
0998     </varlistentry>
0999   </variablelist>
1000   <variablelist>
1001     <anchor id="pendown"/>
1002     <varlistentry
1003 > 
1004       <term
1005 >stiftrunter (sr)<indexterm
1006 ><primary
1007 >stiftrunter (sr)</primary
1008 ></indexterm
1009 ></term>
1010       <listitem
1011 ><para
1012 ><screen
1013 >stiftrunter</screen
1014 ><userinput
1015 >stiftrunter</userinput
1016 > drückt den Stift auf die Zeichenfläche. Wenn der Zeichenstift <quote
1017 >runter</quote
1018 > ist, zeichnet die Schildkröte eine Linie bei ihrer Bewegung. Siehe auch <userinput
1019 >stifthoch</userinput
1020 >. <userinput
1021 >stiftrunter</userinput
1022 > kann als <userinput
1023 >sr</userinput
1024 > abgekürzt werden.</para
1025 ></listitem>
1026     </varlistentry>
1027   </variablelist>
1028   <variablelist>
1029     <anchor id="setpenwidth"/>
1030     <varlistentry
1031 > 
1032       <term
1033 >stiftbreite (sb)<indexterm
1034 ><primary
1035 >stiftbreite (sb)</primary
1036 ></indexterm
1037 ></term>
1038       <listitem
1039 ><para
1040 ><screen
1041 >stiftbreite X</screen
1042 ><userinput
1043 >stiftbreite</userinput
1044 > setzt die Stiftbreite (die Linienbreite) auf X <glossterm linkend="pixels"
1045 >Pixel</glossterm
1046 >. <userinput
1047 >stiftbreite</userinput
1048 > kann als <userinput
1049 >sb</userinput
1050 > abgekürzt werden.</para
1051 ></listitem>
1052     </varlistentry>
1053   </variablelist>
1054   <variablelist>
1055     <anchor id="setfgcolor"/>
1056     <varlistentry
1057 > 
1058       <term
1059 >stiftfarbe (sf)<indexterm
1060 ><primary
1061 >stiftfarbe (sf)</primary
1062 ></indexterm
1063 ></term>
1064       <listitem
1065 ><para
1066 ><screen
1067 >stiftfarbe R,G,B</screen
1068 ><userinput
1069 >stiftfarbe</userinput
1070 > setzt die Farbe für den Zeichenstift. <userinput
1071 >stiftfarbe</userinput
1072 > braucht eine <glossterm linkend="rgb"
1073 >RGB-Kombination</glossterm
1074 > als Eingabewert. <userinput
1075 >stiftfarbe</userinput
1076 > kann als <userinput
1077 >sf</userinput
1078 > abgekürzt werden.</para
1079 ></listitem>
1080     </varlistentry>
1081   </variablelist>
1082 </sect2>
1083 
1084 <sect2 id="canvas">
1085 <title
1086 >Befehle für die Zeichenfläche</title>
1087 <para
1088 >Es gibt mehrere Befehle für die Zeichenfläche.</para>
1089   <variablelist>
1090     <anchor id="resizecanvas"/>
1091     <varlistentry>
1092       <term
1093 >papiergröße (pg)<indexterm
1094 ><primary
1095 >papiergröße (pg)</primary
1096 ></indexterm
1097 ></term>
1098       <listitem
1099 ><para
1100 ><screen
1101 >papiergröße X,Y</screen
1102 >Mit dem Befehl <userinput
1103 >papiergröße</userinput
1104 > stellen Sie die Größe der Zeichenfläche ein. Als Eingabewert sind X und Y erforderlich, dabei ist X die neue Breite in <glossterm linkend="pixels"
1105 >Pixeln</glossterm
1106 > und Y die neue Höhe der Zeichenfläche in <glossterm linkend="pixels"
1107 >Pixeln</glossterm
1108 >. <userinput
1109 >papiergröße</userinput
1110 > kann als <userinput
1111 >pg</userinput
1112 > abgekürzt werden.</para
1113 ></listitem>
1114     </varlistentry>
1115   </variablelist>
1116   <variablelist>
1117     <anchor id="setbgcolor"/>
1118     <varlistentry
1119 > 
1120       <term
1121 >papierfarbe (pf)<indexterm
1122 ><primary
1123 >papierfarbe (pf)</primary
1124 ></indexterm
1125 ></term>
1126       <listitem
1127 ><para
1128 ><screen
1129 >papierfarbe R,G,B</screen
1130 ><userinput
1131 >papierfarbe</userinput
1132 > setzt die Farbe der Zeichenfläche. <userinput
1133 >papierfarbe</userinput
1134 > braucht eine <glossterm linkend="rgb"
1135 > RGB-Kombination</glossterm
1136 > als Eingabewert. <userinput
1137 >papierfarbe</userinput
1138 > kann als <userinput
1139 >pf</userinput
1140 > abgekürzt werden.</para
1141 ></listitem>
1142     </varlistentry>
1143   </variablelist>
1144 </sect2>
1145 
1146 <sect2 id="clean">
1147 <title
1148 >Befehle um aufzuräumen</title>
1149 <para
1150 >Es gibt zwei Befehle, um die Zeichenfläche nach einem Fehler wieder aufzuräumen.</para>
1151   <variablelist>
1152     <anchor id="clear"/>
1153     <varlistentry
1154 > 
1155       <term
1156 >lösche (lös)<indexterm
1157 ><primary
1158 >lösche (lös)</primary
1159 ></indexterm
1160 ></term>
1161       <listitem
1162 ><para
1163 ><screen
1164 >lösche</screen
1165 >Mit <userinput
1166 >lösche</userinput
1167 > entfernen Sie alle Zeichnungen von der Zeichenfläche. Alle anderen Einstellungen bleiben erhalten: Die Position und die Bewegungsrichtung der Schildkröte, ob die Schildkröte sichtbar ist und Farbe und Größe der Zeichenfläche.</para
1168 ></listitem>
1169     </varlistentry>
1170   </variablelist>
1171   <variablelist>
1172     <anchor id="reset"/>
1173     <varlistentry
1174 > 
1175       <term
1176 >zurücksetzen<indexterm
1177 ><primary
1178 >zurücksetzen</primary
1179 ></indexterm
1180 ></term>
1181       <listitem
1182 ><para
1183 ><screen
1184 >zurücksetzen</screen
1185 ><userinput
1186 >zurücksetzen</userinput
1187 > räumt gründlicher auf als der Befehl <userinput
1188 >lösche</userinput
1189 >. Nach der Ausführung des Befehls <userinput
1190 >zurücksetzen</userinput
1191 > sind alle Einstellungen wie beim Start von &kturtle;. Die Schildkröte steht mitten auf einer weißen Zeichenfläche, zeichnet die Linien mit schwarzer Farbe und die Papiergröße beträgt 400 x 400 Pixel.</para
1192 ></listitem>
1193     </varlistentry>
1194   </variablelist>
1195 </sect2>
1196 
1197 <sect2 id="sprites">
1198 <title
1199 >Die Schildkröte ist ein Grafiksymbol</title>
1200 <para
1201 >Viele Leute wissen nicht was Grafiksymbole sind, hier eine kurze Erklärung: Grafiksymbole sind kleine Bilder, die auf dem Bildschirm bewegt werden können. (Weitere Informationen finden Sie im Glossar unter <glossterm linkend="sprites"
1202 >Grafiksymbol</glossterm
1203 >). Die Schildkröte ist so ein Grafiksymbol.</para>
1204 <para
1205 >Als nächstes finden Sie eine vollständige Übersicht aller Befehle für das Grafiksymbol.</para>
1206 <note
1207 ><para
1208 >Diese Version von &kturtle; erlaubt noch nicht die Verwendung anderer Grafiksymbole als die Schildkröte. In späteren Versionen können Sie die Schildkröte durch selbst entworfene Symbole ersetzen.</para
1209 ></note>
1210   <variablelist>
1211     <anchor id="spriteshow"/>
1212     <varlistentry
1213 > 
1214       <term
1215 >zeigebild (zb)<indexterm
1216 ><primary
1217 >zeigebild (zb)</primary
1218 ></indexterm
1219 ></term>
1220       <listitem
1221 ><para
1222 ><screen
1223 >zeigebild</screen
1224 ><userinput
1225 >zeigebild</userinput
1226 > zeigt das Symbol der Schildkröte wieder an, wenn es ausgeblendet war. <userinput
1227 >zeigebild</userinput
1228 > kann als <userinput
1229 >zb</userinput
1230 > abgekürzt werden.</para
1231 ></listitem>
1232     </varlistentry>
1233   </variablelist>
1234   <variablelist>
1235     <anchor id="spritehide"/>
1236     <varlistentry
1237 > 
1238       <term
1239 >versteckebild (vb)<indexterm
1240 ><primary
1241 >versteckebild (vb)</primary
1242 ></indexterm
1243 ></term>
1244       <listitem
1245 ><para
1246 ><screen
1247 >versteckebild</screen
1248 ><userinput
1249 >versteckebild</userinput
1250 > schaltet das Symbol der Schildkröte aus, wenn sie nicht in Ihre Zeichnung passt. <userinput
1251 >versteckebild</userinput
1252 > kann als <userinput
1253 >vb</userinput
1254 > abgekürzt werden.</para
1255 ></listitem>
1256     </varlistentry>
1257   </variablelist>
1258 </sect2>
1259 
1260 <sect2 id="writing">
1261 <title
1262 >Kann die Schildkröte schreiben?</title>
1263 <para
1264 >Die Antwort lautet <quote
1265 >ja</quote
1266 >. Die Schildkröte kann jeden gewünschten Text schreiben.</para>
1267   <variablelist>
1268     <anchor id="print"/>
1269     <varlistentry
1270 > 
1271       <term
1272 >drucke<indexterm
1273 ><primary
1274 >drucke</primary
1275 ></indexterm
1276 ></term>
1277       <listitem
1278 ><para
1279 ><screen
1280 >drucke X</screen
1281 >Mit dem Befehl <userinput
1282 >drucke</userinput
1283 > schreibt die Schildkröte Text auf die Zeichenfläche. <userinput
1284 >drucke</userinput
1285 > braucht Zahlen und Zeichenfolgen als Eingabewert. Sie können auch mehrere Zahlen und Zeichenfolgen mit dem Symbol <userinput
1286 >+</userinput
1287 > verbinden, wie das folgende kleine Beispiel zeigt: <screen
1288 >$jahr = 2003
1289 $autor = "Cies"
1290 drucke $autor + " startete das KTurtle Projekt " + $jahr + " und arbeitet immer noch gerne daran!"
1291 </screen>
1292       </para
1293 ></listitem>
1294     </varlistentry>
1295   </variablelist>
1296   <variablelist>
1297     <anchor id="fontsize"/>
1298     <varlistentry
1299 > 
1300       <term
1301 >schriftgröße<indexterm
1302 ><primary
1303 >schriftgröße</primary
1304 ></indexterm
1305 ></term>
1306       <listitem
1307 ><para
1308 ><screen
1309 >schriftgröße X</screen
1310 ><userinput
1311 >schriftgröße</userinput
1312 > setzt die Größe der Schrift, die mit dem Befehl <userinput
1313 >drucke</userinput
1314 > benutzt wird. <userinput
1315 >schriftgröße</userinput
1316 > braucht nur eine Zahl als Eingabewert. Die Größe der Schrift wird in <glossterm linkend="pixels"
1317 >Pixeln</glossterm
1318 > angegeben.</para
1319 ></listitem>
1320     </varlistentry>
1321   </variablelist>
1322 </sect2>
1323 
1324 <sect2 id="math-commands">
1325 <title
1326 >Mathematische Befehle</title>
1327 <para
1328 >Im Folgenden werden die erweiterten mathematischen Befehle in &kturtle; beschrieben.</para>
1329   <variablelist>
1330     <anchor id="round"/>
1331     <varlistentry>
1332       <term
1333 >rund<indexterm
1334 ><primary
1335 >rund</primary
1336 ></indexterm
1337 ></term>
1338       <listitem
1339 ><para
1340 ><screen
1341 >rund(x)</screen
1342 ><userinput
1343 >rund</userinput
1344 > die angegebene Zahl zur nächsten ganzen Zahl. <screen>
1345 drucke rund(10.8)
1346 vorwärts 20
1347 drucke rund(10.3)
1348 </screen
1349 > mit diesen Anweisungen druckt die Schildkröte die Zahlen 11 and 10.</para
1350 ></listitem>
1351     </varlistentry>
1352   </variablelist>
1353   <variablelist>
1354     <anchor id="random"/>
1355     <varlistentry
1356 > 
1357       <term
1358 >zufall (zuf)<indexterm
1359 ><primary
1360 >zufall (zuf)</primary
1361 ></indexterm
1362 ></term>
1363       <listitem
1364 ><para
1365 ><screen
1366 >zufall X,Y</screen
1367 ><userinput
1368 >zufall</userinput
1369 > ist ein Befehl, der Eingabewerte braucht und einen Wert zurückgibt. Als Eingabe sind zwei Zahlen nötig, die erste (X) bestimmt die Untergrenze, die zweite (Y) die Obergrenze der Ausgabe. Der Rückgabewert ist eine zufällige Zahl größer oder gleich der unteren Grenze und kleiner oder gleich der oberen Grenze. Hier ein kurzes Beispiel: <screen>
1370 wiederhole 500 {
1371   $x = zufall 1,20
1372   vorwärts $x
1373   linksdrehen 10 - $x
1374 }
1375 </screen
1376 > Mit dem Befehl <userinput
1377 >zufall</userinput
1378 > können Sie ein wenig Chaos in Ihr Programm einfügen. </para
1379 ></listitem>
1380     </varlistentry>
1381   </variablelist>
1382   <variablelist>
1383     <anchor id="mod"/>
1384     <varlistentry
1385 > 
1386       <term
1387 >mod<indexterm
1388 ><primary
1389 >mod</primary
1390 ></indexterm
1391 ></term>
1392       <listitem
1393 ><para
1394 ><screen
1395 >mod X,Y</screen
1396 >Der Befehl <userinput
1397 >mod</userinput
1398 > gibt den Rest einer Division der ersten durch die zweite Zahl zurück.</para
1399 ></listitem>
1400     </varlistentry>
1401   </variablelist>
1402   <variablelist>
1403     <anchor id="sqrt"/>
1404     <varlistentry
1405 > 
1406       <term
1407 >wurzel<indexterm
1408 ><primary
1409 >wurzel</primary
1410 ></indexterm
1411 ></term>
1412       <listitem
1413 ><para
1414 ><screen
1415 >wurzel X</screen
1416 >Der Befehl <userinput
1417 >wurzel</userinput
1418 > wird benutzt, um die Quadratwurzel einer Zahl X zu berechnen.</para
1419 ></listitem>
1420     </varlistentry>
1421   </variablelist>
1422 <!--
1423   <variablelist>
1424     <anchor id="exp"/>
1425     <varlistentry
1426 > 
1427       <term
1428 >exp<indexterm
1429 ><primary
1430 >exp</primary
1431 ></indexterm
1432 ></term>
1433       <listitem
1434 ><para
1435 ><screen
1436 >sqrt X</screen>
1437       </para
1438 ></listitem>
1439     </varlistentry>
1440   </variablelist>
1441 -->
1442   <variablelist>
1443     <anchor id="pi"/>
1444     <varlistentry
1445 > 
1446       <term
1447 >pi<indexterm
1448 ><primary
1449 >pi</primary
1450 ></indexterm
1451 ></term>
1452       <listitem
1453 ><para
1454 ><screen
1455 >pi</screen
1456 >Dieser Befehl gibt die Konstante Pi, <userinput
1457 >3.14159</userinput
1458 > zurück.</para
1459 ></listitem>
1460     </varlistentry>
1461   </variablelist>
1462   <variablelist>
1463     <anchor id="sin"/>
1464     <anchor id="cos"/>
1465     <anchor id="tan"/>
1466     <varlistentry>
1467       <term
1468 >sin<indexterm
1469 ><primary
1470 >sin</primary
1471 ></indexterm
1472 >, cos<indexterm
1473 ><primary
1474 >cos</primary
1475 ></indexterm
1476 >, tan<indexterm
1477 ><primary
1478 >tan</primary
1479 ></indexterm
1480 ></term>
1481       <listitem
1482 ><para>
1483 <screen
1484 >sin X
1485 cos X
1486 tan X
1487 </screen
1488 >Diese drei Befehle sind die bekannten trigonometrischen Funktionen <userinput
1489 >sin</userinput
1490 >, <userinput
1491 >cos</userinput
1492 > und <userinput
1493 >tan</userinput
1494 >.Das Eingabeargument X dieser Befehle ist eine <link linkend="number"
1495 >Zahl</link
1496 >.</para
1497 ></listitem>
1498     </varlistentry>
1499   </variablelist>
1500   <variablelist>
1501     <anchor id="arcsin"/>
1502     <anchor id="arccos"/>
1503     <anchor id="arctan"/>
1504     <varlistentry>
1505       <term
1506 >arcsin<indexterm
1507 ><primary
1508 >arcsin</primary
1509 ></indexterm
1510 >, arccos<indexterm
1511 ><primary
1512 >arccos</primary
1513 ></indexterm
1514 >, arctan<indexterm
1515 ><primary
1516 >arctan</primary
1517 ></indexterm
1518 ></term>
1519       <listitem
1520 ><para>
1521 <screen
1522 >arcsin X
1523 arccos X
1524 arctan X
1525 </screen
1526 >Diese Befehle sind die inversen Funktionen von <link linkend="sin"
1527 >sin</link
1528 >, <link linkend="cos"
1529 >cos</link
1530 > und <link linkend="tan"
1531 >tan</link
1532 >. Das Eingabeargument X dieser Befehle ist eine <link linkend="number"
1533 >Zahl</link
1534 >.</para
1535 ></listitem>
1536     </varlistentry>
1537   </variablelist>
1538 </sect2>
1539 
1540 <sect2 id="dialogs">
1541 <title
1542 >Eingaben und Nachrichten mit Dialogen</title>
1543 <para
1544 >Ein Dialog ist ein kleines Fenster, das Meldungen anzeigt oder Eingaben ermöglicht. &kturtle; hat zwei Befehle für Dialoge: <userinput
1545 >nachricht</userinput
1546 > und <userinput
1547 >frage</userinput
1548 ></para>
1549   <variablelist>
1550     <anchor id="message"/>
1551     <varlistentry
1552 > 
1553       <term
1554 >nachricht<indexterm
1555 ><primary
1556 >nachricht</primary
1557 ></indexterm
1558 ></term>
1559       <listitem
1560 ><para
1561 ><screen
1562 >nachricht X</screen
1563 >Der Befehl <userinput
1564 >nachricht</userinput
1565 > braucht eine <link linkend="string" 
1566 >Zeichenfolge</link
1567 > als Eingabewert. Es öffnet sich ein Dialog und der Text der <link linkend="string" 
1568 >Zeichenfolge</link
1569 > wird angezeigt. <screen
1570 >nachricht "Cies startete KTurtle 2003 und arbeitet immer noch gerne daran!"
1571 </screen>
1572       </para
1573 ></listitem>
1574     </varlistentry>
1575   </variablelist>
1576   <variablelist>
1577     <anchor id="ask"/>
1578     <varlistentry
1579 > 
1580       <term
1581 >frage<indexterm
1582 ><primary
1583 >frage</primary
1584 ></indexterm
1585 ></term>
1586       <listitem
1587 ><para
1588 ><screen
1589 >frage X</screen
1590 ><userinput
1591 >frage</userinput
1592 > braucht eine <link linkend="string"
1593 >Zeichenfolge</link
1594 > als Eingabewert. Der Text der Zeichenfolge wird in einem Dialog angezeigt, genau wie bei <link linkend="message"
1595 >nachricht</link
1596 >, aber zusätzlich erscheint noch ein Eingabefeld. Nachdem eine <link linkend="number"
1597 >Zahl</link
1598 > oder eine <link linkend="string"
1599 >Zeichenfolge</link
1600 > in diese Textfeld eingegeben wurde, kann das Ergebnis in einer <link linkend="assignment-of-variables"
1601 >Variablen</link
1602 > gespeichert oder als Argument an einen <link linkend="commands"
1603 >Befehl</link
1604 > übergeben werden. Zum Beispiel <screen>
1605 $ein = frage "In welchem Jahr sind Sie geboren?"
1606 $aus = 2003-$ein
1607 drucke "Im Jahr 2003 waren Sie irgendwann " + $aus + " Jahre alt."
1608 </screen
1609 > Wenn Sie den Eingabedialog abbrechen oder keine Zeichen eingeben, hat die <link linkend="assignment-of-variables"
1610 >Variable</link
1611 > keinen Inhalt.</para
1612 ></listitem>
1613     </varlistentry>
1614   </variablelist>
1615 </sect2>
1616 
1617 </sect1>
1618 
1619 
1620 
1621 <sect1 id="assignment-of-variables">
1622 <title
1623 >Zuweisung von Variablen</title>
1624 <para
1625 >Zuerst werden die Variablen vorgestellt, dann wird die Zuweisung von Werten erklärt. </para>
1626 
1627 <para
1628 >Variablen sind Wörter oder Zeichenfolgen, die mit einem <quote
1629 >$</quote
1630 > beginnen, im <link linkend="the-editor"
1631 >Editor</link
1632 > werden sie purpurfarben <glossterm
1633 >hervorgehoben</glossterm
1634 >.</para>
1635 
1636 <para
1637 >Variablen können eine beliebige <link linkend="number"
1638 >Zahl</link
1639 >, <link linkend="string"
1640 >Zeichenfolge</link
1641 > oder <link linkend="boolean-value"
1642 >Booleschen Wert (wahr/falsch)</link
1643 > enthalten. Mit der Zuweisung <userinput
1644 >=</userinput
1645 > erhält eine Variable ihren Inhalt. Sie behält diesen Wert, bis das Programm beendet oder der Variablen ein anderer Wert zugewiesen wird.</para>
1646 
1647 <para
1648 >Ist Variablen erst einmal ein Wert zugewiesen worden, können Sie wie ihr Inhalt benutzt werden. Als Beispiel dazu der folgende Quelltext in &turtlescript;: <screen>
1649 $x = 10
1650 $x = $x / 3
1651 drucke $x
1652 </screen
1653 > Zuerst wird der Variablen <userinput
1654 >$x</userinput
1655 > der Wert <userinput
1656 >10</userinput
1657 > zugewiesen. Dann erhält <userinput
1658 >$x</userinput
1659 > den vorhandenen Wert geteilt durch <userinput
1660 >3</userinput
1661 > &mdash; in diesem Fall erhält   <userinput
1662 >$x</userinput
1663 > den Wert <userinput
1664 >10 / 3</userinput
1665 >. Dann wird <userinput
1666 >$x</userinput
1667 > ausgegeben. In Zeile zwei und drei wird die Variable <userinput
1668 >$x</userinput
1669 > wie iht Inhalt benutzt.</para>
1670 
1671 <para
1672 >Variablen muss ein Wert zugewiesen werden, ehe sie benutzt werden können. Ein Beispiel: <screen>
1673 drucke $n
1674 </screen
1675 > Mit diesem Befehl erhalten Sie eine Fehlermeldung.</para>
1676 
1677 <para
1678 >Betrachten Sie den folgen Quelltext in &turtlescript;:<screen>
1679 $a = 2004
1680 $b = 25
1681 
1682 # der nächste Befehl druckt "2029"
1683 drucke $a + $b
1684 rückwärts 30
1685 # der nächste Befehl druckt "2004 plus 25 gleich 2029"
1686 drucke $a + " plus " + $b + " gleich " + ($a + $b)
1687 rückwärts 30
1688 </screen
1689 > In den ersten zwei Zeilen wird der Wert der Variablen <userinput
1690 >$a</userinput
1691 > auf 2004 und <userinput
1692 >$b</userinput
1693 > auf 25 gesetzt. Der Rest des Beispiels besteht aus zwei <userinput
1694 >drucke</userinput
1695 > Befehlen mit dem Befehl <userinput
1696 >rückwärts 30</userinput
1697 > dazwischen. Der Kommentar vor jedem <userinput
1698 >drucke</userinput
1699 > erklärt was ausgegeben wird.  Der Befehl <userinput
1700 >rückwärts 30</userinput
1701 > ist erforderlich, um jede Ausgabe auf einer neuen Zeile zu schreiben. Dieses Beispiele zeigt, dass Variablen mit allen <link linkend="operators"
1702 >Operatoren</link
1703 > in der gleichen Weise wie ihr Wert benutzt werden können. Außerdem können sie als Eingabe für <link linkend="commands"
1704 >Befehle</link
1705 > dienen.</para>
1706 
1707 <para
1708 >Ein weiteres Beispiel: <screen>
1709 $name = frage "Wie heißt Du?"
1710 drucke "Hallo " + $name + ", Viel Spaß beim Programmieren..."
1711 </screen
1712 > Sie sehen, die Variable <userinput
1713 >$name</userinput
1714 > wird genauso wie eine Zeichenfolge behandelt.</para>
1715 
1716 <para
1717 >Wenn Sie mit Variablen arbeiten, ist das <link linkend="the-inspector"
1718 >Kontrollfenster</link
1719 > sehr hilfreich. In diesem Fenster werden alle zur Zeit benutzten Variablen und ihr Wert angezeigt.</para>
1720 </sect1>
1721 
1722 
1723 
1724 <sect1 id="controlling-execution">
1725 <title
1726 >Kontrolle der Programmausführung</title>
1727 <para
1728 >Mit den Befehlen zur Kontrollanweisung können Sie &mdash; wie der Name schon sagt &mdash; den Ablauf der Ausführung kontrollieren.</para>
1729 <para
1730 >Befehle zur Kontrollanweisung werden durch eine dunkelgrüne, fettgedruckte Schrift <glossterm
1731 >hervorgehoben</glossterm
1732 >. Die meistens zusammen mit der Kontrollanweisung verwendeten Klammern werden durch schwarze Schrift <glossterm
1733 >hervorgehoben</glossterm
1734 >.</para>
1735 
1736 <sect2 id="wait">
1737 <title
1738 >Lass die Schildkröte warten</title>
1739 <para
1740 >Wenn Sie schon in &kturtle; programmiert haben, ist Ihnen bestimmt aufgefallen,  dass sich die Schildkröte beim Zeichnen sehr schnell bewegt. Dieser Befehl lässt die Schildkröte eine bestimmte Zeit warten.</para>
1741   <variablelist>
1742     <varlistentry>
1743       <term
1744 >warte<indexterm
1745 ><primary
1746 >warte</primary
1747 ></indexterm
1748 ></term>
1749       <listitem
1750 ><para
1751 ><screen
1752 >warte X</screen
1753 >Mit <userinput
1754 >warte</userinput
1755 > wartet die Schildkröte X Sekunden. <screen>
1756 wiederhole 36 {
1757   vorwärts 5
1758   rechtsdrehen 10
1759   warte 0.5
1760 }
1761 </screen
1762 > Dieser Quelltext zeichnet einen Kreis, aber die Schildkröte wartet eine halbe Sekunde nach jedem Schritt. Dies vermittelt den Eindruck einer Schildkröte, die sich langsam bewegt.</para
1763 ></listitem>
1764     </varlistentry>
1765   </variablelist>
1766 </sect2>
1767 
1768 <sect2 id="if">
1769 <title
1770 >Kontrollanweisung <quote
1771 >wenn</quote
1772 ></title>
1773   <variablelist>
1774     <varlistentry>
1775       <term
1776 >wenn<indexterm
1777 ><primary
1778 >wenn</primary
1779 ></indexterm
1780 ></term>
1781       <listitem
1782 ><para
1783 ><screen
1784 >wenn <link linkend="boolean-value"
1785 >boolescher wert</link
1786 > { ... }</screen
1787 >Der Quelltext zwischen den Klammern wird nur dann ausgeführt, <userinput
1788 >wenn</userinput
1789 > der <link linkend="boolean-value"
1790 >boolesche Wert</link
1791 > <quote
1792 >wahr</quote
1793 > ist. <screen>
1794 $x = 6
1795 wenn $x &gt; 5 {
1796   drucke "$x ist größer als fünf!"
1797 }
1798 </screen
1799 > In der ersten Zeilen weisen Sie <userinput
1800 >$x</userinput
1801 > den Wert 6 zu. In der zweiten Zeile wird ein <link linkend="comparing-operators"
1802 >Vergleichsoperator</link
1803 > benutzt, um den Wert von <userinput
1804 >$x &gt; 5</userinput
1805 > zu ermitteln. Da das Ergebnis <quote
1806 >wahr</quote
1807 > ist 6 ist größer als 5, lässt Kontrollanweisung <userinput
1808 >wenn</userinput
1809 > den Quelltext zwischen den Klammern ausführen.</para
1810 ></listitem>
1811     </varlistentry>
1812   </variablelist>
1813 </sect2>
1814 
1815 <sect2 id="else">
1816 <title
1817 >Kontrollanweisung <quote
1818 >sonst</quote
1819 ></title>
1820   <variablelist>
1821     <varlistentry>
1822       <term
1823 >sonst<indexterm
1824 ><primary
1825 >sonst</primary
1826 ></indexterm
1827 ></term>
1828       <listitem
1829 ><para
1830 ><screen
1831 >wenn <link linkend="boolean-value"
1832 >boolescher wert</link
1833 > { ... } sonst { ... }</screen
1834 ><userinput
1835 >sonst</userinput
1836 > kann zusammen mit der Kontrollanweisung <link linkend="if"
1837 ><userinput
1838 >wenn</userinput
1839 ></link
1840 > benutzt werden. Der Quelltext zwischen den Klammern nach <userinput
1841 >sonst</userinput
1842 > wird nur dann ausgeführt, wenn der <link linkend="boolean-value"
1843 >boolesche Wert</link
1844 >  <quote
1845 >falsch</quote
1846 > ergibt: <screen>
1847 zurücksetzen
1848 $x = 4
1849 wenn $x &gt; 5 {
1850   drucke "$x ist größer als fünf!"
1851 }
1852 sonst
1853 {
1854   drucke "$x ist kleiner als sechs!"
1855 }
1856 </screen
1857 > Der <link linkend="comparing-operators"
1858 >Vergleichsoperator</link
1859 > wertet  Ausdruck <userinput
1860 >$x &gt; 5</userinput
1861 > aus. Da 4 kleiner als 5 ist, ist das Ergebnis <quote
1862 >falsch</quote
1863 >. Das führt dazu, dass der Quelltext zwischen den Klammern nach <userinput
1864 >sonst</userinput
1865 > ausgeführt wird.</para
1866 ></listitem>
1867     </varlistentry>
1868   </variablelist>
1869 </sect2>
1870 
1871 <sect2 id="while">
1872 <title
1873 >Die <quote
1874 >solange</quote
1875 >-Schleife</title>
1876   <variablelist>
1877     <varlistentry>
1878       <term
1879 >solange<indexterm
1880 ><primary
1881 >solange</primary
1882 ></indexterm
1883 ></term>
1884       <listitem
1885 ><para
1886 ><screen
1887 >solange <link linkend="boolean-value"
1888 >boolescher wert</link
1889 > { ... }</screen
1890 >Die Kontrollanweisung <userinput
1891 >solange</userinput
1892 > ist der Anweisung <link linkend="if"
1893 ><userinput
1894 >wenn</userinput
1895 ></link
1896 > sehr ähnlich. Der Unterschied liegt darin, dass <userinput
1897 >solange</userinput
1898 > die Ausführung des Quelltext zwischen den Klammern (in einer Schleife) solange wiederholt, bis der <link linkend="boolean-value"
1899 >booleschen Wert</link
1900 > <quote
1901 >falsch</quote
1902 > ergibt: <screen>
1903 $x = 1
1904 solange $x &lt; 5 {
1905   vorwärts 10
1906   warte 1
1907   $x = $x + 1
1908 }
1909 </screen
1910 > In der ersten Zeile wird <userinput
1911 >$x</userinput
1912 > der Wert 1 zugewiesen. In der zweiten Zeile wird <userinput
1913 >$x &lt; 5</userinput
1914 > ausgewertet. Da das Ergebnis <quote
1915 >wahr</quote
1916 > ist, lässt die Kontrollanweisung <userinput
1917 >solange</userinput
1918 > den Quelltext zwischen den Klammern ausführen, bis <userinput
1919 >$x &lt; 5</userinput
1920 > <quote
1921 >falsch</quote
1922 > ist. In diesem Beispiel wird der Quelltext zwischen den Klammern viermal ausgeführt, da bei jeder Ausführung der fünften Zeile <userinput
1923 >$x</userinput
1924 > um 1 vergrößert wird.</para
1925 ></listitem>
1926     </varlistentry>
1927   </variablelist>
1928 </sect2>
1929 
1930 <sect2 id="repeat">
1931 <title
1932 >Die <quote
1933 >wiederhole</quote
1934 >-Schleife</title>
1935   <variablelist>
1936     <varlistentry>
1937       <term
1938 >wiederhole<indexterm
1939 ><primary
1940 >wiederhole</primary
1941 ></indexterm
1942 ></term>
1943       <listitem
1944 ><para
1945 ><screen
1946 >wiederhole <link linkend="number"
1947 >zahl</link
1948 > { ... }</screen
1949 >Die Kontrollanweisung <userinput
1950 >wiederhole</userinput
1951 > funktioniert ähnlich wie <link linkend="while"
1952 ><userinput
1953 >solange</userinput
1954 ></link
1955 >, nur dass mit <userinput
1956 >wiederhole</userinput
1957 > der Quelltext innerhalb der Klammern mit der angegebenen Anzahl von Wiederholungen ausgeführt wird.</para
1958 ></listitem>
1959     </varlistentry>
1960   </variablelist>
1961 </sect2>
1962 
1963 <sect2 id="for">
1964 <title
1965 >Die <quote
1966 >von</quote
1967 >-Schleife, eine zählende Schleife</title>
1968   <variablelist>
1969     <varlistentry>
1970       <term
1971 >von<indexterm
1972 ><primary
1973 >von</primary
1974 ></indexterm
1975 ><indexterm
1976 ><primary
1977 >bis</primary
1978 ></indexterm
1979 ><indexterm
1980 ><primary
1981 >schritt</primary
1982 ></indexterm
1983 ></term>
1984       <listitem
1985 ><para
1986 ><screen
1987 >von <link linkend="assignment-of-variables"
1988 >Variable</link
1989 > = <link linkend="number"
1990 >Zahl</link
1991 > bis <link linkend="number"
1992 >Zahl</link
1993 > { ... }</screen
1994 >Die <userinput
1995 >von</userinput
1996 >-Schleife ist eine <quote
1997 >zählende Schleife</quote
1998 >, &ie; zählt sie für Sie. Die erste Zahl bestimmt die Variable für den Wert in der ersten Schleife. Nach jedem Durchlauf der Schleife wird die Zahl vergrößert, bis die zweite Zahl erreicht ist. <screen>
1999 von $x = 1 bis 10 {
2000   drucke $x * 7
2001   vorwärts 15
2002 }
2003 </screen
2004 > Jedes Mal, wenn der Quelltext zwischen den Klammern ausgeführt wird, vergrößert sich der Wert von <userinput
2005 >$x</userinput
2006 > um eins, bis <userinput
2007 >$x</userinput
2008 > den Wert 10 erreicht. Der Quelltext zwischen den Klammern druckt den Wert von <userinput
2009 >$x</userinput
2010 > multipliziert mit 7. Nach dem Ende dieses Programms sehen Sie das 1x7 auf der Zeichenfläche. </para>
2011      <para
2012 >Als Standard ist die Schrittweite einer Schleife auf 1 eingestellt, für einen anderen Wert benutzen Sie: <screen
2013 >von <link linkend="assignment-of-variables"
2014 >variable</link
2015 > = <link linkend="number"
2016 >zahl</link
2017 > bis <link linkend="number"
2018 >zahl</link
2019 > schritt <link linkend="number"
2020 >zahl</link
2021 > { ... }</screen
2022 ></para
2023 ></listitem>
2024     </varlistentry>
2025   </variablelist>
2026 </sect2>
2027 
2028 <sect2 id="break">
2029 <title
2030 >Verlassen einer Schleife</title>
2031   <variablelist>
2032     <varlistentry>
2033       <term
2034 >abbrechen<indexterm
2035 ><primary
2036 >abbrechen</primary
2037 ></indexterm
2038 ></term>
2039       <listitem
2040 ><para
2041 ><screen
2042 >abbrechen</screen
2043 >Beendet die laufende Schleife sofort. Die Ausführung des Programms wird mit der ersten Anweisung nach der Schleife fortgesetzt.</para
2044 ></listitem>
2045     </varlistentry>
2046   </variablelist>
2047 </sect2>
2048 
2049 <sect2 id="exit">
2050 <title
2051 >Programmausführung abbrechen</title>
2052   <variablelist>
2053     <varlistentry>
2054       <term
2055 >ende<indexterm
2056 ><primary
2057 >ende</primary
2058 ></indexterm
2059 ></term>
2060       <listitem
2061 ><para
2062 ><screen
2063 >ende</screen
2064 >Beendet die Ausführung des Ihres Programms.</para
2065 ></listitem>
2066     </varlistentry>
2067   </variablelist>
2068 </sect2>
2069 
2070 <sect2 id="assert">
2071 <title
2072 >Zusicherungen zur Laufzeit überprüfen</title>
2073   <variablelist>
2074     <varlistentry>
2075       <term
2076 >zusichern<indexterm
2077 ><primary
2078 >zusichern</primary
2079 ></indexterm
2080 ></term>
2081       <listitem
2082 ><para
2083 ><screen
2084 >zusichern <link linkend="boolean-value"
2085 >boolescher wert</link
2086 > { ... }</screen
2087 >Zusicherungen können als Begründung der Fehlerfreiheit des Programms oder einer Eingabe verwendet werden. <screen
2088 >$in = frage "In welchem Jahr sind Sie geboren?"
2089 # das Jahr muss positiv sein
2090 zusichern $in 
2091 > 0
2092 </screen
2093 ></para
2094 ></listitem>
2095     </varlistentry>
2096   </variablelist>
2097 </sect2>
2098 </sect1>
2099 
2100 
2101 <sect1 id="learn">
2102 
2103 <title
2104 >Schreiben Sie Ihre eigenen Befehle mit <quote
2105 >lerne</quote
2106 ></title>
2107 <para
2108 ><userinput
2109 >lerne</userinput
2110 ><indexterm
2111 ><primary
2112 >lerne</primary
2113 ></indexterm
2114 > ist ein besonderer Befehl, weil Sie damit Ihre eigenen Befehle erzeugen können. Ihre eigenen Befehle können einen <glossterm linkend="input-output"
2115 >Eingabewert</glossterm
2116 > erfordern und einen <glossterm linkend="input-output"
2117 >Ausgabewert</glossterm
2118 > zurückgeben. Dieses Beispiel zeigt, wie Sie einen neuen Befehl schreiben: <screen>
2119 lerne kreis $x {
2120   wiederhole 36 {
2121     vorwärts $x
2122     linksdrehen 10
2123   }
2124 }
2125 </screen
2126 > Der neue Befehl hat den Namen <userinput
2127 >kreis</userinput
2128 >. <userinput
2129 >kreis</userinput
2130 > braucht einen <glossterm linkend="input-output"
2131 >Eingabewert</glossterm
2132 >, eine Zahl als Argument, um die Größe des Kreises festzulegen. <userinput
2133 >kreis</userinput
2134 > gibt keinen <glossterm linkend="input-output"
2135 >Ausgabewert</glossterm
2136 > zurück. <userinput
2137 >kreis</userinput
2138 > kann jetzt wie ein normaler Befehl benutzt werden, wie das folgende Beispiel zeigt: <screen
2139 >lerne kreis $X {
2140   wiederhole 36 {
2141     vorwärts $X
2142     linksdrehen 10
2143   }
2144 }
2145 
2146 gehe 200,200
2147 kreis 20
2148 
2149 gehe 300,200
2150 kreis 40  
2151 </screen>
2152 </para>
2153 <para
2154 >Im nächsten Beispiel wird ein Befehl mit Rückgabewert<indexterm
2155 ><primary
2156 >zurück</primary
2157 ></indexterm
2158 > gezeigt. <screen>
2159 lerne fakultät $x {
2160   $r = 1
2161   von $i = 1 bis $x {
2162     $r = $r * $i
2163   }
2164   zurück $r
2165 }
2166 
2167 drucke fakultät 5
2168 </screen
2169 > In diesem Beispiel wird ein neuer Befehl mit dem Namen <userinput
2170 >fakultät</userinput
2171 > erstellt. Wenn der Eingabewert des Befehls <userinput
2172 >5</userinput
2173 > ist, wird <userinput
2174 >5*4*3*2*1</userinput
2175 > zurückgegeben. Mit dem Befehl <userinput
2176 >zurück</userinput
2177 > wird der <glossterm linkend="input-output"
2178 >Rückgabe</glossterm
2179 >wert bestimmt und die Ausführung kehrt wieder zum Aufruf dieses Befehls zurück.</para>
2180 <para
2181 >Befehle können auch mehr als zwei <glossterm linkend="input-output"
2182 >Eingaben</glossterm
2183 > haben. Im nächsten Beispiel sehen Sie einen Befehl zum Zeichnen eines Rechtecks. <screen>
2184 lerne rechteck $x, $y {
2185   vorwärts $y
2186   rechtsdrehen 90
2187   vorwärts $x
2188   rechtsdrehen 90
2189   vorwärts $y
2190   rechtsdrehen 90
2191   vorwärts $x
2192   rechtsdrehen 90
2193 }
2194 </screen
2195 > Dann können Sie <userinput
2196 >rechteck 50, 100</userinput
2197 > benutzen und die Schildkröte zeichnet ein Rechteck auf die Zeichenfläche. </para>
2198   
2199 </sect1>
2200 
2201 </chapter>