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

0001 <chapter id="reference">
0002 <title
0003 >Referência de programação do &turtlescript;</title>
0004 <para
0005 >Esta é a referência para o &turtlescript; do &kturtle;. Na primeira seção deste capítulo dê uma olhada em alguns aspectos da <link linkend="grammar"
0006 >gramática</link
0007 > dos programas em &turtlescript;. A segunda seção lida exclusivamente com os <link linkend="mathematical-operators"
0008 >operadores matemáticos</link
0009 >, os <link linkend="boolean-operators"
0010 >operadores booleanos (verdadeiro/falso)</link
0011 > e os <link linkend="comparing-operators"
0012 >operadores de comparação</link
0013 >. A terceira seção é uma lista enorme com todos os <link linkend="commands"
0014 >comandos</link
0015 >, explicando-os um-a-um. A quarta seção explica como <link linkend="assignment-of-variables"
0016 >atribuir</link
0017 > valores às <link linkend="assignment-of-variables"
0018 >variáveis</link
0019 >. Finalmente, é explicado como organizar a execução dos comandos com as <link linkend="controlling-execution"
0020 >instruções de controle da execução</link
0021 > na quinta seção e como criar os seus próprios comandos com o <link linkend="learn"
0022 >aprender</link
0023 >, na última seção.</para>
0024 
0025 <sect1 id="grammar">
0026 <title
0027 >A Gramática do &turtlescript;</title>
0028 <para
0029 >Como em qualquer linguagem, o &turtlescript; possui diferentes tipos de palavras e símbolos. No Português, é feita a distinção entre os verbos (como 'andar' ou 'cantar') e os substantivos (como 'irmã' ou 'casa'), sendo usados para diferentes fins. O &turtlescript; é uma linguagem de programação, sendo usada para indicar ao &kturtle; o que fazer.</para>
0030 <para
0031 >Nesta seção, alguns dos diferentes tipos de palavras e símbolos do &turtlescript; são explicados de forma breve. Serão explicados os <link linkend="comment"
0032 >comentários</link
0033 >, os <link linkend="command"
0034 >comandos</link
0035 > e os três diferentes tipos de literais: <link linkend="number"
0036 >números</link
0037 >, <link linkend="string"
0038 >cadeias de caracteres</link
0039 > e os <link linkend="boolean-value"
0040 >valores booleanos (verdadeiro/falso)</link
0041 >.</para>
0042 
0043 
0044 <sect2 id="comment">
0045 <title
0046 >Comentários</title>
0047 <para
0048 >Um programa contém instruções que são executadas quando o programa é executado e outros itens, chamados de comentários. Os comentários não são executados; o &kturtle; simplesmente ignora-os ao executar o seu programa. Os comentários estão lá para que os outros programadores possam compreender melhor o seu programa. Tudo o que estiver após um símbolo <userinput
0049 >#</userinput
0050 > é considerado um comentário no &turtlescript;. Por exemplo, este pequeno programa não faz nada: <screen>
0051 # este pequeno programa não faz nada, é apenas um comentário!
0052 </screen
0053 > É um pouco inútil, mas explica bem o conceito.</para>
0054 <para
0055 >Os comentários tornam-se bastante úteis quando o programa se torna um pouco mais complexo. Ele poderá ajudar a fornecer alguns conselhos aos outros programadores. No programa a seguir, irá ver os comentários a serem usados juntamente com o comando <link linkend="print"
0056 >imprimir</link
0057 >. <screen>
0058 # este programa foi feito pelo Cies Breijs.
0059 mostre "este texto será impresso na área de desenho"
0060 # a linha anterior não é um comentário, mas a seguinte é:
0061 # mostre "este texto não será impresso!"
0062 </screen
0063 > A primeira linha descreve o programa. A segunda é executada pelo &kturtle; e imprime a mensagem <userinput
0064 >este texto será impresso na área de desenho</userinput
0065 > na área de desenho propriamente dita. A terceira linha é um comentário. A quarta linha é um comentário que contém um pedaço de &turtlescript;, se for retirado o símbolo <userinput
0066 >#</userinput
0067 > da quarta linha, a instrução 'imprimir' será executada pelo &kturtle;. Os programadores dizem: a instrução da quarta linha está 'comentada'.</para>
0068 <para
0069 >As linhas comentadas ficam <glossterm
0070 >realçadas</glossterm
0071 > em cinza claro no <link linkend="the-editor"
0072 >editor</link
0073 >.</para>
0074 </sect2>
0075 
0076 <sect2 id="command">
0077 <title
0078 >Comandos</title>
0079 <para
0080 >Ao usar os comandos, você diz à tartaruga ou ao &kturtle; para fazerem algo. Alguns comandos precisam de dados de entrada, enquanto outros geram resultados.<screen>
0081 # o 'parafrente' é um comando que necessita de dados de entrada, neste caso do número 100:
0082 parafrente 100
0083 </screen
0084 > A primeira linha é um <link linkend="comment"
0085 >comentário</link
0086 >. A segunda linha contém o comando <userinput
0087 >avancar</userinput
0088 > e o <link linkend="number"
0089 >número</link
0090 > <userinput
0091 >100</userinput
0092 >. O número não faz parte do comando, mas é considerada uma 'entrada' para o comando.</para>
0093 <para
0094 >Alguns comandos como &eg; <userinput
0095 >vápara</userinput
0096 > precisam de mais de um valor de entrada. Valores múltiplos devem ser separados usando o caracter <userinput
0097 >,</userinput
0098 > (vírgula).</para>
0099 <para
0100 >Para uma ideia geral de todos os comandos que o &kturtle; suporta, veja <link linkend="commands"
0101 >aqui</link
0102 >. Os comandos incorporados são <glossterm
0103 >realçados</glossterm
0104 > em azul-escuro</para>
0105 </sect2>
0106 
0107 <sect2 id="number">
0108 <title
0109 >Números</title>
0110 <para
0111 >Muito provavelmente você já conhece alguma coisa sobre os números. A forma como eles são usados no &kturtle; não é muito diferente do idioma falado ou da matemática. </para>
0112 <para
0113 >Temos então os números conhecidos por 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. Finalmente, os números decimais ou fracionários, como 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 >. O caractere <userinput
0142 >.</userinput
0143 > (ponto) é usado como separador decimal. </para>
0144 <para
0145 >Os números poderão ser usados nos <link linkend="mathematical-operators"
0146 >operadores matemáticos</link
0147 > e nos <link linkend="comparing-operators"
0148 >operadores de comparação</link
0149 >. Também poderão ser guardados em <link linkend="assignment-of-variables"
0150 >variáveis</link
0151 >. Os números são <glossterm
0152 >realçados</glossterm
0153 > em vermelho escuro.</para>
0154 </sect2>
0155 
0156 <!-- constants like pi? -->
0157 
0158 <sect2 id="string">
0159 <title
0160 >Cadeias de caracteres</title>
0161 <para
0162 >Primeiro um exemplo: <screen>
0163 mostre "Olá, sou uma cadeia de caracteres."
0164 </screen
0165 > Neste exemplo, o <userinput
0166 >mostre</userinput
0167 > é um comando, enquanto o <userinput
0168 >"Olá, sou uma cadeia de caracteres."</userinput
0169 > é, de fato, uma cadeia de caracteres. Elas começam e terminam com o símbolo <userinput
0170 >"</userinput
0171 >; através destes símbolos, o &kturtle; sabe que é uma cadeia de caracteres.</para>
0172 <para
0173 >As cadeias de caracteres poderão ser colocadas em <link linkend="assignment-of-variables"
0174 >variáveis</link
0175 >, como acontece com os <link linkend="number"
0176 >números</link
0177 >. Contudo, ao contrário dos números, as cadeias de caracteres não podem ser usadas nos <link linkend="mathematical-operators"
0178 >operadores matemáticos</link
0179 > ou nos <link linkend="comparing-operators"
0180 >operadores de comparação</link
0181 >. As cadeias de caracteres são <glossterm
0182 >realçadas</glossterm
0183 > em vermelho.</para>
0184 </sect2>
0185 
0186 <sect2 id="boolean-value">
0187 <title
0188 >Valores booleanos (verdadeiro/falso)</title>
0189 <para
0190 >Existem apenas dois valores booleanos: <userinput
0191 >verdadeiro</userinput
0192 ><indexterm
0193 ><primary
0194 >verdadeiro</primary
0195 ></indexterm
0196 > e <userinput
0197 >falso</userinput
0198 ><indexterm
0199 ><primary
0200 >falso</primary
0201 ></indexterm
0202 >. Algumas vezes também são chamados de: ligado e desligado, um e zero. Contudo, no &turtlescript; são sempre chamados de <userinput
0203 >verdadeiro</userinput
0204 > e <userinput
0205 >falso</userinput
0206 >. Dê uma olhada neste trecho de &turtlescript;: <screen>
0207 $a = verdadeiro
0208 </screen
0209 > Se olhar para o <link linkend="the-inspector"
0210 >inspetor</link
0211 >, poderá ver que a <link linkend="assignment-of-variables"
0212 >variável</link
0213 > <userinput
0214 >$a</userinput
0215 > está igual a <userinput
0216 >verdadeiro</userinput
0217 >, tendo um tipo booleano.</para>
0218 <para
0219 >Normalmente, os valores booleanos são o resultado de um <link linkend="comparing-operators"
0220 >operador de comparação</link
0221 >, como acontece no seguinte trecho de &turtlescript;: <screen>
0222 $resposta = 10 &gt; 3
0223 </screen
0224 > A <link linkend="assignment-of-variables"
0225 >variável</link
0226 > <userinput
0227 >$resposta</userinput
0228 > é configurada como <userinput
0229 >verdadeiro</userinput
0230 >, uma vez que <userinput
0231 >10</userinput
0232 > é maior que <userinput
0233 >3</userinput
0234 >.</para>
0235 <para
0236 >Os valores booleanos, <userinput
0237 >true</userinput
0238 > (verdadeiro) e <userinput
0239 >false</userinput
0240 > (falso), estão <glossterm
0241 >realçados</glossterm
0242 > a vermelho escuro.</para>
0243 </sect2>
0244 
0245 </sect1>
0246 
0247 
0248 
0249 <sect1 id="operators">
0250 <title
0251 >Operadores matemáticos, booleanos e de comparação</title>
0252 <para
0253 >O título deste seção poderá soar muito complicado, mas não é tão difícil de compreender como parece.</para>
0254 
0255 <sect2 id="mathematical-operators">
0256 <title
0257 >Operadores matemáticos</title>
0258 <para
0259 >Estes são os símbolos matemáticos básicos conhecidos: a adição (<userinput
0260 >+</userinput
0261 >), a subtração (<userinput
0262 >-</userinput
0263 >), a multiplicação (<userinput
0264 >*</userinput
0265 >), a divisão (<userinput
0266 >/</userinput
0267 >) e a potenciação (<userinput
0268 >^</userinput
0269 >).</para>
0270 
0271 <para
0272 >Aqui está um pequeno exemplo dos operadores matemáticos que poderá usar no &turtlescript;: <screen>
0273 $somar      = 1 + 1
0274 $subtrair = 20 - 5
0275 $multiplicar = 15 * 2
0276 $dividir   = 30 / 30
0277 $elevar    = 2 ^ 2
0278 </screen
0279 > Os valores que resultam das operações matemáticas serão <link linkend="assignment-of-variables"
0280 >atribuídos</link
0281 > às diversas <link linkend="assignment-of-variables"
0282 >variáveis</link
0283 >. Se utilizar o <link linkend="the-inspector"
0284 >inspetor</link
0285 >, poderá ver os valores.</para>
0286 <para
0287 >Se você somente queria fazer um cálculo simples, você poderá fazer algo semelhante a isto: <screen
0288 >mostre 2010-12
0289 </screen
0290 ></para>
0291 <para
0292 >Agora, um exemplo com parênteses: <screen>
0293 mostre ( ( 20 - 5 ) * 2 / 30 ) + 1
0294 </screen
0295 > O que estiver entre parênteses será calculado em primeiro lugar. Neste exemplo, o 20-5 será calculado, depois será multiplicado por 2, dividido por 30 e depois é adicionado 1 (o que dá 2). Parênteses podem ser usados em outros casos.</para>
0296 <para
0297 >O &kturtle; também possui mais funcionalidades sob a forma de comandos. Dê uma olhada nos seguintes comandos, mas tenha em mente o que diz respeito a operações avançadas: <link linkend="round"
0298 >arredonda</link
0299 >, <link linkend="random"
0300 >aleatório</link
0301 >, <link linkend="sqrt"
0302 >raizquadrada</link
0303 >, <link linkend="pi"
0304 >pi</link
0305 >, <link linkend="sin"
0306 >seno</link
0307 >, <link linkend="cos"
0308 >cosseno</link
0309 >, <link linkend="tan"
0310 >tangente</link
0311 >, <link linkend="arcsin"
0312 >arcoseno</link
0313 >, <link linkend="arccos"
0314 >arcocosseno</link
0315 >, <link linkend="arctan"
0316 >arcotangente</link
0317 >.</para>
0318 </sect2>
0319 
0320 <sect2 id="boolean-operators">
0321 <title
0322 >Operadores booleanos (verdadeiro/falso)</title>
0323 <para
0324 >Enquanto os <link linkend="mathematical-operators"
0325 >operadores matemáticos</link
0326 > são usados principalmente para os <link linkend="number"
0327 >números</link
0328 >, os operadores booleanos são para os <link linkend="boolean-value"
0329 >valores booleanos</link
0330 > (<userinput
0331 >verdadeiro</userinput
0332 > e <userinput
0333 >falso</userinput
0334 >). Existem apenas três operadores booleanos e são chamados de: <userinput
0335 >e</userinput
0336 ><indexterm
0337 ><primary
0338 >e</primary
0339 ></indexterm
0340 >, <userinput
0341 >ou</userinput
0342 ><indexterm
0343 ><primary
0344 >ou</primary
0345 ></indexterm
0346 >, e <userinput
0347 >não</userinput
0348 ><indexterm
0349 ><primary
0350 >não</primary
0351 ></indexterm
0352 >. O seguinte exemplo de &turtlescript; mostra como usá-los: <screen>
0353 $e_1_1 = verdadeiro e verdadeiro    # -> verdadeiro
0354 $e_1_0 = verdadeiro e falso   # -> falso
0355 $e_0_1 = falso e verdadeiro   # -> falso
0356 $e_0_0 = falso e falso  # -> falso
0357 
0358 $ou_1_1 = verdadeiro ou verdadeiro    # -> verdadeiro
0359 $ou_1_0 = verdadeiro ou falso   # -> verdadeiro
0360 $ou_0_1 = falso ou verdadeiro   # -> verdadeiro
0361 $ou_0_0 = falso ou falso  # -> falso
0362 
0363 $not_1 = nao verdadeiro   # -> falso
0364 $not_0 = nao falso  # -> verdadeiro
0365 </screen
0366 > Se usar o <link linkend="the-inspector"
0367 >inspetor</link
0368 >, poderá ver os valores; contudo, fornecemos estes resultados como pequenos comentários no fim das linhas. O <userinput
0369 >e</userinput
0370 > é avaliado como <userinput
0371 >verdadeiro</userinput
0372 > apenas se ambos os lados forem <userinput
0373 >verdadeiro</userinput
0374 >. O <userinput
0375 >ou</userinput
0376 > é avaliado como <userinput
0377 >verdadeiro</userinput
0378 > se qualquer um dos lados for <userinput
0379 >verdadeiro</userinput
0380 >. Finalmente, o <userinput
0381 >nao</userinput
0382 > transforma um <userinput
0383 >verdadeiro</userinput
0384 > num <userinput
0385 >falso</userinput
0386 > e um <userinput
0387 >falso</userinput
0388 > num <userinput
0389 >verdadeiro</userinput
0390 >.</para>
0391 <para
0392 >Os operadores booleanos são <glossterm
0393 >realçados</glossterm
0394 > em rosa.</para>
0395 
0396 <sect3 id="boolean-operators-advanced-examples">
0397 <title
0398 >Alguns exemplos mais avançados</title>
0399 <para
0400 >Veja o exemplo a seguir com o <userinput
0401 >e</userinput
0402 >: <screen>
0403 $a = 1
0404 $b = 5
0405 se (($a &lt; 10) e ($b == 5)) e ($a &lt; $b) {
0406   mostre "olá"
0407 }
0408 </screen
0409 > Neste trecho de &turtlescript;, o resultado dos três <link linkend="comparing-operators"
0410 >operadores de comparação</link
0411 > é reunido com os operadores <userinput
0412 >e</userinput
0413 >. Isto significa que todos os três têm de ser avaliados como "verdadeiro" para imprimir o "olá".</para>
0414 
0415 <para
0416 >Um exemplo com o <userinput
0417 >ou</userinput
0418 >: <screen>
0419 $n = 1
0420 se ($n &lt; 10) ou ($n == 2) {
0421   mostre "olá"
0422 }
0423 </screen
0424 > Neste trecho de &turtlescript;, o lado esquerdo do <userinput
0425 >ou</userinput
0426 > é avaliado como 'verdadeiro', enquanto o direito é avaliado como 'falso'. Uma vez que um dos dois lados do operador <userinput
0427 >ou</userinput
0428 > é 'verdadeiro', o operador <userinput
0429 >ou</userinput
0430 > é avaliado como 'verdadeiro'. Isto significa que o 'olá' é impresso.</para>
0431 
0432 <para
0433 >Finalmente, um exemplo com o <userinput
0434 >não</userinput
0435 >, que muda o 'verdadeiro' para 'falso' e o 'falso' para 'verdadeiro'. Dê uma olhada: <screen
0436 >$n = 1
0437 se nao ($n == 3) {
0438   mostre "olá"
0439 } senao {
0440   mostre "não olá ;-)"
0441 }
0442 </screen
0443 ></para>
0444 </sect3>
0445 </sect2>
0446 
0447 <sect2 id="comparing-operators">
0448 <title
0449 >Operadores de comparação</title>
0450 <para
0451 >Considere esta simples comparação: <screen>
0452 $resposta = 10 &gt; 3
0453 </screen
0454 > Aqui o <userinput
0455 >10</userinput
0456 > é comparado com o <userinput
0457 >3</userinput
0458 >, através do operador 'maior que'. O resultado desta comparação, o <link linkend="boolean-value"
0459 >valor booleano</link
0460 > <userinput
0461 >verdadeiro</userinput
0462 > é guardado na <link linkend="assignment-of-variables"
0463 >variável</link
0464 > <userinput
0465 >$resposta</userinput
0466 >.</para>
0467 <para
0468 >Todos os <link linkend="number"
0469 >números</link
0470 > e <link linkend="assignment-of-variables"
0471 >variáveis</link
0472 > (que contenham números) poderão ser comparados entre si, com os operadores de comparação.</para>
0473 <para
0474 >Aqui estão todos os possíveis operadores de comparação: <table
0475 > <title
0476 >Tipos de perguntas</title
0477 > <tgroup cols="3"
0478 > <tbody
0479 > <row
0480 > <entry
0481 ><userinput
0482 >$A == $B</userinput
0483 ></entry
0484 > <entry
0485 >é igual</entry
0486 > <entry
0487 >a resposta é <quote
0488 >verdadeira</quote
0489 > se o <userinput
0490 >$A</userinput
0491 > for igual a <userinput
0492 >$B</userinput
0493 ></entry
0494 > </row
0495 > <row
0496 > <entry
0497 ><userinput
0498 >$A != $B</userinput
0499 ></entry
0500 > <entry
0501 >é diferente</entry
0502 > <entry
0503 >a resposta é <quote
0504 >verdadeira</quote
0505 > se o <userinput
0506 >$A</userinput
0507 > não for igual ao <userinput
0508 >$B</userinput
0509 ></entry
0510 > </row
0511 > <row
0512 > <entry
0513 ><userinput
0514 >$A &gt; $B</userinput
0515 ></entry
0516 > <entry
0517 >maior que</entry
0518 > <entry
0519 >a resposta é <quote
0520 >verdadeira</quote
0521 > se o <userinput
0522 >$A</userinput
0523 > for maior que o <userinput
0524 >$B</userinput
0525 ></entry
0526 > </row
0527 > <row
0528 > <entry
0529 ><userinput
0530 >$A &lt; $B</userinput
0531 ></entry
0532 > <entry
0533 >menor que</entry
0534 > <entry
0535 >a resposta é <quote
0536 >verdadeira</quote
0537 > se <userinput
0538 >$A</userinput
0539 > for menor que <userinput
0540 >$B</userinput
0541 ></entry
0542 > </row
0543 > <row
0544 > <entry
0545 ><userinput
0546 >$A &gt;= $B</userinput
0547 ></entry
0548 > <entry
0549 >maior ou igual a</entry
0550 > <entry
0551 >a resposta é <quote
0552 >verdadeira</quote
0553 > se <userinput
0554 >$A</userinput
0555 > for maior ou igual ao <userinput
0556 >$B</userinput
0557 ></entry
0558 > </row
0559 > <row
0560 > <entry
0561 ><userinput
0562 >$A &lt;= $B</userinput
0563 ></entry
0564 > <entry
0565 >menor ou igual a</entry
0566 > <entry
0567 >a resposta é <quote
0568 >verdadeira</quote
0569 > se <userinput
0570 >$A</userinput
0571 > for menor ou igual a <userinput
0572 >$B</userinput
0573 ></entry
0574 > </row
0575 > </tbody
0576 > </tgroup
0577 > </table
0578 > Lembre-se que o $A e o $B têm de ser <link linkend="number"
0579 >números</link
0580 > ou <link linkend="assignment-of-variables"
0581 >variáveis</link
0582 > que contenham números.</para>
0583 </sect2>
0584 
0585 
0586 </sect1>
0587 
0588 
0589 
0590 <sect1 id="commands">
0591 <title
0592 >Comandos</title>
0593 <para
0594 >Ao usar os comandos, você diz à tartaruga ou ao &kturtle; para fazer algo. Alguns comandos precisam de dados introduzidos, enquanto outros trazem resultados. Nesta seção iremos explicar todos os comandos incorporados que podem ser usados no &kturtle;. Em alternativa, usando o <link linkend="learn"
0595 >aprenda</link
0596 >, poderá criar os seus próprios comandos. Os comandos incorporados ficam <glossterm
0597 >realçados</glossterm
0598 > em azul escuro.</para>
0599 
0600 <sect2 id="moving-the-turtle">
0601 <title
0602 >Movendo a tartaruga</title>
0603 <para
0604 >Existem vários comandos para mover a tartaruga pela tela.</para>
0605 
0606   <variablelist>
0607     <anchor id="forward"/>
0608     <varlistentry
0609 > 
0610       <term
0611 >parafrente (pf)<indexterm
0612 ><primary
0613 >parafrente (pf)</primary
0614 ></indexterm
0615 ></term>
0616       <listitem
0617 ><para
0618 ><screen
0619 >parafrente X</screen
0620 >O <userinput
0621 >parafrente</userinput
0622 > move a tartaruga para a frente X pontos. Quando o traço está em baixo, a tartaruga irá deixar um rastro. O <userinput
0623 >parafrente</userinput
0624 > pode ser abreviado para <userinput
0625 >pf</userinput
0626 ></para
0627 ></listitem>
0628     </varlistentry>
0629   </variablelist>
0630   <variablelist>
0631     <anchor id="backward"/>
0632     <varlistentry
0633 >  
0634       <term
0635 >paratrás (pt)<indexterm
0636 ><primary
0637 >paratrás (pt)</primary
0638 ></indexterm
0639 ></term>
0640       <listitem
0641 ><para
0642 ><screen
0643 >paratrás X</screen
0644 >O <userinput
0645 >paratrás</userinput
0646 > move a tartaruga para trás X pontos. Quando o traço está em baixo, a tartaruga irá deixar um rastro. O <userinput
0647 >paratrás</userinput
0648 > pode ser abreviado para <userinput
0649 >pt</userinput
0650 >.</para
0651 ></listitem>
0652     </varlistentry>
0653   </variablelist>
0654   <variablelist>
0655     <anchor id="turnleft"/>
0656     <varlistentry
0657 > 
0658       <term
0659 >paraesquerda (pe)<indexterm
0660 ><primary
0661 >paraesquerda (pe)</primary
0662 ></indexterm
0663 ></term>
0664       <listitem
0665 ><para
0666 ><screen
0667 >paraesquerda X</screen
0668 >O <userinput
0669 >paraesquerda</userinput
0670 > diz à tartaruga para se virar X graus para a esquerda. O <userinput
0671 >paraesquerda</userinput
0672 > pode ser abreviado para <userinput
0673 >pe</userinput
0674 >.</para
0675 ></listitem>
0676     </varlistentry>
0677   </variablelist>
0678   <variablelist>
0679     <anchor id="turnright"/>
0680     <varlistentry
0681 > 
0682       <term
0683 >paradireita (pd)<indexterm
0684 ><primary
0685 >paradireita (pd)</primary
0686 ></indexterm
0687 ></term>
0688       <listitem
0689 ><para
0690 ><screen
0691 >paradireita X</screen
0692 >O <userinput
0693 >paradireita</userinput
0694 > diz à tartaruga para se virar X graus para a direita. O <userinput
0695 >paradireita</userinput
0696 > pode ser abreviado para <userinput
0697 >pd</userinput
0698 >.</para
0699 ></listitem>
0700     </varlistentry>
0701   </variablelist>
0702   <variablelist>
0703     <anchor id="direction"/>
0704     <varlistentry
0705 > 
0706       <term
0707 >direção (dir)<indexterm
0708 ><primary
0709 >direção (dir)</primary
0710 ></indexterm
0711 ></term>
0712       <listitem
0713 ><para
0714 ><screen
0715 >direção X</screen
0716 >A <userinput
0717 >direção</userinput
0718 > configura a direção da tartaruga para um ângulo de X graus a contar do zero, e isto não é relativo à direção anterior da tartaruga. A <userinput
0719 >direção</userinput
0720 > pode ser abreviado para <userinput
0721 >dir</userinput
0722 >.</para
0723 ></listitem>
0724     </varlistentry>
0725   </variablelist>
0726   <variablelist>
0727     <anchor id="getdirection"/>
0728     <varlistentry
0729 > 
0730       <term
0731 >lerdireção<indexterm
0732 ><primary
0733 >lerdireção</primary
0734 ></indexterm
0735 ></term>
0736       <listitem
0737 ><para
0738 ><screen
0739 >lerdireção</screen
0740 >O <userinput
0741 >lerdireção</userinput
0742 > retorna a direção da tartaruga para um ângulo de X graus a contar do zero, onde zero é a direção quando a tartaruga está apontando para frente.</para
0743 ></listitem>
0744     </varlistentry>
0745   </variablelist>
0746   <variablelist>
0747     <anchor id="center"/>
0748     <varlistentry
0749 > 
0750       <term
0751 >centralize<indexterm
0752 ><primary
0753 >centralize</primary
0754 ></indexterm
0755 ></term>
0756       <listitem
0757 ><para
0758 ><screen
0759 >centralize</screen
0760 >O <userinput
0761 >centralize</userinput
0762 > move a tartaruga para o centro da área de desenho.</para
0763 ></listitem>
0764     </varlistentry>
0765   </variablelist>
0766   <variablelist>
0767     <anchor id="go"/>
0768     <varlistentry
0769 > 
0770       <term
0771 >vápara<indexterm
0772 ><primary
0773 >vápara</primary
0774 ></indexterm
0775 ></term>
0776       <listitem
0777 ><para
0778 ><screen
0779 >vápara X,Y</screen
0780 >O <userinput
0781 >vápara</userinput
0782 > manda a tartaruga ir para um determinado local da área de desenho. Este local está a X <glossterm linkend="pixels"
0783 >pontos</glossterm
0784 > do lado esquerdo da área de desenho e a Y <glossterm linkend="pixels"
0785 >pontos</glossterm
0786 > do topo da área de desenho.</para
0787 ></listitem>
0788     </varlistentry>
0789   </variablelist>
0790   <variablelist>
0791     <anchor id="gox"/>
0792     <varlistentry
0793 > 
0794       <term
0795 >váparax<indexterm
0796 ><primary
0797 >váparax (vx)</primary
0798 ></indexterm
0799 ></term>
0800       <listitem
0801 ><para
0802 ><screen
0803 >váparax X</screen
0804 >Ao usar o comando <userinput
0805 >váparax</userinput
0806 >, a tartaruga irá mover-se X <glossterm linkend="pixels"
0807 >pontos</glossterm
0808 > a partir da esquerda da área de desenho, mantendo-se na mesma altura. O <userinput
0809 >váparax</userinput
0810 > pode ser abreviado como <userinput
0811 >vx</userinput
0812 >.</para
0813 ></listitem>
0814     </varlistentry>
0815   </variablelist>
0816   <variablelist>
0817     <anchor id="goy"/>
0818     <varlistentry
0819 > 
0820       <term
0821 >váparay<indexterm
0822 ><primary
0823 >váparay (vy)</primary
0824 ></indexterm
0825 ></term>
0826       <listitem
0827 ><para
0828 ><screen
0829 >váparay Y</screen
0830 >Ao usar o comando <userinput
0831 >váparay</userinput
0832 >, a tartaruga irá mover-se Y <glossterm linkend="pixels"
0833 >pontos</glossterm
0834 > a partir do topo da área de desenho, mantendo-se na mesma distância do lado esquerdo da área de desenho. O <userinput
0835 >váparay</userinput
0836 > pode ser abreviado como <userinput
0837 >vy</userinput
0838 >.</para
0839 ></listitem>
0840     </varlistentry>
0841   </variablelist>
0842   <note
0843 ><para
0844 >Ao usar os comandos <userinput
0845 >vápara</userinput
0846 >, <userinput
0847 >váparax</userinput
0848 >, <userinput
0849 >váparay</userinput
0850 > e <userinput
0851 >centralize</userinput
0852 > a tartaruga não irá desenhar uma linha, não importa se usado com <userinput
0853 >usenada</userinput
0854 > ou <userinput
0855 >uselápis</userinput
0856 >.</para>
0857   </note>
0858 </sect2>
0859 
0860 <sect2 id="locate-the-turtle">
0861 <title
0862 >Onde está a tartaruga?</title>
0863 <para
0864 >Existem dois comandos que devolvem a posição da tartaruga na tela.</para>
0865 
0866   <variablelist>
0867     <anchor id="getx"/>
0868     <varlistentry
0869 > 
0870       <term
0871 >pegax<indexterm
0872 ><primary
0873 >pegax</primary
0874 ></indexterm
0875 ></term>
0876       <listitem
0877 ><para
0878 ><userinput
0879 >pegax</userinput
0880 > devolve o número em pontos a partir da esquerda da área de desenho até a posição atual da tartaruga.</para
0881 ></listitem>
0882     </varlistentry>
0883   </variablelist>
0884   <variablelist>
0885     <anchor id="gety"/>
0886     <varlistentry
0887 > 
0888       <term
0889 >pegay<indexterm
0890 ><primary
0891 >pegay</primary
0892 ></indexterm
0893 ></term>
0894       <listitem
0895 ><para
0896 ><userinput
0897 >pegay</userinput
0898 > devolve o número em pontos a partir do topo da área de desenho até a posição atual da tartaruga.</para
0899 ></listitem>
0900     </varlistentry>
0901   </variablelist>
0902 </sect2>
0903 
0904 <sect2 id="pen">
0905 <title
0906 >A tartaruga tem um traço</title>
0907 <para
0908 >A tartaruga tem um traço e vai desenhando uma linha à medida que a tartaruga se move. Existem alguns comandos para controlar o traço. Nesta seção iremos explicar estes comandos.</para>
0909   <variablelist>
0910     <anchor id="penup"/>
0911     <varlistentry
0912 > 
0913       <term
0914 >usenada (un)<indexterm
0915 ><primary
0916 >usenada (un)</primary
0917 ></indexterm
0918 ></term>
0919       <listitem
0920 ><para
0921 ><screen
0922 >usenada</screen
0923 >O <userinput
0924 >usenada</userinput
0925 > levanta o traço da área de desenho. Quando o traço está <quote
0926 >em cima</quote
0927 >, não é desenhada nenhuma linha à medida que a tartaruga se move. Veja também o <userinput
0928 >uselápis</userinput
0929 >. O <userinput
0930 >usenada</userinput
0931 > pode ser abreviado para <userinput
0932 >un</userinput
0933 >.</para
0934 ></listitem>
0935     </varlistentry>
0936   </variablelist>
0937   <variablelist>
0938     <anchor id="pendown"/>
0939     <varlistentry
0940 > 
0941       <term
0942 >uselápis (ul)<indexterm
0943 ><primary
0944 >uselápis (ul)</primary
0945 ></indexterm
0946 ></term>
0947       <listitem
0948 ><para
0949 ><screen
0950 >uselápis</screen
0951 >O <userinput
0952 >uselápis</userinput
0953 > pressiona o traço para baixo na área de desenho. Quando o traço está <quote
0954 >em baixo</quote
0955 >, é desenhada uma linha à medida que a tartaruga se move. Veja também o <userinput
0956 >usenada</userinput
0957 >. O <userinput
0958 >uselápis</userinput
0959 > pode ser abreviado para <userinput
0960 >ul</userinput
0961 >.</para
0962 ></listitem>
0963     </varlistentry>
0964   </variablelist>
0965   <variablelist>
0966     <anchor id="setpenwidth"/>
0967     <varlistentry
0968 > 
0969       <term
0970 >larguradolápis (ll)<indexterm
0971 ><primary
0972 >larguradolápis (ll)</primary
0973 ></indexterm
0974 ></term>
0975       <listitem
0976 ><para
0977 ><screen
0978 >larguradolápis X</screen
0979 >A <userinput
0980 >larguradolápis</userinput
0981 > configura a espessura do traço para X <glossterm linkend="pixels"
0982 >pontos</glossterm
0983 >. A <userinput
0984 >larguradolápis</userinput
0985 > pode ser abreviado para <userinput
0986 >ll</userinput
0987 >.</para
0988 ></listitem>
0989     </varlistentry>
0990   </variablelist>
0991   <variablelist>
0992     <anchor id="setfgcolor"/>
0993     <varlistentry
0994 > 
0995       <term
0996 >cordolápis (cl)<indexterm
0997 ><primary
0998 >cordolápis (cl)</primary
0999 ></indexterm
1000 ></term>
1001       <listitem
1002 ><para
1003 ><screen
1004 >cordolápis R,G,B</screen
1005 >A <userinput
1006 >cordolápis</userinput
1007 > configura a cor do traço. A <userinput
1008 >cordolápis</userinput
1009 > recebe uma <glossterm linkend="rgb"
1010 >combinação de RGB</glossterm
1011 > como parâmetro. A <userinput
1012 >cordolápis</userinput
1013 > pode ser abreviado para <userinput
1014 >cl</userinput
1015 >.</para
1016 ></listitem>
1017     </varlistentry>
1018   </variablelist>
1019 </sect2>
1020 
1021 <sect2 id="canvas">
1022 <title
1023 >Comandos para controlar a área de desenho</title>
1024 <para
1025 >Existem vários comandos para controlar a área de desenho.</para>
1026   <variablelist>
1027     <anchor id="resizecanvas"/>
1028     <varlistentry>
1029       <term
1030 >tamanhodatela (tt)<indexterm
1031 ><primary
1032 >tamanhodatela (tt)</primary
1033 ></indexterm
1034 ></term>
1035       <listitem
1036 ><para
1037 ><screen
1038 >tamanhodatela X,Y</screen
1039 >Com o comando <userinput
1040 >tamanhodatela</userinput
1041 > você poderá alterar o tamanho da área de desenho. Ele recebe dois parâmetros (X e Y) de entrada, em que o X é a nova largura da área de desenho em <glossterm linkend="pixels"
1042 >pontos</glossterm
1043 >, e o Y é a nova altura da mesma área em <glossterm linkend="pixels"
1044 >pontos</glossterm
1045 >. O <userinput
1046 >tamanhodatela</userinput
1047 > pode ser abreviado para <userinput
1048 >tt</userinput
1049 >.</para
1050 ></listitem>
1051     </varlistentry>
1052   </variablelist>
1053   <variablelist>
1054     <anchor id="setbgcolor"/>
1055     <varlistentry
1056 > 
1057       <term
1058 >cordofundor (cf)<indexterm
1059 ><primary
1060 >cordofundor (cf)</primary
1061 ></indexterm
1062 ></term>
1063       <listitem
1064 ><para
1065 ><screen
1066 >cordofundo R,G,B</screen
1067 >A <userinput
1068 >cordofundo</userinput
1069 > define a cor da área de desenho. A <userinput
1070 >cordofundor</userinput
1071 > recebe uma <glossterm linkend="rgb"
1072 >combinação RGB</glossterm
1073 > como parâmetro. A <userinput
1074 >cordofundo</userinput
1075 > pode ser abreviado para <userinput
1076 >cf</userinput
1077 >.</para
1078 ></listitem>
1079     </varlistentry>
1080   </variablelist>
1081 </sect2>
1082 
1083 <sect2 id="clean">
1084 <title
1085 >Comandos para limpar</title>
1086 <para
1087 >Existem dois comandos para limpar a área de desenho, depois de você ter deixado tudo bagunçado.</para>
1088   <variablelist>
1089     <anchor id="clear"/>
1090     <varlistentry
1091 > 
1092       <term
1093 >limpetela (lt)<indexterm
1094 ><primary
1095 >limpetela (lt)</primary
1096 ></indexterm
1097 ></term>
1098       <listitem
1099 ><para
1100 ><screen
1101 >limpetela</screen
1102 >Com o <userinput
1103 >limpetela</userinput
1104 >, você poderá limpar todos os desenhos da área de desenho. Todo o resto permanece igual: a posição e o ângulo da tartaruga, a cor da área de trabalho, a visibilidade da tartaruga e o tamanho da área de desenho.</para
1105 ></listitem>
1106     </varlistentry>
1107   </variablelist>
1108   <variablelist>
1109     <anchor id="reset"/>
1110     <varlistentry
1111 > 
1112       <term
1113 >apague<indexterm
1114 ><primary
1115 >apague</primary
1116 ></indexterm
1117 ></term>
1118       <listitem
1119 ><para
1120 ><screen
1121 >apague</screen
1122 >O <userinput
1123 >apague</userinput
1124 > limpa tudo de forma mais abrangente que o comando <userinput
1125 >limpetela</userinput
1126 >. Depois de um comando <userinput
1127 >apague</userinput
1128 >, tudo fica como estava quando você iniciou o &kturtle;. A tartaruga é posicionada no meio do tela, a cor da área de desenho é branca e a tartaruga irá desenhar uma linha preta na área de desenho e o tamanho da tela é definido para 400 x 400 pontos.</para
1129 ></listitem>
1130     </varlistentry>
1131   </variablelist>
1132 </sect2>
1133 
1134 <sect2 id="sprites">
1135 <title
1136 >A tartaruga é uma imagem móvel</title>
1137 <para
1138 >Muitas pessoas não sabem o que são as imagens móveis ('sprites' em inglês), daí uma breve explicação: as imagens móveis são pequenas imagens que podem percorrer a tela (para mais informações, veja o glossário sobre as <glossterm linkend="sprites"
1139 >imagens móveis</glossterm
1140 >). </para>
1141 <para
1142 >A seguir você irá encontrar uma apresentação completa de todos os comandos que lidam com imagens móveis.</para>
1143 <para
1144 >[A versão atual do &kturtle; não suporta ainda o uso de imagens móveis além da tartaruga. Nas versões futuras, você poderá mudar a tartaruga para outra coisa que desejar]</para>
1145   <variablelist>
1146     <anchor id="spriteshow"/>
1147     <varlistentry
1148 > 
1149       <term
1150 >apareça (ap)<indexterm
1151 ><primary
1152 >apareça (ap)</primary
1153 ></indexterm
1154 ></term>
1155       <listitem
1156 ><para
1157 ><screen
1158 >apareça</screen
1159 >O <userinput
1160 >apareça</userinput
1161 > torna a tartaruga visível de novo depois de ter ficado escondida. O <userinput
1162 >apareça</userinput
1163 > pode ser abreviado para <userinput
1164 >ap</userinput
1165 >.</para
1166 ></listitem>
1167     </varlistentry>
1168   </variablelist>
1169   <variablelist>
1170     <anchor id="spritehide"/>
1171     <varlistentry
1172 > 
1173       <term
1174 >desapareça (da)<indexterm
1175 ><primary
1176 >desapareça (da)</primary
1177 ></indexterm
1178 ></term>
1179       <listitem
1180 ><para
1181 ><screen
1182 >desapareça</screen
1183 >O <userinput
1184 >desapareça</userinput
1185 > esconde a tartaruga. Isto pode ser usado se a tartaruga não couber no seu desenho. O <userinput
1186 >desapareça</userinput
1187 > pode ser abreviado para <userinput
1188 >da</userinput
1189 >.</para
1190 ></listitem>
1191     </varlistentry>
1192   </variablelist>
1193 </sect2>
1194 
1195 <sect2 id="writing">
1196 <title
1197 >A tartaruga sabe escrever?</title>
1198 <para
1199 >A resposta é: <quote
1200 >sim</quote
1201 >. A tartaruga sabe escrever e pode escrever tudo o que lhe disser para escrever.</para>
1202   <variablelist>
1203     <anchor id="print"/>
1204     <varlistentry
1205 > 
1206       <term
1207 >mostre<indexterm
1208 ><primary
1209 >mostre</primary
1210 ></indexterm
1211 ></term>
1212       <listitem
1213 ><para
1214 ><screen
1215 >mostre X</screen
1216 >O comando <userinput
1217 >mostre</userinput
1218 > é usado para dizer à tartaruga para escrever algo na área de desenho. O <userinput
1219 >mostre</userinput
1220 > recebe números e texto como parâmetros. Você poderá executar o <userinput
1221 >mostre</userinput
1222 > para vários parâmetros com o sinal <quote
1223 >+</quote
1224 >. Veja aqui um pequeno exemplo: <screen
1225 >$ano = 2003
1226 $autor = "Cies Breijs"
1227 mostre $autor + " iniciou o projeto do KTurtle em " + $ano + " e ainda continua gostando de trabalhar nele!"
1228 </screen>
1229       </para
1230 ></listitem>
1231     </varlistentry>
1232   </variablelist>
1233   <variablelist>
1234     <anchor id="fontsize"/>
1235     <varlistentry
1236 > 
1237       <term
1238 >tamanhodafonte<indexterm
1239 ><primary
1240 >tamanhodafonte</primary
1241 ></indexterm
1242 ></term>
1243       <listitem
1244 ><para
1245 ><screen
1246 >tamanhodafonte X</screen
1247 >O <userinput
1248 >tamanhodafonte</userinput
1249 > configura o tamanho da letra que é usado pelo <userinput
1250 >mostre</userinput
1251 >. O <userinput
1252 >tamanhodafonte</userinput
1253 > recebe um parâmetro que deverá ser um número. O tamanho é definido em <glossterm linkend="pixels"
1254 >pontos</glossterm
1255 >.</para
1256 ></listitem>
1257     </varlistentry>
1258   </variablelist>
1259 </sect2>
1260 
1261 <sect2 id="math-commands">
1262 <title
1263 >Comandos matemáticos</title>
1264 <para
1265 >Os seguintes comandos são as instruções matemáticas mais avançadas do &kturtle;.</para>
1266   <variablelist>
1267     <anchor id="round"/>
1268     <varlistentry>
1269       <term
1270 >arredonda<indexterm
1271 ><primary
1272 >arredonda</primary
1273 ></indexterm
1274 ></term>
1275       <listitem
1276 ><para
1277 ><screen
1278 >arredonda(x)</screen
1279 >O <userinput
1280 >arredonda</userinput
1281 > arredonda o número indicado ao inteiro mais próximo. <screen>
1282 mostre arredonda 10.8
1283 parafrente 20
1284 mostre arredonda 10.3
1285 parafrente 20
1286 </screen
1287 > Com este código, a tartaruga iria apresentar os números 11 e 10.</para
1288 ></listitem>
1289     </varlistentry>
1290   </variablelist>
1291   <variablelist>
1292     <anchor id="random"/>
1293     <varlistentry
1294 > 
1295       <term
1296 >aleatório (al)<indexterm
1297 ><primary
1298 >aleatório (al)</primary
1299 ></indexterm
1300 ></term>
1301       <listitem
1302 ><para
1303 ><screen
1304 >aleatório X,Y</screen
1305 >O <userinput
1306 >aleatório</userinput
1307 > é um comando que recebe parâmetros e devolve resultados. Como parâmetros são necessários dois números, onde o primeiro define o resultado mínimo (X) e o segundo o máximo (Y). O resultado é um número escolhido aleatoriamente que é maior ou igual ao mínimo e menor ou igual ao máximo. Aqui está um pequeno exemplo: <screen>
1308 repita 500 {
1309   $x = aleatório 1,20
1310   parafrente $x
1311   paraesquerda 10 - $x
1312 }
1313 </screen
1314 > Com o comando <userinput
1315 >aleatório</userinput
1316 >, você poderá adicionar um pouco de confusão ao seu programa.</para
1317 ></listitem>
1318     </varlistentry>
1319   </variablelist>
1320   <variablelist>
1321     <anchor id="mod"/>
1322     <varlistentry
1323 > 
1324       <term
1325 >resto<indexterm
1326 ><primary
1327 >resto</primary
1328 ></indexterm
1329 ></term>
1330       <listitem
1331 ><para
1332 ><screen
1333 >resto X,Y</screen
1334 >O comando <userinput
1335 >resto</userinput
1336 > retorna o resto da divisão do primeiro número pelo segundo.</para
1337 ></listitem>
1338     </varlistentry>
1339   </variablelist>
1340   <variablelist>
1341     <anchor id="sqrt"/>
1342     <varlistentry
1343 > 
1344       <term
1345 >raizquadrada<indexterm
1346 ><primary
1347 >raizquadrada</primary
1348 ></indexterm
1349 ></term>
1350       <listitem
1351 ><para
1352 ><screen
1353 >raizquadrada X</screen
1354 >O comando <userinput
1355 >raizquadrada</userinput
1356 > é usado para descobrir a raiz quadrada de um número X.</para
1357 ></listitem>
1358     </varlistentry>
1359   </variablelist>
1360 <!--
1361   <variablelist>
1362     <anchor id="exp"/>
1363     <varlistentry
1364 > 
1365       <term
1366 >exp<indexterm
1367 ><primary
1368 >exp</primary
1369 ></indexterm
1370 ></term>
1371       <listitem
1372 ><para
1373 ><screen
1374 >sqrt X</screen>
1375       </para
1376 ></listitem>
1377     </varlistentry>
1378   </variablelist>
1379 -->
1380   <variablelist>
1381     <anchor id="pi"/>
1382     <varlistentry
1383 > 
1384       <term
1385 >pi<indexterm
1386 ><primary
1387 >pi</primary
1388 ></indexterm
1389 ></term>
1390       <listitem
1391 ><para
1392 ><screen
1393 >pi</screen
1394 >Este comando devolve a constante Pi, <userinput
1395 >3,14159...</userinput
1396 >.</para
1397 ></listitem>
1398     </varlistentry>
1399   </variablelist>
1400   <variablelist>
1401     <anchor id="sin"/>
1402     <anchor id="cos"/>
1403     <anchor id="tan"/>
1404     <varlistentry>
1405       <term
1406 >seno<indexterm
1407 ><primary
1408 >seno</primary
1409 ></indexterm
1410 >, cosseno<indexterm
1411 ><primary
1412 >cosseno</primary
1413 ></indexterm
1414 >, tangente<indexterm
1415 ><primary
1416 >tangente</primary
1417 ></indexterm
1418 ></term>
1419       <listitem
1420 ><para>
1421 <screen
1422 >seno X
1423 cosseno X
1424 tangente X
1425 </screen
1426 >Estes três comandos representam as conhecidas funções trigonométricas <userinput
1427 >seno</userinput
1428 >, <userinput
1429 >cosseno</userinput
1430 > e <userinput
1431 >tangente</userinput
1432 >. O argumento de entrada destes comandos, X, deve ser a medida de um ângulo em graus.</para
1433 ></listitem>
1434     </varlistentry>
1435   </variablelist>
1436   <variablelist>
1437     <anchor id="arcsin"/>
1438     <anchor id="arccos"/>
1439     <anchor id="arctan"/>
1440     <varlistentry>
1441       <term
1442 >arcsin<indexterm
1443 ><primary
1444 >arcsin</primary
1445 ></indexterm
1446 >, arccos<indexterm
1447 ><primary
1448 >arccos</primary
1449 ></indexterm
1450 >, arctan<indexterm
1451 ><primary
1452 >arcotangente</primary
1453 ></indexterm
1454 ></term>
1455       <listitem
1456 ><para>
1457 <screen
1458 >arcoseno X
1459 arcocosseno X
1460 arcotangente X
1461 </screen
1462 >Estes comandos são as funções inversas do <link linkend="sin"
1463 >seno</link
1464 >, <link linkend="cos"
1465 >cosseno</link
1466 > e <link linkend="tan"
1467 >tangente</link
1468 >. O argumento de entrada destes comandos, X, é um <link linkend="number"
1469 >número</link
1470 >.</para
1471 ></listitem>
1472     </varlistentry>
1473   </variablelist>
1474 </sect2>
1475 
1476 <sect2 id="dialogs">
1477 <title
1478 >Entrada de dados e reação através de janelas</title>
1479 <para
1480 >Um diálogo é uma pequena janela que fornece algum retorno ou pergunta por alguma entrada. O &kturtle; tem dois comandos para diálogos, chamados<userinput
1481 >mensagem</userinput
1482 > e o <userinput
1483 >perguntar</userinput
1484 ></para>
1485   <variablelist>
1486     <anchor id="message"/>
1487     <varlistentry
1488 > 
1489       <term
1490 >mensagem<indexterm
1491 ><primary
1492 >mensagem</primary
1493 ></indexterm
1494 ></term>
1495       <listitem
1496 ><para
1497 ><screen
1498 >mensagem X</screen
1499 >O comando <userinput
1500 >mensagem</userinput
1501 > recebe uma <link linkend="string"
1502 >cadeia de caracteres</link
1503 > como entrada. Exibe então uma janela que contém o texto da <link linkend="string"
1504 >cadeia de caracteres</link
1505 >. <screen
1506 >mensagem "Cies iniciou o projeto do KTurtle em 2003 e ainda continua gostando de trabalhar nele!"
1507 </screen>
1508       </para
1509 ></listitem>
1510     </varlistentry>
1511   </variablelist>
1512   <variablelist>
1513     <anchor id="ask"/>
1514     <varlistentry
1515 > 
1516       <term
1517 >perguntar<indexterm
1518 ><primary
1519 >perguntar</primary
1520 ></indexterm
1521 ></term>
1522       <listitem
1523 ><para
1524 ><screen
1525 >perguntar X</screen
1526 >O <userinput
1527 >perguntar</userinput
1528 > recebe uma <link linkend="string"
1529 >cadeia de caracteres</link
1530 > como entrada. Ele mostra o texto da cadeia de caracteres em uma janela (de maneira similar ao <link linkend="message"
1531 >mensagem</link
1532 >), mostrando também um campo de entrada de texto. Após o usuário inserir um <link linkend="number"
1533 >número</link
1534 > ou uma <link linkend="string"
1535 >cadeia de caracteres</link
1536 > nesta caixa, o resultado poderá ser guardado numa <link linkend="assignment-of-variables"
1537 >variável</link
1538 > ou passado como argumento a um <link linkend="commands"
1539 >comando</link
1540 >. Por exemplo <screen>
1541 $entrada = perguntar "Qual o ano do seu nascimento?"
1542 $saida = 2003 - $entrada
1543 mostre "Em 2003, você tinha " + $saida + " anos em determinado momento."
1544 </screen
1545 > Quando um usuário cancelar a janela ou não inserir nada, a <link linkend="assignment-of-variables"
1546 >variável</link
1547 > fica vazia.</para
1548 ></listitem>
1549     </varlistentry>
1550   </variablelist>
1551 </sect2>
1552 
1553 </sect1>
1554 
1555 
1556 
1557 <sect1 id="assignment-of-variables">
1558 <title
1559 >Atribuição de variáveis</title>
1560 <para
1561 >Vejamos primeiro as variáveis, e depois iremos ver como atribuir valores a essas variáveis. </para>
1562 
1563 <para
1564 >As variáveis são palavras que começam por um <quote
1565 >$</quote
1566 >; no <link linkend="the-editor"
1567 >editor</link
1568 >, são <glossterm
1569 >realçadas</glossterm
1570 > em púrpura.</para>
1571 
1572 <para
1573 >As variáveis poderão conter qualquer <link linkend="number"
1574 >número</link
1575 >, <link linkend="string"
1576 >texto</link
1577 > ou <link linkend="boolean-value"
1578 >valor booleano (verdadeiro/falso)</link
1579 >. Ao usar a atribuição <userinput
1580 >=</userinput
1581 >, uma variável ficará com conteúdo associado. Irá manter esse conteúdo até que o programa termine a execução ou até a variável ser atribuída de novo a outra coisa qualquer.</para>
1582 
1583 <para
1584 >Você poderá usar as variáveis, uma vez atribuídas, como se fossem o seu próprio conteúdo. Por exemplo, no seguinte trecho de &turtlescript;: <screen>
1585 $x = 10
1586 $x = $x / 3
1587 mostre $x
1588 </screen
1589 > Primeiro, é atribuído à variável <userinput
1590 >$x</userinput
1591 > o valor <userinput
1592 >10</userinput
1593 >. Depois, o <userinput
1594 >$x</userinput
1595 > terá como novo valor o seu próprio valor dividido por <userinput
1596 >3</userinput
1597 > &mdash; isto significa na prática que o <userinput
1598 >$x</userinput
1599 > terá atribuído o valor do produto <userinput
1600 >10 / 3</userinput
1601 >. Finalmente, é impresso o valor do <userinput
1602 >$x</userinput
1603 >. Nas linhas 2 e 3, irá ver que o <userinput
1604 >$x</userinput
1605 > é usado como se fosse o seu próprio conteúdo.</para>
1606 
1607 <para
1608 >As variáveis têm que estar atribuídas para poderem ser usadas. Por exemplo, um: <screen>
1609 mostre $n
1610 </screen
1611 > Irá resultar numa mensagem de erro.</para>
1612 
1613 <para
1614 >Considere o pequeno trecho de código em &turtlescript;: <screen>
1615 $a = 2004
1616 $b = 25
1617 
1618 # o próximo comando imprime "2029"
1619 mostre $a + $b
1620 paratrás 30
1621 # o próximo comando imprime "2004 mais 25 é igual a 2029"
1622 mostre $a + " mais " + $b + " é igual a " + ($a + $b)
1623 paratrás 30
1624 </screen
1625 > Nas duas primeiras linhas, as variáveis <userinput
1626 >$a</userinput
1627 > e <userinput
1628 >$b</userinput
1629 > são configuradas como sendo iguais a 2004 e 25. Depois nos dois comandos <userinput
1630 >mostre</userinput
1631 > existe um comando <userinput
1632 >paratrás 30</userinput
1633 > no meio são executados. Os comentários antes dos comando <userinput
1634 >mostre</userinput
1635 > explicam o que ele está fazendo. O comando <userinput
1636 >paratrás 30</userinput
1637 > está ai para garantir que cada saída está numa nova linha. Como poderá ver, as variáveis poderão ser usadas como se fossem o valor que contêm, podendo usá-las com qualquer tipo de <link linkend="operators"
1638 >operadores</link
1639 > ou fornecendo-os como entradas na invocação dos <link linkend="commands"
1640 >comandos</link
1641 >.</para>
1642 
1643 <para
1644 >Mais um exemplo: <screen>
1645 $nome = perguntar "Como se chama?"
1646 mostre "Olá " + $nome + "! Boa sorte ao aprender a arte da programação..."
1647 </screen
1648 > É bastante simples. Mais uma vez, poderá ver que a variável <userinput
1649 >$nome</userinput
1650 >, é tratada apenas como texto.</para>
1651 
1652 <para
1653 >Ao usar as variáveis, o <link linkend="the-inspector"
1654 >inspetor</link
1655 > torna-se bastante útil. Ele mostra o conteúdo de todas as variáveis que estão sendo usadas atualmente.</para>
1656 </sect1>
1657 
1658 
1659 
1660 <sect1 id="controlling-execution">
1661 <title
1662 >Controlando a execução</title>
1663 <para
1664 >Os controladores de execução permitem-lhe &mdash; como o nome deles indica &mdash; controlar a execução.</para>
1665 <para
1666 >Os comandos de controle de execução são <glossterm
1667 >realçados</glossterm
1668 > em verde escuro e negrito. As chaves são frequentemente usadas juntamente com os controladores de execução e eles são <glossterm
1669 >realçados</glossterm
1670 > em preto.</para>
1671 
1672 <sect2 id="wait">
1673 <title
1674 >Fazendo a tartaruga esperar</title>
1675 <para
1676 >Se você já tentou programar um pouco no &kturtle;, você já poderá ter reparado que a tartaruga pode ser bastante rápida desenhando. Este comando faz a tartaruga andar um pouco mais devagar.</para>
1677   <variablelist>
1678     <varlistentry>
1679       <term
1680 >aguarde<indexterm
1681 ><primary
1682 >aguarde</primary
1683 ></indexterm
1684 ></term>
1685       <listitem
1686 ><para
1687 ><screen
1688 >aguarde X</screen
1689 >O <userinput
1690 >aguarde</userinput
1691 > faz a tartaruga esperar X segundos. <screen>
1692 repita 36 {
1693   parafrente 5
1694   paradireita 10
1695   aguarde 0.5
1696 }
1697 </screen
1698 > Este código irá desenhar uma circunferência, mas a tartaruga irá esperar meio segundo a cada passo. Isto dá a noção de uma tartaruga vagarosa.</para
1699 ></listitem>
1700     </varlistentry>
1701   </variablelist>
1702 </sect2>
1703 
1704 <sect2 id="if">
1705 <title
1706 >Executar o "se"</title>
1707   <variablelist>
1708     <varlistentry>
1709       <term
1710 >se<indexterm
1711 ><primary
1712 >se</primary
1713 ></indexterm
1714 ></term>
1715       <listitem
1716 ><para
1717 ><screen
1718 >se <link linkend="boolean-value"
1719 >booleano</link
1720 > { ... }</screen
1721 >O código que é colocado entre os parênteses só será executado <userinput
1722 >se</userinput
1723 > o <link linkend="boolean-value"
1724 >valor booleano</link
1725 > for <quote
1726 >verdadeiro</quote
1727 >. <screen>
1728 $x = 6
1729 se $x &gt; 5 {
1730   mostre "O x é maior que cinco!"
1731 }
1732 </screen
1733 > Na primeira linha, o <userinput
1734 >$x</userinput
1735 > é inicializado a 6. Na segunda linha, a <link linkend="comparing-operators"
1736 >operador de comparação</link
1737 > é usado para avaliar <userinput
1738 >x &gt; 5</userinput
1739 >. Uma vez que a resposta a esta pergunta é <quote
1740 >verdadeira</quote
1741 >, o controlador de execução <userinput
1742 >se</userinput
1743 > irá permitir que o código entre chaves seja executado.</para
1744 ></listitem>
1745     </varlistentry>
1746   </variablelist>
1747 </sect2>
1748 
1749 <sect2 id="else">
1750 <title
1751 >Se não, em outras palavras: "senão"</title>
1752   <variablelist>
1753     <varlistentry>
1754       <term
1755 >senão<indexterm
1756 ><primary
1757 >senão</primary
1758 ></indexterm
1759 ></term>
1760       <listitem
1761 ><para
1762 ><screen
1763 >se <link linkend="boolean-value"
1764 >booleano</link
1765 > { ... } senao { ... }</screen
1766 >O <userinput
1767 >senao</userinput
1768 > pode ser usado além do controlador de execução <link linkend="if"
1769 ><userinput
1770 >se</userinput
1771 ></link
1772 >. O código entre chaves a seguir ao <userinput
1773 >senao</userinput
1774 > só é executado se o <link linkend="boolean-value"
1775 >valor booleano</link
1776 > for <quote
1777 >falso</quote
1778 >. <screen>
1779 apague
1780 $x = 4
1781 se $x &gt; 5 {
1782   mostre "O x é maior que cinco!"
1783 } senao {
1784   mostre "O x é menor que seis!"
1785 }
1786 </screen
1787 > O <link linkend="comparing-operators"
1788 >operador de comparação</link
1789 > testa a expressão <userinput
1790 >x &gt; 5</userinput
1791 >. Uma vez que o <userinput
1792 >x</userinput
1793 > fica igual a 4 na primeira linha, a resposta à pergunta é <quote
1794 >falso</quote
1795 >. Isto significa que o código entre chaves a seguir ao <userinput
1796 >senao</userinput
1797 > é executado.</para
1798 ></listitem>
1799     </varlistentry>
1800   </variablelist>
1801 </sect2>
1802 
1803 <sect2 id="while">
1804 <title
1805 >O ciclo "enquanto"</title>
1806   <variablelist>
1807     <varlistentry>
1808       <term
1809 >enquanto<indexterm
1810 ><primary
1811 >enquanto</primary
1812 ></indexterm
1813 ></term>
1814       <listitem
1815 ><para
1816 ><screen
1817 >enquanto <link linkend="boolean-value"
1818 >booleano</link
1819 > { ... }</screen
1820 >O controlador de execução <userinput
1821 >enquanto</userinput
1822 > é um pouco como o <link linkend="if"
1823 ><userinput
1824 >se</userinput
1825 ></link
1826 >. A diferença é que o <userinput
1827 >enquanto</userinput
1828 > continua a repetir o código entre parênteses até que a resposta à <link linkend="boolean-value"
1829 >valor booleano</link
1830 > seja <quote
1831 >falso</quote
1832 >. <screen>
1833 $x = 1
1834 enquanto $x &lt; 5 {
1835   parafrente 10
1836   aguarde 1
1837   $x = $x + 1
1838 }
1839 </screen
1840 > Na primeira linha, o <userinput
1841 >$x</userinput
1842 > fica igual a 1. Na segunda, a expressão <userinput
1843 >x &lt; 5</userinput
1844 > é avaliada. Uma vez que a resposta a esta pergunta é <quote
1845 >verdadeiro</quote
1846 >, o controlador de execução <userinput
1847 >enquanto</userinput
1848 > começa a execução do código entre chaves até que a condição <userinput
1849 >$x &lt; 5</userinput
1850 > seja <quote
1851 >falso</quote
1852 >. Neste caso, o código entre parênteses será executado 4 vezes, uma vez que, cada vez que a quinta linha é executada, o <userinput
1853 >$x</userinput
1854 > fica um número acima.</para
1855 ></listitem>
1856     </varlistentry>
1857   </variablelist>
1858 </sect2>
1859 
1860 <sect2 id="repeat">
1861 <title
1862 >O ciclo "repita"</title>
1863   <variablelist>
1864     <varlistentry>
1865       <term
1866 >repita<indexterm
1867 ><primary
1868 >repita</primary
1869 ></indexterm
1870 ></term>
1871       <listitem
1872 ><para
1873 ><screen
1874 >repita <link linkend="number"
1875 >número</link
1876 > { ... }</screen
1877 >O controlador de execução <userinput
1878 >repita</userinput
1879 > funciona um pouco como o <link linkend="while"
1880 ><userinput
1881 >enquanto</userinput
1882 ></link
1883 >. A diferença é que o <userinput
1884 >repita</userinput
1885 > repete o código entre parênteses um número fixo de vezes, igual ao número dado.</para
1886 ></listitem>
1887     </varlistentry>
1888   </variablelist>
1889 </sect2>
1890 
1891 <sect2 id="for">
1892 <title
1893 >O ciclo "para", um ciclo de contagem</title>
1894   <variablelist>
1895     <varlistentry>
1896       <term
1897 >para<indexterm
1898 ><primary
1899 >para</primary
1900 ></indexterm
1901 ><indexterm
1902 ><primary
1903 >até</primary
1904 ></indexterm
1905 ><indexterm
1906 ><primary
1907 >passo</primary
1908 ></indexterm
1909 ></term>
1910       <listitem
1911 ><para
1912 ><screen
1913 >para <link linkend="assignment-of-variables"
1914 >variável</link
1915 > = <link linkend="number"
1916 >número</link
1917 > até <link linkend="number"
1918 >número</link
1919 > { ... }</screen
1920 >O ciclo <userinput
1921 >para</userinput
1922 > é um <quote
1923 >ciclo de contagem</quote
1924 >, &ie;, faz uma contagem para você. O primeiro membro configura a variável com o valor do primeiro ciclo. Em cada iteração, o número é aumentado até atingir o segundo número. <screen>
1925 para $x = 1 ate 10 {
1926   mostre $x * 7
1927   avancar 15
1928 }
1929 </screen
1930 > Cada vez que o código entre chaves é executado, o <userinput
1931 >$x</userinput
1932 > é incrementado de uma unidade, até que o valor do <userinput
1933 >$x</userinput
1934 > chegue a 10. O código entre chaves imprime o valor de <userinput
1935 >$x</userinput
1936 > multiplicado por 7. Depois deste programa terminar a sua execução, você irá ver a tabuada dos 7 na área de desenho. </para>
1937      <para
1938 >O passo padrão para um ciclo é 1, você pode usar um outro valor com <screen
1939 >para <link linkend="assignment-of-variables"
1940 >variável</link
1941 > = <link linkend="number"
1942 >número</link
1943 > até <link linkend="number"
1944 >number</link
1945 > passo <link linkend="number"
1946 >número</link
1947 > { ... }</screen
1948 ></para
1949 ></listitem>
1950     </varlistentry>
1951   </variablelist>
1952 </sect2>
1953 
1954 <sect2 id="break">
1955 <title
1956 >Deixar um ciclo</title>
1957   <variablelist>
1958     <varlistentry>
1959       <term
1960 >quebre<indexterm
1961 ><primary
1962 >quebre</primary
1963 ></indexterm
1964 ></term>
1965       <listitem
1966 ><para
1967 ><screen
1968 >quebre</screen
1969 >Termina imediatamente o ciclo atual e transfere o controle para a instrução imediatamente após esse ciclo.</para
1970 ></listitem>
1971     </varlistentry>
1972   </variablelist>
1973 </sect2>
1974 
1975 <sect2 id="exit">
1976 <title
1977 >Interrompe a execução do seu programa</title>
1978   <variablelist>
1979     <varlistentry>
1980       <term
1981 >sair<indexterm
1982 ><primary
1983 >sair</primary
1984 ></indexterm
1985 ></term>
1986       <listitem
1987 ><para
1988 ><screen
1989 >sair</screen
1990 >Termina a execução do seu programa.</para
1991 ></listitem>
1992     </varlistentry>
1993   </variablelist>
1994 </sect2>
1995 
1996 <sect2 id="assert">
1997 <title
1998 >Verificar os testes durante a execução</title>
1999   <variablelist>
2000     <varlistentry>
2001       <term
2002 >declara<indexterm
2003 ><primary
2004 >declara</primary
2005 ></indexterm
2006 ></term>
2007       <listitem
2008 ><para
2009 ><screen
2010 >declara <link linkend="boolean-value"
2011 >booleano</link
2012 ></screen
2013 >Pode ser usado para confirmar a correção do programa ou seus parâmetros. <screen
2014 >$entrada = perguntar "Qual é a sua data de nascimento?"
2015 # o ano deve ser positivo
2016 declara $entrada 
2017 > 0
2018 </screen
2019 ></para
2020 ></listitem>
2021     </varlistentry>
2022   </variablelist>
2023 </sect2>
2024 </sect1>
2025 
2026 
2027 <sect1 id="learn">
2028 
2029 <title
2030 >Crie os seus próprios comandos com o <quote
2031 >aprenda</quote
2032 ></title>
2033 <para
2034 >O <userinput
2035 >aprenda</userinput
2036 ><indexterm
2037 ><primary
2038 >aprenda</primary
2039 ></indexterm
2040 > é um comando muito especial, porque é usado para criar os seus próprios comandos. O comando que criar poderá receber <glossterm linkend="input-output"
2041 >parâmetros</glossterm
2042 > e devolver <glossterm linkend="input-output"
2043 >resultados</glossterm
2044 >. Vamos ver como é criado um novo comando. <screen>
2045 aprenda circunferência $x {
2046   repita 36 {
2047     parafrente $x
2048     paraesquerda 10
2049   }
2050 }
2051 </screen
2052 > O novo comando chama-se <userinput
2053 >circunferencia</userinput
2054 >. O <userinput
2055 >circunferencia</userinput
2056 > recebe um <glossterm linkend="input-output"
2057 >parâmetro</glossterm
2058 >, um número, para definir o tamanho da circunferência. O <userinput
2059 >circunferencia</userinput
2060 > não devolve nenhum <glossterm linkend="input-output"
2061 >resultado</glossterm
2062 >. O comando <userinput
2063 >circunferencia</userinput
2064 > pode agora ser usado como um comando normal. Veja este exemplo: <screen
2065 >aprenda círculo $X {
2066   repita 36 {
2067     parafrente $X
2068     paraesquerda 10
2069   }
2070 }
2071 
2072 vápara 200,200
2073 círculo 20
2074 
2075 vápara 300,200
2076 círculo 40  
2077 </screen>
2078 </para>
2079 <para
2080 >No próximo exemplo, vai ser criado um comando com um valor de resultado<indexterm
2081 ><primary
2082 >resultado</primary
2083 ></indexterm
2084 > devolvido. <screen>
2085 aprender faculdade $x {
2086   $r = 1
2087   para $i = 1 ate $x {
2088     $r = $n * $i
2089   }
2090   devolver $r
2091 }
2092 
2093 imprimir faculdade 5
2094 </screen
2095 > Neste exemplo, existe agora um comando novo chamado <userinput
2096 >faculdade</userinput
2097 >. Se o parâmetro deste comando for <userinput
2098 >5</userinput
2099 >, então o resultado é igual a <userinput
2100 >5*4*3*2*1</userinput
2101 >. Ao usar o <userinput
2102 >devolver</userinput
2103 >, o valor do <glossterm linkend="input-output"
2104 >resultado</glossterm
2105 > é indicado e a execução é devolvida.</para>
2106 <para
2107 >Os comandos poderão ter mais de uma <glossterm linkend="input-output"
2108 >entrada</glossterm
2109 >. No seguinte exemplo, é criado um comando que desenha um retângulo. <screen>
2110 aprenda caixa $X, $Y {
2111   parafrente $Y
2112   paradireita 90
2113   parafrente $X
2114   paradireita 90
2115   parafrente $Y
2116   paradireita 90
2117   parafrente $X
2118   paradireita 90
2119 }
2120 </screen
2121 > Agora, você poderá usar o <userinput
2122 >caixa 50, 100</userinput
2123 > para que a tartaruga desenhe um retângulo na área de desenho. </para>
2124   
2125 </sect1>
2126 
2127 </chapter>