<!--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 do &turtlelang;</title>
<para
>Esta é a referência para o &turtlelang; do &kturtle;. Neste capítulo iremos abordar brevemente 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. Em seguida, serão explicados os <link linkend="containers"
>recipientes</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á mostrado como criar os seus próprios comandos com o <link linkend="learn"
>aprenda</link
>.</para>

<sect1 id="different-instructions">
<title
>Tipos diferentes de instruções</title>
<para
>Como em qualquer linguagem, o &turtlelang; possui diferentes tipos de palavras e símbolos. Aqui as diferenças entre os tipos serão brevemente explanadas.</para>

<sect2 id="command">
<title
>Comandos</title>
<para
>Usando comandos, você diz à tartaruga ou ao &kturtle; para fazer algo. Alguns comandos precisam de dados de entrada, enquanto outros fornecem resultados ou dados de saída. <screen
># o parafrente é um comando que necessita de dados de entrada, neste caso o número 100:
parafrente 100
</screen>
</para>
<para
>Para uma ideia geral de todos os comandos que o &kturtle; suporta, vá para <link linkend="commands"
>aqui</link
>.</para>
</sect2>

<sect2 id="number">
<title
>Números</title>
<para
>Muito provavelmente você já conhece alguma coisa sobre os números. A forma como eles são usados no &kturtle; não é muito diferente do idioma falado ou da matemática. </para>
<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 fracioná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
>. Eles também podem ser colocados em <link linkend="containers"
>recipientes</link
>.</para>
<para
>Os números ficam <glossterm
>realçados</glossterm
> em vermelho escuro no <link linkend="the-code-editor"
>editor de código</link
>.</para>
</sect2>

<!-- constants like pi? -->

<sect2 id="string">
<title
>Cadeias de caracteres</title>
<para
>Primeiro um exemplo: <screen>
mostre "Olá, sou uma cadeia de caracteres."
</screen
> Neste exemplo, o <userinput
>mostre</userinput
> é um comando, enquanto o <userinput
>"Olá, sou uma cadeia de caracteres."</userinput
> é, de fato, uma cadeia de caracteres. Elas começam e terminam com o símbolo <userinput
>"</userinput
>; através destes símbolos, o &kturtle; sabe que é uma cadeia de caracteres.</para>
<para
>As cadeias de caracteres podem ser colocadas em <link linkend="containers"
>recipientes</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
> em vermelho 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 &turtlelang;, você pode criar coisas novas. Se você escrever um programa, irá necessitar geralmente de <link linkend="containers"
>recipientes</link
> e em alguns casos você precisará usar o comando <link linkend="learn"
>aprenda</link
> para criar novos comandos. Ao criar um novo comando com o <link linkend="learn"
>aprenda</link
>, você terá que especificar um nome.</para>
<para
>Você poderá escolher qualquer nome, desde que ele não tenha já algum significado. Por exemplo, você não poderá chamar uma função de <link linkend="forward"
>parafrente</link
>, uma vez que esse nome já é usado para um comando interno.<screen>
# Aqui o parafrente é usado como um novo comando, 
# mas ele já tem um significado
# assim isto irá resultar num erro:
aprenda parafrente {
  mostre "isto é inválido"
}

# isto irá funcionar:
aprenda meuparafrente {
  mostre "isto está correto"
}
</screen
> Os nomes só poderão conter letras, números e sublinhados (_). De qualquer forma, devem começar por uma letra. Os nomes dos recipientes devem começar com o prefixo de recipiente ($). <screen
># aqui o parafrente é usado como recipiente,
# iniciando com o prefixo $, para que não entre
# em conflito com o comando parafrente
$parafrente = 20
mostre $parafrente
</screen>
</para>
<para
>Os recipientes ficam <glossterm
>realçados</glossterm
> em roxo no <link linkend="the-code-editor"
>editor de código</link
>.</para>
<para
>Por favor, leia a documentação sobre os <link linkend="containers"
>recipientes</link
> e o comando <link linkend="learn"
>aprenda</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 'ficar 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"
>recipientes</link
> e (2) para modificar o conteúdo de um recipiente. Por exemplo: <screen
>$x = 10
# o recipiente x contém agora o número 10
$W = "A minha idade é: "
# o recipiente W contém agora o texto "A minha idade é: "
# isto imprime o conteúdo dos recipientes 'W' e 'x' na área de desenho
print $W + $x
</screen>
</para>
<para
>Para mais exemplos, veja a seção que explica os <link linkend="containers"
>recipientes</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 subtração (<userinput
>-</userinput
>), a multiplicação (<userinput
>*</userinput
>), a divisão (<userinput
>/</userinput
>) e os parênteses <userinput
>(</userinput
> e <userinput
>)</userinput
>.</para>
<para
>Para uma explicação completa e mais exemplos, veja a seção de <link linkend="math"
>matemática</link
>.</para>
</sect2>

<sect2 id="question">
<title
>Perguntas</title>
<para
>Nós podemos fazer perguntas simples onde a respostar será 'verdadeiro' ou 'falso'.</para>
<para
>O uso de perguntas é extensivamente explicado na seção <link linkend="questions"
>perguntas</link
>.</para>
</sect2>

<sect2 id="questions-glue">
<title
>Palavras de colagem de perguntas</title>
<para
>As perguntas podem ser coladas juntas com o que se denomina por 'cola das perguntas'. As palavas de colagem são o <userinput
>e</userinput
>, o <userinput
>ou</userinput
> e uma palavra especial: o <userinput
>não</userinput
>.</para>
<para
>A utilização da colagem de perguntas é explicada na seção de <link linkend="question-glue"
>colagem de Perguntas</link
>.</para>
</sect2>


<sect2 id="comment">
<title
>Comentários</title>
<para
>Comentários são linhas que iniciam com um <userinput
>#</userinput
>. Por exemplo: <screen>
# isto é um comentário!
mostre "isto não é um comentário"
# a linha anterior não é um comentário, mas a próxima é:
# mostre "isto não é um comentário"
</screen
> Nós podemos adicionar comentários ao código para nós mesmos ou para que alguém os leia. Comentários são usados para: (1) adicionar uma pequena descrição ao programa, (2) explanar como um pedaço do código funciona se ele for um pouco complicado, e (3) para 'comentar' linhas de código que devem ser (temporariamente) ignoradas (veja a última linha do exemplo).</para>
<para
>As linhas comentadas ficam <glossterm
>realçadas</glossterm
> em cinza claro 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 de entrada, enquanto outros fornecem resultados ou dados de saída. Nesta seção iremos explicar todos os comandos que podem ser usados no &kturtle;. Observe que todos os comandos internos que discutiremos aqui ficam <glossterm
>realçados</glossterm
> em azul no <link linkend="the-code-editor"
>editor de código</link
>, para que isto possa ajudar você a distinguí-los.</para>

<sect2 id="moving-the-turtle">
<title
>Movendo a tartaruga</title>
<para
>Existem vários comandos para mover a tartaruga pela tela.</para>

  <variablelist>
    <anchor id="forward"/>
    <varlistentry
> 
      <term
>parafrente (pf)<indexterm
><primary
>parafrente (pf)</primary
></indexterm
></term>
      <listitem
><para
><screen
>parafrente X</screen>
O <userinput
>parafrente</userinput
> move a tartaruga para a frente X pontos. Quando o traço está em baixo, a tartaruga irá deixar um rastro. O <userinput
>parafrente</userinput
> pode ser abreviado para <userinput
>pf</userinput
></para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="backward"/>
    <varlistentry
>  
      <term
>paratrás (pt)<indexterm
><primary
>paratrás (pt)</primary
></indexterm
></term>
      <listitem
><para
><screen
>paratrás X</screen>
O <userinput
>paratrás</userinput
> move a tartaruga para trás X pontos. Quando o traço está em baixo, a tartaruga irá deixar um rastro. O <userinput
>paratrás</userinput
> pode ser abreviado para <userinput
>pt</userinput
>.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="turnleft"/>
    <varlistentry
> 
      <term
>paraesquerda (pe)<indexterm
><primary
>paraesquerda (pe)</primary
></indexterm
></term>
      <listitem
><para
><screen
>paraesquerda X</screen>
O <userinput
>paraesquerda</userinput
> diz à tartaruga para se virar X graus para a esquerda. O <userinput
>paraesquerda</userinput
> pode ser abreviado para <userinput
>pe</userinput
>.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="turnright"/>
    <varlistentry
> 
      <term
>paradireita (pd)<indexterm
><primary
>paradireita (pd)</primary
></indexterm
></term>
      <listitem
><para
><screen
>paradireita X</screen>
O <userinput
>paradireita</userinput
> diz à tartaruga para se virar X graus para a direita. O <userinput
>paradireita</userinput
> pode ser abreviado para <userinput
>pd</userinput
>.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="direction"/>
    <varlistentry
> 
      <term
>direção (dir)<indexterm
><primary
>direção (dir)</primary
></indexterm
></term>
      <listitem
><para
><screen
>direção X</screen>
A <userinput
>direção</userinput
> configura a direção da tartaruga para um ângulo de X graus a contar do zero, e isto não é relativo à direção anterior da tartaruga. A <userinput
>direção</userinput
> pode ser abreviado para <userinput
>dir</userinput
>.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="center"/>
    <varlistentry
> 
      <term
>centralize<indexterm
><primary
>centralize</primary
></indexterm
></term>
      <listitem
><para
><screen
>centralize</screen>
O <userinput
>centralize</userinput
> move a tartaruga para o centro da área de desenho.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="go"/>
    <varlistentry
> 
      <term
>vápara<indexterm
><primary
>vápara</primary
></indexterm
></term>
      <listitem
><para
><screen
>vápara X,Y</screen>
O <userinput
>vápara</userinput
> manda a tartaruga ir para um determinado local da área de desenho. Este local está a X <glossterm linkend="pixels"
>pontos</glossterm
> do lado esquerdo da área de desenho e a Y <glossterm linkend="pixels"
>pontos</glossterm
> do topo da área de desenho. </para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="gox"/>
    <varlistentry
> 
      <term
>váparax<indexterm
><primary
>váparax</primary
></indexterm
></term>
      <listitem
><para
><screen
>váparax X</screen>
Ao usar o comando <userinput
>váparax</userinput
>, a tartaruga irá mover-se X <glossterm linkend="pixels"
>pontos</glossterm
> a partir da esquerda da área de desenho, mantendo-se na mesma altura.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="goy"/>
    <varlistentry
> 
      <term
>váparay<indexterm
><primary
>váparay</primary
></indexterm
></term>
      <listitem
><para
><screen
>váparay Y</screen>
Ao usar o comando <userinput
>váparay</userinput
>, a tartaruga irá mover-se Y <glossterm linkend="pixels"
>pontos</glossterm
> a partir do topo da área de desenho, mantendo-se na mesma distância do lado esquerdo da área de desenho.</para
></listitem>
    </varlistentry>
  </variablelist>
  <note
><para
>Ao usar os comandos <userinput
>vápara</userinput
>, <userinput
>váparax</userinput
>, <userinput
>váparay</userinput
> e <userinput
>centralize</userinput
> a tartaruga não irá desenhar uma linha, não importa se usado com <userinput
>usenada</userinput
> ou <userinput
>uselápis</userinput
>.</para>
  </note>
</sect2>

<sect2 id="locate-the-turtle">
<title
>Onde está a tartaruga?</title>
<para
>Existem dois comandos que devolvem a posição da tartaruga na tela.</para>

  <variablelist>
    <anchor id="getx"/>
    <varlistentry
> 
      <term
>pegax<indexterm
><primary
>pegax</primary
></indexterm
></term>
      <listitem
><para
><userinput
>pegax</userinput
> devolve o número em pontos a partir da esquerda da área de desenho até a posição atual da tartaruga.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="gety"/>
    <varlistentry
> 
      <term
>pegay<indexterm
><primary
>pegay</primary
></indexterm
></term>
      <listitem
><para
><userinput
>pegay</userinput
> devolve o número em pontos a partir do topo da área de desenho até a posição atual da tartaruga.</para
></listitem>
    </varlistentry>
  </variablelist>
</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 seção iremos explicar estes comandos.</para>
  <variablelist>
    <anchor id="penup"/>
    <varlistentry
> 
      <term
>usenada (un)<indexterm
><primary
>usenada (un)</primary
></indexterm
></term>
      <listitem
><para
><screen
>usenada</screen>
O <userinput
>usenada</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
>uselápis</userinput
>. O <userinput
>usenada</userinput
> pode ser abreviado para <userinput
>un</userinput
>.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="pendown"/>
    <varlistentry
> 
      <term
>uselápis (ul)<indexterm
><primary
>uselápis (ul)</primary
></indexterm
></term>
      <listitem
><para
><screen
>uselápis</screen>
O <userinput
>uselápis</userinput
> pressiona o 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
>usenada</userinput
>. O <userinput
>uselápis</userinput
> pode ser abreviado para <userinput
>ul</userinput
>.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="setpenwidth"/>
    <varlistentry
> 
      <term
>larguradolápis (ll)<indexterm
><primary
>larguradolápis (ll)</primary
></indexterm
></term>
      <listitem
><para
><screen
>larguradolápis X</screen>
A <userinput
>larguradolápis</userinput
> configura a espessura do traço para X <glossterm linkend="pixels"
>pontos</glossterm
>. A <userinput
>larguradolápis</userinput
> pode ser abreviado para <userinput
>ll</userinput
>.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="setfgcolor"/>
    <varlistentry
> 
      <term
>cordolápis (cl)<indexterm
><primary
>cordolápis (cl)</primary
></indexterm
></term>
      <listitem
><para
><screen
>cordolápis R,G,B</screen>
A <userinput
>cordolápis</userinput
> configura a cor do traço. A <userinput
>cordolápis</userinput
> recebe uma <glossterm linkend="rgb"
>combinação de RGB</glossterm
> como parâmetro. A <userinput
>cordolápis</userinput
> pode ser abreviado para <userinput
>cl</userinput
>.</para
></listitem>
    </varlistentry>
  </variablelist>
</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>
  <variablelist>
    <anchor id="resizecanvas"/>
    <varlistentry>
      <term
>tamanhodatela (tt)<indexterm
><primary
>tamanhodatela (tt)</primary
></indexterm
></term>
      <listitem
><para
><screen
>tamanhodatela X,Y</screen>
Com o comando <userinput
>tamanhodatela</userinput
> você poderá alterar o tamanho da área de desenho. Ele recebe dois parâmetros (X e Y) de entrada, em que o X é a nova largura da área de desenho em <glossterm linkend="pixels"
>pontos</glossterm
>, e o Y é a nova altura da mesma área em <glossterm linkend="pixels"
>pontos</glossterm
>. O <userinput
>tamanhodatela</userinput
> pode ser abreviado para <userinput
>tt</userinput
>.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="setbgcolor"/>
    <varlistentry
> 
      <term
>cordofundor (cf)<indexterm
><primary
>cordofundor (cf)</primary
></indexterm
></term>
      <listitem
><para
><screen
>cordofundo R,G,B</screen>
A <userinput
>cordofundo</userinput
> define a cor da área de desenho. A <userinput
>cordofundor</userinput
> recebe uma <glossterm linkend="rgb"
>combinação RGB</glossterm
> como parâmetro. A <userinput
>cordofundo</userinput
> pode ser abreviado para <userinput
>cf</userinput
>.</para
></listitem>
    </varlistentry>
  </variablelist>
<!-- <sect3 id="wrapon">
  <title
>wrapon</title>
  <variablelist>
    <varlistentry
> 
      <term
>wrapon</term>
      <listitem
><para
><screen
>wrapon</screen>
      With the <userinput
>wrapon</userinput
> command you can set <glossterm linkend="wrapping"
>wrapping</glossterm
> <quote
>on</quote
> for the canvas. Please see the glossary if you want to know what <glossterm linkend="wrapping"
>wrapping</glossterm
> is.</para
></listitem>
    </varlistentry>
  </variablelist>
</sect3>
<sect3 id="wrapoff">
  <title
>wrapoff</title>
  <variablelist>
    <varlistentry
> 
      <term
>wrapoff</term>
      <listitem
><para
><screen
>wrapoff</screen>
      With the <userinput
>wrapoff</userinput
> command you can set <glossterm linkend="wrapping"
>wrapping</glossterm
> <quote
>off</quote
> for the canvas: this means the turtle can move off the canvas and can get <quote
>lost</quote
>. Please see the glossary if you want to know what <glossterm linkend="wrapping"
>wrapping</glossterm
> is.</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 bagunçado.</para>
  <variablelist>
    <anchor id="clear"/>
    <varlistentry
> 
      <term
>limpetela (lt)<indexterm
><primary
>limpetela (lt)</primary
></indexterm
></term>
      <listitem
><para
><screen
>limpetela</screen>
Com o <userinput
>limpetela</userinput
>, você poderá limpar todos os desenhos da área de desenho. Todo o resto permanece igual: a posição e o ângulo da tartaruga, a cor da área de trabalho, a visibilidade da tartaruga e o tamanho da área de desenho.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="reset"/>
    <varlistentry
> 
      <term
>apague<indexterm
><primary
>apague</primary
></indexterm
></term>
      <listitem
><para
><screen
>apague</screen>
O <userinput
>apague</userinput
> limpa tudo de forma mais abrangente que o comando <userinput
>limpetela</userinput
>. Depois de um comando <userinput
>apague</userinput
>, tudo fica como estava quando você iniciou o &kturtle;. A tartaruga é posicionada no meio do tela, a cor da área de desenho é branca e a tartaruga irá desenhar uma linha preta na área de desenho e o tamanho da tela é definido para 400 x 400 pontos.</para
></listitem>
    </varlistentry>
  </variablelist>
</sect2>

<sect2 id="sprites">
<title
>A tartaruga é uma imagem móvel</title>
<para
>Muitas pessoas não sabem o que são as imagens móveis ('sprites' em inglês), daí uma breve explicação: as imagens móveis são pequenas imagens que podem percorrer a tela (para mais informações, veja o glossário sobre as <glossterm linkend="sprites"
>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 atual do &kturtle; não suporta ainda o uso de imagens móveis além da tartaruga. Nas versões futuras, você poderá mudar a tartaruga para outra coisa que desejar]</para>
  <variablelist>
    <anchor id="spriteshow"/>
    <varlistentry
> 
      <term
>apareça (ap)<indexterm
><primary
>apareça (ap)</primary
></indexterm
></term>
      <listitem
><para
><screen
>apareça</screen>
O <userinput
>apareça</userinput
> torna a tartaruga visível de novo depois de ter ficado escondida. O <userinput
>apareça</userinput
> pode ser abreviado para <userinput
>ap</userinput
>.</para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="spritehide"/>
    <varlistentry
> 
      <term
>desapareça (da)<indexterm
><primary
>desapareça (da)</primary
></indexterm
></term>
      <listitem
><para
><screen
>desapareça</screen>
O <userinput
>desapareça</userinput
> esconde a tartaruga. Isto pode ser usado se a tartaruga não couber no seu desenho. O <userinput
>desapareça</userinput
> pode ser abreviado para <userinput
>da</userinput
>.</para
></listitem>
    </varlistentry>
  </variablelist>
</sect2>

<sect2 id="writing">
<title
>A tartaruga sabe escrever?</title>
<para
>A resposta é: <quote
>sim</quote
>. A tartaruga sabe escrever e pode escrever tudo o que lhe disser para escrever.</para>
  <variablelist>
    <anchor id="print"/>
    <varlistentry
> 
      <term
>mostre<indexterm
><primary
>mostre</primary
></indexterm
></term>
      <listitem
><para
><screen
>mostre X</screen>
O comando <userinput
>mostre</userinput
> é usado para dizer à tartaruga para escrever algo na área de desenho. O <userinput
>mostre</userinput
> recebe números e texto como parâmetros. Você poderá executar o <userinput
>mostre</userinput
> para vários parâmetros com o sinal <quote
>+</quote
>. Veja aqui um pequeno exemplo: <screen
>$ano = 2003
$autor = "Cies Breijs"
print $autor + " iniciou o projeto do KTurtle em " + $ano + " e ainda continua gostando de trabalhar nele!"
</screen>
      </para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="fontsize"/>
    <varlistentry
> 
      <term
>tamanhodafonte<indexterm
><primary
>tamanhodafonte</primary
></indexterm
></term>
      <listitem
><para
><screen
>tamanhodafonte X</screen>
O <userinput
>tamanhodafonte</userinput
> configura o tamanho da letra que é usado pelo <userinput
>mostre</userinput
>. O <userinput
>tamanhodafonte</userinput
> recebe um parâmetro que deverá ser um número. O tamanho é definido em <glossterm linkend="pixels"
>pontos</glossterm
>.</para
></listitem>
    </varlistentry>
  </variablelist>
</sect2>

<sect2 id="random">
<title
>Um comando que joga aos dados para você</title>
<para
>Existe um comando que lança os dados para você, que se chama <userinput
>aleatório</userinput
> e é muito útil para alguns resultados inesperados.</para>
  <variablelist>
    <varlistentry
> 
      <term
>aleatório (al)<indexterm
><primary
>aleatório (al)</primary
></indexterm
></term>
      <listitem
><para
><screen
>aleatório X,Y</screen>
O <userinput
>aleatório</userinput
> é um comando que recebe parâmetros e devolve resultados. Como parâmetros são necessários dois números, onde o primeiro define o resultado mínimo (X) e o segundo o máximo (Y). O resultado é um número escolhido aleatoriamente que é maior ou igual ao mínimo e menor ou igual ao máximo. Aqui está um pequeno exemplo: <screen>
repita 500 {
  $x = aleatório 1,20
  parafrente $x
  paraesquerda 10 - $x
}
</screen
> Com o comando <userinput
>aleatório</userinput
>, você poderá adicionar um pouco de confusão ao seu programa.</para
></listitem>
    </varlistentry>
  </variablelist>
</sect2>

<sect2 id="dialogs">
<title
>Entrada de dados e reação através de janelas</title>
<para
>Um diálogo é uma pequena janela que fornece algum retorno ou pergunta por alguma entrada. O &kturtle; tem dois comandos para diálogos, chamados<userinput
>mensagem</userinput
> e o <userinput
>pergunte</userinput
></para>
  <variablelist>
    <anchor id="message"/>
    <varlistentry
> 
      <term
>mensagem<indexterm
><primary
>mensagem</primary
></indexterm
></term>
      <listitem
><para
><screen
>mensagem X</screen>
O comando <userinput
>mensagem</userinput
> recebe uma <link linkend="string"
>cadeia de caracteres</link
> como entrada. Exibe então uma janela que contém o texto da <link linkend="string"
>cadeia de caracteres</link
>. <screen
>mensagem "Cies Breijs iniciou o projeto do KTurtle em 2003 e ainda continua gostando de trabalhar nele!"
</screen>
      </para
></listitem>
    </varlistentry>
  </variablelist>
  <variablelist>
    <anchor id="ask"/>
    <varlistentry
> 
      <term
>pergunte<indexterm
><primary
>pergunte</primary
></indexterm
></term>
      <listitem
><para
><screen
>pergunte X</screen>
O <userinput
>pergunte</userinput
> recebe uma <link linkend="string"
>cadeia de caracteres</link
> como entrada. Ele exibe uma janela de diálogo que contém o texto da cadeia de caracteres, tal como acontece no <link linkend="message"
>mensagem</link
>. Além disso, ele também exibe um campo de entrada de texto na janela. Através deste campo, o usuário poderá digitar um <link linkend="number"
>número</link
> ou uma <link linkend="string"
>cadeia de caracteres</link
> que poderá ser guardada num <link linkend="containers"
>recipiente</link
>. Por exemplo <screen>
$entrada = pergunte "Que idade você tem?"
$saída = 2003 - 2009 + $entrada
mostre "Em 2003, você tinha " + $saída + " anos em determinado momento."
</screen
> Quando um usuário cancelar a janela ou não digitar nenhuma informação, o <link linkend="containers"
>recipiente</link
> fica vazio.</para
></listitem>
    </varlistentry>
  </variablelist>
</sect2>

</sect1>



<sect1 id="containers">
<title
>Recipientes</title>
<para
>Os recipientes são letras ou palavras que podem ser usadas pelo programador para guardar algum número ou algum texto. Os recipientes 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
>. Os recipientes podem ser identificados pelo caractere de recipiente <quote
>$</quote
> que procede o seu uso.</para>

<para
>Os recipientes que não são usados não contém nada. Por exemplo, um: <screen>
mostre $N
</screen
> Isto não irá imprimir nada. e você irá obter uma mensagem de erro. </para>

<sect2 id="variables">
<title
>Variáveis: recipientes de números</title>
<para
>Vamos começar com um exemplo: <screen>
$x = 3
mostre $x
</screen
> Na primeira linha, a letra <userinput
>x</userinput
> passou a ser uma variável (um recipiente de números). Como você pode ver, o valor da variável <userinput
>x</userinput
> passou para 3. Na segunda linha, o valor é impresso.</para>
<para
>Lembre-se que, se quisermos exibir um <quote
>x</quote
>, então devemos escrever <screen
>mostre "x"
</screen>
</para>
<para
>Isto 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"
mostre $C
paratrás 30
# o próximo comando imprime "2004 mais 25"
mostre $A + " mais " + $B
paratrás 30
# o próximo comando imprime "1979"
mostre $A - $B
</screen
> Nas duas primeiras linhas, as variáveis <userinput
>A</userinput
> e <userinput
>B</userinput
> são definidas 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
>mostre</userinput
> com <userinput
>paratrás 30</userinput
> no meio. O <userinput
>paratrás 30</userinput
> está lá para garantir que cada resultado fique numa linha diferente. Neste exemplo, você vê também que as variáveis podem ser usadas em <link linkend="math"
>cálculos matemáticos</link
>.</para>
</sect2>

<sect2 id="strings">
<title
>Recipientes 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>
mostre "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 também podem ser guardadas em <link linkend="containers"
>recipientes</link
> assim como <link linkend="number"
>números</link
>. As cadeias de caracteres são parecidas com as variáveis. A maior diferença é que as cadeias de caracteres contém texto ao invés de números. Por este motivo, elas não podem ser usadas em <link linkend="math"
>cálculos matemáticos</link
> e <link linkend="questions"
>perguntas</link
>. Um exemplo do uso de cadeias de caracteres: <screen>
$x = "Olá "
$nome = pergunte "Por favor digite o seu nome..."
print $x + $nome + ", como você está?"
</screen
> Na primeira 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
>pergunte</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 para inserir o seu nome. Quando você, por exemplo, inserir o nome <quote
>José</quote
>, o programa irá imprimir <quote
>Olá José, como 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 sabe fazer contas?</title>
<para
>Sim, o &kturtle; sabe fazer contas para você. Você poderá adicionar (+), 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
mostre "a: "+$a+", b: "+$b+", c: "+$c+", d: "+$d 
</screen
> Você sabe qual o valor de a, b, c e d? Por favor, repare o uso do símbolo de <link linkend="assignment"
>atribuição</link
> <userinput
>=</userinput
>.</para>
<para
>Se você somente queria fazer um cálculo simples, você poderá fazer algo semelhante a isto: <screen
>mostre 2004-12
</screen
></para>
<para
>Agora, um exemplo com parênteses: <screen>
mostre ( ( 20 - 5 ) * 2 / 30 ) + 1
</screen
> O que estiver entre parênteses será calculado em primeiro lugar. Neste exemplo, o 20-5 será calculado, depois será multiplicado por 2, dividido por 30 e depois é adicionado 1 (o que dá 2).</para>
<para
>O &kturtle; tem recurso avançados de matemática. Ele conhece o número <userinput
>pi</userinput
> e funções trigonométricas como <userinput
>seno</userinput
>, <userinput
>cosseno</userinput
>, <userinput
>tangente</userinput
>, <userinput
>arco-seno</userinput
>, <userinput
>arco-cosseno</userinput
>, <userinput
>arco-tangente</userinput
> e as funções <userinput
>raizquadrada</userinput
> e <userinput
>expoente</userinput
>. <indexterm
><primary
>pi</primary
></indexterm>
<indexterm
><primary
>seno, cosseno, tangente</primary
></indexterm>
<indexterm
><primary
>arco-seno, arco-cosseno, arco-tangente</primary
></indexterm>
<indexterm
><primary
>raizquadrada, exponente</primary
></indexterm>
</para>

<sect2 id="round">
<title
>Deixe a tartaruga arredondar seus números</title>
<para
>Se você precisar de números inteiros nos cálculos, use esta função.</para>
  <variablelist>
    <varlistentry>
      <term
>arredonda<indexterm
><primary
>arredonda</primary
></indexterm
></term>
      <listitem
><para
><screen
>arredonda(x)</screen>
<userinput
>arredonda</userinput
> o número fornecido para o inteiro mais próximo. <screen>
mostre arredonda(10.8)
parafrente 20
mostre arredonda(10.3)
parafrente 20
</screen
> Com este código a tartaruga exibirá os números 11 e 10.</para
></listitem>
    </varlistentry>
  </variablelist>
</sect2>
</sect1>

<sect1 id="questions">
<title
>Fazendo perguntas, obtendo respostas...</title>
<para
>O <link linkend="if"
><userinput
>se</userinput
></link
> e o <link linkend="while"
><userinput
>enquanto</userinput
></link
> são <link linkend="controlling-execution"
>controladores de execução</link
> que iremos discutir na próxima seção. Nesta seção iremos usar o comando <userinput
>se</userinput
> para explicar as perguntas.</para>
<sect2 id="q">
<title
>Perguntas</title>
<para
>Um exemplo simples de pergunta: <screen>
$x = 6
se $x &gt; 5 {
  mostre "olá"
}
</screen
> Neste exemplo, a pergunta é <userinput
>x &gt; 5</userinput
>, se a resposta a esta pergunta for <quote
>verdadeiro</quote
>, o código entre chaves será executado. As perguntas são uma parte importante da programação e são usadas geralmente em conjunto com os <link linkend="controlling-execution"
>controladores de execução</link
>, como o <link linkend="if"
><userinput
>se</userinput
></link
>. Todos os números e <link linkend="variables"
>variáveis</link
> (recipientes de números) poderão ser comparados uns com os outros com 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
>verdadeiro</quote
> se o <userinput
>a</userinput
> for igual ao <userinput
>b</userinput
></entry>
</row>
<row>
<entry
><userinput
>a != b</userinput
></entry>
<entry
>não é igual a</entry>
<entry
>a resposta é <quote
>verdadeiro</quote
> se o <userinput
>a</userinput
> não for igual ao <userinput
>b</userinput
></entry>
</row>
<row>
<entry
><userinput
>a &gt; b</userinput
></entry>
<entry
>maior que</entry>
<entry
>a resposta é <quote
>verdadeiro</quote
> se o <userinput
>a</userinput
> for maior que o <userinput
>b</userinput
></entry>
</row>
<row>
<entry
><userinput
>a &lt; b</userinput
></entry>
<entry
>menor que</entry>
<entry
>a resposta é <quote
>verdadeiro</quote
> se o <userinput
>a</userinput
> for menor que o <userinput
>b</userinput
></entry>
</row>
<row>
<entry
><userinput
>a &gt;= b</userinput
></entry>
<entry
>maior ou igual a</entry>
<entry
>a resposta é <quote
>verdadeiro</quote
> se o <userinput
>a</userinput
> for maior ou igual ao <userinput
>b</userinput
></entry>
</row>
<row>
<entry
><userinput
>a &lt;= b</userinput
></entry>
<entry
>menor ou igual a</entry>
<entry
>a resposta é <quote
>verdadeiro</quote
> se o <userinput
>a</userinput
> for menor ou igual ao <userinput
>b</userinput
></entry>
</row>
</tbody>
</tgroup>
</table>
</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
se ($a &lt; $b) e ($b == 5) {
  mostre "olá"
}
</screen
> Neste exemplo, a palavra de colagem <userinput
>e</userinput
> é usada para colar 2 perguntas (<userinput
>a &lt; b</userinput
>, <userinput
>b == 5</userinput
>) juntas. Se um lado do <userinput
>e</userinput
> der uma resposta <quote
>falso</quote
>, a pergunta toda irá responder <quote
>falso</quote
>, porque, com a palavra de colagem <userinput
>e</userinput
>, ambos os lados precisam ser <quote
>verdadeiro</quote
> para que a resposta seja <quote
>verdadeiro</quote
>. Por favor não se esqueça de usar os parênteses ao redor das perguntas!</para>

<para
>Aqui está um resumo esquemático, bem como uma explicação mais detalhada: <table>
<title
>Palavras de colagem de perguntas</title>
<tgroup cols="2">
<tbody>
<row>
<entry
><userinput
>e</userinput
></entry>
<entry
>Ambos os lados têm que ser <quote
>verdadeiro</quote
> para a resposta ser <quote
>verdadeiro</quote
></entry>
</row>
<row>
<entry
><userinput
>ou</userinput
></entry>
<entry
>Se um dos lados for <quote
>verdadeiro</quote
> a resposta é <quote
>verdadeiro</quote
></entry>
</row>
<row>
<entry
><userinput
>não</userinput
></entry>
<entry
>Caso especial: só funciona com uma pergunta! Muda o 'verdadeiro' para 'falso' e o 'falso' para 'verdadeiro'.</entry>
</row>
</tbody>
</tgroup>
</table>
</para>

<sect3 id="and">
<title
>e</title>
<indexterm
><primary
>e</primary
></indexterm>
<para
>Quando são coladas duas perguntas juntas com <userinput
>e</userinput
>, ambos os lados do <userinput
>e</userinput
> terão que ser 'verdadeiro' para que o resultado também seja 'verdadeiro'. Um exemplo: <screen>
$a = 1
$b = 5
se (($a &lt; 10) e ($b == 5)) e ($a &lt; $b) {
  mostre "olá"
}
</screen
> Nestes exemplo, você poderá ver uma pergunta colada a outra pergunta também colada.</para>
</sect3>

<sect3 id="or">
<title
>ou</title>
<indexterm
><primary
>ou</primary
></indexterm>
<para
>Se uma das duas perguntas coladas juntas com o <userinput
>ou</userinput
> for 'verdadeiro', o resultado será também 'verdadeiro'. Um exemplo: <screen>
$a = 1
$b = 5
se (($a &lt; 10) ou ($b == 10)) ou ($a == 0) {
  mostre "olá"
}
</screen
> Neste exemplo, irá ver uma pergunta colada a outra pergunta, que também está colada.</para>
</sect3>

<sect3 id="not">
<title
>não</title>
<indexterm
><primary
>não</primary
></indexterm>
<para
>O <userinput
>não</userinput
> é uma palavra de colagem especial porque somente funciona com uma pergunta de cada vez. O <userinput
>não</userinput
> muda 'verdadeiro' para 'falso' e 'falso' para 'verdadeiro'. Um exemplo: <screen>
$a = 1
$b = 5
se não (($a &lt; 10) e ($b == 5)) {
  mostre "olá"
}
senão
{
  mostre "adeus ;-)"
}
</screen
> Neste exemplo a pergunta colada é 'verdadeiro' ainda que o <userinput
>não</userinput
> mude-a para 'falso'. Assim, no final, <userinput
>"adeus ;-)"</userinput
> é impresso na <link linkend="the-canvas"
>área de desenho</link
>.</para>
</sect3>

</sect2>

</sect1>

<sect1 id="controlling-execution">
<title
>Controlando a execução</title>
<para
>Os controladores de execução permitem-lhe &mdash; como o nome deles indica &mdash; controlar a execução.</para>
<para
>Os comandos de controle de execução são <glossterm
>realçados</glossterm
> em verde escuro e negrito. As chaves são frequentemente usadas juntamente com os controladores de execução e eles são <glossterm
>realçados</glossterm
> em preto.</para>

<sect2 id="wait">
<title
>Fazendo a tartaruga esperar</title>
<para
>Se você já tentou programar um pouco no &kturtle;, você já poderá ter reparado que a tartaruga pode ser bastante rápida desenhando. Este comando faz a tartaruga andar um pouco mais devagar.</para>
  <variablelist>
    <varlistentry>
      <term
>espere<indexterm
><primary
>espere</primary
></indexterm
></term>
      <listitem
><para
><screen
>espere X</screen>
O <userinput
>espere</userinput
> faz a tartaruga esperar X segundos. <screen>
repita 36 {
  parafrente 5
  paradireita 10
  espere 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 "se"</title>
  <variablelist>
    <varlistentry>
      <term
>se<indexterm
><primary
>se</primary
></indexterm
></term>
      <listitem
><para
><screen
>se <link linkend="questions"
>pergunta</link
> { ... }</screen>
O código que é colocado entre chaves somente será executado <userinput
>se</userinput
> a resposta à <link linkend="questions"
>pergunta</link
> for <quote
>verdadeiro</quote
>. Por favor leia, para obter mais informações sobre perguntas, a <link linkend="questions"
>seção de perguntas</link
>. <screen>
$x = 6
se $x &gt; 5 {
  mostre "O x é maior que cinco!"
}
</screen
> Na primeira linha, o <userinput
>x</userinput
> é definido como 6. Na segunda linha, a <link linkend="questions"
>pergunta</link
> <userinput
>x &gt; 5</userinput
> é feita. Uma vez que a resposta a esta pergunta é <quote
>verdadeiro</quote
>, o controlador de execução <userinput
>se</userinput
> irá permitir que o código entre chaves seja executado</para
></listitem>
    </varlistentry>
  </variablelist>
</sect2>

<sect2 id="else">
<title
>Se não, em outras palavras: "senão"</title>
  <variablelist>
    <varlistentry>
      <term
>senão<indexterm
><primary
>senão</primary
></indexterm
></term>
      <listitem
><para
><screen
>se pergunta { ... } senão { ... }</screen>
O <userinput
>senão</userinput
> pode ser usado em adição ao controlador de execução <link linkend="if"
><userinput
>se</userinput
></link
>. O código entre chaves após o <userinput
>senão</userinput
> só é executado se a resposta à <link linkend="questions"
>pergunta</link
> feita é respondida como <quote
>falso</quote
>. <screen>
apague
$x = 4
se $x &gt; 5 {
  mostre "x é maior que cinco!"
}
senão
{
  mostre "x é menor que seis!"
}
</screen
> A <link linkend="questions"
>pergunta</link
> feita é se <userinput
>x</userinput
> é maior que 5. Uma vez que <userinput
>x</userinput
> é definido como 4 na primeira linha a resposta à questão é <quote
>falso</quote
>. Isto significa que o código entre chaves após o <userinput
>senão</userinput
> será executado.</para
></listitem>
    </varlistentry>
  </variablelist>
</sect2>

<sect2 id="while">
<title
>O ciclo "enquanto"</title>
  <variablelist>
    <varlistentry>
      <term
>enquanto<indexterm
><primary
>enquanto</primary
></indexterm
></term>
      <listitem
><para
><screen
>enquanto <link linkend="questions"
>pergunta</link
> { ... }</screen>
O controlador de execução <userinput
>enquanto</userinput
> é um pouco parecido com o <link linkend="if"
><userinput
>se</userinput
></link
>. A diferença é que o <userinput
>enquanto</userinput
> fica repetindo (em ciclo) o código entre os chaves até que a resposta à <link linkend="questions"
>pergunta</link
> seja <quote
>falso</quote
>. <screen>
$x = 1
enquanto $x &lt; 5 {
  parafrente 10
  espere 1
  $x = $x + 1
}
</screen
> Na primeira linha o <userinput
>x</userinput
> é definido como 1. Na segunda linha a <link linkend="questions"
>pergunta</link
> <userinput
>x &lt; 5</userinput
> é feita. Uma vez que a resposta é <quote
>verdadeiro</quote
> o controlador de execução <userinput
>enquanto</userinput
> inicia a execução do código entre chaves até que a resposta à <link linkend="questions"
>pergunta</link
> seja <quote
>falso</quote
>. Neste caso o código entre chaves será executado 4 vezes, porque cada vez que a quinta linha é executada o <userinput
>x</userinput
> é aumentado em 1.</para
></listitem>
    </varlistentry>
  </variablelist>
</sect2>

<sect2 id="repeat">
<title
>O ciclo "repita"</title>
  <variablelist>
    <varlistentry>
      <term
>repita<indexterm
><primary
>repita</primary
></indexterm
></term>
      <listitem
><para
><screen
>repita número { ... }</screen>
O controlador de execução <userinput
>repita</userinput
> é um pouco parecido com o <link linkend="while"
><userinput
>enquanto</userinput
></link
>. A diferença é que o <userinput
>repita</userinput
> fica repetindo (em ciclo) o código entre chaves para um dado número.</para
></listitem>
    </varlistentry>
  </variablelist>
</sect2>

<sect2 id="for">
<title
>O ciclo "para", um ciclo de contagem</title>
  <variablelist>
    <varlistentry>
      <term
>para<indexterm
><primary
>para</primary
></indexterm
><indexterm
><primary
>passo</primary
></indexterm
></term>
      <listitem
><para
><screen
>para <userinput
>ponto inicial</userinput
> até <userinput
>ponto final</userinput
> { ... }</screen>
O ciclo <userinput
>para</userinput
> é um <quote
>ciclo de contagem</quote
>, &ie;, faz um contador para você. <screen>
para $x = 1 até 10 {
  mostre $x * 7
  parafrente 15
}
</screen
> Cada vez que o código entre chaves é executado, o <userinput
>x</userinput
> é incrementado de uma unidade, até que o valor do <userinput
>x</userinput
> chegue a 10. O código entre chaves imprime o valor de <userinput
>x</userinput
> multiplicado por 7. Depois que este programa terminar a sua execução, você irá ver a tabuada do 7 na área de desenho. </para>
     <para
>O passo padrão para um ciclo é 1, você pode usar um outro valor com <screen
>para <userinput
>ponto inicial</userinput
> até <userinput
>ponto final</userinput
> passo <userinput
>tamanho do passo</userinput
> { ... }</screen
></para
></listitem>
    </varlistentry>
  </variablelist>
</sect2>

<sect2 id="break">
<title
>Deixar um ciclo</title>
  <variablelist>
    <varlistentry>
      <term
>quebre<indexterm
><primary
>quebre</primary
></indexterm
></term>
      <listitem
><para
><screen
>quebre</screen>
Termina o ciclo atual imediatamente e transfere o controle da instrução imediatamente seguindo o ciclo</para
></listitem>
    </varlistentry>
  </variablelist>
</sect2>

<sect2 id="exit">
<title
>Para a tartaruga</title>
  <variablelist>
    <varlistentry>
      <term
>sair<indexterm
><primary
>sair</primary
></indexterm
></term>
      <listitem
><para
><screen
>sair</screen>
Finaliza a execução do código.</para
></listitem>
    </varlistentry>
  </variablelist>
</sect2>
</sect1>


<sect1 id="learn">
<title
>Crie os seus próprios comandos com o <quote
>aprenda</quote
></title>
<para
>O <userinput
>aprenda</userinput
><indexterm
><primary
>aprenda</primary
></indexterm
> é um comando muito especial, porque ele é usado para criar seus próprios comandos. O comando que você criar pode ter <glossterm linkend="input-output"
>valores de entrada</glossterm
> e retornar <glossterm linkend="input-output"
>valores de saída</glossterm
>. Vamos dar uma olhada em como um novo comando é criado: <screen>
aprenda círculo $x {
  repita 36 {
    parafrente $x
    paraesquerda 10
  }
}
</screen
> O novo comando é chamado <userinput
>círculo</userinput
>. <userinput
>círculo</userinput
> recebe um <glossterm linkend="input-output"
>valor de entrada</glossterm
>, um número, para configurar o tamanho do círculo. <userinput
>círculo</userinput
> não retorna nenhum <glossterm linkend="input-output"
>valor de saída</glossterm
>. O comando <userinput
>círculo</userinput
> pode agora ser usado como um comando normal no resto do código. Veja este exemplo: <screen
>aprenda círculo $X {
  repita 36 {
    parafrente $X
    paraesquerda 10
  }
}

vápara 200,200
círculo 20

vápara 300,200
círculo 40  
</screen>
</para>
<para
>No próximo exemplo, um comando com valor de retorno é criado. <screen>
apague

aprenda multiplicaPorSi $n {
  $r = $n * $n
  retorne $r
}
$i = pergunte "Por favor digite um número e pressione OK"
mostre $i + " multiplicado por ele mesmo é: " + multiplicaPorSi $i
</screen
> Neste exemplo um novo comando chamado <userinput
>multiplicaPorSi</userinput
> é criado. A entrada deste comando é multiplicada por ela mesmo e então retornada, usando o comando <anchor id="return"/><userinput
>retorne</userinput
>. O comando <userinput
>retorne</userinput
> é a maneira de retornar um valor a partir de uma função que você criou. </para>
<para
>Os comandos podem ter mais de um <glossterm linkend="input-output"
>valor de entrada</glossterm
>. No próximo exemplo, um comando que desenha um retângulo é criado. <screen>
aprenda caixa $X, $Y {
  parafrente $Y
  paradireita 90
  parafrente $X
  paradireita 90
  parafrente $Y
  paradireita 90
  parafrente $X
  paradireita 90
}
</screen
> Agora você pode executar <userinput
>caixa 50, 100</userinput
> e a tartaruda irá desenhar um retângulo na área de desenho. </para>
  
</sect1>

</chapter>
