Warning, /education/kturtle/po/es/docs/kturtle/programming-reference.docbook is written in an unsupported language. File is not indexed.
0001 <chapter id="reference"> 0002 <title 0003 >Guía del lenguaje de programación &turtlescript; </title> 0004 <para 0005 >Esta es la guía del lenguaje de programación &turtlescript; de &kturtle;. La primera sección de este capítulo está dedicada a aspectos relacionados con la <link linkend="grammar" 0006 >gramática</link 0007 > de los programas de &turtlescript;. La segunda sección trata exclusivamente los <link linkend="mathematical-operators" 0008 >operadores aritméticos</link 0009 >, los <link linkend="boolean-operators" 0010 >operadores lógicos (verdadero/falso)</link 0011 > y los <link linkend="comparing-operators" 0012 >operadores de comparación</link 0013 >. La tercera sección es, básicamente, una gran lista con todos las <link linkend="commands" 0014 >órdenes</link 0015 > explicadas una a una. La cuarta sección explica cómo <link linkend="assignment-of-variables" 0016 >asignar valores a las variables</link 0017 >. Finalmente, en la quinta sección se explica cómo organizar la ejecución de órdenes usando <link linkend="controlling-execution" 0018 >declaraciones de control de la ejecución</link 0019 > y, en la sexta, cómo puedes crear tus propias órdenes con <link linkend="learn" 0020 ><userinput 0021 >aprender</userinput 0022 ></link 0023 >.</para> 0024 0025 <sect1 id="grammar"> 0026 <title 0027 >La gramática de &turtlescript;</title> 0028 <para 0029 >Como ocurre con todos los idiomas, &turtlescript; consta de diferentes tipos de palabras y símbolos. En español distinguimos entre verbos (como «caminar» y «cantar») y sustantivos (como «hermana» o «casa») que se usan para distintos propósitos. &turtlescript; es un lenguaje de programación que se usa para dar instrucciones a la tortuga sobre lo que tiene que hacer.</para> 0030 <para 0031 >En esta sección, se explican brevemente los distintos tipos de palabras que usa &turtlescript;. Se introduce lo que son <link linkend="comment" 0032 >comentarios</link 0033 >, <link linkend="command" 0034 >órdenes</link 0035 > y los tres diferentes tipos de literales: <link linkend="number" 0036 >números</link 0037 >, <link linkend="string" 0038 >cadenas</link 0039 > y <link linkend="boolean-value" 0040 >valores lógicos (verdadero/falso)</link 0041 >.</para> 0042 0043 0044 <sect2 id="comment"> 0045 <title 0046 >Comentarios</title> 0047 <para 0048 >Un programa consta de instrucciones (que es lo que se ejecuta) y de los denominados comentarios. Los comentarios no se ejecutan. Es decir, &kturtle; los ignora por completo cuando se ejecuta un programa. Los comentarios están ahí para que otros programadores puedan comprender mejor el programa. Todo lo que aparece después de un símbolo <userinput 0049 >#</userinput 0050 > se considera como un comentario en &turtlescript;. Un ejemplo es este programa que no hace nada: <screen> 0051 # este programa no hace nada, es solo un comentario 0052 </screen 0053 > Es un programa inútil, pero permite explicar bien el asunto.</para> 0054 <para 0055 >Los comentarios son especialmente útiles en el caso de programas más complejos, ya que permiten dar consejos a otros programadores. En el siguiente programa verás comentarios que se usan junto con la orden <link linkend="print" 0056 >escribir</link 0057 >. <screen> 0058 # este programa ha sido creado por Cies Breijs 0059 escribir "este texto aparecerá escrito en el lienzo" 0060 # la línea anterior no es un comentario, pero la siguiente sí que lo es: 0061 # escribir "¡este texto no aparecerá escrito!" 0062 </screen 0063 > La primera línea describe el programa. La segunda línea es ejecutada por &kturtle;, que escribe en el lienzo <userinput 0064 >este texto aparecerá escrito en el lienzo</userinput 0065 >. La tercera línea es un comentario. Y la cuarta es un comentario que contiene una orden de &turtlescript;. Si de esta cuarta línea se eliminara el símbolo <userinput 0066 >#</userinput 0067 >, &kturtle; ejecutaría la orden de escribir. Lo que los programadores suelen decir es que la orden de escribir se ha «comentado».</para> 0068 <para 0069 >Las líneas comentadas aparecen <glossterm 0070 >resaltadas</glossterm 0071 > en gris claro en el <link linkend="the-editor" 0072 >editor de código</link 0073 >.</para> 0074 </sect2> 0075 0076 <sect2 id="command"> 0077 <title 0078 >Órdenes</title> 0079 <para 0080 >Con las órdenes puedes decirle a la tortuga o a &kturtle; lo que tiene que hacer. Algunas órdenes necesitan un parámetro de entrada, mientras que otras devuelven un parámetro de salida. <screen> 0081 # avanzar es una orden que requiere de un parámetro de entrada, en este caso el número 100: 0082 avanzar 100 0083 </screen 0084 > La primera línea es un <link linkend="comment" 0085 >comentario</link 0086 >. La segunda línea contiene la orden <userinput 0087 >avanzar</userinput 0088 > y el <link linkend="number" 0089 >número</link 0090 > <userinput 0091 >100</userinput 0092 >. El número no es parte de la orden, es solo su parámetro de entrada.</para> 0093 <para 0094 >Algunas órdenes, como ⪚ <userinput 0095 >ir</userinput 0096 >, necesitan más de un valor de entrada. Si hay varios valores, hay que separarlos con el carácter <userinput 0097 >,</userinput 0098 > (coma).</para> 0099 <para 0100 >Para una descripción detallada de todas las órdenes que reconoce &kturtle;, vaya <link linkend="commands" 0101 >aquí</link 0102 >. Las órdenes integradas en &kturtle; aparecen <glossterm 0103 >resaltadas</glossterm 0104 > en azul oscuro.</para> 0105 </sect2> 0106 0107 <sect2 id="number"> 0108 <title 0109 >Números</title> 0110 <para 0111 >Lo más probable es que ya sepa bastante de números. La forma en que &kturtle; usa los números no es muy diferente a cómo se hace en el idioma hablado o en las matemáticas.</para> 0112 <para 0113 >Tenemos los llamados números naturales («<userinput 0114 >0</userinput 0115 >», «<userinput 0116 >1</userinput 0117 >», «<userinput 0118 >2</userinput 0119 >», «<userinput 0120 >3</userinput 0121 >», «<userinput 0122 >4</userinput 0123 >», «<userinput 0124 >5</userinput 0125 >», etc.), los enteros negativos («<userinput 0126 >-1</userinput 0127 >», «<userinput 0128 >-2</userinput 0129 >», «<userinput 0130 >-3</userinput 0131 >», etc.) y los números con decimales («<userinput 0132 >0,1</userinput 0133 >», «<userinput 0134 >3,14</userinput 0135 >», «<userinput 0136 >33,3333</userinput 0137 >», «<userinput 0138 >-5,05</userinput 0139 >», «<userinput 0140 >-1,0</userinput 0141 >», etc.). El carácter <userinput 0142 >,</userinput 0143 > (coma) se utiliza como separador. </para> 0144 <para 0145 >Los números pueden utilizarse en conjunción con <link linkend="mathematical-operators" 0146 >operadores aritméticos</link 0147 > y <link linkend="comparing-operators" 0148 >operadores de comparación</link 0149 >. También pueden guardarse en <link linkend="assignment-of-variables" 0150 >variables</link 0151 >. Los números aparecen <glossterm 0152 >resaltados</glossterm 0153 > en rojo oscuro.</para> 0154 </sect2> 0155 0156 <!-- constants like pi? --> 0157 0158 <sect2 id="string"> 0159 <title 0160 >Cadenas</title> 0161 <para 0162 >Primero un ejemplo: <screen> 0163 escribir "Hola, soy una cadena." 0164 </screen 0165 > En este ejemplo, <userinput 0166 >escribir</userinput 0167 > es una orden y <userinput 0168 >"Hola, soy una cadena."</userinput 0169 > es una cadena. Las cadenas comienzan y terminan con dobles comillas (<userinput 0170 >"</userinput 0171 >); es esto lo que hace que &kturtle; las identifique como tal.</para> 0172 <para 0173 >Al igual que ocurre con los <link linkend="number" 0174 >números</link 0175 >, las cadenas también se pueden guardar en <link linkend="assignment-of-variables" 0176 >variables</link 0177 >. Sin embargo, al contrario que los números, las cadenas no pueden usarse con <link linkend="mathematical-operators" 0178 >operadores aritméticos </link 0179 > o con <link linkend="comparing-operators" 0180 >operadores de comparación</link 0181 >. Las cadenas aparecen <glossterm 0182 >resaltadas</glossterm 0183 > en rojo. </para> 0184 </sect2> 0185 0186 <sect2 id="boolean-value"> 0187 <title 0188 >Valores lógicos (verdadero/falso)</title> 0189 <para 0190 >Solo hay dos valores lógicos: <userinput 0191 >verdadero</userinput 0192 ><indexterm 0193 ><primary 0194 >verdadero</primary 0195 ></indexterm 0196 > y <userinput 0197 >falso</userinput 0198 ><indexterm 0199 ><primary 0200 >falso</primary 0201 ></indexterm 0202 >, aunque en ocasiones se los denomina «<userinput 0203 >encendido</userinput 0204 >» y «<userinput 0205 >apagado</userinput 0206 >», «<userinput 0207 >sí</userinput 0208 >» y «<userinput 0209 >no</userinput 0210 >» o «<userinput 0211 >uno</userinput 0212 >» y «<userinput 0213 >cero</userinput 0214 >». Pero en &turtlescript; siempre los llamaremos <userinput 0215 >verdadero</userinput 0216 > y <userinput 0217 >falso</userinput 0218 >. Observa este código de &turtlescript;: <screen> 0219 $a = verdadero 0220 </screen 0221 > Si miras en el <link linkend="the-inspector" 0222 >inspector</link 0223 > verás que a la <link linkend="assignment-of-variables" 0224 >variable</link 0225 > <userinput 0226 >$a</userinput 0227 > le corresponde el valor <userinput 0228 >verdadero</userinput 0229 >, que es de tipo lógico.</para> 0230 <para 0231 >Con frecuencia, los valores lógicos son el resultado de un <link linkend="comparing-operators" 0232 >operador de comparación</link 0233 >, como ocurre en el siguiente ejemplo: <screen> 0234 $respuesta = 10 > 3 0235 </screen 0236 > A la <link linkend="assignment-of-variables" 0237 >variable</link 0238 > <userinput 0239 >$respuesta</userinput 0240 > le corresponde el valor <userinput 0241 >verdadero</userinput 0242 > porque <userinput 0243 >10</userinput 0244 > es mayor que <userinput 0245 >3</userinput 0246 >. </para> 0247 <para 0248 >Los valores lógicos <userinput 0249 >verdadero</userinput 0250 > y <userinput 0251 >falso</userinput 0252 > aparecen <glossterm 0253 >resaltados</glossterm 0254 > en rojo oscuro.</para> 0255 </sect2> 0256 0257 </sect1> 0258 0259 0260 0261 <sect1 id="operators"> 0262 <title 0263 >Operadores aritméticos, lógicos y de comparación</title> 0264 <para 0265 >Aunque el título de esta sección parezca complejo, verás como el contenido no es tan difícil como parece.</para> 0266 0267 <sect2 id="mathematical-operators"> 0268 <title 0269 >Operadores aritméticos</title> 0270 <para 0271 >Estos son los símbolos aritméticos básicos: suma (<userinput 0272 >+</userinput 0273 >), resta (<userinput 0274 >-</userinput 0275 >), multiplicación (<userinput 0276 >*</userinput 0277 >), división (<userinput 0278 >/</userinput 0279 >) y potenciación (<userinput 0280 >^</userinput 0281 >).</para> 0282 0283 <para 0284 >Este es un ejemplo de cómo usar los operadores aritméticos en &turtlescript;: <screen> 0285 $sumar = 1 + 1 0286 $restar = 20 - 5 0287 $multiplicar = 15 * 2 0288 $dividir = 30 / 30 0289 $potencia = 2 ^ 2 0290 </screen 0291 > Los valores resultantes de estas operaciones aritméticos son <link linkend="assignment-of-variables" 0292 >asignados a variables</link 0293 >. Puedes ver los valores resultantes en el <link linkend="the-inspector" 0294 >inspector</link 0295 >.</para> 0296 <para 0297 >Si lo que quieres es realizar un cálculo simple, puedes hacer algo como esto: <screen 0298 >escribir 2010-12 0299 </screen 0300 ></para> 0301 <para 0302 >Ahora veamos un ejemplo con paréntesis: <screen> 0303 escribir ( ( 20 - 5 ) * 2 / 30 ) + 1 0304 </screen 0305 > Primero se calculan las operaciones que están dentro de los paréntesis. En este ejemplo, primero se calcula 20 - 5; el resultado se multiplica por 2, luego se divide por 30 y, por último, se le suma 1. El resultado final es 2. Los paréntesis pueden también usarse en otros casos.</para> 0306 <para 0307 >&kturtle; también tiene otras funciones aritméticas en forma de órdenes. Echa un vistazo a las siguientes órdenes, eso sí, teniendo en cuenta que se trata de operaciones avanzadas: <link linkend="round" 0308 >redondear</link 0309 >, <link linkend="random" 0310 >aleatorio</link 0311 >, <link linkend="sqrt" 0312 >raíz</link 0313 >, <link linkend="pi" 0314 >pi</link 0315 >, <link linkend="sin" 0316 >sen</link 0317 >, <link linkend="cos" 0318 >cos</link 0319 >, <link linkend="tan" 0320 >tan</link 0321 >, <link linkend="arcsin" 0322 >arcsen</link 0323 >, <link linkend="arccos" 0324 >arccos</link 0325 >, <link linkend="arctan" 0326 >arctan</link 0327 >.</para> 0328 </sect2> 0329 0330 <sect2 id="boolean-operators"> 0331 <title 0332 >Operadores lógicos (verdadero/falso)</title> 0333 <para 0334 >Mientras que los <link linkend="mathematical-operators" 0335 >operadores aritméticos</link 0336 > se usan principalmente con <link linkend="number" 0337 >números</link 0338 >, los operadores lógicos están pensados para usarse con <link linkend="boolean-value" 0339 >valores lógicos</link 0340 > (<userinput 0341 >verdadero</userinput 0342 > y <userinput 0343 >falso</userinput 0344 >). Hay solo tres operadores lógicos: <userinput 0345 >y</userinput 0346 ><indexterm 0347 ><primary 0348 >y</primary 0349 ></indexterm 0350 >, <userinput 0351 >o</userinput 0352 ><indexterm 0353 ><primary 0354 >o</primary 0355 ></indexterm 0356 > y <userinput 0357 >no</userinput 0358 ><indexterm 0359 ><primary 0360 >no</primary 0361 ></indexterm 0362 >. El siguiente código de &turtlescript; muestra cómo usarlos: <screen> 0363 $y_1_1 = verdadero y verdadero # -> verdadero 0364 $y_1_0 = verdadero y falso # -> falso 0365 $y_0_1 = falso y verdadero # -> falso 0366 $y_0_0 = falso y falso # -> falso 0367 0368 $o_1_1 = verdadero o verdadero # -> verdadero 0369 $o_1_0 = verdadero o falso # -> verdadero 0370 $o_0_1 = falso o verdadero # -> verdadero 0371 $o_0_0 = falso o falso # -> falso 0372 0373 $no_1 = no verdadero # -> falso 0374 $no_0 = no falso # -> verdadero 0375 </screen 0376 > Puedes ver los valores resultantes en el <link linkend="the-inspector" 0377 >inspector</link 0378 >, aunque también se proporcionan pequeños comentarios al final de las líneas. <userinput 0379 >Y</userinput 0380 > resulta en <userinput 0381 >verdadero</userinput 0382 > solo si ambas partes son <userinput 0383 >verdaderos</userinput 0384 >. <userinput 0385 >O</userinput 0386 > resulta en <userinput 0387 >verdadero</userinput 0388 > si alguna de las dos partes es <userinput 0389 >verdadero</userinput 0390 >. Y <userinput 0391 >no</userinput 0392 > transforma <userinput 0393 >verdadero</userinput 0394 > en <userinput 0395 >falso</userinput 0396 > y<userinput 0397 >falso</userinput 0398 > en <userinput 0399 >verdadero</userinput 0400 >. </para> 0401 <para 0402 >Los operadores lógicos aparecen <glossterm 0403 >resaltados</glossterm 0404 > en rosa.</para> 0405 0406 <sect3 id="boolean-operators-advanced-examples"> 0407 <title 0408 >Unos ejemplos más complejos:</title> 0409 <para 0410 >Considera el siguiente ejemplo con <userinput 0411 >and</userinput 0412 >: <screen> 0413 $a = 1 0414 $b = 5 0415 si (($a < 10) y ($b == 5)) y ($a < $b) { 0416 escribir "hola" 0417 } 0418 </screen 0419 > En este código de &turtlescript;, el resultado de los tres <link linkend="comparing-operators" 0420 >operadores de comparación</link 0421 > están agrupados mediante los operadores <userinput 0422 >y</userinput 0423 >. Esto significa que los tres resultados tienen que ser iguales a «verdadero» para que se escriba la palabra «hola».</para> 0424 0425 <para 0426 >Un ejemplo con <userinput 0427 >o</userinput 0428 >: <screen> 0429 $n = 1 0430 si ($n < 10) o ($n == 2) { 0431 escribir "hola" 0432 } 0433 </screen 0434 > En este código de &turtlescript;, la parte izquierda del operador <userinput 0435 >o</userinput 0436 > es «verdadera», mientras que la derecha es «falsa». Ya que una de las dos partes del operador <userinput 0437 >o</userinput 0438 > es «verdadera», el resultado del operador <userinput 0439 >o</userinput 0440 > también lo es. Esto quiere decir que se escribe la palabra «hola».</para> 0441 0442 <para 0443 >Finalmente, un ejemplo con <userinput 0444 >no</userinput 0445 >, que transforma «verdadero» en «falso» y «falso» en verdadero». Fíjate: <screen 0446 >$n = 1 0447 si no ($n == 3) { 0448 escribir "hola" 0449 } sino { 0450 escribir "no hola ;-)" 0451 } 0452 </screen 0453 ></para> 0454 </sect3> 0455 </sect2> 0456 0457 <sect2 id="comparing-operators"> 0458 <title 0459 >Operadores de comparación</title> 0460 <para 0461 >Considera esta comparación sencilla: <screen> 0462 $respuesta = 10 > 3 0463 </screen 0464 > Aquí, <userinput 0465 >10</userinput 0466 > se compara con <userinput 0467 >3</userinput 0468 > usando el operador «más grande que». El resultado de esta operación, es decir, el <link linkend="boolean-value" 0469 >valor lógico</link 0470 > <userinput 0471 >verdadero</userinput 0472 >, se guarda en la <link linkend="assignment-of-variables" 0473 >variable</link 0474 > <userinput 0475 >$respuesta</userinput 0476 >.</para> 0477 <para 0478 >Todos los <link linkend="number" 0479 >números</link 0480 > y <link linkend="assignment-of-variables" 0481 >variables</link 0482 > (que contengan números) pueden compararse entre sí usando operadores de comparación.</para> 0483 <para 0484 >Estos son todos los posibles operadores de comparación: <table 0485 > <title 0486 >Tipos de preguntas</title 0487 > <tgroup cols="3" 0488 > <tbody 0489 > <row 0490 > <entry 0491 ><userinput 0492 >$A == $B</userinput 0493 ></entry 0494 > <entry 0495 >igual a</entry 0496 > <entry 0497 >la respuesta es «verdadera» si <userinput 0498 >$A</userinput 0499 > es igual a <userinput 0500 >$B</userinput 0501 ></entry 0502 > </row 0503 > <row 0504 > <entry 0505 ><userinput 0506 >$A != $B</userinput 0507 ></entry 0508 > <entry 0509 >no igual a</entry 0510 > <entry 0511 >la respuesta es «verdadera» si <userinput 0512 >$A</userinput 0513 > no es igual a <userinput 0514 >$B</userinput 0515 ></entry 0516 > </row 0517 > <row 0518 > <entry 0519 ><userinput 0520 >$A > $B</userinput 0521 ></entry 0522 > <entry 0523 >mayor que</entry 0524 > <entry 0525 >la respuesta es «verdadera» si <userinput 0526 >$A</userinput 0527 > es mayor que <userinput 0528 >$B</userinput 0529 ></entry 0530 > </row 0531 > <row 0532 > <entry 0533 ><userinput 0534 >$A < $B</userinput 0535 ></entry 0536 > <entry 0537 >menor que</entry 0538 > <entry 0539 >la respuesta es «verdadera» si <userinput 0540 >$A</userinput 0541 > es menor que <userinput 0542 >$B</userinput 0543 ></entry 0544 > </row 0545 > <row 0546 > <entry 0547 ><userinput 0548 >$A >= $B</userinput 0549 ></entry 0550 > <entry 0551 >mayor o igual que</entry 0552 > <entry 0553 >la respuesta es «verdadera» si <userinput 0554 >$A</userinput 0555 > es mayor o igual que <userinput 0556 >$B</userinput 0557 ></entry 0558 > </row 0559 > <row 0560 > <entry 0561 ><userinput 0562 >$A <= $B</userinput 0563 ></entry 0564 > <entry 0565 >menor o igual que</entry 0566 > <entry 0567 >la respuesta es «verdadera» si <userinput 0568 >$A</userinput 0569 > es menor o igual que <userinput 0570 >B</userinput 0571 ></entry 0572 > </row 0573 > </tbody 0574 > </tgroup 0575 > </table 0576 > Ten en cuenta que <userinput 0577 >$A</userinput 0578 > y <userinput 0579 >$B</userinput 0580 > tienen que ser <link linkend="number" 0581 >números</link 0582 > o <link linkend="assignment-of-variables" 0583 >variables</link 0584 > que contengan números.</para> 0585 </sect2> 0586 0587 0588 </sect1> 0589 0590 0591 0592 <sect1 id="commands"> 0593 <title 0594 >Órdenes</title> 0595 <para 0596 >Con las órdenes podemos decirle a la tortuga o a &kturtle; lo que tiene que hacer. Algunas órdenes requieren de parámetros de entrada, mientras que otras devuelven parámetros de salida. En esta sección se explican todas las órdenes integradas en &kturtle;. Alternativamente, puedes usar <link linkend="learn" 0597 ><userinput 0598 >aprender</userinput 0599 ></link 0600 > para crear tus propias órdenes. Las órdenes que van a detallarse aquí aparecen <glossterm 0601 >resaltadas</glossterm 0602 > en azul oscuro.</para> 0603 0604 <sect2 id="moving-the-turtle"> 0605 <title 0606 >Cómo mover la tortuga</title> 0607 <para 0608 >Hay varias órdenes que permiten mover la tortuga por la pantalla.</para> 0609 0610 <variablelist> 0611 <anchor id="forward"/> 0612 <varlistentry 0613 > 0614 <term 0615 >avanzar (avz)<indexterm 0616 ><primary 0617 >avanzar (avz)</primary 0618 ></indexterm 0619 ></term> 0620 <listitem 0621 ><para 0622 ><screen 0623 >avanzar X</screen 0624 ><userinput 0625 >avanzar</userinput 0626 > desplaza la tortuga hacia delante X píxeles. Cuando el pincel está bajado, la tortuga deja a su paso un trazo. <userinput 0627 >avanzar</userinput 0628 > puede abreviarse como <userinput 0629 >avz</userinput 0630 >.</para 0631 ></listitem> 0632 </varlistentry> 0633 </variablelist> 0634 <variablelist> 0635 <anchor id="backward"/> 0636 <varlistentry 0637 > 0638 <term 0639 >retroceder (ret)<indexterm 0640 ><primary 0641 >retroceder (ret)</primary 0642 ></indexterm 0643 ></term> 0644 <listitem 0645 ><para 0646 ><screen 0647 >retroceder X</screen 0648 ><userinput 0649 >retroceder</userinput 0650 > hace retroceder la tortuga X píxeles. Cuando el pincel está bajado, la tortuga deja a su paso un trazo. <userinput 0651 >retroceder</userinput 0652 > puede abreviarse como <userinput 0653 >ret</userinput 0654 >.</para 0655 ></listitem> 0656 </varlistentry> 0657 </variablelist> 0658 <variablelist> 0659 <anchor id="turnleft"/> 0660 <varlistentry 0661 > 0662 <term 0663 >izquierda (izq)<indexterm 0664 ><primary 0665 >izquierda (izq)</primary 0666 ></indexterm 0667 ></term> 0668 <listitem 0669 ><para 0670 ><screen 0671 >izquierda X</screen 0672 ><userinput 0673 >izquierda</userinput 0674 > le ordena a la tortuga que rote X grados hacia la izquierda. <userinput 0675 >izquierda</userinput 0676 > puede abreviarse como <userinput 0677 >izq</userinput 0678 >.</para 0679 ></listitem> 0680 </varlistentry> 0681 </variablelist> 0682 <variablelist> 0683 <anchor id="turnright"/> 0684 <varlistentry 0685 > 0686 <term 0687 >derecha (der)<indexterm 0688 ><primary 0689 >derecha (der)</primary 0690 ></indexterm 0691 ></term> 0692 <listitem 0693 ><para 0694 ><screen 0695 >derecha X</screen 0696 ><userinput 0697 >derecha</userinput 0698 > le ordena a la tortuga que rote X grados hacia la derecha. <userinput 0699 >derecha</userinput 0700 > puede abreviarse como <userinput 0701 >der</userinput 0702 >.</para 0703 ></listitem> 0704 </varlistentry> 0705 </variablelist> 0706 <variablelist> 0707 <anchor id="direction"/> 0708 <varlistentry 0709 > 0710 <term 0711 >dirección (dir)<indexterm 0712 ><primary 0713 >dirección (dir)</primary 0714 ></indexterm 0715 ></term> 0716 <listitem 0717 ><para 0718 ><screen 0719 >dirección X</screen 0720 ><userinput 0721 >dirección</userinput 0722 > determina el ángulo de dirección de la tortuga, que será X grados contando a partir de cero. No se tiene en cuenta la dirección anterior de la tortuga. <userinput 0723 >dirección</userinput 0724 > puede abreviarse como <userinput 0725 >dir</userinput 0726 >.</para 0727 ></listitem> 0728 </varlistentry> 0729 </variablelist> 0730 <variablelist> 0731 <anchor id="getdirection"/> 0732 <varlistentry 0733 > 0734 <term 0735 >obtenerdirección<indexterm 0736 ><primary 0737 >obtenerdirección</primary 0738 ></indexterm 0739 ></term> 0740 <listitem 0741 ><para 0742 ><screen 0743 >obtenerdirección</screen 0744 ><userinput 0745 >obtenerdirección</userinput 0746 > determina el ángulo de dirección de la tortuga, que será X grados contando a partir de cero.</para 0747 ></listitem> 0748 </varlistentry> 0749 </variablelist> 0750 <variablelist> 0751 <anchor id="center"/> 0752 <varlistentry 0753 > 0754 <term 0755 >centrar<indexterm 0756 ><primary 0757 >centrar</primary 0758 ></indexterm 0759 ></term> 0760 <listitem 0761 ><para 0762 ><screen 0763 >centrar</screen 0764 ><userinput 0765 >centrar</userinput 0766 > mueve la tortuga al centro del lienzo.</para 0767 ></listitem> 0768 </varlistentry> 0769 </variablelist> 0770 <variablelist> 0771 <anchor id="go"/> 0772 <varlistentry 0773 > 0774 <term 0775 >ir<indexterm 0776 ><primary 0777 >ir</primary 0778 ></indexterm 0779 ></term> 0780 <listitem 0781 ><para 0782 ><screen 0783 >ir X; Y</screen 0784 ><userinput 0785 >ir</userinput 0786 > le ordena a la tortuga que se desplace a una posición concreta del lienzo. Esta posición está a X <glossterm linkend="pixels" 0787 >píxeles</glossterm 0788 > del margen izquierdo del lienzo y a Y <glossterm linkend="pixels" 0789 >píxeles</glossterm 0790 > del margen superior del lienzo.</para 0791 ></listitem> 0792 </varlistentry> 0793 </variablelist> 0794 <variablelist> 0795 <anchor id="gox"/> 0796 <varlistentry 0797 > 0798 <term 0799 >irx<indexterm 0800 ><primary 0801 >irx (ix)</primary 0802 ></indexterm 0803 ></term> 0804 <listitem 0805 ><para 0806 ><screen 0807 >irx X</screen 0808 ><userinput 0809 >irx</userinput 0810 > le ordena a la tortuga que vaya a una posición que está a X <glossterm linkend="pixels" 0811 >píxeles</glossterm 0812 > del margen izquierdo del lienzo, sin modificar su altura. <userinput 0813 >irx</userinput 0814 > se puede abreviar con <userinput 0815 >ix</userinput 0816 >.</para 0817 ></listitem> 0818 </varlistentry> 0819 </variablelist> 0820 <variablelist> 0821 <anchor id="goy"/> 0822 <varlistentry 0823 > 0824 <term 0825 >iry<indexterm 0826 ><primary 0827 >iry (iy)</primary 0828 ></indexterm 0829 ></term> 0830 <listitem 0831 ><para 0832 ><screen 0833 >iry Y</screen 0834 ><userinput 0835 >iry</userinput 0836 > le ordena a la tortuga que vaya a una posición que está a Y <glossterm linkend="pixels" 0837 >píxeles</glossterm 0838 > del margen superior del lienzo, sin modificar la distancia a la que se encuentre del margen izquierdo. <userinput 0839 >iry</userinput 0840 > se puede abreviar con <userinput 0841 >iy</userinput 0842 >.</para 0843 ></listitem> 0844 </varlistentry> 0845 </variablelist> 0846 <note 0847 ><para 0848 >Con las órdenes <userinput 0849 >ir</userinput 0850 >, <userinput 0851 >irx</userinput 0852 >, <userinput 0853 >iry</userinput 0854 > y <userinput 0855 >centrar</userinput 0856 >, la tortuga no dibuja ningún trazo, independientemente de que el pincel esté bajado o no.</para> 0857 </note> 0858 </sect2> 0859 0860 <sect2 id="locate-the-turtle"> 0861 <title 0862 >¿Dónde está la tortuga?</title> 0863 <para 0864 >Hay dos órdenes que devuelven la posición de la tortuga en la pantalla.</para> 0865 0866 <variablelist> 0867 <anchor id="getx"/> 0868 <varlistentry 0869 > 0870 <term 0871 >obtenerx<indexterm 0872 ><primary 0873 >obtenerx</primary 0874 ></indexterm 0875 ></term> 0876 <listitem 0877 ><para 0878 ><userinput 0879 >obtenerx</userinput 0880 > devuelve el número de píxeles desde el margen izquierdo del lienzo de la posición actual de la tortuga.</para 0881 ></listitem> 0882 </varlistentry> 0883 </variablelist> 0884 <variablelist> 0885 <anchor id="gety"/> 0886 <varlistentry 0887 > 0888 <term 0889 >obtenery<indexterm 0890 ><primary 0891 >obtenery</primary 0892 ></indexterm 0893 ></term> 0894 <listitem 0895 ><para 0896 ><userinput 0897 >obtenery</userinput 0898 > devuelve el número de píxeles desde el margen superior del lienzo de la posición actual del la tortuga.</para 0899 ></listitem> 0900 </varlistentry> 0901 </variablelist> 0902 </sect2> 0903 0904 <sect2 id="pen"> 0905 <title 0906 >La tortuga tiene un pincel</title> 0907 <para 0908 >La tortuga tiene un pincel que dibuja una línea cuando esta se desplaza. Hay varia órdenes que controlan el pincel. En esta sección se explican estas órdenes.</para> 0909 <variablelist> 0910 <anchor id="penup"/> 0911 <varlistentry 0912 > 0913 <term 0914 >levantarpincel (lpl)<indexterm 0915 ><primary 0916 >levantarpincel (lpl)</primary 0917 ></indexterm 0918 ></term> 0919 <listitem 0920 ><para 0921 ><screen 0922 >levantarpincel</screen 0923 ><userinput 0924 >levantarpincel</userinput 0925 > alza el pincel del lienzo. Cuando el pincel está «levantado», la tortuga no deja ningún trazo cuando se desplaza. Consulta también <userinput 0926 >bajarpincel</userinput 0927 >. <userinput 0928 >levantarpincel</userinput 0929 > puede abreviarse como <userinput 0930 >lpl</userinput 0931 >.</para 0932 ></listitem> 0933 </varlistentry> 0934 </variablelist> 0935 <variablelist> 0936 <anchor id="pendown"/> 0937 <varlistentry 0938 > 0939 <term 0940 >bajarpincel (bpl)<indexterm 0941 ><primary 0942 >bajarpincel (bpl)</primary 0943 ></indexterm 0944 ></term> 0945 <listitem 0946 ><para 0947 ><screen 0948 >bajarpincel</screen 0949 ><userinput 0950 >bajarpincel</userinput 0951 > presiona el pincel sobre el lienzo. Cuando el pincel está «bajado», la tortuga deja un trazo a su paso. Vea también <userinput 0952 >levantarpincel</userinput 0953 >. <userinput 0954 >bajarpincel</userinput 0955 > puede abreviarse como <userinput 0956 >bpl</userinput 0957 >.</para 0958 ></listitem> 0959 </varlistentry> 0960 </variablelist> 0961 <variablelist> 0962 <anchor id="setpenwidth"/> 0963 <varlistentry 0964 > 0965 <term 0966 >grosorpincel (gpl)<indexterm 0967 ><primary 0968 >grosorpincel (gpl)</primary 0969 ></indexterm 0970 ></term> 0971 <listitem 0972 ><para 0973 ><screen 0974 >grosorpincel X</screen 0975 ><userinput 0976 >grosorpincel</userinput 0977 > fija el grosor de la línea trazada por la tortuga en X <glossterm linkend="pixels" 0978 >píxeles</glossterm 0979 >. <userinput 0980 >grosorpincel</userinput 0981 > puede abreviarse como <userinput 0982 >gpl</userinput 0983 >.</para 0984 ></listitem> 0985 </varlistentry> 0986 </variablelist> 0987 <variablelist> 0988 <anchor id="setfgcolor"/> 0989 <varlistentry 0990 > 0991 <term 0992 >colorpincel (cpl)<indexterm 0993 ><primary 0994 >colorpincel (cpl)</primary 0995 ></indexterm 0996 ></term> 0997 <listitem 0998 ><para 0999 ><screen 1000 >colorpincel R;G;B </screen 1001 ><userinput 1002 >colorpincel</userinput 1003 > fija el color del pincel. El parámetro de entrada de <userinput 1004 >colorpincel</userinput 1005 > es una <glossterm linkend="rgb" 1006 >combinación RGB</glossterm 1007 >. <userinput 1008 >colorpincel</userinput 1009 > puede abreviarse como <userinput 1010 >cpl</userinput 1011 >.</para 1012 ></listitem> 1013 </varlistentry> 1014 </variablelist> 1015 </sect2> 1016 1017 <sect2 id="canvas"> 1018 <title 1019 >Órdenes que controlan el lienzo</title> 1020 <para 1021 >Existen varias órdenes que controlan el lienzo.</para> 1022 <variablelist> 1023 <anchor id="resizecanvas"/> 1024 <varlistentry> 1025 <term 1026 >tamañolienzo (tl)<indexterm 1027 ><primary 1028 >tamañolienzo (tl)</primary 1029 ></indexterm 1030 ></term> 1031 <listitem 1032 ><para 1033 ><screen 1034 >tamañolienzo X;Y</screen 1035 >Con la orden <userinput 1036 >tamañolienzo</userinput 1037 > puede modificar las dimensiones del lienzo. Requiere de X e Y como parámetros de entrada, donde X es el ancho en <glossterm linkend="pixels" 1038 >píxeles</glossterm 1039 > del nuevo lienzo, e Y es la altura del nuevo lienzo también en <glossterm linkend="pixels" 1040 >píxeles</glossterm 1041 >. <userinput 1042 >tamañolienzo</userinput 1043 > puede abreviarse como <userinput 1044 >tl</userinput 1045 >.</para 1046 ></listitem> 1047 </varlistentry> 1048 </variablelist> 1049 <variablelist> 1050 <anchor id="setbgcolor"/> 1051 <varlistentry 1052 > 1053 <term 1054 >colorlienzo (cl)<indexterm 1055 ><primary 1056 >colorlienzo (cl)</primary 1057 ></indexterm 1058 ></term> 1059 <listitem 1060 ><para 1061 ><screen 1062 >colorlienzo R;G;B</screen 1063 ><userinput 1064 >colorlienzo</userinput 1065 > define el color del lienzo. El parámetro de entrada de <userinput 1066 >colorlienzo</userinput 1067 > es una <glossterm linkend="rgb" 1068 >combinación RGB</glossterm 1069 >. <userinput 1070 >colorlienzo</userinput 1071 > puede abreviarse como <userinput 1072 >cl</userinput 1073 >.</para 1074 ></listitem> 1075 </varlistentry> 1076 </variablelist> 1077 </sect2> 1078 1079 <sect2 id="clean"> 1080 <title 1081 >Comandos para limpiar</title> 1082 <para 1083 >Existen dos comandos que permiten limpiar el lienzo después de un embrollo.</para> 1084 <variablelist> 1085 <anchor id="clear"/> 1086 <varlistentry 1087 > 1088 <term 1089 >limpiar (lmp)<indexterm 1090 ><primary 1091 >limpiar (lmp)</primary 1092 ></indexterm 1093 ></term> 1094 <listitem 1095 ><para 1096 ><screen 1097 >limpiar</screen 1098 >Con <userinput 1099 >limpiar</userinput 1100 > puede borrar todos los dibujos del lienzo. Todo lo demás permanece: la posición y ángulo de la tortuga, el color del lienzo, la visibilidad de la tortuga y el tamaño del lienzo. </para 1101 ></listitem> 1102 </varlistentry> 1103 </variablelist> 1104 <variablelist> 1105 <anchor id="reset"/> 1106 <varlistentry 1107 > 1108 <term 1109 >reiniciar<indexterm 1110 ><primary 1111 >reiniciar</primary 1112 ></indexterm 1113 ></term> 1114 <listitem 1115 ><para 1116 ><screen 1117 >reiniciar</screen 1118 ><userinput 1119 >reiniciar</userinput 1120 > borra todo de una forma más concienzuda que la orden <userinput 1121 >limpiar</userinput 1122 >. Después de una orden <userinput 1123 >reiniciar</userinput 1124 >, todo vuelve a como estaba cuando inició &kturtle;. La tortuga regresará a su posición en el centro del lienzo, el color del lienzo volverá a ser blanco, la tortuga dibujará de nuevo una línea negra en el lienzo y el tamaño del lienzo será 400x400 píxeles.</para 1125 ></listitem> 1126 </varlistentry> 1127 </variablelist> 1128 </sect2> 1129 1130 <sect2 id="sprites"> 1131 <title 1132 >La tortuga es un duendecillo</title> 1133 <para 1134 >Antes de nada conviene explicar qué son los sprites: los duendecillos son pequeñas figuras que pueden desplazarse por la pantalla, como vemos con frecuencia en los videojuegos. Nuestra tortuga también es un duendecillo. Para obtener más información, consulta la entrada en el glosario correspondiente a los <glossterm linkend="sprites" 1135 >duendecillos</glossterm 1136 >.</para> 1137 <para 1138 >A continuación, encontrarás una descripción detallada de todas las órdenes relacionadas con duendecillos.</para> 1139 <note 1140 ><para 1141 >La versión actual de &kturtle; no admite otro duendecillo aparte de la tortuga. En las versiones futuras sí que podrá cambiar la tortuga por algo diseñado por usted mismo.</para 1142 ></note> 1143 <variablelist> 1144 <anchor id="spriteshow"/> 1145 <varlistentry 1146 > 1147 <term 1148 >mostrartortuga (mt)<indexterm 1149 ><primary 1150 >mostrartortuga (mt)</primary 1151 ></indexterm 1152 ></term> 1153 <listitem 1154 ><para 1155 ><screen 1156 >mostrartortuga</screen 1157 ><userinput 1158 >mostrartortuga</userinput 1159 > vuelve visible de nuevo a la tortuga después de haberla ocultado. <userinput 1160 >mostrartortuga</userinput 1161 > puede abreviarse como <userinput 1162 >mt</userinput 1163 >.</para 1164 ></listitem> 1165 </varlistentry> 1166 </variablelist> 1167 <variablelist> 1168 <anchor id="spritehide"/> 1169 <varlistentry 1170 > 1171 <term 1172 >ocultartortuga (ot)<indexterm 1173 ><primary 1174 >ocultartortuga (ot)</primary 1175 ></indexterm 1176 ></term> 1177 <listitem 1178 ><para 1179 ><screen 1180 >ocultartortuga</screen 1181 ><userinput 1182 >ocultartortuga</userinput 1183 > oculta la tortuga. Puede usarse cuando la tortuga no quede bien en su dibujo. <userinput 1184 >ocultartortuga</userinput 1185 > puede abreviarse como <userinput 1186 >ot</userinput 1187 >.</para 1188 ></listitem> 1189 </varlistentry> 1190 </variablelist> 1191 </sect2> 1192 1193 <sect2 id="writing"> 1194 <title 1195 >¿La tortuga puede escribir?</title> 1196 <para 1197 >La respuesta es «sí». La tortuga puede escribir: escribirá todo lo que le ordenes.</para> 1198 <variablelist> 1199 <anchor id="print"/> 1200 <varlistentry 1201 > 1202 <term 1203 >escribir<indexterm 1204 ><primary 1205 >escribir</primary 1206 ></indexterm 1207 ></term> 1208 <listitem 1209 ><para 1210 ><screen 1211 >escribir X</screen 1212 >La orden <userinput 1213 >escribir</userinput 1214 > le indica a la tortuga que escriba algo en el lienzo. El parámetro de entrada de <userinput 1215 >escribir</userinput 1216 > puede ser un número o una cadena. Puedes concatenar varios números y cadenas usando el símbolo «+». Aquí tienes un ejemplo sencillo: <screen 1217 >$año = 2003 1218 $autor = "Cies" 1219 escribir $autor + " comenzó a trabajar en el proyecto KTurtle en " + $año + " y todavía disfruta haciéndolo" 1220 </screen> 1221 </para 1222 ></listitem> 1223 </varlistentry> 1224 </variablelist> 1225 <variablelist> 1226 <anchor id="fontsize"/> 1227 <varlistentry 1228 > 1229 <term 1230 >tamañoletra<indexterm 1231 ><primary 1232 >tamañoletra</primary 1233 ></indexterm 1234 ></term> 1235 <listitem 1236 ><para 1237 ><screen 1238 >tamañoletra X</screen 1239 ><userinput 1240 >tamañoletra</userinput 1241 > fija el tamaño del tipo de letra que usa la orden <userinput 1242 >escribir</userinput 1243 >. El parámetro de entrada de <userinput 1244 >tamañoletra</userinput 1245 > tiene que ser un número. El tamaño viene determinado en <glossterm linkend="pixels" 1246 >píxeles</glossterm 1247 >.</para 1248 ></listitem> 1249 </varlistentry> 1250 </variablelist> 1251 </sect2> 1252 1253 <sect2 id="math-commands"> 1254 <title 1255 >Órdenes aritméticas</title> 1256 <para 1257 >Las siguientes son algunas de las órdenes aritméticas más avanzadas de &kturtle;.</para> 1258 <variablelist> 1259 <anchor id="round"/> 1260 <varlistentry> 1261 <term 1262 >redondear<indexterm 1263 ><primary 1264 >redondear</primary 1265 ></indexterm 1266 ></term> 1267 <listitem 1268 ><para 1269 ><screen 1270 >redondear(X)</screen 1271 >Permite <userinput 1272 >redondear</userinput 1273 > el número dado a su entero más cercano. <screen> 1274 escribir redondear(10,8) 1275 avanzar 20 1276 escribir redondear(10,3) 1277 </screen 1278 > Este código hace que la tortuga escriba los números 11 y 10.</para 1279 ></listitem> 1280 </varlistentry> 1281 </variablelist> 1282 <variablelist> 1283 <anchor id="random"/> 1284 <varlistentry 1285 > 1286 <term 1287 >aleatorio (alt)<indexterm 1288 ><primary 1289 >aleatorio (alt)</primary 1290 ></indexterm 1291 ></term> 1292 <listitem 1293 ><para 1294 ><screen 1295 >aleatorio X;Y</screen 1296 ><userinput 1297 >aleatorio</userinput 1298 > es una orden que requiere de parámetros de entrada y que devuelve un parámetro de salida. Como parámetros de entrada, necesita dos números, el primero (X) fija el valor mínimo del parámetro de salida, y el segundo (Y) fija su valor máximo. El parámetro de salida es un número elegido al azar que es igual o más grande que el valor mínimo, e igual o más pequeño que el valor máximo. Aquí tiene un ejemplo sencillo: <screen> 1299 repetir 500 { 1300 $x = aleatorio 1;20 1301 avanzar $x 1302 izquierda 10 - $x 1303 } 1304 </screen 1305 > Con la orden <userinput 1306 >aleatorio</userinput 1307 > puedes incorporar algo de caos a tu programa.</para 1308 ></listitem> 1309 </varlistentry> 1310 </variablelist> 1311 <variablelist> 1312 <anchor id="mod"/> 1313 <varlistentry 1314 > 1315 <term 1316 >mod<indexterm 1317 ><primary 1318 >mod</primary 1319 ></indexterm 1320 ></term> 1321 <listitem 1322 ><para 1323 ><screen 1324 >mod X,Y</screen 1325 >La orden <userinput 1326 >mod</userinput 1327 > devuelve el resto de la división del primer número entre el segundo número.</para 1328 ></listitem> 1329 </varlistentry> 1330 </variablelist> 1331 <variablelist> 1332 <anchor id="sqrt"/> 1333 <varlistentry 1334 > 1335 <term 1336 >raíz<indexterm 1337 ><primary 1338 >raíz</primary 1339 ></indexterm 1340 ></term> 1341 <listitem 1342 ><para 1343 ><screen 1344 >raíz X</screen 1345 >La orden <userinput 1346 >raíz</userinput 1347 > sirve para calcular la raíz cuadrada de un número X.</para 1348 ></listitem> 1349 </varlistentry> 1350 </variablelist> 1351 <!-- 1352 <variablelist> 1353 <anchor id="exp"/> 1354 <varlistentry 1355 > 1356 <term 1357 >exp<indexterm 1358 ><primary 1359 >exp</primary 1360 ></indexterm 1361 ></term> 1362 <listitem 1363 ><para 1364 ><screen 1365 >sqrt X</screen> 1366 </para 1367 ></listitem> 1368 </varlistentry> 1369 </variablelist> 1370 --> 1371 <variablelist> 1372 <anchor id="pi"/> 1373 <varlistentry 1374 > 1375 <term 1376 >pi<indexterm 1377 ><primary 1378 >pi</primary 1379 ></indexterm 1380 ></term> 1381 <listitem 1382 ><para 1383 ><screen 1384 >pi</screen 1385 >Esta orden devuelve el valor del número Pi, <userinput 1386 >3,14159</userinput 1387 >.</para 1388 ></listitem> 1389 </varlistentry> 1390 </variablelist> 1391 <variablelist> 1392 <anchor id="sin"/> 1393 <anchor id="cos"/> 1394 <anchor id="tan"/> 1395 <varlistentry> 1396 <term 1397 >sen<indexterm 1398 ><primary 1399 >sen</primary 1400 ></indexterm 1401 >, cos<indexterm 1402 ><primary 1403 >cos</primary 1404 ></indexterm 1405 >, tan<indexterm 1406 ><primary 1407 >tan</primary 1408 ></indexterm 1409 ></term> 1410 <listitem 1411 ><para> 1412 <screen 1413 >sen X 1414 cos X 1415 tan X 1416 </screen 1417 >Estas tres órdenes representan las famosas funciones trigonométricas <userinput 1418 >sen</userinput 1419 >, <userinput 1420 >cos</userinput 1421 > y <userinput 1422 >tan</userinput 1423 >. El parámetro de entrada de estas tres órdenes, X, es un <link linkend="number" 1424 >número</link 1425 >.</para 1426 ></listitem> 1427 </varlistentry> 1428 </variablelist> 1429 <variablelist> 1430 <anchor id="arcsin"/> 1431 <anchor id="arccos"/> 1432 <anchor id="arctan"/> 1433 <varlistentry> 1434 <term 1435 >arcsen<indexterm 1436 ><primary 1437 >arcsen</primary 1438 ></indexterm 1439 >, arccos<indexterm 1440 ><primary 1441 >arccos</primary 1442 ></indexterm 1443 >, arctan<indexterm 1444 ><primary 1445 >arctan</primary 1446 ></indexterm 1447 ></term> 1448 <listitem 1449 ><para> 1450 <screen 1451 >arcsen X 1452 arccos X 1453 arctan X 1454 </screen 1455 >Estas tres órdenes son las funciones inversas de <link linkend="sin" 1456 >sen</link 1457 >, <link linkend="cos" 1458 >cos</link 1459 > y <link linkend="tan" 1460 >tan</link 1461 >. El parámetro de entrada de estas órdenes, X, es un <link linkend="number" 1462 >número</link 1463 >.</para 1464 ></listitem> 1465 </varlistentry> 1466 </variablelist> 1467 </sect2> 1468 1469 <sect2 id="dialogs"> 1470 <title 1471 >Entrada e información mediante diálogos</title> 1472 <para 1473 >Un diálogo es una pequeña ventana emergente que proporciona información o que solicita un parámetro de entrada. &kturtle; tiene dos órdenes relacionadas con diálogos: <userinput 1474 >mensaje</userinput 1475 > y <userinput 1476 >preguntar</userinput 1477 >.</para> 1478 <variablelist> 1479 <anchor id="message"/> 1480 <varlistentry 1481 > 1482 <term 1483 >mensaje<indexterm 1484 ><primary 1485 >mensaje</primary 1486 ></indexterm 1487 ></term> 1488 <listitem 1489 ><para 1490 ><screen 1491 >mensaje X</screen 1492 >La orden <userinput 1493 >mensaje</userinput 1494 > necesita una <link linkend="string" 1495 >cadena</link 1496 > como parámetro de entrada. Muestra una ventana emergente con el texto de la <link linkend="string" 1497 >cadena</link 1498 >. <screen 1499 >mensaje "Cies comenzó a trabajar en el proyecto KTurtle en 2003 y todavía disfruta haciéndolo" 1500 </screen> 1501 </para 1502 ></listitem> 1503 </varlistentry> 1504 </variablelist> 1505 <variablelist> 1506 <anchor id="ask"/> 1507 <varlistentry 1508 > 1509 <term 1510 >preguntar<indexterm 1511 ><primary 1512 >preguntar</primary 1513 ></indexterm 1514 ></term> 1515 <listitem 1516 ><para 1517 ><screen 1518 >preguntar X</screen 1519 ><userinput 1520 >preguntar</userinput 1521 > necesita una <link linkend="string" 1522 >cadena</link 1523 > como parámetro de entrada. Muestra el texto de la cadena en una ventana emergente (igual que hace <link linkend="message" 1524 >mensaje</link 1525 >) junto a un campo de entrada. Una vez que el usuario ha introducido un <link linkend="number" 1526 >número</link 1527 > o una <link linkend="string" 1528 >cadena</link 1529 >, el resultado puede guardarse en una <link linkend="assignment-of-variables" 1530 >variable</link 1531 > o pasarse como un argumento a otra <link linkend="commands" 1532 >orden</link 1533 >. Por ejemplo: <screen> 1534 $entrada = preguntar "¿En qué año naciste?" 1535 $salida = 2003 - $entrada 1536 escribir "En 2003 tenías " + salida + " años." 1537 </screen 1538 > Si el usuario cancela el diálogo de entrada o no introduce ningún valor, la <link linkend="assignment-of-variables" 1539 >variable</link 1540 > queda vacía.</para 1541 ></listitem> 1542 </varlistentry> 1543 </variablelist> 1544 </sect2> 1545 1546 </sect1> 1547 1548 1549 1550 <sect1 id="assignment-of-variables"> 1551 <title 1552 >Asignar valores a las variables</title> 1553 <para 1554 >Antes de nada, echemos un vistazo a las variables, después veremos cómo asignarles valores. </para> 1555 1556 <para 1557 >Las variables son palabras que comienzan con un <quote 1558 >$</quote 1559 >; en el <link linkend="the-editor" 1560 >editor</link 1561 >, aparecen <glossterm 1562 >resaltadas</glossterm 1563 > en color morado.</para> 1564 1565 <para 1566 >Las variables pueden contener un <link linkend="number" 1567 >número</link 1568 >, una <link linkend="string" 1569 >cadena</link 1570 > o un <link linkend="boolean-value" 1571 >valor lógico (verdadero/falso)</link 1572 >. Con el signo de asignación (<userinput 1573 >=</userinput 1574 >) se da un valor a la variable, que mantendrá hasta que el programa termine de ejecutarse o hasta que se le asigne un nuevo valor.</para> 1575 1576 <para 1577 >Puedes usar las variables, una vez asignadas, de la misma forma que usarías su contenido. Por ejemplo, vea el siguiente código de &turtlescript;: <screen> 1578 $x = 10 1579 $x = $x / 3 1580 escribir $x 1581 </screen 1582 > Primero, a la variable <userinput 1583 >$x</userinput 1584 > se le asigna el valor <userinput 1585 >10</userinput 1586 >. A continuación, a esta misma variable <userinput 1587 >$x</userinput 1588 > se le asigna su propio valor dividido por <userinput 1589 >3</userinput 1590 >, es decir, a la variable <userinput 1591 >$x</userinput 1592 > se da el valor <userinput 1593 >10 / 3</userinput 1594 >. Finalmente, se escribe <userinput 1595 >$x</userinput 1596 >. En las líneas dos y tres, comprobará que se usa la variable <userinput 1597 >$x</userinput 1598 > como si fuera un número.</para> 1599 1600 <para 1601 >A las variables hay que asignarles un valor para que puedan ser usadas. Por ejemplo:<screen> 1602 escribir $n 1603 </screen 1604 > Este código da lugar a un mensaje de error.</para> 1605 1606 <para 1607 >Considera el siguiente código de &turtlescript;: <screen> 1608 $a = 2004 1609 $b = 25 1610 1611 # la siguiente orden escribe "2029" 1612 escribir $a + $b 1613 retroceder 30 1614 # la siguiente orden escribe "2004 más 25 igual a 2029" 1615 escribir $a + " más " + $b + " es igual a " + ($a + $b) 1616 </screen 1617 > En las primeras dos líneas, a las variables <userinput 1618 >$a</userinput 1619 > y <userinput 1620 >$b</userinput 1621 > se les asigna los valores 2004 y 25. A continuación hay dos órdenes <userinput 1622 >escribir</userinput 1623 > con una orden <userinput 1624 >retroceder 30</userinput 1625 > en medio. Los comentarios que hay antes de las órdenes <userinput 1626 >escribir</userinput 1627 > explican lo que hacen. Como ves, puedes usar las variables de la misma forma que usarías sus contenidos. Es decir, puedes usarlas con cualquier <link linkend="operators" 1628 >operador</link 1629 > o convertirlas en el parámetro de entrada de una <link linkend="commands" 1630 >orden</link 1631 >.</para> 1632 1633 <para 1634 >Un nuevo ejemplo: <screen> 1635 $nombre = preguntar "¿Cuál es tu nombre?" 1636 escribir "¡Hola " + $nombre + "! Buena suerte con el aprendizaje del arte del programar..." 1637 </screen 1638 > Este ejemplo es muy claro. De nuevo, aquí tiene como la variable <userinput 1639 >$name</userinput 1640 > se trata como si fuera una cadena.</para> 1641 1642 <para 1643 >Cuando estés usando variables, el <link linkend="the-inspector" 1644 >inspector</link 1645 > te puede ser de gran ayuda. Muestra el contenido de todas las variables que están en uso en un momento dado.</para> 1646 </sect1> 1647 1648 1649 1650 <sect1 id="controlling-execution"> 1651 <title 1652 >Cómo controlar la ejecución</title> 1653 <para 1654 >Los controladores de la ejecución permiten, tal como su nombre indica, controlar la ejecución.</para> 1655 <para 1656 >Las órdenes de control de la ejecución aparecen <glossterm 1657 >resaltadas</glossterm 1658 > en negro y con un tipo de letra negrita. Las llaves, que se usan generalmente junto con los controladores de ejecución, aparecen <glossterm 1659 >resaltadas</glossterm 1660 > en negro.</para> 1661 1662 <sect2 id="wait"> 1663 <title 1664 >Cómo hacer que la tortuga espere</title> 1665 <para 1666 >Si ya has programado algo en &kturtle;, te habrás dado cuenta de que la tortuga es muy rápida dibujando. Con esta orden puede hacer que la tortuga se detenga durante un tiempo determinado.</para> 1667 <variablelist> 1668 <varlistentry> 1669 <term 1670 >esperar<indexterm 1671 ><primary 1672 >esperar</primary 1673 ></indexterm 1674 ></term> 1675 <listitem 1676 ><para 1677 ><screen 1678 >esperar X</screen 1679 ><userinput 1680 >esperar</userinput 1681 > hace que la tortuga se detenga durante X segundos. <screen> 1682 repetir 36 { 1683 avanzar 5 1684 derecha 10 1685 esperar 0,5 1686 } 1687 </screen 1688 > Este código dibuja un circulo, pero la tortuga espera durante medio segundo antes de realizar el siguiente paso. Esto da la impresión de que la tortuga se está moviendo a cámara lenta.</para 1689 ></listitem> 1690 </varlistentry> 1691 </variablelist> 1692 </sect2> 1693 1694 <sect2 id="if"> 1695 <title 1696 >Ejecutar <quote 1697 >si</quote 1698 ></title> 1699 <variablelist> 1700 <varlistentry> 1701 <term 1702 >si<indexterm 1703 ><primary 1704 >si</primary 1705 ></indexterm 1706 ></term> 1707 <listitem 1708 ><para 1709 ><screen 1710 >si <link linkend="boolean-value" 1711 >valor lógico</link 1712 > { ... }</screen 1713 >El código que está entre llaves solo se ejecutará <userinput 1714 >si</userinput 1715 > el <link linkend="boolean-value" 1716 >valor lógico</link 1717 > es «verdadero». <screen> 1718 $x = 6 1719 si $x > 5 { 1720 escribir $x + " es mayor que cinco" 1721 } 1722 </screen 1723 > En la primer línea, a <userinput 1724 >$x</userinput 1725 > se le asigna el valor 6. En la segunda, se usa un <link linkend="comparing-operators" 1726 >operador de comparación</link 1727 > para evaluar la condición <userinput 1728 >$x > 5</userinput 1729 >. Al cumplirse esta condición, es decir, al ser 6 mayor que 5, el controlador <userinput 1730 >si</userinput 1731 > permite que el código entre llaves se ejecute.</para 1732 ></listitem> 1733 </varlistentry> 1734 </variablelist> 1735 </sect2> 1736 1737 <sect2 id="else"> 1738 <title 1739 >Si no es así: «sino»</title> 1740 <variablelist> 1741 <varlistentry> 1742 <term 1743 >sino<indexterm 1744 ><primary 1745 >sino</primary 1746 ></indexterm 1747 ></term> 1748 <listitem 1749 ><para 1750 ><screen 1751 >si <link linkend="boolean-value" 1752 >valor lógico</link 1753 > { ... } sino { ... }</screen 1754 ><userinput 1755 >sino</userinput 1756 > puede usarse en conjunción con el controlador <link linkend="if" 1757 ><userinput 1758 >si</userinput 1759 ></link 1760 >. El código que aparece entre llaves después de <userinput 1761 >sino</userinput 1762 > solo se ejecute si el <link linkend="boolean-value" 1763 >valor lógico</link 1764 > es «falso». <screen> 1765 reiniciar 1766 $x = 4 1767 si $x > 5 { 1768 escribir $x + " es mayor que cinco" 1769 } 1770 sino { 1771 escribir $x + " es menor que seis" 1772 } 1773 </screen 1774 > El <link linkend="comparing-operators" 1775 >operador de comparación</link 1776 > evalúa la expresión <userinput 1777 >$x > 5</userinput 1778 >. Ya que en este caso 4 no es mayor que 5, el resultado es «falso». Esto quiere decir que se ejecuta el código que aparece entre llaves después de <userinput 1779 >sino</userinput 1780 >.</para 1781 ></listitem> 1782 </varlistentry> 1783 </variablelist> 1784 </sect2> 1785 1786 <sect2 id="while"> 1787 <title 1788 >El bucle «mientras»</title> 1789 <variablelist> 1790 <varlistentry> 1791 <term 1792 >mientras<indexterm 1793 ><primary 1794 >mientras</primary 1795 ></indexterm 1796 ></term> 1797 <listitem 1798 ><para 1799 ><screen 1800 >mientras <link linkend="boolean-value" 1801 >valor lógico</link 1802 > { ... }</screen 1803 >El controlador <userinput 1804 >mientras</userinput 1805 > actúa de forma similar a <link linkend="if" 1806 ><userinput 1807 >si</userinput 1808 ></link 1809 >. La diferencia es que <userinput 1810 >mientras</userinput 1811 > continúa ejecutando (en un bucle) el código que se encuentra entre llaves hasta que el <link linkend="boolean-value" 1812 >valor lógico</link 1813 > sea «falso». <screen> 1814 $x = 1 1815 mientras $x < 5 { 1816 avanzar 10 1817 esperar 1 1818 $x = $x + 1 1819 } 1820 </screen 1821 >En la primer línea, a <userinput 1822 >$x</userinput 1823 > se le asigna el valor 1. En la segunda, se evalúa la condición <userinput 1824 >$x < 5</userinput 1825 >. Mientras el resultado de esta condición sea «verdadero», el controlador <userinput 1826 >while</userinput 1827 > continúa ejecutando el código que se encuentra entre llaves, así hasta que la condición <userinput 1828 >$x < 5</userinput 1829 > sea «falsa». En este ejemplo, el código entre llaves se ejecuta 4 veces, porque cada vez que la quinta línea se ejecuta, al valor de <userinput 1830 >$x</userinput 1831 > se le suma 1.</para 1832 ></listitem> 1833 </varlistentry> 1834 </variablelist> 1835 </sect2> 1836 1837 <sect2 id="repeat"> 1838 <title 1839 >El bucle «repetir»</title> 1840 <variablelist> 1841 <varlistentry> 1842 <term 1843 >repetir<indexterm 1844 ><primary 1845 >repetir</primary 1846 ></indexterm 1847 ></term> 1848 <listitem 1849 ><para 1850 ><screen 1851 >repetir <link linkend="number" 1852 >número</link 1853 > { ... }</screen 1854 >El controlador <userinput 1855 >repetir</userinput 1856 > actúa de forma similar a <link linkend="while" 1857 ><userinput 1858 >mientras</userinput 1859 ></link 1860 >. La diferencia es que <userinput 1861 >repetir</userinput 1862 > continúa ejecutando (en un bucle) el código que se encuentra entre llaves tantas veces como le indica el número dado.</para 1863 ></listitem> 1864 </varlistentry> 1865 </variablelist> 1866 </sect2> 1867 1868 <sect2 id="for"> 1869 <title 1870 >El bucle «para», un bucle que cuenta</title> 1871 <variablelist> 1872 <varlistentry> 1873 <term 1874 >para<indexterm 1875 ><primary 1876 >para</primary 1877 ></indexterm 1878 ><indexterm 1879 ><primary 1880 >hasta</primary 1881 ></indexterm 1882 ><indexterm 1883 ><primary 1884 >paso</primary 1885 ></indexterm 1886 ></term> 1887 <listitem 1888 ><para 1889 ><screen 1890 >para <link linkend="assignment-of-variables" 1891 >variable</link 1892 > = <link linkend="number" 1893 >número</link 1894 > hasta <link linkend="number" 1895 >número</link 1896 > { ... }</screen 1897 >El bucle <userinput 1898 >para</userinput 1899 > es un «bucle que cuenta», &ie;, que lleva la cuenta por ti. El primer número asigna a la variable el valor del primer bucle. Con cada bucle, este número se incrementa hasta alcanzar el segundo número. <screen> 1900 para $x = 1 hasta 10 { 1901 escribir $x * 7 1902 avanzar 15 1903 } 1904 </screen 1905 > Cada vez que se ejecute el código entre llaves, la variable <userinput 1906 >$x</userinput 1907 > se incrementa en 1, así hasta que sea igual a 10. El código entre llaves escribe el valor de <userinput 1908 >$x</userinput 1909 > multiplicado por 7. Cuando el código termine de ejecutarse, verás en el lienzo la tabla de multiplicar del 7. </para> 1910 <para 1911 >El incremento predeterminado del bucle es 1, pero puedes usar otro valor con: <screen 1912 >para <link linkend="assignment-of-variables" 1913 >variable</link 1914 > = <link linkend="number" 1915 >número</link 1916 > hasta <link linkend="number" 1917 >número</link 1918 > paso <link linkend="number" 1919 >número</link 1920 > { ... }</screen 1921 ></para 1922 ></listitem> 1923 </varlistentry> 1924 </variablelist> 1925 </sect2> 1926 1927 <sect2 id="break"> 1928 <title 1929 >Interrumpir un bucle</title> 1930 <variablelist> 1931 <varlistentry> 1932 <term 1933 >parar<indexterm 1934 ><primary 1935 >parar</primary 1936 ></indexterm 1937 ></term> 1938 <listitem 1939 ><para 1940 ><screen 1941 >parar</screen 1942 >Interrumpe inmediatamente el bucle que se está ejecutando y transfiere el control a la primera línea de código después del bucle. </para 1943 ></listitem> 1944 </varlistentry> 1945 </variablelist> 1946 </sect2> 1947 1948 <sect2 id="exit"> 1949 <title 1950 >Interrumpir la ejecución de tu programa</title> 1951 <variablelist> 1952 <varlistentry> 1953 <term 1954 >salir<indexterm 1955 ><primary 1956 >salir</primary 1957 ></indexterm 1958 ></term> 1959 <listitem 1960 ><para 1961 ><screen 1962 >salir</screen 1963 >Detiene la ejecución de tu programa.</para 1964 ></listitem> 1965 </varlistentry> 1966 </variablelist> 1967 </sect2> 1968 1969 <sect2 id="assert"> 1970 <title 1971 >Comprobación de afirmaciones en tiempo de ejecución</title> 1972 <variablelist> 1973 <varlistentry> 1974 <term 1975 >afirmar<indexterm 1976 ><primary 1977 >afirmar</primary 1978 ></indexterm 1979 ></term> 1980 <listitem 1981 ><para 1982 ><screen 1983 >afirmar<link linkend="boolean-value" 1984 >valor lógico</link 1985 > { ... }</screen 1986 >Se puede utilizar para razonar sobre la corrección del programa o de los datos de entrada <screen 1987 >$in = ask "What is your year of birth?" 1988 # el año debe ser positivo 1989 assert $in 1990 > 0 1991 </screen 1992 ></para 1993 ></listitem> 1994 </varlistentry> 1995 </variablelist> 1996 </sect2> 1997 </sect1> 1998 1999 2000 <sect1 id="learn"> 2001 2002 <title 2003 >Crea tus propias órdenes con «aprender»</title> 2004 <para 2005 ><userinput 2006 >aprender</userinput 2007 ><indexterm 2008 ><primary 2009 >aprender</primary 2010 ></indexterm 2011 > es especial ya que lo puedes usar para crear tus propias órdenes. La orden que crees puede admitir <glossterm linkend="input-output" 2012 >parámetros de entrada</glossterm 2013 > y devolver <glossterm linkend="input-output" 2014 >parámetros de salida</glossterm 2015 >. Veamos cómo se crea una nueva orden:<screen> 2016 aprender círculo $x { 2017 repetir 36 { 2018 avanzar $x 2019 izquierda 10 2020 } 2021 } 2022 </screen 2023 > La nueva orden se denomina <userinput 2024 >círculo</userinput 2025 >. <userinput 2026 >círculo</userinput 2027 > necesita un <glossterm linkend="input-output" 2028 >parámetro de entrada</glossterm 2029 > para fijar el tamaño del círculo y no devuelve ningún <glossterm linkend="input-output" 2030 >parámetro de salida</glossterm 2031 >. A partir de ahora la orden <userinput 2032 >círculo</userinput 2033 > puede usarse como una orden normal en cualquier lugar del código. Mira este ejemplo: <screen 2034 >aprender círculo $x { 2035 repetir 36 { 2036 avanzar $x 2037 izquierda 10 2038 } 2039 } 2040 2041 ir 200;200 2042 círculo 20 2043 2044 ir 300;200 2045 círculo 40 2046 </screen> 2047 </para> 2048 <para 2049 >En el próximo ejemplo, se crea una orden que devuelve un parámetro de salida<indexterm 2050 ><primary 2051 >parámetro de salida</primary 2052 ></indexterm 2053 >: <screen> 2054 aprender facultad $x { 2055 $r = 1 2056 para $i = 1 hasta $x { 2057 $r = $r * $i 2058 } 2059 devolver $r 2060 } 2061 2062 escribir facultad 5 2063 </screen 2064 >En este ejemplo, se crea una nueva orden llamada <userinput 2065 >facultad</userinput 2066 >. Si el parámetro de entrada es <userinput 2067 >5</userinput 2068 >, entonces el parámetro de salida es <userinput 2069 >5*4*3*2*1</userinput 2070 >. Con <userinput 2071 >devolver</userinput 2072 > se define un <glossterm linkend="input-output" 2073 >parámetro de salida</glossterm 2074 > que se devuelve durante la ejecución.</para> 2075 <para 2076 >Las órdenes pueden tener más de un <glossterm linkend="input-output" 2077 >parámetro de entrada</glossterm 2078 >. En el siguiente ejemplo se crea una orden que dibuja un rectángulo: <screen> 2079 aprender caja $x;$y { 2080 avanzar $y 2081 derecha 90 2082 avanzar $x 2083 derecha 90 2084 avanzar $y 2085 derecha 90 2086 avanzar $x 2087 derecha 90 2088 } 2089 </screen 2090 > Ahora, si ejecuta <userinput 2091 >caja 50;100</userinput 2092 >, la tortuga dibujará una rectángulo en el lienzo. </para> 2093 2094 </sect1> 2095 2096 </chapter>