Warning, /education/kturtle/po/pt/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 de &turtlescript;</title> 0004 <para 0005 >Esta é a referência para o &turtlescript; do &kturtle;. Na primeira secção deste capítulo dê uma vista de olhos em alguns aspectos da <link linkend="grammar" 0006 >gramática</link 0007 > dos programas em &turtlescript;. A segunda secção lida em exclusivo 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 secção é uma lista enorme com todos os <link linkend="commands" 0014 >comandos</link 0015 >, explicando-os um-a-um. A quarta secçã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 controlo da execução</link 0021 > na quinta secção e como criar os seus próprios comandos com o <link linkend="learn" 0022 >aprender</link 0023 >, na última secçã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; tem 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 secçã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 a seguir a 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. Podê-lo-á ajudar a dar alguns conselhos aos outros programas. No seguinte programa, irá ver os comentários a serem usados em conjunto com o comando <link linkend="print" 0056 >imprimir</link 0057 >. <screen> 0058 # este programa foi feito pelo Cies Breijs. 0059 imprimir "este texto será impresso na área de desenho" 0060 # a linha anterior não é um comentário, mas a seguinte é: 0061 # imprimir "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 > com um cinzento 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 necessitam de dados de entrada, enquanto outros geram resultados.<screen> 0081 # o 'avancar' é um comando que necessita de dados de entrada, neste caso do número 100: 0082 avancar 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 ⪚ o <userinput 0095 >go</userinput 0096 > necessitam de mais que um parâmetro. Os vários parâmetros, nesse caso, deverão ser separados pelo carácter <userinput 0097 >,</userinput 0098 > (vírgula).</para> 0099 <para 0100 >Para uma ideia geral de todos os comandos que o &kturtle; suporta, venha <link linkend="commands" 0101 >aqui</link 0102 >. Os comandos incorporados são <glossterm 0103 >realçados</glossterm 0104 > a azul-escuro</para> 0105 </sect2> 0106 0107 <sect2 id="number"> 0108 <title 0109 >Números</title> 0110 <para 0111 >O mais provável é que você já conheça alguma coisa sobre os números. A forma como estes são usados no &kturtle; não é muito diferente da língua falada ou da matemática. </para> 0112 <para 0113 >Temos os chamados 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 os números decimais, 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 carácter <userinput 0142 >,</userinput 0143 > (vírgula) é 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 > a 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 print "Olá, sou uma cadeia de caracteres." 0164 </screen 0165 > Neste exemplo, o <userinput 0166 >print</userinput 0167 > é um comando, enquanto o <userinput 0168 >"Olá, sou uma cadeia de caracteres."</userinput 0169 > é, de facto, uma cadeia de caracteres. Estas começam e terminam com o símbolo <userinput 0170 >"</userinput 0171 >; com estes 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 > a 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 vista de olhos neste excerto de &turtlescript;: <screen> 0207 $a = verdadeiro 0208 </screen 0209 > Se olhar para o <link linkend="the-inspector" 0210 >inspector</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 excerto de &turtlescript;: <screen> 0222 $resposta = 10 > 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 >, dado 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 secçã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 subtracção (<userinput 0262 >-</userinput 0263 >), a multiplicação (<userinput 0264 >*</userinput 0265 >), a divisão (<userinput 0266 >/</userinput 0267 >) e a potência (<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 >inspector</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 >imprimir 2010-12 0289 </screen 0290 ></para> 0291 <para 0292 >Agora, um exemplo com parêntesis: <screen> 0293 imprimir ( ( 20 - 5 ) * 2 / 30 ) + 1 0294 </screen 0295 > O que estiver entre parêntesis 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). Os parêntesis também poderão ser usados noutros casos.</para> 0296 <para 0297 >O &kturtle; também tem mais funcionalidades sob a forma de comandos. Dê uma vista de olhos sobre os seguintes comandos, mas tenha em mente que diz respeito a operações avançadas: <link linkend="round" 0298 >round</link 0299 >, <link linkend="random" 0300 >random</link 0301 >, <link linkend="sqrt" 0302 >sqrt</link 0303 >, <link linkend="pi" 0304 >pi</link 0305 >, <link linkend="sin" 0306 >sin</link 0307 >, <link linkend="cos" 0308 >cos</link 0309 >, <link linkend="tan" 0310 >tan</link 0311 >, <link linkend="arcsin" 0312 >arcsin</link 0313 >, <link linkend="arccos" 0314 >arccos</link 0315 >, <link linkend="arctan" 0316 >arctan</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, o <userinput 0335 ><indexterm 0336 ><primary 0337 >e</primary 0338 ></indexterm 0339 ></userinput 0340 >, <userinput 0341 ><indexterm 0342 ><primary 0343 >ou</primary 0344 ></indexterm 0345 ></userinput 0346 > e <userinput 0347 ><indexterm 0348 ><primary 0349 >nao</primary 0350 ></indexterm 0351 ></userinput 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 $nao_1 = nao verdadeiro # -> falso 0364 $nao_0 = nao falso # -> verdadeiro 0365 </screen 0366 > Se usar o <link linkend="the-inspector" 0367 >inspector</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 > a 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 seguinte com o <userinput 0401 >e</userinput 0402 >: <screen> 0403 $a = 1 0404 $b = 5 0405 se (($a < 10) e ($b == 5)) e ($a < $b) { 0406 imprimir "olá" 0407 } 0408 </screen 0409 > Neste excerto 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 < 10) ou ($n == 2) { 0421 imprimir "olá" 0422 } 0423 </screen 0424 > Neste pedaço de &turtlescript;, o lado esquerdo do <userinput 0425 >ou</userinput 0426 > é avaliado como 'verdadeiro', enquanto o direito é avaliado como 'falso'. Dado que um dos 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 vista de olhos: <screen 0436 >$n = 1 0437 se nao ($n == 3) { 0438 imprimir "olá" 0439 } senao { 0440 imprimir "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 > 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 > 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 < 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 >= 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 <= 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 secção iremos explicar todos os comandos incorporados que podem ser usados no &kturtle;. Em alternativa, usando o <link linkend="learn" 0595 >aprender</link 0596 >, poderá criar os seus próprios comandos. Os comandos incorporados ficam <glossterm 0597 >realçados</glossterm 0598 > a azul escuro.</para> 0599 0600 <sect2 id="moving-the-turtle"> 0601 <title 0602 >Mover a tartaruga</title> 0603 <para 0604 >Existem vários comandos para mover a tartaruga pelo ecrã.</para> 0605 0606 <variablelist> 0607 <anchor id="forward"/> 0608 <varlistentry 0609 > 0610 <term 0611 >forward (fw)<indexterm 0612 ><primary 0613 >forward (fw)</primary 0614 ></indexterm 0615 ></term> 0616 <listitem 0617 ><para 0618 ><screen 0619 >forward X</screen> 0620 O <userinput 0621 >forward</userinput 0622 > move a tartaruga para a frente X pixels. Quando o traço está em baixo, a tartaruga irá deixar um rasto. O <userinput 0623 >forward</userinput 0624 > pode ser abreviado para <userinput 0625 >fw</userinput 0626 ></para 0627 ></listitem> 0628 </varlistentry> 0629 </variablelist> 0630 <variablelist> 0631 <anchor id="backward"/> 0632 <varlistentry 0633 > 0634 <term 0635 >backward (bw)<indexterm 0636 ><primary 0637 >backward (bw)</primary 0638 ></indexterm 0639 ></term> 0640 <listitem 0641 ><para 0642 ><screen 0643 >backward X</screen> 0644 O <userinput 0645 >backward</userinput 0646 > move a tartaruga para trás X pixels. Quando o traço está em baixo, a tartaruga irá deixar um rasto. O <userinput 0647 >backward</userinput 0648 > pode ser abreviado para <userinput 0649 >bw</userinput 0650 >.</para 0651 ></listitem> 0652 </varlistentry> 0653 </variablelist> 0654 <variablelist> 0655 <anchor id="turnleft"/> 0656 <varlistentry 0657 > 0658 <term 0659 >turnleft (tl)<indexterm 0660 ><primary 0661 >turnleft (tl)</primary 0662 ></indexterm 0663 ></term> 0664 <listitem 0665 ><para 0666 ><screen 0667 >turnleft X</screen> 0668 O <userinput 0669 >turnleft</userinput 0670 > diz à tartaruga para se virar X graus para a esquerda. O <userinput 0671 >turnleft</userinput 0672 > pode ser abreviado para <userinput 0673 >tl</userinput 0674 >.</para 0675 ></listitem> 0676 </varlistentry> 0677 </variablelist> 0678 <variablelist> 0679 <anchor id="turnright"/> 0680 <varlistentry 0681 > 0682 <term 0683 >turnright (tr)<indexterm 0684 ><primary 0685 >turnright (tr)</primary 0686 ></indexterm 0687 ></term> 0688 <listitem 0689 ><para 0690 ><screen 0691 >turnright X</screen> 0692 O <userinput 0693 >turnright</userinput 0694 > diz à tartaruga para se virar X graus para a direita. O <userinput 0695 >turnright</userinput 0696 > pode ser abreviado para <userinput 0697 >tr</userinput 0698 >.</para 0699 ></listitem> 0700 </varlistentry> 0701 </variablelist> 0702 <variablelist> 0703 <anchor id="direction"/> 0704 <varlistentry 0705 > 0706 <term 0707 >direction (dir)<indexterm 0708 ><primary 0709 >direction (dir)</primary 0710 ></indexterm 0711 ></term> 0712 <listitem 0713 ><para 0714 ><screen 0715 >direction X</screen> 0716 O <userinput 0717 >direction</userinput 0718 > configura a direcção da tartaruga para um ângulo de X graus a contar do zero, e isto não é relativo à direcção anterior da tartaruga. O <userinput 0719 >direction</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 >getdirection<indexterm 0732 ><primary 0733 >getdirection</primary 0734 ></indexterm 0735 ></term> 0736 <listitem 0737 ><para 0738 ><screen 0739 >getdirection</screen> 0740 O <userinput 0741 >getdirection</userinput 0742 > devolve a direcção da tartaruga como um ângulo de X graus a contar do zero, onde o zero é a direcção em que a tartaruga aponta para cima.</para 0743 ></listitem> 0744 </varlistentry> 0745 </variablelist> 0746 <variablelist> 0747 <anchor id="center"/> 0748 <varlistentry 0749 > 0750 <term 0751 >center<indexterm 0752 ><primary 0753 >center</primary 0754 ></indexterm 0755 ></term> 0756 <listitem 0757 ><para 0758 ><screen 0759 >center</screen> 0760 O <userinput 0761 >center</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 >go<indexterm 0772 ><primary 0773 >go</primary 0774 ></indexterm 0775 ></term> 0776 <listitem 0777 ><para 0778 ><screen 0779 >go X,Y</screen> 0780 O <userinput 0781 >go</userinput 0782 > manda a tartaruga ir para um dado local da área de desenho. Este local está a X <glossterm linkend="pixels" 0783 >pixels</glossterm 0784 > do lado esquerdo da área de desenho e a Y <glossterm linkend="pixels" 0785 >pixels</glossterm 0786 > do topo da área.</para 0787 ></listitem> 0788 </varlistentry> 0789 </variablelist> 0790 <variablelist> 0791 <anchor id="gox"/> 0792 <varlistentry 0793 > 0794 <term 0795 >gox<indexterm 0796 ><primary 0797 >gox (gx)</primary 0798 ></indexterm 0799 ></term> 0800 <listitem 0801 ><para 0802 ><screen 0803 >gox X</screen> 0804 Ao usar o comando <userinput 0805 >gox</userinput 0806 >, a tartaruga irá mover-se X <glossterm linkend="pixels" 0807 >pixels</glossterm 0808 > a partir da esquerda da área de desenho, mantendo à mesma a sua altura. O <userinput 0809 >gox</userinput 0810 > pode ser abreviado para <userinput 0811 >gx</userinput 0812 >.</para 0813 ></listitem> 0814 </varlistentry> 0815 </variablelist> 0816 <variablelist> 0817 <anchor id="goy"/> 0818 <varlistentry 0819 > 0820 <term 0821 >goy<indexterm 0822 ><primary 0823 >goy (gy)</primary 0824 ></indexterm 0825 ></term> 0826 <listitem 0827 ><para 0828 ><screen 0829 >goy Y</screen> 0830 Ao usar o comando <userinput 0831 >goy</userinput 0832 >, a tartaruga irá mover-se Y <glossterm linkend="pixels" 0833 >pixels</glossterm 0834 > a partir do topo da área de desenho, mantendo à mesma a sua distância ao lado esquerdo da área de desenho. O <userinput 0835 >goy</userinput 0836 > pode ser abreviado para <userinput 0837 >gy</userinput 0838 >.</para 0839 ></listitem> 0840 </varlistentry> 0841 </variablelist> 0842 <note 0843 ><para 0844 >Usando os comandos <userinput 0845 >go</userinput 0846 >, <userinput 0847 >gox</userinput 0848 >, <userinput 0849 >goy</userinput 0850 > e <userinput 0851 >center</userinput 0852 >, a tartaruga não irá desenhar a linha, não interessando se a caneta está activa ou não.</para> 0853 </note> 0854 </sect2> 0855 0856 <sect2 id="locate-the-turtle"> 0857 <title 0858 >Onde está a tartaruga?</title> 0859 <para 0860 >Existem dois comandos que devolvem a posição da tartaruga no ecrã.</para> 0861 0862 <variablelist> 0863 <anchor id="getx"/> 0864 <varlistentry 0865 > 0866 <term 0867 >getx<indexterm 0868 ><primary 0869 >getx</primary 0870 ></indexterm 0871 ></term> 0872 <listitem 0873 ><para 0874 >O <userinput 0875 >getx</userinput 0876 > devolve o número de pixels da esquerda da área de desenho até à posição actual da tartaruga.</para 0877 ></listitem> 0878 </varlistentry> 0879 </variablelist> 0880 <variablelist> 0881 <anchor id="gety"/> 0882 <varlistentry 0883 > 0884 <term 0885 >gety<indexterm 0886 ><primary 0887 >gety</primary 0888 ></indexterm 0889 ></term> 0890 <listitem 0891 ><para 0892 >O <userinput 0893 >gety</userinput 0894 > devolve o número de pixels de cima da área de desenho até à posição actual da tartaruga.</para 0895 ></listitem> 0896 </varlistentry> 0897 </variablelist> 0898 </sect2> 0899 0900 <sect2 id="pen"> 0901 <title 0902 >A tartaruga tem um traço</title> 0903 <para 0904 >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 secção iremos explicar estes comandos.</para> 0905 <variablelist> 0906 <anchor id="penup"/> 0907 <varlistentry 0908 > 0909 <term 0910 >penup (pu)<indexterm 0911 ><primary 0912 >penup (pu)</primary 0913 ></indexterm 0914 ></term> 0915 <listitem 0916 ><para 0917 ><screen 0918 >penup</screen> 0919 O <userinput 0920 >penup</userinput 0921 > levanta o traço da área de desenho. Quando o traço está <quote 0922 >em cima</quote 0923 >, não é desenhada nenhuma linha à medida que a tartaruga se move. Veja também o <userinput 0924 >pendown</userinput 0925 >. O <userinput 0926 >penup</userinput 0927 > pode ser abreviado para <userinput 0928 >pu</userinput 0929 >.</para 0930 ></listitem> 0931 </varlistentry> 0932 </variablelist> 0933 <variablelist> 0934 <anchor id="pendown"/> 0935 <varlistentry 0936 > 0937 <term 0938 >pendown (pd)<indexterm 0939 ><primary 0940 >pendown (pd)</primary 0941 ></indexterm 0942 ></term> 0943 <listitem 0944 ><para 0945 ><screen 0946 >pendown</screen> 0947 O <userinput 0948 >pendown</userinput 0949 > carrega no traço para baixo na área de desenho. Quando o traço está <quote 0950 >em baixo</quote 0951 >, é desenhada uma linha à medida que a tartaruga se move. Veja também o <userinput 0952 >penup</userinput 0953 >. O <userinput 0954 >pendown</userinput 0955 > pode ser abreviado para <userinput 0956 >pd</userinput 0957 >.</para 0958 ></listitem> 0959 </varlistentry> 0960 </variablelist> 0961 <variablelist> 0962 <anchor id="setpenwidth"/> 0963 <varlistentry 0964 > 0965 <term 0966 >penwidth (pw)<indexterm 0967 ><primary 0968 >penwidth (pw)</primary 0969 ></indexterm 0970 ></term> 0971 <listitem 0972 ><para 0973 ><screen 0974 >penwidth X</screen> 0975 O <userinput 0976 >penwidth</userinput 0977 > configura a espessura do traço para X <glossterm linkend="pixels" 0978 >pixels</glossterm 0979 >. O <userinput 0980 >penwidth</userinput 0981 > pode ser abreviado para <userinput 0982 >pw</userinput 0983 >.</para 0984 ></listitem> 0985 </varlistentry> 0986 </variablelist> 0987 <variablelist> 0988 <anchor id="setfgcolor"/> 0989 <varlistentry 0990 > 0991 <term 0992 >pencolor (pc)<indexterm 0993 ><primary 0994 >pencolor (pc)</primary 0995 ></indexterm 0996 ></term> 0997 <listitem 0998 ><para 0999 ><screen 1000 >pencolor R,G,B</screen> 1001 O <userinput 1002 >pencolor</userinput 1003 > configura a cor do traço. O <userinput 1004 >pencolor</userinput 1005 > recebe uma <glossterm linkend="rgb" 1006 >combinação de RGB</glossterm 1007 > como parâmetro. O <userinput 1008 >pencolor</userinput 1009 > pode ser abreviado para <userinput 1010 >pc</userinput 1011 >.</para 1012 ></listitem> 1013 </varlistentry> 1014 </variablelist> 1015 </sect2> 1016 1017 <sect2 id="canvas"> 1018 <title 1019 >Comandos para controlar a área de desenho</title> 1020 <para 1021 >Existem vários comandos para controlar a área de desenho.</para> 1022 <variablelist> 1023 <anchor id="resizecanvas"/> 1024 <varlistentry> 1025 <term 1026 >canvassize (cs)<indexterm 1027 ><primary 1028 >canvassize (cs)</primary 1029 ></indexterm 1030 ></term> 1031 <listitem 1032 ><para 1033 ><screen 1034 >canvassize X,Y</screen> 1035 Com o comando <userinput 1036 >canvassize</userinput 1037 >, poderá definir o tamanho da área de desenho. Recebe um X e um Y como entrada, onde o o X é a nova largura da área de desenho em <glossterm linkend="pixels" 1038 >pixels</glossterm 1039 > e o Y é a nova altura da área de desenho em <glossterm linkend="pixels" 1040 >pixels</glossterm 1041 >. O <userinput 1042 >canvassize</userinput 1043 > pode ser abreviado para <userinput 1044 >cs</userinput 1045 >.</para 1046 ></listitem> 1047 </varlistentry> 1048 </variablelist> 1049 <variablelist> 1050 <anchor id="setbgcolor"/> 1051 <varlistentry 1052 > 1053 <term 1054 >canvascolor (cc)<indexterm 1055 ><primary 1056 >canvascolor (cc)</primary 1057 ></indexterm 1058 ></term> 1059 <listitem 1060 ><para 1061 ><screen 1062 >canvascolor R,G,B</screen> 1063 O <userinput 1064 >canvascolor</userinput 1065 > configura a cor do traço. O <userinput 1066 >canvascolor</userinput 1067 > recebe uma <glossterm linkend="rgb" 1068 >combinação de RGB</glossterm 1069 > como parâmetro. O <userinput 1070 >canvascolor</userinput 1071 > pode ser abreviado para <userinput 1072 >cc</userinput 1073 >.</para 1074 ></listitem> 1075 </varlistentry> 1076 </variablelist> 1077 </sect2> 1078 1079 <sect2 id="clean"> 1080 <title 1081 >Comandos para limpar</title> 1082 <para 1083 >Existem dois comandos para limpar a área de desenho, depois de você ter deixado tudo confuso.</para> 1084 <variablelist> 1085 <anchor id="clear"/> 1086 <varlistentry 1087 > 1088 <term 1089 >clear (ccl)<indexterm 1090 ><primary 1091 >clear (ccl)</primary 1092 ></indexterm 1093 ></term> 1094 <listitem 1095 ><para 1096 ><screen 1097 >clear</screen> 1098 Com o <userinput 1099 >clear</userinput 1100 >, você poderá limpar todos os desenhos da área respectiva. Tudo 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 1101 ></listitem> 1102 </varlistentry> 1103 </variablelist> 1104 <variablelist> 1105 <anchor id="reset"/> 1106 <varlistentry 1107 > 1108 <term 1109 >reset<indexterm 1110 ><primary 1111 >reset</primary 1112 ></indexterm 1113 ></term> 1114 <listitem 1115 ><para 1116 ><screen 1117 >reset</screen> 1118 O <userinput 1119 >reset</userinput 1120 > limpa tudo de forma mais abrangente que o comando <userinput 1121 >clear</userinput 1122 >. Depois de um comando <userinput 1123 >reset</userinput 1124 >, tudo fica tal e qual estava quando você iniciou o &kturtle;. A tartaruga é posicionada no meio do ecrã, a cor da área de desenho é branca e a tartaruga irá desenhar uma linha preta na área de desenho, que fica com um tamanho de 400 x 400 0 pixels.</para 1125 ></listitem> 1126 </varlistentry> 1127 </variablelist> 1128 </sect2> 1129 1130 <sect2 id="sprites"> 1131 <title 1132 >A tartaruga é uma imagem móvel</title> 1133 <para 1134 >Muitas das pessoas não sabem o que são as imagens móveis ('sprites'), daí uma breve explicação: as imagens móveis são pequenas imagens que podem percorrer o ecrã (para mais informações, veja o glossário sobre as <glossterm linkend="sprites" 1135 >imagens móveis</glossterm 1136 >). </para> 1137 <para 1138 >A seguir você irá encontrar uma apresentação completa de todos os comandos que lidam com imagens móveis.</para> 1139 <para 1140 >[A versão actual do &kturtle; não suporta ainda o uso de imagens móveis que não apenas a tartaruga. Nas versões futuras, você poderá mudar a tartaruga para outra coisa ao seu gosto]</para> 1141 <variablelist> 1142 <anchor id="spriteshow"/> 1143 <varlistentry 1144 > 1145 <term 1146 >spriteshow (ss)<indexterm 1147 ><primary 1148 >spriteshow (ss)</primary 1149 ></indexterm 1150 ></term> 1151 <listitem 1152 ><para 1153 ><screen 1154 >spriteshow</screen> 1155 O <userinput 1156 >spriteshow</userinput 1157 > torna a tartaruga visível de novo depois de ter ficado escondida. O <userinput 1158 >spriteshow</userinput 1159 > pode ser abreviado para <userinput 1160 >ss</userinput 1161 >.</para 1162 ></listitem> 1163 </varlistentry> 1164 </variablelist> 1165 <variablelist> 1166 <anchor id="spritehide"/> 1167 <varlistentry 1168 > 1169 <term 1170 >spritehide (sh)<indexterm 1171 ><primary 1172 >spritehide (sh)</primary 1173 ></indexterm 1174 ></term> 1175 <listitem 1176 ><para 1177 ><screen 1178 >spritehide</screen> 1179 O <userinput 1180 >spritehide</userinput 1181 > esconde a tartaruga. Isto pode ser usado se a tartaruga não couber no seu desenho. O <userinput 1182 >spritehide</userinput 1183 > pode ser abreviado para <userinput 1184 >sh</userinput 1185 >.</para 1186 ></listitem> 1187 </varlistentry> 1188 </variablelist> 1189 </sect2> 1190 1191 <sect2 id="writing"> 1192 <title 1193 >Será que a tartaruga escreve?</title> 1194 <para 1195 >A resposta é: <quote 1196 >sim</quote 1197 >. A tartaruga sabe escrever e pode escrever tudo o que lhe disser para escrever.</para> 1198 <variablelist> 1199 <anchor id="print"/> 1200 <varlistentry 1201 > 1202 <term 1203 >print<indexterm 1204 ><primary 1205 >print</primary 1206 ></indexterm 1207 ></term> 1208 <listitem 1209 ><para 1210 ><screen 1211 >print X</screen> 1212 O comando <userinput 1213 >print</userinput 1214 > é usado para dizer à tartaruga para escrever algo na área de desenho. O <userinput 1215 >print</userinput 1216 > recebe números e texto como parâmetros. Você poderá executar o <userinput 1217 >print</userinput 1218 > para vários parâmetros com o sinal <quote 1219 >+</quote 1220 >. Veja aqui um pequeno exemplo: <screen 1221 >$ano = 2004 1222 $autor = "Ze" 1223 print "O " + $autor + " iniciou o projecto do KTurtle em " + $ano + " e ainda continua a gostar de trabalhar nele!" 1224 </screen> 1225 </para 1226 ></listitem> 1227 </varlistentry> 1228 </variablelist> 1229 <variablelist> 1230 <anchor id="fontsize"/> 1231 <varlistentry 1232 > 1233 <term 1234 >fontsize<indexterm 1235 ><primary 1236 >fontsize</primary 1237 ></indexterm 1238 ></term> 1239 <listitem 1240 ><para 1241 ><screen 1242 >fontsize X</screen> 1243 O <userinput 1244 >fontsize</userinput 1245 > configura o tamanho da letra que é usado pelo <userinput 1246 >print</userinput 1247 >. O <userinput 1248 >fontsize</userinput 1249 > recebe um parâmetros que deverá ser um número. O tamanho é definido em <glossterm linkend="pixels" 1250 >pixels</glossterm 1251 >.</para 1252 ></listitem> 1253 </varlistentry> 1254 </variablelist> 1255 </sect2> 1256 1257 <sect2 id="math-commands"> 1258 <title 1259 >Comandos matemáticos</title> 1260 <para 1261 >Os seguintes comandos são as instruções matemáticas mais avançadas do &kturtle;.</para> 1262 <variablelist> 1263 <anchor id="round"/> 1264 <varlistentry> 1265 <term 1266 >round<indexterm 1267 ><primary 1268 >round</primary 1269 ></indexterm 1270 ></term> 1271 <listitem 1272 ><para 1273 ><screen 1274 >round(x)</screen> 1275 O <userinput 1276 >round</userinput 1277 > arredonda o número indicado ao inteiro mais próximo. <screen> 1278 imprimir round(10.8) 1279 avancar 20 1280 imprimir round(10.3) 1281 avancar 20 1282 </screen 1283 > Com este código, a tartaruga iria apresentar os números 11 e 10.</para 1284 ></listitem> 1285 </varlistentry> 1286 </variablelist> 1287 <variablelist> 1288 <anchor id="random"/> 1289 <varlistentry 1290 > 1291 <term 1292 >random (rnd)<indexterm 1293 ><primary 1294 >random (rnd)</primary 1295 ></indexterm 1296 ></term> 1297 <listitem 1298 ><para 1299 ><screen 1300 >random X,Y</screen> 1301 O <userinput 1302 >random</userinput 1303 > é um comando que recebe parâmetros e devolve resultados. Como parâmetros são necessários dois números, em que 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> 1304 repeat 500 { 1305 $x = random 1,20 1306 forward $x 1307 turnleft 10 - $x 1308 } 1309 </screen 1310 > Com o comando <userinput 1311 >random</userinput 1312 >, você poderá adicionar um pouco de confusão ao seu programa.</para 1313 ></listitem> 1314 </varlistentry> 1315 </variablelist> 1316 <variablelist> 1317 <anchor id="mod"/> 1318 <varlistentry 1319 > 1320 <term 1321 >mod<indexterm 1322 ><primary 1323 >mod</primary 1324 ></indexterm 1325 ></term> 1326 <listitem 1327 ><para 1328 ><screen 1329 >mod X,Y</screen> 1330 O comando <userinput 1331 >mod</userinput 1332 > devolve o resto da divisão do primeiro número pelo segundo.</para 1333 ></listitem> 1334 </varlistentry> 1335 </variablelist> 1336 <variablelist> 1337 <anchor id="sqrt"/> 1338 <varlistentry 1339 > 1340 <term 1341 >sqrt<indexterm 1342 ><primary 1343 >sqrt</primary 1344 ></indexterm 1345 ></term> 1346 <listitem 1347 ><para 1348 ><screen 1349 >sqrt X</screen> 1350 O comando <userinput 1351 >sqrt</userinput 1352 > é usado para descobrir a raiz quadrada de um número X.</para 1353 ></listitem> 1354 </varlistentry> 1355 </variablelist> 1356 <!-- 1357 <variablelist> 1358 <anchor id="exp"/> 1359 <varlistentry 1360 > 1361 <term 1362 >exp<indexterm 1363 ><primary 1364 >exp</primary 1365 ></indexterm 1366 ></term> 1367 <listitem 1368 ><para 1369 ><screen 1370 >sqrt X</screen> 1371 </para 1372 ></listitem> 1373 </varlistentry> 1374 </variablelist> 1375 --> 1376 <variablelist> 1377 <anchor id="pi"/> 1378 <varlistentry 1379 > 1380 <term 1381 >pi<indexterm 1382 ><primary 1383 >pi</primary 1384 ></indexterm 1385 ></term> 1386 <listitem 1387 ><para 1388 ><screen 1389 >pi</screen> 1390 Este comando devolve a constante Pi, <userinput 1391 >3,14159</userinput 1392 >.</para 1393 ></listitem> 1394 </varlistentry> 1395 </variablelist> 1396 <variablelist> 1397 <anchor id="sin"/> 1398 <anchor id="cos"/> 1399 <anchor id="tan"/> 1400 <varlistentry> 1401 <term 1402 >sin<indexterm 1403 ><primary 1404 >sin</primary 1405 ></indexterm 1406 >, cos<indexterm 1407 ><primary 1408 >cos</primary 1409 ></indexterm 1410 >, tan<indexterm 1411 ><primary 1412 >tan</primary 1413 ></indexterm 1414 ></term> 1415 <listitem 1416 ><para> 1417 <screen 1418 >sin X 1419 cos X 1420 tan X 1421 </screen> 1422 Estes três comandos representam as conhecidas funções trigonométricas <userinput 1423 >sin</userinput 1424 > (seno), <userinput 1425 >cos</userinput 1426 > (coseno) e <userinput 1427 >tan</userinput 1428 > (tangente). O argumento de entrada destes comandos, o X, é um <link linkend="number" 1429 >número</link 1430 >.</para 1431 ></listitem> 1432 </varlistentry> 1433 </variablelist> 1434 <variablelist> 1435 <anchor id="arcsin"/> 1436 <anchor id="arccos"/> 1437 <anchor id="arctan"/> 1438 <varlistentry> 1439 <term 1440 >arcsin<indexterm 1441 ><primary 1442 >arcsin</primary 1443 ></indexterm 1444 >, arccos<indexterm 1445 ><primary 1446 >arccos</primary 1447 ></indexterm 1448 >, arctan<indexterm 1449 ><primary 1450 >arctan</primary 1451 ></indexterm 1452 ></term> 1453 <listitem 1454 ><para> 1455 <screen 1456 >arcsin X 1457 arccos X 1458 arctan X 1459 </screen> 1460 Estes comandos são as funções inversas do <link linkend="sin" 1461 >sin</link 1462 >, <link linkend="cos" 1463 >cos</link 1464 > e <link linkend="tan" 1465 >tan</link 1466 >. O argumento de entrada destes comandos, o X, é um <link linkend="number" 1467 >número</link 1468 >.</para 1469 ></listitem> 1470 </varlistentry> 1471 </variablelist> 1472 </sect2> 1473 1474 <sect2 id="dialogs"> 1475 <title 1476 >Entrada de dados e reacção através de janelas</title> 1477 <para 1478 >Uma janela poderá pedir alguma alguma reacção em especial ou a introdução de determinados dados. O &kturtle; tem dois comandos para janelas, nomeadamente o <userinput 1479 >message</userinput 1480 > e o <userinput 1481 >ask</userinput 1482 ></para> 1483 <variablelist> 1484 <anchor id="message"/> 1485 <varlistentry 1486 > 1487 <term 1488 >message<indexterm 1489 ><primary 1490 >message</primary 1491 ></indexterm 1492 ></term> 1493 <listitem 1494 ><para 1495 ><screen 1496 >message X</screen> 1497 O comando <userinput 1498 >message</userinput 1499 > recebe uma <link linkend="string" 1500 >cadeia de caracteres</link 1501 > à entrada. Mostra então uma janela que contém o texto da <link linkend="string" 1502 >cadeia de caracteres</link 1503 >. <screen 1504 >mensagem "O Ze iniciou o projecto do KTurtle em 2003 e ainda continua a gostar de trabalhar nele!" 1505 </screen> 1506 </para 1507 ></listitem> 1508 </varlistentry> 1509 </variablelist> 1510 <variablelist> 1511 <anchor id="ask"/> 1512 <varlistentry 1513 > 1514 <term 1515 >ask<indexterm 1516 ><primary 1517 >ask</primary 1518 ></indexterm 1519 ></term> 1520 <listitem 1521 ><para 1522 ><screen 1523 >ask X</screen> 1524 O <userinput 1525 >ask</userinput 1526 > recebe uma <link linkend="string" 1527 >cadeia de caracteres</link 1528 > à entrada. Mostra uma janela que contém o texto da cadeia de caracteres, tal como acontece no <link linkend="message" 1529 >message</link 1530 >. Contudo, para além disso, também mostra um campo de texto na janela. Através deste campo, o utilizador poderá introduzir um <link linkend="number" 1531 >número</link 1532 > ou uma <link linkend="string" 1533 >cadeia de caracteres</link 1534 > que poderá ser guardada numa <link linkend="assignment-of-variables" 1535 >variável</link 1536 > ou passado como argumento a um <link linkend="commands" 1537 >comando</link 1538 >. Por exemplo <screen> 1539 $entrada = perguntar "Que idade tem?" 1540 $saida = 2003 - $entrada 1541 imprimir "Em 2003, você tinha " + $saida + " anos a dada altura." 1542 </screen 1543 > Quando um utilizador cancelar a janela ou não introduzir nada de todo, a <link linkend="assignment-of-variables" 1544 >variável</link 1545 > fica vazia.</para 1546 ></listitem> 1547 </varlistentry> 1548 </variablelist> 1549 </sect2> 1550 1551 </sect1> 1552 1553 1554 1555 <sect1 id="assignment-of-variables"> 1556 <title 1557 >Atribuição de variáveis</title> 1558 <para 1559 >Vejamos primeiro as variáveis, e depois iremos ver como atribuir valores a essas variáveis. </para> 1560 1561 <para 1562 >As variáveis são palavras que começam por um <quote 1563 >$</quote 1564 >; no <link linkend="the-editor" 1565 >editor</link 1566 >, são <glossterm 1567 >realçadas</glossterm 1568 > a púrpura.</para> 1569 1570 <para 1571 >As variáveis poderão conter qualquer <link linkend="number" 1572 >número</link 1573 >, <link linkend="string" 1574 >texto</link 1575 > ou <link linkend="boolean-value" 1576 >valor booleano (verdadeiro/falso)</link 1577 >. Ao usar a atribuição <userinput 1578 >=</userinput 1579 >, 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> 1580 1581 <para 1582 >Poderá usar as variáveis, uma vez atribuídas, como se fossem o seu próprio conteúdo. Por exemplo, no seguinte excerto de &turtlescript;: <screen> 1583 $x = 10 1584 $x = $x / 3 1585 imprimir $x 1586 </screen 1587 > Primeiro, é atribuído à variável <userinput 1588 >$x</userinput 1589 > o valor <userinput 1590 >10</userinput 1591 >. Depois, o <userinput 1592 >$x</userinput 1593 > terá como novo valor o seu próprio valor dividido por <userinput 1594 >3</userinput 1595 > — isto significa na prática que o <userinput 1596 >$x</userinput 1597 > terá atribuído o valor do produto <userinput 1598 >10 / 3</userinput 1599 >. Finalmente, é impresso o valor do <userinput 1600 >$x</userinput 1601 >. Nas linhas 2 e 3, irá ver que o <userinput 1602 >$x</userinput 1603 > é usado como se fosse o seu próprio conteúdo.</para> 1604 1605 <para 1606 >As variáveis têm de estar atribuídas para poderem ser usadas. Por exemplo, um: <screen> 1607 imprimir $N 1608 </screen 1609 > Isto não irá imprimir nada e irá obter uma mensagem de erro.</para> 1610 1611 <para 1612 >Considere o pequeno excerto de código em &turtlescript;: <screen> 1613 $a = 2004 1614 $b = 25 1615 1616 # o próximo comando imprime "2029" 1617 imprimir $a + $b 1618 recuar 30 1619 # o próximo comando imprime "2004 mais 25 é igual a 2029" 1620 imprimir $a + " mais " + $b + " é igual a " + ($a + $b) 1621 recuar 30 1622 </screen 1623 > Nas duas primeiras linhas, as variáveis <userinput 1624 >a</userinput 1625 > e <userinput 1626 >b</userinput 1627 > são configuradas como sendo iguais a 2004 e 25. Depois nos dois comandos <userinput 1628 >imprimir</userinput 1629 > existe um comando <userinput 1630 >recuar 30</userinput 1631 > no meio. Os comentários antes dos comando <userinput 1632 >imprimir</userinput 1633 > explicam o que está a fazer. 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" 1634 >operadores</link 1635 > ou fornecendo-os como entradas na invocação dos <link linkend="commands" 1636 >comandos</link 1637 >.</para> 1638 1639 <para 1640 >Mais um exemplo: <screen> 1641 $nome = perguntar "Como te chamas?" 1642 imprimir "Olá " + $nome + "! Boa sorte a aprender a arte da programação..." 1643 </screen 1644 > É bastante simples. Mais uma vez, poderá ver que a variável <userinput 1645 >$nome</userinput 1646 >, é tratada apenas como texto.</para> 1647 1648 <para 1649 >Ao usar as variáveis, o <link linkend="the-inspector" 1650 >inspector</link 1651 > torna-se bastante útil. Mostra-lhe o conteúdo de todas as variáveis que estão a ser usadas de momento.</para> 1652 </sect1> 1653 1654 1655 1656 <sect1 id="controlling-execution"> 1657 <title 1658 >Controlar a execução</title> 1659 <para 1660 >Os controladores de execução permitem-lhe — como o nome deles indica — controlar a execução.</para> 1661 <para 1662 >Os comandos de controlo da execução ficam <glossterm 1663 >realçados</glossterm 1664 > a verde escuro e a negrito. Os parêntesis rectos, que são mais usados em conjunto com os controladores de execução, ficam <glossterm 1665 >realçados</glossterm 1666 > a preto e em negrito.</para> 1667 1668 <sect2 id="wait"> 1669 <title 1670 >Fazer a tartaruga esperar</title> 1671 <para 1672 >Se já tentou programar um pouco no &kturtle;, você já poderá ter reparado que a tartaruga pode ser bastante rápida a desenhar. Este comando faz a tartaruga andar um pouco mais devagar.</para> 1673 <variablelist> 1674 <varlistentry> 1675 <term 1676 >wait<indexterm 1677 ><primary 1678 >wait</primary 1679 ></indexterm 1680 ></term> 1681 <listitem 1682 ><para 1683 ><screen 1684 >wait X</screen> 1685 O <userinput 1686 >wait</userinput 1687 > faz a tartaruga esperar X segundos. <screen> 1688 repeat 36 [ 1689 forward 5 1690 turnright 10 1691 wait 0.5 1692 ] 1693 </screen 1694 > 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 1695 ></listitem> 1696 </varlistentry> 1697 </variablelist> 1698 </sect2> 1699 1700 <sect2 id="if"> 1701 <title 1702 >Executar o "if"</title> 1703 <variablelist> 1704 <varlistentry> 1705 <term 1706 >if<indexterm 1707 ><primary 1708 >if</primary 1709 ></indexterm 1710 ></term> 1711 <listitem 1712 ><para 1713 ><screen 1714 >se <link linkend="boolean-value" 1715 >booleano</link 1716 > [ ... ]</screen> 1717 O código que é colocado entre os parêntesis só será executado <userinput 1718 >se</userinput 1719 > o <link linkend="boolean-value" 1720 >valor booleano</link 1721 > for <quote 1722 >verdadeiro</quote 1723 >. <screen> 1724 $x = 6 1725 se $x > 5 [ 1726 imprimir "O x é maior que cinco!" 1727 ] 1728 </screen 1729 > Na primeira linha, o <userinput 1730 >$x</userinput 1731 > é inicializado a 6. Na segunda linha, a <link linkend="comparing-operators" 1732 >operador de comparação</link 1733 > é usado para avaliar <userinput 1734 >x > 5</userinput 1735 >. Dado que a resposta a esta pergunta é <quote 1736 >verdadeira</quote 1737 >, o controlador de execução <userinput 1738 >se</userinput 1739 > irá permitir que o código entre chavetas seja executado.</para 1740 ></listitem> 1741 </varlistentry> 1742 </variablelist> 1743 </sect2> 1744 1745 <sect2 id="else"> 1746 <title 1747 >Se não, por outras palavras: "else"</title> 1748 <variablelist> 1749 <varlistentry> 1750 <term 1751 >else<indexterm 1752 ><primary 1753 >else</primary 1754 ></indexterm 1755 ></term> 1756 <listitem 1757 ><para 1758 ><screen 1759 >se <link linkend="boolean-value" 1760 >booleano</link 1761 > { ... } senao { ... }</screen> 1762 O <userinput 1763 >senao</userinput 1764 > pode ser usado para além do controlador de execução <link linkend="if" 1765 ><userinput 1766 >se</userinput 1767 ></link 1768 >. O código entre chavetas a seguir ao <userinput 1769 >senao</userinput 1770 > só é executado se o <link linkend="boolean-value" 1771 >valor booleano</link 1772 > for <quote 1773 >falso</quote 1774 >. <screen> 1775 reset 1776 $x = 4 1777 se $x > 5 { 1778 imprimir "O x é maior que cinco!" 1779 } senao { 1780 imprimir "O x é menor que seis!" 1781 } 1782 </screen 1783 > O <link linkend="comparing-operators" 1784 >operador de comparação</link 1785 > testa a expressão <userinput 1786 >x > 5</userinput 1787 >. Dado que o <userinput 1788 >x</userinput 1789 > fica igual a 4 na primeira linha, a resposta à pergunta é <quote 1790 >falso</quote 1791 >. Isto significa que o código entre chavetas a seguir ao <userinput 1792 >senao</userinput 1793 > é executado.</para 1794 ></listitem> 1795 </varlistentry> 1796 </variablelist> 1797 </sect2> 1798 1799 <sect2 id="while"> 1800 <title 1801 >O ciclo "while"</title> 1802 <variablelist> 1803 <varlistentry> 1804 <term 1805 >while<indexterm 1806 ><primary 1807 >while</primary 1808 ></indexterm 1809 ></term> 1810 <listitem 1811 ><para 1812 ><screen 1813 >enquanto <link linkend="boolean-value" 1814 >booleano</link 1815 > { ... }</screen> 1816 O controlador de execução <userinput 1817 >while</userinput 1818 > é um pouco como o <link linkend="if" 1819 ><userinput 1820 >se</userinput 1821 ></link 1822 >. A diferença é que o <userinput 1823 >while</userinput 1824 > continua a repetir o código entre parêntesis até que a resposta à <link linkend="boolean-value" 1825 >valor booleano</link 1826 > seja <quote 1827 >falso</quote 1828 >. <screen> 1829 $x = 1 1830 enquanto $x < 5 { 1831 avancar 10 1832 esperar 1 1833 $x = $x + 1 1834 } 1835 </screen 1836 > Na primeira linha, o <userinput 1837 >$x</userinput 1838 > fica igual a 1. Na segunda, a expressão <userinput 1839 >x < 5</userinput 1840 > é avaliada. Dado que a resposta a esta pergunta é <quote 1841 >verdadeiro</quote 1842 >, o controlador de execução <userinput 1843 >enquanto</userinput 1844 > começa a execução do código entre chavetas até que a condição <userinput 1845 >$x < 5</userinput 1846 > seja <quote 1847 >falso</quote 1848 >. Neste caso, o código entre parêntesis será executado 4 vezes, dado que, de cada vez que a quinta linha é executada, o <userinput 1849 >$x</userinput 1850 > fica um número acima.</para 1851 ></listitem> 1852 </varlistentry> 1853 </variablelist> 1854 </sect2> 1855 1856 <sect2 id="repeat"> 1857 <title 1858 >O ciclo "repeat"</title> 1859 <variablelist> 1860 <varlistentry> 1861 <term 1862 >repeat<indexterm 1863 ><primary 1864 >repeat</primary 1865 ></indexterm 1866 ></term> 1867 <listitem 1868 ><para 1869 ><screen 1870 >repetir <link linkend="number" 1871 >número</link 1872 > { ... }</screen> 1873 O controlador de execução <userinput 1874 >repetir</userinput 1875 > funciona um pouco como o <link linkend="while" 1876 ><userinput 1877 >enquanto</userinput 1878 ></link 1879 >. A diferença é que o <userinput 1880 >repetir</userinput 1881 > continua a repetir (em ciclo) o código entre parêntesis para o número indicado.</para 1882 ></listitem> 1883 </varlistentry> 1884 </variablelist> 1885 </sect2> 1886 1887 <sect2 id="for"> 1888 <title 1889 >O ciclo "for", um ciclo de contagem</title> 1890 <variablelist> 1891 <varlistentry> 1892 <term 1893 >for<indexterm 1894 ><primary 1895 >for</primary 1896 ></indexterm 1897 ><indexterm 1898 ><primary 1899 >to</primary 1900 ></indexterm 1901 ><indexterm 1902 ><primary 1903 >step</primary 1904 ></indexterm 1905 ></term> 1906 <listitem 1907 ><para 1908 ><screen 1909 >para <link linkend="assignment-of-variables" 1910 >variável</link 1911 > = <link linkend="number" 1912 >número</link 1913 > até <link linkend="number" 1914 >número</link 1915 > { ... }</screen> 1916 O ciclo <userinput 1917 >para</userinput 1918 > é um <quote 1919 >ciclo de contagem</quote 1920 >, &ie;, faz de contador para si. 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> 1921 para $x = 1 ate 10 { 1922 imprimir $x * 7 1923 avancar 15 1924 } 1925 </screen 1926 > De cada vez que o código entre chavetas é executado, o <userinput 1927 >$x</userinput 1928 > é incrementado de uma unidade, até que o valor do <userinput 1929 >x</userinput 1930 > chegue a 10. O código entre chavetas imprime o valor de <userinput 1931 >$x</userinput 1932 > multiplicado por 7. Depois de este programa terminar a sua execução, você irá ver a tabuada dos 7 na área de desenho. </para> 1933 <para 1934 >O tamanho por omissão do passo de um ciclo é 1; poderá usar outro valor qualquer com <screen 1935 >para <link linkend="assignment-of-variables" 1936 >variável</link 1937 > = <link linkend="number" 1938 >número</link 1939 > até <link linkend="number" 1940 >number</link 1941 > passo <link linkend="number" 1942 >número</link 1943 > { ... }</screen 1944 ></para 1945 ></listitem> 1946 </varlistentry> 1947 </variablelist> 1948 </sect2> 1949 1950 <sect2 id="break"> 1951 <title 1952 >Sair de um ciclo</title> 1953 <variablelist> 1954 <varlistentry> 1955 <term 1956 >break<indexterm 1957 ><primary 1958 >break</primary 1959 ></indexterm 1960 ></term> 1961 <listitem 1962 ><para 1963 ><screen 1964 >break</screen> 1965 Termina imediatamente o ciclo actual e transfere o controlo para a instrução imediatamente a seguir a esse ciclo.</para 1966 ></listitem> 1967 </varlistentry> 1968 </variablelist> 1969 </sect2> 1970 1971 <sect2 id="exit"> 1972 <title 1973 >Pára a a execução do seu programa</title> 1974 <variablelist> 1975 <varlistentry> 1976 <term 1977 >exit<indexterm 1978 ><primary 1979 >exit</primary 1980 ></indexterm 1981 ></term> 1982 <listitem 1983 ><para 1984 ><screen 1985 >exit</screen> 1986 Termina a execução do seu programa.</para 1987 ></listitem> 1988 </varlistentry> 1989 </variablelist> 1990 </sect2> 1991 1992 <sect2 id="assert"> 1993 <title 1994 >Verificar os testes durante a execução</title> 1995 <variablelist> 1996 <varlistentry> 1997 <term 1998 >assert<indexterm 1999 ><primary 2000 >assert</primary 2001 ></indexterm 2002 ></term> 2003 <listitem 2004 ><para 2005 ><screen 2006 >assert <link linkend="boolean-value" 2007 >booleano</link 2008 ></screen> 2009 Pode ser usado para confirmar a correcção do programa ou dos seus parâmetros. <screen 2010 >$valor = ask "Qual é a sua data de nascimento?" 2011 # o ano tem de ser positivo 2012 assert $valor 2013 > 0 2014 </screen 2015 ></para 2016 ></listitem> 2017 </varlistentry> 2018 </variablelist> 2019 </sect2> 2020 </sect1> 2021 2022 2023 <sect1 id="learn"> 2024 2025 <title 2026 >Crie os seus próprios comandos com o <quote 2027 >learn</quote 2028 ></title> 2029 <para 2030 >O <userinput 2031 >aprender</userinput 2032 ><indexterm 2033 ><primary 2034 >aprender</primary 2035 ></indexterm 2036 > é um comando muito especial, porque é usado para criar os seus próprios comandos. O comando que criar poderá receber <glossterm linkend="input-output" 2037 >parâmetros</glossterm 2038 > e devolver <glossterm linkend="input-output" 2039 >resultados</glossterm 2040 >. Vamos ver como é que é criado um novo comando. <screen> 2041 aprender circunferencia $x { 2042 repetir 36 { 2043 avancar $x 2044 esquerda 10 2045 } 2046 } 2047 </screen 2048 > O novo comando chama-se <userinput 2049 >circunferencia</userinput 2050 >. O <userinput 2051 >circunferencia</userinput 2052 > recebe um <glossterm linkend="input-output" 2053 >parâmetro</glossterm 2054 >, um número, para definir o tamanho da circunferência. O <userinput 2055 >circunferencia</userinput 2056 > não devolve nenhum <glossterm linkend="input-output" 2057 >resultado</glossterm 2058 >. O comando <userinput 2059 >circunferencia</userinput 2060 > pode agora ser usado como um comando normal. Veja este exemplo: <screen 2061 >learn circunferencia $X { 2062 repeat 36 { 2063 forward $X 2064 turnleft 10 2065 } 2066 } 2067 2068 go 30,30 2069 circunferencia 20 2070 2071 go 40,40 2072 circunferencia 50 2073 </screen> 2074 </para> 2075 <para 2076 >No próximo exemplo, vai ser criado um comando <indexterm 2077 ><primary 2078 >devolver</primary 2079 ></indexterm 2080 > com um valor de resultado devolvido. <screen> 2081 aprender faculdade $x { 2082 $r = 1 2083 para $i = 1 ate $x { 2084 $r = $n * $i 2085 } 2086 devolver $r 2087 } 2088 2089 imprimir faculdade 5 2090 </screen 2091 > Neste exemplo, existe agora um comando novo chamado <userinput 2092 >faculdade</userinput 2093 >. Se o parâmetro deste comando for <userinput 2094 >5</userinput 2095 >, então o resultado é igual a <userinput 2096 >5*4*3*2*1</userinput 2097 >. Ao usar o <userinput 2098 >devolver</userinput 2099 >, o valor do <glossterm linkend="input-output" 2100 >resultado</glossterm 2101 > é indicado e a execução é devolvida.</para> 2102 <para 2103 >Os comandos poderão ter mais de uma <glossterm linkend="input-output" 2104 >entrada</glossterm 2105 >. No exemplo seguinte, é criado um comando que desenha um rectângulo. <screen> 2106 learn caixa $x, $y { 2107 avancar $y 2108 direita 90 2109 avancar $x 2110 direita 90 2111 avancar $y 2112 direita 90 2113 avancar $x 2114 direita 90 2115 } 2116 </screen 2117 > Agora, poderá usar o <userinput 2118 >caixa 50, 100</userinput 2119 > para que a tartaruga desenhe um rectângulo na área de desenho. </para> 2120 2121 </sect1> 2122 2123 </chapter>