Warning, /education/kturtle/po/gl/docs/kturtle/programming-reference.docbook is written in an unsupported language. File is not indexed.
0001 <chapter id="reference"> 0002 <title 0003 >Referencia do programador de &turtlescript;</title> 0004 <para 0005 >Este é o manual do &turtlescript; de &kturtle;. Na primeira sección vense algúns aspectos da <link linkend="grammar" 0006 >gramática</link 0007 > dos programas de &turtlescript;. A segunda sección trata das <link linkend="mathematical-operators" 0008 >operacións matemáticas</link 0009 >, <link linkend="boolean-operators" 0010 >operacións lóxicas (certo/falso)</link 0011 > e <link linkend="comparing-operators" 0012 >operacións de comparación</link 0013 >. A terceira sección é unha lista de todas as <link linkend="commands" 0014 >ordes</link 0015 > explicándoas unha por unha. A cuarta sección explica como <link linkend="assignment-of-variables" 0016 >asignar</link 0017 > valores a <link linkend="assignment-of-variables" 0018 >variábeis</link 0019 >. Na quinta sección explícase como ordear a execución das ordes con <link linkend="controlling-execution" 0020 >sentenzas de control da execución</link 0021 > e finalmente na sexta como crear as tuas proprias ordes con <link linkend="learn" 0022 >define</link 0023 >.</para> 0024 0025 <sect1 id="grammar"> 0026 <title 0027 >A gramática de &turtlescript;</title> 0028 <para 0029 >Como calquera linguaxe, &turtlescript; ten diferentes tipos de palabras e símbolos. En galego distinguimos verbos (como «camiñar» ou «falar») e nomes (como «tartaruga» ou «bicicleta»), e úsanse para cousas diferentes. &turtlescript; é unha linguaxe de programación que se usa para dicirlle á &kturtle; o que ten que facer.</para> 0030 <para 0031 >Nesta sección explícase brevemente que son algúns tipos de palabras de &turtlescript;. Explicaremos os <link linkend="comment" 0032 >comentarios</link 0033 >, <link linkend="command" 0034 >ordes</link 0035 > e os tres tipos diferentes de literais: <link linkend="number" 0036 >números</link 0037 >, <link linkend="string" 0038 >textos</link 0039 > e <link linkend="boolean-value" 0040 >valores lóxicos (certo/falso)</link 0041 >.</para> 0042 0043 0044 <sect2 id="comment"> 0045 <title 0046 >Comentarios</title> 0047 <para 0048 >Un programa consiste en instrucións que se executan cando se executa o programa e en comentarios. Os comentarios non se executan, &kturtle; ignóraos; somente están aí para que outros programadores entendan mellor o que fai o programa. En &turtlescript; considérase comentario todo o que segue a un símbolo <userinput 0049 >#</userinput 0050 >. Por exemplo este programa que non fai ren: <screen> 0051 #este programa non fai ren, só é un comentario! 0052 </screen 0053 > É pouco útil pero explica moi ben o asunto.</para> 0054 <para 0055 >Os comentarios son moi útiles cando o programa empeza a ser algo complexo. Poden axudar a outros programadores. No seguinte programa podes ver comentarios usados xunto coa orde <link linkend="print" 0056 >escribe</link 0057 >.<screen> 0058 # este programa fíxoo Cies Breijs. 0059 escribe "este texto hase escribir no lenzo" 0060 # a liña anterior non é un comentario, a seguinte si: 0061 # escribe "este texto non se ha escribir!" 0062 </screen 0063 > A primeira liña describe o programa. &kturtle; executa a segunda e imprime <userinput 0064 >este texto hase escribir no lenzo</userinput 0065 > no lenzo. A terceira liña é un comentario, e a cuarta liña é un comentario que contén unha peza de &turtlescript;, se eliminásemos o símbolo <userinput 0066 >#</userinput 0067 > desta liña &kturtle; había executar a orde. Os programadores din: a orde escribe na cuarta liña está «comentada».</para> 0068 <para 0069 >As liñas comentadas son <glossterm 0070 >realzadas</glossterm 0071 > en gris claro no <link linkend="the-editor" 0072 >editor do código</link 0073 >.</para> 0074 </sect2> 0075 0076 <sect2 id="command"> 0077 <title 0078 >Ordes</title> 0079 <para 0080 >Mediante as ordes díslle á tartaruga de &kturtle; que faga algo. Algunhas ordes precisan datos, outras producen algunha saída. <screen> 0081 # avanza é unha orde que precisa de datos, neste caso o número 100: 0082 avanza 100 0083 </screen 0084 > A primeira liña é un <link linkend="comment" 0085 >comentario</link 0086 >. A segunda liña contén a orde <userinput 0087 >avanza</userinput 0088 > e o <link linkend="number" 0089 >número</link 0090 > <userinput 0091 >100</userinput 0092 >. O número non é parte da orde, senón que se considera «entrada» del.</para> 0093 <para 0094 >Algunhas ordes como ⪚ <userinput 0095 >vai</userinput 0096 > precisan de máis dun dato de entrada. Cando son varios valores hai que separalos mediente <userinput 0097 >,</userinput 0098 > (comas).</para> 0099 <para 0100 >Para coñecer máis detalles sobre todas as ordes permitidas por &kturtle; vaia <link linkend="commands" 0101 >aquí</link 0102 >. As ordes de serie <glossterm 0103 >reálzanse</glossterm 0104 > en azul escuro</para> 0105 </sect2> 0106 0107 <sect2 id="number"> 0108 <title 0109 >Números</title> 0110 <para 0111 >Posibelmente xa saiba bastante sobre os números. A maneira de utilizar os números en &kturtle; non é moi distinta da oral, nin da matemática. </para> 0112 <para 0113 >Temos os números naturais: <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, os números negativos: <userinput 0126 >-1</userinput 0127 >, <userinput 0128 >-2</userinput 0129 >, <userinput 0130 >-3</userinput 0131 > etc. E tamén temos números con parte decimal, por exemplo: <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 >. Úsase o <userinput 0142 >.</userinput 0143 > (punto) como separador decimal. </para> 0144 <para 0145 >Os números poden ser utilizados en <link linkend="mathematical-operators" 0146 >operacións matemáticas</link 0147 > e <link linkend="comparing-operators" 0148 >comparacións</link 0149 >. Tamén poden gardarse en <link linkend="assignment-of-variables" 0150 >variábeis</link 0151 >. Os números <glossterm 0152 >reálzanse</glossterm 0153 > en roxo.</para> 0154 </sect2> 0155 0156 <!-- constants like pi? --> 0157 0158 <sect2 id="string"> 0159 <title 0160 >Textos</title> 0161 <para 0162 >Primeiro un exemplo: <screen> 0163 escribe "Olá, son un texto."</screen> 0164 Neste exemplo <userinput 0165 >escribe</userinput 0166 > é unha orde na que <userinput 0167 >"Olá, son un texto."</userinput 0168 > é un texto. Os textos comezan e rematan con aspas, <userinput 0169 >"</userinput 0170 >, mediante as cais &kturtle; sabe que é un texto.</para> 0171 <para 0172 >Os textos poden porse en <link linkend="assignment-of-variables" 0173 >variábeis</link 0174 >, igual que os <link linkend="number" 0175 >números</link 0176 >, pero a diferenza destes non poden usarse en <link linkend="mathematical-operators" 0177 >operacións matemáticas</link 0178 > nin en <link linkend="comparing-operators" 0179 >comparacións</link 0180 >. Os textos <glossterm 0181 >reálzanse</glossterm 0182 > en vermello.</para> 0183 </sect2> 0184 0185 <sect2 id="boolean-value"> 0186 <title 0187 >Valores lóxicos (certo/falso)</title> 0188 <para 0189 >Só hai dous valores lóxicos: <userinput 0190 >certo</userinput 0191 ><indexterm 0192 ><primary 0193 >certo</primary 0194 ></indexterm 0195 > e <userinput 0196 >falso</userinput 0197 ><indexterm 0198 ><primary 0199 >falso</primary 0200 ></indexterm 0201 >. Algunhas veces tamén se lles chama: verdadeiro e falso, si e non, un e cero. Pero en &turtlescript; sempre se lles chama <userinput 0202 >certo</userinput 0203 > e <userinput 0204 >falso</userinput 0205 >. Bótalle unha olla da e este retallo de &turtlescript;: <screen> 0206 $a = certo 0207 </screen 0208 >. Se miran no <link linkend="the-inspector" 0209 >inspector</link 0210 > verás que a <link linkend="assignment-of-variables" 0211 >variábel</link 0212 > <userinput 0213 >$a</userinput 0214 > ten o valor <userinput 0215 >certo</userinput 0216 > e é de tipo lóxico.</para> 0217 <para 0218 >A miúdo os valores lóxicos son o resultado dunha <link linkend="comparing-operators" 0219 >operación de comparación</link 0220 >, como no seguinte retallo de &turtlescript;: <screen> 0221 $resposta = 10 > 3 0222 </screen 0223 > A <link linkend="assignment-of-variables" 0224 >variábel</link 0225 > <userinput 0226 >$resposta</userinput 0227 > ten o valor <userinput 0228 >certo</userinput 0229 > porque <userinput 0230 >10</userinput 0231 > é maior que <userinput 0232 >3</userinput 0233 >.</para> 0234 <para 0235 >Os valores lóxicos, <userinput 0236 >certo</userinput 0237 > e <userinput 0238 >falso</userinput 0239 >, son <glossterm 0240 >realzados</glossterm 0241 > en roxo escuro.</para> 0242 </sect2> 0243 0244 </sect1> 0245 0246 0247 0248 <sect1 id="operators"> 0249 <title 0250 >Operacións matemáticas, lóxicas e de comparación</title> 0251 <para 0252 >O título desta sección pode parecer difícil, pero non o é tanto como parece.</para> 0253 0254 <sect2 id="mathematical-operators"> 0255 <title 0256 >Operacións matemáticas</title> 0257 <para 0258 >Estes son os símbolos matemáticos básicos: suma (<userinput 0259 >+</userinput 0260 >), resta (<userinput 0261 >-</userinput 0262 >), multiplicación (<userinput 0263 >*</userinput 0264 >), división (<userinput 0265 >/</userinput 0266 >) e potencia(<userinput 0267 > ^ </userinput 0268 >).</para> 0269 0270 <para 0271 >Este é un exemplo das operacións matemáticas que podes usar no &turtlescript;: <screen> 0272 $suma = 1 + 1 0273 $resta = 20 - 5 0274 $multiplica= 15*2 0275 $divide = 30 / 30 0276 $repite = 2 ^ 2 0277 </screen 0278 > Os resultados das operacións matemáticas <link linkend="assignment-of-variables" 0279 >asígnanse</link 0280 > a <link linkend="assignment-of-variables" 0281 >variábeis</link 0282 >. Mediante o <link linkend="the-inspector" 0283 >inspector</link 0284 > pode consultalas.</para> 0285 <para 0286 >Se só ques facer un cálculo simples podes facer algo como isto: <screen 0287 >escribe 2010-12 0288 </screen 0289 ></para> 0290 <para 0291 >Agora un exemplo con parénteses: <screen> 0292 escribe ( (20 - 5) * 2 / 30 ) + 1 0293 </screen 0294 > As expresións entre parénteses serán calculadas primeiro. Neste exemplo, calcularase 20-5, logo multiplicarase por 2, dividirase entre 30, e finalmente engádeselle 1, co que dá o resultado 2. Os parénteses tamén se poden usar noutros casos.</para> 0295 <para 0296 >&kturtle; tamén ten funcionalidades matemáticas máis avanzadas entre as súas ordes. Bótalle un ollo ás seguintes ordes, pero ten en conta que son operacións avnzadas: <link linkend="round" 0297 >redondea</link 0298 >, <link linkend="random" 0299 >aleatorio</link 0300 >, <link linkend="sqrt" 0301 >raiz</link 0302 >, <link linkend="pi" 0303 >pi</link 0304 >, <link linkend="sin" 0305 >seno</link 0306 >, <link linkend="cos" 0307 >coseno</link 0308 >, <link linkend="tan" 0309 >tanxente</link 0310 >, <link linkend="arcsin" 0311 >arcoseno</link 0312 >, <link linkend="arccos" 0313 >arcocoseno</link 0314 >, <link linkend="arctan" 0315 >arcotanxente</link 0316 >.</para> 0317 </sect2> 0318 0319 <sect2 id="boolean-operators"> 0320 <title 0321 >Operacións lóxicas (certo/falso)</title> 0322 <para 0323 >Mentres que as <link linkend="mathematical-operators" 0324 >operacións matemáticas</link 0325 > son principalmente para <link linkend="number" 0326 >números</link 0327 >, as lóxicas sono para <link linkend="boolean-value" 0328 >valores lóxicos</link 0329 > (<userinput 0330 >certo</userinput 0331 > e <userinput 0332 >falso</userinput 0333 >). Só hai tres operacións lóxicas: <userinput 0334 >e</userinput 0335 ><indexterm 0336 ><primary 0337 >e</primary 0338 ></indexterm 0339 >, <userinput 0340 >ou</userinput 0341 ><indexterm 0342 ><primary 0343 >ou</primary 0344 ></indexterm 0345 >, e <userinput 0346 >non</userinput 0347 ><indexterm 0348 ><primary 0349 >non</primary 0350 ></indexterm 0351 >. Este retallo de &turtlescript; mostra como usalos: <screen 0352 > $e_1_1 = certo e certo # -> certo 0353 $e_1_0 = certo e falso # -> falso 0354 $e_0_1 = falso e falso # -> falso 0355 $e_0_0 = falso e falso # -> falso 0356 0357 $ou_1_1 = certo ou certo # -> certo 0358 $ou_1_0 = certo ou falso # -> certo 0359 $ou_0_1 = falso ou certo # -> certo 0360 $ou_0_0 = falso ou falso # -> falso 0361 n$non_1 = non certo # -> falso 0362 $non_0 = non falso # -> certo 0363 </screen 0364 > Usando o <link linkend="the-inspector" 0365 >inspector</link 0366 > pode consultar os valores, aínda que poñemos os resultados nos comentarios ao final das liñas. <userinput 0367 >e</userinput 0368 > dá <userinput 0369 >certo</userinput 0370 > só se ambos os dous lados son <userinput 0371 >certo</userinput 0372 >. <userinput 0373 >ou</userinput 0374 > dá <userinput 0375 >certo</userinput 0376 > se algún dos lados é <userinput 0377 >certo</userinput 0378 >. E <userinput 0379 >non</userinput 0380 > converte un <userinput 0381 >certo</userinput 0382 > nun <userinput 0383 >falso</userinput 0384 > e un <userinput 0385 >falso</userinput 0386 > nun <userinput 0387 >certo</userinput 0388 >.</para> 0389 <para 0390 >A operacións lóxicas <glossterm 0391 >reálzanse</glossterm 0392 > en rosa.</para> 0393 0394 <sect3 id="boolean-operators-advanced-examples"> 0395 <title 0396 >Algúns exemplos máis avanzados</title> 0397 <para 0398 >Considera o seguinte exemplo con <userinput 0399 >e</userinput 0400 >: <screen> 0401 $a = 1 0402 $b = 5 0403 se ( ($a < 10) e ($b == 5) ) e ($a < $b) { 0404 escribe "Olá" 0405 } 0406 </screen 0407 > Neste retallo de &turtlescript; o resultado de tres <link linkend="comparing-operators" 0408 >operacións de comparación</link 0409 > xúntase mediante operacións <userinput 0410 >e</userinput 0411 >. Isto significa que os tres deben dar «certo» para que se escriba «Olá».</para> 0412 0413 <para 0414 >Un exemplo con <userinput 0415 >ou</userinput 0416 >:<screen> 0417 %n = 1 0418 se ($n < 10) ou ($n == 2) { 0419 escribe "Olá" 0420 } 0421 </screen 0422 > Neste retallo de &turtlescript; o lado da esquerda do <userinput 0423 >ou</userinput 0424 > avalíase como «certo» e o da dereira a «falso». Xa que un dos lados do operador <userinput 0425 >ou</userinput 0426 > é «certo», o operador <userinput 0427 >ou</userinput 0428 > avalíase como «certo», en consecuencia escríbese «Olá».</para> 0429 0430 <para 0431 >E finalmente un exemplo con <userinput 0432 >non</userinput 0433 >, que troca para «certo» por «falso» e «falso» por «certo». Mira: <screen 0434 >$n = 1 0435 se non ($n == 3) { 0436 escribe "Olá" 0437 } senon { 0438 escribe "non olá ;-)" 0439 } 0440 </screen 0441 ></para> 0442 </sect3> 0443 </sect2> 0444 0445 <sect2 id="comparing-operators"> 0446 <title 0447 >Operacións de comparación</title> 0448 <para 0449 >Considera esa sinxela comparación: <screen> 0450 $resposta = 10 > 3 0451 </screen 0452 > Aquí compárase<userinput 0453 >10</userinput 0454 > con <userinput 0455 >3</userinput 0456 > mediante o operador «maior que». 0457 O resultado desta comparación, o <link linkend="boolean-value" 0458 >valor lóxico</link 0459 > <userinput 0460 >certo</userinput 0461 > gárdase na <link linkend="assignment-of-variables" 0462 >variábel</link 0463 > <userinput 0464 >$resposta</userinput 0465 >.</para> 0466 <para 0467 >Os <link linkend="number" 0468 >números</link 0469 > e as <link linkend="assignment-of-variables" 0470 >variábeis</link 0471 > (que conteñen números) poden compararse entre si mediante operacións de comparación.</para> 0472 <para 0473 >Este son todas as operacións de comparación: <table 0474 > <title 0475 >Tipos de preguntas</title 0476 > <tgroup cols="3" 0477 > <tbody 0478 > <row 0479 > <entry 0480 ><userinput 0481 >$A == $B</userinput 0482 ></entry 0483 > <entry 0484 >é igual a</entry 0485 > <entry 0486 >a resposta é <quote 0487 >certo</quote 0488 > se <userinput 0489 >$A</userinput 0490 > conté o mesmo valor que <userinput 0491 >$B</userinput 0492 ></entry 0493 > </row 0494 > <row 0495 > <entry 0496 ><userinput 0497 >$A != $B</userinput 0498 ></entry 0499 > <entry 0500 >é diferente de </entry 0501 > <entry 0502 >a resposta é <quote 0503 >certo</quote 0504 > se <userinput 0505 >$A</userinput 0506 > non é igual que <userinput 0507 >$B</userinput 0508 ></entry 0509 > </row 0510 > <row 0511 > <entry 0512 ><userinput 0513 >$A > $B</userinput 0514 ></entry 0515 > <entry 0516 >maior que</entry 0517 > <entry 0518 >a resposta é <quote 0519 >certo</quote 0520 > se <userinput 0521 >$A</userinput 0522 > é maior que <userinput 0523 >$B</userinput 0524 ></entry 0525 > </row 0526 > <row 0527 > <entry 0528 ><userinput 0529 >$A < $B</userinput 0530 ></entry 0531 > <entry 0532 >menor que</entry 0533 > <entry 0534 >a resposta é <quote 0535 >certo</quote 0536 > se <userinput 0537 >$A</userinput 0538 > é menor que <userinput 0539 >$B</userinput 0540 ></entry 0541 > </row 0542 > <row 0543 > <entry 0544 ><userinput 0545 >$A >= $B</userinput 0546 ></entry 0547 > <entry 0548 >maior ou igual que</entry 0549 > <entry 0550 >a resposta é <quote 0551 >certo</quote 0552 > se <userinput 0553 >$A</userinput 0554 > é maior que ou igual a <userinput 0555 >$B</userinput 0556 ></entry 0557 > </row 0558 > <row 0559 > <entry 0560 ><userinput 0561 >$A <= $B</userinput 0562 ></entry 0563 > <entry 0564 >menor ou igual que</entry 0565 > <entry 0566 >a resposta é <quote 0567 >certo</quote 0568 > se <userinput 0569 >$A</userinput 0570 > é menor que ou igual a <userinput 0571 >$B</userinput 0572 ></entry 0573 > </row 0574 > </tbody 0575 > </tgroup 0576 > </table 0577 > Lembra que $A e $B teñen que ser <link linkend="number" 0578 >números</link 0579 > ou <link linkend="assignment-of-variables" 0580 >variábeis</link 0581 > que conteñan númeors.</para> 0582 </sect2> 0583 0584 0585 </sect1> 0586 0587 0588 0589 <sect1 id="commands"> 0590 <title 0591 >Ordes</title> 0592 <para 0593 >Mediante as ordes pode dicirlle ao sapoconcho de &kturtle; que faga algo. Algunhas ordes precisan de parámetros, outras xeran un resultado. Nesta sección explicamos todas as ordes que veñen de serie no &kturtle;. Ademáis, mediante a orde <link linkend="learn" 0594 >define</link 0595 > pode crear as súas propias ordes. As ordes de serie que se explican aquí <glossterm 0596 >reálzanse</glossterm 0597 > en azul escuro.</para> 0598 0599 <sect2 id="moving-the-turtle"> 0600 <title 0601 >Mover o sapoconcho</title> 0602 <para 0603 >Hai varias ordes que moven o sapoconcho pola pantalla.</para> 0604 0605 <variablelist> 0606 <anchor id="forward"/> 0607 <varlistentry 0608 > 0609 <term 0610 >avanza (av)<indexterm 0611 ><primary 0612 >avanza (av)</primary 0613 ></indexterm 0614 ></term> 0615 <listitem 0616 ><para 0617 ><screen 0618 >avanza X</screen 0619 ><userinput 0620 >avanza</userinput 0621 > move o sapoconcho cara diante X píxeles. Cando o lapis está pousado deixará un rastro. <userinput 0622 >avanza</userinput 0623 > pode abreviarse como <userinput 0624 >av</userinput 0625 ></para 0626 ></listitem> 0627 </varlistentry> 0628 </variablelist> 0629 <variablelist> 0630 <anchor id="backward"/> 0631 <varlistentry 0632 > 0633 <term 0634 >retrocede (re)<indexterm 0635 ><primary 0636 >retrocede (re)</primary 0637 ></indexterm 0638 ></term> 0639 <listitem 0640 ><para 0641 ><screen 0642 >retrocede X</screen 0643 ><userinput 0644 >retrocede</userinput 0645 > move o sapoconcho cara atrás X píxeles. Se o lapis está pousado deixará un rastro. <userinput 0646 >retrocede</userinput 0647 > pode abreviarse como <userinput 0648 >re</userinput 0649 >.</para 0650 ></listitem> 0651 </varlistentry> 0652 </variablelist> 0653 <variablelist> 0654 <anchor id="turnleft"/> 0655 <varlistentry 0656 > 0657 <term 0658 >xiraesquerda (xe)<indexterm 0659 ><primary 0660 >xiraesquerda (xe)</primary 0661 ></indexterm 0662 ></term> 0663 <listitem 0664 ><para 0665 ><screen 0666 >xiraesquerda X</screen 0667 ><userinput 0668 >xiraesquerda</userinput 0669 > ordénalle ao sapoconcho que xire X graus á esquerda. <userinput 0670 >xiraesquerda</userinput 0671 > pode abreviarse como <userinput 0672 >xe</userinput 0673 >.</para 0674 ></listitem> 0675 </varlistentry> 0676 </variablelist> 0677 <variablelist> 0678 <anchor id="turnright"/> 0679 <varlistentry 0680 > 0681 <term 0682 >xiradereita (xd)<indexterm 0683 ><primary 0684 >xiradereita (xd)</primary 0685 ></indexterm 0686 ></term> 0687 <listitem 0688 ><para 0689 ><screen 0690 >xiradereita X</screen 0691 ><userinput 0692 >xiradereita</userinput 0693 > ordénalle ao sapoconcho que xire X graus á dereita. <userinput 0694 >xiradereita</userinput 0695 > pode abreviarse como <userinput 0696 >xd</userinput 0697 >.</para 0698 ></listitem> 0699 </varlistentry> 0700 </variablelist> 0701 <variablelist> 0702 <anchor id="direction"/> 0703 <varlistentry 0704 > 0705 <term 0706 >direccion (dir)<indexterm 0707 ><primary 0708 >direccion (dir)</primary 0709 ></indexterm 0710 ></term> 0711 <listitem 0712 ><para 0713 ><screen 0714 >direccion X</screen 0715 ><userinput 0716 >direccion</userinput 0717 > fai que o sapoconcho tome unha ruta a X graus do cero, polo que non é relativa á anterior ruta que seguise o sapoconcho. <userinput 0718 >direccion</userinput 0719 > pode abreviarse como <userinput 0720 >dir</userinput 0721 >.</para 0722 ></listitem> 0723 </varlistentry> 0724 </variablelist> 0725 <variablelist> 0726 <anchor id="getdirection"/> 0727 <varlistentry 0728 > 0729 <term 0730 >obtendireccion<indexterm 0731 ><primary 0732 >obtendireccion</primary 0733 ></indexterm 0734 ></term> 0735 <listitem 0736 ><para 0737 ><screen 0738 >obtendireccion</screen 0739 ><userinput 0740 >obtendireccion</userinput 0741 > devolve a dirección na que mira a tartaruga como unha cantidade de graus contados desde arriba.</para 0742 ></listitem> 0743 </varlistentry> 0744 </variablelist> 0745 <variablelist> 0746 <anchor id="center"/> 0747 <varlistentry 0748 > 0749 <term 0750 >vaiamedio<indexterm 0751 ><primary 0752 >vaimedio</primary 0753 ></indexterm 0754 ></term> 0755 <listitem 0756 ><para 0757 ><screen 0758 >vaimedio</screen 0759 ><userinput 0760 >vaiamedio</userinput 0761 > leva o sapoconcho ao centro do lenzo.</para 0762 ></listitem> 0763 </varlistentry> 0764 </variablelist> 0765 <variablelist> 0766 <anchor id="go"/> 0767 <varlistentry 0768 > 0769 <term 0770 >vai<indexterm 0771 ><primary 0772 >vai</primary 0773 ></indexterm 0774 ></term> 0775 <listitem 0776 ><para 0777 ><screen 0778 >vai X,Y</screen 0779 ><userinput 0780 >vai</userinput 0781 > fai que o sapoconcho vaia a un lugar concreto do lenzo. Este lugar está a X <glossterm linkend="pixels" 0782 >píxeles</glossterm 0783 > da beira esquerda do lenzo e a Y <glossterm linkend="pixels" 0784 >píxeles</glossterm 0785 > da parte de riba do lenzo.</para 0786 ></listitem> 0787 </varlistentry> 0788 </variablelist> 0789 <variablelist> 0790 <anchor id="gox"/> 0791 <varlistentry 0792 > 0793 <term 0794 >vaix<indexterm 0795 ><primary 0796 >vaix (vx)</primary 0797 ></indexterm 0798 ></term> 0799 <listitem 0800 ><para 0801 ><screen 0802 >vaix X</screen 0803 ><userinput 0804 >vaix</userinput 0805 > fai que o sapoconcho vaia a unha posición situada a X <glossterm linkend="pixels" 0806 >píxeles</glossterm 0807 > do borde esquerdo do lenzo sen desprazarse en altura. <userinput 0808 >vaix</userinput 0809 > pode abreviarse com <userinput 0810 >vx</userinput 0811 >.</para 0812 ></listitem> 0813 </varlistentry> 0814 </variablelist> 0815 <variablelist> 0816 <anchor id="goy"/> 0817 <varlistentry 0818 > 0819 <term 0820 >vaiy<indexterm 0821 ><primary 0822 >vaiy (vy)</primary 0823 ></indexterm 0824 ></term> 0825 <listitem 0826 ><para 0827 ><screen 0828 >vaiy Y</screen 0829 ><userinput 0830 >vaiy</userinput 0831 > fai que o sapoconcho vaia a unha posición situada a Y <glossterm linkend="pixels" 0832 >píxeles</glossterm 0833 > do cume do lenzo sen desprazarse en horizontal. <userinput 0834 >vaiy</userinput 0835 > pode abreviarse como <userinput 0836 >vy</userinput 0837 >.</para 0838 ></listitem> 0839 </varlistentry> 0840 </variablelist> 0841 <note 0842 ><para 0843 >Cando se utilizan as ordes <userinput 0844 >vai</userinput 0845 >, <userinput 0846 >vaix</userinput 0847 >, <userinput 0848 >vaiy</userinput 0849 > e <userinput 0850 >vaimedio</userinput 0851 > o sapoconcho non debuxa a liña, con independencia de que o lapis estea erguido ou pousado.</para> 0852 </note> 0853 </sect2> 0854 0855 <sect2 id="locate-the-turtle"> 0856 <title 0857 >Onde está o sapoconcho?</title> 0858 <para 0859 >Hai dúas ordes que din a posición do sapoconcho na pantalla.</para> 0860 0861 <variablelist> 0862 <anchor id="getx"/> 0863 <varlistentry 0864 > 0865 <term 0866 >coordenadaX<indexterm 0867 ><primary 0868 >coordenadax</primary 0869 ></indexterm 0870 ></term> 0871 <listitem 0872 ><para 0873 ><userinput 0874 >coordenadax</userinput 0875 > devolve a cantidade de píxeles que hai desde a esquerda do lenzo ata a posición do sapoconcho.</para 0876 ></listitem> 0877 </varlistentry> 0878 </variablelist> 0879 <variablelist> 0880 <anchor id="gety"/> 0881 <varlistentry 0882 > 0883 <term 0884 >coordenaday<indexterm 0885 ><primary 0886 >coordenaday</primary 0887 ></indexterm 0888 ></term> 0889 <listitem 0890 ><para 0891 ><userinput 0892 >coordenaday</userinput 0893 > devolve a cantidade de píxeles que hai do cume do lenzo ata a posición do sapoconcho.</para 0894 ></listitem> 0895 </varlistentry> 0896 </variablelist> 0897 </sect2> 0898 0899 <sect2 id="pen"> 0900 <title 0901 >O sapoconcho ten un lapis</title> 0902 <para 0903 >O sapoconcho ten un lapis que debuxa unha liña a medida que se move o animal. Hai unhas poucas ordes que controlan este lapis. Nesta sección explicarémolas.</para> 0904 <variablelist> 0905 <anchor id="penup"/> 0906 <varlistentry 0907 > 0908 <term 0909 >subelapis (sl)<indexterm 0910 ><primary 0911 >subelapis (sl)</primary 0912 ></indexterm 0913 ></term> 0914 <listitem 0915 ><para 0916 ><screen 0917 >subelapis</screen 0918 ><userinput 0919 >subelapis</userinput 0920 > separa o lapis do lenzo. Cando o lapis está <quote 0921 >subido</quote 0922 > non se debuxan liñas ao moverse o sapoconcho. Consulta tamén <userinput 0923 >baixalapis</userinput 0924 >. <userinput 0925 >subelapis</userinput 0926 > pode abreviarse como <userinput 0927 >sl</userinput 0928 >.</para 0929 ></listitem> 0930 </varlistentry> 0931 </variablelist> 0932 <variablelist> 0933 <anchor id="pendown"/> 0934 <varlistentry 0935 > 0936 <term 0937 >baixalapis (bl)<indexterm 0938 ><primary 0939 >baixalapis (bl)</primary 0940 ></indexterm 0941 ></term> 0942 <listitem 0943 ><para 0944 ><screen 0945 >baixalapis</screen 0946 ><userinput 0947 >baixalapis</userinput 0948 > pousa o lapis no lenzo. Cando o lapis está <quote 0949 >baixado</quote 0950 > debúxanse liñas cando se move o sapoconcho. Consulta tamén <userinput 0951 >subelapis</userinput 0952 >. <userinput 0953 >baixalapis</userinput 0954 > pode abreviarse como <userinput 0955 >bl</userinput 0956 >.</para 0957 ></listitem> 0958 </varlistentry> 0959 </variablelist> 0960 <variablelist> 0961 <anchor id="setpenwidth"/> 0962 <varlistentry 0963 > 0964 <term 0965 >ancholapis (al)<indexterm 0966 ><primary 0967 >ancholapis (al)</primary 0968 ></indexterm 0969 ></term> 0970 <listitem 0971 ><para 0972 ><screen 0973 >ancholapis X</screen 0974 ><userinput 0975 >ancholapis</userinput 0976 > estabelece o grosor do trazo co valor de X <glossterm linkend="pixels" 0977 >píxeles</glossterm 0978 >. <userinput 0979 >ancholapis</userinput 0980 > pode abreviarse como <userinput 0981 >al</userinput 0982 >.</para 0983 ></listitem> 0984 </varlistentry> 0985 </variablelist> 0986 <variablelist> 0987 <anchor id="setfgcolor"/> 0988 <varlistentry 0989 > 0990 <term 0991 >corlapis (cl)<indexterm 0992 ><primary 0993 >corlapis (cl)</primary 0994 ></indexterm 0995 ></term> 0996 <listitem 0997 ><para 0998 ><screen 0999 >corlapis R,G,B</screen 1000 ><userinput 1001 >corlapis</userinput 1002 > estabelece a cor do trazo. <userinput 1003 >corlapis</userinput 1004 > toma como parámetro unha <glossterm linkend="rgb" 1005 >combinación RGB</glossterm 1006 >. <userinput 1007 >corlapis</userinput 1008 > code abreviarse como <userinput 1009 >cl</userinput 1010 >.</para 1011 ></listitem> 1012 </varlistentry> 1013 </variablelist> 1014 </sect2> 1015 1016 <sect2 id="canvas"> 1017 <title 1018 >Ordes para controlar o lenzo</title> 1019 <para 1020 >Hai varias ordes que controlan o lenzo.</para> 1021 <variablelist> 1022 <anchor id="resizecanvas"/> 1023 <varlistentry> 1024 <term 1025 >tamañolenzo (tlz)<indexterm 1026 ><primary 1027 >tamañolenzo (tlz)</primary 1028 ></indexterm 1029 ></term> 1030 <listitem 1031 ><para 1032 ><screen 1033 >tamañolenzo X,Y</screen 1034 >Mediante a orde <userinput 1035 >tamañolenzo</userinput 1036 > pode axustar o tamaño da área. Toma X e Y como entradas, onde X é a nova anchura do lenzo en <glossterm linkend="pixels" 1037 >píxeles</glossterm 1038 > e Y é a nova altura en <glossterm linkend="pixels" 1039 >píxeles</glossterm 1040 >. <userinput 1041 >tamañolenzo</userinput 1042 > pode abreviarse como <userinput 1043 >tlz</userinput 1044 >.</para 1045 ></listitem> 1046 </varlistentry> 1047 </variablelist> 1048 <variablelist> 1049 <anchor id="setbgcolor"/> 1050 <varlistentry 1051 > 1052 <term 1053 >corlenzo (clz)<indexterm 1054 ><primary 1055 >corlenzo (clz)</primary 1056 ></indexterm 1057 ></term> 1058 <listitem 1059 ><para 1060 ><screen 1061 >corlenzo R,G,B</screen 1062 ><userinput 1063 >corlenzo</userinput 1064 > estabelece a cor do lenzo. <userinput 1065 >corlenzo</userinput 1066 > toma unha <glossterm linkend="rgb" 1067 >combinación RGB</glossterm 1068 > como entrada. <userinput 1069 >corlenzo</userinput 1070 > pode abreviarse como <userinput 1071 >clz</userinput 1072 >.</para 1073 ></listitem> 1074 </varlistentry> 1075 </variablelist> 1076 </sect2> 1077 1078 <sect2 id="clean"> 1079 <title 1080 >Ordes para limpar</title> 1081 <para 1082 >Hai dúas ordes para limpar o lenzo cando o emborrona.</para> 1083 <variablelist> 1084 <anchor id="clear"/> 1085 <varlistentry 1086 > 1087 <term 1088 >borra (br)<indexterm 1089 ><primary 1090 >borra (br)</primary 1091 ></indexterm 1092 ></term> 1093 <listitem 1094 ><para 1095 ><screen 1096 >borra</screen 1097 >Con <userinput 1098 >borra</userinput 1099 > pode limpar todos os debuxos do lenzo. As demais cousas quedan: a posición, dirección e visibilidade do sapoconcho, e a cor e o tamaño do lenzo.</para 1100 ></listitem> 1101 </varlistentry> 1102 </variablelist> 1103 <variablelist> 1104 <anchor id="reset"/> 1105 <varlistentry 1106 > 1107 <term 1108 >reinicia<indexterm 1109 ><primary 1110 >reinicia</primary 1111 ></indexterm 1112 ></term> 1113 <listitem 1114 ><para 1115 ><screen 1116 >reinicia</screen 1117 ><userinput 1118 >reinicia</userinput 1119 > limpa máis a fondo do que o fai a orde <userinput 1120 >borra</userinput 1121 >. Despois de executar unha orde <userinput 1122 >reinicia</userinput 1123 > todo volve ser como cando iniciou &kturtle;. O sapoconcho estará posto no centro da pantalla, a cor do lenzo será branco, debuxarase cun trazo negro e o tamaño do lenzo será de 400 x 400 píxeles.</para 1124 ></listitem> 1125 </varlistentry> 1126 </variablelist> 1127 </sect2> 1128 1129 <sect2 id="sprites"> 1130 <title 1131 >O sapoconcho é un sprite</title> 1132 <para 1133 >Os sprites son pequenas imaxes que se poden mover pola pantalla, como se ve nos xogos de computador. O noso animaliño tamén é un sprite. Para saber máis sobre isto, consulte a entrada <glossterm linkend="sprites" 1134 >sprites</glossterm 1135 > no glosario. </para> 1136 <para 1137 >A continuación atopará un resumo completo de todas as ordes que traballan sobre sprites.</para> 1138 <para 1139 >[A versión actual de &kturtle; aínda non permite utilizar outros sprites que non sexan o sapoconcho. En versións futuras poderá cambialo por un deseño seu]</para> 1140 <variablelist> 1141 <anchor id="spriteshow"/> 1142 <varlistentry 1143 > 1144 <term 1145 >mostrasprite (ms)<indexterm 1146 ><primary 1147 >agochasprite (as)</primary 1148 ></indexterm 1149 ></term> 1150 <listitem 1151 ><para 1152 ><screen 1153 >mostrasprite</screen 1154 ><userinput 1155 >mostrasprite</userinput 1156 > fai visíbel o sapoconcho se antes se agochou. <userinput 1157 >mostrasprite</userinput 1158 > pode abreviarse como <userinput 1159 >ms</userinput 1160 >.</para 1161 ></listitem> 1162 </varlistentry> 1163 </variablelist> 1164 <variablelist> 1165 <anchor id="spritehide"/> 1166 <varlistentry 1167 > 1168 <term 1169 >agochasprite (as)<indexterm 1170 ><primary 1171 >agochasprite (as)</primary 1172 ></indexterm 1173 ></term> 1174 <listitem 1175 ><para 1176 ><screen 1177 >agochasprite</screen 1178 ><userinput 1179 >agochasprite</userinput 1180 > agocha o sapoconcho. Isto pode empregarse se o animal non couber no debuxo. <userinput 1181 >agochasprite</userinput 1182 > pode abreviarse como <userinput 1183 >as</userinput 1184 >.</para 1185 ></listitem> 1186 </varlistentry> 1187 </variablelist> 1188 </sect2> 1189 1190 <sect2 id="writing"> 1191 <title 1192 >Pode escribir o sapoconcho?</title> 1193 <para 1194 >A resposta é: <quote 1195 >pode</quote 1196 >. A tartaruga pode escribir, e escribirá case calquera cousa que lle ordene.</para> 1197 <variablelist> 1198 <anchor id="print"/> 1199 <varlistentry 1200 > 1201 <term 1202 >escribe<indexterm 1203 ><primary 1204 >escribe</primary 1205 ></indexterm 1206 ></term> 1207 <listitem 1208 ><para 1209 ><screen 1210 >escribe X</screen 1211 >A orde <userinput 1212 >escribe</userinput 1213 > ordéalle ao sapoconcho que escriba algo no lenzo. <userinput 1214 >escribe</userinput 1215 > pode tomar textos e números como parámetros. Pode <userinput 1216 >escribe</userinput 1217 >r varios números e cadeas mediante o símbolo <quote 1218 >+</quote 1219 >. Aquí vai un exemplo: <screen 1220 >$ano = 2021 1221 $autor = "Aroa" 1222 escribe $autor + " debuxou unha nora en KTurtle no ano" + $ano + " e gustoulle moito!" 1223 </screen> 1224 </para 1225 ></listitem> 1226 </varlistentry> 1227 </variablelist> 1228 <variablelist> 1229 <anchor id="fontsize"/> 1230 <varlistentry 1231 > 1232 <term 1233 >tamañoletra<indexterm 1234 ><primary 1235 >tamañoletra</primary 1236 ></indexterm 1237 ></term> 1238 <listitem 1239 ><para 1240 ><screen 1241 >tamañoletra X</screen 1242 ><userinput 1243 >tamañoletra</userinput 1244 > modifica o tamaño de letra utilizado ao <userinput 1245 >escribe</userinput 1246 >r. <userinput 1247 >tamañoletra</userinput 1248 > toma un argumento numérico. O tamaño indícase en <glossterm linkend="pixels" 1249 >píxeles</glossterm 1250 >.</para 1251 ></listitem> 1252 </varlistentry> 1253 </variablelist> 1254 </sect2> 1255 1256 <sect2 id="math-commands"> 1257 <title 1258 >Ordes matemáticas</title> 1259 <para 1260 >As seguintes ordes son as máis avanzadas de &kturtle; para matemáticas.</para> 1261 <variablelist> 1262 <anchor id="round"/> 1263 <varlistentry> 1264 <term 1265 >redondea<indexterm 1266 ><primary 1267 >redondea</primary 1268 ></indexterm 1269 ></term> 1270 <listitem 1271 ><para 1272 ><screen 1273 >redondea X</screen 1274 ><userinput 1275 >redondea</userinput 1276 > o número indicado ao enteiro máis próximo. <screen> 1277 escribe redondea 10.8 1278 avanza 20 1279 escribe redondea 10.3 1280 avanza 20 1281 </screen 1282 > Con este código o sapoconcho escribirá os números 11 e 10. </para 1283 ></listitem> 1284 </varlistentry> 1285 </variablelist> 1286 <variablelist> 1287 <anchor id="random"/> 1288 <varlistentry 1289 > 1290 <term 1291 >aleatorio (alea)<indexterm 1292 ><primary 1293 >aleatorio (alea)</primary 1294 ></indexterm 1295 ></term> 1296 <listitem 1297 ><para 1298 ><screen 1299 >aleatorio X,Y</screen 1300 ><userinput 1301 >aleatorio</userinput 1302 > é unha orde que toma unha entrada e saca un resultado. Como entrada precisa de dous números, o primeiro (X) é o resultado mínimo, o segundo (Y) o máximo. A saída é un número escollido ao chou que é como mínimo o menor e como máximo o maior. Aquí vai un exemplo:<screen> 1303 repite 500 { 1304 $x = aleatorio 1,20 1305 avanza $x 1306 xiraesquerda 10 - $x 1307 } 1308 </screen 1309 > Mediante a orde <userinput 1310 >aleatorio</userinput 1311 > pode introducir algo de caos no programa.</para 1312 ></listitem> 1313 </varlistentry> 1314 </variablelist> 1315 <variablelist> 1316 <anchor id="mod"/> 1317 <varlistentry 1318 > 1319 <term 1320 >mod<indexterm 1321 ><primary 1322 >mod</primary 1323 ></indexterm 1324 ></term> 1325 <listitem 1326 ><para 1327 ><screen 1328 >mod X,Y</screen 1329 ><userinput 1330 >mod</userinput 1331 > devolve o resto da división do primeiro número entre o segundo.</para 1332 ></listitem> 1333 </varlistentry> 1334 </variablelist> 1335 <variablelist> 1336 <anchor id="sqrt"/> 1337 <varlistentry 1338 > 1339 <term 1340 >raiz<indexterm 1341 ><primary 1342 >raiz</primary 1343 ></indexterm 1344 ></term> 1345 <listitem 1346 ><para 1347 ><screen 1348 >raiz X</screen 1349 >A orde <userinput 1350 >raiz</userinput 1351 > devolve a raíz cuadrada do argumento.</para 1352 ></listitem> 1353 </varlistentry> 1354 </variablelist> 1355 <!-- 1356 <variablelist> 1357 <anchor id="exp"/> 1358 <varlistentry 1359 > 1360 <term 1361 >exp<indexterm 1362 ><primary 1363 >exp</primary 1364 ></indexterm 1365 ></term> 1366 <listitem 1367 ><para 1368 ><screen 1369 >sqrt X</screen> 1370 </para 1371 ></listitem> 1372 </varlistentry> 1373 </variablelist> 1374 --> 1375 <variablelist> 1376 <anchor id="pi"/> 1377 <varlistentry 1378 > 1379 <term 1380 >pi<indexterm 1381 ><primary 1382 >pi</primary 1383 ></indexterm 1384 ></term> 1385 <listitem 1386 ><para 1387 ><screen 1388 >pi</screen 1389 >Esta orde devolve a constante Pi, <userinput 1390 >3.14159</userinput 1391 >.</para 1392 ></listitem> 1393 </varlistentry> 1394 </variablelist> 1395 <variablelist> 1396 <anchor id="sin"/> 1397 <anchor id="cos"/> 1398 <anchor id="tan"/> 1399 <varlistentry> 1400 <term 1401 >seno<indexterm 1402 ><primary 1403 >seno</primary 1404 ></indexterm 1405 >, coseno<indexterm 1406 ><primary 1407 >coseno</primary 1408 ></indexterm 1409 >, tanxente<indexterm 1410 ><primary 1411 >tanxente</primary 1412 ></indexterm 1413 ></term> 1414 <listitem 1415 ><para> 1416 <screen 1417 >seno X 1418 coseno X 1419 tanxente X 1420 </screen 1421 >Estas tres ordes representan as famosas funcións trigonométricas <userinput 1422 >seno</userinput 1423 >, <userinput 1424 >coseno</userinput 1425 > e <userinput 1426 >tanxente</userinput 1427 >. O argumento destas tres ordes, X, é un <link linkend="number" 1428 >número</link 1429 >.</para 1430 ></listitem> 1431 </varlistentry> 1432 </variablelist> 1433 <variablelist> 1434 <anchor id="arcsin"/> 1435 <anchor id="arccos"/> 1436 <anchor id="arctan"/> 1437 <varlistentry> 1438 <term 1439 >arcoseno<indexterm 1440 ><primary 1441 >arcoseno</primary 1442 ></indexterm 1443 >, arcocoseno<indexterm 1444 ><primary 1445 >arccoseno</primary 1446 ></indexterm 1447 >, arcotanxente<indexterm 1448 ><primary 1449 >arcotanxente</primary 1450 ></indexterm 1451 ></term> 1452 <listitem 1453 ><para> 1454 <screen 1455 >aroceion X 1456 arcocoseno X 1457 arcotanxente X 1458 </screen 1459 >Estas ordes son as funcións inversar de<link linkend="sin" 1460 >seno</link 1461 >, <link linkend="cos" 1462 >coseno</link 1463 > e <link linkend="tan" 1464 >tanxente</link 1465 >. O argumento, X, é un <link linkend="number" 1466 >número</link 1467 >.</para 1468 ></listitem> 1469 </varlistentry> 1470 </variablelist> 1471 </sect2> 1472 1473 <sect2 id="dialogs"> 1474 <title 1475 >Introdución de datos e obtención de resultados mediante diálogos</title> 1476 <para 1477 >Un diálogo é unha pequena xanela emerxente que lle fornece algo de información ou que lle pide algún dato. &kturtle; ten dúas ordes para diálogos, que son: <userinput 1478 >mostra</userinput 1479 > e <userinput 1480 >pregunta</userinput 1481 ></para> 1482 <variablelist> 1483 <anchor id="message"/> 1484 <varlistentry 1485 > 1486 <term 1487 >mostra<indexterm 1488 ><primary 1489 >mostra</primary 1490 ></indexterm 1491 ></term> 1492 <listitem 1493 ><para 1494 ><screen 1495 >mostra X</screen 1496 >A orde <userinput 1497 >mostra</userinput 1498 > toma un <link linkend="string" 1499 >texto</link 1500 > como entrada, e mostra un diálogo que contén o <link linkend="string" 1501 >texto</link 1502 >. <screen 1503 >mostra "Brandán debuxou unha nora en KTurtle no ano 2021 e gustoulle moito!" 1504 </screen> 1505 </para 1506 ></listitem> 1507 </varlistentry> 1508 </variablelist> 1509 <variablelist> 1510 <anchor id="ask"/> 1511 <varlistentry 1512 > 1513 <term 1514 >pregunta<indexterm 1515 ><primary 1516 >pregunta</primary 1517 ></indexterm 1518 ></term> 1519 <listitem 1520 ><para 1521 ><screen 1522 >pregunta X</screen 1523 ><userinput 1524 >pregunta</userinput 1525 > toma un <link linkend="string" 1526 >texto</link 1527 > como entrada. Mostra un diálogo que contén o texto, como fai <link linkend="message" 1528 >mostra</link 1529 >, pero ademais tamén pon un campo de texto no diálogo. Mediante este campo o usuario pode introducir un <link linkend="number" 1530 >número</link 1531 > ou un <link linkend="string" 1532 >texto</link 1533 >, que pode gardar nunha <link linkend="assignment-of-variables" 1534 >variábel</link 1535 > ou pasar como argumento a unha <link linkend="commands" 1536 >orde</link 1537 >. Por exemplo <screen> 1538 $idade = pregunta "Cantos anos tes?" 1539 $resultado = 2003 - $idade 1540 escribe "En 2003 tiñas " + $resultado + " anos."</screen> 1541 Cando un usuario cancela o diálogo de pergunta, ou non insere nada, a <link linkend="assignment-of-variables" 1542 >variábel</link 1543 > estará baleira.</para 1544 ></listitem> 1545 </varlistentry> 1546 </variablelist> 1547 </sect2> 1548 1549 </sect1> 1550 1551 1552 1553 <sect1 id="assignment-of-variables"> 1554 <title 1555 >Asignación de variábeis</title> 1556 <para 1557 >Primeiro vexamos o que son as variábeis, logo como asignarlles valores. </para> 1558 1559 <para 1560 >As variábeis son palabras que comezan cun <quote 1561 >$</quote 1562 >. No <link linkend="the-editor" 1563 >editor</link 1564 > <glossterm 1565 >reálzanse</glossterm 1566 > en morado.</para> 1567 1568 <para 1569 >As variábeis poden contar calquera <link linkend="number" 1570 >número</link 1571 >, <link linkend="string" 1572 >texto</link 1573 > ou <link linkend="boolean-value" 1574 >valor lóxico (certo/falso</link 1575 >. Dáselles contido mediante a asignación, <userinput 1576 >=</userinput 1577 >. Terá ese valor até que o programa remate a execución ou até que se lle asigne outro valor.</para> 1578 1579 <para 1580 >Unha vez asignadas, pode usar as variábeis no canto do seu valor. Por exemplo no seguinte retallo de &turtlescript; <screen> 1581 $x = 10 1582 $x = $x / 3 1583 escribe $x 1584 </screen 1585 > Primeiro a variábel <userinput 1586 >$x</userinput 1587 > convértese no <userinput 1588 >10</userinput 1589 >. Logo <userinput 1590 >$x</userinput 1591 > convértese no valore resultante de dividirse entre <userinput 1592 >3</userinput 1593 > — o que significa que se reasigna a <userinput 1594 >$x</userinput 1595 > o resultado de <userinput 1596 >10/3</userinput 1597 >. Finalmente, escríbese <userinput 1598 >$x</userinput 1599 >. Nas liñas segunda e terceira podes ver que <userinput 1600 >$x</userinput 1601 > é usada como se ela fose o que contén.</para> 1602 1603 <para 1604 >Para poder usar unha variábel ten que asignarse. Exemplo: <screen> 1605 escribe $n 1606 </screen 1607 > Non escribirá nada e pola contra mostrará unha mensaxe de erro.</para> 1608 1609 <para 1610 >Vexamos o seguinte retallo de &turtlescript;: <screen> 1611 $a = 2004 1612 $b = 25 1613 1614 # a seguinte orde escribe "2029" 1615 escribe $a + $b 1616 retrocede 30 1617 # a seguinte orde escribe "2004 máis 25 é igual a 2029" 1618 escribe $a + " máis " + $b " é igual a " ($a + $b) 1619 </screen 1620 > Nas primeiras dúas liñas dáselles os valores 2004 e 25 ás variábeis <userinput 1621 >$a</userinput 1622 > e <userinput 1623 >$b</userinput 1624 >. Despois execútanse dúas ordes <userinput 1625 >escribe</userinput 1626 > cunha <userinput 1627 >retrocede 30</userinput 1628 > no medio. Os comentarios antes de cada orde <userinput 1629 >escribe</userinput 1630 > explícan o que fan. A orde <userinput 1631 >retrocede</userinput 1632 > foi posta aí para garantir que cada cousa se escriba nunha liña nova. Neste exemplo tamén vemos como as variábeis poden empregarse como se fosen o que conteñen, pode usalas con calquera <link linkend="operators" 1633 >operación</link 1634 > ou usalas como parámetros das <link linkend="commands" 1635 >ordes</link 1636 >.</para> 1637 1638 <para 1639 >Outro exemplo máis: <screen> 1640 $nome = pregunta "Como te chamas?" 1641 escribe "Olá " + $nome + "! Verás que sinxelo é aprender a programar..." 1642 </screen 1643 > Abondo claro. e novo vese o uso da variábel <userinput 1644 >$nome</userinput 1645 > tratada como un texto.</para> 1646 1647 <para 1648 >O <link linkend="the-inspector" 1649 >inspector</link 1650 > é de moita axuda cando se usan variábeis. Móstra o contido de todas as variábeis que se están a usar.</para> 1651 </sect1> 1652 1653 1654 1655 <sect1 id="controlling-execution"> 1656 <title 1657 >Control da execución</title> 1658 <para 1659 >Os controladores da execución permítenlle, como indica o nome, controlar o fluxo de execución.</para> 1660 <para 1661 >As ordes de control da execución son <glossterm 1662 >realzadas</glossterm 1663 > en letra verde grosa. As chaves utilízanse caseque sempre xunto cos controladores de execución e son <glossterm 1664 >realzadas</glossterm 1665 > en letra negra grosa.</para> 1666 1667 <sect2 id="wait"> 1668 <title 1669 >Facer que o sapoconcho agarde</title> 1670 <para 1671 >Se programou algo en &kturtle; xa se decataría de que o sapoconcho pode ser moi moi moi rápido cando debuxa. Esta orde fai que agarde durante un tempo.</para> 1672 <variablelist> 1673 <varlistentry> 1674 <term 1675 >agarda<indexterm 1676 ><primary 1677 >agarda</primary 1678 ></indexterm 1679 ></term> 1680 <listitem 1681 ><para 1682 ><screen 1683 >agarda X</screen 1684 ><userinput 1685 >agarda</userinput 1686 > fai que o sapoconcho estea quedo durante X segundos. <screen> 1687 repite 36 { 1688 avanza 5 1689 xiradereita 10 1690 agarda 0.5 1691 } 1692 </screen 1693 > Este código debuxa un círculo, pero o animal agardará medio segundo tras cada paso. Isto dá a impresión dun sapoconcho lento.</para 1694 ></listitem> 1695 </varlistentry> 1696 </variablelist> 1697 </sect2> 1698 1699 <sect2 id="if"> 1700 <title 1701 >Executar «se»</title> 1702 <variablelist> 1703 <varlistentry> 1704 <term 1705 >se<indexterm 1706 ><primary 1707 >se</primary 1708 ></indexterm 1709 ></term> 1710 <listitem 1711 ><para 1712 ><screen 1713 >se <link linkend="boolean-value" 1714 >valor lóxico</link 1715 > { … }</screen 1716 >O código que vai entre as chaves só será executado <userinput 1717 >se</userinput 1718 > o <link linkend="boolean-value" 1719 >predicado</link 1720 > é <quote 1721 >certo</quote 1722 >. <screen> 1723 $x = 6 1724 se $x > 5 { 1725 escribe "x é maior que cinco!" 1726 } 1727 </screen 1728 > Na primeira liña <userinput 1729 >$x</userinput 1730 > vale 6. Na segunda liña úsase unha <link linkend="comparing-operators" 1731 >operación de comparación</link 1732 > para avaliar <userinput 1733 >x > 5</userinput 1734 >. Xa que a resposta é <quote 1735 >certo</quote 1736 > o controlador de execución <userinput 1737 >se</userinput 1738 > permitirá que se execute o código entre as chaves.</para 1739 ></listitem> 1740 </varlistentry> 1741 </variablelist> 1742 </sect2> 1743 1744 <sect2 id="else"> 1745 <title 1746 >Se non, ou en caso contrario: "senon"</title> 1747 <variablelist> 1748 <varlistentry> 1749 <term 1750 >senon<indexterm 1751 ><primary 1752 >senon</primary 1753 ></indexterm 1754 ></term> 1755 <listitem 1756 ><para 1757 ><screen 1758 >se <link linkend="boolean-value" 1759 >boolean</link 1760 > { ... } senon { ... }</screen 1761 ><userinput 1762 >senon</userinput 1763 > pode empregarse xunto ccontrolador de execución <link linkend="if" 1764 ><userinput 1765 >se</userinput 1766 ></link 1767 >. O código entre as chaves que seguen a <userinput 1768 >senon</userinput 1769 > só se executará se o <link linkend="boolean-value" 1770 >predicado</link 1771 > é <quote 1772 >falso</quote 1773 >. <screen> 1774 reinicia 1775 $x = 4 1776 se $x > 5 { 1777 escribe "x é maior que cinco!" 1778 } 1779 senon 1780 { 1781 escribe "x é menor que seis!" 1782 } 1783 </screen 1784 > A <link linkend="comparing-operators" 1785 >comparación</link 1786 > avalia a expresión <userinput 1787 >$x > 5</userinput 1788 >. Xa que 4 no o é a resposta é <quote 1789 >falso</quote 1790 >. Isto implica que se executará o código entre as chaves que seguen a <userinput 1791 >senon</userinput 1792 >.</para 1793 ></listitem> 1794 </varlistentry> 1795 </variablelist> 1796 </sect2> 1797 1798 <sect2 id="while"> 1799 <title 1800 >O ciclo «mentres»</title> 1801 <variablelist> 1802 <varlistentry> 1803 <term 1804 >mentres<indexterm 1805 ><primary 1806 >mentres</primary 1807 ></indexterm 1808 ></term> 1809 <listitem 1810 ><para 1811 ><screen 1812 >mentres <link linkend="boolean-value" 1813 >valor lóxico</link 1814 > { … }</screen 1815 >O controlador de execución <userinput 1816 >mentres</userinput 1817 > seméllase moito a <link linkend="if" 1818 ><userinput 1819 >se</userinput 1820 ></link 1821 >. A diferenza é que <userinput 1822 >mentres</userinput 1823 > repite o código entre as chaves ate que o <link linkend="boolean-value" 1824 >valor lóxico</link 1825 > sexa <quote 1826 >falso</quote 1827 >. <screen> 1828 $x = 1 1829 mentres $x < 5 { 1830 avanza 10 1831 agarda 1 1832 $x = $x + 1 1833 } 1834 </screen 1835 > Na primeira liña <userinput 1836 >$x</userinput 1837 > toma o valor 1. Na segunda liña avalíase <userinput 1838 >$x < 5</userinput 1839 >. Dado que a resposta é <quote 1840 >certo</quote 1841 > o controlador de execución <userinput 1842 >mentres</userinput 1843 > comeza a executar o código entre as chaves ata que <userinput 1844 >$x < 5</userinput 1845 > sexa <quote 1846 >falso</quote 1847 >. Neste caso executarase 4 veces, porque cada vez que se executa a quinta liña <userinput 1848 >$x</userinput 1849 > increméntase.</para 1850 ></listitem> 1851 </varlistentry> 1852 </variablelist> 1853 </sect2> 1854 1855 <sect2 id="repeat"> 1856 <title 1857 >O ciclo «repite»</title> 1858 <variablelist> 1859 <varlistentry> 1860 <term 1861 >repite<indexterm 1862 ><primary 1863 >repite</primary 1864 ></indexterm 1865 ></term> 1866 <listitem 1867 ><para 1868 ><screen 1869 >repite <link linkend="number" 1870 >número</link 1871 > { … }</screen 1872 >O controlador de execucion <userinput 1873 >repite</userinput 1874 > seméllase moito a <link linkend="while" 1875 ><userinput 1876 >mentres</userinput 1877 ></link 1878 >. A diferenza é que <userinput 1879 >repite</userinput 1880 > executa o código entre as chaves o número dado de veces.</para 1881 ></listitem> 1882 </varlistentry> 1883 </variablelist> 1884 </sect2> 1885 1886 <sect2 id="for"> 1887 <title 1888 >O ciclo «desde», un ciclo cun contador</title> 1889 <variablelist> 1890 <varlistentry> 1891 <term 1892 >desde<indexterm 1893 ><primary 1894 >desde</primary 1895 ></indexterm 1896 ><indexterm 1897 ><primary 1898 >ate</primary 1899 ></indexterm 1900 ><indexterm 1901 ><primary 1902 >pasando</primary 1903 ></indexterm 1904 ></term> 1905 <listitem 1906 ><para 1907 ><screen 1908 >desde <link linkend="assignment-of-variables" 1909 >variábel</link 1910 > = <link linkend="number" 1911 >número</link 1912 > ate <link linkend="number" 1913 >número</link 1914 > { ... }</screen 1915 >O bucle <userinput 1916 >desde</userinput 1917 > é un <quote 1918 >bucle con contador</quote 1919 >, &ie;, mantén por si o reconto. O primeiro número é o valor da variábel na primeira volta. En cada ciclo a variábel increméntase até que se acade o segundo número.<screen> 1920 desde $x = 1 ate 10 { 1921 escribe $x * 7 1922 avanza 15 1923 } 1924 </screen 1925 > Cada vez que se executa o código entre as chaves o <userinput 1926 >$x</userinput 1927 > aumenta en 1, ate que <userinput 1928 >$x</userinput 1929 > acada o valor de 10. O código nas chaves escribe o valor do <userinput 1930 >$x</userinput 1931 > multiplicado por 7. Cando este programa remate a execución verá a táboa de multiplicar do 7 no lenzo. </para> 1932 <para 1933 >O paso predeterminado no bucle é 1, pero pode utilizar outro valor mediante <screen 1934 >desde <link linkend="assignment-of-variables" 1935 >variábel</link 1936 > = <link linkend="number" 1937 >número</link 1938 > ate <link linkend="number" 1939 >número</link 1940 > pasando <link linkend="number" 1941 >número</link 1942 > { ... }</screen 1943 ></para 1944 ></listitem> 1945 </varlistentry> 1946 </variablelist> 1947 </sect2> 1948 1949 <sect2 id="break"> 1950 <title 1951 >Saír dun bucle</title> 1952 <variablelist> 1953 <varlistentry> 1954 <term 1955 >sair<indexterm 1956 ><primary 1957 >sair</primary 1958 ></indexterm 1959 ></term> 1960 <listitem 1961 ><para 1962 ><screen 1963 >sair</screen 1964 >Termina de inmediato esta volta ao bucle e transfere o control á instrucción que vai despois del.</para 1965 ></listitem> 1966 </varlistentry> 1967 </variablelist> 1968 </sect2> 1969 1970 <sect2 id="exit"> 1971 <title 1972 >Detén a execución do programa</title> 1973 <variablelist> 1974 <varlistentry> 1975 <term 1976 >fin<indexterm 1977 ><primary 1978 >fin</primary 1979 ></indexterm 1980 ></term> 1981 <listitem 1982 ><para 1983 ><screen 1984 >fin</screen 1985 >Remata a execución do programa.</para 1986 ></listitem> 1987 </varlistentry> 1988 </variablelist> 1989 </sect2> 1990 1991 <sect2 id="assert"> 1992 <title 1993 >Comprobar asercións durante a execución</title> 1994 <variablelist> 1995 <varlistentry> 1996 <term 1997 >aserto<indexterm 1998 ><primary 1999 >aserto</primary 2000 ></indexterm 2001 ></term> 2002 <listitem 2003 ><para 2004 ><screen 2005 >aserto <link linkend="boolean-value" 2006 >predicado</link 2007 ></screen 2008 >Pode usarse para razonar acerca do programa ou comprobar que as entradas sexan correctas. <screen 2009 >$en = pregunta "En que ano naciches?" 2010 # o ano debe ser positivo 2011 aserto $en 2012 > 0 2013 </screen 2014 ></para 2015 ></listitem> 2016 </varlistentry> 2017 </variablelist> 2018 </sect2> 2019 </sect1> 2020 2021 2022 <sect1 id="learn"> 2023 2024 <title 2025 >Cree as súas propios ordes con <quote 2026 >define</quote 2027 ></title> 2028 <para 2029 ><userinput 2030 >define</userinput 2031 ><indexterm 2032 ><primary 2033 >define</primary 2034 > </indexterm 2035 > é unha orde moi especial, porque se utiliza para crear novas ordes. A orde que cree pode tomar <glossterm linkend="input-output" 2036 >entradas</glossterm 2037 > e devolver <glossterm linkend="input-output" 2038 >resultados</glossterm 2039 >. Vexamos como se crea unha orde nova: <screen> 2040 define faiCirculo $x { 2041 repite 36 { 2042 avanza $x 2043 xiraesquerda 10 2044 } 2045 } 2046 </screen 2047 > O nova orde chámase <userinput 2048 >faiCirculo</userinput 2049 >. <userinput 2050 >faiCirculo</userinput 2051 > toma unha <glossterm linkend="input-output" 2052 >entrada</glossterm 2053 >, un número que indica o tamaño do círculo. <userinput 2054 >faiCirculo</userinput 2055 > non devolve nengún <glossterm linkend="input-output" 2056 >resultado</glossterm 2057 >. A orde <userinput 2058 >faiCirculo</userinput 2059 > pode ser utilizado como unha orde normal no resto do código. Vexa este exemplo: <screen 2060 >define faiCirculo $X { 2061 repite 36 { 2062 avanza $X 2063 xiraesquerda 10 2064 } 2065 } 2066 vai 200,200 2067 faiCirculo 20 2068 2069 vai 300,300 2070 faiCirculo 40 2071 </screen> 2072 </para> 2073 <para 2074 >No seguinte exemplo, créase unha orde que <indexterm 2075 ><primary 2076 >devolve</primary 2077 ></indexterm 2078 > un valor. <screen> 2079 define factorial $x { 2080 $r = 1 2081 deste $i = 1 ate $x { 2082 $r = $r * $i 2083 } 2084 devolve $r 2085 } 2086 2087 escribe factorial 5 2088 </screen 2089 > Neste exemplo críase unha orde nova chamada <userinput 2090 >factorial</userinput 2091 >. Se entrada desta orde é<userinput 2092 >5</userinput 2093 > a saída será <userinput 2094 >5*4*3*2*1</userinput 2095 >. Ao usar <userinput 2096 >devolve</userinput 2097 > especifícase o valor <glossterm linkend="input-output" 2098 >devolto</glossterm 2099 > e a execución continúase.</para> 2100 <para 2101 >As ordes poden ter máis dun <glossterm linkend="input-output" 2102 >parámetro</glossterm 2103 >. No seguinte exemplo, créase unha orde que debuxa un rectángulo. <screen> 2104 define debuxaRectangulo $X, $Y { 2105 avanza $Y 2106 xiradereita 90 2107 avanza $X 2108 xiradereita 90 2109 avanza $Y 2110 xiradereita 90 2111 avanza $X 2112 xiradereita 90 2113 } 2114 </screen 2115 > Agora pode ordenar <userinput 2116 >debuxaRectangulo 50,100</userinput 2117 > e o sapoconcho debuxará no lenzo un rectángulo. </para> 2118 2119 </sect1> 2120 2121 </chapter>