diff options
Diffstat (limited to 'tde-i18n-pt/docs/tdeedu/kturtle/programming-reference.docbook')
-rw-r--r-- | tde-i18n-pt/docs/tdeedu/kturtle/programming-reference.docbook | 1724 |
1 files changed, 1724 insertions, 0 deletions
diff --git a/tde-i18n-pt/docs/tdeedu/kturtle/programming-reference.docbook b/tde-i18n-pt/docs/tdeedu/kturtle/programming-reference.docbook new file mode 100644 index 00000000000..a075038a995 --- /dev/null +++ b/tde-i18n-pt/docs/tdeedu/kturtle/programming-reference.docbook @@ -0,0 +1,1724 @@ +<!--Dear translator: please NEVER translate the id or anything inside the tags as they are needed in english by the application + Thanks a lot in advance.--> +<chapter id="reference"> +<title +>Referência de Programação em &logo; do &kturtle;</title> +<para +>Esta é a referência para o &logo; do &kturtle;. Neste capítulo iremos tocar brevemente em todos os <link linkend="different-instructions" +>tipos de instruções diferentes</link +>. Depois, serão explicados os <link linkend="commands" +>comandos</link +>, um por um. De seguida, serão explicados os <link linkend="containers" +>contentores</link +>, a <link linkend="math" +>matemática</link +>, as <link linkend="questions" +>questões</link +> e os <link linkend="controlling-execution" +>controladores de execução</link +>. Por último, ser-lhe-á mostrado como criar os seus próprios comandos com o <link linkend="learn" +>learn</link +>.</para> + +<sect1 id="different-instructions"> +<title +>Tipos Diferentes de Instruções</title> +<para +>Como em qualquer linguagem, o LOGO tem diferentes tipos de palavras e símbolos. Aqui, será explicada a diferença entre os vários tipos.</para> + +<sect2 id="command"> +<title +>Comandos</title> +<para +>Ao usar os comandos, você diz à tartaruga ou ao &kturtle; para fazer algo. Alguns comandos precisam de dados introduzidos, enquanto outros trazem resultados. <screen +># o 'forward' é um comando que necessita de dados de entrada, neste caso o número 100: +forward 100 +</screen> +</para> +<para +>Para uma ideia geral de todos os comandos que o &kturtle; suporta, venha <link linkend="commands" +>aqui</link +>.</para> +</sect2> + +<sect2 id="number"> +<title +>Números</title> +<para +>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> +<para +>Temos então os números conhecidos por naturais: <userinput +>0</userinput +>, <userinput +>1</userinput +>, <userinput +>2</userinput +>, <userinput +>3</userinput +>, <userinput +>4</userinput +>, <userinput +>5</userinput +>, etc. Os números negativos: <userinput +>-1</userinput +>, <userinput +>-2</userinput +>, <userinput +>-3</userinput +>, etc. Finalmente, os números decimais ou fraccionários, como por exemplo: <userinput +>0.1</userinput +>, <userinput +>3.14</userinput +>, <userinput +>33.3333</userinput +>, <userinput +>-5.05</userinput +>, <userinput +>-1.0</userinput +>. </para> +<para +>Os números podem ser usados em <link linkend="math" +>cálculos matemáticos</link +> e <link linkend="questions" +>perguntas</link +>. Também podem ser colocados em <link linkend="containers" +>contentores</link +>.</para> +<para +>Os números ficam <glossterm +>realçados</glossterm +> a azul no <link linkend="the-code-editor" +>editor de código</link +>.</para> +</sect2> + +<sect2 id="string"> +<title +>Cadeias de caracteres</title> +<para +>Primeiro um exemplo: <screen> +print "Olá, sou uma cadeia de caracteres." +</screen +> Neste exemplo, o <userinput +>print</userinput +> é um comando, enquanto o <userinput +>"Olá, sou uma cadeia de caracteres."</userinput +> é, de facto, uma cadeia de caracteres. Estas começam e terminam com o símbolo <userinput +>"</userinput +>; com estes símbolos, o &kturtle; sabe que é uma cadeia de caracteres.</para> +<para +>As cadeias de caracteres podem ser colocadas em <link linkend="containers" +>contentores</link +>. Porém, não podem ser usadas em <link linkend="math" +>cálculos matemáticos</link +> nem em <link linkend="questions" +>questões</link +>.</para> +<para +>As cadeias de caracteres ficam <glossterm +>realçadas</glossterm +> a vermelho escura no <link linkend="the-code-editor" +>editor de código</link +>.</para> +</sect2> + + +<sect2 id="name"> +<title +>Nomes</title> +<para +>Ao usar a linguagem de programação &logo;, pode criar coisas novas. Se criar um programa irá necessitar normalmente de <link linkend="containers" +>contentores</link +> e, em alguns casos, do <link linkend="learn" +>learn</link +> para criar novos comandos. Ao criar um <link linkend="containers" +>contentor</link +> ou um novo comando com o <link linkend="learn" +>learn</link +>, terá de indicar um nome.</para> +<para +>Poderá escolher qualquer nome, desde que este não tenha já algum significado. Por exemplo, não poderá chamar a um contentor <link linkend="forward" +>forward</link +>, dado que esse nome já é usado para um comando e, como tal, já tem um significado.<screen> +# Aqui o forward é usado como contentor, mas já tem um significado +# pelo que irá produzir um erro: +forward = 20 + +# isto funciona: +forward 20 +</screen +> Os nomes só poderão conter letras, números e sublinhados (_). De qualquer forma, têm de começar por uma letra. </para> +<para +>Por favor, leia a documentação sobre os <link linkend="containers" +>contentores</link +> e o comando <link linkend="learn" +>learn</link +> para uma melhor explicação e mais exemplos. </para> +</sect2> + +<sect2 id="assignment"> +<title +>Atribuições</title> +<para +>As atribuições são feitas com o símbolo <userinput +>=</userinput +>. Nas linguagens de programação é melhor ler o <userinput +>=</userinput +> simples não como um 'é igual a' mas sim como um 'fica igual a'. O termo 'é igual a' é mais apropriado para o <userinput +>==</userinput +>, que é uma <link linkend="questions" +>pergunta</link +>.</para> +<para +>As atribuições são usadas normalmente por duas razões, (1) para adicionar conteúdo aos <link linkend="containers" +>contentores</link +> e (2) para modificar o conteúdo de um contentor. Por exemplo: <screen +>x = 10 +# o contentor 'x' contém agora o número 10 +W = "A minha idade é: " +# o contentor W contém agora o texto "A minha idade: " +# isto imprime o conteúdo dos contentores 'W' e 'x' na área de desenho +print W + x +</screen> +</para> +<para +>Para mais exemplos, veja a secção que explica os <link linkend="containers" +>contentores</link +>.</para> +</sect2> + +<sect2 id="math-symbols"> +<title +>Símbolos Matemáticos</title> +<para +>O &kturtle; suporta todos os símbolos matemáticos básicos: a adição (<userinput +>+</userinput +>), a subtracção (<userinput +>-</userinput +>), a multiplicação (<userinput +>*</userinput +>), a divisão (<userinput +>/</userinput +>) e os parêntesis <userinput +>(</userinput +> e <userinput +>)</userinput +>.</para> +<para +>Para uma explicação completa e mais exemplos, veja a secção de <link linkend="math" +>matemática</link +>.</para> +</sect2> + +<sect2 id="question"> +<title +>Perguntas</title> +<para +>Podem ser feitas algumas perguntas simples, onde nesse caso a resposta será 'true' (verdadeira) ou 'false' (falsa).</para> +<para +>A utilização das perguntas é explicada de forma extensa na secção de <link linkend="questions" +>perguntas</link +>.</para> +</sect2> + +<sect2 id="questions-glue"> +<title +>Palavras de Colagem de Perguntas</title> +<para +>As perguntas podem ser coladas em conjunto com o que se denomina por 'cola das perguntas'. As palavras de colagem são o <userinput +>and</userinput +> (e), o <userinput +>or</userinput +> (ou) e uma palavra especial: a <userinput +>not</userinput +> (não).</para> +<para +>A utilização da colagem de perguntas é explicada na secção de <link linkend="question-glue" +>Colagem de Perguntas</link +>.</para> +</sect2> + + +<sect2 id="comment"> +<title +>Comentários</title> +<para +>Os comentários são linhas que começam por um <userinput +>#</userinput +>. Por exemplo: <screen> +# isto é um comentário! +print "isto não é um comentário" +# a linha anterior não é um comentário, mas a próxima é: +# print "isto não é um comentário" +</screen +> Nas linhas comentadas, poderão ser adicionadas notas ao código, para nós ou para outra pessoa ler. Os comentários são usados para: (1) adicionar uma pequena descrição ao programa, (2) para explicar como é que funciona um determinado excerto de código se este for ligeiramente complicado e (3) para 'desactivar' linhas de código que deverão ser (temporariamente) ignoradas (veja a última linha do exemplo).</para> +<para +>As linhas comentadas ficam <glossterm +>realçadas</glossterm +> com um amarelo escuro no <link linkend="the-code-editor" +>editor de código</link +>.</para> +</sect2> + +</sect1> + + +<sect1 id="commands"> +<title +>Comandos</title> +<para +>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 que podem ser usados no &kturtle;. Repare que todos os comandos incorporados ficam <glossterm +>realçados</glossterm +> a verde escuro no <link linkend="the-code-editor" +>editor de código</link +>, para que possa ajudar a distingui-los.</para> + +<sect2 id="moving-the-turtle"> +<title +>Mover a tartaruga</title> +<para +>Existem vários comandos para mover a tartaruga pelo ecrã.</para> + +<sect3 id="forward"> + <title +>forward (fw)</title> + <variablelist> + <varlistentry +> + <term +>forward</term> + <listitem +><para +><screen +>forward X</screen> +O <userinput +>forward</userinput +> move a tartaruga para a frente X pixels. Quando o traço está em baixo, a tartaruga irá deixar um rasto. O <userinput +>forward</userinput +> pode ser abreviado para <userinput +>fw</userinput +></para +></listitem> + </varlistentry> + </variablelist> +</sect3> +<sect3 id="backward"> + <title +>backward (bw)</title> + <variablelist> + <varlistentry +> + <term +>backward</term> + <listitem +><para +><screen +>backward X</screen> +O <userinput +>backward</userinput +> move a tartaruga para trás X pixels. Quando o traço está em baixo, a tartaruga irá deixar um rasto. O <userinput +>backward</userinput +> pode ser abreviado para <userinput +>bw</userinput +>.</para +></listitem> + </varlistentry> + </variablelist> +</sect3> +<sect3 id="turnleft"> + <title +>turnleft (tl)</title> + <variablelist> + <varlistentry +> + <term +>turnleft</term> + <listitem +><para +><screen +>turnleft X</screen> +O <userinput +>turnleft</userinput +> diz à tartaruga para se virar X graus para a esquerda. O <userinput +>turnleft</userinput +> pode ser abreviado para <userinput +>tl</userinput +>.</para +></listitem> + </varlistentry> + </variablelist> +</sect3> +<sect3 id="turnright"> + <title +>turnright (tr)</title> + <variablelist> + <varlistentry +> + <term +>turnright</term> + <listitem +><para +><screen +>turnright X</screen> +O <userinput +>turnright</userinput +> diz à tartaruga para se virar X graus para a direita. O <userinput +>turnright</userinput +> pode ser abreviado para <userinput +>tr</userinput +>.</para +></listitem> + </varlistentry> + </variablelist> +</sect3> +<sect3 id="direction"> + <title +>direction (dir)</title> + <variablelist> + <varlistentry +> + <term +>direction</term> + <listitem +><para +><screen +>direction X</screen> +O <userinput +>direction</userinput +> 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 +>direction</userinput +> pode ser abreviado para <userinput +>dir</userinput +>.</para +></listitem> + </varlistentry> + </variablelist> +</sect3> +<sect3 id="center"> + <title +>center</title> + <variablelist> + <varlistentry +> + <term +>center</term> + <listitem +><para +><screen +>center</screen> +O <userinput +>center</userinput +> move a tartaruga para o centro da área de desenho.</para +></listitem> + </varlistentry> + </variablelist> +</sect3> +<sect3 id="go"> + <title +>go</title> + <variablelist> + <varlistentry +> + <term +>go</term> + <listitem +><para +><screen +>go X,Y</screen> +O <userinput +>go</userinput +> manda a tartaruga ir para um dado local da área de desenho. Este local está a X <glossterm linkend="pixels" +>pixels</glossterm +> do lado esquerdo da área de desenho e a Y <glossterm linkend="pixels" +>pixels</glossterm +> do topo da área. Lembre-se que, ao usar o comando <userinput +>go</userinput +>, a tartaruga não irá desenhar nenhuma linha.</para +></listitem> + </varlistentry> + </variablelist> +</sect3> +<sect3 id="gox"> + <title +>gox</title> + <variablelist> + <varlistentry +> + <term +>gox</term> + <listitem +><para +><screen +>gox X</screen> +Ao usar o comando <userinput +>gox</userinput +>, a tartaruga irá mover-se X <glossterm linkend="pixels" +>pixels</glossterm +> a partir da esquerda da área de desenho, mantendo à mesma a sua altura.</para +></listitem> + </varlistentry> + </variablelist> +</sect3> +<sect3 id="goy"> + <title +>goy</title> + <variablelist> + <varlistentry +> + <term +>goy</term> + <listitem +><para +><screen +>goy Y</screen> +Ao usar o comando <userinput +>goy</userinput +>, a tartaruga irá mover-se Y <glossterm linkend="pixels" +>pixels</glossterm +> a partir do topo da área de desenho, mantendo à mesma a sua distância ao lado esquerdo da área de desenho.</para +></listitem> + </varlistentry> + </variablelist> +</sect3> +</sect2> + +<sect2 id="pen"> +<title +>A tartaruga tem um traço</title> +<para +>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> +<sect3 id="penup"> + <title +>penup (pu)</title> + <variablelist> + <varlistentry +> + <term +>penup</term> + <listitem +><para +><screen +>penup</screen> +O <userinput +>penup</userinput +> levanta o traço da área de desenho. Quando o traço está <quote +>em cima</quote +>, não é desenhada nenhuma linha à medida que a tartaruga se move. Veja também o <userinput +>pendown</userinput +>. O <userinput +>penup</userinput +> pode ser abreviado para <userinput +>pu</userinput +>.</para +></listitem> + </varlistentry> + </variablelist> +</sect3> +<sect3 id="pendown"> + <title +>pendown (pd)</title> + <variablelist> + <varlistentry +> + <term +>pendown</term> + <listitem +><para +><screen +>pendown</screen> +O <userinput +>pendown</userinput +> carrega no traço para baixo na área de desenho. Quando o traço está <quote +>em baixo</quote +>, é desenhada uma linha à medida que a tartaruga se move. Veja também o <userinput +>penup</userinput +>. O <userinput +>pendown</userinput +> pode ser abreviado para <userinput +>pd</userinput +>.</para +></listitem> + </varlistentry> + </variablelist> +</sect3> +<sect3 id="setpenwidth"> + <title +>penwidth (pw)</title> + <variablelist> + <varlistentry +> + <term +>penwidth</term> + <listitem +><para +><screen +>penwidth X</screen> +O <userinput +>penwidth</userinput +> configura a espessura do traço para X <glossterm linkend="pixels" +>pixels</glossterm +>. O <userinput +>penwidth</userinput +> pode ser abreviado para <userinput +>pw</userinput +>.</para +></listitem> + </varlistentry> + </variablelist> +</sect3> +<sect3 id="setfgcolor"> + <title +>pencolor (pc)</title> + <variablelist> + <varlistentry +> + <term +>pencolor</term> + <listitem +><para +><screen +>pencolor R,G,B</screen> +O <userinput +>pencolor</userinput +> configura a cor do traço. O <userinput +>pencolor</userinput +> recebe uma <glossterm linkend="rgb" +>combinação de RGB</glossterm +> como parâmetro. O <userinput +>pencolor</userinput +> pode ser abreviado para <userinput +>pc</userinput +>.</para +></listitem> + </varlistentry> + </variablelist> +</sect3> +</sect2> + +<sect2 id="canvas"> +<title +>Comandos para controlar a área de desenho</title> +<para +>Existem vários comandos para controlar a área de desenho.</para> +<sect3 id="resizecanvas"> + <title +>canvassize (cs)</title> + <variablelist> + <varlistentry> + <term +>canvassize</term> + <listitem +><para +><screen +>canvassize X,Y</screen> +Com o comando <userinput +>canvassize</userinput +> você poderá alterar o tamanho da área de desenho. Ele recebe dois parâmetros X e Y à entrada, em que o X é a nova largura da área de desenho em <glossterm linkend="pixels" +>pixels</glossterm +>, e o Y é a nova altura da mesma área em <glossterm linkend="pixels" +>pixels</glossterm +>. O <userinput +>canvassize</userinput +> pode ser abreviado para <userinput +>cs</userinput +>.</para +></listitem> + </varlistentry> + </variablelist> +</sect3> +<sect3 id="setbgcolor"> + <title +>canvascolor (cc)</title> + <variablelist> + <varlistentry +> + <term +>canvascolor</term> + <listitem +><para +><screen +>canvascolor R,G,B</screen> +O <userinput +>canvascolor</userinput +> define a cor da área de desenho. O <userinput +>canvascolor</userinput +> recebe uma <glossterm linkend="rgb" +>combinação RGB</glossterm +> como parâmetro. O <userinput +>canvascolor</userinput +> pode ser abreviado para <userinput +>cc</userinput +>.</para +></listitem> + </varlistentry> + </variablelist> +</sect3> +<sect3 id="wrapon"> + <title +>wrapon</title> + <variablelist> + <varlistentry +> + <term +>wrapon</term> + <listitem +><para +><screen +>wrapon</screen> +Com o comando <userinput +>wrapon</userinput +> você poderá activar a <glossterm linkend="wrapping" +>envolvência</glossterm +> para a área de desenho. Por favor veja o glossário para saber o que é a <glossterm linkend="wrapping" +>envolvência</glossterm +>.</para +></listitem> + </varlistentry> + </variablelist> +</sect3> +<sect3 id="wrapoff"> + <title +>wrapoff</title> + <variablelist> + <varlistentry +> + <term +>wrapoff</term> + <listitem +><para +><screen +>wrapoff</screen> +Com o comando <userinput +>wrapoff</userinput +> você poderá desactivar a <glossterm linkend="wrapping" +>envolvência</glossterm +> para a área de desenho. Isto significa que a tartaruga poder-se-á mover para fora da área de desenho e <quote +>perder-se</quote +>. Por favor veja o glossário se quiser saber o que é a <glossterm linkend="wrapping" +>envolvência</glossterm +>.</para +></listitem> + </varlistentry> + </variablelist> +</sect3> +</sect2> + +<sect2 id="clean"> +<title +>Comandos para limpar</title> +<para +>Existem dois comandos para limpar a área de desenho, depois de você ter deixado tudo confuso.</para> +<sect3 id="clear"> + <title +>clear (cr)</title> + <variablelist> + <varlistentry +> + <term +>clear</term> + <listitem +><para +><screen +>clear</screen> +Com o <userinput +>clear</userinput +>, 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. O <userinput +>clear</userinput +> pode ser abreviado para <userinput +>cr</userinput +>.</para +></listitem> + </varlistentry> + </variablelist> +</sect3> +<sect3 id="reset"> + <title +>reset</title> + <variablelist> + <varlistentry +> + <term +>reset</term> + <listitem +><para +><screen +>reset</screen> +O <userinput +>reset</userinput +> limpa tudo de forma mais abrangente que o comando <userinput +>clear</userinput +>. Depois de um comando <userinput +>reset</userinput +>, 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.</para +></listitem> + </varlistentry> + </variablelist> +</sect3> +</sect2> + +<sect2 id="sprites"> +<title +>A tartaruga é uma imagem móvel</title> +<para +>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" +>imagens móveis</glossterm +>). </para> +<para +>A seguir você irá encontrar uma apresentação completa de todos os comandos que lidam com imagens móveis.</para> +<para +>[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> +<sect3 id="spriteshow"> + <title +>show</title> + <variablelist> + <varlistentry +> + <term +>show (ss)</term> + <listitem +><para +><screen +>show</screen> +O <userinput +>show</userinput +> torna a tartaruga visível de novo depois de ter ficado escondida. O <userinput +>show</userinput +> pode ser abreviado para <userinput +>ss</userinput +>.</para +></listitem> + </varlistentry> + </variablelist> +</sect3> +<sect3 id="spritehide"> + <title +>hide (sh)</title> + <variablelist> + <varlistentry +> + <term +>hide</term> + <listitem +><para +><screen +>hide</screen> +O <userinput +>hide</userinput +> esconde a tartaruga. Isto pode ser usado se a tartaruga não couber no seu desenho. O <userinput +>hide</userinput +> pode ser abreviado para <userinput +>sh</userinput +>.</para +></listitem> + </varlistentry> + </variablelist> +</sect3> +</sect2> + +<sect2 id="writing"> +<title +>Será que as tartarugas escrevem texto?</title> +<para +>A resposta é: <quote +>sim</quote +>. A tartaruga sabe escrever e pode escrever tudo o que lhe disser para escrever.</para> +<sect3 id="print"> + <title +>print</title> + <variablelist> + <varlistentry +> + <term +>print</term> + <listitem +><para +><screen +>print X</screen> +O comando <userinput +>print</userinput +> é usado para dizer à tartaruga para escrever algo na área de desenho. O <userinput +>print</userinput +> recebe números e texto como parâmetros. Você poderá executar o <userinput +>print</userinput +> para vários parâmetros com o sinal <quote +>+</quote +>. Veja aqui um pequeno exemplo: <screen +>ano = 2004 +autor = "Ze" +print "O " + autor + " iniciou o projecto do KTurtle em " + ano + " e ainda continua a gostar de trabalhar nele!" +</screen> + </para +></listitem> + </varlistentry> + </variablelist> +</sect3> +<sect3 id="fontsize"> + <title +>fontsize</title> + <variablelist> + <varlistentry +> + <term +>fontsize</term> + <listitem +><para +><screen +>fontsize X</screen> +O <userinput +>fontsize</userinput +> configura o tamanho da letra que é usado pelo <userinput +>print</userinput +>. O <userinput +>fontsize</userinput +> recebe um parâmetros que deverá ser um número. O tamanho é definido em <glossterm linkend="pixels" +>pixels</glossterm +>.</para +></listitem> + </varlistentry> + </variablelist> +</sect3> +</sect2> + +<sect2 id="random"> +<title +>Um comando que joga aos dados por si</title> +<para +>Existe um comando que lança os dados para si, que se chama <userinput +>random</userinput +> e é muito útil para alguns resultados inesperados.</para> + <variablelist> + <varlistentry +> + <term +>random</term> + <listitem +><para +><screen +>random X,Y</screen> +O <userinput +>random</userinput +> é 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> + repeat 500 [ + x = random 1,20 + forward x + turnleft 10 - x + ] + </screen +> Com o comando 'random', você poderá adicionar um pouco de confusão ao seu programa.</para +></listitem> + </varlistentry> + </variablelist> +</sect2> + +<sect2 id="dialogs"> +<title +>Entrada de dados e reacção através de janelas</title> +<para +>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 +>message</userinput +> e o <userinput +>inputwindow</userinput +></para> +<sect3 id="message"> + <title +>message</title> + <variablelist> + <varlistentry +> + <term +>message</term> + <listitem +><para +><screen +>message X</screen> +O comando <userinput +>message</userinput +> recebe uma <link linkend="string" +>cadeia de caracteres</link +> à entrada. Mostra então uma janela que contém o texto da <link linkend="string" +>cadeia de caracteres</link +>. <screen +>ano = 2004 +autor = "Ze" +print "O " + autor + " iniciou o projecto do KTurtle em " + ano + " e ainda continua a gostar de trabalhar nele!" +</screen> + </para +></listitem> + </varlistentry> + </variablelist> +</sect3> +<sect3 id="inputwindow"> + <title +>inputwindow</title> + <variablelist> + <varlistentry +> + <term +>inputwindow</term> + <listitem +><para +><screen +>inputwindow X</screen> +O <userinput +>inputwindow</userinput +> recebe uma <link linkend="string" +>cadeia de caracteres</link +> à entrada. Mostra uma janela que contém o texto da cadeia de caracteres, tal como acontece no <link linkend="message" +>message</link +>. 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" +>número</link +> ou uma <link linkend="string" +>cadeia de caracteres</link +> que poderá ser guardada num <link linkend="containers" +>contentor</link +>. Por exemplo <screen> +in = inputwindow "Que idade tem?" +out = 2003 - in +print "Em 2003, você tinha " + out + " anos a dada altura." +</screen +> Quando um utilizador cancelar a janela ou não introduzir nada de todo, o <link linkend="containers" +>contentor</link +> fica vazio.</para +></listitem> + </varlistentry> + </variablelist> +</sect3> +</sect2> + +</sect1> + + + +<sect1 id="containers"> +<title +>Contentores</title> +<para +>Os contentores são letras ou palavras que podem ser usadas pelo programador para guardar algum número ou algum texto. Os contentores que contêm um número chamam-se <link linkend="variables" +>variáveis</link +>, enquanto que os que contêm texto chamam-se <link linkend="strings" +>cadeias de caracteres</link +>.</para> + +<para +>Os contentores que não são usados não contêm nada. Por exemplo, um: <screen> +print N +</screen +> Isto não irá imprimir nada. Se tentar fazer <link linkend="math" +>operações matemáticas</link +> com contentores vazios, irá obter erros. </para> + +<sect2 id="variables"> +<title +>Variáveis: contentores de números</title> +<para +>Vamos começar com um exemplo: <screen> +x = 3 +print x +</screen +> Na primeira linha, a letra <userinput +>x</userinput +> passou a ser uma variável (um contentor de números). Como poderá ver, o valor da variável <userinput +>x</userinput +> passou a 3. Na segunda linha, o valor é impresso.</para> +<para +>Lembre-se que, se quisesse imprimir um <quote +>x</quote +>, então deveria ser escrito <screen +>print "x" +</screen> +</para> +<para +>Isso foi fácil, mas agora há um exemplo um pouco mais difícil: <screen> +A = 2004 +B = 25 +C = A + B + +# o próximo comando imprime "2029" +print C +backward 30 +# o próximo comando imprime "2004 mais 25" +print A + " mais " + B +backward 30 +# o próximo comando imprime "1979" +print A - B +</screen +> Nas duas primeiras linhas, as variáveis <userinput +>A</userinput +> e <userinput +>B</userinput +> são configuradas como sendo iguais a 2004 e 25. Na terceira linha, a variável <userinput +>C</userinput +> fica igual a <userinput +>A + B</userinput +>, o que dá 2029. O resto do exemplo consiste em 3 comandos <userinput +>print</userinput +> com <userinput +>backward 30</userinput +> no meio. O <userinput +>backward 30</userinput +> está lá para garantir que cada resultado fica numa linha diferente. Neste exemplo, você vê também que as variáveis podem ser usadas nos <link linkend="math" +>cálculos matemáticos</link +>.</para> +</sect2> + +<sect2 id="strings"> +<title +>Contentores de texto (cadeias de caracteres)</title> +<para +>No código do programa, o texto normal é iniciado e termina normalmente com aspas. Como já foi visto: <screen> +print "Olá programador!" +</screen +> O texto fica delimitado com as aspas. Estes pedaços de texto normal são chamados então de <link linkend="strings" +>cadeias de caracteres</link +>.</para> +<para +>As cadeias de caracteres são bastante parecidas com as variáveis. A maior diferença é que as cadeias de caracteres não podem ser usadas em <link linkend="math" +>cálculos matemáticos</link +> e <link linkend="questions" +>perguntas</link +>. Um exemplo da utilização das cadeias de caracteres: <screen> +x = "Olá " +nome = inputwindow "por favor indique o seu nome..." +print x + nome + ", como é que está? +</screen +> Na segunda linha, a cadeia de caracteres <userinput +>x</userinput +> fica igual a <quote +>Olá </quote +>. Na segunda linha, a cadeia de caracteres <userinput +>nome</userinput +> é configurada como o resultado do comando <userinput +>inputwindow</userinput +>. Na terceira linha, o programa imprime uma composição de três cadeias de caracteres na área de desenho.</para> +<para +>Este programa pede-lhe para introduzir o seu nome. Quando você, por exemplo, introduzir o nome <quote +>Zé</quote +>, o programa irá imprimir <quote +>Olá Zé, como é que está?</quote +>. Lembre-se que o sinal de mais (+) é o único símbolo matemático que você poderá usar com as cadeias de caracteres.</para> +</sect2> +</sect1> + +<sect1 id="math"> +<title +>Será que a Tartaruga Pode Fazer Contas?</title> +<para +>Sim, o &kturtle; sabe fazer contas para si. Você poderá somar (+), subtrair (-), multiplicar (*) e dividir (/). Aqui está um exemplo no qual iremos usar todas as operações: <screen> +a = 20 - 5 +b = 15 * 2 +c = 30 / 30 +d = 1 + 1 +print "a: "+a+", b: "+b+", c: "+c+", d: "+d +</screen +> Será que sabe o valor de 'a', 'b', 'c' e 'd'? Repare por favor no uso do símbolo <userinput +>=</userinput +> de <link linkend="assignment" +>atribuição</link +>.</para> +<para +>Se você somente queria fazer um cálculo simples, você poderá fazer algo semelhante a isto: <screen +>print 2004-12 +</screen +></para> +<para +>Agora, um exemplo com parêntesis: <screen> +print ( ( 20 - 5 ) * 2 / 30 ) + 1 +</screen +> 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).</para> +</sect1> + +<sect1 id="questions"> +<title +>Fazer perguntas, obter respostas...</title> +<para +>O <link linkend="if" +><userinput +>if</userinput +></link +> e o <link linkend="while" +><userinput +>while</userinput +></link +> são <link linkend="controlling-execution" +>controladores de execução</link +> que iremos discutir na próxima secção. Nesta secção iremos usar o comando <userinput +>if</userinput +> para explicar as perguntas.</para> +<sect2 id="q"> +<title +>Perguntas</title> +<para +>Um exemplo simples de perguntas: <screen> +x = 6 +if x > 5 [ + print "olá" +] +</screen +> Neste exemplo, a pergunta é <userinput +>x > 5</userinput +>, se a resposta a esta pergunta for <quote +>true</quote +> (verdadeira), o código entre parêntesis rectos será executado. As perguntas são uma parte importante da programação e são usadas normalmente em conjunto com os <link linkend="controlling-execution" +>controladores de execução</link +>, como o <link linkend="if" +><userinput +>if</userinput +></link +>. Todos os números e <link linkend="variables" +>variáveis</link +> (contentores de números) poderão ser comparados uns com os outros nas perguntas.</para> +<para +>Aqui estão todas as perguntas possíveis: <table> +<title +>Tipos de perguntas</title> +<tgroup cols="3"> +<tbody> +<row> +<entry +><userinput +>a == b</userinput +></entry> +<entry +>igual a</entry> +<entry +>a resposta é <quote +>true</quote +> (verdadeira) se o <userinput +>a</userinput +> for igual ao <userinput +>b</userinput +></entry> +</row> +<row> +<entry +><userinput +>a != b</userinput +></entry> +<entry +>é diferente de</entry> +<entry +>a resposta é <quote +>true</quote +> (verdadeira) se o <userinput +>a</userinput +> não for igual ao <userinput +>b</userinput +></entry> +</row> +<row> +<entry +><userinput +>a > b</userinput +></entry> +<entry +>maior que</entry> +<entry +>a resposta é <quote +>true</quote +> (verdadeira) se o <userinput +>a</userinput +> for maior que o <userinput +>b</userinput +></entry> +</row> +<row> +<entry +><userinput +>a < b</userinput +></entry> +<entry +>menor que</entry> +<entry +>a resposta é <quote +>true</quote +> (verdadeira) se o <userinput +>a</userinput +> for menor que o <userinput +>b</userinput +></entry> +</row> +<row> +<entry +><userinput +>a >= b</userinput +></entry> +<entry +>maior ou igual a</entry> +<entry +>a resposta é <quote +>true</quote +> (verdadeira) se o <userinput +>a</userinput +> for maior ou igual ao <userinput +>b</userinput +></entry> +</row> +<row> +<entry +><userinput +>a <= b</userinput +></entry> +<entry +>menor ou igual a</entry> +<entry +>a resposta é <quote +>true</quote +> (verdadeira) se o <userinput +>a</userinput +> for menor ou igual ao <userinput +>b</userinput +></entry> +</row> +</tbody> +</tgroup> +</table> +</para> +<para +>As perguntas ficam <glossterm +>realçadas</glossterm +> com azul claro no <link linkend="the-code-editor" +>editor de código</link +>.</para +> +</sect2> + +<sect2 id="question-glue"> +<title +>Colagem de Perguntas</title> +<para +>As perguntas também podem ser coladas umas às outras com <quote +>palavras de colagem de perguntas</quote +> onde, desta forma, algumas perguntas tornam-se uma pergunta maior. <screen> +a = 1 +b = 5 +if (a < 5) and (b == 5) [ + print "olá" +] +</screen +> Neste exemplo, a palavra de colagem <userinput +>and</userinput +> é usada para colar 2 perguntas (<userinput +>a < 5</userinput +>, <userinput +>b == 5</userinput +>) em conjunto. Se um lado do <userinput +>and</userinput +> der uma resposta <quote +>false</quote +> (falsa), a pergunta toda irá responder <quote +>false</quote +>, porque, com a palavra de colagem <userinput +>and</userinput +>, ambos os lados precisam de ser <quote +>true</quote +> para que a resposta seja <quote +>true</quote +> (verdadeira). Por favor não se esqueça de usar os parêntesis à volta das perguntas!</para> + +<para +>Segue-se uma vista esquemática; pode encontrar uma explicação mais detalhada de seguida: <table> +<title +>Palavras de colagem de perguntas</title> +<tgroup cols="2"> +<tbody> +<row> +<entry +><userinput +>and</userinput +></entry> +<entry +>ambos os lados têm de ser <quote +>true</quote +> (verdadeiros) para a resposta ser <quote +>true</quote +> (verdadeira)</entry> +</row> +<row> +<entry +><userinput +>or</userinput +></entry> +<entry +>se um dos lados for <quote +>true</quote +> (verdadeiros) a resposta é <quote +>true</quote +> (verdadeira)</entry> +</row> +<row> +<entry +><userinput +>not</userinput +></entry> +<entry +>Caso especial: só funciona com uma pergunta! Muda o 'true' para 'false' e o 'false' para 'true'.</entry> +</row> +</tbody> +</tgroup> +</table> +</para> +<para +>As palavras de colagem ficam <glossterm +>realçadas</glossterm +> a púrpura no <link linkend="the-code-editor" +>editor de código</link +>.</para> + +<sect3 id="and"> +<title +>and</title> +<para +>Quando são coladas duas perguntas em conjunto com o <userinput +>and</userinput +>, ambos os lados do <userinput +>and</userinput +> terão ser 'true' para que o resultado também seja 'true' (verdadeiro). Por exemplo: <screen> +a = 1 +b = 5 +if ((a < 10) and (b == 5)) and (a < b) [ + print "olá" +] +</screen +> Nestes exemplo, poderá ver uma pergunta colada a outra pergunta também colada.</para> +</sect3> + +<sect3 id="or"> +<title +>or</title> +<para +>Se uma das duas perguntas coladas em conjunto com o <userinput +>or</userinput +> for 'true' (verdadeira), o resultado será também 'true'. Por exemplo: <screen> +a = 1 +b = 5 +if ((a < 10) or (b == 10)) or (a == 0) [ + print "olá" +] +</screen +> Neste exemplo, irá ver uma pergunta colada a outra pergunta, também esta colada.</para> +</sect3> + +<sect3 id="not"> +<title +>not</title> +<para +>O <userinput +>not</userinput +> é uma palavra de colagem de perguntas especial que só funciona para uma pergunta de cada vez. O <userinput +>not</userinput +> muda o 'true' para 'false' e o 'false' para 'true'. Por exemplo: <screen> +a = 1 +b = 5 +if not ((a < 10) and (b == 5)) [ + print "olá" +] +else +[ + print "não olá ;-)" +] +</screen +> Neste exemplo, a pergunta colada é igual a 'true', embora o <userinput +>not</userinput +> a mude para 'false'. Como tal, no fim, será impresso o <userinput +>"não olá ;-)"</userinput +> na <link linkend="the-canvas" +>área de desenho</link +>.</para> +</sect3> + +</sect2> + +</sect1> + +<sect1 id="controlling-execution"> +<title +>Controlar a execução</title> +<para +>Os controladores de execução permitem-lhe — como o nome deles indica — controlar a execução.</para> +<para +>Os comandos de controlo da execução ficam <glossterm +>realçados</glossterm +> 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 +>realçados</glossterm +> a verde claro.</para> + +<sect2 id="wait"> +<title +>Fazer a tartaruga esperar</title> +<para +>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> + <variablelist> + <varlistentry> + <term +>wait</term> + <listitem +><para +><screen +>wait X</screen> +O <userinput +>wait</userinput +> faz a tartaruga esperar X segundos. <screen> +repeat 36 [ + forward 5 + turnright 10 + wait 0.5 +] +</screen +> 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 +></listitem> + </varlistentry> + </variablelist> +</sect2> + +<sect2 id="if"> +<title +>Executar o "if"</title> + <variablelist> + <varlistentry> + <term +>if</term> + <listitem +><para +><screen +>if <link linkend="questions" +>pergunta</link +> [ ... ]</screen> +O código que é colocado no <quote +>...</quote +> só será executado se (<userinput +>if</userinput +>) a resposta à <link linkend="questions" +>pergunta</link +> for <quote +>true</quote +> (verdadeira). Por favor leia, para obter mais informações sobre perguntas, a <link linkend="questions" +>secção de perguntas</link +>. <screen> +x = 6 +if x > 5 [ + print "O x é maior que cinco!" +] +</screen +> Na primeira linha, o <userinput +>x</userinput +> é inicializado a 6. Na segunda linha, a <link linkend="questions" +>pergunta</link +> <userinput +>x > 5</userinput +> é feita. Dado que a resposta a esta pergunta é verdadeira, o controlador de execução <userinput +>if</userinput +> irá permitir que o código entre parêntesis rectos seja executado</para +></listitem> + </varlistentry> + </variablelist> +</sect2> + +<sect2 id="while"> +<title +>O ciclo "while"</title> + <variablelist> + <varlistentry> + <term +>while</term> + <listitem +><para +><screen +>while <link linkend="questions" +>pergunta</link +> [ ... ]</screen> +O controlador de execução <userinput +>while</userinput +> é um pouco como o <link linkend="if" +><userinput +>if</userinput +></link +>. A diferença é que o <userinput +>while</userinput +> continua a repetir o código entre parêntesis até que a resposta à <link linkend="questions" +>pergunta</link +> seja <quote +>false</quote +> (falsa). <screen> +x = 1 +while x < 5 [ + forward 10 + wait 1 + x = x + 1 +] +</screen +> Na primeira linha, o <userinput +>x</userinput +> fica igual a 1. Na segunda, a <link linkend="questions" +>pergunta</link +> <userinput +>x < 5</userinput +> é feita. Dado que a resposta a esta pergunta é <quote +>true</quote +> (verdadeira), o controlador de execução <userinput +>while</userinput +> começa a execução do código entre parêntesis até que a resposta à <link linkend="questions" +>pergunta</link +> seja <quote +>false</quote +> (falsa). Neste caso, o código entre parêntesis será executado 4 vezes, dado que, de cada vez que a quinta linha é executada, o <userinput +>x</userinput +> fica um número acima.</para +></listitem> + </varlistentry> + </variablelist> +</sect2> + +<sect2 id="else"> +<title +>Se não, por outras palavras: "else"</title> + <variablelist> + <varlistentry> + <term +>else</term> + <listitem +><para +><screen +>if pergunta [ ... ] else [ ... ]</screen> +O <userinput +>else</userinput +> pode ser usado para além do controlador de execução <link linkend="if" +><userinput +>if</userinput +></link +>. O código entre parêntesis a seguir ao <userinput +>else</userinput +> só é executado se a resposta à <link linkend="questions" +>pergunta</link +> que é feita for <quote +>false</quote +> (falsa). <screen> +x = 4 +if x > 5 [ + print "O x é maior que cinco!" +] else [ + print "O x é menor que seis!" +] +</screen +> A <link linkend="questions" +>pergunta</link +> testa se o <userinput +>x</userinput +> é maior que 5. Dado que o <userinput +>x</userinput +> fica igual a 4 na primeira linha, a resposta à pergunta é <quote +>false</quote +> (falsa). Isto significa que o código entre parêntesis a seguir ao <userinput +>else</userinput +> é executado.</para +></listitem> + </varlistentry> + </variablelist> +</sect2> + +<sect2 id="for"> +<title +>O ciclo "for", um ciclo de contagem</title> + <variablelist> + <varlistentry> + <term +>for</term> + <listitem +><para +><screen +>for <userinput +>ponto inicial</userinput +> a <userinput +>ponto final</userinput +> [ ... ]</screen> +O ciclo <userinput +>for</userinput +> é um <quote +>ciclo de contagem</quote +>, ou seja, faz de contador para si. <screen> +for x = 1 to 10 [ + print x * 7 + forward 15 +] +</screen +> De cada vez que o código entre parêntesis é executado, o <userinput +>x</userinput +> é incrementado de uma unidade, até que o valor do <userinput +>x</userinput +> chegue a 10. O código entre parêntesis imprime o valor de <userinput +>x</userinput +> multiplicado por 7. Depois de este programa terminar a sua execução, você irá ver a tabuada dos 7 na área de desenho.</para +></listitem> + </varlistentry> + </variablelist> +</sect2> + +</sect1> + + +<sect1 id="learn"> +<title +>Crie os seus próprios comandos com o <quote +>learn</quote +></title> +<para +>O <userinput +>learn</userinput +> é um comando muito especial, porque é usado para criar os seus próprios comandos. O comando que criar poderá receber <glossterm linkend="input-output" +>parâmetros</glossterm +> e devolver <glossterm linkend="input-output" +>resultados</glossterm +>. Vamos ver como é que é criado um novo comando. <screen> +learn circunferencia x [ + repeat 36 [ + forward x + turnleft 10 + ] +] +</screen +> O novo comando chama-se <userinput +>circunferencia</userinput +>. O <userinput +>circunferencia</userinput +> recebe um <glossterm linkend="input-output" +>parâmetro</glossterm +>, um número, para definir o tamanho da circunferência. O <userinput +>circunferencia</userinput +> não devolve nenhum <glossterm linkend="input-output" +>resultado</glossterm +>. O comando <userinput +>circunferencia</userinput +> pode agora ser usado como um comando normal. Veja este exemplo: <screen +>learn circunferencia X [ + repeat 36 [ + forward X + turnleft 10 + ] +] + +go 30,30 +circunferencia 20 + +go 40,40 +circunferencia 50 +</screen> +</para> +<para +>No próximo exemplo, vai ser criado um comando com um valor de resultado devolvido. <screen> +learn multiplicarPeloProprio n [ + r = n * 1 + r = n * n + return r +] +i = inputwindow "Por favor indique um número e carregue em OK" +print "O " + i + " multiplicado por ele próprio é igual a: " + multiplicarPeloProprio i +</screen +> Neste exemplo, existe agora um comando novo chamado <userinput +>multiplicarPeloProprio</userinput +>. O parâmetro deste comando é multiplicado por ele próprio e é então devolvido, usando o comando <anchor id="return"/><userinput +>return</userinput +>. O comando <userinput +>return</userinput +> é a forma de devolver um resultado de uma função criada. </para> +</sect1> + +</chapter> |