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 ⪚ <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 ⪚ <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 > 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 < 10) und ($b == 5)) und ($a < $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 < 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 > 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 > $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 < $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 >= $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 <= $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 > — 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 — wie der Name schon sagt — 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 > 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 > 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 > 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 > 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 < 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 < 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 < 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>