# Portuguese translations for PLM package
# Copyright (C) 2014 Free Software Foundation, Inc.
# This file is distributed under the same license as the PLM package.
# Automatically generated, 2014.
#
msgid ""
msgstr ""
"Project-Id-Version: PLM mission texts\n"
"POT-Creation-Date: 2015-07-31 10:14+0200\n"
"PO-Revision-Date: 2015-11-10 21:13+0100\n"
"Last-Translator: Fred Maranhão <fred.maranhao@gmail.com>\n"
"Language-Team: none\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"

#. type: Content of: <h1>
#: src/plm/universe/bugglequest/BuggleWorld.html:2
msgid "BuggleWorld"
msgstr "BuggleWorld"

#. type: Content of: outside any tag (error?)
#: src/plm/universe/bugglequest/BuggleWorld.html:3
msgid ""
"This world was invented by Lyn Turbak, at Wellesley College. It is full of "
"Buggles, little animals understanding simple orders, and offers numerous "
"possibilities of interaction with the world: taking or dropping objects, "
"paint the ground, hit walls, etc."
msgstr ""
"Este mundo foi inventado por Lyn Turbak, na Wellesley College. Ele é cheio "
"de Buggles, pequenos animais que entendem ordens simples, e oferece "
"numerosas possiblidades de interação com o mundo: pegar e soltas objetos, "
"pintar o chão, bater em paredes, etc."

#. type: Content of: <h2>
#: src/plm/universe/bugglequest/BuggleWorld.html:8
msgid "Methods understood by buggles"
msgstr "Métodos que os buggles entendem"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:10
msgid "<b>Moving</b>"
msgstr "<b>Se movendo</b>"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:10
msgid "(See also the note on exceptions, below)"
msgstr "(Veja também a nota sobre exceções, abaixo)"

#. type: Content of: <table><tr><td><b>
#: src/plm/universe/bugglequest/BuggleWorld.html:11
#: src/lessons/turmites/universe/TurmiteWorld.html:10
msgid "<b>Turn left"
msgstr "<b>Virar à esquerda"

#. type: Content of: <table><tr><td><b>
#: src/plm/universe/bugglequest/BuggleWorld.html:11
#: src/lessons/turmites/universe/TurmiteWorld.html:10
msgid "Turn right"
msgstr "Virar à direita"

#. type: Content of: <table><tr><td><b>
#: src/plm/universe/bugglequest/BuggleWorld.html:11
#: src/lessons/turmites/universe/TurmiteWorld.html:10
msgid "Turn back"
msgstr "Dar meia volta"

#. type: Content of: <table><tr><td><b>
#: src/plm/universe/bugglequest/BuggleWorld.html:11
#: src/lessons/turmites/universe/TurmiteWorld.html:10
msgid "Moving forward"
msgstr "Mover para a frente"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:11
#: src/lessons/turmites/universe/TurmiteWorld.html:10
msgid "Moving back</b>"
msgstr "Mover para trás</b>"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:12
#: src/lessons/turmites/universe/TurmiteWorld.html:11
msgid "[!java|c]void [/!]left()"
msgstr "[!java|c]void [/!]esquerda()"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:13
#: src/lessons/turmites/universe/TurmiteWorld.html:11
msgid "[!java|c]void [/!]right()"
msgstr "[!java|c]void [/!]direita()"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:14
#: src/lessons/turmites/universe/TurmiteWorld.html:11
msgid "[!java|c]void [/!]back()"
msgstr "[!java|c]void [/!]voltar()"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:15
msgid ""
"[!java|c]void [/!][!python|java|scala]forward()[/!][!c]stepForward()[/!] or "
"[!java|c]void [/!]forward([!java|c]int [/!]steps[!scala]:Int[/!])"
msgstr ""
"[!java|c]void [/!][!python|java|scala]avançar()[/!][!c]avançarUmPasso()[/!] "
"ou [!java|c]void [/!]avançar([!java|c]int [/!]passos[!scala]:Int[/!])"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:16
msgid ""
"[!java|c]void [/!][!python|java|scala]backward()[/!][!c]stepBackward()[/!] "
"or [!java]void [/!]backward([!java|c]int [/!]steps[!scala]:Int[/!])"
msgstr ""
"[!java|c]void [/!][!python|java|scala]recuar()[/!][!c]recuarUmPasso()[/!] ou "
"[!java]void [/!]recuar([!java|c]int [/!]passos[!scala]:Int[/!])"

#. type: Content of: <table><tr><td><b>
#: src/plm/universe/bugglequest/BuggleWorld.html:17
msgid "<b>Get X coordinate"
msgstr "<b>Obter coordenada X"

#. type: Content of: <table><tr><td><b>
#: src/plm/universe/bugglequest/BuggleWorld.html:17
msgid "Get Y coordinate"
msgstr "Obter coordenada Y"

#. type: Content of: <table><tr><td><b>
#: src/plm/universe/bugglequest/BuggleWorld.html:17
msgid "Set X coordinate"
msgstr "Ajustar coordenada X"

#. type: Content of: <table><tr><td><b>
#: src/plm/universe/bugglequest/BuggleWorld.html:17
msgid "Set Y coordinate"
msgstr "Ajustar coordenada Y"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:17
msgid "Set position</b>"
msgstr "Ajustar posição</b>"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:18
msgid "[!java|c]int [/!]getX()[!scala]:Int[/!]"
msgstr "[!java|c]int [/!]getX()[!scala]:Int[/!]"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:19
msgid "[!java|c]int [/!]getY()[!scala]:Int[/!]"
msgstr "[!java|c]int [/!]getY()[!scala]:Int[/!]"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:20
msgid "[!java|c]void [/!]setX([!java|c]int [/!]x[!scala]:Int[/!])"
msgstr "[!java|c]void [/!]setX([!java|c]int [/!]x[!scala]:Int[/!])"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:21
msgid "[!java|c]void [/!]setY([!java|c]int [/!]y[!scala]:Int[/!])"
msgstr "[!java|c]void [/!]setY([!java|c]int [/!]y[!scala]:Int[/!])"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:22
msgid ""
"[!java|c]void [/!]setPos([!java|c]int [/!]x[!scala]:Int[/!], [!java|c]int "
"[/!]y[!scala]:Int[/!])"
msgstr ""
"[!java|c]void [/!]setPos([!java|c]int [/!]x[!scala]:Int[/!], [!java|c]int "
"[/!]y[!scala]:Int[/!])"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:23
msgid ""
"Note that the point (0,0) is on the top left corner, as it is often the case "
"in Computer Science."
msgstr ""
"Observe que o ponto (0,0) está no canto superior esquerdo, o que é comum em "
"ciência da computação."

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:25
msgid "<b>Information on the buggle</b>"
msgstr "<b>Informações sobre o buggle</b>"

#. type: Content of: <table><tr><td><b>
#: src/plm/universe/bugglequest/BuggleWorld.html:26
msgid "<b>Get the color of the body"
msgstr "<b>Obter a cor do corpo"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:26
msgid "Set the color of the body</b>"
msgstr "Ajustar a cor do corpo</b>"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:27
msgid "[!java|c]Color [/!]getBodyColor()[!scala]:Color[/!]"
msgstr "[!java|c]Color [/!]getCorDoCorpo()[!scala]:Cor[/!]"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:28
msgid "[!java|c]void [/!]setBodyColor([!java|c]Color [/!]c[!scala]:Color[/!])"
msgstr "[!java|c]void [/!]setCorDoCorpo([!java|c]Cor [/!]c[!scala]:Cor[/!])"

#. type: Content of: <table><tr><td><b>
#: src/plm/universe/bugglequest/BuggleWorld.html:29
msgid "<b>Look for a wall forward"
msgstr "<b>Procura por uma parede à frente"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:29
msgid "Look for a wall backward</b>"
msgstr "Procura por uma parede atrás</b>"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:30
msgid "[!java]boolean [/!][!c]int [/!]isFacingWall()[!scala]:Boolean[/!]"
msgstr ""
"[!java]boolean [/!][!c]int [/!]estáDeFrenteParaParede()[!scala]:Boolean[/!]"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:31
msgid "[!java]boolean [/!][!c]int [/!]isBackingWall()[!scala]:Boolean[/!]"
msgstr ""
"[!java]boolean [/!][!c]int [/!]estáDeCostasParaParede()[!scala]:Boolean[/!]"

#. type: Content of: <table><tr><td><b>
#: src/plm/universe/bugglequest/BuggleWorld.html:32
msgid "<b>Get heading"
msgstr "<b>Obter direção"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:32
msgid "Set heading</b>"
msgstr "Ajustar direção</b>"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:32
msgid "valid directions are:"
msgstr "direções válidas são:"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:33
msgid "[!java|c]Direction [/!]getDirection()[!scala]:Direction[/!]"
msgstr "[!java|c]Direção [/!]getDireção()[!scala]:Direção[/!]"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:34
msgid ""
"[!java|c]void [/!]setDirection([!java|c]Direction [/!]dir[!scala]:"
"Direction[/!])"
msgstr ""
"[!java|c]void [/!]ajustaDireção([!java|c]Direção [/!]dir[!scala]:Direção[/!])"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:35
msgid ""
"[!scala|java|python]Direction.[/!]NORTH, [!scala|java|python]Direction."
"[/!]EAST, [!scala|java|python]Direction.[/!]SOUTH and [!scala|java|"
"python]Direction.[/!]WEST"
msgstr ""
"[!scala|java|python]Direção.[/!]NORTE, [!scala|java|python]Direção."
"[/!]LESTE, [!scala|java|python]Direção.[/!]SUL e [!scala|java|python]Direção."
"[/!]OESTE"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:36
msgid "Check whether the buggle is currently <b>selected in the interface</b>"
msgstr "Verifica se o buggle está atualmente <b>selecionado na interface</b>"

#. type: Content of: <pre>
#: src/plm/universe/bugglequest/BuggleWorld.html:37
#: src/plm/universe/turtles/TurtleWorld.html:76
#: src/lessons/recursion/hanoi/universe/HanoiWorld.html:27
#, no-wrap
msgid "[!java]boolean [/!][!c]int [/!]isSelected()[!scala]:Boolean[/!]"
msgstr "[!java]boolean [/!][!c]int [/!]estáSelecionado()[!scala]:Boolean[/!]"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:39
msgid "<b>About the brush</b>"
msgstr "<b>Sobre o pincel</b>"

#. type: Content of: <table><tr><td><b>
#: src/plm/universe/bugglequest/BuggleWorld.html:40
msgid "<b>Brush down"
msgstr "<b>Abaixar pincel"

#. type: Content of: <table><tr><td><b>
#: src/plm/universe/bugglequest/BuggleWorld.html:40
msgid "Brush up"
msgstr "Levantar pincel"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:40
msgid "Get brush position</b>"
msgstr "Pegar a posição do pincel"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:41
msgid "[!java|c]void [/!]brushUp()"
msgstr "[!java|c]void [/!]levantarPincel()"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:42
msgid "[!java|c]void [/!]brushDown()"
msgstr "[!java|c]void [/!]abaixarPincel()"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:43
msgid "[!java]boolean [/!][!c]int [/!]isBrushDown()[!scala]:Boolean[/!]"
msgstr ""
"[!java]boolean [/!][!c]int [/!]pincelEstáAbaixado()[!scala]:Boolean[/!]"

#. type: Content of: <table><tr><td><b>
#: src/plm/universe/bugglequest/BuggleWorld.html:44
msgid "<b>Change the brush color"
msgstr "<b>Muda a cor do pincel"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:44
msgid "Get the color of the brush</b>"
msgstr "Obtém a cor do pincel</b>"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:45
msgid "[!java|c]void [/!]setBrushColor([!java|c]Color [/!]c[!scala]:Color[/!])"
msgstr ""
"[!java|c]void [/!]setCorDoPincel([!java|c]Color [/!]c[!scala]:Color[/!])"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:46
msgid "[!java|c]Color [/!]getBrushColor()[!scala]:Color[/!]"
msgstr "[!java|c]Color [/!]getCorDoPincel()[!scala]:Color[/!]"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:48
msgid "<b>Interacting with the world</b>"
msgstr "<b>Interagindo com o mundo</b>"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:49
#: src/lessons/turmites/universe/TurmiteWorld.html:15
msgid "<b>Get the color of the ground</b>"
msgstr "<b>Obtém a cor do chão</b>"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:50
#: src/lessons/turmites/universe/TurmiteWorld.html:15
msgid "[!java|c]Color [/!]getGroundColor()[!scala]:Color[/!]"
msgstr "[!java|c]Color [/!]getCorDoChão()[!scala]:Color[/!]"

#. type: Content of: <table><tr><td><b>
#: src/plm/universe/bugglequest/BuggleWorld.html:52
msgid "<b>Look for a baggle on the ground"
msgstr "<b>Procura por um \"baggle\" no chão"

#. type: Content of: <table><tr><td><b>
#: src/plm/universe/bugglequest/BuggleWorld.html:52
msgid "Look for a baggle in bag"
msgstr "Procura por um \"baggle\" na bolsa"

#. type: Content of: <table><tr><td><b>
#: src/plm/universe/bugglequest/BuggleWorld.html:52
msgid "Pickup a baggle"
msgstr "Pega um \"baggle\""

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:52
msgid "Drop a baggle</b>"
msgstr "Solta um \"baggle\"</b>"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:53
msgid "(see the note on exceptions)"
msgstr "(veja a nota sobre exceções)"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:54
msgid "[!java]boolean [/!][!c]int [/!]isOverBaggle()[!scala]:Boolean[/!]"
msgstr "[!java]boolean [/!][!c]int [/!]estáSobreBaggle()[!scala]:Boolean[/!]"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:55
msgid "[!java]boolean [/!][!c]int [/!]isCarryingBaggle()[!scala]:Boolean[/!]"
msgstr ""
"[!java]boolean [/!][!c]int [/!]estáCarregandoBaggle()[!scala]:Boolean[/!]"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:56
msgid "[!java]void [/!]pickupBaggle()"
msgstr "[!java]void [/!]pegarBaggle()"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:57
msgid "[!java]void [/!]dropBaggle()"
msgstr "[!java]void [/!]soltarBaggle()"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:58
#: src/plm/universe/bugglequest/BuggleWorld.html:70
#: src/plm/universe/bugglequest/BuggleWorld.html:71
#: src/plm/universe/bugglequest/BuggleWorld.html:72
#: src/plm/universe/bugglequest/BuggleWorld.html:73
#: src/plm/universe/bugglequest/BuggleWorld.html:74
#: src/plm/universe/bugglequest/BuggleWorld.html:75
#: src/plm/universe/bugglequest/BuggleWorld.html:76
#: src/plm/universe/bugglequest/BuggleWorld.html:77
#: src/plm/universe/bugglequest/BuggleWorld.html:78
#: src/plm/universe/bugglequest/BuggleWorld.html:79
#: src/plm/universe/bugglequest/BuggleWorld.html:80
#: src/plm/universe/bugglequest/BuggleWorld.html:81
#: src/plm/universe/bugglequest/BuggleWorld.html:82
#: src/lessons/welcome/Main.html:9 src/lessons/welcome/Main.html:92
#: src/lessons/welcome/Main.html:175 src/lessons/welcome/Main.html:255
#: src/lessons/welcome/Main.html:349 src/lessons/welcome/Main.html:429
#: src/lessons/welcome/Main.html:469
#: src/plm/universe/turtles/TurtleWorld.html:82
#: src/plm/universe/turtles/TurtleWorld.html:83
#: src/plm/universe/turtles/TurtleWorld.html:84
#: src/plm/universe/turtles/TurtleWorld.html:85
#: src/plm/universe/turtles/TurtleWorld.html:86
#: src/plm/universe/turtles/TurtleWorld.html:87
#: src/plm/universe/turtles/TurtleWorld.html:88
#: src/plm/universe/turtles/TurtleWorld.html:89
#: src/plm/universe/turtles/TurtleWorld.html:90
#: src/plm/universe/turtles/TurtleWorld.html:91
#: src/plm/universe/turtles/TurtleWorld.html:92
#: src/plm/universe/turtles/TurtleWorld.html:93
#: src/plm/universe/turtles/TurtleWorld.html:94
msgid "&nbsp;"
msgstr "&nbsp;"

#. type: Content of: <table><tr><td><b>
#: src/plm/universe/bugglequest/BuggleWorld.html:60
msgid "<b>Look for a message"
msgstr "<b>Procura por uma mensagem"

#. type: Content of: <table><tr><td><b>
#: src/plm/universe/bugglequest/BuggleWorld.html:60
msgid "Add a message"
msgstr "Adiciona uma mensagem"

#. type: Content of: <table><tr><td><b>
#: src/plm/universe/bugglequest/BuggleWorld.html:60
msgid "Read the message"
msgstr "Lê a mensagem"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:60
msgid "Erase the message</b>"
msgstr "Apaga a mensagem</b>"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:61
msgid "[!java]boolean [/!][!c]int [/!]isOverMessage()[!scala]:Boolean[/!]"
msgstr "[!java]boolean [/!][!c]int [/!]estáSobreMensagem()[!scala]:Boolean[/!]"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:62
msgid ""
"[!java]void [/!]writeMessage([!java]String [/!][!c]char* [/!]msg[!scala]:"
"String[/!])"
msgstr ""
"[!java]void [/!]escreverMensagem([!java]String [/!][!c]char* [/!]msg[!scala]:"
"String[/!])"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:63
msgid "[!java]String [/!][!c]char* [/!]readMessage()[!scala]:String[/!]"
msgstr "[!java]String [/!][!c]char* [/!]lerMensagem()[!scala]:String[/!]"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:64
msgid "[!java]void [/!]clearMessage()"
msgstr "[!java]void [/!]limparMensagem()"

#. type: Content of: <h2>
#: src/plm/universe/bugglequest/BuggleWorld.html:67
#: src/plm/universe/turtles/TurtleWorld.html:79
msgid "Valid colors"
msgstr "Cores válidas"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:69
#: src/plm/universe/turtles/TurtleWorld.html:81
msgid "Name"
msgstr "Nome"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:69
#: src/plm/universe/turtles/TurtleWorld.html:81
msgid "Color"
msgstr "Cor"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:70
#: src/plm/universe/turtles/TurtleWorld.html:82
msgid "[!scala|java|python]Color.[/!]black"
msgstr "[!scala|java|python]Cor.[/!]black"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:71
#: src/plm/universe/turtles/TurtleWorld.html:83
msgid "[!scala|java|python]Color.[/!]blue"
msgstr "[!scala|java|python]Cor.[/!]azul"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:72
#: src/plm/universe/turtles/TurtleWorld.html:84
msgid "[!scala|java|python]Color.[/!]cyan"
msgstr "[!scala|java|python]Cor.[/!]ciano"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:73
#: src/plm/universe/turtles/TurtleWorld.html:85
msgid "[!scala|java|python]Color.[/!]darkGray"
msgstr "[!scala|java|python]Cor.[/!]cinzaEscuro"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:74
#: src/plm/universe/turtles/TurtleWorld.html:86
msgid "[!scala|java|python]Color.[/!]gray"
msgstr "[!scala|java|python]Cor.[/!]cinza"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:75
#: src/plm/universe/turtles/TurtleWorld.html:87
msgid "[!scala|java|python]Color.[/!]green"
msgstr "[!scala|java|python]Cor.[/!]verde"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:76
#: src/plm/universe/turtles/TurtleWorld.html:88
msgid "[!scala|java|python]Color.[/!]lightGray"
msgstr "[!scala|java|python]Cor.[/!]cinzaClaro"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:77
#: src/plm/universe/turtles/TurtleWorld.html:89
msgid "[!scala|java|python]Color.[/!]magenta"
msgstr "[!scala|java|python]Cor.[/!]magenta"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:78
#: src/plm/universe/turtles/TurtleWorld.html:90
msgid "[!scala|java|python]Color.[/!]orange"
msgstr "[!scala|java|python]Cor.[/!]laranja"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:79
#: src/plm/universe/turtles/TurtleWorld.html:91
msgid "[!scala|java|python]Color.[/!]pink"
msgstr "[!scala|java|python]Cor.[/!]rosa"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:80
#: src/plm/universe/turtles/TurtleWorld.html:92
msgid "[!scala|java|python]Color.[/!]red"
msgstr "[!scala|java|python]Cor.[/!]vermelho"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:81
#: src/plm/universe/turtles/TurtleWorld.html:93
msgid "[!scala|java|python]Color.[/!]white"
msgstr "[!scala|java|python]Cor.[/!]branco"

#. type: Content of: <table><tr><td>
#: src/plm/universe/bugglequest/BuggleWorld.html:82
#: src/plm/universe/turtles/TurtleWorld.html:94
msgid "[!scala|java|python]Color.[/!]yellow"
msgstr "[!scala|java|python]Cor.[/!]amarelo"

#. type: Content of: <h2>
#: src/plm/universe/bugglequest/BuggleWorld.html:85
msgid "Note on exceptions"
msgstr "Nota sobre exceções"

#. type: Content of: outside any tag (error?)
#: src/plm/universe/bugglequest/BuggleWorld.html:86
msgid ""
"Regular buggles throw a BuggleWallException exception if you ask them to "
"traverse a wall.  They throw a NoBaggleUnderBuggleException exception if you "
"ask them to pickup a baggle from an empty cell, or a "
"AlreadyHaveBaggleException exception if they already carry a baggle.  Trying "
"to drop a baggle on a cell already containing one throws an "
"AlreadyHaveBaggleException exception.  Dropping a baggle when you have none "
"throws a DontHaveBaggleException."
msgstr ""
"Buggles normais lançam uma exceção BuggleWallException se você pede para "
"eles atravessarem uma parede.  Eles lançam uma exceção "
"NoBaggleUnderBuggleException se você pede para eles pegarem um \"baggle\" de "
"uma célula vazia, ou uma exceção AlreadyHaveBaggleException se eles já "
"carregam um \"baggle\".  Tentar soltar um \"baggle\" numa célula que já "
"contém outro lança uma exceção AlreadyHaveBaggleException.  Soltar um "
"\"baggle\" quando você não tem nenhum lança uma DontHaveBaggleException."

#. type: Content of: <p>
#: src/plm/universe/bugglequest/BuggleWorld.html:93
msgid ""
"SimpleBuggles (ie, the one used in first exercises) display an error message "
"on problem so that you don't need to know what an exception is."
msgstr ""
"SimpleBuggles (ie, aqueles usados nos primeiros exercícios) exibem uma "
"mensagem de erro num problema de forma que você não precise saber o que é "
"uma exceção."

#. type: Content of: <h1>
#: src/plm/universe/bat/BatWorld.html:2
msgid "BatWorld"
msgstr "BatWorld"

#. type: Content of: <p>
#: src/plm/universe/bat/BatWorld.html:4
msgid ""
"This world is a simplistic testing environment largely inspired from the "
"http://codingbat.com invented by Nick Parlente."
msgstr ""
"Este mundo é um ambiente de testes simplista largamente inspirado no http://"
"codingbat.com criado por Nick Parlente."

#. type: Content of: <p>
#: src/plm/universe/bat/BatWorld.html:7
msgid ""
"The typical exercises are very short ones, aiming at improving the tactical "
"programming abilities of the students. That is to say that you will be "
"presented a quite long list of very little exercises about rather simple "
"things. The idea is to train you on these issues until they become automatic "
"to you."
msgstr ""
"Os exercícios são bem curtos, e têm como objetivo melhorar as habilidades de "
"programação tática dos estudantes. Isto significa que você irá ser "
"apresentado a uma longa lista de pequenos exercícios sobre coisas simples. A "
"ideia é treinar estes aspectos simples até que eles fiquem automáticos para "
"você."

#. type: Content of: <p>
#: src/plm/universe/bat/BatWorld.html:13
msgid ""
"In contrary to the other worlds, the BatWorld does not provide any fancy "
"abstraction nor visualization. You have to fill a function, which gets "
"called for a bunch of parameter sets, and that's it."
msgstr ""
"Ao contrário dos outros mundos, o \"BatWorld\" não fornece qualquer "
"abstração ou visualização legal. Você tem simplesmente que preencher uma "
"função, que é chamada com um conjunto de parâmetros, e é isto."

#. type: Content of: <p>
#: src/plm/universe/bat/BatWorld.html:17
msgid ""
"For more information, you should refer to the CodingBat.com documentation, "
"which contains for example a very useful documentation on boolean operators: "
"http://codingbat.com/doc/ifboolean.html"
msgstr ""
"Para mais informações, você deve consultar a documentação do CodingBat.com, "
"que contém por exemplo uma documentação sobre operadores booleanos bem útil: "
"http://codingbat.com/doc/ifboolean.html"

#. type: Content of: <h3>
#: src/lessons/welcome/Main.html:2 src/lessons/welcome/short_desc.html:2
msgid "First steps"
msgstr "Primeiros passos"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/Main.html:4
msgid ""
"This first lesson will lead your first steps in programming. It is intended "
"for beginners. List of seen notions per exercise:"
msgstr ""
"A primeira lição vai te guiar pelos primeiros passos em programação. Ela é "
"feita para iniciantes. Lista de noções vistas por exercício:"

#. type: Content of: <h2>
#: src/lessons/welcome/Main.html:10 src/lessons/welcome/Main.html:93
#: src/lessons/welcome/Main.html:176 src/lessons/welcome/Main.html:256
#: src/lessons/welcome/Main.html:350 src/lessons/welcome/Main.html:430
#: src/lessons/welcome/Main.html:470
#: src/lessons/welcome/instructions/Instructions.html:2
msgid "Instructions"
msgstr "Instruções"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/Main.html:11 src/lessons/welcome/Main.html:94
#: src/lessons/welcome/Main.html:177 src/lessons/welcome/Main.html:257
#: src/lessons/welcome/Main.html:351 src/lessons/welcome/Main.html:431
#: src/lessons/welcome/Main.html:471
msgid "Comments"
msgstr "Comentários"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/Main.html:12 src/lessons/welcome/Main.html:95
#: src/lessons/welcome/Main.html:178 src/lessons/welcome/Main.html:258
#: src/lessons/welcome/Main.html:352 src/lessons/welcome/Main.html:432
#: src/lessons/welcome/Main.html:472
msgid "Conditionals/ Expressions"
msgstr "Condicionais/ Expressões"

#. type: Content of: <h2>
#: src/lessons/welcome/Main.html:13 src/lessons/welcome/Main.html:79
#: src/lessons/welcome/Main.html:96 src/lessons/welcome/Main.html:179
#: src/lessons/welcome/Main.html:259 src/lessons/welcome/Main.html:353
#: src/lessons/welcome/Main.html:433 src/lessons/welcome/Main.html:473
#: src/lessons/welcome/loopwhile/LoopWhile.html:2
msgid "While loops"
msgstr "Loops while (enquanto)"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/Main.html:14 src/lessons/welcome/Main.html:97
#: src/lessons/welcome/Main.html:180 src/lessons/welcome/Main.html:260
#: src/lessons/welcome/Main.html:354 src/lessons/welcome/Main.html:434
#: src/lessons/welcome/Main.html:474
msgid "Variables"
msgstr "Variáveis"

#. type: Content of: <h2>
#: src/lessons/welcome/Main.html:15 src/lessons/welcome/Main.html:98
#: src/lessons/welcome/Main.html:134 src/lessons/welcome/Main.html:181
#: src/lessons/welcome/Main.html:261 src/lessons/welcome/Main.html:355
#: src/lessons/welcome/Main.html:435 src/lessons/welcome/Main.html:475
#: src/lessons/welcome/loopfor/LoopFor.html:2
msgid "For loops"
msgstr "Loops for"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/Main.html:16 src/lessons/welcome/Main.html:99
#: src/lessons/welcome/Main.html:182 src/lessons/welcome/Main.html:262
#: src/lessons/welcome/Main.html:356 src/lessons/welcome/Main.html:436
#: src/lessons/welcome/Main.html:476
msgid "Do/While loops"
msgstr "loops Do/While (faça/enquanto)"

#. type: Content of: <h2>
#: src/lessons/welcome/Main.html:17 src/lessons/welcome/Main.html:100
#: src/lessons/welcome/Main.html:162 src/lessons/welcome/Main.html:183
#: src/lessons/welcome/Main.html:263 src/lessons/welcome/Main.html:357
#: src/lessons/welcome/Main.html:437 src/lessons/welcome/Main.html:477
#: src/lessons/welcome/methods/basics/Methods.html:2
msgid "Methods"
msgstr "Métodos"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/Main.html:18 src/lessons/welcome/Main.html:101
#: src/lessons/welcome/Main.html:184 src/lessons/welcome/Main.html:264
#: src/lessons/welcome/Main.html:358 src/lessons/welcome/Main.html:438
#: src/lessons/welcome/Main.html:478
msgid "Switch"
msgstr "Switch"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/Main.html:19 src/lessons/welcome/Main.html:102
#: src/lessons/welcome/Main.html:185 src/lessons/welcome/Main.html:265
#: src/lessons/welcome/Main.html:359 src/lessons/welcome/Main.html:439
#: src/lessons/welcome/Main.html:479
msgid "Arrays"
msgstr "Arrays"

#. type: Content of: <h2>
#: src/lessons/welcome/Main.html:23
#: src/lessons/welcome/environment/Environment.html:2
msgid "Welcome in the Buggles' World"
msgstr "Bem-vindo ao mundo dos Buggles"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/Main.html:37
msgid "Java Instructions"
msgstr "Instruções Java"

#. type: Content of: <h2>
#: src/lessons/welcome/Main.html:51
#: src/lessons/welcome/instructions/InstructionsDrawG.html:2
msgid "Writing more complex programs"
msgstr "Escrevendo programas mais complexos"

#. type: Content of: <h2>
#: src/lessons/welcome/Main.html:65
#: src/lessons/welcome/conditions/Conditions.html:2
msgid "Conditional instructions"
msgstr "Instruções condicionais"

#. type: Content of: <h2>
#: src/lessons/welcome/Main.html:106
#: src/lessons/welcome/loopwhile/BaggleSeeker.html:2
msgid "Baggle Seeking"
msgstr "Procurando Baggles"

#. type: Content of: <h2>
#: src/lessons/welcome/Main.html:120
#: src/lessons/welcome/variables/Variables.html:2
msgid "Storing and manipulating data"
msgstr "Armazenando e manipulando dados"

#. type: Content of: <h2>
#: src/lessons/welcome/Main.html:148
#: src/lessons/welcome/loopdowhile/LoopDoWhile.html:2
msgid "Do .. while loops"
msgstr "Loops Do .. while (faça .. enquanto)"

#. type: Content of: <h2>
#: src/lessons/welcome/Main.html:188
#: src/lessons/welcome/methods/basics/MethodsDogHouse.html:2
msgid "Building methodically"
msgstr "Construindo metodicamente"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/Main.html:202
msgid "Methods returning a result"
msgstr "Métodos retornando um resultado"

#. type: Content of: <h2>
#: src/lessons/welcome/Main.html:215
#: src/lessons/welcome/methods/args/MethodsArgs.html:2
msgid "Methods with parameters"
msgstr "Métodos com perâmetros"

#. type: Content of: <h2>
#: src/lessons/welcome/Main.html:229
#: src/lessons/welcome/methods/picture/PictureMono1.html:2
msgid "Methodically drawing"
msgstr "desenhando metodicamente"

#. type: Content of: <h2>
#: src/lessons/welcome/Main.html:242
#: src/lessons/welcome/methods/picture/PictureMono2.html:2
msgid "Methodically drawing (only bigger)"
msgstr "Desenhando metodicamente (apenas grande)"

#. type: Content of: <h2>
#: src/lessons/welcome/Main.html:268
#: src/lessons/welcome/methods/picture/PictureMono3.html:2
msgid "Drawing bigger and bigger"
msgstr "Desenhando maior e maior"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/Main.html:281
msgid "Even more pattern to draw"
msgstr "Mais padrões para desenhar"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/Main.html:295
msgid "Buggle Dance Revolution"
msgstr "Buggle Dance Revolution"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/Main.html:309
msgid "Buggle Dance Revolution 2"
msgstr "Buggle Dance Revolution 2"

#. type: Content of: <h2>
#: src/lessons/welcome/Main.html:323
#: src/lessons/welcome/methods/slug/SlugHunting.html:2
msgid "Slug Hunting"
msgstr "Caça à lesma"

#. type: Content of: <h2>
#: src/lessons/welcome/Main.html:336
#: src/lessons/welcome/methods/slug/SlugTracking.html:2
msgid "Slug Tracking"
msgstr "Rastreando a lesma"

#. type: Content of: <h2>
#: src/lessons/welcome/Main.html:362
#: src/lessons/welcome/traversal/Snake.html:2
msgid "Snake World"
msgstr "Mundo das cobras"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/Main.html:376
msgid "Knitting and Arrays"
msgstr "tricô e Arrays"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/Main.html:390
msgid "Knitting, Arrays and modulos"
msgstr "tricô, arrays e módulos"

#. type: Content of: <h2>
#: src/lessons/welcome/Main.html:403
#: src/lessons/welcome/traversal/column/TraversalByColumn.html:2
msgid "Traversal by column"
msgstr "Percorrer pelas colunas"

#. type: Content of: <h2>
#: src/lessons/welcome/Main.html:416
#: src/lessons/welcome/traversal/line/TraversalByLine.html:2
msgid "Traversal by line"
msgstr "Percorrer pelas linhas"

#. type: Content of: <h2>
#: src/lessons/welcome/Main.html:442
#: src/lessons/welcome/traversal/zigzag/TraversalZigZag.html:2
msgid "Zig-zag traversal"
msgstr "Percorrer em zig-zag"

#. type: Content of: <h2>
#: src/lessons/welcome/Main.html:455
#: src/lessons/welcome/traversal/diagonal/TraversalDiagonal.html:2
msgid "Diagonal Traversal"
msgstr "Percorrer na diagonal"

#. type: Content of: <h2>
#: src/lessons/welcome/Main.html:483
msgid "Meaning of the symbols"
msgstr "Significado dos símbolos"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/Main.html:486
msgid "Introducing the concept"
msgstr "Introduzindo o conceito"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/Main.html:489
msgid "Working on the concept"
msgstr "Trabalhando o conceito"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/Main.html:492
msgid "Concept assumed mastered"
msgstr "Conceito tido como dominado"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/Main.html:495
msgid "Concept not mandated by the exercise"
msgstr "Conceito não é obrigatório para o exercício"

#. type: Content of: <h2>
#: src/lessons/welcome/Main.html:501
msgid "What will I learn?"
msgstr "O que irei aprender?"

#. type: Content of: <p>
#: src/lessons/welcome/Main.html:502
msgid ""
"You will learn the very basics of programming. At least, you will be "
"presented the most important concepts, allowing you to read most simple "
"algorithms. You will not be able to write or read full programs because you "
"will still not know about objects, but you will master what is called "
"\"Tactical programming\", meaning that you will master the syntax enough to "
"not have any issue with it, allowing you to focus on the fundamental "
"problems of what you want to solve instead of struggling with syntactic "
"difficulties."
msgstr ""
"Você irá aprender o básico de programação. pelo menos, você irá ser "
"apresentado aos mais importantes conceitos, permitindo que você leia a "
"maioria dos algoritmos simples. Você não será capaz de escrever ou ler "
"programas completos por que você ainda não saberá nada sobre objetos, mas "
"você irá dominar o que é chamado de \"programação tática\", ou seja, você "
"vai dominar a sintaxe o suficiente para não ter qualquer problema com ela, "
"permitindo que você foque nos problemas funcamentais que você quer resolver "
"ao invés de se debater com dificuldades de sintaxe."

#. type: Content of: <p>
#: src/lessons/welcome/short_desc.html:3
msgid ""
"This first lesson will lead your first steps in programming. It is intended "
"for beginners."
msgstr ""
"Esta primeira lição vai guiar você pelos primeiros passos em programação. "
"Ela foi feita para iniciantes."

#. type: Content of: <p>
#: src/lessons/welcome/short_desc.html:6
msgid ""
"If you are not sure, go for this lesson that will teach you the bases of "
"programming."
msgstr ""
"Se você está perdido, venha para esta lição que ela irá te ensinar as bases "
"da programação."

#. type: Content of: <p>
#: src/lessons/welcome/environment/Environment.html:4
msgid ""
"You just started the Programmer's Learning Machine. This is a Learning "
"Management System aiming at teaching the art of computer programming through "
"interactive exercises. It is constituted by a set of exercises grouped by "
"lessons, allowing you to practice at your own pace. Currently, the "
"environment is configured to be programmed in the [!thelang/] programming "
"language, but you can change it from the Language menu if you want, or by "
"clicking on the [!thelang/] icon at the right of the status bar below."
msgstr ""
"Você acaba de iniciar o Programmer's Learning Machine (ou Máquina de "
"Aprendizado do Programador). Este é um sistema de gestão de aprendizagem "
"para ensinar a arte da programação de computadores através de exercícios "
"interativos. É formado por um conjunto de exercícios agrupados por lições, "
"para que você possa aprender no seu tempo. No momento, o ambiente está "
"configurado para ser programado na linguagem de programação [!thelang/], mas "
"você pode mudar isto no menu de Idioma/linguagem se você quiser, ou clicando "
"no ícone [!thelang/] na direita da barra de status."

#. type: Content of: <p>
#: src/lessons/welcome/environment/Environment.html:11
msgid ""
"In this first lesson, the buggles will lead your first steps in programming."
msgstr ""
"Nesta primeira lição, os buggles vão guiar seus primeiros passos na "
"programação."

#. type: Content of: <h3>
#: src/lessons/welcome/environment/Environment.html:13
msgid "The <i>buggles</i>? What is this??"
msgstr "Os <i>buggles</i>? O que é isso??"

#. type: Content of: <p>
#: src/lessons/welcome/environment/Environment.html:15
msgid ""
"The buggles are little animals obeying any order you may give them. In each "
"exercise, you have to provide them with the right instructions so that the "
"world turns into the objective of the exercise. For example in this "
"exercise, you should instruct your buggle to move forward once. You can see "
"that by checking the difference between the <i>World</i> view and the "
"<i>Objective</i> one.  Depending on the exercise (and your settings in the "
"Language menu), your code must be written in either C, Java, Python or Scala."
msgstr ""
"Os buggles são pequenos animais que obedecem a qualquer ordem que você dá a "
"eles. Em cada exercício, você tem que fornecer a eles as instruções corretas "
"para que o mundo se torne o objetivo do exercício. Por exemplo, neste "
"exercício você deve instruir seu buggle a avançar um passo. Você pode ver "
"isto verificando a diferença entre a visão <i>Mundo</i> e a visão "
"<i>Objetivo</i>. Dependendo das lições (e suas configurações no menu Idioma/"
"linguagem), seu código deve ser escrito em C, Java, Python ou Scala."

#. type: Content of: <h3>
#: src/lessons/welcome/environment/Environment.html:23
msgid "Working environment"
msgstr "Ambiente de trabalho"

#. type: Content of: <p>
#: src/lessons/welcome/environment/Environment.html:25
msgid ""
"Before going any further, get familiar with the working environment. Have a "
"look at the several elements composing the main window, move your mouse over "
"them to show the tooltip, and experiment with the elements to see what they "
"do.  The white area below is the console: this is where errors and messages "
"get displayed."
msgstr ""
"Antes de seguir adiante, se acostume com o ambiente de trabalho. Dê uma "
"olhada nos vários elementos que compõe a janela principal, mova seu mouse "
"sobre eles para ver as dicas, e experimente os elementos para ver o que eles "
"fazem. A área branca abaixo é o console: é onde erros e mensagens aparecem."

#. type: Content of: <p>
#: src/lessons/welcome/environment/Environment.html:31
msgid ""
"If your code contains errors (and code always do at some point), the "
"computer will display error messages in the console. You obviously have to "
"fix the errors to pass the exercises. The messages that get displayed may "
"sound scary at first glance, but don't panic. The compiler is only somehow "
"limited in its communication abilities, but he's not mean. If you look "
"closer, the solution to solve your issue is written in the middle of those "
"cryptic messages. You will see, with a bit of habit, we get used to it."
msgstr ""
"Se seu código tem erros (e qualquer código sempre vai ter em algum momento), "
"o computador vai exibir mensagens de erro no console. Você obviamente terá "
"que consertar os erros para passar nos exercícios. As mensagens que são "
"mostradas podem soar assustadoras à primeira vista, mas não entre em pânico. "
"O compilador é meio limitado nas suas capacidades de comunicação, mas ele "
"não faz de má-vontade. Se você olhar de perto, a solução para o problema "
"está escrita no meio daquelas mensagens complicadas. Você vai notar que com "
"um pouco de hábito a gente se acostuma."

#. type: Content of: <h3>
#: src/lessons/welcome/environment/Environment.html:39
msgid "What am I supposed to do?"
msgstr "O que eu devo fazer?"

#. type: Content of: <p>
#: src/lessons/welcome/environment/Environment.html:41
msgid ""
"It's time to write your first program. Simply ask your buggle to move one "
"step forward using the Source Code pane. For that, simply write the "
"following code (clicking on the interactive controls is not enough: You have "
"to write the code after experimenting interactively)."
msgstr ""
"É chegada a hora de construir seu primeiro programa. Simplesmente peça a seu "
"buggle para dar um passo para frente usando o painel SourceCode (Código "
"Fonte). Para isto, simplesmente escreva o seguinte código (clicar nos "
"controles iterativos não é o suficiente: você tem que escrever  o código e "
"depois experimentar interativamente)."

#. type: Content of: <pre>
#: src/lessons/welcome/environment/Environment.html:45
#: src/lessons/welcome/instructions/Instructions.html:46
#, no-wrap
msgid "[!java|scala|python]forward()[!java];[/!][/!][!c]stepForward();[/!]"
msgstr "[!java|scala|python]avançar()[!java];[/!][/!][!c]avançarUmPasso();[/!]"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/environment/Environment.html:46
#: src/lessons/welcome/loopfor/LoopFor.html:57
#: src/lessons/welcome/bdr/BDR.html:188
msgid "[!java|c]"
msgstr "[!java|c]"

#. type: Content of: <p>
#: src/lessons/welcome/environment/Environment.html:46
msgid ""
"Do not forget the final <code>;</code> which tells the compiler that the "
"instruction is over (yes, computers are so dumb that they cannot <i>guess</"
"i> obvious stuff like this)."
msgstr ""
"Não esqueça do <code>;</code> final que diz ao compilador que a instrução "
"está encerrada (sim, o computador é tão bocó que ele não consegue "
"<i>adivinhar</i> coisas óbvias como isto)."

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/environment/Environment.html:48
#: src/lessons/welcome/instructions/Instructions.html:35
#: src/lessons/welcome/variables/Variables.html:78
#: src/lessons/welcome/variables/Variables.html:152
#: src/lessons/welcome/loopfor/LoopFor.html:80
#: src/lessons/welcome/loopdowhile/LoopDoWhile.html:54
#: src/lessons/welcome/array/basics/Array1.html:183
#: src/lessons/welcome/array/basics/Array1.html:209
#: src/lessons/welcome/methods/args/MethodsArgs.html:66
#: src/lessons/welcome/methods/picture/MethodsPicture.html:40
#: src/lessons/welcome/bdr/BDR.html:60 src/lessons/welcome/bdr/BDR.html:195
#: src/lessons/welcome/bdr/BDR2.html:130
#: src/lessons/turmites/langton/Langton.html:32
#: src/lessons/turmites/helloturmite/HelloTurmite.html:65
#: src/lessons/sort/basic/comb/AlgCombSort.html:39
#: src/lessons/recursion/cons/universe/ConsWorld.html:35
#: src/lessons/recursion/cons/Length.html:8
#: src/lessons/recursion/lego/square/FourSquare.html:46
#: src/lessons/maze/pledge/PledgeMaze.html:68
#: src/lessons/welcome/bat/bool1/Max1020.html:6
msgid "[/!]"
msgstr "[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/environment/Environment.html:50
msgid ""
"Once done, click on run. You can proceed to next exercise once it works."
msgstr ""
"Uma vez feito, clique em rodar. Você pode seguir para o próximo exercício "
"assim que este funcionar."

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/instructions/Instructions.html:4
msgid ""
"Congratulations! You just wrote your first program! You got the idea now: "
"programming is nothing more than giving simple instructions to the computer "
"that blindly apply them. The main difficulty is to explain stuff to "
"something as stupid as a computer..."
msgstr ""
"Parabéns! Você acaba de escrever seu primeiro programa! Você agora captou a "
"ideia: programar nada mais é que dar instruções simples para o computador, "
"que as realiza cegamente. A maior dificuldade é explicar tudo para algo tão "
"idiota quanto um computador..."

#. type: Content of: <p>
#: src/lessons/welcome/instructions/Instructions.html:9
msgid ""
"Programs are mainly suites of method calls, which are no more than a list of "
"simple orders given to the machine. It is very similar to a recipe stating "
"<i>Melt the chocolate pieces, add sugar, cool the mix and serve</i>.  In "
"your programs, such built instructions are called functions or methods, and "
"you should add parenthesis to invoke them:"
msgstr ""
"Programas são principalmente conjuntos de chamadas de métodos, que são nada "
"mais que listas de ordens simples dadas à máquina. É muito semelhante a uma "
"receita dizendo <i>Derreta os pedaços de chocolate, adicione açucar, mexa e "
"sirva</i>. Em seus programas, tais instruções são chamadas funções ou "
"métodos, e você deve acrescentar parêntesis para invocá-las:"

#. type: Content of: <pre>
#: src/lessons/welcome/instructions/Instructions.html:14
#, no-wrap
msgid "nameOfTheMethod()"
msgstr "nomeDoMétodo()"

#. type: Content of: <p>
#: src/lessons/welcome/instructions/Instructions.html:16
msgid ""
"[!thelang] wants to have the instructions separated by semi-columns (;)[!"
"python|scala] or by new lines[/!].  The previous example would thus be "
"written in the following way[!python|scala] (you can also add semi-columns "
"at the end of the lines, but this is not mandatory)[/!]."
msgstr ""
"[!thelang] precisa das instruções separadas por ponto-e-vírgula (;)[!python|"
"scala] ou por quebra de linhas[/!].  O exemplo anterior poderia ter sido "
"escrito da seguinte forma[!python|scala] (você também pode adicionar ponto-e-"
"vírgula no final das linhas, mas isto não é obrigatório)[/!]."

#. type: Content of: <pre>
#: src/lessons/welcome/instructions/Instructions.html:22
#, no-wrap
msgid ""
"meltTheChocolatePieces()[!java|c];[/!]\n"
"addSugar()[!java|c];[/!]\n"
"coolMix()[!java|c];[/!]\n"
"serve()[!java|c];[/!]\n"
msgstr ""
"derretaOsPedaçosDeChocolate()[!java|c];[/!]\n"
"adicioneAçucar()[!java|c];[/!]\n"
"mexa()[!java|c];[/!]\n"
"sirva()[!java|c];[/!]\n"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/instructions/Instructions.html:28
#: src/lessons/welcome/variables/Variables.html:145
msgid "[!python|scala]"
msgstr "[!python|scala]"

#. type: Content of: <p>
#: src/lessons/welcome/instructions/Instructions.html:29
msgid ""
"It could also be written in the following way, but it's generally considered "
"as a bad practice to group several instructions on the same line since it "
"greatly hinders the readability."
msgstr ""
"Também pode ser escrito da seguinte forma, mas geralmente isto é considerado "
"como uma prática ruim para agrupar várias instruções na mesma linha já que "
"prejudica muito a legibilidade."

#. type: Content of: <pre>
#: src/lessons/welcome/instructions/Instructions.html:33
#, no-wrap
msgid "meltTheChocolatePieces(); addSugar(); coolMix(); serve()\n"
msgstr "derretaOsPedaçosDeChocolate(); adicioneAçucar(); mexa(); sirva()\n"

#. type: Content of: <p>
#: src/lessons/welcome/instructions/Instructions.html:37
msgid ""
"Of course, these specific methods do not exist by default in [!thelang], but "
"it may be possible to define them by yourself (we'll see later how to define "
"your how methods)."
msgstr ""
"Obviamente, estes métodos específicos não existem por padrão em [!thelang], "
"mas é possível definí-los você mesmo (vamos ver mais tarde como definir seus "
"próprios métodos)."

#. type: Content of: <p>
#: src/lessons/welcome/instructions/Instructions.html:41
msgid ""
"For now, we'll simply go for the buggle instructions. There is a method for "
"each button of the interactive control panel. To achieve the same effect "
"than the <b>forward</b> button (making the buggle moving one step forward), "
"you need to write the following in the editor:"
msgstr ""
"Por enquanto, vamos ficar apenas com as instruções do buggle. Existe um "
"método para cada botão do painel de controle interativo. Para alcançar o "
"mesmo efeito que o botão <b>avançar</b> (fazendo o buggle avançar um passo), "
"você precisa escrever o seguinte no editor:"

#. type: Content of: <p>
#: src/lessons/welcome/instructions/Instructions.html:47
msgid ""
"Likewise, to achieve the same effect than the <b>[!java|scala|"
"python]backward[/!][!c]stepBackward[/!]</b>, <b>left</b> and <b>right</b> "
"buttons, you need to use respectively:"
msgstr ""
"Da mesma forma, para obter o mesmo efeito que os botões <b>[!java|scala|"
"python]recuar[/!][!c]recuarUmPasso[/!]</b>, <b>esquerda</b> e <b>direita</"
"b>, você precisa respectivamente:"

#. type: Content of: <pre>
#: src/lessons/welcome/instructions/Instructions.html:50
#, no-wrap
msgid ""
"backward()[!java|c];[/!]\n"
"left()[!java|c];[/!]\n"
"right()[!java|c];[/!]\n"
msgstr ""
"recuar()[!java|c];[/!]\n"
"esquerda()[!java|c];[/!]\n"
"direita()[!java|c];[/!]\n"

#. type: Content of: <p>
#: src/lessons/welcome/instructions/Instructions.html:55
msgid ""
"The <b>mark</b> button is a bit particular, since it correspond to two "
"methods: the first one moves the pen up while the second moves it down."
msgstr ""
"O botão <b>marcar</b> é diferente, pois corresponde a dois métodos: o "
"primeiro move a caneta para cima e o segundo move a caneta para baixo."

#. type: Content of: <pre>
#: src/lessons/welcome/instructions/Instructions.html:58
#, no-wrap
msgid ""
"brushUp()[!java|c];[/!]\n"
"brushDown()[!java|c];[/!]\n"
msgstr ""
"levantarPincel()[!java|c];[/!]\n"
"abaixarPincel()[!java|c];[/!]\n"

#. type: Content of: <p>
#: src/lessons/welcome/instructions/Instructions.html:61
msgid ""
"The buggle offers other methods, that are presented from the \"Help/about "
"this world\" menu and will be introduced on need."
msgstr ""
"O buggle tem outros métodos, que estão no menu \"Ajuda/sobre este mundo\" e "
"serão introduzidos quando forem necessários."

#. type: Content of: <h3>
#: src/lessons/welcome/instructions/Instructions.html:65
#: src/lessons/welcome/conditions/Conditions.html:109
#: src/lessons/welcome/loopwhile/LoopWhile.html:35
#: src/lessons/welcome/loopwhile/BaggleSeeker.html:9
#: src/lessons/welcome/variables/Variables.html:119
#: src/lessons/welcome/loopfor/LoopFor.html:82
#: src/lessons/welcome/methods/basics/Methods.html:96
#: src/lessons/welcome/methods/basics/MethodsDogHouse.html:38
#: src/lessons/welcome/methods/returning/MethodsReturning.html:50
#: src/lessons/welcome/methods/args/MethodsArgs.html:70
#: src/lessons/welcome/methods/slug/SlugHunting.html:19
#: src/lessons/welcome/methods/slug/SlugTracking.html:23
#: src/lessons/welcome/bdr/BDR.html:150 src/lessons/welcome/bdr/BDR2.html:132
#: src/lessons/maze/wallfollower/WallFollowerMaze.html:18
#: src/lessons/maze/pledge/PledgeMaze.html:37
#: src/lessons/maze/shortestpath/ShortestPathMaze.html:23
#: src/lessons/maze/wallfindfollow/WallFindFollowMaze.html:22
msgid "Exercise goal"
msgstr "Objetivo do exercício"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/instructions/Instructions.html:65
msgid ""
"<a name=\"Objectives\"/> Our second program will be a bit more complicated, "
"but not much. The goal for your buggle is simply to draw a house (a box), "
"and hide inside. Check the objective world to see exactly what this means."
msgstr ""
"<a name=\"Objectives\"/> nosso segundo programa será um pouco mais "
"complicado, mas não muito. O objetivo é que seu buggle simplesmente desenhe "
"uma casa (um quadrado), e se esconda dentro. Verifique o mundo objetivo para "
"ver exatamente o que isto significa."

#. type: Content of: <p>
#: src/lessons/welcome/instructions/Instructions.html:70
msgid ""
"Use your brush to mark the ground as you walk. Start marking the ground with "
"<code>brushDown()</code>, and stop it with <code>brushUp()</code> afterward "
"(e.g., to enter your house without marking its ground). The full list of all "
"instructions understood by your buggle can be found in \"Help/About this "
"world\"."
msgstr ""
"Use seu pincel para marcar o chão à medida em que anda. Comece a marcar o "
"chão com <code>brushDown()</code>, e pare com <code>brushUp()</code> (e.g., "
"para entrar na sua casa sem marcar o chão). A lista completa de todas as "
"instruções que o buggle entende pode ser encontrada em \"Ajuda/Sobre este "
"mundo\"."

#. type: Content of: <h3>
#: src/lessons/welcome/instructions/Instructions.html:75
msgid "After this exercise"
msgstr "Depois deste exercício"

#. type: Content of: <p>
#: src/lessons/welcome/instructions/Instructions.html:76
msgid ""
"When switching to the next exercise, please note that there is a sub-"
"exercise following this one.  By default, it is hidden in the menu and you "
"have to open the sub-menu to see it.  When you switch the exercise, most of "
"the exercises are hidden because the tree is folded, as follows:"
msgstr ""
"Quando for para o próximo exercício, observe que existe um sub-exercício "
"depois deste.  Por padrão, ele fica escondido no menu e você tem que abrir o "
"sub-menu para vê-lo. Quando você troca de exercício, a maioria dos "
"exercícios fica escondida por que a árvore está recolhida, como segue:"

#. type: Content of: <p>
#: src/lessons/welcome/instructions/Instructions.html:81
msgid ""
"You have to click on the little symbol to the left of the buggle to unfold "
"the tree, as follows:"
msgstr ""
"Você tem que clicar no pequeno símbolo a esquerda do buggle para expandir a "
"árvore, como segue:"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/instructions/InstructionsDrawG.html:3
msgid ""
"Now that we know how to draw things on the board, we'll enjoy this ability "
"and draw a beautiful G on the board (check Objective panel for details on "
"what is expected)."
msgstr ""
"Agora que nós sabemos como desenhar coisas no tabuleiro, vamos aproveitar "
"esta habilidade e desenhar um belo G (Veja o painel de Objetivo para "
"detalhes)."

#. type: Content of: <p>
#: src/lessons/welcome/instructions/InstructionsDrawG.html:7
msgid ""
"When you write a quite complex program, it is sometimes useful to <b>add "
"comments</b> to simplify the code reviews afterward. Here for example, it's "
"quite easy to get lost in the drawing process, and you may want to add "
"comments like <i>vertical bar done</i> or <i>finished drawing the G. Time to "
"move back to initial position</i>. Commenting your code is almost mandatory "
"if you (or someone else) want to read it afterward, although over-commenting "
"(describing obvious stuff) is a bad idea as the important idea get lost in "
"the noise."
msgstr ""
"Quando você escreve um programa bem complexo, por vezes é útil <b>adicionar "
"comentários</b> para simplificar uma posterior revisão do código. Aqui, por "
"exemplo, é fácil se perder no processo de desenho, e você pode querer "
"adicionar comentários como <i>barra vertical desenhada</i> ou <i>terminei de "
"desenhar o G. hora de voltar para posição inicial</i>. Comentar seu código é "
"quase obrigatório se você (ou mais alguém) quiser lê-lo depois, embora "
"comentar demais (descrevendo coisas óbvias) é ruim pois as ideias "
"importantes se perdem no meio do ruído."

#. type: Content of: <p>
#: src/lessons/welcome/instructions/InstructionsDrawG.html:15
msgid ""
"There is [!java]three[/!][!python|scala|c]two[/!] types of comments in [!"
"thelang], instructing the [!java|scala|c]compiler[/!][!"
"python]interpreter[/!] to not read the text you add for humans:"
msgstr ""
"Existem [!java]três[/!][!python|scala|c]dois[/!] tipos de comentários em [!"
"thelang], que instruem o [!java|scala|c]compilador[/!][!"
"python]interpretador[/!] a não ler o texto que você adiciona para humanos:"

#. type: Content of: <ul><li>
#: src/lessons/welcome/instructions/InstructionsDrawG.html:19
msgid ""
"<b>Comments on a single line</b>. When the [!java|scala|c]compiler[/!][!"
"python]interpreter[/!] encounters the symbol [!java|scala|c]//[/!][!"
"python]#[/!], it ignores the end of the line."
msgstr ""
"<b>Comentários de uma única linha</b>. Quando o [!java|scala|c]compilador[/!]"
"[!python]interpretador[/!] encontra o símbolo [!java|scala|c]//[/!][!"
"python]#[/!], ele ignora o resto da linha."

#. type: Content of: <ul><li>
#: src/lessons/welcome/instructions/InstructionsDrawG.html:21
msgid ""
"<b>Comments on several lines</b>. The [!java|scala|c]compiler[/!][!"
"python]interpreter[/!] ignores anything placed between [!java|scala|c]the "
"symbols /* and */ even if they are placed on differing lines.[/!] [!python]a "
"line beginning with ''' until the next line ending with '''.[/!]"
msgstr ""
"<b>Comentários em várias linhas</b>. O [!java|scala|c]compilador[/!][!"
"python]interpretador[/!] ignora tudo entre [!java|scala|c]os símbolos /* e "
"*/ mesmo quando eles são postos em linhas diferentes.[/!] [!python]uma linha "
"comaçando com ''' até a próxima linha terminado com '''.[/!]"

#. type: Content of: <pre>
#: src/lessons/welcome/instructions/InstructionsDrawG.html:28
#, no-wrap
msgid ""
"methodCallReadByThe[!java|scala|c]Compiler[/!][!python]Interpreter[/!]()[!java|c];[/!] <span class=\"comment\">[!java|scala|c]//[/!][!python]#[/!] all this is ignored</span>\n"
"otherCall()[!java|c];[/!] [!java|scala|c]<span class=\"comment\">/* This is</span>\n"
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class=\"comment\"> also ignored */</span>[/!]\n"
"[!python]<span class=\"comment\">''' This is</span>\n"
"<span class=\"comment\">also ignored  '''</span>[/!]\n"
"yetAnotherCall()[!java|c];[/!]\n"
msgstr ""
"chamadaDeMétodoLidaPelo[!java|scala|c]Compilador[/!][!python]Interpretador[/!]()[!java|c];[/!] <span class=\"comment\">[!java|scala|c]//[/!][!python]#[/!] tudo isto é ignorado</span>\n"
"outraChamada()[!java|c];[/!] [!java|scala|c]<span class=\"comment\">/* Isto aqui</span>\n"
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class=\"comment\"> também é ignorado */</span>[/!]\n"
"[!python]<span class=\"comment\">''' Isto aqui</span>\n"
"<span class=\"comment\">também é ignorado  '''</span>[/!]\n"
"maisUmaChamada()[!java|c];[/!]\n"

#. type: Content of: <p>
#: src/lessons/welcome/instructions/InstructionsDrawG.html:35
msgid ""
"There is a third kind of comments in Java, between /** and */, which are "
"read by a specific program called JavaDoc to generate automatically the "
"documentation explaining how to use the code. These comments must follow a "
"very precise formalism."
msgstr ""
"Existe um terceiro tipo de comentário em Java, entre /** e */, que é lido "
"por um programa específico chamado JavaDoc para gerar automaticamente a "
"documentação explicando como usar o código. Estes comentários devem seguir "
"um formalismo bem preciso."

#. type: Content of: <p>
#: src/lessons/welcome/instructions/InstructionsDrawG.html:40
msgid ""
"The comments on several lines are often used to document how to use the "
"code, while others are more used to describe how this code works."
msgstr ""
"Os comentários de várias linhas são frequentemente usados para documentar "
"como usar o código, enquanto os outros são usados para descrever como este "
"código funciona."

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/conditions/Conditions.html:4
msgid ""
"Programs made of simple suite of instructions similar to previous exercise "
"are quite boring. They always do the same thing, and cannot react to "
"external conditions. A <b>conditional</b> let the program adapt by doing "
"something like <i>if it's raining, take an umbrella</i>."
msgstr ""
"Programas feitos simplesmente de um conjunto de instruções similares\n"
"ao do exercício anterior são bastante chatos. Eles sempre fazem a\n"
"mesma coisa, e não reajem a condições externas. Um <b>condicional</b>\n"
"faz o programa se adaptar fazendo coisas do tipo <i>se está chovendo,\n"
"pegue um guarda-chuva</i>."

#. type: Content of: <p>
#: src/lessons/welcome/conditions/Conditions.html:9
msgid "The [!thelang] syntax is the following:"
msgstr "A sintaxe de [!thelang] é a seguinte:"

#. type: Content of: <pre>
#: src/lessons/welcome/conditions/Conditions.html:11
#, no-wrap
msgid ""
"[!java|scala|c]if (<b>condition</b>) {\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>whatToDoIfTrue();</b>\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>whatToDoNextIfTrue();</b>\n"
"}[/!][!python]if <b>condition</b>:\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>whatToDoIfTrue()</b>\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>whatToDoNextIfTrue()</b>[/!]\n"
"<b>whatToDoAnyway()[!java|c];[/!]</b>"
msgstr ""
"[!java|scala|c]if (<b>condição</b>) {\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>oQueFazerSeForVerdade();</b>\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>oQueFazerDepoisSeForVerdade();</b>\n"
"}[/!][!python]if <b>condição</b>:\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>oQueFazerSeForVerdade()</b>\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>oQueFazerDepoisSeForVerdade()</b>[/!]\n"
"<b>oQueFazerDeUmJeitoOuDeOutro()[!java|c];[/!]</b>"

#. type: Content of: <p>
#: src/lessons/welcome/conditions/Conditions.html:19
msgid ""
"If the condition is true, the code of the next block will be executed and "
"then it will continue with the rest of the code.  If the condition is false, "
"the next block is ignored and the execution continues after it.  The "
"conditional block can contain several instructions, it can even contain "
"other tests, along with their sub-blocks."
msgstr ""
"Se a condição for verdade, o código do próximo bloco será executado e então "
"o resto do código continua. Se a condição for falsa, o próximo bloco é "
"ignorado e a execução continua depois disto. O bloco condicional pode conter "
"várias instruções, pode até mesmo conter outros testes, com seus próprios "
"sub-testes."

#. type: Content of: <p>
#: src/lessons/welcome/conditions/Conditions.html:23
msgid ""
"In this example, the instructions <code>whatToDoIfTrue()</code> and "
"<code>whatToDoNextIfTrue()</code> will be executed if and only if the "
"condition is true, while the instruction <code>whatToDoAnyway()</code> will "
"be executed whether or not the condition is true."
msgstr ""
"Neste exemplo, as instruções <code>oQueFazerSeForVerdade()</code> e "
"<code>oQueFazerDepoisSeForVerdade()</code> serão executadas se e somente se "
"a condição for verdadeira, mas a instrução "
"<code>oQueFazerDeUmJeitoOuDeOutro()</code> vai ser executada se a condição "
"for verdadeira ou não."

#. type: Content of: <p>
#: src/lessons/welcome/conditions/Conditions.html:28
msgid ""
"In [!thelang], the blocks of code are [!java|scala|c]enclosed between curly "
"brackets: a { sign opens the block, while a } sign closes it.  White spaces "
"are not important[/!][!java|c].[/!][!scala], provided that your instructions "
"are still separated with a semi-column or an end of line.[/!] [!java|scala|"
"c]It is still very important to correctly indent your code to keep it "
"readable.[/!] [!python]marked by the indentation: every lines that are a bit "
"shifted to the right with white spaces belong to the block. Quite often, "
"people use 4 spaces for indentation, but it works if you use more or less "
"spaces. Simply, any lines of the block must use the same amount of spaces.  "
"The end of Python code blocks are not marked by any specific char.  "
"Indenting lines starts a block and unindenting ends it. Do not forget the "
"colon (:) at the end of the <code>if</code> line, python needs it to know "
"that a new block begins. The fact that python relies on indentation to "
"delimit blocks is a very good property for beginners: it will force you to "
"adhere to strict code presentation standards.[/!] It is very easy to get "
"lost in your own code if it's not properly indented, so you want to clean it "
"up so that working on your code remains pleasant and productive."
msgstr ""
"Em [!thelang], os blocos de código são [!java|scala|c]envolvidos entre "
"chaves: um { abre o bloco, e um } fecha. Espaços em branco não são "
"importantes[/!][!java|c].[/!][!scala], uma vez que suas instruções ainda "
"estejam separadas com um ponto-e-vírgula ou um fim-de-linha.[/!] [!java|"
"scala|c]Ainda assim é muito importante indentar corretamente seu código para "
"mantê-lo legível.[/!] [!python]marcados pela indentação: todas as linhas que "
"estiverem um pouco deslocadas para a direita com espaços pertencem ao bloco. "
"Frequentemente se usam 4 espaços para indentação, mas funciona se você usar "
"mais ou menos espaços. Resumindo, quaisquer linhas do bloco devem usar a "
"mesma quantidade de espaços. O fim do bloco de código Python não é marcado "
"por nenhum caractere específico. Indentar linhas começa um bloco e parar de "
"indentar termina o bloco. Não esqueça do dois-pontos (:) no final da linha "
"do <code>if</code>, python precisa dele para saber que um novo bloco vai "
"começar. O fato de que python se baseia em indentação para delimitar blocos "
"é uma ótima propriedade para iniciantes: vai forçar você a aderir a padrões "
"de apresentação de código estritos.[/!] É muito fácil se perder no seu "
"próprio código se ele não for corretamente indentado, então você precisa "
"deixar ele bem arrumado para que trabalhar nele continue sendo agradável e "
"produtivo."

#. type: Content of: <p>
#: src/lessons/welcome/conditions/Conditions.html:44
msgid ""
"All indentations of a given block must be consistent, and it is not possible "
"to cut a block. The two following codes are incorrect and will raise errors."
msgstr ""
"Todas as indentações de um dado bloco devem ser consistentes, e não é "
"possível cortar um bloco. os dois códigos a seguir estão incorretos e devem "
"resultar em erro."

#. type: Content of: <pre>
#: src/lessons/welcome/conditions/Conditions.html:47
#, no-wrap
msgid ""
"if <b>condition</b>:\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>whatToDo()</b>\n"
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>whatToDoNext()</b> <span class=\"comment\"># one space too much </span>\n"
"<b>whatToDoAnyway()</b>\n"
msgstr ""
"if <b>condição</b>:\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>oQueFazer()</b>\n"
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>oQueFazerDepois()</b> <span class=\"comment\"># um espaço a mais </span>\n"
"<b>oQueFazerDeUmJeitoOuDeOutro()</b>\n"

#. type: Content of: <pre>
#: src/lessons/welcome/conditions/Conditions.html:52
#, no-wrap
msgid ""
"if <b>condition</b>:\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>whatToDo()</b>\n"
"<b>whatToDoAnyway()</b>\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>whatToDoNext()</b> <span class=\"comment\"># this block is not hanging to a condition line</span>\n"
msgstr ""
"se <b>condição</b>:\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>oQueFazer()</b>\n"
"<b>oQueFazerDeUmJeitoOuDeOutro()</b>\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>oQueFazerASeguir()</b> <span class=\"comment\"># este bloco não está condicionado a uma linha de condição</span>\n"

#. type: Content of: <p>
#: src/lessons/welcome/conditions/Conditions.html:58
msgid ""
"The condition must be a <code>[!c]int[/!][!java]boolean[/!][!scala|"
"python]Boolean[/!]</code> expression.  The inner block of code will get "
"executed if the expression is evaluated to <code>[!c]1[/!][!java|"
"scala]true[/!][!python]True[/!]</code> and it will be ignored if it is "
"<code>[!c]0[/!][!java|scala]false[/!][!python]False[/!]</code>.  [!python|"
"scala|java]<code>[!java|scala]true[/!][!python]True[/!]</code> and <code>[!"
"java|scala]false[/!][!python]False[/!]</code> are constant values defined by "
"[!thelang] directly, just as 0 or 1 in mathematics.[/!]"
msgstr ""
"A condição deve ser uma expressão <code>[!c]int[/!][!java]boolean[/!][!scala|"
"python]Boolean[/!]</code>. O bloco interno do código será executado se a "
"expressão for calculada como <code>[!c]1[/!][!java|scala]true[/!][!"
"python]True[/!]</code> e será ignorado se for <code>[!c]0[/!][!java|"
"scala]false[/!][!python]False[/!]</code>. [!python|scala|java]<code>[!java|"
"scala]true[/!][!python]True[/!]</code> e <code>[!java|scala]false[/!][!"
"python]False[/!]</code> são valores constantes definidos por [!thelang] "
"diretamente, assim como 0 ou 1 na matemática.[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/conditions/Conditions.html:64
msgid ""
"The condition can be a <code>[!c]int[/!][!java]boolean[/!][!scala|"
"python]Boolean[/!]</code> variable (we will come back on variables in a "
"later exercise, don't worry) or an arithmetic test, such as <code>x == 5</"
"code>, which checks whether the current value of <code>x</code> is 5, or "
"such as <b>!=</b> (checking inequality, that is, returning [!c]1[/!][!java|"
"scala]true[/!][!python]True[/!] only if the left-hand side is different from "
"the right-hand side), <b>&lt;</b> (smaller than), <b>&gt;</b> (larger than), "
"<b>&lt;=</b> (smaller or equal to), <b>&gt;=</b> (larger or equal to)."
msgstr ""
"A condição pode ser uma variável <code>[!c]int[/!][!java]boolean[/!][!scala|"
"python]Boolean[/!]</code> (vamos voltar a falar de variáveis num próximo "
"exercício, não se preocupe) ou um teste aritmético, como <code>x == 5</"
"code>, que verifica se o valor atual de <code>x</code> é 5, ou algo como <b>!"
"=</b> (verificando inequação, ou seja, retornando [!c]1[/!][!java|"
"scala]true[/!][!python]True[/!] apenas se o lado esquerdo é diferente do "
"lado direito), <b>&lt;</b> (menor que), <b>&gt;</b> (maior que), <b>&lt;=</"
"b> (menor ou igual a), <b>&gt;=</b> (maior ou igual a)."

#. type: Content of: <p>
#: src/lessons/welcome/conditions/Conditions.html:71
msgid ""
"Beware of the classical trap, which consists in testing the equality of a "
"variable using = instead of ==. Hopefully, the [!java|scala|c]compiler[/!][!"
"python]interpreter[/!] detects this problem most of the time, but it could "
"get trapped is some cases (such as when you are affecting a [!c]int[/!][!"
"java|python|scala]boolean[/!] variable). So you'd better to be careful..."
msgstr ""
"Cuidado com um erro clássico, que é verificar a igualdade da variável usando "
"= no lugar de ==. Ainda bem que o [!java|scala|c]compilador[/!][!"
"python]interpretador[/!] detecta este problema na maior parte das vezes, mas "
"às vezes passa (como quando você está atribuindo valor a uma variável [!"
"c]int[/!][!java|python|scala]booleana[/!]). Então é bom ter cuidado..."

#. type: Content of: <p>
#: src/lessons/welcome/conditions/Conditions.html:76
msgid ""
"The condition can also be a call to some particular methods returning a "
"boolean. For example, the <code>isFacingWall()</code> method of the buggle "
"returns [!c]1[/!][!java|python|scala]true[/!] if the buggle is facing a "
"wall, and [!c]0[/!][!java|python|scala]false[/!] in the other case."
msgstr ""
"A condição pode também ser uma chamada para alguns métodos\n"
"particulares que retornam booleano. Por exemplo, o método\n"
"<code>estáDeFrenteParaParede()</code> do buggle retorna\n"
"[!c]1[/!][!java|python|scala]true[/!] se o buggle está olhando para\n"
"uma parede, e false caso contrário."

#. type: Content of: <p>
#: src/lessons/welcome/conditions/Conditions.html:80
msgid ""
"Finally, a condition can be composed of several sub-conditions connected by "
"boolean operations:"
msgstr ""
"Finalmente, uma condição pode ser composta de várias sub-condições "
"conectadas por operadores booleanos:"

#. type: Content of: <ul><li>
#: src/lessons/welcome/conditions/Conditions.html:83
msgid ""
"<code>cond1 [!java|scala|c]&&[/!][!python]and[/!] cond2</code> is true when "
"<tt>cond1</tt> <b>and</b> <tt>cond2</tt> are both true (if <tt>cond1</tt> is "
"false, <tt>cond2</tt> is not even evaluated as we already know that the "
"conjunction of both propositions cannot be true)."
msgstr ""
"<code>cond1 [!java|scala|c]&&[/!][!python]and[/!] cond2</code> é verdadeiro "
"(true) quando <tt>cond1</tt> <b>e</b> <tt>cond2</tt> são ambos verdadeiros "
"(se <tt>cond1</tt> é falso (false), <tt>cond2</tt> não é nem sequer "
"calculado pois sabe-se previamente que a conjunção das duas proposições não "
"pode ser verdadeira)."

#. type: Content of: <ul><li>
#: src/lessons/welcome/conditions/Conditions.html:86
msgid ""
"<code>cond1 [!java|scala|c]||[/!][!python]or[/!] cond2</code> is true if "
"<tt>cond1</tt> <b>or</b> <tt>cond2</tt> is true (if <tt>cond1</tt> is true, "
"<tt>cond2</tt> is not even evaluated as we already know that the disjunction "
"of both propositions cannot be false)."
msgstr ""
"<code>cond1 [!java|scala|c]||[/!][!python]or[/!] cond2</code> é verdadeiro "
"se <tt>cond1</tt> <b>ou</b> <tt>cond2</tt> é verdadeiro (se <tt>cond1</tt> é "
"verdadeiro, <tt>cond2</tt> não é nem sequer calculada pois já se sabe que a "
"disjunção de ambas as proposições não pode ser verdadeira)."

#. type: Content of: <ul><li>
#: src/lessons/welcome/conditions/Conditions.html:89
msgid ""
"<code>[!java|scala|c]![/!][!python]not [/!]cond</code> is true if <tt>cond</"
"tt> is false."
msgstr ""
"<code>[!java|scala|c]![/!][!python]not [/!]cond</code> é verdadeira se "
"<tt>cond</tt> é falsa."

#. type: Content of: <ul><li>
#: src/lessons/welcome/conditions/Conditions.html:90
msgid ""
"When the expression becomes complicated, it is better to add parenthesis to "
"force the order of evaluation.  Do not hesitate to add more parenthesis to "
"remove any ambiguities that may appear in an expression."
msgstr ""
"Quando a expressão se torna complicada, é melhor adicionar parêntesis para "
"forçar a ordem de cálculo. Não hesite em adicionar mais parêntesis para "
"remover ambiguidades que apareçam na expressão."

#. type: Content of: <p>
#: src/lessons/welcome/conditions/Conditions.html:94
msgid ""
"Last, it is possible to specify what to do when the condition is false using "
"the following syntax. In this case, the instruction "
"<code>whatToDoIfItsFalse</code> will be executed only if the condition is "
"false."
msgstr ""
"Por fim, é possível especificar o que fazer quando a condição é falsa usando "
"a seguinte sintaxe. Neste caso, a instrução <code>oQueFazerSeForFalso</code> "
"será executada apenas se a condição for falsa."

#. type: Content of: <pre>
#: src/lessons/welcome/conditions/Conditions.html:97
#, no-wrap
msgid ""
"[!java|scala|c]if (<b>condition</b>) {\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>whatToDoIfTheConditionIsTrue();</b>\n"
"} else {\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>whatToDoIfItsFalse();</b>\n"
"}[/!][!python]if (<b>condition</b>):\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>whatToDoIfTheConditionIsTrue()</b>\n"
"else:\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>whatToDoIfItsFalse()</b>[/!]"
msgstr ""
"[!java|scala|c]if (<b>condição</b>) {\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>oQueFazerSeCondiçãoÉVerdadeira();</b>\n"
"} else {\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>oQueFazerSeForFalsa();</b>\n"
"}[/!][!python]if (<b>condição</b>):\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>oQueFazerSeCondiçãoÉVerdadeira()</b>\n"
"else:\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>oQueFazerSeForFalsa()</b>[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/conditions/Conditions.html:106
msgid ""
"Don't forget the colon (:) after the else, it is indicating that a new block "
"is beginning."
msgstr ""
"Não esqueça do dois-pontos (:) depois do else, ele indica que um novo bloco "
"está começando."

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/conditions/Conditions.html:109
msgid ""
"<a name=\"Objectives\"/> If the buggle is facing a wall, you must move one "
"step back. If not, you must move one step forward. To detect whether you are "
"facing a wall, simply use the <code>isFacingWall()</code> built-in, that "
"every buggle understands."
msgstr ""
"<a name=\"Objectives\"/> Se o buggle está de cara numa parede, você deve se "
"mover um passo para trás. Se não, você deve se mover um passo para frente. "
"para detectar se você está de cara para uma parede, simplesmente use a "
"função pré-fabricada <code>estáDeFrenteParaParede()</code>, que todo buggle "
"entende."

#. type: Content of: <p>
#: src/lessons/welcome/conditions/Conditions.html:116
msgid ""
"This exercise is a bit different: your code has to work for several buggles, "
"each of them being in a specific initial condition. The same code will be "
"executed for each of them."
msgstr ""
"Este exercício é um pouco diferente: seu código tem que funcionar para "
"vários buggles, cada um começando numa posição diferente. O mesmo código "
"será executado para cada um deles."

#. type: Content of: <p>
#: src/lessons/welcome/conditions/Conditions.html:120
msgid ""
"When your program works, move forward to the next exercise, that is hidden "
"in a sub-tree of the selection window."
msgstr ""
"Quando seu programa funcionar, vá para o próximo exercício, que está "
"escondido numa sub-árvore da janela de seleção."

#. type: Content of: <p>
#: src/lessons/welcome/loopwhile/LoopWhile.html:4
msgid ""
"In addition to conditionals, another handy construction is the ability to "
"repeat an action while a specific condition does not appear. A while loop is "
"used for that, with the following syntax."
msgstr ""
"Além dos condicionais, outra construção bem útil é a habilidade de repetir "
"uma ação enquanto uma condição específica  não acontece. Um loop 'while' é "
"usado para isto, com a seguinte sintaxe."

#. type: Content of: <pre>
#: src/lessons/welcome/loopwhile/LoopWhile.html:8
#, no-wrap
msgid ""
"[!java|scala|c]while (<b>condition</b>) {\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>action()</b>;\n"
"}[/!][!python]while <b>condition</b>:\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>action()</b>[/!]"
msgstr ""
"[!java|scala|c]while (<b>condição</b>) {\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>ação()</b>;\n"
"}[/!][!python]while <b>condição</b>:\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>ação()</b>[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/loopwhile/LoopWhile.html:13
msgid ""
"The inner bloc is then executed again and again, as long as the condition "
"remains true.  More specifically, the buggle tests the value of the "
"condition. If it's false, it ignores the bloc and continue below.  If it's "
"true, it executes the bloc.  After that, it tests the condition. If it's now "
"false (for example because the moves of the block made us facing the wall), "
"it now ignores the bloc and continue.  If it's still true, it execute the "
"bloc and reevaluate the condition. It does so as long as the condition "
"remains true."
msgstr ""
"O bloco interno é então executado várias e várias vezes, enquanto a condição "
"se mantiver verdadeira. Mais especificamente, o buggle testa o valor da "
"condição. Se for falsa, ele ignora o bloco e continua abaixo. Se for "
"verdadeira, ele executa o bloco. Depois disto, ele testa a condição. Se ela "
"agora for falsa (por exemplo, por que os movimentos do bloco nos deixaram de "
"cara pra parede), ele agora ignora o bloco e continua. Se ele ainda for "
"verdadeiro, ele executa o bloco e reavalia a condição. Ele faz isto enquanto "
"a condição se mantém verdadeira."

#. type: Content of: <p>
#: src/lessons/welcome/loopwhile/LoopWhile.html:20
msgid ""
"Naturally, if the chosen action does not modify the value of the condition, "
"the buggle will do the action endlessly. The <b>stop</b> button of the "
"interface becomes then handy. To test this, you can try to type the "
"following code in the editor:"
msgstr ""
"Naturalmente, se a ação escolhida não modifica o valor da condição, o buggle "
"vai fazer a ação infinitamente. O botão <b>stop</b> na interface se torna "
"útil nestes casos. Para testar isto, você pode tentar digitar o seguinte "
"código no editor:"

#. type: Content of: <pre>
#: src/lessons/welcome/loopwhile/LoopWhile.html:25
#, no-wrap
msgid ""
"[!java|scala]while (true) {\n"
"&nbsp;&nbsp;&nbsp;&nbsp;left();\n"
"}[/!][!c]while (1) {\n"
"&nbsp;&nbsp;&nbsp;&nbsp;left();\n"
"}[/!][!python]while True:\n"
"&nbsp;&nbsp;&nbsp;&nbsp;left()[/!]"
msgstr ""
"[!java|scala]while (true) {\n"
"&nbsp;&nbsp;&nbsp;&nbsp;esquerda();\n"
"}[/!][!c]while (1) {\n"
"&nbsp;&nbsp;&nbsp;&nbsp;esquerda();\n"
"}[/!][!python]while True:\n"
"&nbsp;&nbsp;&nbsp;&nbsp;esquerda()[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/loopwhile/LoopWhile.html:32
msgid ""
"This will let the buggle turn left as long as <code>[!c]1[/!][!java|"
"scala]true[/!][!python]True[/!]</code> remains true (ie, endlessly), or "
"until you stop it manually using the stop button."
msgstr ""
"Isto vai fazer o buggle virar à esquerda enquanto <code>[!c]1[/!][!java|"
"scala]true[/!][!python]True[/!]</code> permanecer true (ou seja, "
"infinitamente), ou até que você pare manualmente usando o botão parar."

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/loopwhile/LoopWhile.html:36
msgid ""
"You now have to write some code so that your buggles move forward until they "
"encounter a wall. The idea is thus to do something like:"
msgstr ""
"Agora você tem que escrever algum código para seus buggles se moverem para a "
"frente até que eles encontrem uma parede. A ideia é então fazer algo assim:"

#. type: Content of: <pre>
#: src/lessons/welcome/loopwhile/LoopWhile.html:39
#, no-wrap
msgid ""
"while we are not facing a wall, do:\n"
"&nbsp;&nbsp;moveForward()"
msgstr ""
"Enquanto não estiver de cara para uma parede, faça:\n"
"&nbsp;&nbsp;avançar()"

#. type: Content of: <p>
#: src/lessons/welcome/loopwhile/LoopWhile.html:42
msgid ""
"Look at the documentation (in \"Help/About this world\") for the full list "
"of buggles' methods."
msgstr ""
"Procure na documentação (em \"Ajuda/Sobre este mundo\") para a lista "
"completa dos métodos dos buggles."

#. type: Content of: <p>
#: src/lessons/welcome/loopwhile/BaggleSeeker.html:3
msgid ""
"The buggle world can sometimes contain some <i>baggles</i>, which are little "
"biscuits that buggles can carry from one point to another. For that, they "
"have to use specific methods such as <code>isOverBaggle(), "
"isCarryingBaggle(), pickupBaggle()</code> or <code>dropBaggle()</code>. "
"Check their documentation in \"Help/About this world\" for more details."
msgstr ""
"O mundo dos buggles pode algumas vezes conter alguns <i>baggles</i>, que são "
"pequenos biscoitos que os buggles podem carregar de um ponto a outro. para "
"isto, eles tem que usar métodos específicos como <code>estáSobreBaggle(), "
"estáCarregandoBaggle(), pegarBaggle()</code> ou <code>soltarBaggle()</code>. "
"Verifique a documentação deles em \"Ajuda/Sobre este mundo\" para mais "
"detalhes."

#. type: Content of: <p>
#: src/lessons/welcome/loopwhile/BaggleSeeker.html:11
msgid ""
"Let each buggle find its baggle by adapting the code you wrote in previous "
"exercise (copy/paste what you've done before if you want)."
msgstr ""
"Deixe cada buggle encontrar seu baggle adaptando o código que você escreveu "
"no exercício anterior (copie e cole o que você fez antes se você quiser)."

#. type: Content of: <p>
#: src/lessons/welcome/variables/Variables.html:3
msgid ""
"The programs we wrote so far are missing a fundamental point in computing.  "
"Actually, it is all about processing <b>data</b> through specific "
"<b>instructions</b>. In the buggle world, the main data are a bit hidden "
"behind the graphical representation, but that's no reason to never "
"manipulate some data explicitly."
msgstr ""
"Os programas que escrevemos até agora não tem um ponto fundamental da "
"computação. Na verdade, é sobre processar <b>dados</b> através de "
"<b>instruções</b> específicas. No mundo dos buggles, os dados principais "
"estão escondidos atrás de uma representação gráfica, mas isto não é motivo "
"para nunca manipular alguns dados explicitamente."

#. type: Content of: <h3>
#: src/lessons/welcome/variables/Variables.html:9
msgid "Data in [!thelang]"
msgstr "Dados em [!thelang]"

#. type: Content of: <p>
#: src/lessons/welcome/variables/Variables.html:10
msgid ""
"In a program, you can use several <i>types</i> of data, such as integers or "
"strings of chars. If you want to use a data several times, you need to store "
"it within a <i>variable</i>, which is a memory cell containing a value: you "
"put your data (say the value '5') in the variable (say 'length'), and you "
"can retrieve it later when you need it. That's very similar to a box of "
"label 'gift' in which you would put some stuff, like a bottle of perfume "
"\"Channel N°5\"."
msgstr ""
"Num programas, você pode usar vários <i>tipos</i> de dados, tais como "
"números inteiros ou cadeias de caracteres ou caracteres. Se você quiser usar "
"um dado várias vezes, você precisa armazenar ele numa <i>variável</i>, que é "
"uma célula de memória contendo um valor: você bota seu dado (digamos o valor "
"'5') na variável (digamos 'comprimento'), e você pode recuperá-la mais tarde "
"quando precisar dela. Isto é muito similar a uma caixa com o rótulo "
"'presente' na qual você pode colocar alguma coisa, como um perfume \"Channel "
"N°5\"."

#. type: Content of: <h3>
#: src/lessons/welcome/variables/Variables.html:17
msgid "Variable declarations"
msgstr "Declaração de variáveis"

#. type: Content of: <p>
#: src/lessons/welcome/variables/Variables.html:19
msgid ""
"<b>Declaring</b> (ie, creating) a variable in [!thelang], is very simple. "
"You just need to write [!java]its type, a space, and the variable name.[/!] "
"[!scala]the <code>var</code> keyword, the variable name, a column (:) and "
"the variable type an equal sign (=) and an initial value.[/!] [!python]the "
"variable name, an equal sign (=) and an initial value.[/!] The variable name "
"is the label to retrieve it afterward[!python].[/!] [!java|scala] while the "
"type is the kind of data that this variable accepts to store.[/!] It is "
"forbidden to use spaces in variable names. You can name a variable "
"<code>stepAmount</code> if you want, but <code>step amount</code> is not a "
"valid name."
msgstr ""
"<b>Declarar</b> (ie, criar) uma variável em [!thelang], é muito simples. "
"Você simplesmente escreve [!java]seu tipo, um espaço, e o nome da variável."
"[/!] [!scala]a palavra-chave <code>var</code>, o nome da variável, um dois-"
"pontos (:) e o tipo da variável, um sinal de igualdade (=) e um valor "
"inicial.[/!] [!python]o nome da variável, um sinal de igual (=) e um valor "
"inicial.[/!] O nome da variável é o rótulo para recuperar ela depois[!"
"python].[/!] [!java|scala] enquanto o tipo é o tipo de dado que a variável "
"aceita guardar.[/!] É proibido usar espaços em nomes de variáveis. Você pode "
"nomear uma variável <code>quantidadeDePassos</code> se você quiser, mas "
"<code>quantidade de passos</code> não é um nome válidos."

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/variables/Variables.html:29
msgid "[!c|java]"
msgstr "[!c|java]"

#. type: Content of: <p>
#: src/lessons/welcome/variables/Variables.html:30
msgid ""
"So, to create a variable named <b>x</b> intended to contain integers, one "
"should write:"
msgstr ""
"Então, para criar uma variável chamada <b>x</b> para guardar inteiros, você "
"deve escrever:"

#. type: Content of: <pre>
#: src/lessons/welcome/variables/Variables.html:31
#, no-wrap
msgid "int x;"
msgstr "int x;"

#. type: Content of: <p>
#: src/lessons/welcome/variables/Variables.html:32
msgid ""
"If you want, you can specify the initial value of the variable by adding an "
"equal sign (=) followed by the value after the declaration."
msgstr ""
"Se você quiser, pode especificar o valor inicial da variável adicionando um "
"símbolo de igual (=) seguido do valor depois da declaração."

#. type: Content of: <pre>
#: src/lessons/welcome/variables/Variables.html:34
#, no-wrap
msgid "int x=5;"
msgstr "int x=5;"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/variables/Variables.html:35
#: src/lessons/welcome/variables/Variables.html:69
msgid "[/!] [!python]"
msgstr "[/!] [!python]"

#. type: Content of: <p>
#: src/lessons/welcome/variables/Variables.html:38
msgid ""
"So, if you want that the variable contains 5 as initial value, you should "
"type:"
msgstr ""
"Então se você quiser que a variável tenha o valor inicial de 5, você deve "
"digitar:"

#. type: Content of: <pre>
#: src/lessons/welcome/variables/Variables.html:39
#, no-wrap
msgid "x = 5"
msgstr "x = 5"

#. type: Content of: <ul><li>
#: src/lessons/welcome/variables/Variables.html:40
#: src/lessons/welcome/loopfor/LoopFor.html:68
#: src/lessons/welcome/bdr/BDR2.html:83
#: src/lessons/recursion/cons/universe/ConsWorld.html:34
msgid "[/!] [!scala]"
msgstr "[/!] [!scala]"

#. type: Content of: <p>
#: src/lessons/welcome/variables/Variables.html:43
msgid ""
"So, to create a variable named <b>x</b> intended to contain integers with 42 "
"as initial value, one should write:"
msgstr ""
"Logo, para criar uma variável chamada <b>x</b> que vai guardar inteiros e "
"com 42 como valor inicial, você deve escrever:"

#. type: Content of: <pre>
#: src/lessons/welcome/variables/Variables.html:44
#, no-wrap
msgid "var x:Int = 42"
msgstr "var x:Int = 42"

#. type: Content of: <p>
#: src/lessons/welcome/variables/Variables.html:45
msgid ""
"In most cases, the compiler is able to guess the type of the variable from "
"the initialization value, and you can omit it:"
msgstr ""
"Na maioria dos casos, o compilador é capaz de adivinhar o tipo da variável "
"baseado no valor inicial, e você pode omitir o tipo:"

#. type: Content of: <pre>
#: src/lessons/welcome/variables/Variables.html:46
#, no-wrap
msgid "var x = 42"
msgstr "var x = 42"

#. type: Content of: <p>
#: src/lessons/welcome/variables/Variables.html:47
msgid ""
"You still have to specify if you use some generic values as an "
"initialization, such as the very particular value <code>null</code>, which "
"type happens to be ambiguous. Even when the type is clear, you can still "
"specify it if you prefer.  So you want that the variable contains 5 as "
"initial value, you should type:"
msgstr ""
"Você ainda tem que especificar se você usa alguns valores genéricos como uma "
"inicialização, tais como o valor muito especial <code>null</code>, cujo tipo "
"parece ser ambíguo. Mesmo quando o tipo é claro, você ainda pode especificar "
"o tipo se preferir. Portanto, se você quiser que a variável contenha 5 como "
"valor inicial, você deve digitar:"

#. type: Content of: <pre>
#: src/lessons/welcome/variables/Variables.html:50
#, no-wrap
msgid ""
"var x: Int =  5 <span class=\"comment\">// I can define the type if I want to</span>\n"
"var y =  10      <span class=\"comment\">// or I can omit the type if I prefer</span>"
msgstr ""
"var x: Int =  5 <span class=\"comment\">// Eu posso definir o tipo se eu quiser</span>\n"
"var y =  10      <span class=\"comment\">// ou posso omitir o tipo se eu preferir</span>"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/variables/Variables.html:52
#: src/lessons/welcome/loopdowhile/LoopDoWhile.html:39
msgid "[/!] [!java|scala|c]"
msgstr "[/!] [!java|scala|c]"

#. type: Content of: <p>
#: src/lessons/welcome/variables/Variables.html:55
msgid ""
"As you can see, the variables are <b>typed</b> in [!thelang], which means "
"that they are somehow specialized: A given variable can only store data of a "
"given type; Don't even think of storing numbers in a variable that is "
"tailored for letters! The [!thelang] language is said to be <b>statically "
"typed</b>."
msgstr ""
"Como você pode ver, as variáveis são <b>tipadas</b> em [!thelang], que "
"significa que elas são de certa forma especializadas: Uma dada variável pode "
"armazenar apenas dados de um tipo; nem pense em guardar números em uma "
"variável que é feita para letras! Dizemos que a linguagem [!thelang] é "
"<b>estaticamente tipada</b>."

#. type: Content of: <p>
#: src/lessons/welcome/variables/Variables.html:58
msgid ""
"Other languages (such as Python) are less picky and allow you to store any "
"kind of data in any variable, without restriction (those languages are said "
"to be <b>dynamically typed</b>).  This seems easier at the first glance, but "
"this kind of restriction allows the compiler to catch more logic errors for "
"you, which is also good. In some sense, Python is easier to write but errors "
"can sneak in more easily than in [!thelang]."
msgstr ""
"Outras linguages (como Python) são menos charas e permitem que você guarde "
"qualquer tipo de dado em qualquer variável, sem restrições (estas linguagens "
"são ditas <b>dinamicamente tipadas</b>). Parecem mais fáceis à primeira "
"vista, mas este tipo de restrição permite que o compilador perceba mais "
"erros de lógica para você, o que é bom. Num certo sentido, Python é mais "
"fácil de escrever mas os erros surgem com mais frequencia do que em [!"
"thelang]."

#. type: Content of: <p>
#: src/lessons/welcome/variables/Variables.html:62
msgid "Here are some existing types in [!thelang]:"
msgstr "Aqui estão alguns dos tipos em [!thelang]:"

#. type: Content of: <ul><li>
#: src/lessons/welcome/variables/Variables.html:64
msgid "<b>[!java|c]int[/!][!scala]Int[/!]</b>, for integers;"
msgstr "<b>[!java|c]int[/!][!scala]Int[/!]</b>, para inteiros;"

#. type: Content of: <ul><li>
#: src/lessons/welcome/variables/Variables.html:65
msgid "<b>[!java|c]double[/!][!scala]Double[/!]</b>, for dot numbers;"
msgstr ""
"<b>[!java|c]double[/!][!scala]Double[/!]</b>, para números com vírgula;"

#. type: Content of: <ul><li>
#: src/lessons/welcome/variables/Variables.html:66
msgid ""
"<b>[!c]int[/!][!java]boolean[/!][!scala]Boolean[/!]</b>, for booleans that "
"are values being either [!c]1[/!][!java|scala]true[/!] or [!c]0[/!][!java|"
"scala]false[/!];"
msgstr ""
"<b>[!c]int[/!][!java]boolean[/!][!scala]Boolean[/!]</b>, para booleanos, que "
"são valores ou [!c]1[/!][!java|scala]true[/!] ou [!c]0[/!][!java|"
"scala]false[/!];"

#. type: Content of: <ul><li>
#: src/lessons/welcome/variables/Variables.html:67
msgid "<b>[!c]char*[/!][!java|scala]String[/!]</b>, for char strings."
msgstr ""
"<b>[!c]char*[/!][!java|scala]String[/!]</b>, para cadeias de caracteres."

#. type: Content of: <p>
#: src/lessons/welcome/variables/Variables.html:72
msgid ""
"As you can see, the variables are not <b>typed</b> in Python, which means "
"that they are not specialized in any type of data.  A given variable store "
"any type of data of a given type: you can store a number in a variable and "
"later on store a number in the same variable.  The values themselves are "
"still typed, but not the variable. Python is said to be <b>dynamically "
"typed</b>."
msgstr ""
"As you can see, the variables are not <b>typed</b> in Python, which means "
"that they are not specialized in any type of data.  A given variable store "
"any type of data of a given type: you can store a number in a variable and "
"later on store a number in the same variable.  The values themselves are "
"still typed, but not the variable. Python is said to be <b>dynamically "
"typed</b>."

#. type: Content of: <p>
#: src/lessons/welcome/variables/Variables.html:75
msgid ""
"Other languages (such as Java, Scala or C) are much more picky and prevent "
"you to mix data types in a given variable (they are said to be <b>statically "
"typed</b>).  This seems annoying at the first glance, but this kind of "
"restriction allows the compiler to catch more logic errors for you, which is "
"also good. In some sense, Python is easier to write but errors can sneak in "
"more easily."
msgstr ""
"Outras linguagens (como Java, Scala ou C), são muito mais exigentes e "
"impedem que você misture tipos de dados numa certa variável (dizemos que "
"elas são <b>esticamente tipadas</b>). Isto parece inconveniente à primeira "
"vista, mas este tipo de restrição permite que o compilador capture mais "
"erros de lógica para você, o que também é bom. Num certo sentido, Python é "
"mais fácil de escrever mas erros podem surgir mais facilmente."

#. type: Content of: <p>
#: src/lessons/welcome/variables/Variables.html:81
msgid ""
"If you know that the value of your \"variable\" will never change (eg "
"because it contains the screen size or some other constant value), then you "
"should make it a <b>value</b> instead of a variable. Simply change the "
"<code>var</code> keyword with the <code>val</code> one. The compiler can "
"then check your actions and catch your error when you inadvertently modify "
"the value. More interestingly, the compiler can produce faster code in some "
"cases."
msgstr ""
"Se você sabe que o valor de sua \"variável\" nunca vai mudar (eg quando ela "
"contém o tamanho da tela ou outro valor constante), então você deve fazer "
"dela um <b>valor</b> ao invés de uma variável. Simplesmente mude a palavra-"
"chave <code>var</code> para <code>val</code>. O compilador pode então "
"verificar suas ações e capturar seu erro quando você inadvertidamente "
"modificar o valor. Mais interessante ainda, o compilador pode produzir "
"código mais rápido em alguns casos."

#. type: Content of: <p>
#: src/lessons/welcome/variables/Variables.html:86
msgid ""
"Variables work very similarly for strings, floating point numbers and "
"boolean values."
msgstr ""
"Variáveis funcionam muito parecido com strings, números com vírgula e "
"valores booleanos."

#. type: Content of: <pre>
#: src/lessons/welcome/variables/Variables.html:88
#, no-wrap
msgid ""
"char* name = \"Martin Quinson\";\n"
"double height=1.77; <span class=\"comment\">// in meters</span>\n"
"int married=1;<span class=\"comment\">// 1 means \"true\"; \"false\" would be written 0</span>"
msgstr ""
"char* nome = \"Martin Quinson\";\n"
"double altura=1.77; <span class=\"comment\">// em metros</span>\n"
"int casado=1;<span class=\"comment\">// 1 significa \"verdadeiro\"; falso é 0</span>"

#. type: Content of: <pre>
#: src/lessons/welcome/variables/Variables.html:93
#, no-wrap
msgid ""
"String name = \"Martin Quinson\";\n"
"double height=1.77; <span class=\"comment\">// in meters</span>\n"
"boolean married=true;<span class=\"comment\">// the contrary would be written \"false\"</span>"
msgstr ""
"String nome = \"Martin Quinson\";\n"
"double altura=1.77; <span class=\"comment\">// em metros</span>\n"
"boolean casado=true;<span class=\"comment\">// o contrário se escreve \"false\"</span>"

#. type: Content of: <pre>
#: src/lessons/welcome/variables/Variables.html:97
#, no-wrap
msgid ""
"val name:String = \"Martin Quinson\"; <span class=\"comment\">// this cannot be modified (it's a value)</span>\n"
"var height: Double = 1.77; <span class=\"comment\">// in meters</span>\n"
"var married = true; <span class=\"comment\">// the contrary would be written \"false\"</span>\n"
"<span class=\"comment\">// Scala knows that 'true' is a Boolean value, no need to repeat it here</span>"
msgstr ""
"val nome:String = \"Martin Quinson\"; <span class=\"comment\">// isto não pode ser modificado (é um valor)</span>\n"
"var altura: Double = 1.77; <span class=\"comment\">// em metros</span>\n"
"var casado = true; <span class=\"comment\">// o contrário se escreve \"false\"</span>\n"
"<span class=\"comment\">// Scala sabe que 'true' é um valor Booleano, não precisa repetir</span>"

#. type: Content of: <pre>
#: src/lessons/welcome/variables/Variables.html:102
#, no-wrap
msgid ""
"firstName = \"Martin\"\n"
"lastName = 'Quinson' <span class=\"comment\"># both single and double quote work here</span>\n"
"motto = \"I never finish anyth' (but I keep trying)\" <span class=\"comment\"># having single quote within double quote is fine</span> \n"
"height=1.77 <span class=\"comment\"># in meters</span>\n"
"married=True <span class=\"comment\"># the contrary would be written \"False\"</span>"
msgstr ""
"firstName = \"Martin\"\n"
"lastName = 'Quinson' <span class=\"comment\"># aspas e aspas simples funcionam aqui</span>\n"
"frase = \"uma gota d'água é sempre melhor que nada\" <span class=\"comment\"># uma aspas simples entre aspas duplas vale</span> \n"
"altura=1.77 <span class=\"comment\"># em metros</span>\n"
"casado=True <span class=\"comment\"># o contrário se escreve \"False\"</span>"

#. type: Content of: <h3>
#: src/lessons/welcome/variables/Variables.html:108
msgid "Affectations"
msgstr "Atribuições"

#. type: Content of: <p>
#: src/lessons/welcome/variables/Variables.html:110
msgid ""
"Once your variable is declared, you can <b>affect</b> a new value to it "
"later in the program. That's really easy:"
msgstr ""
"Uma vez que sua variável está declarada, você pode <b>atribuir</b> um novo "
"valor para ela mais tarde no programa. Isto é bem fácil:"

#. type: Content of: <pre>
#: src/lessons/welcome/variables/Variables.html:111
#, no-wrap
msgid "x = 3[!java|c];[/!]"
msgstr "x = 3[!java|c];[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/variables/Variables.html:113
msgid ""
"To the right of the equal symbol, you can put an arithmetic expression "
"containing constants, variables and operations."
msgstr ""
"À esquerda do símbolo de igual você pode colocar uma expressão aritmética "
"contendo constantes, variáveis e operações."

#. type: Content of: <pre>
#: src/lessons/welcome/variables/Variables.html:115
#, no-wrap
msgid ""
"x = 3 + 2[!java|c];[/!]\n"
"x = 3 * x[!java|c];[/!]\n"
"[!java|scala|python]greeting = \"Hello \"+name[!java];[/!] <span class=\"comment\">[!python]#[/!][!scala|java]//[/!] + is (also) the operation to concatenate (ie, to join) strings[/!]</span>"
msgstr ""
"x = 3 + 2[!java|c];[/!]\n"
"x = 3 * x[!java|c];[/!]\n"
"[!java|scala|python]saudação = \"Oi \"+nome[!java];[/!] <span class=\"comment\">[!python]#[/!][!scala|java]//[/!] + é (também) a operação para concatenar (ie, para juntar) strings[/!]</span>"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/variables/Variables.html:120
msgid ""
"It is now time to do more challenging exercises, don't you think? The "
"objective is now to move forward until you find a baggle, pick it up, and "
"then move back to your initial location before dropping the baggle."
msgstr ""
"Agora vamos fazer exercícios mais desafiantes, certo? O objetivo agora é "
"mover para a frente até encontrar um baggle, pegar ele e se mover para trás "
"até a localização inicial antes de sotar o baggle."

#. type: Content of: <h3>
#: src/lessons/welcome/variables/Variables.html:125
msgid "How to do this?"
msgstr "Como fazer isto?"

#. type: Content of: <p>
#: src/lessons/welcome/variables/Variables.html:126
msgid ""
"To solve this problem, you have to decompose it in easier sub-parts. For "
"example, you may want to do the following steps:"
msgstr ""
"Para resolver este problema, você tem que docompor ele em sub-partes "
"menores. Por exemplo, você pode querer fazer os passos seguintes:"

#. type: Content of: <p><ol><li>
#: src/lessons/welcome/variables/Variables.html:129
msgid "Move forward until located over a baggle"
msgstr "Mover para a frente até se colocar sobre um baggle"

#. type: Content of: <p><ol><li>
#: src/lessons/welcome/variables/Variables.html:130
msgid "Pickup the baggle"
msgstr "Pegar o baggle"

#. type: Content of: <p><ol><li>
#: src/lessons/welcome/variables/Variables.html:131
msgid "Move backward of the same amount of steps than done in first step"
msgstr "Mover para trás a mesma quantidade de passos que deu no primeiro passo"

#. type: Content of: <p><ol><li>
#: src/lessons/welcome/variables/Variables.html:132
msgid "Drop back the baggle"
msgstr "Soltar o baggle de novo"

#. type: Content of: <p>
#: src/lessons/welcome/variables/Variables.html:135
msgid ""
"Naturally, it is impossible to do the right amount of steps backward at step "
"3 if you didn't count the amount of steps done in the first phase. You can "
"use a variable for that, which can be named <code>stepAmount</code>."
msgstr ""
"Naturalmente, é impossível dar a quantidade certa de passos para trás no "
"passo 3 se você não contou a quantidade de passos dados na primeira fase. "
"Você pode usar uma variável para isto, que pode ser chamada "
"<code>quantidadeDePassos</code>."

#. type: Content of: <p>
#: src/lessons/welcome/variables/Variables.html:139
msgid ""
"Create an integer variable before phase 1, initialize it to 0, and each time "
"you move one step forward, increment its value by one (<code>stepAmount = "
"stepAmount + 1;</code>[!java|c] or <code>stepAmount++;</code>, both syntaxes "
"being equivalent[/!]).  Such variable which takes every values of a given "
"range is often called a <b>stepper</b>."
msgstr ""
"Crie uma variável inteira antes da fase 1, inicie ela com 0 e a cada vez que "
"der um passo para frente, incremente ela de um (<code>quantidadeDePassos = "
"quantidadeDePassos + 1;</code>[!java] ou <code>quantidadeDePassos++;</code>, "
"ambas as sintaxes são equivalentes[/!]).  Tais variáveis que pegam cada "
"valor de um dado intervalo são normalmente chamadas de <b>stepper</b>."

#. type: Content of: <p>
#: src/lessons/welcome/variables/Variables.html:146
msgid ""
"If you know Java or other languages, you will probably try to use the <code>+"
"+</code> operator to increment the variable, but it's not allowed in [!"
"thelang].  This is because it would be difficult to define this operator for "
"every data types.  For example, what should ++ do when applied to a Complex "
"value or to a String? The problem does not occur in Java as <code>int</code> "
"is not an object but a primitive type.  (if you don't know the <code>++</"
"code>, just ignore this paragraph: it does not exist in [!thelang])"
msgstr ""
"Se você conhece Java ou outras linguagens, você provavelmente vai tentar "
"usar o operador <code>++</code> para incrementar a variável, mas isto não é "
"permitido em [!thelang].  Isto é por que seria difícil definir este operador "
"para todos os tipos de dados.  Por exemplo, o que faria ++ quando aplicado a "
"um valor complexo ou a uma String? O problema não ocorre em Java pois "
"<code>int</code> não é um objeto e sim um tipo primitivo.  (se você não "
"conhece o <code>++</code>, simplesmente ignore este parágrafo: ele não "
"existe em [!thelang])"

#. type: Content of: <p>
#: src/lessons/welcome/variables/Variables.html:154
msgid ""
"Then, phase 3 consists in simply creating a new integer variable "
"<code>doneSteps</code> initialized to 0, and do one step backward as long as "
"<code>doneSteps</code> is not equal to <code>stepAmount</code>, incrementing "
"<code>doneSteps</code> each time. The <code>!=</code> operator should be "
"used to test the inequality (whether some values are NOT equal)."
msgstr ""
"Então, a fase 3 consiste em simplesmente criar uma nova variável inteira "
"<code>passosDados</code> iniciada como 0, e dar um passos para trás enquanto "
"<code>passosDados</code> não for igual a <code>quantidadeDePassos</code>, "
"aumentando <code>passosDados</code> a cada vez. O operador <code>!=</code> "
"deve ser usado para testar a inequação (quando um valor NÃO É igual)."

#. type: Content of: <p>
#: src/lessons/welcome/variables/Variables.html:161
msgid "It's your turn now!"
msgstr "É sua vez agora!"

#. type: Content of: <h2>
#: src/lessons/welcome/variables/RunFour.html:2
msgid "Run Four bases"
msgstr "Ande quatro bases"

#. type: Content of: <p>
#: src/lessons/welcome/variables/RunFour.html:4
msgid ""
"Today is a great day for the buggles: the Big Buggles' Race begun. It's a "
"traditional competition in which young buggles prove their value to the "
"tribe. Both force and intelligence is exercised: you have to rush forward, "
"but stop as soon as you reach your fourth baggle.  Please help the buggles "
"to move forward while counting the baggles and to determine when to stop."
msgstr ""
"Hoje é um grande dia para os buggles: a grande corrida dos Buggles começou. "
"Esta é uma competição tradicional na qual jovens buggles mostram seu valor "
"para a tribo. Tanto força quanto inteligência são exercitados: você tem que "
"correr, mas parar assim que alcançar o quarto baggle. Por favor, ajude os "
"buggles a se moverem para frente enquanto conta os baggles e determina "
"quando parar."

#. type: Content of: <h2>
#: src/lessons/welcome/variables/RunHalf.html:2
msgid "The Four Halves run"
msgstr "A corrida dos quatro meios"

#. type: Content of: <p>
#: src/lessons/welcome/variables/RunHalf.html:4
msgid ""
"Here is the second day of the Big Buggles' Race.  As previously, you have to "
"run forward until you reach the right cell to stop on.  But this time, you "
"have to reach the cell where the amount of baggles you saw is the double of "
"the orange cells plus 1.  In other words, the following condition must "
"become true: <code>2 * baggles = orangeCells + 1</code>."
msgstr ""
"Chegamos ao segundo dia da grande corrida dos Buggles. Como antes, você tem "
"que correr até alcançar a célula certa para parar. Mas desta vez, você tem "
"que alcançar a célula onde a quantidade de baggles que você viu é o dobro da "
"quantidade de células laranjas mais 1. Em outras palavras, a seguinte "
"condição deve se tornar verdadeira <code>2 * baggles = célulasLaranjas + 1</"
"code>."

#. type: Content of: <p>
#: src/lessons/welcome/variables/RunHalf.html:10
msgid ""
"You can determine whether you are over a orange cell with the "
"<code>isOverOrange()</code> method."
msgstr ""
"Você pode determinar quando você está sobre uma célula laranja com o método "
"<code>estáSobreLaranja()</code>."

#. type: Content of: <p>
#: src/lessons/welcome/loopfor/LoopFor.html:4
msgid ""
"While loops are well adapted to situations where you want to achieve an "
"action while a condition stays true, but it is less adapted to achieve a "
"given action a predetermined amount of time. For example, when we wanted to "
"move <code>stepAmount</code> steps backward in a previous exercise, we had "
"to create a new variable, initialize it, and move backward while "
"incrementing this variable until it became equal to <code>stepAmount</code>."
msgstr ""
"loops 'while' são bem adaptados a situações onde você precise realizar uma "
"ação enquanto uma condição se mantém verdadeira, mas são menos preparados "
"para realizar uma ação num número de vezes predeterminado. Por exemplo, "
"quando nós quisemos nos mover <code>quantidadeDePassos</code> para trás num "
"exercício anterior, nós tivemos que criar uma nova variável, inicializar ela "
"e mover para trás enquanto aumentávamos esta variável até ela se tornar "
"igual a <code>quantidadeDePassos</code>."

#. type: Content of: <p>
#: src/lessons/welcome/loopfor/LoopFor.html:11
msgid ""
"In such situations, <code>for</code> loops become handy. Their syntax is the "
"following:"
msgstr ""
"Em tais situações, loops <code>for</code> se tornam úteis. Suas sintaxes são "
"as seguintes:"

#. type: Content of: <pre>
#: src/lessons/welcome/loopfor/LoopFor.html:13
#, no-wrap
msgid ""
"[!java|c]for (<b>initializing</b>; <b>condition</b>; <b>incrementing</b>) {\n"
"    <b>action</b>();\n"
"}[/!][!python]for <b>variable</b> in <b>sequence of values</b>:\n"
"    <b>action</b>()[/!][!scala] for (<b>variable</b> &lt;- <b>firstValue</b> to <b>lastValue</b>) { \n"
"    <b>action</b>();\n"
"}[/!]"
msgstr ""
"[!java|c]for (<b>inicialização</b>; <b>condição</b>; <b>incremento</b>) {\n"
"    <b>ação</b>();\n"
"}[/!][!python]for <b>variável</b> in <b>sequência-de-valores</b>:\n"
"    <b>ação</b>()[/!][!scala] for (<b>variável</b> &lt;- <b>primeiroValor</b> to <b>últimoValor</b>) { \n"
"    <b>ação</b>();\n"
"}[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/loopfor/LoopFor.html:20
msgid ""
"For example to repeat the loop body <code>n</code> times, [!python] it is "
"handy to use the instruction <code>range(n)</code> to generate the sequence "
"n integer value from 0 to n-1.[/!] [!java|scala|c] one should write:[/!]"
msgstr ""
"Por exemplo, para repetir o corpo do loop <code>n</code> vezes, [!python] é "
"útil usar a instrução <code>range(n)</code> para gerar a sequência de n "
"valores inteiros de 0 a n-1.[/!] [!java|scala|c] você deve escrever:[/!]"

#. type: Content of: <pre>
#: src/lessons/welcome/loopfor/LoopFor.html:23
#, no-wrap
msgid ""
"[!java]for (int stepper=0; stepper&lt;n; stepper++) {\n"
"    <b>action</b>();\n"
"}[/!][!c]int stepper;\n"
"for (stepper=0; stepper&lt;n; stepper++) {\n"
"    <b>action</b>();\n"
"}[/!][!python]for <b>stepper</b> in <b>range(n)</b>:\n"
"    <b>action</b>()[/!][!scala] for (<b>stepper</b> &lt;- <b>1</b> to <b>n</b>) { \n"
"    <b>action</b>();\n"
"}[/!]"
msgstr ""
"[!java]for (int iterador=0; iterador&lt;n; iterador++) {\n"
"    <b>ação</b>();\n"
"}[/!][!c]int iterador;\n"
"for (iterador=0; iterador&lt;n; iterador++) {\n"
"    <b>ação</b>();\n"
"}[/!][!python]for <b>iterador</b> in <b>range(n)</b>:\n"
"    <b>ação</b>()[/!][!scala] for (<b>iterador</b> &lt;- <b>1</b> to <b>n</b>) { \n"
"    <b>ação</b>();\n"
"}[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/loopfor/LoopFor.html:33
msgid ""
"This code is then equivalent to the following one from the computer point of "
"view. From the programmer point of view, one form or the other can make the "
"source code easier to read, depending on the situation. You should chose "
"wisely in each situation whether you want to use a for loop or a while loop. "
"Your uttermost goal should remain to keep your code simple and easy to read, "
"to ensure that your day remain pleasant and productive."
msgstr ""
"Este código é então equivalente ao seguinte do ponto de vista do computador. "
"Do ponto de vista do programador, uma forma ou outra pode ser mais difícil "
"ou mais fácil de ler, dependendo da situação. Você deve escolher sabiamente "
"em qual situação usar um loop for ou um loop while. Seu objetivo principal "
"deve ser manter seu código simples e fácil de ler, para garantir que seu dia "
"seja agradável e produtivo."

#. type: Content of: <pre>
#: src/lessons/welcome/loopfor/LoopFor.html:41
#, no-wrap
msgid ""
"[!java|c]int stepper = 0;\n"
"while (stepper &lt; n) {\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>action</b>();\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>stepper++</b>;\n"
"}[/!][!python]stepper=0\n"
"while stepper &lt; n: \n"
"    action()\n"
"    stepper = stepper + 1[/!][!scala]\n"
"var stepper = 1\n"
"while (stepper &lt;= n) {\n"
"    <b>action</b>()\n"
"    stepper = stepper + 1\n"
"}[/!]"
msgstr ""
"[!java|c]int iterador = 0;\n"
"while (iterador &lt; n) {\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>ação</b>();\n"
"&nbsp;&nbsp;&nbsp;&nbsp;<b>iterador++</b>;\n"
"}[/!][!python]iterador=0\n"
"while iterador &lt; n: \n"
"    ação()\n"
"    iterador = iterador + 1[/!][!scala]\n"
"var iterador = 1\n"
"while (iterador &lt;= n) {\n"
"    <b>ação</b>()\n"
"    iterador = iterador + 1\n"
"}[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/loopfor/LoopFor.html:55
msgid ""
"In that case, the <code>for</code> loop is easier to read, don't you think?"
msgstr "Neste caso, o loop <code>for</code> é fácil de ler, não acha?"

#. type: Content of: <p>
#: src/lessons/welcome/loopfor/LoopFor.html:58
msgid ""
"It is possible to build more advanced <tt>for</tt> loops since any valid "
"instruction can be used as initialization, condition and incrementing "
"instruction. The following example is a bit extreme as there is no need for "
"a loop body to move the buggle forward until it reaches the wall, but it "
"works well: all the work is done in the condition and incrementing "
"instruction."
msgstr ""
"É possível construir loops <tt>for</tt> mais avançados já que qualquer "
"instrução válida pode ser usada como inicialização, condição e instrução de "
"incrementação. O exemplo seguinte é um pouco extremo pois não existe "
"necessidade para um corpo de loop mover um buggle para frente até ele "
"alcançar a parede, mas funciona bem: todo o trabalho é feito nas instruções "
"de condição e incremento."

#. type: Content of: <pre>
#: src/lessons/welcome/loopfor/LoopFor.html:64
#, no-wrap
msgid ""
"for (; !isFacingWall() ; forward()) { \n"
"   <span class=\"comment\">/* nothing in the loop body */</span>\n"
"}\n"
"<span class=\"comment\">/* the buggle now faces a wall */</span>"
msgstr ""
"for (; !estáDeFrenteParaParede() ; avançar()) { \n"
"   <span class=\"comment\">/* nada no corpo do loop */</span>\n"
"}\n"
"<span class=\"comment\">/* o buggle agora está de cara para uma parede */</span>"

#. type: Content of: <p>
#: src/lessons/welcome/loopfor/LoopFor.html:71
msgid ""
"If you want to nest several loops, you can do it on one line in Scala. This "
"means that the two following chunks are equivalent:"
msgstr ""
"Se você quer aninhar vários loops, você pode fazer isto em uma linha no "
"Scala. Isto significa que os dois blocos seguintes são equivalentes:"

#. type: Content of: <pre>
#: src/lessons/welcome/loopfor/LoopFor.html:72
#, no-wrap
msgid ""
"for (stepper1 &lt;- 1 to n) {\n"
"    for (stepper2 &lt;- 1 to m) {\n"
"       actions()\n"
"    }\n"
"}"
msgstr ""
"for (iterador1 &lt;- 1 to n) {\n"
"    for (iterador2 &lt;- 1 to m) {\n"
"       ações()\n"
"    }\n"
"}"

#. type: Content of: <pre>
#: src/lessons/welcome/loopfor/LoopFor.html:77
#, no-wrap
msgid ""
"for (stepper1 &lt;- 1 to n; stepper2 &lt;- 1 to m) { <span class=\"comment\">// Simply separate both loop conditions with a semi-column</span>\n"
"    actions()\n"
"}"
msgstr ""
"for (iterador1 &lt;- 1 to n; iterador2 &lt;- 1 to m) { <span class=\"comment\">// Simplesmente separe as duas condições de loop com um ponto-e-vírgula</span>\n"
"    ações()\n"
"}"

#. type: Content of: <p>
#: src/lessons/welcome/loopfor/LoopFor.html:83
msgid ""
"You now have to redo the same exercise than previously (move forward until "
"being over a baggle, pick it up, move back to your original location, drop "
"the baggle), but using a <code>for</code> loop instead of a <code>while</"
"code> loop to move back to the initial location."
msgstr ""
"Você agora tem que refazer o mesmo exercício de antes (mover para frente até "
"estar sobre um baggle, pegá-lo, mover para trás até a localização original, "
"soltar o baggle), mas usando um loop <code>for</code> no lugar de um loop "
"<code>while</code> para mover de volta ao local inicial."

#. type: Content of: <p>
#: src/lessons/welcome/loopfor/LoopFor.html:88
msgid "Once done, you can proceed to next exercise."
msgstr "Uma vez feito, você pode seguir para o próximo exercício."

#. type: Content of: <h2>
#: src/lessons/welcome/loopfor/LoopStairs.html:2
msgid "Stairway to Heaven"
msgstr "Uma escadaria para o Céu"

#. type: Content of: <p>
#: src/lessons/welcome/loopfor/LoopStairs.html:4
msgid ""
"Your buggle feels a bit depressed today, but it's currently facing a magic "
"stair: It leads directly to heaven, and each time you walk on it, joyful "
"colors spur all around."
msgstr ""
"Seu buggle está um pouco deprimido hoje, mas ele está na frente de uma "
"escada mágica: Ela leva diretamente para o paraíso, e cada vez que você anda "
"nela, belas cores surgem de todos os lados."

#. type: Content of: <p>
#: src/lessons/welcome/loopfor/LoopStairs.html:7
msgid ""
"Your goal is to take this stair, one step after the other.  First devise the "
"four instructions you have to give you buggle to take one stair step, and "
"then put them in a loop to take the whole stair."
msgstr ""
"Seu objetivo é subir a escada, um passo por vez. Primeiro \"devise\" as "
"quatro instruções que você tem que dar ao buggle para subir um degrau, e "
"então bote ela num loop para subir a escada toda."

#. type: Content of: <p>
#: src/lessons/welcome/loopfor/LoopStairs.html:11
msgid ""
"Before that, walk a bit forward to reach that stair, and ensure that you are "
"in the right situation for your loop content to run properly. And once you "
"reach the heaven, take some steps in your new home.  Meanwhile, you just "
"have to walk your way, the colors appear automagically."
msgstr ""
"Antes disto, ande um pouco para a frente para alcançar a escada, e "
"certifique-se de estar na situação certa para que o que o loop faz seja "
"feito corretamente. E uma vez alcançado o Céu, dê uns passos no seu novo "
"lar. Enquanto isto, você deve apenas seguir seu caminho, as cores aparecem "
"automagicamente."

#. type: Content of: <h2>
#: src/lessons/welcome/loopfor/LoopCourse.html:2
msgid "Training Buggle"
msgstr "Treinando o Buggle"

#. type: Content of: <p>
#: src/lessons/welcome/loopfor/LoopCourse.html:4
msgid ""
"Today, your buggle wants to get some serious exercise: It wants to run 'till "
"the track burns! Its super-shoes are just perfect to run like hell, but "
"unfortunately, they can actually damage the track on the long run..."
msgstr ""
"Hoje seu buggle quer fazer exercício seriamente: Ele quer correr até tocar "
"fogo na trilha! seus super-tenis são perfeitos para correr loucamente, mas "
"infelizmente, eles podem estragar seriamente a trilha a longo prazo..."

#. type: Content of: <p>
#: src/lessons/welcome/loopfor/LoopCourse.html:7
msgid ""
"Your goal is to run the track 10 times, no matter what happens.  Even if the "
"track suffers, you <b>really HAVE</b> to take that run.  Remember, the track "
"has four sides, that take eight steps each to run along.  Now go, and show "
"them what these super shoes can do."
msgstr ""
"Seu objetivo é percorrer a trilha 10 vezes, não importa o que aconteça. "
"Mesmo se a trilha \"suffers\", você <b>TEM MESMO</b> que fazer esta corrida. "
"Lembre, a triha tem quatro lados, cada lado com oito passos. Agora vá, e "
"mostre a eles o que os seus super-sapatos podem fazer."

#. type: Content of: <p>
#: src/lessons/welcome/loopfor/LoopCourse.html:12
msgid ""
"You don't have to do anything particular with regard of the colors: your "
"shoes will do it for you. Just take that run!"
msgstr ""
"Você não tem que fazer nada de particular com respeito às cores: seus "
"sapatos vão fazer isto para você. Apenas corra!"

#. type: Content of: <h2>
#: src/lessons/welcome/loopfor/LoopCourseForest.html:2
msgid "Outdoor Training Buggle"
msgstr "Treinamento ao ar livre do Buggle"

#. type: Content of: <p>
#: src/lessons/welcome/loopfor/LoopCourseForest.html:4
msgid ""
"Well, our last training didn't went that well. The track actually burned, "
"and we are now banned from there.  This time, our buggle decided to practice "
"outdoor, in the middle of the forest, with its good old shoes instead.  The "
"problem is that you have to be careful to not fall into water. The track on "
"which you can run is rather narrow: One side is now 4 steps forward, 2 steps "
"to the left, 4 steps to the right, 2 steps to the right, 4 steps to the "
"left, and you want to run 7 around."
msgstr ""
"Bem, nosso último treino teve um probleminha. A trilha tocou fogo, e fomos "
"banidos de lá. Desta vez, nosso buggle decidiu praticar ao ar livre, no meio "
"da floresta, com seus velhos tênis. O problema é que você tem que ser "
"cuidadoso para não cair na água. A trilha onde você corre é estreita: \"One "
"side is now\" 4 passos para a frente, 2 passos para a esquerda, 4 passos "
"para a direita, 2 passos para a direita, 4 passos para a esquerda, \"and you "
"want to run 7 around\"."

#. type: Content of: <p>
#: src/lessons/welcome/loopfor/LoopCourseForest.html:10
msgid ""
"Oh crap, running on the grass seems to destroy it too! So just take your 7 "
"loops around the garden, and move along to the next exercise before anyone "
"notices the damage you made..."
msgstr ""
"Putz, correr na grama destrói a grama também! Então dê apenas 7 voltas no "
"jardim e depois vá para o próximo exercício antes que alguém perceba o "
"estrago que você fez..."

#. type: Content of: <p>
#: src/lessons/welcome/loopdowhile/LoopDoWhile.html:4
msgid ""
"Some cells of the world are yellow, but your buggle cannot stand being in "
"such cells. Write the necessary code to move forward until the ground gets "
"white. For that, use the provided method <code>isGroundWhite()</code>."
msgstr ""
"Algumas células do mundo são amarelas, mas seu buggle não pode ficar sobre "
"estas células. Escreva o código necessário para mover para a frente até que "
"o chão fique branco. Para isto use o método fornecido <code>chãoBranco()</"
"code>."

#. type: Content of: <p>
#: src/lessons/welcome/loopdowhile/LoopDoWhile.html:8
msgid ""
"The trick is that most buggles of this world are currently on this yellow "
"ground that they dislike so much. That is why they are in panic, and every "
"buggle rushes one cell forward, even the buggle that was not on a yellow "
"cell at first. In other worlds, even if the ground is white on the first "
"cell, you still want to move forward to the next cell."
msgstr ""
"O truque é que a maioria dos buggles deste mundo ficam sobre o chão amarelo "
"que eles não gostam. é por isto que eles estão em pânico, e cada buggle "
"\"rushes\" uma célula para a frente, mesmo aqueles que não estavam numa "
"célula amarela no começo. Em outras palavras, mesmo se o chão for branco na "
"primeira célula, você ainda vai querer se mover para a próxima célula."

#. type: Content of: <p>
#: src/lessons/welcome/loopdowhile/LoopDoWhile.html:13
msgid "The general idea is to do something like:"
msgstr "A ideia geral é fazer algo como:"

#. type: Content of: <pre>
#: src/lessons/welcome/loopdowhile/LoopDoWhile.html:14
#, no-wrap
msgid "move forward until located in a white cell"
msgstr "Mover para a frente até estar numa célula branca"

#. type: Content of: <p>
#: src/lessons/welcome/loopdowhile/LoopDoWhile.html:16
msgid ""
"The main difficulty is that we want this loop body to be executed once, even "
"we are already on a white cell.  It would be easy to do so by duplicating "
"the loop content before the actual loop, but this would be a bad idea: code "
"duplication is a <b>very</b> bad habit, and you should <b>always</b> avoid "
"it."
msgstr ""
"A coisa mais difícil é que nós queremos executar o corpo do loop uma vez, "
"mesmo se já estivermos numa célula branca. Isto é fácil duplicando o código "
"do loop'antes do loop em si, mas esta é uma má ideia: diplicação de código é "
"um hábito <b>muito</b> ruim, e você deve evitar isto <b>sempre</b>."

#. type: Content of: <p>
#: src/lessons/welcome/loopdowhile/LoopDoWhile.html:20
msgid ""
"Code duplication easily turns code maintenance into a nightmare: reading the "
"code becomes difficult as the reader must ensure that no slight difference "
"exist between the versions. Debugging the code becomes difficult, as bugs "
"have to be fixed in all versions. Actually, every modification of the code "
"becomes difficult. So, really, you should <b>always</b> strive to not "
"duplicate your code if you can avoid. And the good news is that you always "
"can..."
msgstr ""
"Duplicação de código faz da manutenção de código um pesadelo rapidamente: é "
"fdifícil ler o código e o leitor tem que garantir que nenhuma pequena "
"diferença exista entre as versões. Depurar o código se torna difícil, pois "
"os bugs devem ser consertados em todas as versões. Na verdade, cada "
"modificação do código se torna difícil. Então, na verdade, você deve "
"<b>sempre</b> se esforçar para não duplicar seu código sempre que possível. "
"Mas a boa notícia é que você sempre pode..."

#. type: Content of: <h3>
#: src/lessons/welcome/loopdowhile/LoopDoWhile.html:25
msgid "Executing the loop body at least once"
msgstr "Executando o corpo do loop pelo menos uma vez"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/loopdowhile/LoopDoWhile.html:26
#: src/lessons/welcome/array/basics/Array1.html:100
#: src/lessons/turmites/helloturmite/HelloTurmite.html:54
#: src/lessons/maze/pledge/PledgeMaze.html:59
msgid "[!python]"
msgstr "[!python]"

#. type: Content of: <p>
#: src/lessons/welcome/loopdowhile/LoopDoWhile.html:27
msgid ""
"Some languages have specific constructs for that, but not the Python "
"language. No problem, we can do it on our own! A good way is to have a "
"dedicated variable indicating whether we are taking the loop for the first "
"time or not, as follows."
msgstr ""
"Algumas linguagens tem construções específicas para isto, mas não a "
"linguagem Python. Sem problemas, podemos fazer isto nós mesmos! Uma boa "
"forma é ter uma variável dedicada indicando se estamos entrando no loop a "
"primeira vez ou não, como segue."

#. type: Content of: <pre>
#: src/lessons/welcome/loopdowhile/LoopDoWhile.html:31
#, no-wrap
msgid ""
"firstTime = True\n"
"while firstTime or (other conditions):\n"
"  firstTime = False\n"
"  (loop body)\n"
msgstr ""
"primeiraVez = True\n"
"while primeiraVez or (outras condições):\n"
"  primeiraVez = False\n"
"  (corpo do loop)\n"

#. type: Content of: <p>
#: src/lessons/welcome/loopdowhile/LoopDoWhile.html:37
msgid ""
"When <code>firstTime</code> is true, the loop body is executed even if the "
"other conditions would imply the contrary.  Once the loop body has been "
"executed once, it is set to false and never impact again the decision to "
"enter the body or not."
msgstr ""
"Quando <code>primeiraVez</code> é true, o corpo do loop é executado mesmo se "
"as outras condições digam o contrário.  uma vez que o loop tenha sido "
"executado uma vez, esta variável vira false e nunca mais impacta na decisão "
"de entrar ou não no loop."

#. type: Content of: <p>
#: src/lessons/welcome/loopdowhile/LoopDoWhile.html:43
msgid ""
"In a <tt>while</tt> loop, the condition is evaluated before anything else, "
"and if it's false, the loop body is never evaluated. Sometimes (although not "
"that often), you would prefer the loop body to get evaluated at least once, "
"even if the condition is initially false. For that, a variation of the "
"<tt>while</tt> loop gets used, using the following syntax in [!thelang].  [!"
"java|c]Do not forget the semi-column (;) after the condition, it is "
"mandatory.[/!]"
msgstr ""
"Num loop <tt>while</tt>, a condição é calculada antes de qualquer coisa, e "
"se for falsa, o corpo do loop nunca é executado. Algumas vezes (mas não "
"muito frequentemente), você pode preferir que o corpo do loop seja executado "
"pelo menos uma vez, mesmo se a condição seja inicialmente falsa. Para isto, "
"uma variação do loop <tt>while</tt> é usada, com a seguinte sintaxe em [!"
"thelang].  [!java|c]Não esqueça o ponto-e-vírgula (;) depois da condição, "
"que é obrigatório.[/!]"

#. type: Content of: <p><pre>
#: src/lessons/welcome/loopdowhile/LoopDoWhile.html:51
#, no-wrap
msgid ""
"do {\n"
"    <b>action()</b>[!java];[/!]\n"
"} while (<b>condition</b>)[!java];[/!]"
msgstr ""
"do {\n"
"    <b>ação()</b>[!java];[/!]\n"
"} while (<b>condição</b>)[!java];[/!]"

#. type: Content of: <h2>
#: src/lessons/welcome/loopdowhile/Poucet1.html:2
msgid "Tracks of buggles"
msgstr "Trilhas de buggles"

#. type: Content of: <p>
#: src/lessons/welcome/loopdowhile/Poucet1.html:4
msgid ""
"Your buggle got lost in a strange maze, and you must help it to find the "
"exit that is represented in orange.  You cannot simply explain the path to "
"the exit in something like <code>right();forward();forward();forward()</"
"code> because you have to save two buggles at the same time, that are lost "
"in similar but not identical worlds.  You can switch to the other world by "
"using the combobox above the world representation (where it's written 'Deep "
"Forest' right now), and selecting the other entry (that should read 'Deeper "
"Forest')."
msgstr ""
"Seu buggle se perdeu num estranho labirinto, e você deve ajudá-lo a achar a "
"saída que está representada em laranja. Você não pode simplesmente explicar "
"o caminho para a saída com algo do tipo <code>direita();avançar();avançar();"
"avançar()</code> por que você tem que salvar dois buggles ao mesmo tempo, "
"que estão presos em mundos similares mas não iguais. Você pode alternar para "
"o outro mundo usando o combobox acima da representação do mundo (onde está "
"escrito 'Floresta Fechada' agora), e selecionar a outra entrada (que deve "
"ler 'Floresta Mais Fechada')."

#. type: Content of: <p>
#: src/lessons/welcome/loopdowhile/Poucet1.html:10
msgid ""
"The good news is that the path to the exit is written on the ground. As you "
"can see, the world is made of several corridors, with baggles on the ground. "
"After each corridor, you should turn left if the corridor contains three "
"baggels or more, and you have to turn right if there is only 2 baggles or "
"less."
msgstr ""
"A boa nova é que o caminho para a saída está desenhado no chão. Como você "
"pode ver, o mundo é feito de vários corredores, com baggles no chão. Depois "
"de cada corredor, você deve virar à esquerda se o corredor tiver três "
"baggels ou mais, e virar a direita se tiver apenas 2 ou menos baggles."

#. type: Content of: <p>
#: src/lessons/welcome/loopdowhile/Poucet1.html:14
msgid ""
"You should count exactly 5 cells per corridor, the one at the intersection "
"counting as the last cell of the previous corridor, not as the first cell "
"after your turn."
msgstr ""
"Você deve contar exatamente 5 células por corredor. Aquela com a intersecção "
"conta como a última do corredor anterior, não como a primeira depois de você "
"virar."

#. type: Content of: <p>
#: src/lessons/welcome/loopdowhile/Poucet1.html:17
msgid ""
"So, the general form of your code must be something like \"while I did not "
"find the exit, take the next corridor to decide whether I should turn left "
"or right at the next intersection\". You can determine whether you are on "
"the exit cell (that is orange) with the provided <code>exitReached()</code> "
"method."
msgstr ""
"Logo, a forma geral de seu código deve ser algo como \"enquanto não "
"encontrar a saída, pegue o próximo corredor para decidir se vira à esqueda "
"ou à direita na próxima intersecção\". Você pode determinar se você está na "
"célula de saída (que é laranja) com o método <code>saídaAlcançada()</code> "
"fornecido."

#. type: Content of: <p>
#: src/lessons/welcome/loopdowhile/Poucet1.html:21
msgid ""
"To take one corridor, you simply have to run from one intersection to "
"another while counting the baggles you see on your path. That's easy: there "
"is 5 steps in each corridors so a simple <code>for</code> loop suffices."
msgstr ""
"Para entrar num corredor, você tem que simplesmente correr de uma "
"intersecção para outra enquanto conta os baggles que vê no seu caminho. Isto "
"é fácil: existem 5 passos em cada corredor, de forma que um simples loop "
"<code>for</code> resolve."

#. type: Attribute 'alt' of: <p><div>
#: src/lessons/welcome/loopdowhile/Poucet1.html:25
msgid "I cannot imagine how to count the baggles I see."
msgstr "Eu não consigo imaginar como contar os baggles que eu vejo."

#. type: Content of: <p><div>
#: src/lessons/welcome/loopdowhile/Poucet1.html:26
msgid ""
"You need a variable that is initialized to 0, and incremented each time you "
"see a baggle on the ground. A variable used this way is often called "
"<i>counter</i>."
msgstr ""
"Você precisa de uma variável que é inicializada em 0, e incrementada cada "
"vez que você vê um baggle no chão. Uma variável usada desta forma é "
"frequentemente chamada de <i>contador</i>."

#. type: Content of: <p><div>
#: src/lessons/welcome/loopdowhile/Poucet1.html:28
msgid ""
"Don't forget to reset your counter to 0 at the beginning of each corridor!"
msgstr "Não esqueça de resetar seu contador para 0 no começo de cada corredor!"

#. type: Content of: <p>
#: src/lessons/welcome/loopdowhile/Poucet1.html:31
msgid ""
"Oh, and when you reach the exit, don't forget to take an extra step to "
"actually exit the maze!"
msgstr ""
"Ah, e quando chegar na saída, não esqueça de dar um passo a mais para sair "
"de fato do labirinto!"

#. type: Content of: <h1>
#: src/lessons/welcome/array/basics/Array1.html:2
msgid "[!java|scala]Arrays[/!][!python]Lists[/!] and Knotting"
msgstr "[!java|scala]Arrays[/!][!python]Lists[/!] e nós"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/array/basics/Array1.html:4
msgid ""
"The goal of this exercise is to reproduce the pattern of the first row in "
"the other rows with a shift of one cell (see the Objective tab for details). "
"The biggest difference between this exercise and the others we had on "
"patterns is that you have to read the pattern (on first row) before "
"reproducing it. You cannot do otherwise because the same code will be "
"executed on three different worlds, each of them having a specific pattern."
msgstr ""
"O objetivo deste exercício é reproduzir o padrão da primeira linha nas "
"outras linhas com um deslocamento de uma célula (veja a aba Objetivo para "
"detalhes). A maior diferença entre este exercício e os outros sobre padrões "
"é que você tem que ler o padrão (na primeira linha) antes de reproduzí-lo. "
"Você não pode fazer de outro jeito por que o mesmo código será executado em "
"três mundos diferentes, cada um com seu próprio padrão."

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:12
msgid ""
"One solution is to read the next cell, and go copy it in position before "
"coming back to read the second cell. But since it is forbidden to use the "
"methods to teleport the buggle to a specific position (<code>setPos()</code> "
"and similar), this approach will be a pain to implement."
msgstr ""
"Uma solução é ler a próxima célula, e copiar ela na posição antes de voltar "
"para ler a segunda célula. Mas já que é proibido usar os métodos de "
"teletransporte de buggle para uma posição específica (<code>setPos()</code> "
"e similares), esta abordagem seria muito difícil de implementar."

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:17
msgid ""
"The simplest is to store the sequence of colors that constitute the whole "
"pattern in an [!java|scala]<b>array</b>[/!][!python]<b>list</b>[/!].  But "
"before we can do so, we should learn a bit what [!java|scala]arrays[/!][!"
"python]lists[/!] are."
msgstr ""
"O mais simples é armazenar a sequência de cores que constituem o padrão "
"inteiro numa [!java|scala]<b>array</b>[/!][!python]<b>list</b>[/!].  Mas "
"antes de fazer isto, devemos aprender um pouco sobre o que [!java|"
"scala]arrays[/!][!python]lists[/!] são."

#. type: Content of: <h2>
#: src/lessons/welcome/array/basics/Array1.html:21
msgid "[!java|scala]Arrays[/!][!python]List[/!]"
msgstr "[!java|scala]Arrays[/!][!python]List[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:23
msgid ""
"[!java|scala]An array[/!][!python]A list[/!] is an ordered sequence of "
"variables that go together.  It is somehow similar to a shelve where each "
"level can store a separate value. Each variable of the sequence is "
"identified by its position, and can store a specific value. [!java|scala]All "
"cells of the array must store values of the same type because arrays are "
"homogeneous in [!thelang]. It is possible to trick this restriction by using "
"the datatype <code>[!java]Object[/!][!scala]Any[/!]</code> that can contain "
"[!java]almost[/!] any other datatype. [!java]Primitive types such as the "
"ones we saw so far (int, boolean, double, char, etc) cannot be stored in an "
"Object variable, but their objectified counter-part (Integer, Boolean, "
"Double, Char, Boolean, etc) can.[/!] It is however a good practice to make "
"the type of an array as specific as possible, i.e., if you plan to store "
"some integers in your array, make it an array of integers, not of [!"
"java]Object[/!][!scala]Any[/!].[/!] [!python]Lists can even mix values of "
"differing types, such as integer values in some cells and colors in other "
"cells.[/!]"
msgstr ""
"[!java|scala]Uma array[/!][!python]Uma list[/!] é uma sequência ordenada de "
"variáveis que ficam juntas. é similar a uma estante onde em cada prateleira "
"se coloca um valor separado. Cada variável da sequência é identificada por "
"sua posição, e pode armazenar um valor específico. [!java|scala]todas as "
"células da array devem armazenar valores do mesmo tipo por que arrays são "
"homogêneas em [!thelang]. É possível burlar esta restrição usando tipos de "
"dados <code>[!java]Object[/!][!scala]Any[/!]</code> que contenham [!"
"java]praticamente[/!] qualquer outro tipo de dados. [!java]Tipos primitivos "
"como aqueles que vimos anteriormente (int, boolean, double, char, etc) não "
"podem ser armazenados numa variável Object, mas suas contrapartidas "
"objetificadas (Integer, Boolean, Double, Char, Boolean, etc) podem.[/!] "
"Entretanto, é boa prática fazer o tipo de uma array o mais específico "
"possível, i.e., se você planeja armazenar alguns inteiros na sua array, faça "
"dela uma array de inteiros, não de [!java]Object[/!][!scala]Any[/!].[/!] [!"
"python]Lists podematé mesmo misturar valores de diferentes tipos, como "
"valores inteiros em algumas células e cores em outras células.[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:40
msgid ""
"T is the [!java|scala]array[/!][!python]list[/!]'s name, [!java|python]T[0]"
"[/!][!scala]T(0)[/!] is the name of the first cell, [!java|python]T[1][/!][!"
"scala]T(1)[/!] the name of the second cell, [!java|python]T[2][/!][!"
"scala]T(2)[/!] the third one, etc. And yes, the first cell is numbered [!"
"java|python]T[0][/!][!scala]T(0)[/!] while the last one of [!java|scala]an "
"array[/!][!python]a list[/!] of size N is [!java|python]T[N-1][/!][!"
"scala]T(N-1)[/!]. It may seem funny to count starting from 0 and not from 1 "
"as usual, but some historical reasons make it unavoidable here."
msgstr ""
"T é o nome da [!java|scala]array[/!][!python]list[/!], [!java|python]T[0][/!]"
"[!scala]T(0)[/!] é o nome da primeira célula, [!java|python]T[1][/!][!"
"scala]T(1)[/!] é o nome da segunda célula, [!java|python]T[2][/!][!scala]T(2)"
"[/!] da terceira e etc. E sim, a primeira célula é numerada [!java|"
"python]T[0][/!][!scala]T(0)[/!] e a última de uma [!java|scala]array[/!][!"
"python]list[/!] de tamanho N é [!java|python]T[N-1][/!][!scala]T(N-1)[/!]. "
"Pode parecer estranho contar a partir de 0 e não de 1 como normalmente, mas "
"por motivos históricos isto agora é inevitável."

#. type: Content of: <h3>
#: src/lessons/welcome/array/basics/Array1.html:48
msgid "Basic usage"
msgstr "Uso básico"

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:50
msgid ""
"We can use an integer variable <i>i</i> to access with [!java|python]T[i][/!]"
"[!scala]T(i)[/!] to the cells: when the value of <i>i</i> is 0, then [!java|"
"python]T[i][/!][!scala]T(i)[/!] accesses [!java|python]T[0][/!][!scala]T(0)"
"[/!]; when the value of <i>i</i> is 10, then [!java|python]T[i][/!][!"
"scala]T(i)[/!] accesses [!java|python]T[10][/!][!scala]T(10)[/!].  <i>i</i> "
"is said to be the <b>index</b> in T.  <code>[!java|python]T[i][/!][!"
"scala]T(i)[/!]</code> can be used just like any variable. We can set a new "
"value:"
msgstr ""
"Podemos usar uma variável inteira <i>i</i> para acessar com [!java|"
"python]T[i][/!][!scala]T(i)[/!] as células: quando o valor de <i>i</i> é 0, "
"[!java|python]T[i][/!][!scala]T(i)[/!] acessa [!java|python]T[0][/!][!"
"scala]T(0)[/!]; quando o valor de <i>i</i> é 10, [!java|python]T[i][/!][!"
"scala]T(i)[/!] acessa [!java|python]T[10][/!][!scala]T(10)[/!]. Sizemos que "
"<i>i</i> é o <b>índice</b> em T. <code>[!java|python]T[i][/!][!scala]T(i)"
"[/!]</code> pode ser usada simplesmente como qualquer variável. Podemos "
"configurar um novo valor:"

#. type: Content of: <pre>
#: src/lessons/welcome/array/basics/Array1.html:58
#, no-wrap
msgid "[!java|python]T[i][/!][!scala]T(i)[/!] = 78[!java];[/!]"
msgstr "[!java|python]T[i][/!][!scala]T(i)[/!] = 78[!java];[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:60
msgid "We can retrieve and use its value:"
msgstr "Podemos recuperar e usar seu valor:"

#. type: Content of: <pre>
#: src/lessons/welcome/array/basics/Array1.html:61
#, no-wrap
msgid "x = [!java|python]T[i][/!][!scala]T(i)[/!][!java];[/!]"
msgstr "x = [!java|python]T[i][/!][!scala]T(i)[/!][!java];[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:63
msgid "We can test this value:"
msgstr "Podemos testar este valor:"

#. type: Content of: <pre>
#: src/lessons/welcome/array/basics/Array1.html:64
#, no-wrap
msgid ""
"if ([!java|python]T[i][/!][!scala]T(i)[/!] > 0) [!scala|java]{[/!][!python]:[/!]\n"
"    [!java|scala]//[/!][!python]#[/!] instructions...\n"
"[!java|scala]}[/!]"
msgstr ""
"if ([!java|python]T[i][/!][!scala]T(i)[/!] > 0) [!scala|java]{[/!][!python]:[/!]\n"
"    [!java|scala]//[/!][!python]#[/!] instruções...\n"
"[!java|scala]}[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:68
msgid ""
"It is very easy to traverse the whole [!scala|java]array[/!][!"
"python]list[/!], for example to initialize each cells."
msgstr ""
"É muito fácil percorrer toda a [!scala|java]array[/!][!python]list[/!], por "
"exemplo para iniciar as células."

#. type: Content of: <pre>
#: src/lessons/welcome/array/basics/Array1.html:71
#, no-wrap
msgid ""
"[!java]for (int i = 0; i&lt;T.length; i++) {[/!][!python]for i in range(len(T)):[/!][!scala]for (i &lt;- 0 to T.length-1) {[/!]\n"
"   [!java|python]T[i][/!][!scala]T(i)[/!] = 3[!java];[/!]\n"
"[!java|scala]}[/!]"
msgstr ""
"[!java]for (int i = 0; i&lt;T.length; i++) {[/!][!python]for i in range(len(T)):[/!][!scala]for (i &lt;- 0 to T.length-1) {[/!]\n"
"   [!java|python]T[i][/!][!scala]T(i)[/!] = 3[!java];[/!]\n"
"[!java|scala]}[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:75
msgid ""
"[!java|scala]The notation <code>T.length</code> retrieves the length of the "
"array T,[/!] [!python]The function <code>len()</code> retrieves the length "
"of the list T,[/!] allowing to build a classical for loop easily.  [!"
"python]Actually, the <code>len()</code> function is much more generic and "
"can be used to retrieve the length of many objects.  Applied to strings for "
"example, it returns the amount of chars in this string.[/!] [!scala]Don't "
"forget to start at <code>0</code> and stop at <code>T.length-1</code> "
"instead of <code>1</code> to <code>T.length</code> however.[/!]"
msgstr ""
"[!java|scala]A notação <code>T.length</code> recupera o comprimento (length) "
"da  array T,[/!] [!python]A função <code>len()</code> recupera o comprimento "
"da lista T,[/!] permitindo que se construa um loop clássico facilmente.  [!"
"python]Na verdade, a função <code>len()</code> é muito mais genérica e pode "
"ser usada para recuperar o comprimento de muitos objetos. Aplicada numa "
"string, por exemplo, ela retorna a quantidade de caracteres na string.[/!] [!"
"scala]Não esqueça de começar em <code>0</code> e terminar em <code>T."
"length-1</code> ao invés de ir de <code>1</code> até <code>T.length</code>."
"[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:83
msgid ""
"If you just want to iterate over the values of T without keeping track of "
"their index, you can simply write:"
msgstr ""
"Se você quer simplesmente iterar nos valores de T sem controlar o índice, "
"pode simplesmente escrever:"

#. type: Content of: <pre>
#: src/lessons/welcome/array/basics/Array1.html:84
#, no-wrap
msgid ""
"[!java]for (int i: T) {[/!][!scala]for (i &lt;- T) {[/!][!python]for i in T:[/!]\n"
"  action()[!java];[/!]\n"
"[!java|scala]}[/!]"
msgstr ""
"[!java]for (int i: T) {[/!][!scala]for (i &lt;- T) {[/!][!python]for i in T:[/!]\n"
"  ação()[!java];[/!]\n"
"[!java|scala]}[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:87
msgid ""
"[!java]This construct is called an <i>extended loop</i> in Java. The "
"variable <i>i</i> takes all values of the set located to the right of the "
"colon (:), one after the other.[/!] [!python|scala]This is actually very "
"similar to the previous construct.  Simply, <code>[!python]range(n)[/!][!"
"scala]i to j[/!]</code> returns a set of integers over which the for "
"construct iterates.  Actually, [!thelang] offers much more elegant ways to "
"traverse [!python]lists[/!][!scala]arrays[/!] and other data collections, "
"but this should be the topic of a specific set of exercises (that are still "
"to be written in PLM).[/!]"
msgstr ""
"[!java]Esta construção é chamada um <i>loop extendido</i> em Java. A "
"variável <i>i</i> assume todos os valores do conjunto localizado a direita "
"do dois-pontos (:), um depois do outro.[/!] [!python|scala]Isto é na verdade "
"muito similar à construção anterior. Simplesmente, <code>[!python]range(n)"
"[/!][!scala]i to j[/!]</code> retorna um conjunto de inteiros sobre os quais "
"o loop for itera. Na verdade, [!thelang] oferece formas muito mais elegantes "
"de percorrer [!python]lists[/!][!scala]arrays[/!] e outras coleções de "
"dados, mas isto fica para um conjunto específico de exercícios (que ainda "
"será escrito no PLM).[/!]"

#. type: Content of: <h3>
#: src/lessons/welcome/array/basics/Array1.html:98
msgid "Declaring [!python]a list[/!][!java|scala]an array[/!]"
msgstr "Declarando uma [!python]list[/!][!java|scala]array[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:101
msgid ""
"If you know beforehand the content of your list, you can affect these values "
"all together.  Just put them between square braces and separated by commas "
"as follows:"
msgstr ""
"Se você sabe antecipadamente o conteúdo da sua lista, você pode atribuir os "
"valores todos juntos. Coloque eles simplesmente entre colchetes e separados "
"por vírgulas como segue:"

#. type: Content of: <pre>
#: src/lessons/welcome/array/basics/Array1.html:104
#, no-wrap
msgid ""
"L = [1, 3, 5, 7, 9] \n"
"<span class=\"comment\"># L is now an array of 5 values, all of them being integers</span>"
msgstr ""
"L = [1, 3, 5, 7, 9] \n"
"<span class=\"comment\"># L agora é uma array de 5 valores, todos eles inteiros</span>"

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:106
msgid ""
"Otherwise, you probably want to create an empty list and then append each "
"values separately to the list:"
msgstr ""
"Por outro lado, você provavelmente vai querer criar uma lista vazia e então "
"anexar os valores separadamente a ela:"

#. type: Content of: <pre>
#: src/lessons/welcome/array/basics/Array1.html:108
#, no-wrap
msgid ""
"L2 = [] \n"
"<span class=\"comment\"># L2 is now an empty list</span>\n"
"L2.append(1)\n"
"L2.append(3)\n"
"L2.append(5)\n"
"L2.append(7)\n"
"L2.append(9) \n"
"<span class=\"comment\"># Its content is now the same as L previously</span>"
msgstr ""
"L2 = [] \n"
"<span class=\"comment\"># neste momento, L2 é uma lista vazia</span>\n"
"L2.append(1)\n"
"L2.append(3)\n"
"L2.append(5)\n"
"L2.append(7)\n"
"L2.append(9) \n"
"<span class=\"comment\"># E agora seu conteúdo é igual ao de L, vista antes</span>"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/array/basics/Array1.html:116
#: src/lessons/turmites/helloturmite/HelloTurmite.html:61
msgid "[/!] [!java|scala]"
msgstr "[/!] [!java|scala]"

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:119
msgid ""
"To declare a variable named <b>T</b> that can store an array of integers, "
"one should write:"
msgstr ""
"Para declarar uma variável chamada <b>T</b> que pode guardar uma array de "
"inteiros, você deve escrever:"

#. type: Content of: <pre>
#: src/lessons/welcome/array/basics/Array1.html:120
#, no-wrap
msgid "[!java]int[] T;[/!][!scala]var T:Array[Int][/!]"
msgstr "[!java]int[] T;[/!][!scala]var T:Array[Int][/!]"

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:122
msgid ""
"[!java]<code>int</code> means that the elements of the array are of type "
"integer; <code>[]</code> means that we are speaking of an array and <code>T</"
"code> is the name of the variable.  For historical reasons, this can also be "
"written as <code>int T[]</code> (with the [] after the variable name), but "
"this is less readable and should probably be avoided.[/!] [!scala]The "
"<code>[Int]</code> notation specializes the Array type (that is generic), "
"specifying that each cell of this array is an integer. An array of booleans "
"would simply by written <code>Array[Boolean]</code>.[/!]"
msgstr ""
"[!java]<code>int</code> significa que os elementos da array são do tipo "
"inteiro; <code>[]</code> significa que estamos falando de uma array e "
"<code>T</code> é o nome da variável. Por motivos históricos, também pode ser "
"escrito como <code>int T[]</code> (com o [] depois do nome da variável), mas "
"como assim é menos legível é melhor você evitar esta forma.[/!] [!scala]A "
"notação <code>[Int]</code> especializa o tipo Array (que é genérico), "
"especificando que cada célula desta array é um inteiro. Um array de "
"booleanos deve ser escrito simplesmente como <code>Array[Boolean]</code>.[/!]"

#. type: Content of: <h3>
#: src/lessons/welcome/array/basics/Array1.html:130
msgid "Allocating an array"
msgstr "Alocando uma array"

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:132
msgid ""
"Declaring a variable <code>T</code> that stores an array only reserve the "
"<b>name</b> <code>T</code> for later use, but not the memory area to store "
"the cells. The array is not initialized yet: it does not have any value. "
"What would <code>[!java]T[4][/!][!scala]T(4)[/!]</code> mean if we didn't "
"say that the array is 5 cells long?"
msgstr ""
"Declarar uma variável <code>T</code> que armazena uma array apenas reserva o "
"<b>nome</b> <code>T</code> para uso futuro, mas não reserva a área de "
"memória para armazenar as células. A array ainda não está inicializada: ela "
"não tem qualquer valor. O que significa <code>[!java]T[4][/!][!scala]T(4)"
"[/!]</code> se ainda não dissemos que a array tem 5 células?"

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:137
msgid "First and foremost, we have to give a value to <code>T</code>:"
msgstr "Primeiramente, temos que dar um valor a <code>T</code>:"

#. type: Content of: <pre>
#: src/lessons/welcome/array/basics/Array1.html:138
#, no-wrap
msgid "[!java]T = new int[10];[/!][!scala]var T = new Array[Int](10)[/!]"
msgstr "[!java]T = new int[10];[/!][!scala]var T = new Array[Int](10)[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:140
msgid ""
"<code>new</code> means that we want to create something, and <code>[!"
"java]int[10][/!][!scala]Array[Int](10)[/!]</code> means that it is an array "
"of 10 integer values.  In return, an array of 10 integer cells is created in "
"memory, and the <code>T</code> variable <b>references</b> this array."
msgstr ""
"<code>new</code> (novo) significa que nós queremos criar algo, e <code>[!"
"java]int[10][/!][!scala]Array[Int](10)[/!]</code> significa que é uma array "
"de 10 valores inteiros. Como resultado, uma array de 10 células para valores "
"inteiros é criada na memória, e a variável <code>T</code> <b>faz referência</"
"b> a esta array."

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:145
msgid ""
"The size of an array is fixed and cannot be changed after the creation of "
"the array. The size of a <code>T</code> array can be retrieve by consulting "
"the variable <code>T.length</code>."
msgstr ""
"O tamanho de uma array é fixo e não pode ser mudado depois da criação da "
"array. O tamanho de uma array <code>T</code> pode ser recuperado ao se "
"consultar a variável <code>T.length</code>."

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:149
msgid ""
"While allocating, you can specify the size with a variable: <code>[!"
"java]int[] T = new int[i];[/!][!scala]var T = new Array[Int](i);[/!]</code> "
"In this case, the array's size will be set to the value of <code>i</code> "
"<i>when <code>new</code> gets called</i>.  The size of the array still "
"cannot be modified: even if the variable <code>i</code> changes afterward, "
"the size remains to the value given when it was allocated.  [!java]Also, it "
"is forbidden to write something like <code>int T[10];</code> when declaring "
"the variable.  You are required to use the <code>new</code> instruction to "
"allocate it, as in <code>int[] T = new int[10];</code> [/!]"
msgstr ""
"Na hora da alocação, você pode especificar o tamanho com uma variável: "
"<code>[!java]int[] T = new int[i];[/!][!scala]var T = new Array[Int](i);"
"[/!]</code> Neste caso, o tamanho da array será ajustado para o valor de "
"<code>i</code> <i>quando <code>new</code> for chamado</i>.  O tamanho da "
"array ainda não pode ser modificado: mesmo se a variável <code>i</code> "
"mudar depois disto, o tamanho permanece o do valor dado no momento da "
"alocação.  [!java]Além disto, é proibido escrever algo como <code>int T[10];"
"</code> no momento de declarar a variável. Você deve usar a instrução "
"<code>new</code> para alocar o array, como em <code>int[] T = new int[10];</"
"code> [/!]"

#. type: Content of: <h4>
#: src/lessons/welcome/array/basics/Array1.html:157
msgid "Declaration and initialization"
msgstr "Declaração e inicialização"

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:158
msgid ""
"If you know beforehand the content of your array, you can declare, allocate "
"and initialize it in one shoot:"
msgstr ""
"Se você sabe previamente o conteúdo da sua array, você pode declarar, alocar "
"e inicializar ela tudo de uma vez:"

#. type: Content of: <pre>
#: src/lessons/welcome/array/basics/Array1.html:159
#, no-wrap
msgid "[!java]int[] T = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };[/!][!scala]var T = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)[/!]"
msgstr "[!java]int[] T = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };[/!][!scala]var T = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:161
msgid ""
"To know the size of the array to allocate, the compiler counts the provided "
"values.  This code is equivalent to:"
msgstr ""
"Para saber o tamanho da array para alocar, o compilador conta os valores "
"dados. Este código é equivalente a:"

#. type: Content of: <pre>
#: src/lessons/welcome/array/basics/Array1.html:163
#, no-wrap
msgid ""
"[!java]int[] T = new int[10];\n"
"T[0] = 1;\n"
"T[1] = 2;\n"
"...\n"
"T[9] = 10;[/!][!scala]var T = new Array[Int](10);\n"
"T(0) = 1\n"
"T(1) = 2\n"
"...\n"
"T(9) = 10[/!]"
msgstr ""
"[!java]int[] T = new int[10];\n"
"T[0] = 1;\n"
"T[1] = 2;\n"
"...\n"
"T[9] = 10;[/!][!scala]var T = new Array[Int](10);\n"
"T(0) = 1\n"
"T(1) = 2\n"
"...\n"
"T(9) = 10[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:173
msgid "It is also equivalent to:"
msgstr "também é equivalente a:"

#. type: Content of: <pre>
#: src/lessons/welcome/array/basics/Array1.html:174
#, no-wrap
msgid ""
"[!java]int[] T = new int[10];\n"
"for (int i=0; i&lt;T.length; i++) {\n"
"  T[i] = i+1;\n"
"}[/!][!scala]var T = new Array[Int](10);\n"
"for (i &lt;- 0 to T.length-1) {\n"
"  T(i) = i+1\n"
"}[/!]"
msgstr ""
"[!java]int[] T = new int[10];\n"
"for (int i=0; i&lt;T.length; i++) {\n"
"  T[i] = i+1;\n"
"}[/!][!scala]var T = new Array[Int](10);\n"
"for (i &lt;- 0 to T.length-1) {\n"
"  T(i) = i+1\n"
"}[/!]"

#. type: Content of: <h3>
#: src/lessons/welcome/array/basics/Array1.html:185
msgid "[!python]Lists[/!][!scala|java]Arrays[/!] and method parameters"
msgstr "[!python]Lists[/!][!scala|java]Arrays[/!] e parâmetros de métodos"

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:186
msgid ""
"It is perfectly OK to pass [!python]a list[/!][!java|scala]an array[/!] to a "
"method as a parameter.  This method can then use this parameter as if it "
"were defined locally:"
msgstr ""
"Não tem nenhum problema passar uma [!python]list[/!][!java|scala]array[/!] "
"para um método como parâmetro. Este método pode então usar este parâmetro "
"como se ele fosse definido localmente:"

#. type: Content of: <pre>
#: src/lessons/welcome/array/basics/Array1.html:188
#, no-wrap
msgid ""
"[!java]boolean has42First(int[] array) {\n"
"    return array[0] == 42;\n"
"}[/!][!python]def has42First(list):\n"
"  return list[0] == 42[/!][!scala]def has42First(array:Array[Int]):Boolean = {\n"
"  return array(0) == 42\n"
"}[/!]"
msgstr ""
"[!java]boolean has42First(int[] array) {\n"
"    return array[0] == 42;\n"
"}[/!][!python]def has42First(list):\n"
"  return list[0] == 42[/!][!scala]def has42First(array:Array[Int]):Boolean = {\n"
"  return array(0) == 42\n"
"}[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:195
msgid "On the caller side, that also very simple:"
msgstr "No lado de quem invoca também é bastante simples:"

#. type: Content of: <pre>
#: src/lessons/welcome/array/basics/Array1.html:196
#, no-wrap
msgid ""
"[!java]int[] tab = new int[10];[/!][!scala]var tab = new Array[Int] (10)[/!][!python]tab = [1, 3, 5, 7, 9][/!]\n"
"[!java|scala]<span class=\"comment\">// Values initialization omitted</span>\n"
"[/!]if (has42First(tab))[!java|scala] {[/!][!python]:[/!]\n"
"   <span class=\"comment\">[!java|scala]//[/!][!python]#[/!] do something</span>\n"
"[!java|scala]}[/!]"
msgstr ""
"[!java]int[] tab = new int[10];[/!][!scala]var tab = new Array[Int] (10)[/!][!python]tab = [1, 3, 5, 7, 9][/!]\n"
"[!java|scala]<span class=\"comment\">// inicialização de valores omitida</span>\n"
"[/!]if (has42First(tab))[!java|scala] {[/!][!python]:[/!]\n"
"   <span class=\"comment\">[!java|scala]//[/!][!python]#[/!] faz algo</span>\n"
"[!java|scala]}[/!]"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/array/basics/Array1.html:202
#: src/lessons/turmites/langton/Langton.html:21
msgid "[!java]"
msgstr "[!java]"

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:203
msgid ""
"If you want to allocate and initialize the array in one shoot, that's a bit "
"more complicated as the compiler has to know the type of the parameter you "
"are creating.  For that, use the following (ugly) construct:"
msgstr ""
"Se você quer alocar e inicializar o array de uma vez só, é um pouco mais "
"complicado pois o compilador terá que saber o tipo do parâmetro que você "
"está criando. Para isto, use a seguinte construção (feia):"

#. type: Content of: <pre>
#: src/lessons/welcome/array/basics/Array1.html:206
#, no-wrap
msgid ""
"if (has42First(   new int[] {1, 3, 5, 7, 9}   ) {\n"
"   <span class=\"comment\">// do something</span>\n"
"}"
msgstr ""
"if (has42First(   new int[] {1, 3, 5, 7, 9}   ) {\n"
"   <span class=\"comment\">// faz algo</span>\n"
"}"

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:211
msgid ""
"Methods can also return [!java|scala]arrays[/!][!python]lists[/!] as result "
"without any complication.  Here is a method that returns [!java|scala]an "
"array[/!][!python]a list[/!] of the requested size, filled with 42s."
msgstr ""
"Métodos também podem retornar [!java|scala]arrays[/!][!python]lists[/!] como "
"resultado sem nenhuma complicação. Aqui está um método que retorna uma [!"
"java|scala]array[/!][!python]list[/!] do tamanho pedido, preenchido com 42s."

#. type: Content of: <pre>
#: src/lessons/welcome/array/basics/Array1.html:214
#, no-wrap
msgid ""
"[!java]int[] fill42(int size) {\n"
"    int[] res = new int[size];\n"
"    for (int i=0; i&lt;size; i++) \n"
"        res[i] = 42;\n"
"    return res;\n"
"}[/!][!scala]def fill42(size:Int):Array[Int] = {\n"
"    var res = new Array[int] (size)\n"
"    for (i &lt;- 0 to size -1) {\n"
"        res(i) = 42;\n"
"    }\n"
"    return res;\n"
"}[/!][!python]def fill42(size):\n"
"    res = []\n"
"    for i in range(size):\n"
"        res.append(42)\n"
"    return res[/!]"
msgstr ""
"[!java]int[] fill42(int size) {\n"
"    int[] res = new int[size];\n"
"    for (int i=0; i&lt;size; i++) \n"
"        res[i] = 42;\n"
"    return res;\n"
"}[/!][!scala]def fill42(size:Int):Array[Int] = {\n"
"    var res = new Array[int] (size)\n"
"    for (i &lt;- 0 to size -1) {\n"
"        res(i) = 42;\n"
"    }\n"
"    return res;\n"
"}[/!][!python]def fill42(size):\n"
"    res = []\n"
"    for i in range(size):\n"
"        res.append(42)\n"
"    return res[/!]"

#. type: Content of: <h3>
#: src/lessons/welcome/array/basics/Array1.html:231
#: src/lessons/recursion/lego/square/FourSquare.html:48
#: src/lessons/recursion/hanoi/HanoiBoard.html:21
msgid "Goal of this exercise"
msgstr "Objetivo deste exercício"

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:233
msgid ""
"At least! After this long explanation, we can come back to the exercise."
msgstr ""
"Finalmente! Depois desta longa explicação, podemos voltar ao exercício."

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:234
msgid ""
"Your mission is rather simple actually.  Your code should save the color "
"pattern observed on the first row into [!java|scala]an array[/!][!python]a "
"list[/!].  [!python]The easiest is to create an empty list, and then "
"<code>append()</code> the colors one after the others as you read them (with "
"<code>getGroundColor()</code>).[/!] [!java|scala]For that, you should "
"declare and allocate an array of <code>Color</code>. Beware, there is "
"several worlds, of differing size; use <code>getWorldHeight()</code> to "
"retrieve the size of the current world.  Once the array allocated, fill it "
"by reading the ground color in each locations (with <code>getGroundColor()</"
"code>).[/!]"
msgstr ""
"Sua missão é bastante simples na verdade. Seu código deve guardar o padrão "
"de cores observado na primeira linha numa [!java|scala]array[/!][!"
"python]list[/!].  [!python]O mais fácil é criar uma lista vazia, e então "
"usar <code>append()</code>para adicionar as cores uma por uma à medida em "
"que você for lendo elas (com <code>getCorDoChão()</code>).[/!] [!java|"
"scala]Para isto, você deve declarar e alocar uma array de <code>Cor</code>. "
"Mas atencção, existem vários mundos, de diferentes tamanhos; use "
"<code>getAlturaDoMundo()</code> para recuperar o tamanho do mundo atual. Uma "
"que a array esteja alocada, preencha ela lendo a cor do chão em cada um dos "
"pontos (com <code>getCorDoChão()</code>).[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array1.html:242
msgid ""
"Once you managed to read and save the pattern on the first row, you have to "
"reapply the pattern on every rows, for example by executing "
"<code>getWorldHeight()</code> times a method written specifically for this."
msgstr ""
"Uma vez que você conseguiu ler e gravar o padrão na primeira linha, você tem "
"que reaplicar o padrão nas outras linhas, por exemplo executando "
"<code>getAlturaDoMundo()</code> vezes um método escrito especificamente para "
"isto."

#. type: Content of: <h1>
#: src/lessons/welcome/array/basics/Array2.html:2
msgid "[!java|scala]Arrays[/!][!python]Lists[/!], Knotting and Modulos"
msgstr "[!java|scala]Arrays[/!][!python]Lists[/!], Nós e Módulos"

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array2.html:4
msgid ""
"This exercise is similar to the previous one: you have to reproduce the "
"color pattern of the first cell into the other ones."
msgstr ""
"Este exercício é similar ao anterior: você tem que reproduzir o padrão de "
"cores da primeira célula nas outras."

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array2.html:7
msgid ""
"The first difference is that the world is bordered of walls: you thus have "
"to slightly modify your trajectory to ensure that the buggle does not crash "
"into a wall. The simpler for that is to handle the first cell out of the "
"<code>for</code> loop and do only <code>getWorldHeight()-1</code> steps in "
"the loop."
msgstr ""
"A primeira diferença é que o mundo é cercado de muros: você portanto tem que "
"modificar levemente sua trajetória para garantir que o buggle não bata num "
"muro. O jeito mais simples é manipular a primeira célula fora do loop "
"<code>for</code> e fazer apenas <code>getAlturaDoMundo()-1</code> passos no "
"loop."

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array2.html:13
msgid ""
"The other difference is that the offset to apply between columns is not "
"fixed, but written on the first cell of each column. To get the info as an "
"integer, we can use:"
msgstr ""
"A outra diferença é que o deslocamento para aplicar entre as colunas não é "
"fixo, mas está escrito na primeira célula de cada coluna. Para obter a "
"informação como um inteiro, podemos usar:"

#. type: Content of: <pre>
#: src/lessons/welcome/array/basics/Array2.html:17
#, no-wrap
msgid "[!java]int offset = Integer.parseInt(readMessage())[/!][!python]offset = int( readMessage() )[/!][!scala]val offset = readMessage().toInt[/!]"
msgstr "[!java]int deslocamento = Integer.parseInt(readMessage())[/!][!python]deslocamento = int( readMessage() )[/!][!scala]val deslocamento = readMessage().toInt[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array2.html:19
msgid ""
"<code>readMessage()</code> gets the message on the ground as a [!java|"
"scala]String[/!][!python]string[/!], while <code>[!java]Integer.parseInt(str)"
"[/!][!scala]str.toInt[/!][!python]int(str)[/!]</code> transforms the string "
"<code>str</code> into an integer by <i>reading</i> it."
msgstr ""
"<code>readMessage()</code> obtém a mensagem no chão como uma [!java|"
"scala]String[/!][!python]string[/!], enquanto <code>[!java]Integer."
"parseInt(str)[/!][!scala]str.toInt[/!][!python]int(str)[/!]</code> "
"transforma a string <code>str</code> em um inteiro ao <i>ler</i> ela."

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array2.html:23
msgid ""
"Then, to pick the right color, the easier is to use the <code>%</code> "
"(modulo) operator. For example, <code>(i + 5) % size</code> allows to "
"retrieve the <code>i</code>th cell of an array of size <code>size</code> "
"with an offset of <code>5</code>."
msgstr ""
"Então, para pegar a cor certa, o mais fácil é usar o operador <code>%</code> "
"(operador módulo). Por exemplo, <code>(i + 5) % tam</code> serve para "
"recuperar a <code>i</code>-ésima célula de uma array de tamanho <code>tam</"
"code> com um deslocamento de <code>5</code>."

#. type: Content of: <p>
#: src/lessons/welcome/array/basics/Array2.html:28
msgid "You're up."
msgstr "Agora é com você."

#. type: Content of: <h1>
#: src/lessons/welcome/array/search/IndexOfValue.html:2
msgid "Searching for a given value"
msgstr "Buscando por um dado valor"

#. type: Content of: <p>
#: src/lessons/welcome/array/search/IndexOfValue.html:4
msgid ""
"The goal of this exercise is to search the cell of a given value, and return "
"its position."
msgstr ""
"O objetivo deste exercício é buscar a célula de um dado valor, e retornar "
"sua posição."

#. type: Content of: <p>
#: src/lessons/welcome/array/search/IndexOfValue.html:6
msgid ""
"To that extend, you should fill the method <code>indexOf()</code>, which "
"parameters are the array to explore, and the value to search. If the value "
"<code>lookingFor</code> is not in the array <code>tab</code>, the method "
"should return -1."
msgstr ""
"Para isto, você deve preencher o método <code>indexOf()</code>, cujos "
"parâmetros são a array a ser explorada, e o valor a ser buscado. Se o valor "
"<code>lookingFor</code> não está na array <code>tab</code>, o método deve "
"retornar -1."

#. type: Content of: <p>
#: src/lessons/welcome/array/search/IndexOfValue.html:10
msgid ""
"The idea of the algorithm is to sweep over the whole array, checking the "
"value of each cell. If it's the searched value, you should return the index "
"of the cell currently checked."
msgstr ""
"A ideia do algoritmo é varrer toda a array, verificando o valor de cada "
"célula. Se for o valor procurado, você deve retornar o índice da célula que "
"está sendo verificada."

#. type: Content of: <p>
#: src/lessons/welcome/array/search/IndexOfValue.html:14
msgid ""
"Remember that indices begin at 0 and not at 1. So, if there is 3 cells, "
"their indices will be 0, 1 and 2. There would not be any cell numbered 3."
msgstr ""
"Lembre que os índices começam com 0 e não com 1. Logo, se houverem 3 "
"células, seus índices serão 0, 1 e 2. Não vai haver nenhuma célula numerada "
"com 3."

#. type: Content of: <p>
#: src/lessons/welcome/array/search/IndexOfValue.html:17
msgid ""
"Remember also that the amount of cells in an array can be retrieved using "
"the <code>length</code> attribute. So, if your array is called <code>tab</"
"code>, its size can be retrieved as <code>tab.length</code>.  Note that "
"there is no () after <code>length</code>. An attribute is a sort of variable "
"embedded in another object (here, the array)."
msgstr ""
"Lembre também que a quantidade de células numa array pode ser recuperada "
"usando o atributo <code>length</code>. Portanto, se sua array é chamada "
"<code>tab</code>, seu temanho será recuperado como <code>tab.length</code>. "
"Observe que não existe um () depois de <code>length</code>. Um atributo é "
"como uma variável dentro de outro objeto (no caso, a array)."

#. type: Content of: <p>
#: src/lessons/welcome/array/search/IndexOfValue.html:22
msgid ""
"So, the last value of an array is given by <code>tab[tab.length - 1]</code>."
msgstr ""
"Logo, o último valor de uma array é dado por <code>tab[tab.length - 1]</"
"code>."

#. type: Content of: <p>
#: src/lessons/welcome/array/search/IndexOfValue.html:24
msgid ""
"Remember also that the amount of cells in an array can be retrieved with the "
"<code>len()</code> function. So, if your array is called <code>tab</code>, "
"its size can be retrieved as <code>len(tab)</code>."
msgstr ""
"Lembre também que a quantidade de células numa array pode ser recuperada com "
"a função <code>len()</code>. Logo, se sua array é chamada <code>tab</code>, "
"seu tamanho pode ser recuperado como <code>len(tab)</code>."

#. type: Content of: <p>
#: src/lessons/welcome/array/search/IndexOfValue.html:28
msgid ""
"So, the last value of an array is given by <code>tab[ len(tab) - 1]</code>."
msgstr ""
"Logo, o último valor de uma array é dado por <code>tab[ len(tab) - 1]</code>."

#. type: Content of: <h1>
#: src/lessons/welcome/array/search/IndexOfMaxValue.html:2
msgid "Index of the maximum value"
msgstr "ìndice do valor máximo"

#. type: Content of: <p>
#: src/lessons/welcome/array/search/IndexOfMaxValue.html:4
msgid ""
"In this exercise, you must compute the index of the tab cell containing the "
"biggest value."
msgstr ""
"Neste exercício, você deve calcular o índice da célula da tab contendo o "
"maior valor."

#. type: Content of: <p>
#: src/lessons/welcome/array/search/IndexOfMaxValue.html:6
msgid ""
"For that, fill the <code>indexOfMaximum()</code> method. Its parameter is "
"the array to explore. Should the array contain the searched value several "
"times, you should return the index of the first occurrence."
msgstr ""
"Para isto, complete o método <code>indiceDoMáximo()</code>. Seu parâmetro é "
"a array para explorar. Caso a array contenha o valor buscado várias vezes, "
"você deve retornar o índice da primeira ocorrência."

#. type: Content of: <p>
#: src/lessons/welcome/array/search/IndexOfMaxValue.html:10
msgid ""
"To solve this exercise, you should sweep over the whole array. For each "
"value, if it's bigger than the biggest value you saw so far, you must save "
"this new champion and its position.  You will thus need 2 extra variables; "
"the initial value of the champion could be the value of the first cell."
msgstr ""
"Para resolver este exercício, você deve varrer a array completamente. Para "
"cada valor, se ele for maior que o maior até o momento, este passa a ser o "
"novo maior e você guarda o valor e a posição dele. Você precisa de 2 "
"variáveis extras; o valor inicial do maior pode ser o valor da primeira "
"célula."

#. type: Content of: <h1>
#: src/lessons/welcome/array/search/AverageValue.html:2
msgid "Average value"
msgstr "Valor médio"

#. type: Content of: <p>
#: src/lessons/welcome/array/search/AverageValue.html:5
msgid ""
"The objective of this exercise is to compute the average value of the "
"integer values stored in an array."
msgstr ""
"O objetivo deste exercício é calcular o valor médio dos valores inteiros "
"armazenados numa array."

#. type: Content of: <p>
#: src/lessons/welcome/array/search/AverageValue.html:7
msgid ""
"You have to fill the body of the method <code>average()</code> which takes "
"as parameter the array of integers of which it computes and returns the "
"average value. Please note that this method must return an integer."
msgstr ""
"Você tem que preencher o corpo do método <code>media()</code> que pega como "
"parâmetro a array de inteiros da qual ele calcula e retorna o valor médio. "
"Por favor note que este método deve retornar um inteiro."

#. type: Content of: <p>
#: src/lessons/welcome/array/search/AverageValue.html:9
msgid ""
"To compute the average value of an integer, it is necessary to traverse the "
"whole array and to compute the sum of all its values (so you will need a "
"variable to store this temporary result), then you have to divide this sum "
"by the size of the array."
msgstr ""
"para calcular o valor médio de um inteiro, é necessário percorrer toda a "
"array e calcular a soma de todos os valores (logo, você precisa de uma "
"variável para armazenar este valor temporário), e por fim dividir esta soma "
"pelo tamanho da array."

#. type: Content of: <p>
#: src/lessons/welcome/array/search/AverageValue.html:11
msgid ""
"In Java, you can get the size of an array <code>myarray</code> by consulting "
"its <code>length</code> attribute (in other words, <code>myarray.length</"
"code>). Notice that there is no parenthesis after <code>length</code>."
msgstr ""
"Em Java, você pode obter o tamanho de uma array <code>minhaarray</code> ao "
"consultar seu atributo <code>length</code> (tamanho) (em outras palavras, "
"<code>minhaarray.length</code>). Observe que não existe parêntesis depois do "
"<code>length</code>."

#. type: Content of: <p>
#: src/lessons/welcome/array/search/AverageValue.html:16
msgid ""
"In python, retrieving the size of an array <code>myarray</code> is as easy "
"as calling <code>len(myarray)</code>."
msgstr ""
"Em python, recuperar o tamanho de uma array <code>minhaarray</code> é tão "
"fácil como chamar <code>len(myarray)</code>."

#. type: Content of: <h1>
#: src/lessons/welcome/array/search/MaxValue.html:2
msgid "Maximal value"
msgstr "Valor maximal"

#. type: Content of: <p>
#: src/lessons/welcome/array/search/MaxValue.html:4
msgid ""
"In this exercise, you must compute the maximal value contained in an array.  "
"For that, fill the <code>maximum()</code> method, which parameter is the "
"array to explore."
msgstr ""
"Neste exercício, você deve calcular o valor maximal contido numa array. Para "
"isto, preencha o método <code>maximum()</code>, cujo parâmetro é a array "
"para explorar."

#. type: Content of: <p>
#: src/lessons/welcome/array/search/MaxValue.html:8
msgid ""
"To compute this value, sweep over the whole parameter. For each value, if "
"it's bigger than the biggest value you saw so far, you must save this value "
"somewhere to remember it afterward. You thus need an extra variable, which "
"can be initialized to the value of the first array cell."
msgstr ""
"Para calcular este valor, percorra o parâmetro todo. Para cada valor, se ele "
"for maior que o maior valor até o momento, você deve gravar este valor em "
"algum lugar para lembrar dele mais tarde. Você vai precisar então de uma "
"variável extra, que pode ser iniciada para o valor da primeira célula do "
"array."

#. type: Content of: <h1>
#: src/lessons/welcome/array/search/OccurrenceOfValue.html:2
msgid "Occurrence of a value"
msgstr "Ocorrência de um valor"

#. type: Content of: <p>
#: src/lessons/welcome/array/search/OccurrenceOfValue.html:4
msgid ""
"In this exercise, you must compute the amount of occurrences of a given "
"value in an array (that is, the amount of time that this value appears in "
"the array). For that, fill the <code>occurrences()</code> method, which "
"returns the number of occurrence of <code>lookingFor</code> in <code>tab</"
"code>."
msgstr ""
"Neste exercício, você deve calcular a quantidade de ocorrências de um dado "
"valor numa array (ou seja, a quantidade de tempo que este valor aparece na "
"array). Para isto, preencha o método <code>occurrences()</code>, que retorna "
"o número de ocorrências de <code>lookingFor</code> em <code>tab</code>."

#. type: Content of: <p>
#: src/lessons/welcome/array/search/OccurrenceOfValue.html:9
msgid ""
"To compute this value, simply sweep over the array counting for the amount "
"of cells containing the searched value. You thus need an extra variable for "
"that."
msgstr ""
"Para calcular este valor, simplesmente parcorra a array contando a "
"quantidade de células contendo o valor procurado. Você vai precisar de uma "
"variável extra para isto."

#. type: Content of: <h1>
#: src/lessons/welcome/array/search/Extrema.html:2
msgid "Maxima and Minima"
msgstr "Máximo e Mínimo"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/array/search/Extrema.html:4
msgid ""
"In this exercise, you must return the difference between the maxima (i.e., "
"the largest value of the array) and the minima (i.e., its smallest value). "
"The returned value is then a positive number.  Beware, you can only do one "
"traversal of the array to gather all informations that you need."
msgstr ""
"Neste exercício, você deve retornar a diferença entre o máximo (i.e., o "
"maior valor da array) e o mínimo (i.e., o menor valor). O valor retornado é "
"então um número positivo. Mas atenção, você só pode percorrer o array uma "
"vez para obter todas as informações de que necessita."

#. type: Content of: <h1>
#: src/lessons/welcome/array/search/SecondMaxValue.html:2
msgid "Second Biggest Value"
msgstr "Segundo Maior Valor"

#. type: Content of: <p>
#: src/lessons/welcome/array/search/SecondMaxValue.html:4
msgid ""
"In this exercise, you must compute the second maximal value contained in an "
"array, i.e. the value that becomes the maximum if you remove every instance "
"of the current maximum from the array."
msgstr ""
"Neste exercício, você deve calcular o segundo valor maximal contido numa "
"array, ou seja o valor que se torna máximo se você remover cada instância do "
"máximo atual da array."

#. type: Content of: <p>
#: src/lessons/welcome/array/search/SecondMaxValue.html:7
msgid ""
"As usual, you should gather the information in only one traversal of the "
"array.  You can assume that the second biggest value actual exists (there is "
"at least two distinct values in the array), and that all values in the array "
"are greater than [!python] -100000000.[/!] [!java|scala]<code>Integer."
"MIN_VALUE</code> (which is the smallest representable integer existing in [!"
"thelang]).[/!]"
msgstr ""
"Como normalmente, você deve obter informações em apenas uma passagem pela "
"array. Você pode assumir que o segundo maior valor \"actual\" existe (existe "
"pelo menos dois valores distintos na array), e que todos os valores na array "
"são maiores que [!python] -100000000.[/!] [!java|scala]<code>Integer."
"MIN_VALUE</code> (que é o menor inteiro representável que existe em [!"
"thelang]).[/!]"

#. type: Content of: <h1>
#: src/lessons/welcome/array/array123/Array123.html:2
msgid "Array123"
msgstr "Array123"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/array/array123/Array123.html:3
msgid ""
"Given an array of integers, return true if .. 1, 2, 3, .. appears in the "
"array somewhere."
msgstr ""
"Dada uma array de inteiros, retorna verdadeiro (true) se .. 1, 2, 3, .. "
"aparece em algum lugar da array."

#. type: Content of: <p>
#: src/lessons/welcome/array/array123/Array123.html:5
#: src/lessons/welcome/array/array667/Array667.html:8
#: src/lessons/welcome/array/arraycount9/ArrayCount9.html:5
#: src/lessons/welcome/array/arrayfront9/ArrayFront9.html:5
#: src/lessons/welcome/array/notriples/NoTriples.html:8
#: src/lessons/welcome/array/has271/Has271.html:10
#: src/lessons/welcome/bat/bool1/Close10.html:8
#: src/lessons/welcome/bat/bool1/Diff21.html:6
#: src/lessons/welcome/bat/bool1/HasTeen.html:7
#: src/lessons/welcome/bat/bool1/IcyHot.html:6
#: src/lessons/welcome/bat/bool1/In1020.html:6
#: src/lessons/welcome/bat/bool1/In3050.html:6
#: src/lessons/welcome/bat/bool1/LoneTeen.html:7
#: src/lessons/welcome/bat/bool1/Main.html:12
#: src/lessons/welcome/bat/bool1/Makes10.html:6
#: src/lessons/welcome/bat/bool1/Max1020.html:8
#: src/lessons/welcome/bat/bool1/MonkeyTrouble.html:8
#: src/lessons/welcome/bat/bool1/NearHundred.html:8
#: src/lessons/welcome/bat/bool1/ParotTrouble.html:9
#: src/lessons/welcome/bat/bool1/PosNeg.html:6
#: src/lessons/welcome/bat/bool1/SleepIn.html:8
#: src/lessons/welcome/bat/bool1/SumDouble.html:6
#: src/lessons/welcome/bat/bool2/AlarmClock.html:12
#: src/lessons/welcome/bat/bool2/AnswerCell.html:9
#: src/lessons/welcome/bat/bool2/BlueTicket.html:11
#: src/lessons/welcome/bat/bool2/CaughtSpeeding.html:12
#: src/lessons/welcome/bat/bool2/CigarParty.html:10
#: src/lessons/welcome/bat/bool2/DateFashion.html:13
#: src/lessons/welcome/bat/bool2/GreenTicket.html:10
#: src/lessons/welcome/bat/bool2/In1To10.html:9
#: src/lessons/welcome/bat/bool2/InOrderEqual.html:10
#: src/lessons/welcome/bat/bool2/InOrder.html:9
#: src/lessons/welcome/bat/bool2/LastDigit2.html:9
#: src/lessons/welcome/bat/bool2/LessBy10.html:6
#: src/lessons/welcome/bat/bool2/Main.html:7
#: src/lessons/welcome/bat/bool2/MaxMod5.html:10
#: src/lessons/welcome/bat/bool2/NearTen.html:9
#: src/lessons/welcome/bat/bool2/RedTicket.html:10
#: src/lessons/welcome/bat/bool2/SortaSum.html:8
#: src/lessons/welcome/bat/bool2/SquirrelPlay.html:11
#: src/lessons/welcome/bat/bool2/TeaParty.html:12
#: src/lessons/welcome/bat/bool2/TeenSum.html:9
#: src/lessons/welcome/bat/bool2/TwoAsOne.html:6
#: src/lessons/welcome/bat/bool2/WithoutDoubles.html:9
#: src/lessons/bat/string1/Main.html:10
#: src/lessons/bat/string1/AltPairs.html:5
#: src/lessons/bat/string1/FrontTimes.html:8
#: src/lessons/bat/string1/Last2.html:9
#: src/lessons/bat/string1/StringBits.html:5
#: src/lessons/bat/string1/StringMatch.html:9
#: src/lessons/bat/string1/StringSplosion.html:5
#: src/lessons/bat/string1/StringTimes.html:5
#: src/lessons/bat/string1/StringX.html:7
#: src/lessons/bat/string1/StringYak.html:8
msgid ""
"This exercise was converted to PLM from the excellent exercising site http://"
"codingbat.com/"
msgstr ""
"Este exercício foi convertido para o PLM do excelente sítio de exercícios "
"http://codingbat.com/"

#. type: Content of: <h1>
#: src/lessons/welcome/array/array667/Array667.html:2
msgid "Array667"
msgstr "Array667"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/array/array667/Array667.html:3
msgid ""
"Given an array of integers, return the number of times that two 6's are next "
"to each other in the array. Also count instances where the second \"6\" is "
"actually a 7."
msgstr ""
"Dada uma array de inteiros, retorna o número de vezes no qual dois 6  estão "
"vizinhos na array. Também conta as instâncias onde o segundo  \"6\" é na "
"verdade um 7."

#. type: Content of: <h1>
#: src/lessons/welcome/array/arraycount9/ArrayCount9.html:2
msgid "ArrayCount9"
msgstr "ArrayCount9"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/array/arraycount9/ArrayCount9.html:3
msgid "Given an array of integers, return the number of 9's in the array."
msgstr "Dada uma array de inteiros, retorna o número de 9's na array."

#. type: Content of: <h1>
#: src/lessons/welcome/array/arrayfront9/ArrayFront9.html:2
msgid "ArrayFront9"
msgstr "ArrayFront9"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/array/arrayfront9/ArrayFront9.html:3
msgid ""
"Given an array of integers, return true if one of the first 4 elements in "
"the array is a 9. The array length may be less than 4."
msgstr ""
"Dada uma array de inteiros, retorna verdadeiro (true) se um dos primeiros 4 "
"elementos na array é um 9. O comprimento da array pode ser menor que 4."

#. type: Content of: <h1>
#: src/lessons/welcome/array/notriples/NoTriples.html:2
msgid "NoTriples"
msgstr "NenhumaTripla"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/array/notriples/NoTriples.html:3
msgid ""
"Given an array of integers, we'll say that a triple is a value appearing 3 "
"times in a row in the array. Return true if the array does not contain any "
"triples."
msgstr ""
"Dada uma array de inteiros, digamos que uma tripla é um valor que aparece 3 "
"vezes seguidas na array. Retorne verdadeiro se a array não contém nenhuma "
"tripla."

#. type: Content of: <h1>
#: src/lessons/welcome/array/has271/Has271.html:2
msgid "Has271"
msgstr "Has271"

#. type: Content of: <p>
#: src/lessons/welcome/array/has271/Has271.html:3
msgid ""
"Given an array of integers, return true if it contains a 2, 7, 1 pattern -- "
"a value, followed by the value plus 5, followed by the initial value minus "
"1.  So, 2,7,1 is such a pattern because 7 is 5+2 and 1 is 2-1. 3,8,2 is also "
"such a pattern."
msgstr ""
"Dada uma array de inteiros, retorne verdadeiro se ela contém um padrão 2, 7, "
"1 -- um valor, seguido dele mais 5, seguinte dele menos 1. Então, 2,7,1 é um "
"exemplo deste padrão pois  7 é 5+2 e 1 é 2-1. 3,8,2 é outro exemplo."

#. type: Content of: <p>
#: src/lessons/welcome/array/has271/Has271.html:7
msgid ""
"Additionally the 271 counts even if the \"1\" differs by 2 or less from the "
"correct value."
msgstr ""
"Acicionalmente, o 271 \"counts even\" se o \"1\" difere por 2 ou menos do "
"valor correto."

#. type: Content of: <h1>
#: src/lessons/welcome/array/golomb/Golomb.html:2
msgid "Golomb sequence"
msgstr "sequência de Golomb"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/array/golomb/Golomb.html:4
msgid ""
"The Golomb sequence is a non-decreasing integer sequence where a(n) is the "
"number of times that n occurs in the sequence, with a(1) = 1."
msgstr ""
"A sequência de Golomb é uma sequência de inteiros não decrescente onde a(n) "
"é o número  de vezes que n ocorre na sequência, com a(1) = 1."

#. type: Content of: <p>
#: src/lessons/welcome/array/golomb/Golomb.html:7
msgid ""
"Since a(1)=1, it means that 1 occurs only once in the sequence, so a(2) must "
"be different. Since the sequence is non-decreasing, a(2)  must be greater "
"than 1. Since a(2)>1, the digit 2 must appear more than one time in the "
"sequence. So a(2)=2."
msgstr ""
"Como a(1)=1, significa que 1 ocorre apenas uma vez na sequência, então a(2) "
"deve ser diferente. Uma vez que a sequência é não-decrescente, a(2) deve ser "
"maior que 1. Como a(2)>1, o dígito 2 deve aparecer mais de uma vez na "
"sequência. Logo, a(2)=2."

#. type: Content of: <p>
#: src/lessons/welcome/array/golomb/Golomb.html:12
msgid ""
"Since a(2)=2, there is two 2 in the sequence, so we know the value of a(3). "
"And so on for the other values of the sequence."
msgstr ""
"Como a(2)=2, existem duas ocorrências de 2 na sequência, logo nós sabemos o "
"valor de a(3). E assim por diante para os outros valores da sequência."

#. type: Content of: <p>
#: src/lessons/welcome/array/golomb/Golomb.html:15
msgid "Write a function that computes the Nth element of the sequence."
msgstr "Escreva uma função que calcule o N-ésimo elemento da sequência."

#. type: Content of: <h1>
#: src/lessons/welcome/array/island/Island.html:2
msgid "Buggles' Island"
msgstr "Ilha dos Buggles"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/array/island/Island.html:4
msgid ""
"You just received the traveling notes of your old aunt who traveled accross "
"the country of the Buggles' Islands. She wrote down the altitude every "
"kilometer during her trip, resulting in a sequence of numbers as follows."
msgstr ""
"Você acaba de receber as anotações de viagem da sua velha tia que atravessou "
"o país das Ilhas dos Buggles. Ela escreveu a altitude a cada quilômetro "
"durante a viagem, resultando numa sequência de números como segue."

#. type: Content of: <pre>
#: src/lessons/welcome/array/island/Island.html:9
#, no-wrap
msgid "0 0 1 1 2 2 1 1 0 1 2 2 1 1 0"
msgstr "0 0 1 1 2 2 1 1 0 1 2 2 1 1 0"

#. type: Content of: <p>
#: src/lessons/welcome/array/island/Island.html:11
msgid "Here is a cut of the islands on that path:"
msgstr "Aqui está um corte das ilhas por este caminho:"

#. type: Content of: <pre>
#: src/lessons/welcome/array/island/Island.html:14
#, no-wrap
msgid ""
"       /***\\       /*\\         &lt;-- 2 meters above the see level\n"
"   /***********\\ /*******\\     &lt;-- 1 meter above the see level\n"
"***************************    &lt;-- see level\n"
"| | | | | | | | | | | | | |\n"
"0 0 1 1 2 2 1 1 0 1 2 1 1 0    &lt;-- altitude on each point\n"
msgstr ""
"       /***\\       /*\\         &lt;-- 2 metros acima do nível do mar\n"
"   /***********\\ /*******\\     &lt;-- 1 metro acima do nível do mar\n"
"***************************    &lt;-- nível do mar\n"
"| | | | | | | | | | | | | |\n"
"0 0 1 1 2 2 1 1 0 1 2 1 1 0    &lt;-- altitude em cada ponto\n"

#. type: Content of: <p>
#: src/lessons/welcome/array/island/Island.html:21
msgid "This example is constituted of four levels of island:"
msgstr "Este exemplo é constituído de quatro níveis de ilhas:"

#. type: Content of: <ul><li>
#: src/lessons/welcome/array/island/Island.html:24
msgid "1 1 2 2 1 1 (the island on the left)"
msgstr "1 1 2 2 1 1 (a ilha da esquerda)"

#. type: Content of: <ul><li>
#: src/lessons/welcome/array/island/Island.html:25
msgid "2 2 (the mountain topping the left island)"
msgstr "2 2 (o topo da montanha da ilha da esquerda)"

#. type: Content of: <ul><li>
#: src/lessons/welcome/array/island/Island.html:26
msgid "1 2 1 1 (the right island)"
msgstr "1 2 1 1 (a ilha da direita)"

#. type: Content of: <ul><li>
#: src/lessons/welcome/array/island/Island.html:27
msgid "2 (the mountain on the right)"
msgstr "2 (a montanha da direita)"

#. type: Content of: <p>
#: src/lessons/welcome/array/island/Island.html:30
msgid "This can also be visualized this way:"
msgstr "Isto também pode ser visualizado desta forma:"

#. type: Content of: <pre>
#: src/lessons/welcome/array/island/Island.html:32
#, no-wrap
msgid "0 0(1 1(2 2)1 1)0(1(2)1 1)0"
msgstr "0 0(1 1(2 2)1 1)0(1(2)1 1)0"

#. type: Content of: <p>
#: src/lessons/welcome/array/island/Island.html:34
msgid ""
"Could you write a little program to compute the amount of levels in a given "
"sequence of altitudes? Actually, there is an iterative and a recursive "
"solution to that problem."
msgstr ""
"Você poderia escrever um pequeno programa que calculasse a quantidade de "
"níveis numa dada sequência de altitudes? Na verdade, existem uma solução "
"iterativa e uma recursiva para este problema."

#. type: Content of: <p>
#: src/lessons/welcome/methods/basics/Methods.html:5
msgid ""
"We will now write our own methods. It somehow comes down to extending the "
"buggle vocabulary by teaching it new tricks."
msgstr ""
"Nós vamos agora escrever nossos próprios métodos. Isto é como extender o "
"vocabulário do buggle ensinando novos truques."

#. type: Content of: <p>
#: src/lessons/welcome/methods/basics/Methods.html:8
msgid ""
"For example, we saw in a previous exercise how to ask the buggle to go get "
"the baggle in front of it, and bring it back. If there is several baggles on "
"the board, and if we want to bring all of them on the bottom line, you have "
"to repeat this code several times, or include it in a loop. In any case, you "
"should avoid to duplicate your code to keep it pleasant to read and easily "
"understandable.  It would be better if the buggle could obey an "
"<code>goAndGet()</code> order just like it understands a <code>[!"
"c]stepForward()[/!][!scala|java|python]forward()[/!]</code> one."
msgstr ""
"Por exemplo, nós vimos num exercício anterior como pedir ao buggle para "
"pegar o baggle na frente dele, e trazê-lo de volta. Se existem vários "
"baggles no tabuleiro, e se nós queremos trazê-los todos para a linha de "
"baixo, você tem que repetir este código várias vezes, ou incluir ele num "
"loop. Em qualquer caso, você deve evitar duplicar seu código para mantê-lo "
"agradável de ler e fácil de entender. Será melhor se o buggle puder obedecer "
"uma ordem <code>vaiEPega()</code> assim como entende uma <code>[!"
"c]avançarUmPasso()[/!][!scala|java|python]avançar()[/!]</code>."

#. type: Content of: <h3>
#: src/lessons/welcome/methods/basics/Methods.html:16
msgid "Defining methods"
msgstr "Definindo métodos"

#. type: Content of: <p>
#: src/lessons/welcome/methods/basics/Methods.html:18
msgid ""
"The [!thelang] syntax to write a simple method called <code>goAndGet</code> "
"is the following:"
msgstr ""
"A sintaxe de [!thelang] para escrever um método simples chamado "
"<code>vaiEPega</code> é a seguinte:"

#. type: Content of: <pre>
#: src/lessons/welcome/methods/basics/Methods.html:20
#, no-wrap
msgid ""
"[!java|c]void goAndGet() {[/!][!python]def goAndGet():[/!][!scala]def goAndGet() {[/!]\n"
"  actions()[!java|c];[/!]\n"
"  to()[!java|c];[/!]\n"
"  do()[!java|c];[/!]\n"
"[!java|scala|c]}[/!]"
msgstr ""
"[!java|c]void vaiEPega() {[/!][!python]def vaiEPega():[/!][!scala]def vaiEPega() {[/!]\n"
"  ações()[!java|c];[/!]\n"
"  ações()[!java|c];[/!]\n"
"  eMaisAções()[!java|c];[/!]\n"
"[!java|scala|c]}[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/methods/basics/Methods.html:26
msgid ""
"The method body [!java|scala|c](between curly braces)[/!][!python](the "
"indented block)[/!] will be executed when we call the method later on (that "
"is, when we write <code>goAndGet()</code> somewhere in our code). This "
"method body can contain as many instructions as you want, and any "
"construction we saw so far (for, while, if, etc).  [!java|c]The <code>void</"
"code> keyword means that this method does not return any result. For "
"example, the <code>isOverBaggle()</code> method does return a result, which "
"is a [!c]int[/!][!java]boolean[/!] indicating whether or not the buggle is "
"located over a baggle. We will soon learn to define such methods too. For "
"now, just write <code>void</code> at this location.[/!]"
msgstr ""
"O corpo do método [!java|scala](entre chaves)[/!][!python](o bloco indentado)"
"[/!] será executado quando nós chamarmos o método mais tarde (ou seja, "
"quando nós escrevermos <code>vaiEPega()</code> em algum lugar do código). "
"Este corpo do método pode conter tantas instruções quanto você queira, e "
"qualquer construção que nós queiramos (for, while, if, etc).  [!java]A "
"palavra-chave <code>void</code> significa que este método não retorna "
"qualquer resultado. Por exemplo, o método <code>estáSobreBaggle()</code> "
"retorna um resultado, que é um booleano indicando se o buggle está ou não "
"localizado sobre um baggle. Vamos em breve aprender a definir tais métodos "
"também. Por agora, apenas escreva <code>void</code> neste local.[/!]"

#. type: Content of: <h3>
#: src/lessons/welcome/methods/basics/Methods.html:39
msgid "Documenting methods"
msgstr "Documentando métodos"

#. type: Content of: <p>
#: src/lessons/welcome/methods/basics/Methods.html:41
msgid ""
"You should strive to document your code to keep it readable. When you write "
"it, its purpose and limitations are clear to you, but most of the time, this "
"does not last for long. You will soon forget about the details of every "
"specific method, and this day you will be happy to read its documentation. "
"In the following example, we use the specific formalism of [!java]javadoc[/!]"
"[!scala]scaladoc[/!][!python]pydoc[/!], a program that extracts the "
"documentation of [!thelang] source code to produce html pages. The main "
"advantage is that it allows to keep the documentation near to the code.  So, "
"when you change your code, you have less chances to forget to update the "
"documentation."
msgstr ""
"Você deve se esforçar para documentar seu código para mantê-lo legível. "
"Quando você escreve código, fica claro o objetivo e as limitações, mas na "
"maioria das vezes, isto é esquecido. Você rapidamente esquecerá dos detalhes "
"de cada método específico, e vai chegar o dia em que você ficará feliz em "
"ler a documentação. No exemplo seguinte, nós usamos o formalismo específico "
"de [!java]javadoc[/!][!scala]scaladoc[/!][!python]pydoc[/!], um programa que "
"extrai a documentação do código-fonte de [!thelang] e produz páginas html. A "
"principal vantagem é que ele permite que a documentação fique junto ao "
"código. Então, quando você mudar o código, você tem menos chances de "
"esquecer de atualizar a documentação."

#. type: Content of: <p>
#: src/lessons/welcome/methods/basics/Methods.html:50
msgid ""
"[!java|scala][!java]javadoc[/!][!scala]scaladoc[/!] comments begin with the "
"<code>/**</code> marker (with two asterisks). They must be placed right "
"before the method they document for the tool to find them.[/!] [!"
"python]pydoc comments should be placed at the beginning of the method body "
"so that the tool finds them. They should be placed between <code>\"\"\"</"
"code>, which mark multi-line strings in python.[/!] The first line should be "
"a brief description of what this method does while any subsequent lines "
"should provide any important details about the method."
msgstr ""
"comentários em [!java|scala][!java]javadoc[/!][!scala]scaladoc[/!] começam "
"com a marca <code>/**</code> (com dois asteriscos). Eles devem ser colocados "
"exatamente antes do método que documentam para a ferramenta encontrá-los."
"[/!] [!python]comentários pydoc devem ser colocados no começo do corpo do "
"método de forma que a ferramenta possa encontrá-los. Eles devem ser "
"colocados entre <code>\"\"\"</code>, que marcam strings multilinhas em "
"python.[/!] A primeira linha deve ser uma breve descrição do que o método "
"faz enquanto que as linhas subsequentes devem fornecer qualquer detalhes "
"importantes sobre o método."

#. type: Content of: <pre>
#: src/lessons/welcome/methods/basics/Methods.html:59
#, no-wrap
msgid ""
"[!java|scala]/**\n"
" *  Go, retrieves the baggle in front of the buggle, and brings it back \n"
" *\n"
" *   Does not check for walls, so be careful to not call it when walls are present.\n"
" */[/!]\n"
"[!java]void goAndGet() {[/!]\n"
"[!scala]def goAndGet() {[/!]\n"
"[!python]def goAndGet():\n"
"  \"\"\"Go, retrieves the baggle in front of the buggle, and brings it back.\n"
"\n"
"  Does not check for walls, so be careful to not call it when walls are present.\"\"\"[/!]\n"
"  actions()[!java];[/!]\n"
"  to()[!java];[/!]\n"
"  do()[!java];[/!]\n"
"[!java|scala]}[/!]"
msgstr ""
"[!java|scala]/**\n"
" *  Vai, recupera o baggle na frente do buggle, e trás de volta \n"
" *\n"
" *  Não verifica se tem paredes, então cuidado para não chamar ele\n"
" *  quando uma parede estiver presente.\n"
" */[/!]\n"
"[!java]void vaiEPega() {[/!]\n"
"[!scala]def vaiEPega() {[/!]\n"
"[!python]def vaiEPega():\n"
"  \"\"\"Vai, recupera o baggle na frente do buggle, e trás de volta.\n"
"\n"
"  Não verifica se tem paredes, então cuidado para não chamar ele\n"
"  quando uma parede estiver presente.\"\"\"[/!]\n"
"  ações()[!java];[/!]\n"
"  to()[!java];[/!]\n"
"  do()[!java];[/!]\n"
"[!java|scala]}[/!]"

#. type: Content of: <h3>
#: src/lessons/welcome/methods/basics/Methods.html:75
msgid "Naming conventions"
msgstr "Convenções de nomes"

#. type: Content of: <p>
#: src/lessons/welcome/methods/basics/Methods.html:76
msgid ""
"Most programming language forbid the use of spaces in method and variable "
"identifiers (=their names).  Accented letters are sometimes allowed (as in [!"
"thelang]), but they can lead to portability issues between operating systems "
"and should thus be avoided when possible."
msgstr ""
"A maioria das linguagens de programação proíbe o uso de espaços em "
"indentificadores de métodos e variáveis (=seus nomes).  Letras acentuadas "
"são algumas vezes permitidas (como em [!thelang]), mas elas geram problemas "
"de portabilidade entre sistemas operacionais e devem ser evitadas sempre que "
"possível."

#. type: Content of: <p>
#: src/lessons/welcome/methods/basics/Methods.html:80
msgid ""
"Across all programming languages, there is two main conventions to name "
"variables and methods. The first one, consists in concatenating all words "
"with only the first letter of each word in upper case. \"go and get\" "
"becomes goAndGet().  It is called CamelCase because identifiers written this "
"way graphically remind of a camel back. The other convention, called "
"snake_case, is to write every words in lower case, separated with "
"underscores symbols (_). \"go and get\" becomes go_and_get()."
msgstr ""
"Entre todas as linguagens de programação, existem duas convenções para "
"nomear variáveis e métodos. A primeira, consiste em concatenar todas as "
"palavras com apenas a primeria letra de cada palavra em maiúscula. \"vai e "
"Pega\" se torna vaiEPega(). Isto é chamado \"CamelCase\" por que "
"identificadores escritos desta forma parecem graficamente com as costas de "
"um camelo. A outra convenção, chamada \"snake_case\", é escrever todas as "
"palavras em minúsculas, separadas com sublinhados (_). \"vai e pega\" se "
"torna vai_e_pega()."

#. type: Content of: <p>
#: src/lessons/welcome/methods/basics/Methods.html:87
msgid ""
"Which convention to use is the topic of heated discussion across developers, "
"but each programming language has its own habits. In Python, Perl and the C "
"language, the snake_case is often used for methods and variables. Java and "
"Scala prefer the lowerCamelCase (the very first letter is lower case) for "
"that."
msgstr ""
"Que convenção usar é o tópico de discussões acaloradas entre "
"desenvolvedores, mas cada linguagem de programação tem seus próprios "
"hábitos. Em Python, Perl e C, o snake_case é normalmente usado para métodos "
"e variáveis. Java e Scala preferemo lowerCamelCase (só a primeira letra "
"inicial é minúscula) para isto."

#. type: Content of: <p>
#: src/lessons/welcome/methods/basics/Methods.html:91
msgid ""
"The CamelCase convention is used everywhere in PLM because this program is "
"written in Java itself, so we kept our habits when adding new languages. But "
"the fact that the Python bindings of PLM use the CamelCase instead of the "
"snake_case is considered as a bug that we will fix in further releases."
msgstr ""
"A convenção CamelCase é sempre usada no PLM por que este programa foi "
"escrito em Java, então mantivemos o hábito quando inserimos novas "
"linguagens. Mas o fato de os vínculos Python do PLM usarem CamelCase e não "
"snake_case é considerado um bug que será corrigido em algum lançamento "
"futuro."

#. type: Content of: <p>
#: src/lessons/welcome/methods/basics/Methods.html:97
msgid ""
"The goal of this exercise is to write a method called <code>goAndGet()</"
"code> which does the same than in a previous exercises (move forward until "
"over a baggle, pick it up, move back to initial position, drop baggle)."
msgstr ""
"O objetivo deste exercício é escrever um método chamado <code>vaiEPega()</"
"code> que faça a mesma coisa que foi feita num exercício anterior (vai para "
"a frente até estar sobre um baggle, pega ele, vai para trás até a posição "
"inicial e solta o baggle)."

#. type: Content of: <p>
#: src/lessons/welcome/methods/basics/Methods.html:101
msgid ""
"This exercise is a bit different because you will not write all of the code "
"executed by the buggle. Instead, you should only write one method that get "
"called automagically added when you click on <b>Start</b>. Your buggle calls "
"your <code>goAndGet()</code> method on each row, until the baggle is found. "
"[!python|scala]The code for that is already provided under the "
"<code>goAndGet()</code> method, but you probably don't want to change it."
"[/!] [!java]You don't need to write the code calling <code>goAndGet()</code> "
"yourself. It's automagically there already, even if you cannot see it.[/!]"
msgstr ""
"Este exercício é um pouco diferente por que você não vai precisar escrever "
"todo o código executado pelo buggle. Ao invés disto, você deve apenas "
"escrever um método que será chamado automagicamente quando você clica em "
"<b>Iniciar</b>. Seu buggle vai chamar seu método <code>vaiEPega()</code> em "
"cada linha, até que o baggle seja encontrado. [!python|scala]O código para "
"isto já está pronto no método  <code>vaiEPega()</code>, mas você "
"provavelmente não vai querer mudar isto. [/!] [!java]Você não precisa "
"escrever o código chamado <code>vaiEPega()</code>. Ele já está lá "
"automaticamente, mesmo se você não possa vê-lo.[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/methods/basics/Methods.html:110
msgid ""
"But for that to work, you have to actually write this <code>goAndGet()</"
"code> method now."
msgstr ""
"Mas para isto funcionar, você tem que na verdade escrever este método "
"<code>vaiEPega()</code> agora."

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/methods/basics/MethodsDogHouse.html:4
msgid ""
"We now would like to teach the buggle to build a doghouse. The naive "
"approach consists in directly writing the needed code as follows.  This "
"works because the buggle of this exercise leaves a red path as it moves."
msgstr ""
"Agora nós queremos ensinar ao buggle como construir uma casa de cachorro. A "
"abordagem simplória consiste em escrever diretamente o código necessário "
"como segue. Isto funciona por que o buggle deste exercício deixa um caminho "
"vermelho à medida em que anda."

#. type: Content of: <pre>
#: src/lessons/welcome/methods/basics/MethodsDogHouse.html:8
#, no-wrap
msgid ""
"[!c]stepForward()[/!][!python|java|scala]forward()[/!][!java|c];[/!]\n"
"[!c]stepForward()[/!][!python|java|scala]forward()[/!][!java|c];[/!]\n"
"left()[!java|c];[/!]\n"
"[!c]stepForward()[/!][!python|java|scala]forward()[/!][!java|c];[/!]\n"
"[!c]stepForward()[/!][!python|java|scala]forward()[/!][!java|c];[/!]\n"
"left()[!java|c];[/!]\n"
"[!c]stepForward()[/!][!python|java|scala]forward()[/!][!java|c];[/!]\n"
"[!c]stepForward()[/!][!python|java|scala]forward()[/!][!java|c];[/!]\n"
"left()[!java|c];[/!]\n"
"[!c]stepForward()[/!][!python|java|scala]forward()[/!][!java|c];[/!]\n"
"[!c]stepForward()[/!][!python|java|scala]forward()[/!][!java|c];[/!]\n"
"left()[!java|c];[/!]"
msgstr ""
"[!c]avançarUmPasso()[/!][!python|java|scala]avançar()[/!][!java|c];[/!]\n"
"[!c]avançarUmPasso()[/!][!python|java|scala]avançar()[/!][!java|c];[/!]\n"
"left()[!java|c];[/!]\n"
"[!c]avançarUmPasso()[/!][!python|java|scala]avançar()[/!][!java|c];[/!]\n"
"[!c]avançarUmPasso()[/!][!python|java|scala]avançar()[/!][!java|c];[/!]\n"
"left()[!java|c];[/!]\n"
"[!c]avançarUmPasso()[/!][!python|java|scala]avançar()[/!][!java|c];[/!]\n"
"[!c]avançarUmPasso()[/!][!python|java|scala]avançar()[/!][!java|c];[/!]\n"
"left()[!java|c];[/!]\n"
"[!c]avançarUmPasso()[/!][!python|java|scala]avançar()[/!][!java|c];[/!]\n"
"[!c]avançarUmPasso()[/!][!python|java|scala]avançar()[/!][!java|c];[/!]\n"
"left()[!java|c];[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/methods/basics/MethodsDogHouse.html:21
msgid ""
"It becomes harder when we want to draw two doghouses: we have to rewrite the "
"same code twice, which is not really handy. When the code becomes a bit long "
"as this one, it becomes easier to see why we insist since a while on the "
"pure evilness that code duplication represents. Indeed, if you realize that "
"an error sneaked into a code that you copied at several locations, you will "
"have to fix it several times. And mind your back if you forget one of these "
"locations."
msgstr ""
"Vai ficar mais difícil se tivermos que desenhar duas casas de cachorro: "
"teremos que reescrever o mesmo código duas vezes, o que não é muito prático. "
"Quando o código se torna um pouco longo como este, torna-se fácil ver por "
"que nós insistimos já tem um tempinho namais pura maldade que duplicação de "
"código representa. Na verdade, imagine um erro que se infiltrou no código "
"que você copiou para vários lugares, você vai ter que corrigir várias vezes. "
"E ai de você se esquercer de corrigir num destes lugares."

#. type: Content of: <p>
#: src/lessons/welcome/methods/basics/MethodsDogHouse.html:27
msgid ""
"There is even a name to this good principle in programming: DRY/SPOT, which "
"means \"Don't Repeat Yourself / Single Point Of Truth\". The latter part "
"means that each information must be written in only one location of your "
"program to avoid the differing locations to get out of synch when you modify "
"your code."
msgstr ""
"Existe até um nome para esta boa prática de programação: DRY/SPOT, que em "
"inglês significa \"Don't Repeat Yourself / Single Point Of Truth\" (não se "
"repita/ponto único de confiança). A última parte significa que cada "
"informação deve ser escrita em apenas um local de seu programa para evitar "
"que diferentes locais fiquem desincronizados quando você modificar o código."

#. type: Content of: <p>
#: src/lessons/welcome/methods/basics/MethodsDogHouse.html:32
msgid ""
"So, let's apply this good principle and <b>factorize our code</b>, ie to "
"write it only once, for example in a method. You should even to go further "
"by factorizing the method body with a <code>for</code> loop, as seen "
"previously.  If you do it correctly (what you should), you can use the "
"method <code>left()</code> only once."
msgstr ""
"Portanto, vamos aplicar este bom princípio de programação e <b>fatorizar seu "
"código</b>, ie escrever ele apenas uma vez, por exemplo em um método. Você "
"pode ir até mais longe fatorizando o corpo do método com um loop <code>for</"
"code>, como visto anteriormente. Se você faz isto corretamente (o que se "
"espera), dá para você usar o método <code>esquerda()</code> apenas uma vez."

#. type: Content of: <p>
#: src/lessons/welcome/methods/basics/MethodsDogHouse.html:39
msgid ""
"The goal of this exercise is to write a method called <code>dogHouse</code> "
"achieving the same result than the code above, but with a for loop to keep "
"it short.  The buggle will call your creation to create several dog houses "
"around its world."
msgstr ""
"O objetivo deste exercício é escrever um método chamado "
"<code>casaDeCachorro</code> que faz a mesma coisa que o código acima, mas "
"com um loop for para mantê-lo curto. O buggle vai chamar sua criação para "
"construir várias casas de cachorro neste mundo."

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/methods/picture/PictureMono1.html:4
#: src/lessons/welcome/methods/picture/MethodsPicture.html:4
msgid ""
"In this exercise, we will reproduce the geometric drawing that you can see "
"in the \"Objective\" tab."
msgstr ""
"Neste exercício, vamos reproduzir o desenho geométrico que você pode ver na "
"aba \"Objetivo\"."

#. type: Content of: <p>
#: src/lessons/welcome/methods/picture/PictureMono1.html:7
#: src/lessons/welcome/methods/picture/MethodsPicture.html:7
msgid ""
"Your goal (here and in any well written program) is to write the simplest "
"possible code. For that, you have to decompose your work in sub-steps, and "
"write a specific method for each sub-step."
msgstr ""
"Seu objetivo (aqui e em qualquer programa bem escrito) é escrever o código "
"mais simples possível. Para isto, você tem que decompor seu trabalho em sub-"
"passos e escrever métodos específicos para cada sub-passo."

#. type: Content of: <p>
#: src/lessons/welcome/methods/picture/PictureMono1.html:11
msgid ""
"If you observe carefully the picture to draw, it is constituted of four "
"parts depicting a sort of V. A possible decomposition is to write a method "
"in charge of drawing a V from the current position. Its prototype can be: "
"<code>[!java|c]void [/!]makeV()</code>"
msgstr ""
"Se você observar cuidadosamente a figura que tem que desenhar, ela é "
"constituída de quatro partes descrevendo um V. Uma decomposição possível é "
"escrever um método responsável por escrever um V a partir da posição atual. "
"Seu protótipo pode ser: <code>[!java|c]void [/!]fazerV()</code>"

#. type: Content of: <p>
#: src/lessons/welcome/methods/picture/PictureMono1.html:16
msgid ""
"In this method, you should use the methods <code>brushUp()</code> and "
"<code>brushDown()</code> to mark the ground (you may want to factorize this "
"in another method). It may be wise to write the <code>makeV()</code> so that "
"it places directly the buggle in position for the next V."
msgstr ""
"Neste método, você deve usar os métodos <code>levantarPincel()</code> e "
"<code>abaixarPincel()</code> para marcar o chão (se quiser, faça um método "
"só para isto). É uma decisão inteligente escrever <code>fazerV()</code> para "
"colocar o buggle diretamente em posição para o próximo V."

#. type: Content of: <p>
#: src/lessons/welcome/methods/picture/PictureMono1.html:21
msgid ""
"Your turn. Your code should not be longer than 4 lines (not counting "
"<code>makeV</code>)..."
msgstr ""
"Sua vez. Seu código não deve ser maior que 4 linhas (sem contar "
"<code>fazerV</code>)..."

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/methods/picture/PictureMono2.html:4
msgid ""
"We will now reproduce an even bigger geometrical drawing. Once again, you "
"can see the model by clicking on the \"Objective\" tab."
msgstr ""
"Vamos agora reproduzir um desenho geométrico ainda maior. Novamente, você "
"pode ver o modelo clicando na aba \"Objetivo\"."

#. type: Content of: <p>
#: src/lessons/welcome/methods/picture/PictureMono2.html:7
msgid ""
"You can naturally reuse all the code you typed in previous exercise (select "
"the other exercise, do Ctrl-C, come back to the code of this exercise, do "
"Ctrl-V)."
msgstr ""
"Você pode naturalmente reutilizar todo o código que você digitou em "
"exercícios anteriores (selecione o outro exercício, faça Ctrl-C, volte para "
"o código deste exercício e faça Ctrl-V)."

#. type: Content of: <p>
#: src/lessons/welcome/methods/picture/PictureMono2.html:11
msgid ""
"But you want to keep your code as simple as possible. For that, define new "
"methods to deal simply with the repetitions in the pattern. For example, a "
"method <code>makePattern()</code> achieving the pattern of previous example "
"seems to be a good idea (but this may not be enough)."
msgstr ""
"Mas você quer manter seu código tão simples quanto possível. Para isto, "
"defina novos métodos para lidar simplesmente com as repetições no padrão. "
"Por exemplo, um método <code>fazerPadrão()</code> fazendo o padrão do "
"exemplo anterior parece ser uma boa ideia (mas pode não ser o suficiente)."

#. type: Content of: <p>
#: src/lessons/welcome/methods/picture/PictureMono2.html:16
msgid ""
"Why don't you give it a shot? The main code method shouldn't take more than "
"2 lines (included in a for loop)"
msgstr ""
"Por que não tentar? O método do código principal não deve levar mais de 2 "
"linhas (incluindo o loop for)"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/methods/picture/PictureMono3.html:4
#: src/lessons/welcome/methods/picture/MethodsPictureLarge.html:4
msgid ""
"As you can imagine, you have to reproduce the geometric drawing depicted in "
"the \"Objectives\" tab. As you can see, it is even bigger than the previous "
"one."
msgstr ""
"Como você pode imaginar, você vai ter que reproduzir o desenho geométrico "
"descrito na aba \"Objetivos\". Como você pode ver, ele é até maior que o "
"anterior."

#. type: Content of: <p>
#: src/lessons/welcome/methods/picture/PictureMono3.html:8
msgid ""
"You thus have to declare even more methods to use the repetitions of the "
"pattern and factorize your code.  Your turn..."
msgstr ""
"Portanto você tem que declarar até mais métodos para usar as repetições do "
"padrão e fatorar seu código. Sua vez..."

#. type: Content of: <h1>
#: src/lessons/welcome/methods/returning/MethodsReturning.html:2
#: src/lessons/lightbot/Board06Func.html:2
msgid "Functions"
msgstr "Funções"

#. type: Content of: <p>
#: src/lessons/welcome/methods/returning/MethodsReturning.html:4
msgid ""
"Quite often, you want to write a method that compute some value and returns "
"it. Methods returning results are called <b>functions</b>.  Writing a "
"function is not really harder than writing a simple method.  [!java|c]You "
"simply have to specify the data type of expected results before the function "
"name (where we previously had <code>void</code>).[/!] [!scala]You simply "
"have to add a colon (:) after the parenthesis and write the type of data "
"that your function will return, and add an equal sign (=). This syntax is "
"actually rather close to defining a variable, with its type, that is "
"actually a function.[/!] You can use the <code>return</code> instruction "
"anywhere in your function body to specify that the computation is done (the "
"function is not further executed), and that the result is the value "
"following the <code>return</code> keyword."
msgstr ""
"Frequentemente, você vai querer escrever um método que calcula algum valor e "
"o retorna. Métodos retornando resultados são chamados <b>funções</b>. "
"Escrever uma função não é realmente mais difícil do que escrever um simples "
"método.  [!java|c]Você simplesmente tem que especificar o tipo de dados do "
"resultado esperado entes do nome da função (onde nós previamente tínhamos "
"<code>void</code>).[/!] [!scala]Você simplesmente tem que adicionar um dois-"
"pontos (:) depois do parêntesis e escrever o tipo de dados que sua função "
"vai retornar, e adicionar um símbolo de igualdade (=). Esta sintaxe é na "
"verdade mais próxima de definir uma variável, com seu tipo, do que na "
"verdade escrever uma função.[/!] Você pode usar a instrução <code>return</"
"code> em qualquer lugar do corpo da sua função para especificar que o "
"cálculo foi feito (a função não continuará sendo executada), e que o "
"resultado é o valor que acompanha a palavra-chave <code>return</code>."

#. type: Content of: <pre>
#: src/lessons/welcome/methods/returning/MethodsReturning.html:14
#, no-wrap
msgid ""
"[!java|c]double pi() {[/!][!scala]def pi(): Double = {[/!][!python]def pi():[/!]\n"
"    return 3.14159[!java|c];[/!]\n"
"[!java|scala|c]}[/!]"
msgstr ""
"[!java|c]double pi() {[/!][!scala]def pi(): Double = {[/!][!python]def pi():[/!]\n"
"    return 3.14159[!java|c];[/!]\n"
"[!java|scala|c]}[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/methods/returning/MethodsReturning.html:18
msgid ""
"Actually, you can also use that <code>return</code> keyword in methods that "
"do not return any result, to interupt the computation. Of course, you should "
"not provide any value to return in that case."
msgstr ""
"Na verdade, você também pode usar a palavra-chave <code>return</code> em "
"métodos que não retornam qualquer resultado, para interromper o cálculo. "
"Obviamente que nestes casos você não passa nenhum valor para retornar."

#. type: Content of: <p>
#: src/lessons/welcome/methods/returning/MethodsReturning.html:21
msgid ""
"It is possible to have several <code>return</code> instructions in several "
"branches of a conditional. In fact, it is forbidden to have any execution "
"path of your body without any <code>return</code>, or to write some code "
"after the <code>return</code> instruction. Indeed, if the machine reaches "
"the end of the function without finding any <code>return</code>, it cannot "
"know what actual value to give back to the function caller.  Moreover, "
"<code>return</code> interrupts immediately the function execution (why "
"bother looking further when you know the function result?). So, if there is "
"some code after a <code>return</code>, it must be an error and the compiler "
"warns you."
msgstr ""
"É possível ter várias instruções <code>return</code> em várias ramificações "
"de um condicional. De fato, é proibido ter um caminho de execução no corpo "
"da função sem nenhum <code>return</code>, ou escrever algum código depois da "
"instrução <code>return</code>. Na verdade, se a máquina alcança o fim da "
"função sem encontrar qualquer <code>return</code>, ela não sabe o real valor "
"que deve retornar a quem chamou a função. Além disto, o <code>return</code> "
"interrompe imediatamente a execução da função (por que se preocupar olhando "
"além quando você sabe o resultado da função?). Então, se existe algum código "
"depois de um <code>return</code>, deve ser um erro e o compilador irá te "
"alertar disto."

#. type: Content of: <pre>
#: src/lessons/welcome/methods/returning/MethodsReturning.html:32
#, no-wrap
msgid ""
"[!java|scala|c][!java]boolean [/!][!c]int [/!][!scala]def [/!]isFrontFree()[!scala]:Boolean =[/!] {\n"
"    if (isFacingWall() == [!java|scala]true[/!][!c]1[/!]) {\n"
"        return [!java|scala]false[/!][!c]0[/!];\n"
"        <span class=\"comment\">/* no code allowed here */</span>\n"
"    } else {\n"
"        return [!java|scala]true[/!][!c]1[/!];\n"
"        <span class=\"comment\">/* here neither */</span>\n"
"    }\n"
"    <span class=\"comment\">/* even here, forget it */</span>\n"
"}[/!][!python]def isFrontFree():\n"
"    if isFacingWall() == True:\n"
"        return False\n"
"        <span class=\"comment\"># no code allowed here</span>\n"
"    else\n"
"        return True\n"
"        <span class=\"comment\"># here neither</span>\n"
"<span class=\"comment\"># even here, forget it</span>[/!]"
msgstr ""
"[!java|scala|c][!java]boolean [/!][!c]int [/!][!scala]def [/!]isFrontFree()[!scala]:Boolean =[/!] {\n"
"    if (estáDeFrenteParaParede() == [!java|scala]true[/!][!c]1[/!]) {\n"
"        return [!java|scala]false[/!][!c]0[/!];\n"
"        <span class=\"comment\">/* proibido colocar código aqui */</span>\n"
"    } else {\n"
"        return [!java|scala]true[/!][!c]1[/!];\n"
"        <span class=\"comment\">/* nem aqui */</span>\n"
"    }\n"
"    <span class=\"comment\">/* e nem mesmo aqui. desista */</span>\n"
"}[/!][!python]def livreEmFrente():\n"
"    if estáDeFrenteParaParede() == True:\n"
"        return False\n"
"        <span class=\"comment\"># proibido colocar código aqui</span>\n"
"    else\n"
"        return True\n"
"        <span class=\"comment\"># nem aqui</span>\n"
"<span class=\"comment\"># e nem mesmo aqui, desista</span>[/!]"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/methods/returning/MethodsReturning.html:50
msgid ""
"You will once again write a function that the buggle will use. Its name must "
"be <code>haveBaggle</code>, and it returns a boolean value indicating "
"whether the row in front of the buggle contains a baggle or not. The buggle "
"will use it to search the first row containing a baggle, and stop here."
msgstr ""
"Você vai mais uma vez escrever uma função que o buggle vai usar. Seu nome "
"deve ser <code>temBaggle</code>, e ela retorna um valor booleano indicando "
"se a linha na frente do buggle contém um baggle ou não. O buggle vai usar "
"isto para buscar a primeira linha contendo um baggle, e parar nela."

#. type: Content of: <p>
#: src/lessons/welcome/methods/returning/MethodsReturning.html:55
msgid ""
"The easier for this function is to use a boolean variable called "
"<code>seenBaggle</code> indicating whether or not we saw a baggle so far. "
"Its initial value is '[!python]False[/!][!scala|java]false[/!][!c]0[/!]'."
msgstr ""
"A forma fácil de fazer esta função é usar uma variável booleana chamada "
"<code>baggleAvistado</code> indicando se nós vimos ou não um baggle até o "
"momento. O valor inicial é '[!python]False[/!][!scala|java]false[/!][!"
"c]0[/!]'."

#. type: Content of: <p>
#: src/lessons/welcome/methods/returning/MethodsReturning.html:59
msgid ""
"Then, move 6 steps forward (the world contains 7 cells and we already are on "
"one of them). For each cell, if it contains a baggle, we store true in "
"<code>sawBaggle</code> (and we don't do anything but moving forward if not)."
msgstr ""
"Então mova 6 passos para frente (o mundo contém 7 células e nós já estamos "
"em uma delas). Para cada célula, se ela contiver um baggle, vamos guardar "
"true em <code>baggleVisto</code> (e se não, vamos simplesmente andar para "
"frente)."

#. type: Content of: <p>
#: src/lessons/welcome/methods/returning/MethodsReturning.html:63
msgid ""
"At the end, we move back by 6 steps, and we return the value of "
"<code>seenBaggle</code> to the caller."
msgstr ""
"No final, vamos nos mover 6 passos para trás, e retornar o valor de "
"<code>baggleVisto</code> para quem chamou o método."

#. type: Content of: <p>
#: src/lessons/welcome/methods/returning/MethodsReturning.html:67
msgid ""
"This exercise is a bit different since there is two initial worlds, each "
"with a specific objective. Your code must work for each of them. Observe "
"that the world selection scrolling menu (right below the speed slider)  "
"allows to switch the observed world."
msgstr ""
"Este exercício é um pouco diferente já que ele tem dois mundos iniciais, "
"cada um com um objetivo específico. Seu código deve funcionar em ambos. "
"Observe que o menu de seleção de mundo (logo abaixo do controle de "
"velocidade) permite que você alterne entre os mundos."

#. type: Content of: <p>
#: src/lessons/welcome/methods/returning/MethodsReturning.html:72
msgid ""
"When your function <code>haveBaggle</code> works, proceed to next exercise."
msgstr ""
"Quando sua função <code>temBaggle</code> funcionar, siga para o próximo "
"exercício."

#. type: Content of: <p>
#: src/lessons/welcome/methods/args/MethodsArgs.html:4
msgid ""
"Don't you get tired of writing again and again the code to move by a fixed "
"amount of steps? On the other hand, writing <tt>forward2()</tt>, "
"<tt>forward3()</tt>, <tt>forward4()</tt>, as well as <tt>backward2()</tt>, "
"<tt>backward3()</tt>, <tt>backward4()</tt>, and so on does not really help, "
"to say the less."
msgstr ""
"Você não está cansado de escrever o mesmo código várias vezes para se mover "
"uma certa quantidade de passos? Por outro lado, escrever <tt>avançar2()</"
"tt>, <tt>avançar3()</tt>, <tt>avançar4()</tt>, assim como <tt>recuar2()</"
"tt>, <tt>recuar3()</tt>, <tt>recuar4()</tt> e etc também não ajudam, para "
"dizer o mínimo."

#. type: Content of: <p>
#: src/lessons/welcome/methods/args/MethodsArgs.html:10
msgid ""
"Luckily, it is possible to pass <b>parameters</b> to your methods. You have "
"to specify their type and name between the parenthesis after the method "
"name. Then, you can use them in the method body as if it were variables "
"defined in there, and which initial value is what the caller specified."
msgstr ""
"Felizmente, é possível passar <b>parâmetros</b> para seus métodos. Você tem "
"que especificar o tipo e nome entre parêntesis depois do nome do método. "
"Então, você pode usá-los no corpo do método como se eles fossem variáveis "
"definidas lá, e com valores iniciais que o \"caller\" especificou."

#. type: Content of: <pre>
#: src/lessons/welcome/methods/args/MethodsArgs.html:15
#, no-wrap
msgid ""
"[!java|c]double [/!]divideByTwo([!java|c]double [/!]x[!scala]: Double[/!])[!scala]: Double =[/!] [!java|scala|c]{[/!][!python]:[/!]\n"
"     return x / 2[!java|c];[/!]\n"
"[!scala|java|c]}[/!]"
msgstr ""
"[!java|c]double [/!]dividirPorDois([!java|c]double [/!]x[!scala]: Double[/!])[!scala]: Double =[/!] [!java|scala|c]{[/!][!python]:[/!]\n"
"     return x / 2[!java|c];[/!]\n"
"[!scala|java|c]}[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/methods/args/MethodsArgs.html:19
msgid ""
"As caller, you have to specify the initial value of this \"variables\" "
"between the call's parenthesis."
msgstr ""
"Como o \"caller\", você deve especificar o valor inicial destas \"variáveis"
"\" entre parêntesis na chamada."

#. type: Content of: <pre>
#: src/lessons/welcome/methods/args/MethodsArgs.html:21
#, no-wrap
msgid "[!java|c]double [/!][!scala]val [/!]result = divideByTwo(3.14)[!java|c];[/!]"
msgstr "[!java|c]double [/!][!scala]val [/!]result = dividirPorDois(3.14)[!java|c];[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/methods/args/MethodsArgs.html:23
msgid ""
"If you want several parameters, you need to separate them with comas (,)  "
"both in the declaration and calls."
msgstr ""
"Se você quiser vários parâmetros, você precisa separar eles com vírgulas (,) "
"tanto na declaração quanto na chamada."

#. type: Content of: <pre>
#: src/lessons/welcome/methods/args/MethodsArgs.html:26
#, no-wrap
msgid ""
"[!java|c]double divide(double x, double y) {[/!]\n"
"[!scala]def divide(x:Double, y:Double): Double = {[/!]\n"
"[!python]def divide(x, y):[/!]\n"
"     return x / y[!java|c];[/!]\n"
"[!java|scala|c]}[/!]"
msgstr ""
"[!java|c]double dividir(double x, double y) {[/!]\n"
"[!scala]def dividir(x:Double, y:Double): Double = {[/!]\n"
"[!python]def dividir(x, y):[/!]\n"
"     return x / y[!java|c];[/!]\n"
"[!java|scala|c]}[/!]"

#. type: Content of: <pre>
#: src/lessons/welcome/methods/args/MethodsArgs.html:31
#, no-wrap
msgid ""
"[!java|c]double res = divide(3.14 , 1.5);[/!]\n"
"[!scala]val res = divide(3.14 , 1.5)[/!]\n"
"[!python]res = divide(3.14 , 1.5)[/!]"
msgstr ""
"[!java|c]double res = dividir(3.14 , 1.5);[/!]\n"
"[!scala]val res = dividir(3.14 , 1.5)[/!]\n"
"[!python]res = dividir(3.14 , 1.5)[/!]"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/methods/args/MethodsArgs.html:35
#: src/lessons/welcome/methods/picture/MethodsPicture.html:35
msgid "[!java|scala]"
msgstr "[!java|scala]"

#. type: Content of: <p>
#: src/lessons/welcome/methods/args/MethodsArgs.html:36
msgid ""
"In [!thelang], you can declare several methods of the same name as long as "
"they don't have the same <b>signature</b>, that is, the same amount of "
"parameters and the same parameters' types."
msgstr ""
"Em [!thelang], você pode declarar vários métodos de mesmo nome desde que "
"eles não tenham a mesma <b>assinatura</b>, ou seja, a mesma quantidade e "
"tipo de parâmetros."

#. type: Content of: <pre>
#: src/lessons/welcome/methods/args/MethodsArgs.html:40
#, no-wrap
msgid ""
"[!java]double max(double x, double y)[/!][!scala]def max(x:Double, y:Double): Double =[/!] {\n"
"  if (x > y) {\n"
"    return x;\n"
"  }\n"
"  return y;\n"
"}[!java]int max(int x, int y)[/!][!scala]def max(x:Int, y:Int): Int =[/!] {\n"
"  if (x > y) {\n"
"    return x;\n"
"  }\n"
"  return y;\n"
"}\n"
"[!java]int max(int x, int y; int z)[/!][!scala]def max(x:Int, y:Int, z:Int): Int =[/!] {\n"
"  if (x > y && x > z) {\n"
"    return x;\n"
"  }\n"
"  if (y > z) {\n"
"    return y;\n"
"  }\n"
"  return z;\n"
"}"
msgstr ""
"[!java]double max(double x, double y)[/!][!scala]def max(x:Double, y:Double): Double =[/!] {\n"
"  if (x > y) {\n"
"    return x;\n"
"  }\n"
"  return y;\n"
"}[!java]int max(int x, int y)[/!][!scala]def max(x:Int, y:Int): Int =[/!] {\n"
"  if (x > y) {\n"
"    return x;\n"
"  }\n"
"  return y;\n"
"}\n"
"[!java]int max(int x, int y; int z)[/!][!scala]def max(x:Int, y:Int, z:Int): Int =[/!] {\n"
"  if (x > y && x > z) {\n"
"    return x;\n"
"  }\n"
"  if (y > z) {\n"
"    return y;\n"
"  }\n"
"  return z;\n"
"}"

#. type: Content of: <p>
#: src/lessons/welcome/methods/args/MethodsArgs.html:61
msgid ""
"Observe that we omitted the <tt>else</tt> branches of each <tt>if</tt>. It "
"works anyway because a <tt>return</tt> interrupts the method execution. If "
"we arrive to the last line of <code>[!java]max(int,int)[/!][!scala]max(Int,"
"Int):Int[/!]</code>, we know that <code>x&lt;=y</code> because otherwise, "
"the <tt>return</tt> of line 2 would have stopped the execution."
msgstr ""
"Observe que nós omitimos os ramos <tt>else</tt> de cada <tt>if</tt>. Isto "
"funciona de qualquer jeito por que um <tt>return</tt> interrompe a execução "
"do método. Se nós chegarmos à última linha de <code>[!java]max(int,int)[/!][!"
"scala]max(Int,Int):Int[/!]</code>, vamos saber que <code>x&lt;=y</code> por "
"que de outra forma, o <tt>return</tt> da linha 2 deveria ter parado a "
"execução."

#. type: Content of: <p>
#: src/lessons/welcome/methods/args/MethodsArgs.html:71
msgid ""
"This time, you have to write a <code> [!java|c]move(int stepCount,[!"
"java]boolean[/!][!c]int[/!] forward)[/!] [!scala]move(stepCount: Int,"
"forward: Boolean)[/!] [!python]move(stepCount,forward)[/!] </code> method "
"which moves forward by <code>stepCount</code> steps if <code>forward</code> "
"is true, and moves back of that amount of steps if the boolean is false."
msgstr ""
"Agora você vai ter que escrever um método <code> [!java|c]mover(int "
"contaPassos,[!java]boolean[/!][!c]int[/!] forward)[/!] [!"
"scala]mover(contaPassos: Int,forward: Boolean)[/!] [!"
"python]mover(contaPassos,forward)[/!] </code> que move para a frente "
"<code>contaPassos</code> passos se <code>forward</code> for verdadeiro, e "
"move para trás a mesmas quantidade de passos se o booleano for falso."

#. type: Content of: <p>
#: src/lessons/welcome/methods/args/MethodsArgs.html:79
msgid ""
"This time, there is only one world but seven buggles, all sharing the same "
"code.  This code should not be really problematic for you to write, actually."
msgstr ""
"Desta vez existe apenas um mundo mas sete buggles, todos compartilhando o "
"mesmo código. Este código não deve te dar muito trabalho para escrever, na "
"verdade."

#. type: Content of: <h2>
#: src/lessons/welcome/methods/flowerpot/FlowerPot.html:2
msgid "Flower Pot"
msgstr "Vaso de Flores"

#. type: Content of: <p>
#: src/lessons/welcome/methods/flowerpot/FlowerPot.html:4
msgid ""
"Your buggle decided to flower a bit the pot it lives in. You have to help it "
"reproducing the drawing of its dreams (check the \"Objective\" tab to see "
"it)."
msgstr ""
"Seu buggle decidiu plantar umas flores no pote onde vive. Você tem que "
"ajudar ele a reproduzir o desenho dos sonhos dele (verifique a aba \"Objetivo"
"\" para ver o sonho)."

#. type: Content of: <p>
#: src/lessons/welcome/methods/flowerpot/FlowerPot.html:7
msgid ""
"For that, you have to write a <code>growFlowers()</code> method that does "
"not take any parameter and does not return any result. As the pattern is a "
"bit complex, you should try to decompose this drawing in sub-steps so that "
"your code remains short and easy to read. A method to draw one flower of the "
"color passed in parameter sounds like a good start, but it is probably not "
"enough."
msgstr ""
"Para isto, você tem que escrever um método <code>growFlowers()</code> que "
"não recebe parâmetros e nem retorna nenhum resultado. Como o padrão é um "
"pouco complexo, você deve tentar decompor este desenho em sub-passos de "
"forma que seu código permaneça curto e fácil de ler. Um método para desenhar "
"uma flor da cor passada como parâmetro parece um bom começo, mas "
"provavelmente não é o suficiente."

#. type: Content of: <p>
#: src/lessons/welcome/methods/flowerpot/FlowerPot.html:13
msgid ""
"For your information, this drawing uses five colors that are listed below.  "
"[!java|scala|c]The data type of these constants is <code>Color</code>, that "
"naturally describes a particular color.[/!]"
msgstr ""
"Para sua informação, este desenho usa cinco cores que estão listadas "
"abaixo.  [!java|scala|c]o tipo de dados destas constantes é <code>Cor</"
"code>, que naturalmente descreve uma cor particular.[/!]"

#. type: Content of: <ul><li>
#: src/lessons/welcome/methods/flowerpot/FlowerPot.html:18
msgid "<tt>[!scala|java|python]Color.[/!]RED</tt>"
msgstr "<tt>[!scala|java|python]Color.[/!]RED</tt>"

#. type: Content of: <ul><li>
#: src/lessons/welcome/methods/flowerpot/FlowerPot.html:19
msgid "<tt>[!scala|java|python]Color.[/!]PINK</tt>"
msgstr "<tt>[!scala|java|python]Color.[/!]PINK</tt>"

#. type: Content of: <ul><li>
#: src/lessons/welcome/methods/flowerpot/FlowerPot.html:20
msgid "<tt>[!scala|java|python]Color.[/!]CYAN</tt>"
msgstr "<tt>[!scala|java|python]Color.[/!]CYAN</tt>"

#. type: Content of: <ul><li>
#: src/lessons/welcome/methods/flowerpot/FlowerPot.html:21
msgid "<tt>[!scala|java|python]Color.[/!]ORANGE</tt>"
msgstr "<tt>[!scala|java|python]Color.[/!]ORANGE</tt>"

#. type: Content of: <ul><li>
#: src/lessons/welcome/methods/flowerpot/FlowerPot.html:22
msgid "<tt>[!scala|java|python]Color.[/!]GREEN</tt>"
msgstr "<tt>[!scala|java|python]Color.[/!]GREEN</tt>"

#. type: Content of: <ul><li>
#: src/lessons/welcome/methods/flowerpot/FlowerPot.html:23
msgid "<tt>[!scala|java|python]Color.[/!]YELLOW</tt>"
msgstr "<tt>[!scala|java|python]Color.[/!]YELLOW</tt>"

#. type: Content of: <h2>
#: src/lessons/welcome/methods/flowerpot/FlowerCase.html:2
msgid "Flower Display Case"
msgstr "Vitrine de flores"

#. type: Content of: <p>
#: src/lessons/welcome/methods/flowerpot/FlowerCase.html:4
msgid ""
"Whao! That's not a little pot anymore! That's a huge large flower display "
"case! Your buggle can't help but starts flowering this gorgeous place. You "
"should help it to prevent that it bumps into a wall..."
msgstr ""
"Uau! isto não é mais um potinho! É uma grande vitrine de flores! Seu buggle "
"mal pode esperar para começar a florir este belo lugar. Você deve ajudá-lo a "
"não bater nas paredes..."

#. type: Content of: <p>
#: src/lessons/welcome/methods/flowerpot/FlowerCase.html:8
msgid "PS: the newly used color is <code>Color.BLUE</code>."
msgstr "PS: a cor recentemente usada é <code>Cor.AZUL</code>."

#. type: Content of: <h2>
#: src/lessons/welcome/methods/picture/MethodsPicture.html:2
msgid "Colorful drawing"
msgstr "Desenho colorido"

#. type: Content of: <p>
#: src/lessons/welcome/methods/picture/MethodsPicture.html:11
msgid ""
"If you observe carefully the picture to draw, it is constituted of four "
"parts depicting a sort of V using a different color. A possible "
"decomposition is to write a method in charge of drawing a V of the specified "
"color from the current position. Its prototype can be:"
msgstr ""
"Se você observar cuidadosamente a figura para pintar, ela é constituída de "
"quatro partes descrevendo um tipo de V usando uma cor diferente. Uma "
"decomposição possível é escrever um método responsável por pintar um V de "
"uma cor específica a partir da posição atual. Seu protótipo pode ser:"

#. type: Content of: <pre>
#: src/lessons/welcome/methods/picture/MethodsPicture.html:15
#, no-wrap
msgid "[!java|c]void [/!]makeV([!java|c]Color [/!]c[!scala]: Color[/!])[!python]  <span class=\"comment\"># parameter c is of type Color</span>[/!]"
msgstr "[!java|c]void [/!]fazerV([!java|c]Cor [/!]c[!scala]: Cor[/!])[!python]  <span class=\"comment\"># parâmetro c é do tipo Cor</span>[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/methods/picture/MethodsPicture.html:17
msgid ""
"The <code>Color</code> data type naturally describes a particular color. "
"Your code should probably call <code>makeV</code> with the following "
"arguments (a different color for each call):"
msgstr ""
"O tipo de dados <code>Cor</code> descreve obviamente uma cor particular. Seu "
"código provavelmente vai chamar <code>fazerV</code> com os seguintes "
"argumentos (uma cor diferente para cada chamada):"

#. type: Content of: <ul><li>
#: src/lessons/welcome/methods/picture/MethodsPicture.html:21
msgid "[!java|scala|python]Color.[/!]YELLOW"
msgstr "[!java|scala|python]Cor.[/!]AMARELO"

#. type: Content of: <ul><li>
#: src/lessons/welcome/methods/picture/MethodsPicture.html:22
msgid "[!java|scala|python]Color.[/!]RED"
msgstr "[!java|scala|python]Cor.[/!]VERMELHO"

#. type: Content of: <ul><li>
#: src/lessons/welcome/methods/picture/MethodsPicture.html:23
msgid "[!java|scala|python]Color.[/!]BLUE"
msgstr "[!java|scala|python]Cor.[/!]AZUL"

#. type: Content of: <ul><li>
#: src/lessons/welcome/methods/picture/MethodsPicture.html:24
msgid "[!java|scala|python]Color.[/!]GREEN"
msgstr "[!java|scala|python]Cor.[/!]VERDE"

#. type: Content of: <p>
#: src/lessons/welcome/methods/picture/MethodsPicture.html:27
msgid ""
"In <code>makeV()</code>, you should use the <code>setBrushColor()</code> "
"method (predefined in the buggle) to change the color of the buggle's brush, "
"as well as <code>brushUp()</code> and <code>brushDown()</code> to change the "
"brush position."
msgstr ""
"Em <code>makeV()</code>, você deve usar o método <code>setBrushColor()</"
"code> (pré-definido no buggle) para mudar a cor do pincel do buggle, assim "
"como <code>levantarPincel()</code> e <code>abaixarPincel()</code> para mudar "
"a posição do pincel."

#. type: Content of: <p>
#: src/lessons/welcome/methods/picture/MethodsPicture.html:32
msgid ""
"It may be wise to write the <code>makeV()</code> so that it places directly "
"the buggle in position for the next V."
msgstr ""
"É recomendável escrever o código do <code>fazerV()</code> de forma que ele "
"deixe o buggle na posição para o próximo V."

#. type: Content of: <p>
#: src/lessons/welcome/methods/picture/MethodsPicture.html:36
msgid ""
"Your turn now. I'm sure you can imagine the other methods you need to keep "
"your code simple and pleasant to read.  Complete the method <code>run()</"
"code> that should be called automatically (once).  [!java]the <code>public</"
"code> keyword means more or less that anybody can call this method, which is "
"good because the PLM infrastructure calls it directly.[/!]"
msgstr ""
"Agora é sua vez. tenho certeza de que você pode imaginar os outros métodos "
"necessários para manter seu código simples e agradável de ler. Complete o "
"método <code>run()</code> que será chamado automaticamente (uma vez).  [!"
"java]a palavra-chave <code>public</code> significa mais ou menos que todo "
"mundo pode chamar este método, o que é bom pois a infraestrutura do PLM "
"chama ele diretamente.[/!]"

#. type: Content of: <h2>
#: src/lessons/welcome/methods/picture/MethodsPictureLarge.html:2
msgid "Larger colorful drawing"
msgstr "Um desenho colorido maior"

#. type: Content of: <p>
#: src/lessons/welcome/methods/picture/MethodsPictureLarge.html:8
msgid ""
"You thus have to declare even more methods to use the repetitions of the "
"pattern and factorize your code. Another solution is to <i>parametrize</i> "
"your functions to reuse the code you wrote previously by changing the size."
msgstr ""
"Você agora tem que declarar ainda mais métodos para usar as repetições de "
"padrões e fatorizar seu código. Outra soução é <i>parametrizar</i> suas "
"funções para reusar o código que você escreveu previamente mudando o tamanho."

#. type: Content of: <p>
#: src/lessons/welcome/methods/picture/MethodsPictureLarge.html:13
#: src/lessons/welcome/traversal/Snake.html:40
#: src/lessons/welcome/traversal/column/TraversalByColumn.html:50
#: src/lessons/welcome/traversal/line/TraversalByLine.html:11
#: src/lessons/welcome/traversal/diagonal/TraversalDiagonal.html:11
#: src/lessons/welcome/traversal/zigzag/TraversalZigZag.html:7
msgid "Your turn..."
msgstr "Sua vez..."

#. type: Content of: <h2>
#: src/lessons/welcome/methods/picture/PatternPicture.html:2
msgid "Another Colorful Pattern"
msgstr "Outro padrão colorido"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/methods/picture/PatternPicture.html:4
msgid ""
"Here is yet another exercise where you have to reproduce the pattern "
"provided in the \"Objective\" tab."
msgstr ""
"Aqui está outro exercício onde você tem que reproduzir o padrão fornecido na "
"aba \"Objetivo\"."

#. type: Content of: <p>
#: src/lessons/welcome/methods/picture/PatternPicture.html:7
msgid ""
"This one is a bit more difficult than the one seen previously. Look for "
"repeating patterns, even if the color changes, and write a method drawing "
"each of them."
msgstr ""
"Este é um pouco mais difícil do que o anterior. Procure por padrões de "
"repetição, mesmo se a cor mudar, e escreva um método desenhando cada um "
"deles."

#. type: Content of: <p>
#: src/lessons/welcome/methods/picture/PatternPicture.html:11
#: src/lessons/lander/lvl1_lander_101/Lander101.html:42
msgid "Good luck!"
msgstr "Boa Sorte!"

#. type: Content of: <p>
#: src/lessons/welcome/methods/slug/SlugHunting.html:4
msgid ""
"Now that your <code>isFacingTrail()</code> method is working, it's time to "
"write the code to organize the hunting party. Copy/paste your code from the "
"previous exercise, and complete the <code>hunt()</code> method."
msgstr ""
"Agora que seu método <code>estáDeFrenteParaRastro()</code> está funcionando, "
"é hora de escrever o código para organizar a festa da caçada. Copie-e-cole "
"seu código do exercício anterior e complete o método <code>caçar()</code>."

#. type: Content of: <p>
#: src/lessons/welcome/methods/slug/SlugHunting.html:8
msgid ""
"Following a track is not very difficult: move forward as long as you have "
"the track in front of you.  If there is not track in front of you anymore, "
"check whether the rest of the track is on your left or on your right, and "
"follow it further."
msgstr ""
"Seguir uma trilha não é difícil: avance até você ter a trilha em frente a "
"você. Se não houver trilha mais trilha em frente a você, verifique se o "
"restante da trilha está a sua esquerda ou à sua direita, e vá nesta direção."

#. type: Content of: <p>
#: src/lessons/welcome/methods/slug/SlugHunting.html:12
msgid ""
"To ensure that you don't mix the track you come from with the one in front "
"of you, the easier is to erase the track when you follow it. Use the method "
"<code>brushDown()</code> to put your brush down and mark the ground, and "
"<code>brushUp()</code> to move it up again."
msgstr ""
"Para garantir que você não misture o caminho de onde você veio com o para "
"onde você vai, a forma mais fácil é apagar o caminho por onde você passa. "
"Use o método <code>abaixarPincel()</code> para abaixar seu pincel e marcar o "
"chão, e <code>levantarPincel()</code> para levantá-lo de novo."

#. type: Content of: <p>
#: src/lessons/welcome/methods/slug/SlugHunting.html:16
msgid ""
"Finally, do not forget to capture your prey once you found it (using "
"<code>pickupBaggle()</code>)."
msgstr ""
"Finalmente, não esqueça de capturar sua presa quando encontrá-la (usando "
"<code>pickupBaggle()</code>)."

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/methods/slug/SlugHunting.html:20
msgid ""
"<a name=\"Objectives\"> Complete the <code>hunt()</code> method. You "
"probably want to copy over the <code>isFacingTrail()</code> method that you "
"wrote in previous exercise.  </a>"
msgstr ""
"<a name=\"Objetivos\"> Complete o método <code>caçar()</code>. Você não "
"gostaria de copiar o método <code>estáDeFrenteParaRastro()</code> que você "
"escreveu no exercício anterior?</a>"

#. type: Content of: <p>
#: src/lessons/welcome/methods/slug/SlugTracking.html:4
msgid ""
"Your buggle is super happy! It just found the green dribbling trail, "
"certainly left by a big yummy slug.  At its end, the buggle is certain to "
"entertain itself with this appetizing slug (represented as a baggle)."
msgstr ""
"Seu buggle está super-feliz! Ele acabou de encontrar o rastro verde e úmido, "
"certamente deixado por um apetitosa e grande lesma.  No seu final, o buggle "
"tem certeza de que vai se divertir com est deliciosa lesma (representada por "
"um baggle)."

#. type: Content of: <p>
#: src/lessons/welcome/methods/slug/SlugTracking.html:8
msgid ""
"To reach that goal, you had to write a boolean method <tt>isFacingTrail</"
"tt>, which determines whether we are facing a green cell or not. Of course, "
"if we are facing a wall, it should return false without bumping into it. You "
"should make sure that this method has no <b>side effect</b>, i.e. that it "
"does not change the state of the calling buggle nor of its world."
msgstr ""
"Para atingir este objetivo, você tem que escrever um método booleano "
"<tt>estáDeFrenteParaRastro</tt>, que determina se estamos virados para uma "
"célula verde ou não. Obviamente, se nós estivermos virados para uma parede, "
"ele deve retornar falso sem \"bumping\" nela. Você deve se certificar que "
"este método não tem <b>efeitos colaterais</b>, i.e. que ele não muda o "
"estado do \"calling buggle\" ou do mundo."

#. type: Content of: <p>
#: src/lessons/welcome/methods/slug/SlugTracking.html:13
msgid ""
"Your tool to that end is the <code>getGroundColor()</code> that returns the "
"color of the current cell. Just go to the cell you want to test and run that "
"function.  [!java]You cannot test whether this color is equal to <code>Color."
"green</code> with an <code>==</code> sign but instead you have to write "
"something like <code>getGroundColor().equals(Color.green)</code>. This is "
"because green is an <i>object</i> in Java, and <code>.equals()</code> is the "
"way to go to test equality between Java objects.[/!] [!python|scala|c]So you "
"just have to test whether the returned color is equal to the value <code>[!"
"scala|python]Color.green[/!][!c]GREEN[/!]</code>, that represents the green "
"color.[/!]"
msgstr ""
"Sua ferramenta para este objetivo é o <code>getCorDoChão()</code> que "
"retorna a cor da célula atual. Simplesmente vá para a célula que você quer "
"testar e execute esta função.  [!java]Você não pode testar se esta cor é "
"igual a <code>Cor.verde</code> com um símbolo de <code>==</code> mas sim "
"escrever algo como <code>getCorDoChão().equals(Cor.verde)</code>. Isto "
"acontece por que verde é um  <i>objeto</i> em Java, e <code>.equals()</code> "
"é a forma de testar igualdade entre objetos Java.[/!] [!python|scala]Então "
"você tem que testar se a cor retornada é igual ao valor <code>Cor.verde</"
"code>, que representa a cor verde.[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/methods/slug/SlugTracking.html:24
msgid ""
"Complete the <code>isFacingTrail()</code> method (which gets called "
"automatically)."
msgstr ""
"Complete o método <code>estáDeFrenteParaRastro()</code> (que será chamado "
"automaticamente)."

#. type: Content of: <h2>
#: src/lessons/welcome/methods/slug/SlugSnail.html:2
msgid "Slugs and Snails"
msgstr "Lesmas e Caracóis"

#. type: Content of: <p>
#: src/lessons/welcome/methods/slug/SlugSnail.html:4
msgid ""
"Yuhu! This time, your buggle found the tracks of much more preys! In the "
"first world, that's a yummy Kitty Slug (leaving a pink trail) while on the "
"second world, that's a big fat snail that awaits your buggle at the end of "
"the orange trail."
msgstr ""
"Iuhu! Desta vez, seu buggle encontrou trilhas com muitas presas! No primeiro "
"mundo, era uma bela lesma deliciosa (que deixava um rastro rosa) e no "
"segundo mundo, uma grande e gordo caracol que esperava seu buggle no final "
"do rastro laranja."

#. type: Content of: <p>
#: src/lessons/welcome/methods/slug/SlugSnail.html:8
msgid ""
"You have to copy/paste your code again, and change it so that your methods "
"take the color of the trail to follow as a parameter. Beside of this, your "
"code should work as earlier."
msgstr ""
"Você tem que copiar/colar seu código de novo, e mudá-lo de forma que seus "
"métodos fiquem com a cor do rastro para seguir como um parâmetro. E mesmo "
"assim, seu código deve funcionar como antes."

#. type: Content of: <p>
#: src/lessons/welcome/methods/slug/SlugSnail.html:11
msgid ""
"Don't get lost on false leads! <code>The hunt()</code> method was given a "
"parameter to tell you which color to follow (and it is not the same in all "
"worlds). Add a parameter to your <code>isFacingTrail()</code> method to only "
"follow the requested color, as the other colors lead to dead ends..."
msgstr ""
"Cuidado para não seguir pistas falsas! O método <code>hunt()</code> recebe "
"um parâmetro para dizer que cor seguir (e não é o mesmo em todos os mundos). "
"Adicione um parâmetro ao seu método <code>isFacingTrail()</code> para apenas "
"seguir a cor requisitada, pois as outras cores vão levar a becos sem saída..."

#. type: Content of: <h2>
#: src/lessons/welcome/bdr/BDR.html:2
msgid "Buggle Dance Revolution (BDR)"
msgstr "Buggle Dance Revolution (BDR)"

#. type: Content of: <p>
#: src/lessons/welcome/bdr/BDR.html:4
msgid ""
"After these races, it's time to party! For that, we will teach the buggles "
"to play Dance Revolution, this game beloved of some students: The player has "
"to move the feet on the carpet according to the instructions presented on "
"the screen, and following the music. But before that, we have some details "
"to study first."
msgstr ""
"Depois destas corridas, é hora de festejar! Para isto, vamos ensinar os "
"buggles a jogar Dance Revolution, este jogo amado por alguns estudantes: O "
"jogador tem que mover os pés num carpete de acordo com as instruções "
"apresentadas na tela, e seguir a música. Mas antes disto, temos alguns "
"detalhes para estudar primeiro."

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bdr/BDR.html:9 src/lessons/welcome/bdr/BDR2.html:4
#: src/lessons/recursion/lego/square/FourSquare.html:28
msgid "[!java|scala|c]"
msgstr "[!java|scala|c]"

#. type: Content of: <h3>
#: src/lessons/welcome/bdr/BDR.html:10
msgid "Conditionals without curly braces"
msgstr "Condicionais sem colchetes"

#. type: Content of: <p>
#: src/lessons/welcome/bdr/BDR.html:12
msgid ""
"There is one detail we omitted about the conditional syntax: if a branch "
"contains only one instruction, then the curly braces become optional. So, "
"the two chunk of code are equivalent:"
msgstr ""
"Existe um detalhe que nós omitimos sobre a sintaxe do condicional: se um "
"ramo contém apenas uma instrução, então o colchetes se torna opcional. "
"Portanto, estes dois pedaços de código são equivalentes:"

#. type: Content of: <pre>
#: src/lessons/welcome/bdr/BDR.html:16
#, no-wrap
msgid ""
"if (<b>condition</b>) {\n"
"    <b>whatToDoIfTheConditionIsTrue();</b>\n"
"} else {\n"
"    <b>whatToDoElse();</b>\n"
"}"
msgstr ""
"if (<b>condition</b>) {\n"
"    <b>whatToDoIfTheConditionIsTrue();</b>\n"
"} else {\n"
"    <b>whatToDoElse();</b>\n"
"}"

#. type: Content of: <pre>
#: src/lessons/welcome/bdr/BDR.html:21
#, no-wrap
msgid ""
"if (<b>condition</b>) \n"
"    <b>whatToDoIfTheConditionIsTrue();</b>\n"
"else\n"
"    <b>whatToDoElse();</b>"
msgstr ""
"if (<b>condição</b>) \n"
"    <b>oQueFazerSeACondiçãoÉVerdadeira();</b>\n"
"else\n"
"    <b>oQueFazerCasoContrário();</b>"

#. type: Content of: <p>
#: src/lessons/welcome/bdr/BDR.html:26
msgid ""
"Actually, you can do the same for loops body that are reduced to one "
"instruction only.  But beware, this becomes dangerous if you chain the "
"<tt>if</tt> instructions like this:"
msgstr ""
"Na verdade, você pode fazer o mesmo em corpos de loop que se reduzem a "
"apenas uma instrução. Mas cuidado, isto se torna perigoso se sua cadeia de "
"instruções <tt>if</tt> parece com isto:"

#. type: Content of: <pre>
#: src/lessons/welcome/bdr/BDR.html:28
#, no-wrap
msgid ""
"if (isOverBaggle())    \n"
"     if (x == 5)\n"
"          left();\n"
"else\n"
"     right();\n"
"[!c]stepForward();[/!][!java|scala]forward();[/!]"
msgstr ""
"if (estáSobreBaggle())    \n"
"     if (x == 5)\n"
"          esquerda();\n"
"else\n"
"     direita();\n"
"[!c]avançarUmPasso();[/!][!java|scala]avançar();[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/bdr/BDR.html:35
msgid ""
"In fact, it does not turn right when there is no baggle on the ground AND x "
"equals 5, but when the buggle found a baggle on the ground and x equals "
"anything but 5. Putting this otherwise, the buggle understands the previous "
"code as if it were written the following way (note that the <tt>else</tt> "
"were moved to the right):"
msgstr ""
"De fato, não é para virar à direita quando não existe baggle no chão E x é "
"igual a 5, mas quando o buggle encontra um baggle no chão e x é diferente de "
"5. Colocando de outra forma, o buggle entende o código anterior como se ele "
"fosse escrito da seguinte forma (note que o <tt>else</tt> foi movido para a "
"direita):"

#. type: Content of: <pre>
#: src/lessons/welcome/bdr/BDR.html:40
#, no-wrap
msgid ""
"if (isOverBaggle())    \n"
"        if (x == 5)\n"
"            left();\n"
"        else\n"
"            right();\n"
"[!c]stepForward();[/!][!java|scala]forward();[/!]"
msgstr ""
"if (estáSobreBaggle())    \n"
"        if (x == 5)\n"
"            esquerda();\n"
"        else\n"
"            direita();\n"
"avançar();"

#. type: Content of: <p>
#: src/lessons/welcome/bdr/BDR.html:47
msgid ""
"The first lesson of this is that the indentation is very important to help "
"humans understanding, even if it does not change the actual meaning of the "
"code. We could have written the following code and obtain the same result. "
"But if you want a human to read and review your code, you really want to "
"indent it correctly. That's for example the case if you want a professor to "
"read it (to grade it or to answer a question about it), or if you want to "
"reuse your code later, or even if you need to debug your code yourself."
msgstr ""
"A primeira lição a tirar daí é que identação é muito importante para ajudar "
"os humanos a entender, mesmo que não mude o significado do código. Nós "
"poderíamos ter escrito o seguinte código e teríamos obtido o mesmo "
"resultado. Mas se você quer que um humano leia e revise seu código, você vai "
"com certeza querer indentar ele corretamente. Este é o caso, por exemplo, se "
"você quer que um professor leia ele (para dar nota ou tirar uma dúvida), ou "
"se você quiser reutilizar seu código mais tarde, ou mesmo se você quiser "
"depurar você mesmo seu código."

#. type: Content of: <pre>
#: src/lessons/welcome/bdr/BDR.html:55
#, no-wrap
msgid "if (isOverBaggle()) if (x == 5) left(); else right(); [!c]stepForward();[/!][!java|scala]forward();[/!]"
msgstr "if (estáSobreBaggle()) if (x == 5) esquerda(); else direita(); [!c]avançarUmPasso();[/!][!java|scala]avançar();[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/bdr/BDR.html:57
msgid ""
"The second lesson is that a <tt>else</tt> branch always connects to the "
"closest <tt>if</tt>. This may be a bit troublesome in some case, and it may "
"be easier to add more braces than strictly needed to remove any ambiguity."
msgstr ""
"A segunda lição é que o ramo do <tt>else</tt> sempre se conecta ao <tt>if</"
"tt> mais próximo. Isto pode se tornar confuso em alguns casos, e torna-se "
"mais fácil adicionar mais chaves do que o estritamente necessário para "
"remover quaisquer ambiguidades."

#. type: Content of: <h3>
#: src/lessons/welcome/bdr/BDR.html:62
msgid "Chaining conditionals"
msgstr "Encadeando condicionais"

#. type: Content of: <p>
#: src/lessons/welcome/bdr/BDR.html:64
msgid "You sometimes want to ask the buggle something similar to:"
msgstr "Algumas vezes você quer perguntar ao buggle algo similar a:"

#. type: Content of: <pre>
#: src/lessons/welcome/bdr/BDR.html:65
#, no-wrap
msgid ""
"if it's raining, take an umbrella;\n"
"if not, and if it's a hot day, take a bottle of water;\n"
"if not and if it's July 4th, take an American flag"
msgstr ""
"se está chovendo, pegue um guarda-chuva;\n"
"se não, e se está quente, pegue uma garrafa de água;\n"
"se não e se hoje é 4 de Julho, pegue uma bandeira dos estados unidos"

#. type: Content of: <p>
#: src/lessons/welcome/bdr/BDR.html:69
msgid ""
"The trap is that we want at most one of these actions to be taken. That is "
"to say, if it's raining a very hot July 4th, we don't want the buggle to get "
"outside with an umbrella, some water and a flag, but simply with an "
"umbrella. The following code is thus WRONG."
msgstr ""
"O armadilha é que nós queremos que pelo menos uma destas ações sejam feitas."
"É como dizer, se está chovendo num 4 de Julho quente, não queremos que o "
"buggle vá para fora com um guarda-chuva, água e um bandeira, mas "
"simplesmente com um guarda-chuva. O código seguinte está, então, ERRADO."

#. type: Content of: <pre>
#: src/lessons/welcome/bdr/BDR.html:74
#, no-wrap
msgid ""
"[!scala|c|java]if (rainy())\n"
"    takeUmbrella();\n"
"if (hot())\n"
"    takeWater();\n"
"if (todayIsJuly4th())\n"
"    takeFlag();[/!][!python]if rainy():\n"
"    takeUmbrella()\n"
"if hot():\n"
"    takeWater()\n"
"if todayIsJuly4th():\n"
"    takeFlag()[/!]"
msgstr ""
"[!scala|c|java]if (chovendo())\n"
"    pegueGuarda-Chuva();\n"
"if (quente())\n"
"    pegueAgua();\n"
"if (hoje4Julho())\n"
"    pegueBandeira();[/!][!python]if chovendo():\n"
"    pegueGuarda-Chuva()\n"
"if quente():\n"
"    pegueAgua()\n"
"if hoje4Julho():\n"
"    pegueBandeira()[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/bdr/BDR.html:87
msgid ""
"Indeed, since the conditions are evaluated one after the other, there is a "
"risk that you go to the July 4th march on a rainy day. Instead, we should "
"use something like this to ensure that once we found a true condition, we "
"won't evaluate the next ones."
msgstr ""
"Na verdade, já que as condições são calculadas uma depois da outra, existe "
"um risco de que você vá para a marcha de 4 de Julho num dia chuvoso. Na "
"verdade, nós devemos usar algo como isto para garantir que uma vez que "
"encontremos a condição verdadeira, não passemos para as próximas."

#. type: Content of: <pre>
#: src/lessons/welcome/bdr/BDR.html:92
#, no-wrap
msgid ""
"[!java|scala|c]if (rainy()) {\n"
"    takeUmbrella();\n"
"} else {\n"
"    if (hotDay()) {\n"
"        takeWater();\n"
"    } else {\n"
"        if (todayIsJuly4th()) {\n"
"            takeFlag();\n"
"        }\n"
"    }\n"
"}[/!][!python]if rainy():\n"
"    takeUmbrella()\n"
"else:\n"
"    if hotDay():\n"
"        takeWater()\n"
"    else:\n"
"        if todayIsJuly4th():\n"
"            takeFlag()[/!]"
msgstr ""
"[!java|scala|c]if (chuvoso()) {\n"
"    pegarGuardaChuva();\n"
"} else {\n"
"    if (diaQuente()) {\n"
"        pegarAgua();\n"
"    } else {\n"
"        if (jogoDaCopa()) {\n"
"            pegarBandeira();\n"
"        }\n"
"    }\n"
"}[/!][!python]if chuvoso():\n"
"    pegarGuardaChuva()\n"
"else:\n"
"    if diaQuente():\n"
"        pegarAgua()\n"
"    else:\n"
"        if jogoDaCopa():\n"
"            pegarBandeira()[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/bdr/BDR.html:112
msgid ""
"Unfortunately, such a cascade of conditionals is quite difficult to read. It "
"is better to [!java|scala|c]omit the curly braces for the <tt>else</tt> "
"statements. Some languages even introduce a specific construct for these "
"<tt>else if</tt>, but not [!thelang].[/!] [!python]change the sub-blocks "
"using the <code>elif</code> keyword to mark explicitly these \"else if\" "
"branches.[/!]"
msgstr ""
"Infelizmente, tal cascata de condicionais é bastante difícil de ler. É "
"melhor [!java|scala|c]omitir as chaves para as assertivas <tt>else</tt>. "
"Algumas linguagens até mesmo introduzem uma construção específica para estes "
"<tt>else if</tt>, mas não [!thelang].[/!] [!python]mudar os sub-blocos "
"usando a palavra-chave <code>elif</code> para marcar explicitamente estes "
"ramos \"else if\".[/!]"

#. type: Content of: <pre>
#: src/lessons/welcome/bdr/BDR.html:119
#, no-wrap
msgid ""
"[!c|java|scala]if (rainy()) { \n"
"    takeUmbrella();\n"
"} else if (hotDay()) {\n"
"    takeWater();\n"
"} else if (todayIsJuly4th()) {\n"
"    takeFlag();\n"
"}[/!][!python]if rainy():\n"
"    takeUmbrella()\n"
"elif hotDay():\n"
"    takeWater()\n"
"elif todayIsJuly4th():\n"
"    takeFlag()[/!]"
msgstr ""
"[!c|java|scala]if (chuvoso()) { \n"
"    pegarGuardaChuva();\n"
"} else if (diaQuente()) {\n"
"    pegarAgua();\n"
"} else if (jogoDaCopa()) {\n"
"    pegarBandeira();\n"
"}[/!][!python]if chuvoso():\n"
"    pegarGuardaChuva()\n"
"elif diaQuente():\n"
"    pegarAgua()\n"
"elif jogoDaCopa():\n"
"    pegarBandeira()[/!]"

#. type: Content of: <h3>
#: src/lessons/welcome/bdr/BDR.html:132
msgid "Graffiti in the Buggle World"
msgstr "Grafitagem no mundo dos Buggles"

#. type: Content of: <p>
#: src/lessons/welcome/bdr/BDR.html:134
msgid ""
"Buggles can tag graffitis on the ground of their world. For that, they use "
"the four following methods:"
msgstr ""
"Os buggles podem grafitar no chão de seu mundo. Para isto, use os quatro "
"métodos seguintes:"

#. type: Content of: <ul><li>
#: src/lessons/welcome/bdr/BDR.html:138
msgid ""
"<code>[!c]int[/!][!java]boolean[/!] isOverMessage()[!scala]:Boolean[/!]</"
"code>: returns <code>[!c]1[/!][!java|scala]true[/!][!python]True[/!]</code> "
"if and only if there is a message on the ground."
msgstr ""
"<code>[!c]int[/!][!java]boolean[/!] estaSobreMensagem()[!scala]:Boolean[/!]</"
"code>: returns <code>[!c]1[/!][!java|scala]true[/!][!python]True[/!]</code> "
"se e somente se existe uma mensagem no chão."

#. type: Content of: <ul><li>
#: src/lessons/welcome/bdr/BDR.html:141
msgid ""
"<code>[!c]char*[/!][!java]String[/!] readMessage()[!scala]: String[/!]</"
"code>: returns the message written on the ground (or an empty string if "
"nothing is written)."
msgstr ""
"<code>[!c]char*[/!][!java]String[/!] lerMensagem()[!scala]: String[/!]</"
"code>: retorna a mensagem lida no chão (ou uma string vazia se não há nada "
"escrito )."

#. type: Content of: <ul><li>
#: src/lessons/welcome/bdr/BDR.html:143
msgid ""
"<code>[!java|c]void[/!] writeMessage([!c]char*[/!][!java]String [/!]msg[!"
"scala]: String[/!])</code>: writes the specified message down on the ground. "
"If there is already a message on the ground, the new content is added at the "
"end of the existing message."
msgstr ""
"<code>[!java|c]void[/!] escreverMensagem([!c]char*[/!][!java]String [/!]msg[!"
"scala]: String[/!])</code>: escreve a mensagem especificada no chão. Se já "
"existe uma mensagem no chão, a nova é adicionada no final da mensagem "
"existente."

#. type: Content of: <ul><li>
#: src/lessons/welcome/bdr/BDR.html:146
msgid ""
"<code>[!java|c]void [/!]clearMessage()</code>: clears what is written on the "
"ground."
msgstr ""
"<code>[!java|c]void [/!]limparMensagem()</code>: limpa o que está escrito no "
"chão."

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bdr/BDR.html:150
msgid ""
"The goal is then to organize a BDR game between the buggles by teaching them "
"to move according to the instructions written on the ground. These "
"instructions are messages written on the ground, with the following "
"signification:"
msgstr ""
"O objetivo é então organizar um jogo de BDR entre os buggles ensinando eles "
"a se mover de acordo com as instruções escritas no chão. Estas instruções "
"são mensagens escritas no chão, com o seguinte significado:"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:156 src/lessons/welcome/bdr/BDR2.html:139
msgid "Message"
msgstr "Mensagem"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:157 src/lessons/welcome/bdr/BDR2.html:140
msgid "What to do"
msgstr "O que fazer"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:158
msgid "Mnemonic"
msgstr "Mnemônico"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:160 src/lessons/welcome/bdr/BDR2.html:142
msgid "[!java|c]'R'[/!][!scala|python]\"R\"[/!]"
msgstr "[!java|c]'R'[/!][!scala|python]\"R\"[/!]"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:160 src/lessons/welcome/bdr/BDR2.html:142
msgid "Turn right and move one step forward"
msgstr "Vire a direita (R de right) e mova um passo a frente"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:160
msgid "Right"
msgstr "Direita"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:161 src/lessons/welcome/bdr/BDR2.html:143
msgid "[!java|c]'L'[/!][!scala|python]\"L\"[/!]"
msgstr "[!java|c]'L'[/!][!scala|python]\"L\"[/!]"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:161 src/lessons/welcome/bdr/BDR2.html:143
msgid "Turn left and move one step forward"
msgstr "Vire a esquerda e mova um passo a frente"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:161
msgid "Left"
msgstr "Esquerda"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:162 src/lessons/welcome/bdr/BDR2.html:144
msgid "[!java|c]'I'[/!][!scala|python]\"I\"[/!]"
msgstr "[!java|c]'I'[/!][!scala|python]\"I\"[/!]"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:162
msgid "Turn back (U-turn) and move one step forward"
msgstr "Vire para trás (meia-volta) e mova um passo a frente"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:162
msgid "Inverse"
msgstr "Inversa"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:164 src/lessons/welcome/bdr/BDR2.html:146
msgid "[!java|c]'A'[/!][!scala|python]\"A\"[/!]"
msgstr "[!java|c]'A'[/!][!scala|python]\"A\"[/!]"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:164 src/lessons/welcome/bdr/BDR2.html:146
msgid "Move one step forward"
msgstr "Mova um passo a frente"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:164
msgid "First letter of the alphabet"
msgstr "Primeira letra do alfabeto"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:165 src/lessons/welcome/bdr/BDR2.html:147
msgid "[!java|c]'B'[/!][!scala|python]\"B\"[/!]"
msgstr "[!java|c]'B'[/!][!scala|python]\"B\"[/!]"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:165 src/lessons/welcome/bdr/BDR2.html:147
msgid "Move two steps forward"
msgstr "Mova dois passos a frente"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:165
msgid "Second letter of the alphabet"
msgstr "Segunda letra do alfabeto"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:166 src/lessons/welcome/bdr/BDR2.html:148
msgid "[!java|c]'C'[/!][!scala|python]\"C\"[/!]"
msgstr "[!java|c]'C'[/!][!scala|python]\"C\"[/!]"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:166 src/lessons/welcome/bdr/BDR2.html:148
msgid "Move three steps forward"
msgstr "Mova três passos a frente"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:166
msgid "Third letter of the alphabet"
msgstr "Terceira letra do alfabeto"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:168 src/lessons/welcome/bdr/BDR2.html:153
msgid "[!java|c]'Z'[/!][!scala|python]\"Z\"[/!]"
msgstr "[!java|c]'Z'[/!][!scala|python]\"Z\"[/!]"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:168 src/lessons/welcome/bdr/BDR2.html:153
msgid "Move one step backward"
msgstr "Mova um passo para trás"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:168
msgid "One letter before the end of the alphabet"
msgstr "última letra do alfabeto"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:169 src/lessons/welcome/bdr/BDR2.html:154
msgid "[!java|c]'Y'[/!][!scala|python]\"Y\"[/!]"
msgstr "[!java|c]'Y'[/!][!scala|python]\"Y\"[/!]"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:169 src/lessons/welcome/bdr/BDR2.html:154
msgid "Move two steps backward"
msgstr "Mova dois passos para trás"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:169
msgid "Two letters before the end of the alphabet"
msgstr "penúltima letra do alfabeto"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:170 src/lessons/welcome/bdr/BDR2.html:155
msgid "[!java|c]'X'[/!][!scala|python]\"X\"[/!]"
msgstr "[!java|c]'X'[/!][!scala|python]\"X\"[/!]"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:170 src/lessons/welcome/bdr/BDR2.html:155
msgid "Move three steps backward"
msgstr "Mova três passos para trás"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:170
msgid "Three letters before the end of the alphabet"
msgstr "Antepenúltima letra do alfabeto"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:171 src/lessons/welcome/bdr/BDR2.html:159
msgid "<i>(anything else)</i>"
msgstr "<i>(qualquer outra coisa)</i>"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR.html:171 src/lessons/welcome/bdr/BDR2.html:159
msgid "Stop dancing."
msgstr "Parar de dançar."

#. type: Content of: <h3>
#: src/lessons/welcome/bdr/BDR.html:174
msgid "Indications"
msgstr "Indicações"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bdr/BDR.html:176
msgid ""
"This exercise may seem a bit complex at the first glance, but it comes down "
"to summarizing the information of the table in a sequence of conditionals."
msgstr ""
"Este exercício pode parecer um pouco complexo à primeira vista, mas ele vem "
"para resumir a informação na tabela numa sequência de condicionais."

#. type: Content of: <p>
#: src/lessons/welcome/bdr/BDR.html:179
msgid ""
"You have to keep dancing as long as there is some dancing steps to do, i.e., "
"as long as we are in a cell which content is described in the table.  The "
"easier for that is to use a boolean variable (<code>finished</code>)  as "
"termination condition to a <code>while</code> loop.  It should be "
"initialized to <code>[!c]0[/!][!java|scala]false[/!][!python]False[/!]</"
"code>, and switched to <code>[!c]1[/!][!java|scala]true[/!][!"
"python]True[/!]</code> as soon as the buggle find a cell with a value not "
"described in the table.  Thus, the loop will stop and the program will "
"terminate."
msgstr ""
"Você tem que se manter dançando enquanto houverem passos de dança para "
"fazer, i.e., enquanto estivermos numa célula cujo conteúdo esteja contido na "
"tabela. a forma mais fácil de fazer isto é usando uma variável booleana "
"(<code>terminou</code>) como condição de término para o loop <code>while</"
"code>. Ela deve ser iniciada como <code>[!c]0[/!][!java|scala]false[/!][!"
"python]False[/!]</code>, e trocada para <code>[!c]1[/!][!java|scala]true[/!]"
"[!python]True[/!]</code> assim que o buggle encontre uma célula com um valor "
"não descrito na tabela. Assim, o loop pára e o programa termina."

#. type: Content of: <p>
#: src/lessons/welcome/bdr/BDR.html:189
msgid ""
"Another subtlety is that detecting if strings are equals is a bit annoying "
"in [!thelang].  So, we use the <code>char getIndication[!c]Bdr[/!]()</code> "
"instead of <code>[!java]String[/!][!c]char*[/!] readMessage()</code>.  This "
"method, only known by the buggles of this exercise, returns the first char "
"of the message written on the ground (or ' ' -- the space char -- if nothing "
"is written down). It enables to work with chars instead of strings, that is "
"much simpler in [!thelang]."
msgstr ""
"Outro detalhe é que detectar se strings são iguais é um pouco chato em Java. "
"Então, usamos o <code>char getIndication[!c]Bdr[/!]()</code> ao invés do "
"<code>[!java]String[/!][!c]char*[/!] lerMensagem()</code>. Este método, "
"conhecido apenas pelos buggles deste exercício, retorna o primeiro caractere "
"da mensagem escrita no chão (ou ' ' -- o caractere para espaço -- se não tem "
"nada escrito). Ele habilita que se trabalhe com caracteres ao invés de "
"strings, que é muito mais simples em [!thelang]."

#. type: Content of: <h3>
#: src/lessons/welcome/bdr/BDR.html:197
msgid "Tips and Hints"
msgstr "Dicas"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bdr/BDR.html:199
msgid ""
"If you fail to understand why the buggle does not execute the expected "
"steps, try adding <code>brushDown()</code> in your method. This asks the "
"buggle to put down a brush leaving a trail when it moves. It should help you "
"understanding its trajectory, but do not forget to remove this call when you "
"want to test whether your code is a valid solution to the exercise: you are "
"asked to let the buggle dance, not to vandalize the dance floor."
msgstr ""
"Se você não entendeu por que o buggle não fez os passos esperados, tente "
"adicionar <code>abaixarPincel()</code> no seu método. Isto pede ao buggle "
"para abaixar um pincel deixando um rastro por onde passar. Isto pode ajudar "
"você a entender a trajetória dele, mas não esqueça de remover esta chamada "
"quando você quiser testar se seu código é uma solução válida para o "
"exercício: você pode fazer o buggle dançar, mas não pichar a pista de dança."

#. type: Content of: <p>
#: src/lessons/welcome/bdr/BDR.html:206
msgid "When your program finally works, move on to the next exercise."
msgstr "Quando seu programa finalmente funcionar, vá para o próximo exercício."

#. type: Content of: <h2>
#: src/lessons/welcome/bdr/BDR2.html:2
msgid "Buggle Dance Revolution 2 (BDR2)"
msgstr "Buggle Dance Revolution 2 (BDR2)"

#. type: Content of: <p>
#: src/lessons/welcome/bdr/BDR2.html:5
msgid ""
"BDR is cool, but it's a bit chaotic. First, the buggles giggle in any "
"directions, and then the code you had to write to let them move is rather "
"difficult to read. Here is a new BDR world where the buggle will dance a "
"gentle circle. We will benefit this tranquillity to clean up a bit our code "
"thanks to the new constructs we will introduce."
msgstr ""
"BDR é legal, mas um pouco caótico. Primeiro, os buggles balançam em todas as "
"direções, o que faz com que o código que você tenha que escrever para fazê-"
"los se mover seja um pouco difícil de ler. Apresentamos agora um novo mundo "
"DBR onde os buggles dançam num suave círculo. Vamos aproveitar esta "
"tranquilidade para limpar um pouco nosso código graças a novas construções "
"que vamos introduzir."

#. type: Content of: <h3>
#: src/lessons/welcome/bdr/BDR2.html:11
msgid ""
"[!java|c]<code>switch</code> conditionals[/!][!scala]Pattern matching[/!]"
msgstr ""
"[!java|c]condicionais <code>switch</code>[/!][!scala]busca de padrões[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/bdr/BDR2.html:13
msgid ""
"The hardest part of previous code is certainly the conditional cascading. "
"Somewhere in your code, you certainly had something similar to:"
msgstr ""
"A parte mais difícil do código anterior é comn certeza a cascata de "
"condicionais. Em algum ponto do seu código, você certamente tem algo como "
"isto:"

#. type: Content of: <pre>
#: src/lessons/welcome/bdr/BDR2.html:16
#, no-wrap
msgid ""
"if ([!java|c]getIndication() == 'R'[/!][!scala]readMessage() == \"R\"[/!]) {\n"
"  right();\n"
"  [!c]stepForward()[/!][!java|scala]forward()[/!];\n"
"} else if ([!java|c]getIndication() == 'L'[/!][!scala]readMessage() == \"L\"[/!]) {\n"
"  left();\n"
"  [!c]stepForward()[/!][!java|scala]forward()[/!];\n"
"} else if ([!java|c]getIndication() == 'I'[/!][!scala]readMessage() == \"I\"[/!]) {\n"
"  back();\n"
"  [!c]stepForward()[/!][!java|scala]forward()[/!];\n"
"<span class=\"comment\">/* other else if */</span>\n"
"} else {\n"
"  finished = [!c]1[/!][!java|scala]true[/!];\n"
"}\n"
msgstr ""
"if ([!java|c]getIndicação() == 'R'[/!][!scala]lerMensagem() == \"R\"[/!]) {\n"
"  direita();\n"
"  [!c]avançarUmPasso()[/!][!java|scala]avançar()[/!];\n"
"} else if ([!java|c]getIndicação() == 'L'[/!][!scala]lerMensagem() == \"L\"[/!]) {\n"
"  esquerda();\n"
"  [!c]avançarUmPasso()[/!][!java|scala]avançar()[/!];\n"
"} else if ([!java|c]getIndicação() == 'I'[/!][!scala]lerMensagem() == \"I\"[/!]) {\n"
"  voltar();\n"
"  [!c]avançarUmPasso()[/!][!java|scala]avançar()[/!];\n"
"<span class=\"comment\">/* other else if */</span>\n"
"} else {\n"
"  terminou = [!c]1[/!][!java|scala]true[/!];\n"
"}\n"

#. type: Content of: <p>
#: src/lessons/welcome/bdr/BDR2.html:31
msgid ""
"When you review this code, it may not be clear at the first glance that it "
"is simply a choice with 4 branches depending on the value of [!java|"
"c]getIndication()[/!][!scala]readMessage()[/!].  To improve this, we will "
"use a [!java|c]<code>switch</code> construct, which Java syntax is the "
"following:[/!] [!scala] pattern matching, which is a very powerful construct "
"that greatly generalizes the <code>if</code>. It is arguably one of the "
"major advantages of Scala when compared to languages such as Java or "
"python.  It is not new either, as other languages such as OCaml or Haskell "
"offer this feature since long, but still.  It's really cool![/!]"
msgstr ""
"Quando você revisa este código, não fica claro à primeira vista que ele é "
"simplesmente a escolha entre quatro ramos dependendo do valor de [!java|"
"c]getIndicação()[/!][!scala]lerMensagem()[/!]. Para melhorar ele, vamos usar "
"uma construção [!java|c]<code>switch</code>, que na sintaxe de Java é o "
"seguinte:[/!] [!scala] de busca de padrões, que é bastante poderosa e "
"generaliza muito o <code>if</code>. É com certeza uma das maiores vantagens "
"de Scala quando comparada com linguagens como Java ou python. E nem é tão "
"nova assim, já que outras linguagens como OCaml e Haskell já tem esta "
"funcionalidade a muito tempo. Ela é bem legal![/!]"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bdr/BDR2.html:40
msgid "[/!] [!java|c]"
msgstr "[/!] [!java|c]"

#. type: Content of: <pre>
#: src/lessons/welcome/bdr/BDR2.html:44
#, no-wrap
msgid ""
"switch (<b>expression</b>) {\n"
"  case <b>firstValue</b>: \n"
"    <b>whatToDoIfExpressionEqualsFirstValue();</b>\n"
"    break;\n"
"  case <b>secondValue</b>: \n"
"    <b>whatToDoIfExpressionEqualsSecondValue();</b>\n"
"    break;\n"
"  case <b>thirdValue</b>: \n"
"    <b>whatToDoIfExpressionEqualsThirdValue();</b>\n"
"    break;\n"
"    /* as much similar cases as you want */\n"
"  default: \n"
"    <b>whatToDoIfExpressionDoesNotEqualsAnySeenValues();</b>\n"
"}"
msgstr ""
"switch (<b>expression</b>) {\n"
"  case <b>firstValue</b>: \n"
"    <b>whatToDoIfExpressionEqualsFirstValue();</b>\n"
"    break;\n"
"  case <b>secondValue</b>: \n"
"    <b>whatToDoIfExpressionEqualsSecondValue();</b>\n"
"    break;\n"
"  case <b>thirdValue</b>: \n"
"    <b>whatToDoIfExpressionEqualsThirdValue();</b>\n"
"    break;\n"
"    /* as much similar cases as you want */\n"
"  default: \n"
"    <b>whatToDoIfExpressionDoesNotEqualsAnySeenValues();</b>\n"
"}"

#. type: Content of: <p>
#: src/lessons/welcome/bdr/BDR2.html:59
msgid ""
"Observe that each branch of a <tt>switch</tt> must be ended by a "
"<code>break</code>. If you forget this, the machine keeps going and execute "
"the next branch in the list after the branch it jumped to. There is even "
"some <b>rare</b> cases where this behavior reveals helpful."
msgstr ""
"Observe que cada ramo de um <tt>switch</tt> deve terminar com um "
"<code>break</code>. se você esquecer dele, a máquina continua e executa o "
"próximo ramo na lista depois do ramo para o qual ele pulou. Existem na "
"verdade uns <b>raros</b> casos onde este comportamento é útil."

#. type: Content of: <p>
#: src/lessons/welcome/bdr/BDR2.html:64
msgid ""
"It is then possible to rewrite previous BDR code in a cleaner way using the "
"<tt>switch</tt> construct:"
msgstr ""
"É então possível reescrever o código do BDR anterior numa forma mais clara "
"usando a construção <tt>switch</tt>:"

#. type: Content of: <pre>
#: src/lessons/welcome/bdr/BDR2.html:67
#, no-wrap
msgid ""
"switch (getIndication()) {\n"
"  case 'R':\n"
"    right(); \n"
"    [!c]stepForward()[/!][!java]forward()[/!]; \n"
"    break;\n"
"  case 'L':\n"
"    left();\n"
"    [!c]stepForward()[/!][!java]forward()[/!]; \n"
"    break;\n"
"  case 'I':\n"
"    back();\n"
"    [!c]stepForward()[/!][!java]forward()[/!];\n"
"    break;\n"
"  default: \n"
"    return;\n"
"}"
msgstr ""
"switch (getIndicação()) {\n"
"  case 'R':\n"
"    direita(); \n"
"    [!c]avançarUmPasso()[/!][!java]avançar()[/!]; \n"
"    break;\n"
"  case 'L':\n"
"    esquerda();\n"
"    [!c]avançarUmPasso()[/!][!java]avançar()[/!]; \n"
"    break;\n"
"  case 'I':\n"
"    voltar();\n"
"    [!c]avançarUmPasso()[/!][!java]avançar()[/!];\n"
"    break;\n"
"  default: \n"
"    return;\n"
"}"

#. type: Content of: <pre>
#: src/lessons/welcome/bdr/BDR2.html:85
#, no-wrap
msgid ""
"<i>expression</i> <b>match</b> {\n"
"  <b>case</b> <i>possible value</i> <b>=></b> instructions\n"
"  <b>case</b> <i>other value</i>     <b>=></b> other instructions\n"
"  <b>case</b> <i>another value</i> <b>=></b> yet another instructions\n"
"  <b>case _                 =></b> default instructions\n"
"}\n"
msgstr ""
"<i>expressão</i> <b>match</b> {\n"
"  <b>case</b> <i>um valor possível</i> <b>=></b> instruções\n"
"  <b>case</b> <i>um outro valor</i>     <b>=></b> outras instruções\n"
"  <b>case</b> <i>mais outro valor</i> <b>=></b> e outras instruções\n"
"  <b>case _                 =></b> instruções padrão\n"
"}\n"

#. type: Content of: <p>
#: src/lessons/welcome/bdr/BDR2.html:92
msgid ""
"The expression provided before the keyword <code>match</code>, and then the "
"branches are evaluated one after the other until we find one which value "
"provided between <code>case</code> and <code>=&gt</code> is equal to the "
"expression's value.  The <code>_</code> symbol acts as a wildcard, so the "
"<code>_</code> branch <i>always</i> matches.  Here is an example where a "
"variable <code>name</code> is matched."
msgstr ""
"A espressão fornecida antes da palavra-chave <code>match</code>, e os ramos "
"seguintes são avaliados um após o outro até encontrarmos um cujo valor "
"fornecido entre <code>case</code> e <code>=&gt</code> seja igual ao valor da "
"expressão. O símbolo <code>_</code> age como um coringa, logo o ramo "
"<code>_</code> <i>sempre</i> casa. Aqui está um exemplo de onde uma variável "
"<code>name</code> casa."

#. type: Content of: <pre>
#: src/lessons/welcome/bdr/BDR2.html:97
#, no-wrap
msgid ""
"name match {\n"
"  case \"Martin\" => println(\"Hello Martin, how are you?\")\n"
"  case \"Gerald\" => println(\"Hey Gerald! How are you doing?\")\n"
"  case _            => println(\"Welcome stranger.\")\n"
"}"
msgstr ""
"name match {\n"
"  case \"Martin\" => println(\"Oi Martin, como vai?\")\n"
"  case \"Gerald\" => println(\"Oi Gerald! como vai você?\")\n"
"  case _            => println(\"Olá estranho.\")\n"
"}"

#. type: Content of: <p>
#: src/lessons/welcome/bdr/BDR2.html:103
msgid ""
"It is possible to have more than one instruction per branch, and merge "
"branches when the values are separated by a | symbol."
msgstr ""
"é possível ter mais que uma instrução por ramo, e mesclar ramos quando os "
"valores são separados por um símbolo | ."

#. type: Content of: <pre>
#: src/lessons/welcome/bdr/BDR2.html:105
#, no-wrap
msgid ""
"name match {\n"
"  case \"Martin\" | \"Gerald\" => println(\"Hello \"+name+\", how are you?\"); openTheDoor()\n"
"  case _                            => println(\"Hello stranger. Please do not pass.\"); lockTheDoor()\n"
"}"
msgstr ""
"name match {\n"
"  case \"Martin\" | \"Gerald\" => println(\"Oi \"+name+\", como vai?\"); openTheDoor()\n"
"  case _                            => println(\"Oi estranho. Favor não passar.\"); lockTheDoor()\n"
"}"

#. type: Content of: <p>
#: src/lessons/welcome/bdr/BDR2.html:110
msgid ""
"You can even add guards to your branches. These are extra conditions that "
"must be respected for the branch to get applied. This is handy if you want "
"match on value ranges, as follows."
msgstr ""
"Você sempre pode adicionar guardas aos seus ramos. Estes são condições extra "
"que devem ser respeitadas para que o ramo seja feito. São úteis se você "
"quiser casar em intervalos de valores, como segue."

#. type: Content of: <pre>
#: src/lessons/welcome/bdr/BDR2.html:112
#, no-wrap
msgid ""
"age match {\n"
"  case i if i&lt;10 => println(\"Hey kid!\")\n"
"  case i if i&lt;20 => println(\"Hey dude!\")\n"
"  case i if i&lt;30 => println(\"Hello young man\")\n"
"  case _           => println(\"Hello Sir\")\n"
"}"
msgstr ""
"age match {\n"
"  case i if i&lt;10 => println(\"Oi menino!\")\n"
"  case i if i&lt;20 => println(\"Oi cara!\")\n"
"  case i if i&lt;30 => println(\"Oi, meu caro\")\n"
"  case _           => println(\"Oi senhor\")\n"
"}"

#. type: Content of: <p>
#: src/lessons/welcome/bdr/BDR2.html:118
msgid ""
"Note that there is no need to check whether the value is higher than 10 on "
"the second line because the first matching branch is used. So, if the second "
"branch gets evaluated, then the first one did not match."
msgstr ""
"Observe que não há necessidade de verificar se o valor é maior que 10 na "
"segunda linha por que o primeiro ramo \"foi verificado\". Então, se o "
"segundo ramo está sendo verificado, o primeiro não aprovou."

#. type: Content of: <p>
#: src/lessons/welcome/bdr/BDR2.html:121
msgid "Finally, it is possible also to match several variables in one shoot!"
msgstr "Finalmente, é possível também aprovar várias variáveis de uma vez!"

#. type: Content of: <pre>
#: src/lessons/welcome/bdr/BDR2.html:122
#, no-wrap
msgid ""
"(x,y) match {\n"
" case (0,0) => println(\"that's the origin\")\n"
" case (_,0) => println(\"On the ordinate\")\n"
" case (0,_) => println(\"On the abscissa\")\n"
" case (_,_) => println(\"Some random point\")\n"
"}"
msgstr ""
"(x,y) match {\n"
" case (0,0) => println(\"Esta é a origem\")\n"
" case (_,0) => println(\"nas ordenadas\")\n"
" case (0,_) => println(\"nas abscissas\")\n"
" case (_,_) => println(\"algum ponto qualquer\")\n"
"}"

#. type: Content of: <p>
#: src/lessons/welcome/bdr/BDR2.html:129
msgid ""
"I told you that scala's pattern matching is very powerful! I actually love "
"this feature!"
msgstr ""
"Eu disse que reconhecimentod e padrões em scala é muito poderoso! Eu adoro "
"esta funcionalidade!"

#. type: Content of: <p>
#: src/lessons/welcome/bdr/BDR2.html:133
msgid ""
"[!java|scala|c]Apply the improvement we just saw to rewrite your buggle code "
"with the following dance steps. [/!] [!python]Let's teach a new dance step "
"to the buggles. It is slightly more complex but actually better looking. "
"Beside of that, that's the same old story.[/!] Note that we can now move up "
"to 6 cells in one dance step."
msgstr ""
"[!java|scala|c]\"Aplique\" a melhoria que acabamos de ver para reescrever "
"seu código do buggle com os seguintes passos de dança. [/!] [!python]Vamos "
"ensinar um novo passo de dança para os buggles. É um pouco mais complexo mas "
"na verdade vai ficar mais legal. Apesar disto, é a mesma história de sempre."
"[/!] Observe que nósagora vamos subir seis células em um passo de dança."

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR2.html:144
msgid "Turn back and move one step forward"
msgstr "Vire e dê um passo para frente"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR2.html:149
msgid "[!java|c]'D'[/!][!scala|python]\"D\"[/!]"
msgstr "[!java|c]'D'[/!][!scala|python]\"D\"[/!]"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR2.html:149
msgid "Move four cells forward"
msgstr "Mova quantro passos para frente"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR2.html:150
msgid "[!java|c]'E'[/!][!scala|python]\"E\"[/!]"
msgstr "[!java|c]'E'[/!][!scala|python]\"E\"[/!]"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR2.html:150
msgid "Move five cells forward"
msgstr "Mova cinco passos para frente"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR2.html:151
msgid "[!java|c]'F'[/!][!scala|python]\"F\"[/!]"
msgstr "[!java|c]'F'[/!][!scala|python]\"F\"[/!]"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR2.html:151
msgid "Move six cells forward"
msgstr "Mova seis passos para frente"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR2.html:156
msgid "[!java|c]'W'[/!][!scala|python]\"W\"[/!]"
msgstr "[!java|c]'W'[/!][!scala|python]\"W\"[/!]"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR2.html:156
msgid "Move four cells backward"
msgstr "Mova quatro passos para trás"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR2.html:157
msgid "[!java|c]'V'[/!][!scala|python]\"V\"[/!]"
msgstr "[!java|c]'V'[/!][!scala|python]\"V\"[/!]"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR2.html:157
msgid "Move five cells backward"
msgstr "Mova cinco passos para trás"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR2.html:158
msgid "[!java|c]'U'[/!][!scala|python]\"U\"[/!]"
msgstr "[!java|c]'U'[/!][!scala|python]\"U\"[/!]"

#. type: Content of: <table><tr><td>
#: src/lessons/welcome/bdr/BDR2.html:158
msgid "Move six cells backward"
msgstr "Mova seis passos para trás"

#. type: Content of: <p>
#: src/lessons/welcome/bdr/BDR2.html:163
msgid "When you program works again, proceed to next exercise."
msgstr "Quando seu programa funcionar de novo, vá para o próximo exercício."

#. type: Content of: <p>
#: src/lessons/welcome/traversal/Snake.html:4
msgid ""
"We will now teach the buggle to explore its world. Its initial position is "
"the bottom left corner, and it should visit any cells up to the top "
"(coloring the ground on its path. The main loop of your code is something "
"like:"
msgstr ""
"Agora vamos ensinar o buggle a explorar seu mundo. Sua posição inicial é o "
"canto inferior esquerdo, e ele deve visitar todas as células até o topo "
"(colorindo o chão onde for passando. O loop principal de seu código é algo "
"assim:"

#. type: Content of: <pre>
#: src/lessons/welcome/traversal/Snake.html:8
#, no-wrap
msgid ""
" move brush down\n"
" while we did not reach the final position\n"
"   move like a snake\n"
msgstr ""
" abaixe o pincel\n"
" enquanto não chegar na posição final\n"
"   se mova como uma cobra\n"

#. type: Content of: <p>
#: src/lessons/welcome/traversal/Snake.html:13
msgid ""
"We thus have to write two specific methods: The first one returns a boolean "
"indicating whether we are on a final position while the second moves one "
"snake step forward."
msgstr ""
"Então nós temos que escrever dois métodos específicos: o primeiro retorna um "
"booleano indicando se nós estamos numa posição final enquanto o segundo um "
"\"snake step\" para frente."

#. type: Content of: <p>
#: src/lessons/welcome/traversal/Snake.html:17
msgid "We reached the final position if and only if both conditions are true:"
msgstr ""
"Chegamos na posição final se e apenas se ambas as condições são verdadeiras:"

#. type: Content of: <ul><li>
#: src/lessons/welcome/traversal/Snake.html:19
msgid "We are facing a wall"
msgstr "Estamos de frente para uma parede"

#. type: Content of: <ul><li>
#: src/lessons/welcome/traversal/Snake.html:20
msgid ""
"There is a wall on the north of the buggle. So, if the buggle is facing "
"east, you should check whether there is a wall on the left, and if the "
"buggle is facing west, you should check on the right side."
msgstr ""
"Existe uma parede no norte do buggle. Então, se o buggle está olhando para o "
"leste, você deve verificar se existe uma parede à esquerda, e se o buggle "
"está olhando para o oeste, você deve verificar do lado direito."

#. type: Content of: <ul><li>
#: src/lessons/welcome/traversal/Snake.html:23
msgid ""
"We can get the current heading of the buggle using the <code>getDirection()</"
"code>, and we know whether it looks east using <code>getDirection() == [!"
"scala|python|java]Direction.[/!]EAST</code> (WEST for west)."
msgstr ""
"Nós podemos obter a direção atual do buggle usando o <code>getDireção()</"
"code>, e nós sabemos se ele está apontando para o leste usando "
"<code>getDireção() == [!scala|python|java]Direção.[/!]LESTE</code> (OESTE "
"para oeste)."

#. type: Content of: <ul><li>
#: src/lessons/welcome/traversal/Snake.html:26
msgid ""
"To check, nothing magical: you have to turn the buggle and check whether it "
"is facing a wall afterward."
msgstr ""
"Para verificar, não tem mágica: você tem que virar o buggle e verificar em "
"seguinda se ele está olhando para uma parede."

#. type: Content of: <p>
#: src/lessons/welcome/traversal/Snake.html:29
msgid ""
"Then, a snake step can be achieved by moving one step forward if we are not "
"facing a wall, and moving to the upper line else (i.e., if you look to the "
"west facing a wall, you have to turn right, forward and turn right)."
msgstr ""
"Então, um passo de cobra pode ser conseguido movendo um passo para a frente "
"se nós não estivermos de cara para a parede, e movendo para a linha acima "
"caso contrário (i.e., se você olha para o oeste e está de cara para uma "
"parede, tem que virar a direita, andar e virar a direita)."

#. type: Content of: <p>
#: src/lessons/welcome/traversal/Snake.html:33
msgid ""
"Hint: the main loop of your code must continue while the testing function "
"returns false. There is two ways of writing it:"
msgstr ""
"Dica: o loop principal do seu código deve continuar enquanto a função de "
"teste retorna falso. Existem duas formas de fazer isto:"

#. type: Content of: <pre>
#: src/lessons/welcome/traversal/Snake.html:35
#, no-wrap
msgid "while (testingFunction() == [!c]0) {[/!][!java|scala]false) {[/!][!python]False):[/!]"
msgstr "while (testingFunction() == [!c]0) {[/!][!java|scala]false) {[/!][!python]False):[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/traversal/Snake.html:36
msgid ""
"[!python]You may prefer to write it as:[/!] [!java|scala|c]Since the "
"exclamation mark (!) denotes the boolean negation in [!thelang], you may "
"write it as:[/!]"
msgstr ""
"[!python]Você pode preferir escrever como:[/!] [!java|scala|c]Já que a marca "
"de exclamação (!) denota a negação booleana em [!thelang], você pode "
"escrever como:[/!]"

#. type: Content of: <pre>
#: src/lessons/welcome/traversal/Snake.html:38
#, no-wrap
msgid "while ([!java|scala|c]![/!][!python]not [/!]testingFunction())[!java|scala|c] {[/!][!python]:[/!]"
msgstr "while ([!java|scala|c]![/!][!python]not [/!]testingFunction())[!java|scala|c] {[/!][!python]:[/!]"

#. type: Content of: <p>
#: src/lessons/welcome/traversal/column/TraversalByColumn.html:4
msgid ""
"The goal of this serie of exercises is to let the buggle traverse its world. "
"It must number the cells it walks on to show its traversal order."
msgstr ""
"O objetivo desta série de exercícios é fazer o buggle percorrer seu mundo. "
"Ele deve numerar as células por onde passa para mostrar a ordem do caminho."

#. type: Content of: <p>
#: src/lessons/welcome/traversal/column/TraversalByColumn.html:7
msgid "The main loop of your code should be something like:"
msgstr "O loop principal de seu código deve ser algo como:"

#. type: Content of: <pre>
#: src/lessons/welcome/traversal/column/TraversalByColumn.html:9
#, no-wrap
msgid ""
" while we are not on the final position\n"
"   go to the next position\n"
"   label the cell with its number\n"
msgstr ""
" enquanto não estiver na posição final\n"
"   vá para a próxima posição\n"
"   rotule a célula com um número\n"

#. type: Content of: <p>
#: src/lessons/welcome/traversal/column/TraversalByColumn.html:14
msgid ""
"In contrary to the exercises we saw so far, we won't use the "
"<code>forward()</code>, <code>backward()</code> and similar methods. "
"Instead, we will compute the coordinate of the next buggle position and use "
"the <code>setPos(x, y)</code> method to <i>teleport</i> the buggle directly "
"to this position. For example, <code>setPos(3, 5)</code> teleports the "
"buggle to the cell where x=3 and y=5."
msgstr ""
"Ao contrário dos exercícios que vimos até agora, não vamos usar os métodos "
"<code>avançar()</code>, <code>recuar()</code> e similares. Ao invés disto, "
"vamos calcular as coordenadas da próxima posição de buggle e usar o método "
"<code>setPos(x, y)</code> para <i>teletransportar</i> o buggle diretamente "
"para esta posição. Por exemplo, <code>setPos(3, 5)</code> teletransporta o "
"buggle para a célula onde x=3 e y=5."

#. type: Content of: <p>
#: src/lessons/welcome/traversal/column/TraversalByColumn.html:21
msgid ""
"Your first task is thus to write a boolean function indicating whether the "
"buggle reached the final position or not, ie if it reached the bottom right "
"corner of the world. For this, you can use <code>getWorldWidth()</code> and "
"<code>getWorldHeight()</code> which return respectively the world's width "
"and height. Your test is about comparing the buggle's current position (that "
"you can access with <code>getX()</code> and <code>getY()</code>) to the "
"world dimensions."
msgstr ""
"Sua primeira tarefa é escrever uma função booleana indicando se o buggle "
"alcançou a posição final ou não, ou seja se ele alcançou o canto inferior "
"direito do mundo. Para isto, você pode usar <code>getLarguraDoMundo()</code> "
"e <code>getAlturaDoMundo()</code> que retornam respectivamente a largura e "
"altura do mundo. Seu teste deve comparar a posição atual do buggle (que você "
"pode acessar com <code>getX()</code> e <code>getY()</code>) com as dimensões "
"do mundo."

#. type: Content of: <p>
#: src/lessons/welcome/traversal/column/TraversalByColumn.html:28
msgid ""
"Beware, the first line and column are numbered 0 and not 1, and the point "
"(0,0)  is on the top left corner. This may seem surprising, but it is very "
"often so in Computer Science."
msgstr ""
"Cuidado, a primeira linha e coluna são numeradas com 0 e não com 1, e o "
"ponto (0,0) fica no canto superior esquerdo. Isto pode parecer estranho, mas "
"é bem comum em ciência da computação."

#. type: Content of: <p>
#: src/lessons/welcome/traversal/column/TraversalByColumn.html:32
msgid ""
"Then, you have to write the code to reach the next position. In this "
"exercise, you have to traverse the world row after row. So, if you are at "
"the bottom of a row, you have to move to the top of next row. Else, you have "
"to move to the cell below."
msgstr ""
"Então, você tem que escrever o código para alcançar a próxima posição. Neste "
"exercício, você tem que percorrer o mundo linha após linha. Logo, se você "
"está no fundo de uma linha, você tem que se mover para o topo da próxima, "
"caso contrário você tem que se mover para a célula abaixo."

#. type: Content of: <p>
#: src/lessons/welcome/traversal/column/TraversalByColumn.html:37
msgid ""
"At this point, you can launch your program to check that the buggle "
"correctly traverse the world in the expected order, and that it stops when "
"it has to. Use the <b>stop</b> button if the buggle does not stop correctly."
msgstr ""
"Neste ponto, você pode lançar seu programa para verificar se o buggle "
"percorre corretamente o mundo na ordem esperada, e que ele pára quando tem "
"que parar. Use oo botão <b>stop</b> se o buggle não parar corretamente."

#. type: Content of: <p>
#: src/lessons/welcome/traversal/column/TraversalByColumn.html:41
msgid ""
"It is now time to write down the cell numbers. For that, you will need a "
"counter initialiser to zero at the beginning of your code, and incremented "
"by one at each step (for example with <code>counter += 1;</code>).  Then, "
"you have to use <code>writeMessage()</code> to write the value on the ground."
msgstr ""
"Agora é hora de escrever os números das células. Para isto, você vai "
"precisar de um contador iniciando em zero no começo do seu código, e "
"incrementar de um em cada passo (por exemplo com <code>counter += 1;</"
"code>).  Então, você terá que usar <code>escreverMensagem()</code> para "
"escrever o valor no chão."

#. type: Content of: <p>
#: src/lessons/welcome/traversal/column/TraversalByColumn.html:47
msgid ""
"You probably need to write the first [!java|scala|c]or last [/!]value out of "
"the main loop [!java|scala|c], depending on whether you prefer to use a "
"<code>while</code> or a <code>do/while</code> one[/!]."
msgstr ""
"Você provavelmente vai precisar escrever o primeiro [!java|scala|c]ou último "
"[/!]valor fora do loop principal [!java|scala|c], dependendo se você prefere "
"usar um <code>while</code> ou um <code>do/while</code>[/!]."

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/traversal/line/TraversalByLine.html:4
msgid ""
"You once again have to let the buggle traverse the world numbering the cells "
"on its way, but the goal of this exercise is to write a line traversal. Most "
"of the code you wrote for previous exercise remains usable here. Simply, the "
"method computing the coordinates of the next buggle position has to be "
"correctly updated: if you are at the right of a line, you have to go to the "
"beginning of the next one. If not, you have to go to the right cell."
msgstr ""
"Mais uma vez você terá que deixar o buggle percorrer o mundo numerando as "
"células no caminho, mas o objetivo do exercício é escrever uma linha "
"transversal. A maioria do código que você escreveu para exercícios "
"anteriores continua útil aqui. Simplesmente, o método calculando as "
"coordenadas da próxima posição do buggle tem que ser atualizado "
"corretamente: se você estiver a direita de uma linha, você terá que ir para "
"o começo da próxima. Senão, você terá que ir para a célula da direita."

#. type: Content of: <p>
#: src/lessons/welcome/traversal/diagonal/TraversalDiagonal.html:4
msgid ""
"This time, you are asked to traverse the world one diagonal after the other. "
"Have a look at the objective world for more details on the requested "
"traversal order."
msgstr ""
"Agora é para você atravessar o mundo uma diagonal depois da outra. Dê uma "
"olhada no mundo objetivo para maiores detalhes quanto à ordem a percorrer "
"pedida."

#. type: Content of: <p>
#: src/lessons/welcome/traversal/diagonal/TraversalDiagonal.html:8
msgid ""
"You may find useful to use an integer variable <code>diag</code> storing the "
"number of the diagonal you are traversing."
msgstr ""
"Pode ser útil usar uma variável inteira <code>diag</code> guardando o número "
"da diagonal que você está atravessando."

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/traversal/zigzag/TraversalZigZag.html:4
msgid ""
"This time, you have to zigzag on the way up. Have a look at the objective "
"world for more details on the requested traversal order."
msgstr ""
"Desta vez, você vai ter que fazer um zigzag no caminho para cima. Dê uma "
"olhada no mundo objetivo para mais detalhes da ordem a percorrer pedida."

#. type: Content of: <h2>
#: src/lessons/welcome/summative/Moria.html:2
msgid "Lost in the Moria"
msgstr "Perdido em Moria"

#. type: Content of: <p>
#: src/lessons/welcome/summative/Moria.html:4
msgid ""
"You buggles got stuck in the mines of Moria! Some rocks are blocking the "
"exit, and you will have to clear your way to the exit. Well of course these "
"are only baggles and you could simply walk away, but it will be easier to "
"program the buggles so that they move those \"rocks\" than convincing them "
"to walk away without solving the problem. Dwarfs are sometimes really "
"stubborns..."
msgstr ""
"Seus buggles ficaram presos nas minas de Moria! Algumas pedras estão "
"bloqueando a saída, e você terá que limpar seu caminho para a saída. Bem, é "
"claro que são apenas baggles e você pode simplesmente sair andando, mas será "
"mais fácil programar seu buggle de forma que ele mova estas \"pedras\" do "
"que convencer seu buggle que ele pode sair andando facilmente sem resolver o "
"problema. Anões podem ser bem teimosos..."

#. type: Content of: <p>
#: src/lessons/welcome/summative/Moria.html:11
msgid ""
"So, you have to find the first baggle blocking the exit (simply walk to the "
"east until you are over a baggle), take it and move it back to the other "
"side of the tunnel (walk to the west while you are not over a baggle, and "
"then move back one step to the east and drop your baggle), and iterate until "
"you find the exit (that is, the wall to the east side). Afterward, move out "
"as in the objective world. That's only a few more steps away."
msgstr ""
"Bem, você tem que encontrar o primeiro baggle bloqueando a saída "
"(simplemente ande para o leste até que você esteja sobre um baggle), pegue "
"ele e mova para o outro lado do túnel (ande para o oeste enquanto você ainda "
"não estiver sobre um baggle, e então mova-se de volta um passo para o leste "
"e solte seu baggle), e repita até você encontrar a saída (ou seja, a parede "
"com o muro para o lado leste). Depois disto, mova-se para fora como no mundo "
"objetivo. São só mais uns passos."

#. type: Content of: <p>
#: src/lessons/welcome/summative/Moria.html:18
msgid ""
"To make things worse, you have to write a program that works for every "
"buggle, even if writing a specific program for each of them would be easier. "
"It seems that using <code>while</code> loops is the only solution to move "
"the buggles correctly."
msgstr ""
"Para piorar ainda mais as coisas, você tem que escrever um programa que "
"funcione para qualquer buggle, mesmo se escrever um programa específico para "
"cada um deles for mais fácil. Parece que usar loops <code>while</code> é a "
"única solução para mover os buggles corretamente."

#. type: Content of: <p>
#: src/lessons/welcome/summative/Moria.html:23
msgid ""
"Once you manage to escape this trap, you can move forward to the next "
"exercise.  This exercise is a bit more complex, so you can also leave it for "
"now and come back later if you don't get it right now."
msgstr ""
"Once you manage to escape this trap, you can move forward to the next "
"exercise.  This exercise is a bit more complex, so you can also leave it for "
"now and come back later if you don't get it right now."

#. type: Content of: <h3>
#: src/lessons/turmites/Main.html:2 src/lessons/turmites/short_desc.html:2
msgid "The turmites"
msgstr "Os turmites"

#. type: Content of: <p>
#: src/lessons/turmites/Main.html:4
msgid ""
"This set of activities lets you play with Langton's ants, that are 2D turing "
"machines. They constitute very simple application problems, achievable by "
"beginners, and open the door to an amazing world."
msgstr ""
"Este conjunto de atividades é para você brincar com formigas de Langton, que "
"são máquinas de Turing 2D. Elas constituem problemas bem simples, bons para "
"iniciantes, e abrem as portas para um mundo fantástico."

#. type: Content of: <p>
#: src/lessons/turmites/Main.html:8
msgid ""
"This mechanism were invented in 1986 by Chris Langton, and later generalized "
"in several ways (as we shall see in the next exercises). It was proven that "
"Turmites and Turing machines are of equal power: An ant's trajectory can be "
"used to compute any boolean circuit, and thus that an ant is capable of "
"universal computation. Put simply, any possible computation can be achieved "
"using a turmite as a computing device. Yet another subject of fascination..."
msgstr ""
"Este mecanismo foi inventado em 1986 por Chris Langton, e depois "
"generalizado em várias formas (como veremos nos próximos exercícios). Foi "
"provado que Turmites e máquinas de Turing têm o mesmo poder: Uma trajetória "
"de formiga pode ser usada para calcular qualquer circuito booleano, e logo "
"uma formiga é capaz de qualquer cálculo universal. resumindo, qualquer "
"cálculo possível pode ser alcançado usando uma turmite como dispositivo "
"computacional. Ainda outro assunto fascinante..."

#. type: Content of: <p>
#: src/lessons/turmites/Main.html:14
msgid ""
"Multicolor Langton's ants were discovered in 1995 by Propp et Al. Another "
"funny fact is that the ants which name is a list of consecutive pair of "
"identical letters (LL and RR) produce symmetric patterns. This fact was even "
"formally proved."
msgstr ""
"formigas de Langton multicoloridas foram descobertas em 1995 por Propp et "
"Al. Outro fato divertido é que as formigas cujos nomes é uma lista de pares "
"consecutivos de letras idênticas (LL e RR) produzem padrões simétricos. Este "
"fato foi até mesmo provado formalmente."

#. type: Content of: <p>
#: src/lessons/turmites/Main.html:19
msgid ""
"Check the corresponding wikipedia web page, of which this exercise is "
"inspired, for further details."
msgstr ""
"Verifique a página da wikipédia correspondente, na qual este exercício é "
"inspirado, para maiores detalhes."

#. type: Content of: <h3>
#: src/lessons/turmites/Main.html:22 src/lessons/sort/basic/Main.html:15
#: src/lessons/sort/dutchflag/Main.html:9
#: src/lessons/sort/pancake/Main.html:30
#: src/lessons/sort/baseball/Main.html:28 src/lessons/turtleart/Main.html:12
msgid "What can I do to improve this PLM universe?"
msgstr "O que eu posso fazer para melhorar este universo do PLM?"

#. type: Content of: <p>
#: src/lessons/turmites/Main.html:24 src/lessons/sort/basic/Main.html:17
#: src/lessons/sort/dutchflag/Main.html:11
#: src/lessons/sort/pancake/Main.html:32
#: src/lessons/sort/baseball/Main.html:30 src/lessons/turtleart/Main.html:14
#: src/lessons/recursion/cons/Main.html:7
msgid ""
"As usual, there are several things that could be done in the code of this "
"universe to improve it:"
msgstr ""
"Como sempre, existem várias coisas que podem ser feitas no código deste "
"universo para melhorá-lo:"

#. type: Content of: <ul><li>
#: src/lessons/turmites/Main.html:26
msgid ""
"We are probably missing some good exercises. The turmite creator exercise is "
"a bit harsh: we could introduce the patterns in a more friendly manner."
msgstr ""
"Alguns bons exercícios estão provavelmente faltando. O exercício de criador "
"de turmite é um pouco pé-duro: podemos introduzir os padrões de uma forma "
"mais amigável."

#. type: Content of: <ul><li>
#: src/lessons/turmites/Main.html:28
msgid "We may want to write an exercise on the busy beaver, maybe?"
msgstr "Quem sabe não escrevemos um exercício sobre os \"busy beavers\"?"

#. type: Content of: <p>
#: src/lessons/turmites/short_desc.html:3
msgid "Discover the Langton's ants, that are 2D turing machines."
msgstr "Descubra as formigas de Langton, que são máquinas de Turing 2D."

#. type: Content of: <p>
#: src/lessons/turmites/short_desc.html:5
msgid ""
"These activities are very simple application problems, achievable by "
"beginners, and open the door to an amazing world."
msgstr ""
"Estas atividades são problemas bem simples, bons para iniciantes, e abrema a "
"porta para um mundo fantástico."

#. type: Content of: <h2>
#: src/lessons/turmites/langton/Langton.html:2
msgid "Langton's ant"
msgstr "formiga de Langton"

#. type: Content of: <p>
#: src/lessons/turmites/langton/Langton.html:4
msgid ""
"In this exercise, you will turn your buggle into a <i>Langton's ant</i>. "
"These artificial little animals are very interesting because they are given "
"simple rules that depend only on their local environment, and after a period "
"of apparent chaotic behavior, a general pattern <i>emerges</i>."
msgstr ""
"Neste exercício, você vai transformar seu buggle numa <i>formiga de Langton</"
"i>. Estes pequenos animais artificiais são bastante interessantes por que "
"eles recebem regras simples que dependem apenas do seu ambiente local, e "
"depois de um período de aparente comportamento caótico, um padrão geral "
"<i>surge</i>."

#. type: Content of: <p>
#: src/lessons/turmites/langton/Langton.html:9
msgid ""
"The rules are absolutely trivial: to compute what the next step should be, "
"you should check the current color of the ground (using "
"<code>getGroundColor()</code>). If it's white, change it to black, turn "
"right and move forward by one cell. If the ground is currently black, change "
"it to white, turn left and move forward by one cell."
msgstr ""
"As regras são absolutamente triviais: para calcular qual o próximo passo, "
"você verifica a cor atual do chão (usando <code>getGroundColor()</code>). Se "
"for branco, mude para preto, vire à direita e mova uma célula. Se for preto "
"mude para branco, vire a esquerda e ande uma célula."

#. type: Content of: <p>
#: src/lessons/turmites/langton/Langton.html:15
msgid ""
"It's hard to come up with simpler rules isn't it? Well, let's go and code it "
"now. You have to complete the <code>step()</code> method, which encodes the "
"behavior of the ant at each step. You will probably use the "
"<code>getGroundColor()</code> method to retrieve the color of the cell on "
"which the ant is currently.  Colors of interest are simply named <code>Color."
"black</code> and <code>Color.white</code>."
msgstr ""
"Difícil encontrar regras mais simples, não é? Bem, vamos em frente codificar "
"isto agora. Você precisa completar o método <code>step()</code>, que "
"codifica o comportamento da formiga em cada passo. Você vai provavelmente "
"usar o método <code>getCorDoChão()</code> para recuperar a cor da célula na "
"qual a formiga está no momento. Cores úteis são nomeadas simplesmente de "
"<code>Cor.preto</code> e <code>Cor.branco</code>."

#. type: Content of: <p>
#: src/lessons/turmites/langton/Langton.html:22
msgid ""
"To compare colors, you cannot use the equal signs (==), because these things "
"are not scalar values but objects. Instead, you need to write something like "
"the following:"
msgstr ""
"Para comparar cores, você não pode usar o símbolo de igualdade (==), pois "
"estas coisas não são valores escalares, mas objetos. Ao invés disto, você "
"precisa escrever algo como o seguinte:"

#. type: Content of: <pre>
#: src/lessons/turmites/langton/Langton.html:25
#, no-wrap
msgid ""
"Color c /* = some initialization */;\n"
"if (c.equals(Color.black)) {\n"
"  /* that's equal */\n"
"} else {\n"
"  /* that was not equal */\n"
"}\n"
msgstr ""
"Cor c /* = alguma inicialização */;\n"
"if (c.equals(Cor.preto)) {\n"
"  /* é igual */\n"
"} else {\n"
"  /* não é igual */\n"
"}\n"

#. type: Content of: <p>
#: src/lessons/turmites/langton/Langton.html:34
msgid ""
"Changing the ground color is not difficult, but a bit long: you have to "
"change the brush color of your buggle, set the brush down (to mark the "
"current cell -- with <code>brushDown()</code>), and set the brush back up "
"(with <code>brushUp()</code>) to avoid further issues when the buggle will "
"move. You are naturally free of organizing your code the way you want, but "
"you may want to write a <code>setGroundColor(color)</code> method to "
"factorize things a bit."
msgstr ""
"mudar a cor do chão não é difícil, mas meio demorado: você tem que mudar a "
"cor do pincel de seu buggle, baixar o pincel (para marcar a célula atual -- "
"com <code>abaixarPincel()</code>), e levantar o pincel de novo (com "
"<code>levantarPincel()</code>) para evitar problemas quando o buggle se "
"mexer. Você é, naturalmente, livre para organizar seu código da forma que "
"quiser, mas você deve querer escrever um método <code>setCorDoChão(color)</"
"code> para separar um pouco as coisas."

#. type: Content of: <p>
#: src/lessons/turmites/langton/Langton.html:41
msgid ""
"As you can see from the execution of this exercise, the interest in this "
"algorithm is that after about 10000 steps of relative chaotic behavior, the "
"ant start building a regular pattern. This emergence of a regular pattern "
"from the chaos is rather fascinating, isn't it? Move on to the next exercise "
"to see more of them."
msgstr ""
"Como você pode ver da execução deste exercício, o interessante neste "
"algoritmo é que depois de uns 10000 passos de comportamento relativamente "
"caótico, a formiga começa a construir um padrão regular. O surgimento deste "
"padrão regular em meio ao caos é bastante fascinante, não acha? Mova para o "
"próximo exercício para ver mais disto."

#. type: Content of: <h2>
#: src/lessons/turmites/langtoncolors/LangtonColors.html:2
msgid "Multicolor Langton's ant"
msgstr "formiga de Langton multicolorida"

#. type: Content of: <p>
#: src/lessons/turmites/langtoncolors/LangtonColors.html:4
msgid ""
"There is several ways to extend the concept of Langton's ant. In this "
"exercise, we explore first one, using more than two colors. It remains very "
"similar to the base case: the behavior at each step still depends on the "
"ground color, but you have more than 2 possibilities. It allows to have more "
"than one kind of ant, depending on what you decide to do for each color. For "
"example, the ant LRL takes 3 colors. It turns left on the first color, right "
"on the second one and left on the third color. According to this definition, "
"the basic ant is a RL (since it turns right on white cells and left on black "
"ones)."
msgstr ""
"Existem várias formas de extender o conceito de formiga de Langton. Neste "
"exercício, vamos explorar a primeira, usando mais que duas cores. Ela se "
"mantem muito similar ao caso base: o comportamento em cada passo ainda "
"depende da cor do chão, mas você tem mais que duas possibilidades. Você pode "
"ter mais que um tipo de formiga, dependendo do que você decide fazer para "
"cada cor. Por exemplo, a formiga LRL recebe 3 cores. Ela vira a esquerda na "
"primiera cor, a direita na segunda e a esquerda na terceira. De acordo com "
"esta definição, a formiga básica é uma RL (já que ela vira a direita em "
"células brancas e a esquerda em pretas)."

#. type: Content of: <p>
#: src/lessons/turmites/langtoncolors/LangtonColors.html:13
msgid ""
"Some of these ants draw fascinating patterns (switch the world to see them): "
"LLRR build a symmetric figure resembling loosely to a ball, LRRRRRLLR draws "
"a square, LLRRRLRLRLLR draws a convoluted regular pattern after a period of "
"seemingly chaotic behavior, and RRLLLRLLLRRR seems to fill a hour glass..."
msgstr ""
"Algumas destas formigas desenham padrões fascinantes (alterne o mundo para "
"vê-los): LLRR constrói uma figura simétrica semelhante a uma bola, LRRRRRLLR "
"desenha um quadrado, LLRRRLRLRLLR desenha um padrão regular convolucionado "
"depois de um período de aparente caos, e RRLLLRLLLRRR parece preencher uma "
"ampulheta..."

#. type: Content of: <p>
#: src/lessons/turmites/langtoncolors/LangtonColors.html:18
msgid ""
"Changing your buggle into a generic Langton's ant is not very complicated, "
"although it is not completely trivial. As previously, you have to write a "
"<code>step</code> function. But this time, it receives two arrays as "
"parameters.  The first one defines the rules to follow depending on the "
"ground color while the second one gives the sequence of colors to use. For "
"example, the basic ant would have [!java]<code>{'R', 'L'}</code> and "
"<code>{Color.white, Color.black}</code>[/!] [!python]<code>['R', 'L']</code> "
"and <code>[Color.white, Color.black]</code>[/!] [!scala]<code>Array('R', "
"'L')</code> and <code>Array(Color.white, Color.black)</code>[/!] as "
"arguments."
msgstr ""
"Transformar seu buggle numa formiga de Langton genérica não é muito "
"complicado, embora não seja totalmente trivial. Como anteriormente, você tem "
"que escrever uma função <code>step</code>. Mas desta vez, ela recebe duas "
"arrays como parâmetros. A primeira define as regras para seguir dependendo "
"da cor do chão enquanto a segunda dá a sequência de cores a usar. Por "
"exemplo, a formiga básica deve ter [!java]<code>{'R', 'L'}</code> e "
"<code>{Cor.branco, Cor.preto}</code>[/!] [!python]<code>['R', 'L']</code> e "
"<code>[Cor.branco, Cor.preto]</code>[/!] [!scala]<code>Array('R', 'L')</"
"code> e <code>Array(Cor.branco, Cor.preto)</code>[/!] como argumentos."

#. type: Content of: <p>
#: src/lessons/turmites/langtoncolors/LangtonColors.html:29
msgid "At each step, you thus have to apply the following pseudo-code:"
msgstr ""
"Em cada passo, você deve então ter que aplicar o seguinte pseudo-código:"

#. type: Content of: <ul><li>
#: src/lessons/turmites/langtoncolors/LangtonColors.html:31
msgid "Find the position of the ground color in the color sequence;"
msgstr "Encontre a posição da cor do chão na sequência de cores;"

#. type: Content of: <ul><li>
#: src/lessons/turmites/langtoncolors/LangtonColors.html:32
msgid ""
"Turn left or right depending on the content of the rule array at that "
"position;"
msgstr ""
"Vire a esquerda ou direita dependendo do conteúdo da array de regras nesta "
"posição;"

#. type: Content of: <ul><li>
#: src/lessons/turmites/langtoncolors/LangtonColors.html:33
msgid ""
"Mark the current ground with the next color in the sequence (the last color "
"being followed by the first one);"
msgstr ""
"Marque o chão com a próxima cor na sequência (a cor seguinte à última é a "
"primeira);"

#. type: Content of: <ul><li>
#: src/lessons/turmites/langtoncolors/LangtonColors.html:34
msgid "Move forward by one step."
msgstr "ande um passo para frente."

#. type: Content of: <p>
#: src/lessons/turmites/langtoncolors/LangtonColors.html:37
#: src/lessons/turmites/helloturmite/HelloTurmite.html:67
msgid "You now should have enough information to succeed."
msgstr "Você agora tem informação o suficiente para conseguir."

#. type: Content of: <h2>
#: src/lessons/turmites/helloturmite/HelloTurmite.html:2
msgid "Turmites"
msgstr "Turmites"

#. type: Content of: <p>
#: src/lessons/turmites/helloturmite/HelloTurmite.html:4
msgid ""
"This exercise explores a new way to extend the concept of Langton's ant. "
"Now, the behavior of the ant not only depends on the color on the ground, "
"but also on its internal state (represented by an integer value). The idea "
"of changing the ant into such an automata naturally comes from the Turing "
"machine concept. This explains the name of these new animals, which is a "
"portemanteau of <i>Turing</i> and <i>Termite</i> (if you don't know what a "
"Turing machine is, you should run to wikipedia, because it is simply "
"impossible to be a real computer scientist before that)."
msgstr ""
"Este exercício explora uma nova forma de extender o conceito de formiga de "
"Langton. Agora, o comportamento da formiga não depende apenas da cor no "
"chão, mas também de seu estado interno (representado por um valor inteiro). "
"A ideia de transformar a formiga em um autômato vem naturalmente do conceito "
"de máquina de Turing. Isto explica o nome destes novos animais, que é um "
"amálgama de <i>Turing</i> e <i>Termite</i> (se você não sabe o que uma "
"máquina de Turing é, vá na wikipédia, por que é impossível ser um cientista "
"da computação de verdade sem conhecê-la)."

#. type: Content of: <p>
#: src/lessons/turmites/helloturmite/HelloTurmite.html:13
msgid ""
"Once again, you just have to write the <code>step()</code> method, in charge "
"of doing one turmite's step. Once again, you should first find the rank of "
"the current's cell ground color in the color sequence. But this time, the "
"<code>rule</code> data depends both on the current color and the current "
"state.  <code>rule</code> actually contains 3 information in each situation: "
"the color to write, the move to do, and the next state value. For example, [!"
"java|python]rule[1][0][/!][!scala]rule(1)(0)[/!] contains the informations "
"to use when <code>state==1</code> and <code>color==0</code>.  In other "
"worlds, you can retrieve the information relative to your current situation "
"by using <code>[!java|python]rule[state][currentColor][/!][!scala]rule(state)"
"(currentColor)[/!]</code>."
msgstr ""
"Novamente, você tem que simplesmente escrever o método <code>step()</code>, "
"encarregado de fazer o turmite dar um passo. Novamente, você deve primeiro "
"encontrar o rank da cor do chão da célula atual na sequência de cores. Mas "
"agora, os dados de <code>rule</code> (regras) dependem tanto da cor atual "
"quanto do estado atual. A <code>rule</code> na verdade contém 3 informações "
"em cada situação: a cor que a escreve, o movimento a fazer e o valor do "
"próximo estado. Por exemplo, [!java|python]rule[1][0][/!][!scala]rule(1)(0)"
"[/!] contém as informações para usar quando <code>state==1</code> e "
"<code>color==0</code>. Em outros mundos, você pode recuperar a informação "
"relativa à sua situação atual usando <code>[!java|python]rule[state]"
"[currentColor][/!][!scala]rule(state)(currentColor)[/!]</code>."

#. type: Content of: <p>
#: src/lessons/turmites/helloturmite/HelloTurmite.html:25
msgid ""
"Each such information set contains 3 values. The first one is the rank of "
"the color to write on the ground. The second is the move to do, with the "
"following notation: 0=stop, 1=noturn, 2=left, 4=u-turn, 8=right. Note that "
"if the command is stop, you shouldn't even move forward on that step (but "
"you shouldn't stop your program either: the next steps can do something else "
"in a future state). Finally, the third integer is the next <code>state</"
"code> value to go into after this iteration."
msgstr ""
"Cada um destes conjuntos de informações contém 3 valores. O primeiro é o "
"rank da cor para escrever no chão. O segundo é o movimento para fazer, com a "
"seguinte notação: 0=stop, 1=noturn, 2=left, 4=u-turn, 8=right. Observe que "
"se o comando é stop, você não pode se mover nem para a frente neste passo "
"(mas você não pode parar o programa também: os próximos passos podem fazer "
"algo mais num estado futuro). Finalmente, o terceiro inteiro é o próximo "
"valor do <code>state</code> a ir dentro da próxima iteração."

#. type: Content of: <p>
#: src/lessons/turmites/helloturmite/HelloTurmite.html:32
msgid ""
"Since these arbitrary notations are somehow difficult to remember, you "
"should define a set of constants that you should use instead of the direct "
"numerical values.  Their names could be NOTURN, LEFT, RIGHT and so on.  [!"
"scala]Just declare them using the keyword <code>val</code> instead of "
"<code>var</code>.  You should always use <code>val</code> instead of "
"<code>var</code> when possible anyway.[/!] [!java]The modifiers <code>final "
"static</code> before their type is the way to mark variables as constant in "
"Java.  You should write for example <code>static final int NOTURN=1;</code> "
"Sorry for the complexity of this notation. [/!] [!python]By convention, such "
"constant variables are written in upper case in python.  Technically, you "
"can still modify them, but that would be a very bad idea.[/!] You should "
"write them out of any method so that they are globally visible."
msgstr ""
"Uma vez que estas notações arbitrárias são de certa forma difíceis de "
"lembrar, você deve definir um conjunto de constantes que você deve usar no "
"lugar dos valores numéricos diretos. Seus nomes podem ser NOTURN, LEFT, "
"RIGHT etc. [!scala]Simplesmente declare elas usando keyword <code>val</code> "
"no lugar de <code>var</code>.  Você deve sempre usar <code>val</code> no "
"lugar de <code>var</code> quando possível de qualquer forma.[/!] [!java]Os "
"modificadores <code>final static</code> antes do seu tipo é a forma de "
"marcar variáveis como constantes em Java. Você deve escrever, por exemplo, "
"<code>static final int NOTURN=1;</code> Desculpe pela complesxidade desta "
"notação. [/!] [!python]Por convenção, tais variáveis constantes são escritas "
"em maiúsculas no python.  Tecnicamente, você ainda pode modificá-las, mas "
"isto é uma má ideia.[/!] Você deve escrevê-las fora de qualquer método para "
"que elas se tornem visíveis globalmente."

#. type: Content of: <p>
#: src/lessons/turmites/helloturmite/HelloTurmite.html:44
msgid ""
"Using such constants greatly help making the code easier to read. Compare "
"the next two code chunks:"
msgstr ""
"Usar tais constantes ajuda em muito a fazer o código mais legível. Compare "
"os dois blocos de código a seguir:"

#. type: Content of: <pre>
#: src/lessons/turmites/helloturmite/HelloTurmite.html:46
#, no-wrap
msgid ""
"[!java]if (rule[state][currentColor][NEXT_MOVE] == LEFT) {[/!][!python]if rule[state][currentColor][NEXT_MOVE] == LEFT:[/!][!scala]if (rule(state)(currentColor)(NEXT_MOVE) == LEFT) {[/!]\n"
"    left()[!java];[/!]\n"
"[!java|scala]}[/!]"
msgstr ""
"[!java]if (rule[state][currentColor][NEXT_MOVE] == LEFT) {[/!][!python]if rule[state][currentColor][NEXT_MOVE] == LEFT:[/!][!scala]if (rule(state)(currentColor)(NEXT_MOVE) == LEFT) {[/!]\n"
"    left()[!java];[/!]\n"
"[!java|scala]}[/!]"

#. type: Content of: <p>
#: src/lessons/turmites/helloturmite/HelloTurmite.html:49
msgid "This is much more easier to read (although longer) than the following:"
msgstr ""
"Isto é muito mais fácil de se ler (embora seja mais longo) do que o seguinte:"

#. type: Content of: <pre>
#: src/lessons/turmites/helloturmite/HelloTurmite.html:50
#, no-wrap
msgid ""
"[!java]if (rule[i][j][1] == 2) {[/!][!python]if rule[i][j][1] == 2:[/!][!scala]if (rule(i)(j)(1) == 2) {[/!]\n"
"    left()[!java];[/!]\n"
"[!java|scala]}[/!]"
msgstr ""
"[!java]if (rule[i][j][1] == 2) {[/!][!python]if rule[i][j][1] == 2:[/!][!scala]if (rule(i)(j)(1) == 2) {[/!]\n"
"    left()[!java];[/!]\n"
"[!java|scala]}[/!]"

#. type: Content of: <p>
#: src/lessons/turmites/helloturmite/HelloTurmite.html:54
msgid ""
"Finally, you probably want to write a <code>elif</code> branch for the "
"<code>STOP</code> condition too. Having a <code>else</code> branch "
"displaying an error message such as \"unknown case\" is a good practice: it "
"makes your assumptions about your code more explicit, and you will get an "
"error message if they fall short. When doing so, the next problem is that "
"you have nothing to do in the <code>STOP</code> case, but python do not "
"allows you to write empty <code>elif</code> branches. You should use the "
"<code>pass</code> instruction as a placeholder: it says python that you have "
"a branch here, and that it does not contain anything."
msgstr ""
"Finalmente, você provavelmente vai querer escrever um ramo <code>elif</code> "
"para a condição <code>STOP</code> também. Ter um ramo <code>else</code> "
"mostrando uma mensagem de erro tal como \"unknown case\" é uma boa prática: "
"faz as suas suposições sobre seu código mais explícitas, e você tem uma "
"mensagem de erro se elas falharem. Quando fizer isto, o próximo problema vai "
"ser que você não tem nada para fazer no caso do <code>STOP</code>, mas "
"python não permite que você escreva ramos <code>elif</code> vazios. Você "
"deve usar a instrução <code>pass</code> como substituto: ela diz ao python "
"que você tem um ramo aqui, e que ele não faz nada."

#. type: Content of: <p>
#: src/lessons/turmites/helloturmite/HelloTurmite.html:63
msgid ""
"You should probably use a [!java]switch case[/!][!scala]pattern matching[/!] "
"construct to keep your code readable.  If you can't remember what it is, "
"check <a href=\"plm://lessons.welcome/bdr.BDR2\">this exercise</a>."
msgstr ""
"Provavelmente você deve usar uma construção [!java]switch case[/!][!"
"scala]pattern matching[/!] para manter seu código legível. Se você não "
"lembra o que é isto, veja <a href=\"plm://lessons.welcome/bdr.BDR2\">este "
"exercício</a>."

#. type: Content of: <h2>
#: src/lessons/turmites/helloturmite/HelloTurmite.html:69
msgid "Bibliographical notes"
msgstr "Notas bibliográficas"

#. type: Content of: <p>
#: src/lessons/turmites/helloturmite/HelloTurmite.html:70
msgid ""
"According to wikipedia, turmites were invented independently by the end of "
"the eighties. It has been shown that turmites in general are exactly "
"equivalent in power to one-dimensional Turing machines with an infinite "
"tape, as either can simulate the other. This means that absolutely any "
"program that you can think of could theoretically be computed on this "
"device..."
msgstr ""
"De acordo com a wikipédia, os turmites foram inventados independentemente no "
"final dos anos oitenta. Foi provado que turmites em geral são exatamente "
"equivalentes em capacidade a máquinas de turing uni-dimensionais com uma "
"fita infinita, pois um pode simular o outro. Isto significa que qualquer "
"programa que você possa conceber pode teoricamente ser executado neste "
"dispositivo..."

#. type: Content of: <h2>
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:2
msgid "Creating Turmites"
msgstr "Criando Turmites"

#. type: Content of: <p>
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:4
msgid ""
"This exercise allows you to build your own turmites. To pass the exercise, "
"you should simply write a <code>init()</code> method which initializes the "
"<code>rule</code> to use the following transitions table (from wikipedia), "
"set the buggle initial position at (8;33), and ask for 8342 steps."
msgstr ""
"Este exercício permite que você construa seus próprios turmites. Para passar "
"neste exercício, você deve simplesmente escrever um método <code>init()</"
"code> que inicializa a <code>rule</code> para usar a seguintes tabela de "
"transições (da wikipédia), configure a posição inicial em (8;33), e peça por "
"8342 passos."

#. type: Content of: <table><tr><th>
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:11
msgid "Current color"
msgstr "Cor atual"

#. type: Content of: <table><tr><td>
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:14
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:29
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:32
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:40
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:42
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:43
msgid "0"
msgstr "0"

#. type: Content of: <table><tr><td>
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:15
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:30
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:33
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:35
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:38
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:45
msgid "1"
msgstr "1"

#. type: Content of: <table><tr><th>
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:19
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:22
msgid "Write color"
msgstr "Escrever cor"

#. type: Content of: <table><tr><th>
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:20
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:23
msgid "Turn"
msgstr "Turn"

#. type: Content of: <table><tr><th>
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:21
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:24
msgid "Next state"
msgstr "Próximo estado"

#. type: Content of: <table><tr><th>
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:27
msgid "Current state"
msgstr "Estado atual"

#. type: Content of: <table><tr><td>
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:31
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:34
msgid "R"
msgstr "R"

#. type: Content of: <table><tr><td>
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:41
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:44
msgid "N"
msgstr "N"

#. type: Content of: <p>
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:49
msgid ""
"where the direction to turn is one of <b>L</b> (90° left), <b>R</b> (90° "
"right), <b>N</b> (no turn) and <b>U</b> (180° U-turn)."
msgstr ""
"Onde a direção para virar é <b>L</b> (90° à esquerda), <b>R</b> (90° à "
"direita), <b>N</b> (não vira) e <b>U</b> (meia-volta)."

#. type: Content of: <h2>
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:51
msgid "Going further"
msgstr "Indo mais além"

#. type: Content of: <p>
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:52
msgid ""
"This exercise is naturally an excuse to let you experiment with your own "
"turmites.  Feel free to change the transition table and the amount of steps "
"to experiment by yourself. To that extend, you may find the Ed Pegg Jr's "
"library useful. If you find new interesting patterns, send them per email so "
"that we can integrate them to this list!"
msgstr ""
"Este exercício é naturalmente uma desculpa para deixar você experimentar com "
"seus próprios turmites. Sinta-se à vontade para mudar a tabela de transições "
"e a quantidade de passos por conta própria. Nesta altura, você pode se "
"interessar pela biblioteca de Pegg Jr. Se você encontrar novos padrões "
"interessantes, envie-os por email para que eles possam integrar a lista!"

#. type: Content of: <p>
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:58
msgid ""
"In addition, wikipedia is desperately missing some good looking colorful "
"turmites: only black and white ones are depicted.  You should consider "
"submitting your creations directly to the free encyclopedia."
msgstr ""
"Adicionalmente, a wikipédia está precisando desesperadamente de alguns "
"turmites coloridos bem apresentáveis: apenas os preto e branco estão "
"descritos. Você deveria considerar a possibilidade de enviar suas criações "
"diretamente para a enciclopédia livre."

#. type: Content of: <p>
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:63
msgid ""
"Here are some 2-color turmites, extracted from http://demonstrations.wolfram."
"com/Turmites/ [!python|scala]They are not written using the [!thelang] "
"syntax, but converting them should be easy.[/!]"
msgstr ""
"Aqui estão alguns turmites de 2 cores, extraídos de http://demonstrations."
"wolfram.com/Turmites/ [!python|scala]Eles não foram escritos usando o "
"sintaxe de [!thelang], mas convertê-los não deve ser difícil.[/!]"

#. type: Content of: <pre>
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:67
#, no-wrap
msgid ""
"{{{1, RIGHT , 0}, {0, LEFT  , 0}}}  # 1: Langton's ant\n"
"{{{1, RIGHT , 0}, {0, NOTURN, 0}}}  # 2: binary counter\n"
"{{{0, LEFT  , 1}, {1, RIGHT , 1}}, {{1, NOTURN, 0}, {1, NOTURN, 1}}} # 3: (filled triangle)\n"
"{{{0, NOTURN, 1}, {0, LEFT  , 1}}, {{1, RIGHT , 0}, {0, NOTURN, 1}}} # 4: spiral in a box\n"
"{{{0, RIGHT , 1}, {0, LEFT  , 0}}, {{1, LEFT  , 1}, {0, RIGHT , 0}}} # 5: stripe-filled spiral\n"
"{{{0, RIGHT , 1}, {0, LEFT  , 0}}, {{1, LEFT  , 1}, {1, NOTURN, 0}}} # 6: stepped pyramid\n"
"{{{0, RIGHT , 1}, {0, NOTURN, 1}}, {{1, RIGHT , 1}, {1, LEFT  , 0}}} # 7: contoured island\n"
"{{{0, RIGHT , 1}, {0, RIGHT , 1}}, {{1, NOTURN, 0}, {0, RIGHT , 1}}} # 8: woven placemat\n"
"{{{0, RIGHT , 1}, {1, RIGHT , 1}}, {{1, LEFT  , 1}, {1, LEFT  , 0}}} # 9: snowflake-ish\n"
"{{{1, LEFT  , 0}, {0, NOTURN, 1}}, {{0, LEFT  , 0}, {0, LEFT  , 1}}} # 10: slow city builder\n"
"{{{1, LEFT  , 0}, {1, RIGHT , 1}}, {{0, RIGHT , 0}, {0, LEFT  , 1}}} # 11: framed computer art\n"
"{{{1, LEFT  , 0}, {1, RIGHT , 1}}, {{0, RIGHT , 1}, {1, LEFT  , 0}}} # 12: balloon bursting (makes a spreading highway)\n"
"{{{1, LEFT  , 1}, {0, LEFT  , 0}}, {{1, NOTURN, 0}, {0, NOTURN, 0}}} # 13: makes a horizontal highway\n"
"{{{1, LEFT  , 1}, {0, LEFT  , 0}}, {{1, RIGHT , 1}, {1, RIGHT , 0}}} # 14: makes a 45 degree highway\n"
"{{{1, LEFT  , 1}, {0, LEFT  , 1}}, {{1, RIGHT , 1}, {0, LEFT  , 0}}} # 15: makes a 45 degree highway\n"
"{{{1, LEFT  , 1}, {0, NOTURN, 0}}, {{1, NOTURN, 0}, {1, RIGHT , 0}}} # 16: spiral in a filled box\n"
"{{{1, LEFT  , 1}, {0, RIGHT , 0}}, {{0, LEFT  , 0}, {0, LEFT  , 0}}} # 17: glaciers\n"
"{{{1, LEFT  , 1}, {1, LEFT  , 1}}, {{1, RIGHT , 1}, {0, NOTURN, 0}}} # 18: golden rectangle!\n"
"{{{1, LEFT  , 1}, {1, RIGHT , 0}}, {{0, LEFT  , 0}, {0, LEFT  , 0}}} # 19: fizzy spill\n"
"{{{1, LEFT  , 1}, {1, RIGHT , 1}}, {{1, NOTURN, 0}, {0, NOTURN, 1}}} # 20: nested cabinets\n"
"{{{1, NOTURN, 1}, {0, LEFT  , 1}}, {{1, RIGHT , 0}, {1, NOTURN, 1}}} # 21: (cross)\n"
"{{{1, NOTURN, 1}, {0, NOTURN, 0}}, {{0, RIGHT , 0}, {1, LEFT  , 0}}} # 22: saw-tipped growth\n"
"{{{1, NOTURN, 1}, {0, NOTURN, 1}}, {{1, RIGHT , 1}, {0, NOTURN, 0}}} # 23: curves in blocks growth\n"
"{{{1, NOTURN, 1}, {0, RIGHT , 0}}, {{0, LEFT  , 0}, {0, LEFT  , 0}}} # 24: textured growth\n"
"{{{1, NOTURN, 1}, {0, RIGHT , 1}}, {{1, LEFT  , 0}, {1, RIGHT , 0}}} # 25: (diamond growth)\n"
"{{{1, NOTURN, 1}, {1, LEFT  , 0}}, {{1, RIGHT , 1}, {0, NOTURN, 0}}} # 26: coiled rope\n"
"{{{1, RIGHT , 0}, {0, LEFT  , 1}}, {{1, LEFT  , 0}, {0, NOTURN, 1}}} # 27: (growth)\n"
"{{{1, RIGHT , 0}, {0, LEFT  , 1}}, {{1, LEFT  , 0}, {0, RIGHT , 1}}} # 28: (square spiral)\n"
"{{{1, RIGHT , 0}, {1, RIGHT , 1}}, {{0, NOTURN, 0}, {0, NOTURN, 1}}} # 29: loopy growth with holes\n"
"{{{1, RIGHT , 1}, {0, LEFT  , 1}}, {{1, NOTURN, 0}, {0, NOTURN, 0}}} # 30: Lanton's Ant drawn with squares\n"
"{{{1, RIGHT , 1}, {0, RIGHT , 0}}, {{0, LEFT  , 1}, {1, LEFT  , 0}}} # 31: growth with curves and blocks\n"
"{{{1, RIGHT , 1}, {0, RIGHT , 0}}, {{0, NOTURN, 0}, {1, RIGHT , 1}}} # 32: distracted spiral builder\n"
"{{{1, RIGHT , 1}, {0, RIGHT , 1}}, {{1, NOTURN, 0}, {1, NOTURN, 1}}} # 33: cauliflower stalk (45 deg highway)\n"
"{{{1, RIGHT , 1}, {1, LEFT  , 1}}, {{1, RIGHT , 1}, {0, RIGHT , 0}}} # 34: worm trails (eventually turns cyclic!)\n"
"{{{1, RIGHT , 1}, {1, NOTURN, 0}}, {{1, NOTURN, 0}, {0, NOTURN, 1}}} # 35: eventually makes a two-way highway!\n"
"{{{1, RIGHT , 1}, {1, RIGHT , 0}}, {{0, NOTURN, 0}, {0, NOTURN, 0}}} # 36: almost symmetric mould bloom\n"
"{{{1, RIGHT , 1}, {1, RIGHT , 0}}, {{0, RIGHT , 0}, {1, NOTURN, 1}}} # 37: makes a 1 in 2 gradient highway\n"
"{{{1, RIGHT , 1}, {1, RIGHT , 1}}, {{1, LEFT  , 1}, {0, RIGHT , 0}}} # 38: immediately makes a 1 in 3 highway\n"
"{{{0, RIGHT , 1}, {1, RIGHT , 1}}, {{0, LEFT  , 2}, {0, LEFT  , 0}}, {{1, RIGHT , 2}, {1, LEFT  , 0}}} # 39: squares and diagonals growth\n"
"{{{1, LEFT  , 1}, {0, NOTURN, 0}}, {{0, RIGHT , 2}, {1, LEFT  , 0}}, {{1, RIGHT , 1}, {1, NOTURN, 0}}} # 40: streak at approx. an 8.1 in 1 gradient\n"
"{{{1, LEFT  , 1}, {0, NOTURN, 2}}, {{0, RIGHT , 2}, {1, NOTURN, 1}}, {{1, RIGHT , 1}, {1, NOTURN, 0}}} # 41: streak at approx. a 1.14 in 1 gradient\n"
"{{{1, LEFT  , 1}, {1, LEFT  , 1}}, {{1, NOTURN, 0}, {0, NOTURN, 2}}, {{0, LEFT  , 1}, {1, NOTURN, 1}}} # 42: maze-like growth\n"
"{{{1, LEFT  , 2}, {0, RIGHT , 0}}, {{1, LEFT  , 0}, {0, RIGHT , 0}}, {{0, LEFT  , 0}, {0, LEFT  , 1}}} # 43: growth by cornices \n"
"{{{1, RIGHT , 0}, {0, RIGHT , 2}}, {{0, LEFT  , 0}, {0, RIGHT , 0}}, {{0, NOTURN, 1}, {1, LEFT  , 0}}} # 44: makes a 1 in 7 highway\n"
"{{{1, RIGHT , 1}, {0, LEFT  , 0}}, {{1, RIGHT , 2}, {0, NOTURN, 0}}, {{1, LEFT  , 0}, {0, LEFT  , 0}}} # 45: makes a 4 in 1 highway\n"
msgstr ""
"{{{1, RIGHT , 0}, {0, LEFT  , 0}}}  # 1: formiga de Langton\n"
"{{{1, RIGHT , 0}, {0, NOTURN, 0}}}  # 2: contador binário\n"
"{{{0, LEFT  , 1}, {1, RIGHT , 1}}, {{1, NOTURN, 0}, {1, NOTURN, 1}}} # 3: (triâgulo preenchido)\n"
"{{{0, NOTURN, 1}, {0, LEFT  , 1}}, {{1, RIGHT , 0}, {0, NOTURN, 1}}} # 4: espiral numa caixa\n"
"{{{0, RIGHT , 1}, {0, LEFT  , 0}}, {{1, LEFT  , 1}, {0, RIGHT , 0}}} # 5: espiral stripe-filled\n"
"{{{0, RIGHT , 1}, {0, LEFT  , 0}}, {{1, LEFT  , 1}, {1, NOTURN, 0}}} # 6: pirâmide inclinada\n"
"{{{0, RIGHT , 1}, {0, NOTURN, 1}}, {{1, RIGHT , 1}, {1, LEFT  , 0}}} # 7: ilha contoured\n"
"{{{0, RIGHT , 1}, {0, RIGHT , 1}}, {{1, NOTURN, 0}, {0, RIGHT , 1}}} # 8: woven placemat\n"
"{{{0, RIGHT , 1}, {1, RIGHT , 1}}, {{1, LEFT  , 1}, {1, LEFT  , 0}}} # 9: floco de neve\n"
"{{{1, LEFT  , 0}, {0, NOTURN, 1}}, {{0, LEFT  , 0}, {0, LEFT  , 1}}} # 10: construtor de cidades lento\n"
"{{{1, LEFT  , 0}, {1, RIGHT , 1}}, {{0, RIGHT , 0}, {0, LEFT  , 1}}} # 11: framed computer art\n"
"{{{1, LEFT  , 0}, {1, RIGHT , 1}}, {{0, RIGHT , 1}, {1, LEFT  , 0}}} # 12: balloon bursting (makes a spreading highway)\n"
"{{{1, LEFT  , 1}, {0, LEFT  , 0}}, {{1, NOTURN, 0}, {0, NOTURN, 0}}} # 13: makes a horizontal highway\n"
"{{{1, LEFT  , 1}, {0, LEFT  , 0}}, {{1, RIGHT , 1}, {1, RIGHT , 0}}} # 14: makes a 45 degree highway\n"
"{{{1, LEFT  , 1}, {0, LEFT  , 1}}, {{1, RIGHT , 1}, {0, LEFT  , 0}}} # 15: makes a 45 degree highway\n"
"{{{1, LEFT  , 1}, {0, NOTURN, 0}}, {{1, NOTURN, 0}, {1, RIGHT , 0}}} # 16: spiral in a filled box\n"
"{{{1, LEFT  , 1}, {0, RIGHT , 0}}, {{0, LEFT  , 0}, {0, LEFT  , 0}}} # 17: glaciers\n"
"{{{1, LEFT  , 1}, {1, LEFT  , 1}}, {{1, RIGHT , 1}, {0, NOTURN, 0}}} # 18: golden rectangle!\n"
"{{{1, LEFT  , 1}, {1, RIGHT , 0}}, {{0, LEFT  , 0}, {0, LEFT  , 0}}} # 19: fizzy spill\n"
"{{{1, LEFT  , 1}, {1, RIGHT , 1}}, {{1, NOTURN, 0}, {0, NOTURN, 1}}} # 20: nested cabinets\n"
"{{{1, NOTURN, 1}, {0, LEFT  , 1}}, {{1, RIGHT , 0}, {1, NOTURN, 1}}} # 21: (cross)\n"
"{{{1, NOTURN, 1}, {0, NOTURN, 0}}, {{0, RIGHT , 0}, {1, LEFT  , 0}}} # 22: saw-tipped growth\n"
"{{{1, NOTURN, 1}, {0, NOTURN, 1}}, {{1, RIGHT , 1}, {0, NOTURN, 0}}} # 23: curves in blocks growth\n"
"{{{1, NOTURN, 1}, {0, RIGHT , 0}}, {{0, LEFT  , 0}, {0, LEFT  , 0}}} # 24: textured growth\n"
"{{{1, NOTURN, 1}, {0, RIGHT , 1}}, {{1, LEFT  , 0}, {1, RIGHT , 0}}} # 25: (diamond growth)\n"
"{{{1, NOTURN, 1}, {1, LEFT  , 0}}, {{1, RIGHT , 1}, {0, NOTURN, 0}}} # 26: coiled rope\n"
"{{{1, RIGHT , 0}, {0, LEFT  , 1}}, {{1, LEFT  , 0}, {0, NOTURN, 1}}} # 27: (growth)\n"
"{{{1, RIGHT , 0}, {0, LEFT  , 1}}, {{1, LEFT  , 0}, {0, RIGHT , 1}}} # 28: (square spiral)\n"
"{{{1, RIGHT , 0}, {1, RIGHT , 1}}, {{0, NOTURN, 0}, {0, NOTURN, 1}}} # 29: loopy growth with holes\n"
"{{{1, RIGHT , 1}, {0, LEFT  , 1}}, {{1, NOTURN, 0}, {0, NOTURN, 0}}} # 30: Lanton's Ant drawn with squares\n"
"{{{1, RIGHT , 1}, {0, RIGHT , 0}}, {{0, LEFT  , 1}, {1, LEFT  , 0}}} # 31: growth with curves and blocks\n"
"{{{1, RIGHT , 1}, {0, RIGHT , 0}}, {{0, NOTURN, 0}, {1, RIGHT , 1}}} # 32: distracted spiral builder\n"
"{{{1, RIGHT , 1}, {0, RIGHT , 1}}, {{1, NOTURN, 0}, {1, NOTURN, 1}}} # 33: cauliflower stalk (45 deg highway)\n"
"{{{1, RIGHT , 1}, {1, LEFT  , 1}}, {{1, RIGHT , 1}, {0, RIGHT , 0}}} # 34: worm trails (eventually turns cyclic!)\n"
"{{{1, RIGHT , 1}, {1, NOTURN, 0}}, {{1, NOTURN, 0}, {0, NOTURN, 1}}} # 35: eventually makes a two-way highway!\n"
"{{{1, RIGHT , 1}, {1, RIGHT , 0}}, {{0, NOTURN, 0}, {0, NOTURN, 0}}} # 36: almost symmetric mould bloom\n"
"{{{1, RIGHT , 1}, {1, RIGHT , 0}}, {{0, RIGHT , 0}, {1, NOTURN, 1}}} # 37: makes a 1 in 2 gradient highway\n"
"{{{1, RIGHT , 1}, {1, RIGHT , 1}}, {{1, LEFT  , 1}, {0, RIGHT , 0}}} # 38: immediately makes a 1 in 3 highway\n"
"{{{0, RIGHT , 1}, {1, RIGHT , 1}}, {{0, LEFT  , 2}, {0, LEFT  , 0}}, {{1, RIGHT , 2}, {1, LEFT  , 0}}} # 39: squares and diagonals growth\n"
"{{{1, LEFT  , 1}, {0, NOTURN, 0}}, {{0, RIGHT , 2}, {1, LEFT  , 0}}, {{1, RIGHT , 1}, {1, NOTURN, 0}}} # 40: streak at approx. an 8.1 in 1 gradient\n"
"{{{1, LEFT  , 1}, {0, NOTURN, 2}}, {{0, RIGHT , 2}, {1, NOTURN, 1}}, {{1, RIGHT , 1}, {1, NOTURN, 0}}} # 41: streak at approx. a 1.14 in 1 gradient\n"
"{{{1, LEFT  , 1}, {1, LEFT  , 1}}, {{1, NOTURN, 0}, {0, NOTURN, 2}}, {{0, LEFT  , 1}, {1, NOTURN, 1}}} # 42: maze-like growth\n"
"{{{1, LEFT  , 2}, {0, RIGHT , 0}}, {{1, LEFT  , 0}, {0, RIGHT , 0}}, {{0, LEFT  , 0}, {0, LEFT  , 1}}} # 43: growth by cornices \n"
"{{{1, RIGHT , 0}, {0, RIGHT , 2}}, {{0, LEFT  , 0}, {0, RIGHT , 0}}, {{0, NOTURN, 1}, {1, LEFT  , 0}}} # 44: makes a 1 in 7 highway\n"
"{{{1, RIGHT , 1}, {0, LEFT  , 0}}, {{1, RIGHT , 2}, {0, NOTURN, 0}}, {{1, LEFT  , 0}, {0, LEFT  , 0}}} # 45: makes a 4 in 1 highway\n"

#. type: Content of: <p>
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:114
msgid ""
"Langton's ants may not share the expressiveness power of the turmites, but "
"they remain fascinating too. You can experiment with them using the "
"initLangton() method, provided in your template, that allows to build a "
"Turmite transition table from a Langton's ant name. Tiny changes in the ant "
"may result huge changes. For example, \"RRL\" does not seem to lead to any "
"constructed pattern, even after a million steps, but \"RLL\" starts building "
"a very simple highway pattern after less than 100 steps!"
msgstr ""
"formigas de Langton podem não compartilhar do poder de expressão dos "
"turmites, mas ainda assim são fascinantes. Você pode experimentar elas "
"usando o método initLangton(), fornecido no seu template, que permite "
"contruir uma tabela de transição do nome da formiga de Langton. Pequenas "
"mudanças na formiga podem resultar em grandes mudanças. Por exemplo, \"RRL\" "
"parece não levar a nenhum padrão, mesmo após um milhão de passos, mas, mas "
"\"RLL\" começa a construir um padrão de estrada muito simples depois de "
"menos de 100 passos!"

#. type: Content of: <p>
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:121
msgid ""
"Quite a lot of Langton's ants build highways: RL, of course, but also "
"RLRLRLLRLR (about 2500 steps).  The chaotic behavior of ants before the "
"highway can be very short (as with RLL that only need 100 steps to converge) "
"or very long, as with LLLLLLRRLRRR which seems chaotic for more than 500,000 "
"steps before build the highway or even RRLLLRRRLRRR which needs 1170000 to "
"start converging. Some are narrow, and others are very large, such as "
"RRLRLLRLRR (200,000 steps). This ant is also notable since it is somehow "
"squarish even before the highway start where most others do not show "
"anything notable before their highway."
msgstr ""
"Muitas das formigas de Langton constróem estradas: RL, claro, mas também "
"RLRLRLLRLR (em cerca de 2500 passos). O comportamento caótico das formigas "
"antes da estrada pode ser bastante curto (como no caso RLL que precisa de "
"apenas 100 passos para convergir) ou muito longo, como LLLLLLRRLRRR que "
"parece caótico até mais de 500.000 de passos antes de contruir a estrada, ou "
"até mesmo RRLLLRRRLRRR que precisa de 1.170.000 para começar a convergir. "
"Umas são estreitas, e outras bem largas, como em RRLRLLRLRR (200,000 "
"passos). Esta formiga é também notável pois é meio quadrada mesmo antes da "
"estrada começar, enquanto que as outras não exibem nada de especial antes da "
"estrada."

#. type: Content of: <p><p><p>
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:129
msgid ""
"Some ants fill solid sectors, such as RRLLLRLLLRRR (16,000 steps), "
"RRLLLRLLLRRR (30,000 steps), RRLLLRRRRRLR (125,000 steps) or RRLRLLRRRRRR "
"(20,000 steps). Some even fill the whole space (RRLRR after 3000 steps). "
"Some of my personal favorite ones are the ones where the ant seem to be "
"bouncing within a box that gets bigger on each bump, such as LRRRRRLLR "
"(30,000 steps). LRRRRLLLRRR is even more impressing since the bounces within "
"the box are regular and since it converges more rapidly to its stable "
"behavior (15,000 steps are enough)."
msgstr ""
"Algumas formiga preenchem setores sólidos, como RRLLLRLLLRRR(16,000 passos), "
"RRLLLRLLLRRR (30,000 passos), RRLLLRRRRRLR (125,000 passos) ou RRLRLLRRRRRR "
"(20,000 passos). Algumas preenchem até mesmo todo o plano (RRLRR depois de "
"3000 passos). algumas das minhas favoritas são aquelas onde as formigas "
"parecem ricochetear desntro de uma caixa que vai ficando maior em cada "
"batida, como LRRRRRLLR (30,000 passos). LRRRRLLLRRR é ainda mais "
"impressionante pois as ricocheteadas dantro da caixa são regulares e também "
"por que ela converge mais rapidamente para o seu comportamento estável "
"(15,000 passos são suficientes)."

#. type: Content of: <p><p><p>
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:136
msgid ""
"Finally, some ants are just build artistic patterns. You should check this "
"video for some beautiful ones: http://www.youtube.com/watch?v=1X-gtr4pEBU. "
"If you want to convert them into your code, you have to shift them by one: "
"For example, the one depicted at 3:42 is not RRLRLRLLRL, but RLRLRLLRLR (the "
"first visible move should be read as last one)."
msgstr ""
"Finalmente, algumas formigas fazem padrões simplesmente artísticos. Você "
"pode verificar este vídeo com alguns deles: http://www.youtube.com/watch?"
"v=1X-gtr4pEBU. Se você quiser convertê-los em código, você tem que "
"transladar um caractere: por exemplo, aquele descrito no minuto 3:42 não "
"será RRLRLRLLRL, mas sim RLRLRLLRLR (o primeiro movimento visível deve ser "
"lido como o último)."

#. type: Content of: <p><p><p>
#: src/lessons/turmites/turmitecreator/TurmiteCreator.html:141
msgid ""
"As you can see by exploring the above set of turmites, they are usually not "
"as colorful as the ants, but this may be because very few colors suffice to "
"exhibit complex behaviors. For example, there is a specific class of "
"turmites called <i>busy beavers</i> which are turmites that write a lot of "
"things before stopping (busy beavers are usually classical turing machines, "
"but the idea fits perfectly to turmites too). There is a sort of "
"international competition where people strive to find the turmite that "
"covers the biggest area before stopping. The web page is here: http://code."
"google.com/p/ruletablerepository/wiki/TwoDimensionalTuringMachines"
msgstr ""
"Como você pode ver ao explorar o conjunto de turmites acima, elas não são "
"tão coloridas quanto as formigas, mas isto pode ser por que poucas cores são "
"o suficientes para exibir comportamentos complexos. Por exemplo, existe uma "
"classe específica de turmites chamada <i>busy beavers</i> que são turmites "
"que escrevem várias coisas antes de parar (busy beavers normalmente são "
"máquinas de turing clássicas, mas a ideia encaixa perfeitamente em turmites "
"também). Existe um tipode competição internacional onde as pessoas tentam "
"encontrar o turmite que cobre a maior área antes de parar. A página é esta: "
"http://code.google.com/p/ruletablerepository/wiki/"
"TwoDimensionalTuringMachines"

#. type: Content of: <h1>
#: src/lessons/turmites/universe/TurmiteWorld.html:2
msgid "Turmite universe"
msgstr "Universo dos Turmites"

#. type: Content of: <p>
#: src/lessons/turmites/universe/TurmiteWorld.html:4
msgid ""
"This universe is very similar to the buggle one, but you will probably not "
"use all buggles methods.  So, this page only recap the buggle methods that "
"you will use."
msgstr ""
"Este universo é bastante similar ao dos buggles, mas você provavelmente não "
"vai usar nenhum método dos buggles. Então, esta página apenas repacitula os "
"métodos do buggle que você vai usar."

#. type: Content of: <table><tr><td>
#: src/lessons/turmites/universe/TurmiteWorld.html:12
msgid ""
"[!java|c]void [/!][!c]stepForward()[/!][!java|python|scala]forward()[/!] or "
"[!java|c]void [/!]forward([!java|c]int [/!]steps[!scala]:Int[/!])"
msgstr ""
"[!java|c]void [/!][!c]avançarUmPasso()[/!][!java|python|scala]avançar()[/!] "
"ou [!java|c]void [/!]avançar([!java|c]int [/!]passos[!scala]:Int[/!])"

#. type: Content of: <table><tr><td>
#: src/lessons/turmites/universe/TurmiteWorld.html:13
msgid ""
"[!java|c]void [/!][!c]stepBackward()[/!][!java|python|scala]backward()[/!] "
"or [!java|c]void [/!]backward([!java|c]int [/!]steps[!scala]:Int[/!])"
msgstr ""
"[!java|c]void [/!][!c]voltarUmPasso()[/!][!java|python|scala]voltar()[/!] ou "
"[!java|c]void [/!]voltar([!java|c]int [/!]passos[!scala]:Int[/!])"

#. type: Content of: <h1>
#: src/plm/universe/sort/SortingWorld.html:2
msgid "Sorting World"
msgstr "Mundo da ordenação"

#. type: Content of: outside any tag (error?)
#: src/plm/universe/sort/SortingWorld.html:3
msgid ""
"This world provides tools to experiment with the sorting algorithms. It can "
"be used in two different ways: the first one is naturally to write the "
"required sorting algorithms. But it is also possible to simply use the demo "
"mode of each exercise to observe the behavior of sorting algorithms. It "
"helps understanding the differences between each of them."
msgstr ""
"Este mundo fornece ferramentas para experimentar com algoritmos de "
"ordenação. Ele pode ser usado de duas formas diferentes: a primeira é "
"naturalmente para escrever os algoritmos de ordenação necessários. Mas "
"também é possível simplesmente usar o modo de demonstração de cada exercício "
"para observar o comportamento de algoritmos de ordenação. Isto ajuda a "
"entender as diferenças entre cada um deles."

#. type: Content of: <h2>
#: src/plm/universe/sort/SortingWorld.html:9
msgid "Methods available to sorting algorithms"
msgstr "Métodos disponíveis para algoritmos de ordenação"

#. type: Content of: <table><tr><td>
#: src/plm/universe/sort/SortingWorld.html:11
msgid "<b>Method</b>"
msgstr "<b>Método</b>"

#. type: Content of: <table><tr><td>
#: src/plm/universe/sort/SortingWorld.html:11
msgid "<b>Action</b>"
msgstr "Ação"

#. type: Content of: <table><tr><td>
#: src/plm/universe/sort/SortingWorld.html:11
msgid "<b>Cost</b>"
msgstr "Custo"

#. type: Content of: <table><tr><td>
#: src/plm/universe/sort/SortingWorld.html:12
msgid "[!java|c]int [/!]getValueCount() [!scala]:Int[/!]"
msgstr "[!java|c]int [/!]getQuantidadeDeValores() [!scala]:Int[/!]"

#. type: Content of: <table><tr><td>
#: src/plm/universe/sort/SortingWorld.html:13
msgid "Returns the amount of values in the array"
msgstr "Retorna a quantidade de valores na array"

#. type: Content of: <table><tr><td>
#: src/plm/universe/sort/SortingWorld.html:13
#: src/plm/universe/sort/SortingWorld.html:31
msgid "none"
msgstr "nenhum"

#. type: Content of: <table><tr><td>
#: src/plm/universe/sort/SortingWorld.html:15
msgid ""
"[!java]boolean [/!][!c]int [/!]isSmaller([!java|c]int [/!]i[!scala]:Int[/!], "
"[!java|c]int [/!]j[!scala]:Int[/!]) [!scala]:Boolean[/!]"
msgstr ""
"[!java]boolean [/!][!c]int [/!]éMenor([!java|c]int [/!]i[!scala]:Int[/!], [!"
"java|c]int [/!]j[!scala]:Int[/!]) [!scala]:Boolean[/!]"

#. type: Content of: <table><tr><td>
#: src/plm/universe/sort/SortingWorld.html:16
msgid ""
"Returns true if the content of cell i is strictly smaller than the one of "
"cell j"
msgstr ""
"Retorna verdadeiro se o conteúdo da célula i é estritamente menor que o da "
"célula j"

#. type: Content of: <table><tr><td>
#: src/plm/universe/sort/SortingWorld.html:16
msgid "two reads"
msgstr "duas leituras"

#. type: Content of: <table><tr><td>
#: src/plm/universe/sort/SortingWorld.html:17
msgid ""
"[!java]boolean [/!][!c]int [/!]isSmallerThan([!java|c]int [/!]i[!scala]:"
"Int[/!], [!java|c]int [/!]value[!scala]:Int[/!])[!scala] :Boolean[/!]"
msgstr ""
"[!java]boolean [/!][!c]int [/!]éMenorQue([!java|c]int [/!]i[!scala]:Int[/!], "
"[!java|c]int [/!]value[!scala]:Int[/!])[!scala] :Boolean[/!]"

#. type: Content of: <table><tr><td>
#: src/plm/universe/sort/SortingWorld.html:18
msgid ""
"Returns true if the content of cell i is strictly smaller than the "
"<code>value</code>"
msgstr ""
"Retorna verdadeiro se o conteúdo da célula i é estritamente menor que "
"<code>valor</code>"

#. type: Content of: <table><tr><td>
#: src/plm/universe/sort/SortingWorld.html:18
#: src/plm/universe/sort/SortingWorld.html:26
msgid "one read"
msgstr "uma leitura"

#. type: Content of: <table><tr><td>
#: src/plm/universe/sort/SortingWorld.html:20
msgid ""
"[!java|c]void [/!]swap([!java|c]int [/!]i[!scala]:Int[/!], [!java|c]int "
"[/!]j[!scala]:Int[/!])"
msgstr ""
"[!java|c]void [/!]alternar([!java|c]int [/!]i[!scala]:Int[/!], [!java|c]int "
"[/!]j[!scala]:Int[/!])"

#. type: Content of: <table><tr><td>
#: src/plm/universe/sort/SortingWorld.html:21
msgid "Swaps the content of cell i and the one of cell j"
msgstr "Alterna (\"swap\") o conteúdo da célula i com o da célula j"

#. type: Content of: <table><tr><td>
#: src/plm/universe/sort/SortingWorld.html:21
msgid "two reads, two writes"
msgstr "duas escritas, duas leituras"

#. type: Content of: <table><tr><td>
#: src/plm/universe/sort/SortingWorld.html:22
msgid ""
"[!java|c]void [/!]copy([!java|c]int [/!]from[!scala]:Int[/!], [!java|c]int "
"[/!]to[!scala]:Int[/!])"
msgstr ""
"[!java|c]void [/!]copia([!java|c]int [/!]de[!scala]:Int[/!], [!java|c]int "
"[/!]para[!scala]:Int[/!])"

#. type: Content of: <table><tr><td>
#: src/plm/universe/sort/SortingWorld.html:23
msgid "Copy the content of cell 'from' into the cell 'to'"
msgstr "Copia o conteúdo da célula 'de' para a célula 'para'"

#. type: Content of: <table><tr><td>
#: src/plm/universe/sort/SortingWorld.html:23
msgid "one read, one write"
msgstr "uma leitura, uuma escrita"

#. type: Content of: <table><tr><td>
#: src/plm/universe/sort/SortingWorld.html:25
msgid "[!java|c]int [/!]getValue([!java|c]int [/!]idx[!scala]:Int[/!])"
msgstr "[!java|c]int [/!]getValor([!java|c]int [/!]idx[!scala]:Int[/!])"

#. type: Content of: <table><tr><td>
#: src/plm/universe/sort/SortingWorld.html:26
msgid "Returns the value of cell idx"
msgstr "Retorna o valor da célula idx"

#. type: Content of: <table><tr><td>
#: src/plm/universe/sort/SortingWorld.html:27
msgid ""
"[!java|c]void [/!]setValue([!java|c]int [/!]idx[!scala]:Int[/!], [!java|"
"c]int [/!]value[!scala]:Int[/!])"
msgstr ""
"[!java|c]void [/!]setValor([!java|c]int [/!]idx[!scala]:Int[/!], [!java|"
"c]int [/!]valor[!scala]:Int[/!])"

#. type: Content of: <table><tr><td>
#: src/plm/universe/sort/SortingWorld.html:28
msgid "Sets cell 'idx' to the <code>value</code>"
msgstr "Coloca na célula 'idx' o <code>valor</code>"

#. type: Content of: <table><tr><td>
#: src/plm/universe/sort/SortingWorld.html:28
msgid "one write"
msgstr "uma escrita"

#. type: Content of: <table><tr><td>
#: src/plm/universe/sort/SortingWorld.html:30
msgid "[!java]boolean [/!][!c]int [/!]isSelected() [!scala]:Boolean[/!]"
msgstr "[!java]boolean [/!][!c]int [/!]selecionado() [!scala]:Boolean[/!]"

#. type: Content of: outside any tag (error?)
#: src/plm/universe/sort/SortingWorld.html:31
#: src/lessons/sort/pancake/universe/PancakeWorld.html:22
#: src/lessons/recursion/hanoi/universe/HanoiWorld.html:28
msgid ""
"Returns whether the current world is selected in the graphical interface."
msgstr ""
"Retorna verdadeiro se o mundo atual está selecionado na interface gráfica."

#. type: Content of: <h2>
#: src/plm/universe/sort/SortingWorld.html:35
msgid "History view"
msgstr "Visão do histórico"

#. type: Content of: <p>
#: src/plm/universe/sort/SortingWorld.html:36
msgid ""
"It is not enough to sort the array to pass the exercises. Your solution must "
"strictly follow the expected behavior of each exercise. This is enforced by "
"checking that your algorithm needs the same amount of read and write "
"operations to sort the array. When they don't match, understanding the "
"difference between your code and the expected solution can reveal very "
"difficult."
msgstr ""
"É suficiente ordenar a array para resolver os exercícios. Sua solução deve "
"seguir estritamente o comportamento esperado em cada exercício. Isto é "
"reforçado verificando que seu algoritmo precisa da mesma quantidade de "
"operações de leitura e escrita para ordenar a array. Quando estas "
"quantidades não coincidem, compreender a diferença entre seu código e a "
"solução esperada pode se mostrar bem difícil."

#. type: Content of: <p>
#: src/plm/universe/sort/SortingWorld.html:43
msgid ""
"To help in this process, it is possible to graphically explore the history "
"of your sorting algorithm. Switch to the Objective view and use the "
"contextual menu (right click) to switch from the view of the current state "
"to the view of its history."
msgstr ""
"Para ajudar neste processo, é possível explorar graficamente o histórico do "
"algoritmo de ordenação. Alternar para a visão Objetivo e usar o menu de "
"contexto (clique com botão direito) para alternar da visão do estado atual "
"para a visão do histórico."

#. type: Content of: <p>
#: src/plm/universe/sort/SortingWorld.html:48
#: src/lessons/sort/basic/bubble/AlgBubbleSort1.html:19
msgid ""
"The history view is a bit hairly at the first glance, but actually rather "
"simple: The time flows from left to right on this graph, and each row is a "
"cell of your array. The curved lines that go navigate between rows represent "
"a given data value. When two lines cross, this means that two values were "
"swapped at this time stamp; A line fork represent a value copy; When a value "
"is magenta and followed by an interrogation mark (?), it was read using "
"getValue(); If the value is red and followed with an exclamation point (!), "
"it was written using setValue()."
msgstr ""
"A visão do histórico é um pouco bagunçada à primeira vista, mas na verdade é "
"bem simples: o tempo anda da esquerda para a direita neste gráfico, e cada "
"linha é uma célula de sua array. As linhas curvas que navegam entre linhas "
"representam um certo valor de um dado. Quando duas linhas se cruzam, "
"significa que dois valores foram alternados neste momento; uma bifurcação "
"numa linha representa uma cópia de valor; quando um valor é magenta e "
"seguido de uma interrogação (?), foi lido usando getValor(); Se o valor é "
"vermelho e seguido de uma exclamação (!), foi escrito com setValor()."

#. type: Content of: <p>
#: src/plm/universe/sort/SortingWorld.html:57
msgid ""
"This view, inspired from Aldo Cortesi, reveals very helpful understand the "
"inner behavior of sorting algorithms."
msgstr ""
"Esta visão, inspirada por Aldo Cortesi, se mostra muito útil para entender o "
"comportamento interno de algoritmos de ordenação."

#. type: Content of: <h3>
#: src/lessons/sort/basic/Main.html:2 src/lessons/sort/basic/short_desc.html:2
msgid "Sorting Algorithms"
msgstr "Algoritmos de Ordenação"

#. type: Content of: outside any tag (error?)
#: src/lessons/sort/basic/Main.html:4
msgid ""
"This lesson allows to experiment with some classical sorting algorithms (and "
"some less common variant of them). The goal is two fold: you can first "
"better understand the idea of these algorithms by writing them yourself. But "
"even if you don't code the algorithms, you can use the demo mode to organize "
"\"races\" between these algorithms to experiment in practice what the "
"different asymptotical complexity mean."
msgstr ""
"Esta lição permite a experimentação com alguns algoritmos de ordenação "
"clássicos (e algumas variações menos comuns deles). E temos um duplo "
"objetivo: você pode primeiro compreender melhor a ideia destes algoritmos "
"escrevendo eles por si só. Mas mesmo se você não codificar os algoritmos, "
"você pode usar o modo de demonstração para organizar \"corridas\" entre os "
"algoritmos para experimentar na prática o que significam diferentes "
"complexidades assintóticas."

#. type: Content of: <p>
#: src/lessons/sort/basic/Main.html:11
msgid ""
"More exercises are planned for the future, on recursive sorting algorithms "
"(such as QuickSort and MergeSort) or using other microworlds to apply these "
"algorithms to other contexts."
msgstr ""
"Mais exercícios estão previstos para o futuro, sobre os algoritmos de "
"ordenação recursivos (como o QuickSort e o MergeSort) ou usando outros "
"micromundos para aplicar estes algoritmos a outros contextos."

#. type: Content of: <ul><li>
#: src/lessons/sort/basic/Main.html:19
msgid ""
"Other graphical representations could be proposed, such as the ones "
"presented at <a href=\"http://sorting.at/\">http://sorting.at/</a>."
msgstr ""
"Outras representações gráficas podem ser propostas, como aquelas "
"apresentadas em <a href=\"http://sorting.at/\">http://sorting.at/</a>."

#. type: Content of: <p>
#: src/lessons/sort/basic/short_desc.html:4
msgid ""
"This lesson allows to experiment with some classical sorting algorithms (and "
"some less common variant of them :)"
msgstr ""
"Esta lição permite a experimentação com alguns algotimos de ordenação "
"clássicos (e algumas variantes menos comuns deles :)"

#. type: Content of: <p>
#: src/lessons/sort/basic/short_desc.html:7
#: src/lessons/recursion/lego/short_desc.html:6
#: src/lessons/maze/short_desc.html:6
msgid ""
"You are supposed to master the bases of programming to take this lesson."
msgstr "Para fazer esta lição você deve dominar as bases da programação."

#. type: Content of: <h1>
#: src/lessons/sort/basic/bubble/AlgBubbleSort1.html:2
msgid "BubbleSort"
msgstr "BubbleSort"

#. type: Content of: <p>
#: src/lessons/sort/basic/bubble/AlgBubbleSort1.html:4
msgid ""
"Welcome to the sorting universe. It allows you to experiment with the "
"existing sorting algorithms. The list of buildins that you can use in your "
"algorithms is available in the world reference documentation (\"Help\"-&gt;"
"\"About this world\")."
msgstr ""
"Bem vindo ao universo da ordenação. Ele permite que você experimente os "
"algoritmos de ordenação existentes. A lista de \"buildins\" que você pode "
"usar nos seus algoritmos está disponível na documentação de referência do "
"mundo (\"Ajuda\"-&gt;\"Sobre este mundo\")."

#. type: Content of: <p>
#: src/lessons/sort/basic/bubble/AlgBubbleSort1.html:8
msgid ""
"It is not enough to sort the array to pass the exercises. Your solution must "
"strictly follow the expected behavior of each exercise. This is enforced by "
"checking that your algorithm needs the same amount of read and write "
"operations to sort the array."
msgstr ""
"Não é suficiente ordenar a array para passar nos exercícios. Sua solução "
"deve seguir estritamente o comportamento esperado em cada exercício. Isto é "
"reforçado verificando que seu algoritmo precisa da mesma quantidade de "
"operações de escrita e leitura para ordenar a array."

#. type: Content of: <p>
#: src/lessons/sort/basic/bubble/AlgBubbleSort1.html:13
msgid ""
"When your algorithm diverges from the expectation, understanding the "
"difference between your code and the expected solution can reveal very "
"difficult. To help in this process, it is posible to graphically explore the "
"history of your sorting algorithm. Switch to the Objective view and use the "
"contextual menu (right click)  to switch from the the view of the current "
"state to the view of its history."
msgstr ""
"Quando seu algoritmo divergge das expectativas, entender a diferença entre "
"seu código e a solução esperada pode ser muito difícil. Para ajudar neste "
"processo, é possível explorar graficamente a história de seu algoritmo de "
"ordenação. Alterne para a visão Objetivo e use o menu contextual (clique com "
"o botão direito) para alternar da visão do estado atual para a visão de seu "
"histórico."

#. type: Content of: <h2>
#: src/lessons/sort/basic/bubble/AlgBubbleSort1.html:28
msgid "First attempt at BubbleSort"
msgstr "Primeira tentativa no BubbleSort"

#. type: Content of: <p>
#: src/lessons/sort/basic/bubble/AlgBubbleSort1.html:30
msgid ""
"This first sorting algorithm is the most simple one: Bubble sort consists in "
"progressively moving up the smaller elements of the array, as if they were "
"air bubbles moving up to the surface of a liquid. The algorithm traverse the "
"array, and compare any pair of adjacent elements. If two adjacent elements "
"are wrongly sorted, they are swapped. Once the array was completely "
"traversed, the operation starts again from the beginning. When no elements "
"were sorted after a full traversal, it means that the array is completely "
"sorted: the algorithm can stop.  Bubble sort is studied because of its "
"simplicity, but it is almost never used in practice because of its bad "
"performance (O(n^2) on average)."
msgstr ""
"O primeiro algoritmo de ordenação é o mais simples: Bubble sort consiste em "
"progressivamente mover o menor elemento da array, como se fossem bolhas de "
"ar subindo para a superfície de um líquido. O algoritmo percorre a array e "
"compara qualquer par de elementos adjacentes. Se dois elementos adjacentes "
"estiverem fora de ordem, eles são alternados. Quando a array estiver "
"completamente percorrida, a operação começa de novo do começo. Quando nenhum "
"elemento for ordenado após uma passagem completa, significa que a array está "
"completamente ordenada: e o algoritmo pode parar.  Bubble sort é estudado "
"por causa da sua simplicidade, mas quase nunca é usado na prática por causa "
"de seu baixo desempenho (O(n^2) em média)."

#. type: Attribute 'alt' of: <div>
#: src/lessons/sort/basic/bubble/AlgBubbleSort1.html:40
#: src/lessons/sort/basic/bubble/AlgBubbleSort2.html:12
msgid "Show Tip (Pseudo-code)"
msgstr "Mostrar Dica (Pseudo-código)"

#. type: Content of: <div><p>
#: src/lessons/sort/basic/bubble/AlgBubbleSort1.html:41
msgid "The pseudo-code of the BubbleSort algorithm is the following:"
msgstr "O pseudo-código do algoritmo BubbleSort é o seguinte:"

#. type: Content of: <div><pre>
#: src/lessons/sort/basic/bubble/AlgBubbleSort1.html:42
#, no-wrap
msgid ""
"do: \n"
"        For each i in [0,len-2]\n"
"          If cells i and i+1 must be swapped, do it\n"
"while we swapped something during last traversal\n"
msgstr ""
"faça: \n"
"        Para cada i em [0,len-2]\n"
"          Se a célula i e i+1 devem ser alternadas, alterne\n"
"enquanto algo foi alternado na última passagem\n"

#. type: Content of: <h1>
#: src/lessons/sort/basic/bubble/AlgBubbleSort2.html:2
msgid "BubbleSort (take 2)"
msgstr "BubbleSort (take 2)"

#. type: Content of: <p>
#: src/lessons/sort/basic/bubble/AlgBubbleSort2.html:4
msgid ""
"If you look carefully at the behavior of BubbleSort, a first easy "
"optimization appears: after one traversal, the last element of the array "
"must be the biggest of all since the traversal moved it up like a bubble to "
"its position. More generally, after N traversal, we know that the N last "
"elements of the array are already sorted. It is thus not necessary to "
"compare them again during the subsequent traversals. For now, we will have "
"as many traversal as there is in the array."
msgstr ""
"Se você olhar atentamente para o comportamento do BubbleSort, uma primeira e "
"fácil otimização aparece: depois de uma travesia, o último elemento da array "
"é o maior de todos pois a travessia moveu ele para cima como uma bolha para "
"a sua posição. Mais geralmente, depois de N travessias, sabemos que os "
"últimos N elementos da array já estão ordenados. Portanto não é necessário "
"compará-los de novo durante travessias subsequentes. Por agora, vamos ter "
"tantas travessias quantos elementos na array."

#. type: Content of: <div><p>
#: src/lessons/sort/basic/bubble/AlgBubbleSort2.html:13
msgid "The pseudo-code of the BubbleSort2 algorithm is the following:"
msgstr "O pseudo-código do algoritmo BubbleSort2 é o seguinte:"

#. type: Content of: <div><pre>
#: src/lessons/sort/basic/bubble/AlgBubbleSort2.html:14
#, no-wrap
msgid ""
"For all i in [len-2,0] (traversing from biggest to smallest)\n"
"       For all j in [0, i]\n"
"          If cells j and j+1 must be swapped, do it\n"
msgstr ""
"Para todo i em [len-2,0] (percorrendo do maior para o menor)\n"
"       Para todo j em [0, i]\n"
"          Se células j e j+1 devem ser trocadas, troque\n"

#. type: Content of: <p>
#: src/lessons/sort/basic/bubble/AlgBubbleSort2.html:20
msgid ""
"When we run this algorithm, it is quite disappointing to see that it runs "
"approximately at the same speed than the basic version of BubbleSort. This "
"is a graphical effect only since only value changes are graphically "
"represented. Since this variation avoids some useless comparisons, it does "
"exactly the same amount of swaps that the basic version. It is thus quite "
"logical that the graphical interface draws this version at the same pace "
"than the base version. But the statistics on the amount of reads show that "
"we saved about the fourth of the amount of reads, which is not bad."
msgstr ""
"Quando rodamos este algoritmo, é bastante desapontador ver que ele executa "
"aproximadamente na mesma velocidade que a versão básica do BubbleSort. Isto "
"é um elemento gráfico apenas já que apenas mudanças de valores são "
"representadas graficamente. Como esta variação evita algumas comparações "
"inúteis, ela faz exatamente a mesma quantidade de trocas que a versão "
"básica. É portanto bastante lógico que a interface gráfica desenhe esta "
"versão no mesmo ritmo que a versão básica. Mas as estatísticas da quantidade "
"de leituras mostram que economizamos cerca de um quarto das leituras, o que "
"não é nada mal."

#. type: Content of: <p>
#: src/lessons/sort/basic/bubble/AlgBubbleSort2.html:29
msgid ""
"From the asymptotic complexity point of view, there is absolutely no "
"difference: this variation is still in O(n^2) on average (our gain is only "
"on the constant term, ignored when computing the asymptotic complexity)."
msgstr ""
"Do ponto de vista da complexidade asimtótica, não existe nenhuma diferença: "
"Esta variação ainda é O(n^2) no caso médio (nosso ganho é apenas no termo "
"constante, ignorado quando se está calculando a complexidade asimtótica)."

#. type: Content of: <h1>
#: src/lessons/sort/basic/bubble/AlgBubbleSort3.html:2
msgid "BubbleSort (take 3)"
msgstr "BubbleSort (take 3)"

#. type: Content of: <p>
#: src/lessons/sort/basic/bubble/AlgBubbleSort3.html:4
msgid ""
"Let's now reintroduce the little optimization we removed at previous step: "
"if a traversal does not swap any element, it means that the array is already "
"sorted. In that case, we want to stop the whole sorting process."
msgstr ""
"Vamos agora reintroduzir a pequena otimização que fizemos no passo anterior: "
"se uma passagem não troca nenhum elemento, significa que a array já está "
"ordenada. Neste caso, vamos parar todo o processo de ordenação."

#. type: Content of: <p>
#: src/lessons/sort/basic/bubble/AlgBubbleSort3.html:9
msgid ""
"[!java|python|c]For that, simply use the <code>break</code> keyword, which "
"breaks the current loop.  Beware, if you have several nested loops, this "
"will apply to the internal one.[/!] [!scala]For that, simply quit the "
"current function by calling <code>return</code> with no associated value.[/!]"
msgstr ""
"[!java|python|c]Para isto, simplesmente use a palavra-chave <code>break</"
"code>, que interrompe o loop atual. Cuidado, se você tem vários loops "
"aninhados, isto só vai ter efeito no mais interno.[/!] [!scala]Para isto, "
"simplesmente saia da função atual chamando <code>return</code> sem nenhum "
"valor associado.[/!]"

#. type: Attribute 'alt' of: <div>
#: src/lessons/sort/basic/bubble/AlgBubbleSort3.html:14
msgid "If you want, this tip shows the pseudo-code."
msgstr "Se você quiser, esta dica mostra o pseudo-código."

#. type: Content of: <div><pre>
#: src/lessons/sort/basic/bubble/AlgBubbleSort3.html:16
#, no-wrap
msgid ""
"For all i in [len-2,0] (traversing from biggest to smallest)\n"
"       For all j in [0, i]\n"
"          If cells j and j+1 must be swapped, do it\n"
"       If traversal on j did not swap anything, break the for loop\n"
msgstr ""
"para todo i em [len-2,0] (percorrendo do maior para o menor)\n"
"       Para todo j em [0, i]\n"
"          Se células j e j+1 devem ser trocadas, troque\n"
"       Se ao percorrer j não fez nenhuma troca, pare o loop\n"

#. type: Content of: <p>
#: src/lessons/sort/basic/bubble/AlgBubbleSort3.html:23
msgid ""
"This optimization is even more disappointing: it only provide a gain of a "
"few percents on the amount of reads over BubbleSort2."
msgstr ""
"Esta otimização é ainda mais desapontadora: ela só dá um ganho de alguns "
"porcento sobre o BubbleSort2 no total de leituras."

#. type: Content of: <h1>
#: src/lessons/sort/basic/cocktail/AlgCocktailSort1.html:2
msgid "CocktailSort"
msgstr "CocktailSort"

#. type: Content of: <p>
#: src/lessons/sort/basic/cocktail/AlgCocktailSort1.html:4
msgid ""
"To improve further the BubbleSort algorithm, we need to look closer its "
"behavior. One can notice that big elements are moved very quickly in "
"position while small ones move very slowly to their destination. They are "
"thus traditionally referred to as \"rabbits\" and \"turtles\" respectively "
"for big fast values and small slow ones."
msgstr ""
"Para melhorar ainda mais o algoritmo BubbleSort, precisamos ver seu "
"comportamente bem de perto. Você pode perceber que os elementos grandes se "
"movem bem rápido enquanto os pequenos se movem lentamente para seus "
"destinos. Eles são então tradicionalmente chamados de \"coelhos\" e "
"\"tartarugas\" respectivamente para valores grandes e rápidos e valores "
"pequenos e lentos."

#. type: Content of: <p>
#: src/lessons/sort/basic/cocktail/AlgCocktailSort1.html:10
msgid ""
"To help the turtles moving faster, the cocktail sort traverse alternatively "
"the array from right to left and from left to right. Here is the pseudo-code:"
msgstr ""
"Para ajudar as tartarugas a se mover rápido, o cocktail sort percorre "
"alternativamente a array da direita para a esquerda e da esquerda para a "
"direita. Aqui está o pseudo-código:"

#. type: Content of: <pre>
#: src/lessons/sort/basic/cocktail/AlgCocktailSort1.html:15
#, no-wrap
msgid ""
"Do\n"
"  For all i in [0,len-2], do:\n"
"    if i and i+1 must be swapped, do it\n"
"  For all i in [len-2,0] (downward), do:\n"
"    if i and i+1 must be swapped, do it\n"
"while at least one of the traversal swapped an element\n"
msgstr ""
"Do\n"
"  For all i in [0,len-2], do:\n"
"    if i and i+1 must be swapped, do it\n"
"  For all i in [len-2,0] (downward), do:\n"
"    if i and i+1 must be swapped, do it\n"
"while at least one of the traversal swapped an element\n"

#. type: Content of: <p>
#: src/lessons/sort/basic/cocktail/AlgCocktailSort1.html:23
msgid ""
"One can see that cocktail sort achieves exactly the same amount of swaps "
"than the bubble sort, but improves slightly on read amount. It is however "
"still worse than BubbleSort2 to that extend."
msgstr ""
"Podemos perceber que cocktail sort alcança exatamente a mesma quantidade de "
"trocas que o bubble sort, mas melhora levemente na quantidade de leituras. "
"Entretanto, ele é ainda pior que o BubbleSort2 neste assunto."

#. type: Content of: <h1>
#: src/lessons/sort/basic/cocktail/AlgCocktailSort2.html:2
msgid "CocktailSort (take 2)"
msgstr "CocktailSort (take 2)"

#. type: Content of: <p>
#: src/lessons/sort/basic/cocktail/AlgCocktailSort2.html:4
msgid ""
"We will now apply to CocktailSort the same optimization than BubbleSort2 did "
"to BubbleSort. We must remember the limits of the array part not being "
"sorted yet, and traverse it alternatively from left to right and from right "
"to left:"
msgstr ""
"Vamos agora aplicar ao CocktailSort a mesma otimização que o BubbleSort2 faz "
"no BubbleSort. Devemos lembrar que os limites da parte do array que não está "
"ordenada ainda, e percorrer ela alternativamente da esquerda para a direita "
"e da diretia para a esquerda:"

#. type: Content of: <pre>
#: src/lessons/sort/basic/cocktail/AlgCocktailSort2.html:9
#, no-wrap
msgid ""
"beg=0; end=len-2\n"
"do\n"
"  For all Pour i in [beg,end], do:\n"
"      If cells i and i+1 must be swapped, do it    \n"
"  end -= 1 (this means end = end - 1)\n"
"  For all Pour i in [beg,end] (downwards), do:\n"
"      If cells i and i+1 must be swapped, do it    \n"
"  beg += 1 (this means beg = beg + 1)\n"
"while at least one of the traversal swapped an element\n"
msgstr ""
"beg=0; end=len-2\n"
"do\n"
"  For all Pour i in [beg,end], do:\n"
"      If cells i and i+1 must be swapped, do it    \n"
"  end -= 1 (this means end = end - 1)\n"
"  For all Pour i in [beg,end] (downwards), do:\n"
"      If cells i and i+1 must be swapped, do it    \n"
"  beg += 1 (this means beg = beg + 1)\n"
"while at least one of the traversal swapped an element\n"

#. type: Content of: <h1>
#: src/lessons/sort/basic/cocktail/AlgCocktailSort3.html:2
msgid "CocktailSort (take 3)"
msgstr "CocktailSort (3o tempo)"

#. type: Content of: <p>
#: src/lessons/sort/basic/cocktail/AlgCocktailSort3.html:4
msgid ""
"Even if the asymptotic complexity of CocktailSort2 is the same than the one "
"of BubbleSort, it seem to perform better in practice. It is even possible to "
"improve a bit further by stopping it if the first traversal didn't found "
"anything to swap, without achieving the downwards traversal. Likewise, we "
"can stop if the upward traversal found something to swap, but not the "
"downwards one."
msgstr ""
"Mesmo se a complexidade assintótica de CocktailSort2 for a mesma do "
"BubbleSort, Ele parece melhor na prática. É até mesmo possível melhorar um "
"pouco mais parando ele na primeira rodada que não encontrar nada para "
"alternar, se realizar a rodada para baixo. Da mesma forma, podemos parar se "
"a rodada para cima encontrar algo para alternar mas a rodada para baixo não."

#. type: Content of: <h1>
#: src/lessons/sort/basic/insertion/AlgInsertionSort.html:2
msgid "InsertionSort"
msgstr "InsertionSort"

#. type: Content of: <p>
#: src/lessons/sort/basic/insertion/AlgInsertionSort.html:5
msgid ""
"This sorting algorithm is quite simple to understand and write, even if it "
"is not as efficient as possible. Its asymptotic complexity is in O(n2), but "
"it is more efficient in practice (linear in best case, ie when the array is "
"already sorted, and N2/4 on average)."
msgstr ""
"Este algoritmo de ordenação é muito simples de entender e escrever, mesmo se "
"não for o mais eficiente possível. Sua complexidade assintótica é O(n2), mas "
"ele é mais eficiente na prática (linear no melhor caso, ie quando a array já "
"está ordenada, e N2/4 no caso médio)."

#. type: Content of: <p>
#: src/lessons/sort/basic/insertion/AlgInsertionSort.html:10
msgid ""
"The idea is to traverse all elements of the array, and to insert each of "
"them into its proper position in the already sorted part of the array. When "
"we look at an element x, the situation is the following: any elements to the "
"left of the array are already sorted, and we have to insert x at its "
"position in the array."
msgstr ""
"A ideia é percorrer todos os elementos da array, e inserir cada um deles em "
"sua posição correta numa parte já ordenada da array. Quando nós olhamos para "
"um elemento x, a situação é a seguinte: qualquer elemento da esquerda da "
"array já está ordenado, e temos que inserir x na sua posição na array."

#. type: Content of: <p>
#: src/lessons/sort/basic/insertion/AlgInsertionSort.html:18
msgid "Once this is done, the situation is the following:"
msgstr "Uma vez isto feito, a situação é a seguinte:"

#. type: Content of: <p>
#: src/lessons/sort/basic/insertion/AlgInsertionSort.html:22
msgid "The pseudo-code of this algorithm is thus the following:"
msgstr "O pseudo-código deste algoritmo é então o seguinte:"

#. type: Content of: <pre>
#: src/lessons/sort/basic/insertion/AlgInsertionSort.html:23
#, no-wrap
msgid ""
"For each i in [1,len-1]\n"
"  store the value of i in a variable v\n"
"  copy the cell i-1 into i if i-1 contains a value bigger than v\n"
"  copy the cell i-2 into i-1 if i-2 contains a value bigger than v\n"
"  copy the cell i-3 into i-2 if i-3 contains a value bigger than v\n"
"  copy the cell i-4 into i-3 if i-4 contains a value bigger than v\n"
"  ...\n"
"  copy v into the last cell copied above\n"
msgstr ""
"For each i in [1,len-1]\n"
"  store the value of i in a variable v\n"
"  copy the cell i-1 into i if i-1 contains a value bigger than v\n"
"  copy the cell i-2 into i-1 if i-2 contains a value bigger than v\n"
"  copy the cell i-3 into i-2 if i-3 contains a value bigger than v\n"
"  copy the cell i-4 into i-3 if i-4 contains a value bigger than v\n"
"  ...\n"
"  copy v into the last cell copied above\n"

#. type: Content of: <p>
#: src/lessons/sort/basic/insertion/AlgInsertionSort.html:33
msgid ""
"Naturally, you should use a loop to write the big permutation within the "
"given loop. Writing it this way would be really ... counter-productive."
msgstr ""
"Naturalmente, você deve usar um loop para escrever a grande permutação "
"dentro do loop. Escrever ela desta forma deve ser na verdade ... improdutivo."

#. type: Content of: <p>
#: src/lessons/sort/basic/insertion/AlgInsertionSort.html:36
msgid ""
"If you've always wondered what computer science researchers do nowadays, "
"here is part of the answer: They improve fundamental algorithms so that "
"others can write efficient programs."
msgstr ""
"Se você já se perguntou o que cientistas da computação fazem nos dias de "
"hoje, aqui está uma parte da resposta: Eles melhoram algoritmos fundamentais "
"para que outras pessoas possam escrever programas eficientes."

#. type: Content of: <h2>
#: src/lessons/sort/basic/insertion/AlgInsertionSort.html:40
msgid "Other variation of insertion sort"
msgstr "Outra variação do insertion sort"

#. type: Content of: <p>
#: src/lessons/sort/basic/insertion/AlgInsertionSort.html:42
msgid ""
"TreeSort builds a binary search tree to sort them. It leads to a O(n "
"log(n))  on average, but O(n^2) in worst cases. We won't study this "
"algorithm here since understanding its behavior requires to know what a "
"binary tree is, what is beyond our present goals."
msgstr ""
"TreeSort constrói uma árvore de busca binária para ordená-la. Ele consegue "
"O(n log(n)) no caso médio, mas O(n^2) nos piores casos. Não vamos estudar "
"este algoritmo aqui pois para entendê-lo temos que entender o que uma árvore "
"binária é, o que está além de nossos objetivos atuais."

#. type: Content of: <p>
#: src/lessons/sort/basic/insertion/AlgInsertionSort.html:47
msgid ""
"There is other variations over the insertion sort, such as PatienceSort "
"which builds piles of values and sort each pile afterward. This algorithm "
"presents a 0(n log(n)) timing worst case and a 0(n) space complexity. "
"LibrarySort (proposed in 2004) also trades a bit space in exchange for time "
"since it provide a time complexity of O(n log(n)) but needs to store some "
"more data."
msgstr ""
"Existem variações do insertion sort, tais como o PatienceSort que constrói "
"pilhas de valores e ordena cada pilha depois. Este algoritmo apresenta um "
"tempo 0(n log(n)) no pior caso e uma complexidade de espaço de 0(n). "
"LibrarySort (proposto em 2004) também troca um pouco de espaço por tempo já "
"que tem uma complexidade de tempo de O(n log(n)) mas precisa armazenar um "
"pouco mais de dados."

#. type: Content of: <p>
#: src/lessons/sort/basic/insertion/AlgInsertionSort.html:54
msgid ""
"Wikipedia provides a detailled description of all these algorithms we cannot "
"present here because of time constraints."
msgstr ""
"A Wikipédia fornece uma descrição detalhada de cada um destes algoritmos que "
"não apresentamos aqui devido a limitações de tempo."

#. type: Content of: <h2>
#: src/lessons/sort/basic/shell/AlgShellSort.html:2
msgid "ShellSort"
msgstr "ShellSort"

#. type: Content of: outside any tag (error?)
#: src/lessons/sort/basic/shell/AlgShellSort.html:4
msgid ""
"This algorithm is named after its author, Donald Shell, who published it in "
"1959. It can be seen as an application of the CombSort idea (let elements "
"having a long path to travel take shortcuts) to the insertion sort (CombSort "
"is a variation of BubbleSort). Instead of comparing adjacent values during "
"the insertion sort, it compares values separated by a bigger gap. The bigger "
"the gap, the faster the elements are moved to their final destination, but "
"also the less precise is this move. It is thus mandatory to apply the "
"algorithm with a serie of decreasing gaps. At the last step, when the gap is "
"one, InsertionSort is used, but onto an array which is almost already sorted "
"by previous steps."
msgstr ""
"Este algoritmo é batizado em homenagem a seu autor, Donald Shell, que o "
"publicou em 1959. Ele pode ser visto como uma aplicação da ideia do CombSort "
"(faça com que elementos que tem um longo caminho pegarem atalhos) ao "
"insertion sort (CombSort é uma variação do BubbleSort). Ao invés de comparar "
"valores adjacentes durante o insertion sort, ele compara valores separados "
"por um intervalo maior. Quanto maior o intervalo, mais rápido os elementos "
"se movem para seu destino final, mas também menos preciso fica o movimento. "
"É portanto essencial que o algoritmo vá sendo aplicado numa série de "
"intervalos cada vez menor. No último passo, quando o intervalo for 1, o "
"InsertionSort será usado, mas numa array que estará praticamente ordenada "
"pelos passos anteriores."

#. type: Content of: <p>
#: src/lessons/sort/basic/shell/AlgShellSort.html:15
msgid ""
"Donald Shell propose <code>len/2</code> as initial value of the gap, and "
"then to divide it by 2 at each step. The pseudo-code is thus the following:"
msgstr ""
"Donald Shell propôs <code>len/2</code> como o valor inicial do intervalo, e "
"ir dividindo por 2 a cada passo. O pseudo-código é o seguinte:"

#. type: Content of: <p><pre>
#: src/lessons/sort/basic/shell/AlgShellSort.html:18
#, no-wrap
msgid ""
"gap=len/2\n"
"while gap>0:\n"
"  apply InsertionSort, comparing i-gap and i, then i-2gap and i-gap, then i-3gap and i-2gap, etc.\n"
msgstr ""
"gap=len/2\n"
"while gap>0:\n"
"  apply InsertionSort, comparing i-gap and i, then i-2gap and i-gap, then i-3gap and i-2gap, etc.\n"

#. type: Content of: <p><p>
#: src/lessons/sort/basic/shell/AlgShellSort.html:23
msgid ""
"Just like in CombSort, the sequence of values taken by the gap is crucial "
"for Shell sort performance. In some rare pathological cases, the sequence we "
"used above can lead to a O(n^2) performance. Other sequences were proposed: "
"the Hibbard's increments of 2k − 1 lead to a complexity of O(n^(3/2)) in "
"worst cases. Pratt's increments 2^i3^j lead to a O(nlog(n)log(n) performance "
"in worst cases. The existance of a sequence leading to a O(n log(n)) was "
"precluded by Poonen, Plaxton, and Suel. Thanks to this performance, "
"ShellSort is a valid candidate for array of several hundred thousands when "
"correctly implemented."
msgstr ""
"Assim como no CombSort, a sequência de valores pega pelo intervalo é crucial "
"para a performance do Shell sort. Em alguns casos patológicos raros, a "
"sequência que usamos pode levar a uma performance O(n^2). Outras sequências "
"foram propostas: os incrementos de Hibbard de 2k − 1 levam a uma "
"complexidade de O(n^(3/2)) em casos ruins. incrementos de Pratt 2^i3^j levam "
"a uma performance de O(nlog(n)log(n) nos piores casos. A existência de uma "
"sequência levando a O(n log(n)) foi excluída por Poonen, Plaxton e Suel. "
"Graças a esta performance, ShellSort é um candidato válido para arrays de "
"várias centenas de milhares quando corretamente implementado."

#. type: Content of: <p><p>
#: src/lessons/sort/basic/shell/AlgShellSort.html:33
msgid ""
"In our case, the array are ways too small to benefit of these optimizations. "
"If you ever need to do so, take as initial gap the biggest value of the "
"targeted serie still smaller than the array size, and then use decreasing "
"values of the serie."
msgstr ""
"No nosso caso, a array é pequena demais para se beneficiar destas "
"otimizações. Se você ainda assim quiser, tome o intervalo inicial como o "
"maior valor da série alvo ainda menor que o tamanho do array, e então use "
"valores decrescentes da série."

#. type: Content of: <p><p>
#: src/lessons/sort/basic/shell/AlgShellSort.html:38
msgid ""
"Interestingly enough, determining the best gap sequence for shell sort turns "
"into a research issue of our century in computer science. For example, an "
"article of 2001 introduces the following sequence, which seems to be optimal "
"in practice for arrays of size up to 10^5: {1, 4, 10, 23, 57, 132, 301, 701, "
"1750} (Marcin Ciura, Best Increments for the Average Case of Shellsort, 13th "
"International Symposium on Fundamentals of Computation Theory, LNCS 2001; "
"Vol. 2138)."
msgstr ""
"Um fato interessante: Determinar a melhor sequência de intervalos para o "
"shell sort se tornou um tema de pesquisa de nosso século em ciência da "
"computação. Por exemplo, um artigo de 2001 introduz a seguinte sequência, "
"que parece ser a melhor na prática para arrays de tamanho até 10^5: {1, 4, "
"10, 23, 57, 132, 301, 701, 1750} (Marcin Ciura, Best Increments for the "
"Average Case of Shellsort, 13th International Symposium on Fundamentals of "
"Computation Theory, LNCS 2001; Vol. 2138)."

#. type: Content of: <h1>
#: src/lessons/sort/basic/selection/AlgSelectionSort.html:2
msgid "Selection Sort"
msgstr "Selection Sort"

#. type: Content of: outside any tag (error?)
#: src/lessons/sort/basic/selection/AlgSelectionSort.html:4
msgid ""
"In this exercise we will implement another classical algorithm: selection "
"sort."
msgstr ""
"Neste exercício vamos implementar outro algoritmo clássico: selection sort."

#. type: Content of: <p>
#: src/lessons/sort/basic/selection/AlgSelectionSort.html:7
msgid ""
"The idea is simply to select for each cell of the array the smallest value "
"from the part not already sorted. Thus for the first cell, it takes the "
"smallest value over the whole array. For the second one, it takes the second "
"smallest value, which is the smallest value from the cell not already "
"sorted. You of course don't have to sort the last cell of the array, that is "
"already sorted when you consider it."
msgstr ""
"A ideia é simplesmente selecionar para cada célula da array o menor valor da "
"parte ainda não ordenada. Então para a primeira célula, pegamos o menor "
"valor da array toda. Para a segunda, pegamos o segundo menor valor, que é o "
"menor valor das células ainda não ordenadas."

#. type: Content of: <p><p>
#: src/lessons/sort/basic/selection/AlgSelectionSort.html:14
msgid ""
"More generally, for the cell N, it looks the cell M in [N;len] containing "
"the smallest possible value of the interval. Then, it swaps the content of "
"cell N with the one of cell M."
msgstr ""
"De forma mais geral, para a célula N, ele busca a célula M em [N;len] "
"contendo o menor valor possível do intervalo. Então, alterna o conteúdo da "
"célula N com o da célula M."

#. type: Content of: <p><p><h2>
#: src/lessons/sort/basic/selection/AlgSelectionSort.html:18
msgid "Existing variations"
msgstr "Variações existentes"

#. type: Content of: <p><p>
#: src/lessons/sort/basic/selection/AlgSelectionSort.html:19
msgid ""
"Another classical algorithm which idea is based on the selection of good "
"elements is HeapSort, but it uses a heap data structure which we did not see "
"yet. Simply remember that HeapSort provides a O(n log n) performance in "
"worst case, which is why it is a very interesting algorithm in practice."
msgstr ""
"Outro algoritmo clássico cuja ideia é baseada na seleção de bons elementos é "
"o HeapSort, mas ele usa uma estrutura de dados heap que ainda não vimos. "
"Simplesmente lembre que o HeapSort fornece um desempenho O(n log n) no pior "
"caso, que é o motivo para ele ser bem interessante na prática."

#. type: Content of: <h1>
#: src/lessons/sort/basic/comb/AlgCombSort.html:2
msgid "CombSort"
msgstr "CombSort"

#. type: Content of: <p>
#: src/lessons/sort/basic/comb/AlgCombSort.html:4
msgid ""
"We saw that CocktailSort improve a bit for turtles (i.e. small values near "
"to the end of the array), but it is still possible to achieve better. "
"ComboSort comes down to providing them a short cut: instead of comparing "
"adjacent values, we compare values separated by a gap bigger than 1. That "
"way, turtles will traverse <i>gap</i> cells at each traversal. Naturally, we "
"have to apply the algorithm with decreasing gaps, and finish with <i>gap=1</"
"i> to ensure that the array is correctly sorted afterward. Choosing the "
"right gap and how to decrease it is a difficult question, but in practice, "
"dividing it by 1.3 after each traversal leads to good performance. Here is "
"the corresponding pseudo-code:"
msgstr ""
"Vimos que CocktailSort melhora um pouco as coisas para as tartarugas (i.e. "
"pequenos valores próximos do fim da array), mas ainda é possível fazer "
"melhor. ComboSort vem para fornecer a elas um atalho: ao invés de comparar "
"valores adjacentes, comparamos valores separados por um intervalo (\"gap\") "
"maior que 1. Desta forma, as tartarugas vão percorrer <i>gap</i> células em "
"cada passagem. Naturalmente, temos que aplicar o algoritmo com distâncias "
"decrescentes, e terminar com <i>gap=1</i> para garantir que a array está "
"corretamente ordenada ao final. Escolher a distância correta e como diminuí-"
"la é uma questão difícil, mas na prática, dividir por 1.3 depois de cada "
"passagem leva a uma boa performance. Aqui está o pseudo-código "
"correspondente:"

#. type: Content of: <pre>
#: src/lessons/sort/basic/comb/AlgCombSort.html:16
#, no-wrap
msgid ""
"gap = len;\n"
"do\n"
"   if gap>1 then\n"
"     gap = gap / 1.3\n"
"   i = O\n"
"   while i+gap &lt; len do:\n"
"     if i and i+gap must be swapped, do it\n"
"     increase i by one\n"
"while the gap is bigger than 1 or the last traversal swapped at least one pair\n"
msgstr ""
"gap = len;\n"
"do\n"
"   if gap>1 then\n"
"     gap = gap / 1.3\n"
"   i = O\n"
"   while i+gap &lt; len do:\n"
"     if i and i+gap must be swapped, do it\n"
"     increase i by one\n"
"while the gap is bigger than 1 or the last traversal swapped at least one pair\n"

#. type: Content of: outside any tag (error?)
#: src/lessons/sort/basic/comb/AlgCombSort.html:27
#: src/lessons/maze/island/IslandMaze.html:67
#: src/lessons/welcome/bat/bool1/Max1020.html:6
msgid "[!scala]"
msgstr "[!scala]"

#. type: Content of: <p>
#: src/lessons/sort/basic/comb/AlgCombSort.html:27
msgid ""
"One tricky part is that we want to divide gap, that is an integer (of type "
"Int), by 1.3, that is a Double.  The type system of scala won't let us do "
"this, because such discrepancy usually denotes a programmer error.  As this "
"is not an error this time, we have to convert gap to Double for the time of "
"the operation, and then convert the result back to Int to store it into gap. "
"This should be written this way:"
msgstr ""
"Um detalhe perigoso é que temos que dividir o intervalo, que é um inteiro "
"(ou do tipo Int), por 1.3, que é um Double. O sistema de tipos do scala não "
"nos deixa fazer isto, por que tal discrepância normalmente significa um erro "
"de programação. Como isto não é um erro neste caso, vamos ter que converter "
"o intervalo para Double para o momento da operação, e então converter o "
"resultado de volta para Int para armazená-lo no intervalo. Isto deve ser "
"escrito desta forma:"

#. type: Content of: <pre>
#: src/lessons/sort/basic/comb/AlgCombSort.html:31
#, no-wrap
msgid "gap = (gap.asInstanceOf[Double] / 1.3).asInstanceOf[Int]"
msgstr "gap = (gap.asInstanceOf[Double] / 1.3).asInstanceOf[Int]"

#. type: Content of: <p>
#: src/lessons/sort/basic/comb/AlgCombSort.html:32
msgid ""
"This is rather verbose, but actually, this notation is not very complex. And "
"remember that the type checker is your friend. It's picky and sometimes "
"annoying (as on this one), but it often catches weird bugs that would have "
"been a pain to debug if not catch by the type checker. And since the Scala's "
"authors are pragmatic, the previous expression can be simplified:"
msgstr ""
"Isto é meio exagerado, mas na verdade, esta notação não é muito complexa. E "
"lembre que o verificador de sintaxe é seu amigo. Ele às vezes é chato e "
"irritante (como neste caso), mas frequentemente pega bugs esquisitos que "
"seriam trabalhosos para depurar se não fosse o verificador de sintaxe. E "
"como os autores do Scala são pragmáticos, a expressão anterior pode ser "
"simplificada:"

#. type: Content of: <pre>
#: src/lessons/sort/basic/comb/AlgCombSort.html:36
#, no-wrap
msgid "gap = (gap.toDouble / 1.3).toInt"
msgstr "gap = (gap.toDouble / 1.3).toInt"

#. type: Content of: <p>
#: src/lessons/sort/basic/comb/AlgCombSort.html:37
msgid ""
"<code>toDouble</code> and <code>toInt</code> are just shortcuts for the "
"corresponding expressions <code>asInstanceOf[Double]</code> and "
"<code>asInstanceOf[Int]</code>. It's not very generic, but it's very handy."
msgstr ""
"<code>toDouble</code> e <code>toInt</code> são apenas atalhos para as "
"expressões correspondentes <code>asInstanceOf[Double]</code> e "
"<code>asInstanceOf[Int]</code>. Não é muito genérico, mas é bem prático."

#. type: Content of: <p>
#: src/lessons/sort/basic/comb/AlgCombSort.html:41
msgid ""
"This algorithm was invented by Wlodek Dobosiewicz in 1980, and later "
"rediscovered and popularized by Stephen Lacey and Richard Box, who described "
"it in Byte Magazine in April 1991."
msgstr ""
"Este algoritmo foi inventanndo por Wlodek Dobosiewicz em 1980, e depois "
"redescoberto e popularizado por Stephen Lacey e Richard Box, que o "
"descreveram na Byte Magazine em Abril de 1991."

#. type: Content of: <h1>
#: src/lessons/sort/basic/comb/AlgCombSort11.html:2
msgid "CombSort11"
msgstr "CombSort11"

#. type: Content of: <p>
#: src/lessons/sort/basic/comb/AlgCombSort11.html:4
msgid ""
"The authors of this algorithm observed that the performance is increased if "
"we make sure that the last values of the gap are (11, 8, 6, 4, 3, 2, 1)  "
"rather than (9, 6, 4, 3, 2, 1) or (10, 7, 5, 3, 2, 1). Rework the code of "
"CombSort to ensure just after the gap update that if it is 9 or 10, we "
"should use 11 instead."
msgstr ""
"Os autores deste algoritmo observaram que o desempenho é aumentado se nos "
"certificarmos que os últimos valores do intervalo são (11, 8, 6, 4, 3, 2, 1) "
"ao invés de (9, 6, 4, 3, 2, 1) ou (10, 7, 5, 3, 2, 1). Retrabalhar o código "
"do CombSort para garantir apenas que depois da atualização do intervalo que "
"se ele for 9 ou 10, devemos usar 11."

#. type: Content of: <h1>
#: src/lessons/sort/basic/gnome/AlgGnomeSort.html:2
msgid "GnomeSort"
msgstr "GnomeSort"

#. type: Content of: <p>
#: src/lessons/sort/basic/gnome/AlgGnomeSort.html:4
msgid ""
"The Gnome sort is similar to insertion sort, but the elements are moved in "
"position by a serie of swaps just like in bubble sort. It is named after the "
"supposed behavior of garden gnomes when they sort flower pots. Here is a "
"description of the algorithm by its author:"
msgstr ""
"O Gnome sort é similar ao insertion sort, mas os elementos são movidos de "
"poisção por uma série de trocas que se parecem com o bubble sort. O nome "
"veio do suposto comportamento que gnomos de jardim tem quando ordenam vasos "
"de flores. Aqui está uma descrição do algoritmo por seu autor:"

#. type: Content of: <p>
#: src/lessons/sort/basic/gnome/AlgGnomeSort.html:9
msgid ""
"Gnome Sort is based on the technique used by the standard Dutch Garden Gnome "
"(Du.: tuinkabouter). Here is how a garden gnome sorts a line of flower pots. "
"Basically, he looks at the flower pot next to him and the one immediately "
"after ; if they are in the right order he steps one pot forward, otherwise "
"he swaps them and steps one pot backwards. Boundary conditions: if there is "
"no previous pot, he steps forwards; if there is no pot next to him, he is "
"done.  <i>—Dick Grune</i>"
msgstr ""
"Gnome Sort é baseado na técnica usada pelo gnomo de jardim holandês padrão "
"(em holandês: tuinkabouter). Aqui está como um gnomo de jardim ordena uma "
"fileira de potes de flores. Basicamente, ele procura pela pote de flor "
"próximo a ele e o anterior; se eles estão na ordem correta ele vai para a "
"frente em direção ao próximo pote, caso contrário ele troca os potes e vai "
"pra trás. Condições de contorno: se não existe um pote anterior, ele vai pra "
"frente; se não existe um pote próximo, ele termina.  <i>—Dick Grune</i>"

#. type: Content of: <h1>
#: src/lessons/sort/dutchflag/Main.html:2
#: src/lessons/sort/dutchflag/short_desc.html:2
#: src/lessons/sort/dutchflag/DutchFlagAlgo.html:2
#: src/lessons/sort/dutchflag/universe/DutchFlagWorld.html:2
msgid "The Dutch Flag Problem"
msgstr "O problema da bandeira holandesa"

#. type: Content of: <p>
#: src/lessons/sort/dutchflag/Main.html:4
msgid ""
"This problem was first proposed by E.W Dijkstra in 1976 (in the chapter 14 "
"of his book \"A Discipline of Programming\").  It is a very classical "
"variation of the sorting algorithms since then. It is sometimes useful in "
"real life, but it became famous for its pedagogical properties: its "
"complexity is not trivial, but not complex either.  It can easily be "
"formally proven, but it's not absolutely trivial either."
msgstr ""
"Este problema foi proposto primeiro por E.W Dijkstra em 1976 (no capítulo 14 "
"de seu livro \"A Discipline of Programming\"). É uma variação clássica de "
"algoritmos de ordenação desde então. Ele é às vezes útil em vida real, mas "
"se tornou famosos por suas propriedades pedagógicas: sua complexidade não é "
"trivial, mas não é muito complexo. Pode ser provados formalmente com "
"facilidade, mas não é de forma alguma trivial."

#. type: Content of: <ul><li>
#: src/lessons/sort/dutchflag/Main.html:13
msgid "A temporal view could be welcomed."
msgstr "Uma visão temporal pode ser bem-vinda."

#. type: Content of: <ul><li>
#: src/lessons/sort/dutchflag/Main.html:14
msgid ""
"Other exercises, for example with 2 colors only or with more than 3 colors, "
"could generalize the proposed approach."
msgstr ""
"Outros exercícios, por exemplo com 2 cores apenas ou com mais de 3 cores, "
"podem generalizar a abordagem proposta."

#. type: Content of: <ul><li>
#: src/lessons/sort/dutchflag/Main.html:15
msgid "This problem could be solved recursively."
msgstr "Este problema pode ser resolvido recursivamente."

#. type: Content of: <p>
#: src/lessons/sort/dutchflag/short_desc.html:4
msgid ""
"This is a classical sorting problem, constituting a variation over the "
"insertion sort."
msgstr ""
"Este é um problema de ordenação clássico, constituindo uma variação do "
"insertion sort."

#. type: Content of: <p>
#: src/lessons/sort/dutchflag/DutchFlagAlgo.html:4
msgid ""
"Your work is to sort all the colors of the Dutch flag, and the only provided "
"primitive is to exchange two given lines.  In addition, you should not "
"create any additional variables (but a few indices)."
msgstr ""
"Seu trabalho é ordenar todas as cores da bandeira holandesa, e a única "
"primitiva fornecida é trocar duas linhas dadas. Adicionalmente, você não "
"deve criar quaisquer variáveis adicionais (exceto alguns índices)."

#. type: Content of: <p>
#: src/lessons/sort/dutchflag/DutchFlagAlgo.html:7
msgid ""
"If you think carefully, this can be done in linear time, where you sort a "
"line at each iteration of the loop.  You may want to check again the <a href="
"\"plm://lessons.sort.basic/insertion.AlgInsertionSort\">insertion sort</a>, "
"of which the Dutch Flag sort is a variation. The main difference is that you "
"have 3 insertion points, not only one..."
msgstr ""
"Se você pensar com carinho, isto pode ser feito em tempo linear, onde você "
"ordena uma linha a cada iteração do loop. Você pode querer dar mais uma "
"olhada no <a href=\"plm://lessons.sort.basic/insertion.AlgInsertionSort"
"\">insertion sort</a>, do qual o Dutch Flag sort é uma variação. A principal "
"diferença é que você tem 3 pontos de inserção, e não apenas um..."

#. type: Attribute 'alt' of: <div>
#: src/lessons/sort/dutchflag/DutchFlagAlgo.html:11
msgid "I need an hint to start"
msgstr "Preciso de uma dica para começar"

#. type: Content of: <div>
#: src/lessons/sort/dutchflag/DutchFlagAlgo.html:12
msgid "Do a traversal over your data, saving 3 indices:"
msgstr "Atravesse seus dados, guardando 3 índices:"

#. type: Content of: <div><ul><li>
#: src/lessons/sort/dutchflag/DutchFlagAlgo.html:14
msgid ""
"<code>afterBlue</code> is initialized to 0. Make sure that every cell below "
"<code>afterBlue</code> is filled with blue elements."
msgstr ""
"<code>afterBlue</code> é iniciado como 0. Certifique-se de que cada célula "
"abaixo de <code>afterBlue</code> é preenchida com elementos azuis."

#. type: Content of: <div><ul><li>
#: src/lessons/sort/dutchflag/DutchFlagAlgo.html:15
msgid ""
"<code>whiteRed</code> is initialized to size-1. Make sure that every cell "
"after <code>whiteRed</code> is filled with red elements."
msgstr ""
"<code>whiteRed</code> é iniciado como size-1. Certifique-se de que cada "
"célula depois de <code>whiteRed</code> é preenchida com elementos vermelhos."

#. type: Content of: <div><ul><li>
#: src/lessons/sort/dutchflag/DutchFlagAlgo.html:16
msgid ""
"<code>beforeWhite</code> is initialized to size-1. Make sure that every cell "
"after <code>beforeWhite</code> and before <code>whiteRed</code> is filled "
"with white elements."
msgstr ""
"<code>beforeWhite</code> é iniciado com size-1. Certifiqeu-se de que cada "
"célula depois de <code>beforeWhite</code> e antes de <code>whiteRed</code> é "
"preenchida com elementos brancos."

#. type: Content of: <div>
#: src/lessons/sort/dutchflag/DutchFlagAlgo.html:18
msgid ""
"Note that the unsorted cells are always between <code>afterBlue</code> and "
"<code>beforeWhite</code>."
msgstr ""
"Observe que as células não-ordenadas ficam sempre entre <code>afterBlue</"
"code> e <code>beforeWhite</code>."

#. type: Content of: <div>
#: src/lessons/sort/dutchflag/DutchFlagAlgo.html:20
msgid ""
"At each step of your traversal, check the color of the cell at "
"<code>afterBlue</code> and do the required exchanges.  The loop ending "
"condition is when <code>afterBlue</code> becomes larger than "
"<code>beforeWhite</code>."
msgstr ""
"Em cada passo de sua travessia, verifique a cor da célula em "
"<code>afterBlue</code> e faça as mudanças necessárias. A condição de fim de "
"loop é quando <code>afterBlue</code> se torna maior que <code>beforeWhite</"
"code>."

#. type: Content of: <h2>
#: src/lessons/sort/dutchflag/universe/DutchFlagWorld.html:4
msgid "Provided values"
msgstr "Valores fornecidos"

#. type: Content of: <p>
#: src/lessons/sort/dutchflag/universe/DutchFlagWorld.html:6
msgid ""
"The colors are represented through the following constants: BLUE, WHITE and "
"RED.  You can use them directly in your code."
msgstr ""
"As cores são representadas através das seguintes constantes: BLUE, WHITE e "
"RED. Você pode usá-las diretamente em seu código."

#. type: Content of: <h2>
#: src/lessons/sort/dutchflag/universe/DutchFlagWorld.html:9
#: src/lessons/lander/universe/DelegatingLanderWorld.html:8
msgid "Provided functions"
msgstr "Funções fornecidas"

#. type: Content of: <p>
#: src/lessons/sort/dutchflag/universe/DutchFlagWorld.html:11
msgid "This world is very simple, with only 5 provided functions."
msgstr "Este mundo é bem simples, com apenas 5 funções fornecidas."

#. type: Content of: <pre>
#: src/lessons/sort/dutchflag/universe/DutchFlagWorld.html:13
#, no-wrap
msgid "[!java|c]void [/!]swap([!java|c]int [/!]x[!scala]:Int[/!], [!java|c]int [/!]y[!scala]:Int[/!])"
msgstr "[!java|c]void [/!]alterna([!java|c]int [/!]x[!scala]:Int[/!], [!java|c]int [/!]y[!scala]:Int[/!])"

#. type: Content of: outside any tag (error?)
#: src/lessons/sort/dutchflag/universe/DutchFlagWorld.html:14
msgid "Swap the lines number <code>x</code> and <code>y</code>."
msgstr ""
"Troca as linhas de número <code>x</code> com a de número <code>y</code>."

#. type: Content of: <pre>
#: src/lessons/sort/dutchflag/universe/DutchFlagWorld.html:16
#, no-wrap
msgid "[!java|c]int [/!]getSize() [!scala]:Int[/!]"
msgstr "[!java|c]int [/!]getTamanho() [!scala]:Int[/!]"

#. type: Content of: outside any tag (error?)
#: src/lessons/sort/dutchflag/universe/DutchFlagWorld.html:17
msgid "Returns the amount of lines on this flag."
msgstr "Retorna a quantidade de linhas desta bandeira."

#. type: Content of: <pre>
#: src/lessons/sort/dutchflag/universe/DutchFlagWorld.html:19
#, no-wrap
msgid "[!java|c]int [/!]getColor([!java|c]int [/!]line[!scala]:Int[/!])  [!scala]:Int[/!]"
msgstr "[!java|c]int [/!]getCor([!java|c]int [/!]linha[!scala]:Int[/!])  [!scala]:Int[/!]"

#. type: Content of: outside any tag (error?)
#: src/lessons/sort/dutchflag/universe/DutchFlagWorld.html:20
msgid "Returns the color of the given line."
msgstr "Retorna a cor da linha dada."

#. type: Content of: <pre>
#: src/lessons/sort/dutchflag/universe/DutchFlagWorld.html:22
#: src/lessons/sort/baseball/universe/BaseballWorld.html:31
#, no-wrap
msgid "[!java]boolean [/!][!c]int [/!]isSorted()  [!scala]:Boolean[/!]"
msgstr "[!java]boolean [/!][!c]int [/!]estáOrdenado()  [!scala]:Boolean[/!]"

#. type: Content of: outside any tag (error?)
#: src/lessons/sort/dutchflag/universe/DutchFlagWorld.html:23
msgid "Returns whether the flag is sorted."
msgstr "Retorna verdadeiro se a bandeira estiver ordenada."

#. type: Content of: <pre>
#: src/lessons/sort/dutchflag/universe/DutchFlagWorld.html:25
#: src/lessons/sort/baseball/universe/BaseballWorld.html:37
#, no-wrap
msgid "[!java]boolean [/!][!c]int [/!]isSelected()  [!scala]:Boolean[/!]"
msgstr "[!java]boolean [/!][!c]int [/!]estáSelecionado()  [!scala]:Boolean[/!]"

#. type: Content of: outside any tag (error?)
#: src/lessons/sort/dutchflag/universe/DutchFlagWorld.html:26
#: src/lessons/sort/baseball/universe/BaseballWorld.html:38
msgid "Returns whether the current world is selected in the interface."
msgstr "Retorna verdadeiro se o mundo atual estiver selecionado na interface."

#. type: Content of: <h1>
#: src/lessons/sort/pancake/universe/PancakeWorld.html:2
msgid "PancakeWorld"
msgstr "PancakeWorld"

#. type: Content of: <p>
#: src/lessons/sort/pancake/universe/PancakeWorld.html:4
msgid "This universe is very simple, with only five functions provided."
msgstr "Este universo é bastante simples, com apenas cinco funções fornecidas."

#. type: Content of: <pre>
#: src/lessons/sort/pancake/universe/PancakeWorld.html:6
#, no-wrap
msgid "[!java|c]int [/!]getStackSize()  [!scala]:Int[/!]"
msgstr "[!java|c]int [/!]getTamanhoDaPilha()  [!scala]:Int[/!]"

#. type: Content of: outside any tag (error?)
#: src/lessons/sort/pancake/universe/PancakeWorld.html:7
msgid ""
"Returns the size of the stack, that is the amount of pancakes it contains."
msgstr "Retorna o tamanho da pilha, ou seja, a quantidade de panquecas nela."

#. type: Content of: <pre>
#: src/lessons/sort/pancake/universe/PancakeWorld.html:9
#, no-wrap
msgid "[!java|c]int [/!]getPancakeRadius([!java|c]int [/!]rank[!scala]:Int[/!])  [!scala]:Int[/!]"
msgstr "[!java|c]int [/!]getRaioPanqueca([!java|c]int [/!]rank[!scala]:Int[/!])  [!scala]:Int[/!]"

#. type: Content of: outside any tag (error?)
#: src/lessons/sort/pancake/universe/PancakeWorld.html:10
msgid ""
"Returns the radius of the pancake passed as argument, with the rank of the "
"top-most pancake being 0."
msgstr ""
"Retorna o raio da panqueca passado como argumento, com o rank da panqueca "
"mais acima sendo 0."

#. type: Content of: <pre>
#: src/lessons/sort/pancake/universe/PancakeWorld.html:12
#, no-wrap
msgid "[!java]boolean [/!][!c]int [/!]isPancakeUpsideDown([!java|c]int [/!]rank[!scala]:Int[/!])   [!scala]:Boolean[/!]"
msgstr "[!java]boolean [/!][!c]int [/!]panquecaDeCabeçaPraBaixo([!java|c]int [/!]rank[!scala]:Int[/!])   [!scala]:Boolean[/!]"

#. type: Content of: outside any tag (error?)
#: src/lessons/sort/pancake/universe/PancakeWorld.html:13
msgid ""
"Returns whether the pancake passed as argument upside-down, that is, if its "
"burned side is on top. As usual, the top-most pancake is of rank 0."
msgstr ""
"Retorna se a panqueca passada como argumento está de cabeça para baixo, ou "
"seja, se o lado queimado está para cima. Como sempre, a panqueca mais acima "
"é a de rank 0."

#. type: Content of: <pre>
#: src/lessons/sort/pancake/universe/PancakeWorld.html:15
#, no-wrap
msgid "[!java|c]void [/!]flip([!java|c]int [/!]amount[!scala]:Int[/!])"
msgstr "[!java|c]void [/!]flip([!java|c]int [/!]amount[!scala]:Int[/!])"

#. type: Content of: outside any tag (error?)
#: src/lessons/sort/pancake/universe/PancakeWorld.html:16
msgid ""
"Flips the <code>amount</code> first pancakes composing the stack, from the "
"top of it."
msgstr ""
"Vira as primeiras <code>amount</code> panquecas que compõe a pilha, do topo "
"dela."

#. type: Content of: <pre>
#: src/lessons/sort/pancake/universe/PancakeWorld.html:18
#, no-wrap
msgid "[!java]boolean [/!][!c]int [/!]isSorted()   [!scala]:Boolean[/!]"
msgstr "[!java]boolean [/!][!c]int [/!]estáOrdenado()   [!scala]:Boolean[/!]"

#. type: Content of: outside any tag (error?)
#: src/lessons/sort/pancake/universe/PancakeWorld.html:19
msgid "Returns whether the pancake stack is correctly sorted."
msgstr ""
"Retorna verdadeiro se a pilha de panquecas estiver corretamente ordenada."

#. type: Content of: <pre>
#: src/lessons/sort/pancake/universe/PancakeWorld.html:21
#, no-wrap
msgid "[!java]boolean [/!][!c]int [/!]isSelected()   [!scala]:Boolean[/!]"
msgstr "[!java]boolean [/!][!c]int [/!]selecionado()   [!scala]:Boolean[/!]"

#. type: Content of: <h1>
#: src/lessons/sort/pancake/Main.html:2
#: src/lessons/sort/pancake/BasicPancake.html:2
msgid "Pancake Sorting"
msgstr "Ordenação da panqueca"

#. type: Content of: <p>
#: src/lessons/sort/pancake/Main.html:4
msgid ""
"This activity is inspired by a problem first introduced in 1975 by Harry "
"Dweighter in the American Mathematical Monthly. The question is not only to "
"sort the pancakes, but to determine <code>f(n)</code> the <i>minimal</i> "
"amount of flips mandated to sort any stack of size <code>n</code>."
msgstr ""
"Esta atividade é inspirada por um problema introduzido pela primeira vez em "
"1975 por Harry Dweighter no American Mathematical Monthly. A pergunta não é "
"apenas ordenar panquecas, mas determinar <code>f(n)</code> a quantidade "
"<i>minima</i> de viradas necessárias para ordenar qualquer pilha de tamanho "
"<code>n</code>."

#. type: Content of: <p>
#: src/lessons/sort/pancake/Main.html:8
msgid ""
"This problem is now famous because Bill Gates authored (with C. "
"Papadimitriou) his only scientific publication in 1979 on this topic, "
"providing a faster algorithm and proving that <code>17n/16 ≤ f(n) ≤ (5n"
"+5)/3</code>.  This was the only publication of Bill Gates before he "
"invented Windows and became rich."
msgstr ""
"Este problema é agora famoso por que Bill Gates escreveu (com C. "
"Papadimitriou) sua única publicação científica em 1979 neste tópico, "
"fornecendo um algoritmo mais rápido e provando que <code>17n/16 ≤ f(n) ≤ (5n"
"+5)/3</code>.  Este foi a única publicação de Bill Gates antes dele inventar "
"o Windows e ficar rico."

#. type: Content of: <p>
#: src/lessons/sort/pancake/Main.html:12
msgid ""
"Then, David X. Cohen, the inventor of the Futurama comics with many "
"mathematical references, introduced the variant with burnt pancakes and "
"studied its complexity with Manuel Blum in 1993."
msgstr ""
"Então, David X. Cohen, o inventor dos quadrinhos Futurama com muitas "
"referências matemáticas, introduziu a variante com panquecas queimadas e "
"estudou sua complexidade com Manuel Blum em 1993."

#. type: Content of: <p>
#: src/lessons/sort/pancake/Main.html:15
msgid ""
"An article of 2012 (by L. Bulteau, G. Fertin and I. Rusu) proved that "
"determining the minimal amount of flips to sort the stack is a NP-complete "
"problem. Naturally, the stack sorting problem is not NP-complete since it "
"can be solved in 2n-3 steps with the naive algorithm and (5n+5)/3 steps with "
"the Gates algorithm.  That's determining the minimal amount of steps that is "
"NP."
msgstr ""
"Um artigo de 2012 (de L. Bulteau, G. Fertin e I. Rusu) provou que determinar "
"a quantidade mínima de viradas para ordenar a pilha é um problema NP-"
"completo. Naturalmente, o problema de ordenar a pilha não é NP-complete pois "
"pode ser resolvido em 2n-3 passos com o algoritmo simplório e (5n+5)/3 "
"passos com o algoritmo de Gates. É a determinação da quantidade mínima de "
"passos que é NP."

#. type: Content of: <p>
#: src/lessons/sort/pancake/Main.html:20
msgid "Further information can be found on the wikipedia page, as usual."
msgstr ""
"Mais informações podem ser encontradas na página da wikipédia, como sempre."

#. type: Content of: <p>
#: src/lessons/sort/pancake/Main.html:23
msgid ""
"This activity is also integrated to CSIRL (my repository of <i>free</i> "
"unplugged activities to introduce computer science, available at http://www."
"loria.fr/~quinson/Mediation/SMN/), and it may be interesting to run the "
"unplugged activities before implementing these algorithms in PLM."
msgstr ""
"Esta atividade também é integrada ao CSIRL (meu repositório de atividades "
"offline <i>livres</i> para introdução de ciência da computação, disponível "
"em http://www.loria.fr/~quinson/Mediation/SMN/), e pode ser interessante "
"executar as atividades offline antes de implementar estes algoritmos no PLM."

#. type: Content of: <ul><li>
#: src/lessons/sort/pancake/Main.html:34
msgid "A temporal view similar to the sorting universe could be helpful"
msgstr "Uma visão temporal similar ao universo da ordenação pode ser útil"

#. type: Content of: <ul><li>
#: src/lessons/sort/pancake/Main.html:35
msgid ""
"Other exercises, for example on the Roti sorting, with a pile of Roti that "
"have to touch the grill on each face (see http://en.wikipedia.org/wiki/"
"Pancake_sorting#The_identical_pancake_stack)."
msgstr ""
"Outros exercícios, por exemplo sobre Roti sorting, com uma pilha de Roti que "
"tem que tocar a grelha em ambos os lados (see http://en.wikipedia.org/wiki/"
"Pancake_sorting#The_identical_pancake_stack)."

#. type: Content of: <h3>
#: src/lessons/sort/pancake/short_desc.html:2
msgid "The pancake problem"
msgstr "O problema da panqueca"

#. type: Content of: <p>
#: src/lessons/sort/pancake/short_desc.html:4
msgid "Help the poor psychorigid pancakes' chef to sort its pancake stack!"
msgstr ""
"Ajude o pobre chef das panquecas psychorigid a ordenar sua pilha de "
"panquecas!"

#. type: Content of: <p>
#: src/lessons/sort/pancake/short_desc.html:6
msgid ""
"This funny problem leads to algorithms that are somewhat more challenging to "
"implement. You are supposed to master the bases of programming and some "
"sorting algorithms to take this lesson."
msgstr ""
"Este problema divertido leva a algoritmos que são de certa forma mais "
"desafiadores de implmentar. Espera-se que você domine as bases da "
"programação e de algoritmos de ordenação para fazer esta lição."

#. type: Content of: <p>
#: src/lessons/sort/pancake/BasicPancake.html:4
msgid ""
"The pancake sorting problem is a simple puzzle where you have a set of "
"pancakes, each of differing size. The chef cooking the pancake is a bit "
"psychorigid: he hates when the pancakes are not correctly sorted on the "
"plate. He loves when they are correctly ordered, with the small ones over "
"the larger ones. As every pancake maker, he masters the pancake flipping "
"with his spatula. He can flip the pancake on top of the stack, or even "
"several pancakes at once. The thing is that he has only one plate and the "
"table is too dirty to place pancakes on it, even temporary. The only allowed "
"operation is to flip some pancakes that are on top of the stack."
msgstr ""
"O problema da ordenação da panqueca é um quebra-cabeças simples onde você "
"tem um conjunto de panquecas, cada uma de tamanhos diferentes. O chef que "
"cozinha as panquecas é um pouco psicorígido: ele odeia quando as panquecas "
"não estão corretamente ordenadas no prato. Ele adora quando elas estão "
"corretamente ordenadas, com as pequenas sobre as grandes. Como todo fazedor "
"de panquecas, ele é mestre em virar a panqueca com a espátula. Ele pode "
"virar a panqueca do topo da pilha, ou até mesmo várias panquecas de uma vez. "
"O problema é que ele tem apenas um prato e a mesa está muito suja para "
"colocar as panquecas nela, mesmo temporariamente. A única operação permitida "
"é virar algumas panquecas que estão no topo da pilha."

#. type: Content of: <p>
#: src/lessons/sort/pancake/BasicPancake.html:13
msgid ""
"Your work is to help this poor guy sorting his stack by flipping the "
"pancakes. Each pancake is defined by its radius and rank within the stack, "
"with the top-most pancake is at rank 0, and the one below at rank 1."
msgstr ""
"Seu trabalho é ajudar este pobre coitado a ordenar a pilha dele virando as "
"panquecas. Cada panqueca é definida pelo raio e rank dentro da pilha, onde a "
"panqueca de cima está com rank 0, e a próxima com rank 1."

#. type: Content of: <p>
#: src/lessons/sort/pancake/BasicPancake.html:17
msgid ""
"Note that you can play physically with pieces of paper or wood at first to "
"get the grasp on this problem. This is even one of the activities that I use "
"in my CS-IRL (computer science in real life) project to introduce the "
"concept of algorithm to absolute beginners that wonder about our science. "
"More information at http://www.loria.fr/~quinson/Mediation/SMN/ (in French)."
msgstr ""
"Observe que você pode brincar primeiro fisicamente com pedaços de papel ou "
"madeira para ter a ideia do problema. Esta é inclusive uma das atividades "
"que eu uso no meu projeto CS-IRL (computer science in real life - ciência da "
"computação na vida real) para introduzir o conceito de algoritmo para "
"completos iniciantes que querem saber da nossa ciência. Mais informações em "
"http://www.loria.fr/~quinson/Mediation/SMN/ (em francês)."

#. type: Attribute 'alt' of: <p><div>
#: src/lessons/sort/pancake/BasicPancake.html:23
#: src/lessons/sort/pancake/BubblePancake.html:10
msgid "I don't get it. I need some help."
msgstr "Não compreendi. preciso de ajuda."

#. type: Content of: <p><div>
#: src/lessons/sort/pancake/BasicPancake.html:24
msgid ""
"You should try to first move the largest pancake to the bottom, and then the "
"largest but one pancake on top of it, and then the one just smaller on top, "
"and so on."
msgstr ""
"Você deve tentar primeiro mover a maior panqueca para o fundo, e então a "
"segunda maior para cima dela, e depois a menor para o topo e assim por "
"diante."

#. type: Attribute 'alt' of: <p><p><div>
#: src/lessons/sort/pancake/BasicPancake.html:28
#: src/lessons/sort/pancake/BubblePancake.html:13
msgid "The first tip was not enough. I need another one."
msgstr "A primeira dica não foi suficiente. Preciso de outra."

#. type: Content of: <p><div>
#: src/lessons/sort/pancake/BasicPancake.html:29
msgid ""
"So first, you need to move the largest pancake at the bottom of the stack."
msgstr ""
"Logo, em primeiro lugar você precisa mover a maior panqueca para o fundo da "
"pilha."

#. type: Content of: <p><div>
#: src/lessons/sort/pancake/BasicPancake.html:30
msgid ""
"Can you imagine a situation in which you can easily bring this damn large "
"pancake to the bottom?"
msgstr ""
"Você pode imaginar uma situação onde você possa facilmente trazer esta "
"panqueca super-grande para o fundo?"

#. type: Content of: <p><div>
#: src/lessons/sort/pancake/BasicPancake.html:31
msgid "How could you reach this situation from the current one?"
msgstr "Como você pode atingir esta situação a partir da atual?"

#. type: Content of: <h1>
#: src/lessons/sort/pancake/BubblePancake.html:2
msgid "Bubble Pancakes"
msgstr "Bubble Pancakes"

#. type: Content of: <p>
#: src/lessons/sort/pancake/BubblePancake.html:4
msgid ""
"This problem is similar to the previous: you have to sort the pancakes, the "
"smallest at the top and the biggest at the bottom, except you can only flip "
"them to sort."
msgstr ""
"Este problema é similar ao anterior: você tem que ordenar as panquecas, a "
"menor no topo e a maior embaixo, mas você só pode virar elas para ordená-las."

#. type: Content of: <p>
#: src/lessons/sort/pancake/BubblePancake.html:6
msgid ""
"The purpose here is to sort them using the bubble algorithm, where one "
"pancake is moved to the bottom until it encounters a bigger one. In "
"graphical representations, it looks like a bubble takes the element and move "
"them through the pile. This is where its name comes from."
msgstr ""
"O objetivo aqui é ordená-los usando o algoritmo da bolha (bubble), onde uma "
"panqueca é movida para o fundo até encontrar uma maior que ela. Em "
"representações gráficas, parece que uma bolha ocupa o lugar do elemento e "
"move ele através da pilha. É daí que saiu o nome do algoritmo."

#. type: Content of: <p>
#: src/lessons/sort/pancake/BubblePancake.html:8
msgid ""
"Now, using pancakes makes it a little more difficult to write, because you "
"have to find a way to swap only two pancakes at a time."
msgstr ""
"Agora, usando panquecas torna as coisas um pouco mais difíceis de escrever, "
"pois você tem que encontrar uma forma de alternar apenas duas panquecas por "
"vez."

#. type: Content of: <p><div>
#: src/lessons/sort/pancake/BubblePancake.html:11
msgid ""
"The bubble algorithm consists in browsing the whole pile from top to bottom, "
"and making a comparision between two pancakes. Each time the top pancake is "
"bigger than the one below, you have to swap them, then compare the bigger "
"pancake you just swapped with one below, and so on. You have to browse "
"through the entire pile until no swap has occurred, in which case the pile "
"is sorted."
msgstr ""
"O Algoritmo da bolha consiste em navegar a pilha completa de cima para "
"baixo, e fazendo uma comparação entre duas panquecas. Cada vez que a "
"panqueca de cima é maior que a de baixo, você tem que alterná-las, então "
"comparar a panqueca maior que você acabou de alternar com a de baixo dela, e "
"por aí vai. Você tem que navegar através de toda a pilha até que nenhuma "
"troca ocorra, e neste caso, a pilha estará ordenada."

#. type: Content of: <p><p><div>
#: src/lessons/sort/pancake/BubblePancake.html:14
msgid ""
"If you don't understand the basic bubble sorting algorithm, you should try "
"the exercises within the “Sorting algorithms” lesson. If you do, but can't "
"figure a way to swap only two pancakes at a time, think of a situation where "
"only two pancakes are swapped at a time, and find a way to reach that "
"situation."
msgstr ""
"Se você não entende o algoritmo básico bubble sort, tente os exercícios da "
"lição Algoritmos de Ordenação. Se você consegue, mas não imagina uma forma "
"de alternar apenas duas panquecas por vez, pense na situação onde apenas "
"duas panquecas são alternadas por vez, e encontre uma forma de chegar nesta "
"situação."

#. type: Content of: <h1>
#: src/lessons/sort/pancake/BurnedPancake.html:2
msgid "Burned Pancakes"
msgstr "Panquecas queimadas"

#. type: Content of: <p>
#: src/lessons/sort/pancake/BurnedPancake.html:4
msgid ""
"Hard blow for the chef! The pancakes got burnt on one side! There is no way "
"he can deliver a stack of pancakes with visibly burnt pancakes! You've got "
"to help him ensuring that no pancake is upside-down while sorting his stack."
msgstr ""
"Hard blow for the chef! As panquecas queimaram de um lado! Não há forma de "
"entregar uma pilha de panquecas com paquecas visivelmente queimadas! Você "
"tem que ajudá-lo a ter certeza de que nenhuma panqueca está de cabeça pra "
"baixo enquanto ordena esta pilha."

#. type: Content of: <h1>
#: src/lessons/sort/pancake/GatesPancake.html:2
msgid "Faster Pancake Sorting"
msgstr "Ondenação de Panqueca Rápida"

#. type: Content of: <p>
#: src/lessons/sort/pancake/GatesPancake.html:4
msgid ""
"Unlike others sorting problem, the expensive operation is not the comparison "
"of values, but the flipping of pancakes. In this exercise, we will explore "
"another algorithm that attempt to reduce the amount of stack flipping. The "
"funny side is that this algorithm was first introduced by Bill Gates, before "
"invented Windows."
msgstr ""
"Ao contrário de outros problemas de ordenação, a operação cara não é a "
"comparação de valores, mas virar as panquecas. Neste exercício, vamos "
"explorar outro algoritmo que tenta reduzir a quantidade de viradas da pilha. "
"O engraçado é que este algoritmo mostrado primeiro por Bill Gates, antes de "
"inventar o Windows."

#. type: Content of: <p>
#: src/lessons/sort/pancake/GatesPancake.html:9
msgid ""
"The basic idea is to grow sequences of sorted pancakes, not necessarily "
"starting from the bottom.  We say that a sequence of ordered pancakes "
"constitute a <b>block</b> while a pancake that is not part of a block is "
"said to be <b>free</b>. The algorithm then considers the topmost pancake (of "
"radius <code>t</code>) and search for the <code>t+1</code> or <code>t-1</"
"code> pancakes (the considered neighbor is noted <code>t+o</code>). Eight "
"cases may happen:"
msgstr ""
"A ideia básica é aumentar as sequências de panquecas ordenadas, não "
"necessariamente começando do fundo. Dizemos que uma sequência de panquecas "
"ordenadas constitui um <b>bloco</b> enquanto uma panqueca que não é parte de "
"um bloco é dita <b>livre</b>. O algoritmo então considera o panqueca mais de "
"cima (de raio <code>t</code>) e busca pelas panquecas <code>t+1</code> ou "
"<code>t-1</code> (a vizinhança considerada é <code>t+o</code>). Oito casos "
"podem acontecer:"

#. type: Content of: <ul><li>
#: src/lessons/sort/pancake/GatesPancake.html:16
msgid ""
"<b>Case a</b>: Both <code>t</code> and <code>t+o</code> are free. They are "
"then merged in one flip."
msgstr ""
"<b>Caso a</b>: tanto <code>t</code> quanto <code>t+o</code> são livres. elas "
"são então juntadas em uma virada."

#. type: Content of: <ul><li>
#: src/lessons/sort/pancake/GatesPancake.html:20
msgid ""
"<b>Case b</b>: <code>t</code> is free, and <code>t+o</code> is the first of "
"a block. They are merged in one flip."
msgstr ""
"<b>Caso b</b>: <code>t</code> é livre, e <code>t+o</code> é o primeiro de um "
"bloco. Eles são juntados em uma virada."

#. type: Content of: <ul><li>
#: src/lessons/sort/pancake/GatesPancake.html:25
msgid ""
"<b>Case c</b>: <code>t</code> is free but both <code>t-1</code> and <code>t"
"+1</code> are the last elements of blocks.  Both blocks and <code>t</code> "
"are merged all together in 4 flips.  Beware, if either <code>t-1</code> or "
"<code>t+1</code> does not exist (because <code>t</code> is 0 or max), only "
"two flips are mandated."
msgstr ""
"<b>Caso c</b>: <code>t</code> é livre mas tanto <code>t-1</code> quanto "
"<code>t+1</code> são últimos elementos de blocos. Os blocos e <code>t</code> "
"são mesclados juntos em 4 viradas. Cuidado, se <code>t-1</code> ou <code>t"
"+1</code> não existir (pois <code>t</code> é 0 ou max), apenas duas viradas "
"são obrigatórias."

#. type: Content of: <ul><li>
#: src/lessons/sort/pancake/GatesPancake.html:33
msgid ""
"<b>Case d</b>: <code>t</code> is in a block but <code>t+o</code> is free. "
"They are merged in one flip."
msgstr ""
"<b>Caso d</b>: <code>t</code> está num bloco mas <code>t+o</code> é livre. "
"Eles são mesclados em uma virada."

#. type: Content of: <ul><li>
#: src/lessons/sort/pancake/GatesPancake.html:38
msgid ""
"<b>Case e</b>: <code>t</code> is in a block and <code>t+o</code> is the "
"first element of a block. They are merged in one flip."
msgstr ""
"<b>Caso e</b>: <code>t</code> está num bloco e <code>t+o</code> é o primeiro "
"elemento de um bloco. Eles são mesclados em uma virada."

#. type: Content of: <ul><li>
#: src/lessons/sort/pancake/GatesPancake.html:42
msgid ""
"<b>Case f</b>: <code>t</code> is in a block and <code>t+o</code> is the last "
"element of another block.  They are merged in 3 flips as follows."
msgstr ""
"<b>Caso f</b>: <code>t</code> está em um bloco e <code>t+o</code> é o último "
"elemento de outro bloco. Eles são mesclados em 3 viradas como segue."

#. type: Content of: <ul><li>
#: src/lessons/sort/pancake/GatesPancake.html:46
msgid ""
"<b>Case g</b>: <code>t</code> is in a block of length k+1 (the last element "
"is <code>t+ko</code>), <code>t+(k+1)o</code> is either free or the last "
"element of another block. Both blocks are merged in 2 flips:"
msgstr ""
"<b>Caso g</b>: <code>t</code> está em um bloco de comprimento k+1 (o último "
"elemento é <code>t+ko</code>), <code>t+(k+1)o</code> é tanto livre ou o "
"último elemento é outro bloco. Ambos os blocos são mesclados em 2 viradas:"

#. type: Content of: <ul><li>
#: src/lessons/sort/pancake/GatesPancake.html:49
msgid ""
"<b>Case h</b>: <code>t</code> is in a block of length k+1 (the last element "
"is <code>t+ko</code>), <code>t+(k+1)o</code> is the first element of another "
"block (the difference with case g is that <code>t+(k+1)o</code> is now the "
"<i>first</i> element of its block). Both blocks are merged in 2 flips:"
msgstr ""
"<b>Caso h</b>: <code>t</code> está num bloco de comprimento k+1 (o último "
"elemento é <code>t+ko</code>), <code>t+(k+1)o</code> é o primeiro elemento "
"de outro bloco (a diferença com o caso g é que <code>t+(k+1)o</code> é agora "
"o <i>primeiro</i> elemento de seu bloco). Ambos os blocos são mesclados em 2 "
"viradas:"

#. type: Content of: <ul><li>
#: src/lessons/sort/pancake/GatesPancake.html:55
msgid ""
"<b>Case i</b>: <code>t</code> is in a block of length <code>n</code> (this "
"block contains all pancakes).  If <code>t</code> is not 1, the whole stack "
"is fliped. The algorithm then stops."
msgstr ""
"<b>Caso i</b>: <code>t</code> está num bloco de comprimento <code>n</code> "
"(este bloco contém todas as panquecas). Se <code>t</code> não for 1, a pilha "
"toda destá virada. O algoritmo então pára."

#. type: Content of: <p>
#: src/lessons/sort/pancake/GatesPancake.html:58
msgid ""
"Each iteration increases the size of the blocks, so the algorithm eventually "
"halts in all cases. A finer analysis would show that it takes at most "
"<code>(5n+5)/3</code> steps to sort the stack. That's better than the naïve "
"algorithm, that requires 2n-3 steps."
msgstr ""
"Cada iteração aumenta o tamanho dos blocos, então o algoritmo eventualmente "
"pára em todos os casos. Uma análise mais aprofundada mostrará que leva no "
"máximo <code>(5n+5)/3</code> passos para ordenar a pilha. O que é melhor que "
"o algoritmo simplório, que precisa de 2n-3 passos."

#. type: Content of: <h2>
#: src/lessons/sort/pancake/GatesPancake.html:61
msgid "Your turn"
msgstr "Sua vez"

#. type: Content of: <p>
#: src/lessons/sort/pancake/GatesPancake.html:62
msgid ""
"You now have almost enough information to implement this algorithm on your "
"own. We just have to remove the last remaining ambiguities to ensure that "
"you implement exactly the same algorithm that the correction. If several "
"cases apply to your situation, then you should use the first given one. For "
"example, if both cases a and b apply (e.g., with <code>t-1</code> on case "
"<b>a</b> and <code>t+1</code> on case <b>b</b>), then you should apply the "
"flips of case <b>a</b>. If a given case applies for both <code>t+1</code> "
"and <code>t-1</code>, then you should apply it to <code>t+1</code>."
msgstr ""
"Você agora tem quase toda a informação necessária para implementar este "
"algoritmo por si só. Temos apenas que remover as últimas ambiquidades para "
"garantir que você implemente exatamente o mesmo algoritmo que a correção. Se "
"vários casos se aplicam a sua situação, então você deve usar o primeiro que "
"foi dado. Por exemplo, se tanto o caso a quanto o caso b se  se aplicam (e."
"g., com <code>t-1</code> no <b>a</b> e <code>t+1</code> no caso <b>b</b>), "
"então você deve aplicar as viradas do caso <b>a</b>. Se um dado caso se "
"aplica tanto para <code>t+1</code> quanto para <code>t-1</code>, então você "
"deve aplicá-lo a <code>t+1</code>."

#. type: Content of: <p>
#: src/lessons/sort/pancake/GatesPancake.html:68
msgid ""
"Note that it is somehow harder than the other exercises we did so far, so "
"don't be surprised if you need more time to achieve this.  But do not give "
"up hope, you can do it!"
msgstr ""
"Observe que este é de certa forma mais difícil que os outros exercícios que "
"fizemos até agora, logo não se surpreenda se você precisar de mais tempo "
"para terminar. Mas não desista, você pode conseguir!"

#. type: Attribute 'alt' of: <p><div>
#: src/lessons/sort/pancake/GatesPancake.html:71
msgid "Well, I need some help to start."
msgstr "Bem, eu preciso de alguma ajuda para começar."

#. type: Content of: <p><div>
#: src/lessons/sort/pancake/GatesPancake.html:72
msgid ""
"First write some helper functions such as <code>isFirst()</code> or "
"<code>isFree()</code>. This will simplify your main algorithm afterward, "
"that can be written very similarly to the explication above with a bunch of "
"if conditions. Factorizing code this way often helps making your code more "
"readable."
msgstr ""
"Primeiro escreva algumas funções auxiliares tais como <code>isFirst()</code> "
"ou <code>isFree()</code>. Isto vai simplificar seu algoritmo principal, que "
"vai poder ser escrito de forma muito similar à explicação acima com um "
"conjunto de condições if. Fatorizar o código desta forma às vezes ajuda a "
"tornar seu código mais legível."

#. type: Attribute 'alt' of: <p><div>
#: src/lessons/sort/pancake/GatesPancake.html:79
msgid "My code keeps failing and I don't know how to debug it."
msgstr "Meu código continua falhando e eu não sei como depurar ele."

#. type: Content of: <p><div>
#: src/lessons/sort/pancake/GatesPancake.html:80
msgid ""
"To debug one world after the other and avoid that the messages of all worlds "
"get intermixed, you can write your debug function only if the method "
"<code>isSelected()</code> returns true. It will be so only for the entity "
"that is currently selected in the graphical interface, that is probably the "
"world you are currently debugging. This will help breaking the difficulty in "
"parts by debugging the situation one after the other."
msgstr ""
"Para depurar um mundo depois do outro e evitar que as mensagens de todos os "
"mundos fiquem misturadas, você pode escrever sua função de depuração apenas "
"se o método <code>selecionado()</code> retorna verdadeiro. Isto acontecerá "
"apenas para a entidade que estiver selecionada na interface gráfica, que é "
"provavelmente o mundo que você está depurando no momento. Isto vai ajudar "
"dividindo a dificuldade em partes e depurando a situção uma após a outra."

#. type: Content of: <p><div>
#: src/lessons/sort/pancake/GatesPancake.html:86
msgid ""
"In particular, it may help to print textually the state of the world each "
"time you enter the main loop."
msgstr ""
"Em particular, escrever textualmente o estado do mundo cada vez que você "
"entrar no loop principal pode ajudar."

#. type: Content of: <h1>
#: src/lessons/sort/pancake/CohenPancake.html:2
msgid "Faster Burned Pancake Sorting"
msgstr "Faster Burned Pancake Sorting"

#. type: Content of: <p>
#: src/lessons/sort/pancake/CohenPancake.html:4
msgid ""
"The Gates' algorithm that we saw in the previous exercise quickly sort a "
"stack of unburned pancakes by increasing the size of the blocks of sorted "
"pancakes. This is much faster that the naive algorithm which moves at each "
"step the largest pancake to the bottom of still unsorted pancakes. Gates' "
"algorithm manages to sort a stack of <i>n</i> pancakes in less than <i>(5n + "
"5)/3</i> steps in the worst case, while the naive algorithm requires at most "
"<i>2n</i> steps. Gates is thus about one third faster in the worst case."
msgstr ""
"O algoritmo de Gates que vimos no exercício anterior ordena rapidamente uma "
"pilha de panquecas que não estão queimadas aumentando o tamanho dos blocos "
"de panquecas já ordenadas. Isto é muito mais rápido que o algoritmo que move "
"em cada passo a panqueca maior para o fundo das panquecas ainda não "
"ordenadas. O algoritmo de Gates ordena uma pilha de <i>n</i> panquecas em "
"menos que <i>(5n + 5)/3</i> passos no pior caso, enquanto que o algoritmo "
"simplório precisa de no máximo <i>2n</i> passos. Gates é então cerca de 3 "
"vezes mais rápido no pior caso."

#. type: Content of: <p>
#: src/lessons/sort/pancake/CohenPancake.html:11
msgid ""
"In this exercise, we will explore an adaptation of the same idea to burnt "
"pancakes. This was first published by David X. Cohen and Manuel Blum. David "
"Cohen co-founded a few years later the Futurama TV show full of mathematical "
"jokes. Definitively, interesting people studied that little pancake "
"problem..."
msgstr ""
"Neste exercício, vamos explorar uma adaptação da mesma ideia das panquecas "
"queimadas. Isto foi publicado primeiramente por David X. Cohen e Manuel "
"Blum. David Cohen co-fundou uns anos depois a série de TV Futurama, cheia de "
"piadas matemáticas. Definitivamente, pessoas interessantes estudaram este "
"singelo problema da panqueca..."

#. type: Content of: <p>
#: src/lessons/sort/pancake/CohenPancake.html:16
msgid ""
"The Cohen's algorithm is slightly easier than the Gates' one since it "
"distinguishes less cases:"
msgstr ""
"O algoritmo de Cohen é um pouco mais fácil que o algoritmo de Gates já que "
"ele distingue menos casos:"

#. type: Content of: <p>
#: src/lessons/sort/pancake/CohenPancake.html:18
msgid ""
"<b>Case 1:</b> At least one pancake is rightside up in the stack. Let <i>p</"
"i> be the largest such pancake.  Note that <i>p + 1</i> must therefore be "
"upside down, unless <i>p = n</i> (in which case there is no <i>p + 1</i> "
"pancake)."
msgstr ""
"<b>Caso 1:</b> pelo menos uma panqueca está de cabeça para cima na pilha. "
"Seja <i>p</i> a maior destas panquecas. Observe que <i>p + 1</i> deve "
"portanto estar de cabeça para baixo, a menos que <i>p = n</i> (e neste caso "
"não existe a panqueca <i>p + 1</i>)."

#. type: Content of: <ul><li>
#: src/lessons/sort/pancake/CohenPancake.html:22
msgid "<b>Case 1.a:</b> <i>p+1</i> is lower in the stack than <i>p</i>."
msgstr "<b>Caso 1.a:</b> <i>p+1</i> é menor que <i>p</i> na pilha."

#. type: Content of: <ul><li>
#: src/lessons/sort/pancake/CohenPancake.html:23
msgid "<b>Case 1.b:</b> <i>p+1</i> is higher in the stack than <i>p</i>."
msgstr "<b>Caso 1.b:</b> <i>p+1</i> é maior que <i>p</i> na pilha."

#. type: Content of: <ul><li>
#: src/lessons/sort/pancake/CohenPancake.html:24
msgid ""
"<b>Case 1.c:</b> There is no <i>p+1</i> because <i>p</i> is the largest "
"pancake in stack, that is because <i>p = n</i>.  If pancake <i>p</i> is "
"already in position, there is nothing to do. If not, you can move it to the "
"bottom of the stack in 2 flips:"
msgstr ""
"<b>Caso 1.c:</b> Não existe <i>p+1</i> pois <i>p</i> é a maior panqueca da "
"pilha, isto por que <i>p = n</i>.  Se a panqueca <i>p</i> já estiver na "
"posição, não há nada a fazer. Se não, você pode movê-la para o fundo da "
"pilha em duas viradas:"

#. type: Content of: <ul><li>
#: src/lessons/sort/pancake/CohenPancake.html:28
msgid ""
"<b>The trick is that the pancake <i>p</i> should never be considered again.</"
"b> Otherwise, you will consider that pancake again and again since it's "
"rightside up, and since that's the largest pancake. To leave that pancake "
"alone, you should keep track of the stack size that is still to be sorted. "
"Any traversal of the stack must then only consider these pancakes, leaving "
"alone the ones that are already in position at the bottom of the stack."
msgstr ""
"<b>O truque é que a panqueca <i>p</i> nunca deve ser considerada de novo.</"
"b> caso contrário, você vai considerar ela de novo e de novo pois ela está "
"de cabeça pra cima, e já que é a maior panqueca. Para desconsiderar ela, "
"você deve lembrar da tamanho da pilha que ainda está para ser ordenada. "
"Qualquer travessia da pilha deve então considerar apenas estas panquecas, "
"não mexendo nas que já estão posicionadas no fundo da pilha."

#. type: Content of: <p>
#: src/lessons/sort/pancake/CohenPancake.html:36
msgid ""
"<b>Case 2:</b> All pancakes are downside. Again, we distinguish two sub-"
"cases."
msgstr ""
"<b>Caso 2:</b> Todas as panquecas estão de cabeça para baixo. De novo, "
"distinguimos dois sub-casos."

#. type: Content of: <ul><li>
#: src/lessons/sort/pancake/CohenPancake.html:39
msgid ""
"<b>Case 2.a:</b> There is at least one <i>p</i> for which <i>p+1</i> is "
"higher than <i>p</i> (if there is several such <i>p</i>, take the largest "
"one)."
msgstr ""
"<b>Caso 2.a:</b> Existe pelo menos um <i>p</i> para o qual <i>p+1</i> é "
"maior que <i>p</i> (se existem vários destes <i>p</i>, pegue o maior)."

#. type: Content of: <ul><li>
#: src/lessons/sort/pancake/CohenPancake.html:43
msgid ""
"<b>Case 2.b:</b> Any pancake <i>p</i> is lower than pancake <i>p+1</i>. In "
"that case, we must have that setting:"
msgstr ""
"<b>Caso 2.b:</b> Qualquer panqueca <i>p</i> é menor que a panqueca <i>p+1</"
"i>. Neste caso, devemos ter a seguinte configuração:"

#. type: Content of: <p>
#: src/lessons/sort/pancake/CohenPancake.html:48
msgid ""
"As you can see, we achieve one join in 2 flips in the cases 1 or 2.a. Since "
"we need to achieve n joins to sort the stack, we can sort the stack in "
"<i>2n</i> steps if case 2.b does not occurs."
msgstr ""
"Como você pode ver, alcançamos um \"join\" em duas viradas nos casos 1 ou 2."
"a. Já que nós precisamos alcançar n junções para ordenar a pilha, podemos "
"ordenar a pilha em <i>2n</i> passos se o caso 2.b não ocorrer."

#. type: Content of: <p>
#: src/lessons/sort/pancake/CohenPancake.html:51
msgid ""
"That case 2.b requires a very different handling as it is obviously not "
"possible to achieve a join in only 2 flips.  But fortunately, we can "
"leverage the very specific setting of the stack in that case to provide the "
"following algorithm.  It sorts a stack in that exact configuration after "
"exactly <i>2n</i> steps."
msgstr ""
"Este caso 2.b necessita um tratamento particular já que é obviamente "
"impossível juntar duas panquecas em apenas duas viradas. Mas por sorte, uma "
"única configuração bem específica da pilha cai neste caso da figura. Podemos "
"então utilizar o algoritmo seguinte, conhecido por tirar vantagem desta "
"configuração. Este algoritmo ordena toda a pilha em exatamente <i>2n</i> "
"passos."

#. type: Content of: <pre>
#: src/lessons/sort/pancake/CohenPancake.html:56
#, no-wrap
msgid ""
"Repeat n times\n"
"    Flip the whole stack of n pancakes\n"
"    Flip the top (n-1) pancakes\n"
msgstr ""
"Repita n vezes\n"
"    vire a pilha toda de n panquecas\n"
"    Vire as (n-1) panquecas mais de cima\n"

#. type: Content of: <p>
#: src/lessons/sort/pancake/CohenPancake.html:61
msgid ""
"It may sound somehow magic, but it actually works, as depicted on an example "
"below."
msgstr ""
"Pode parecer mágica, mas funciona de verdade, como é mostrado no exemplo "
"abaixo."

#. type: Content of: <p>
#: src/lessons/sort/pancake/CohenPancake.html:65
msgid ""
"So, all in all, the Cohen algorithm manages to sort the stack of burnt "
"pancakes in <i>2n</i> steps in all cases.  Quite a win over the naive "
"algorithm for burnt pancakes that requires <i>3n</i> steps."
msgstr ""
"Portanto, em todo caso, o algoritmo de Cohen trata de ordenar a pilha\n"
"de panquecas queimadas em <i>2n</i> passos em todos os casos. Uma\n"
"vitória sobre o algoritmo simplório para panquecas queimadas que\n"
"precisa de <i>3n</i> passos."

#. type: Attribute 'alt' of: <p><div>
#: src/lessons/sort/pancake/CohenPancake.html:68
msgid "I cannot get it right."
msgstr "Não entendi direito."

#. type: Content of: <p><div>
#: src/lessons/sort/pancake/CohenPancake.html:69
msgid ""
"Don't worry. This exercise is very difficult, so it's ok if it does not work "
"right away for you.  Add some relevant logging to your code to understand "
"where it stop performing correctly.  Make sure to use the method "
"<code>isSelected()</code> so that your logs only appears in the currently "
"displayed world. In particular, it may help to print textually the state of "
"the world each time you enter the main loop."
msgstr ""
"Não se preocupe. Este exercício é muito difícil, então tudo bem se você não "
"conseguir de primeira. Adicione alguns logs relevantes ao seu código para "
"entender onde ele parou de funcionar corretamente. Certifique-se de usar o "
"método <code>selecionado()</code> de forma que seus logs apenas apareçam no "
"mundo que estiver sendo exibido no momento. Em particular, pode ajudar se "
"você imprimir textualmente o estado do mundo cada vez que você adentrar no "
"loop principal."

#. type: Content of: <h1>
#: src/lessons/sort/baseball/Main.html:2
msgid "The Rainbow Baseball Game"
msgstr "O jogo do basebal multicores"

#. type: Content of: <p>
#: src/lessons/sort/baseball/Main.html:4
msgid ""
"This activity is inspired from the orange game, from the \"Computer Science "
"Unplugged\" activities repository.  It was however heavily since then, first "
"for the CSIRL (my repository of <i>free</i> unplugged activities to "
"introduce computer science, available at http://www.loria.fr/~quinson/"
"Mediation/SMN/) and now for PLM."
msgstr ""
"Esta atividade é inspirada do jogo orange, do repositório de atividades "
"\"Computer Science Unplugged\".  Ela foi entretanto profundamente alterada, "
"primeiro para o CSIRL (meu repositório de atividades unplugged <i>livres</i> "
"para introduzir a ciência da computação, disponível em http://www.loria.fr/"
"~quinson/Mediation/SMN/) e agora para o PLM."

#. type: Content of: <p>
#: src/lessons/sort/baseball/Main.html:8
msgid ""
"In the literature, the generalized form of this problem is known as the "
"pebble motion problem (the bases can be connected by any kind of graph, and "
"the affinity of pebbles with bases may be different). Another variant of "
"this problem is the well known 15-puzzle, with one player per base, and a "
"two dimensional square grid. Much more information about these problems can "
"be found on wikipedia, as usual."
msgstr ""
"Na literatura, a forma geral deste problema é conhecida como o \"Pebble\n"
"motion problem\" (as bases podem ser conectadas por qualquer tipo de\n"
"grafo, e a afinidade das \"pebbles\" com as bases pode ser\n"
"diferente). Outra variante deste problema é o famoso jogo do 15, com\n"
"um jogador por base, e um tabuleiro quadrado bidimensional. Mais\n"
"informações sobre estes problemas podem ser encontradas na wikipédia\n"
"em inglês, como sempre."

#. type: Content of: <h3>
#: src/lessons/sort/baseball/Main.html:13
msgid ""
"How do you know that the naive algorithm won't loop on that initial "
"situation?"
msgstr ""
"Como você sabe que o algoritmo simplório não vai entrar em loop nesta "
"situação inicial?"

#. type: Content of: <p>
#: src/lessons/sort/baseball/Main.html:15
msgid ""
"Well, we simply tested all possible situations to see when this algorithm "
"loops and when it finds the correct solution. We found that it works for all "
"situations where no player is at home (there is 84 such situations for 4 "
"bases, once you take the symmetries into account). It obviously works for "
"some situations that do not respect this criteria (such as all situations it "
"encounters from one of those 84 boards to the final state), but that's "
"another story. Having such a criteria allows us to generate pseudo-random "
"initial situations for the first exercise for which the algorithm we propose "
"is guarenteed to work."
msgstr ""
"Bem, nós simplemente testamos todas as situações possíveis para ver quando "
"este algoritmo entra em loop e quando ele acha a solução correta. Nós "
"verificamos que ele funciona em todas as situaçoes onde nenhum jogador está "
"em sua casa (existem 84 situações destas para 4 bases, levando em conta as "
"simetrias). Ele obviamente funciona para algumas situações que não respeitam "
"este critério (such as all situations it encounters from one of those 84 "
"boards to the final state), mas isto é outra história. Dado tal critério "
"podemos gerar situaões iniciais pseudo-aleatórias para o primeiro exercício "
"para o qual o algoritmo que propomos com certeza funciona."

#. type: Content of: <p>
#: src/lessons/sort/baseball/Main.html:22
msgid ""
"We also explored bigger instances of the problem, and unfortunately, we have "
"no such criteria for them.  With 5 bases, the algorithm wrongly loops for 24 "
"of the 1824 possible boards where no player is home (that's 1.31%).  With 6 "
"bases, it fails on 1251 of the 58860 such boards (2.12%). With 7 bases, it "
"fails for 84444 out of 2633940 (that's 3.2%). I am still looking for a "
"criteria ensuring that the algorithm won't loop. If you discover one, please "
"report it. Ideally, it would be simple to enforce manually so that we can "
"use it during our unplugged activities."
msgstr ""
"Também exploramos instâncias maiores do problema, e infelizmente, não temos "
"tal critério para elas. Com 5 bases, o algoritmo entra em loop de forma "
"errada para 24 dos 1824 possíveis tabuleiros onde nenhum jogador está na sua "
"casa (que dá 1.31%).  Com 6 bases, ele falha em 1251 dos 58860 tabuleiros "
"(2.12%). Com 7 bases, ele falha para 84444 dos 2633940 (3.2%). Ainda estou "
"procurando um critério que garanta que o algoritmo não vai entrar em loop. "
"Se você descobrir um, por favor avise. Idealmente, deve ser simples garantir "
"manualmente de forma que possamos usá-lo durante nossas atividades "
"\"unplugged\"."

#. type: Content of: <ul><li>
#: src/lessons/sort/baseball/Main.html:32
msgid ""
"Other graphical representations could be proposed, such as a linear one (for "
"the existing exercises) or other ones (such as a grid or a tree, if an "
"exercise on this kind of graph proves interesting)."
msgstr ""
"Outras representações gráficas podem ser propostas, tais como uma linear "
"(para os exercícios existentes) ou outros (como um grid ou uma árvore, se um "
"exercício neste tipo de grafo se mostrar interessante)."

#. type: Content of: <ul><li>
#: src/lessons/sort/baseball/Main.html:34
msgid ""
"Other exercises on other algorithms on this variant, or on other variants "
"such as the 15-puzzle."
msgstr ""
"Outros exercícios em outros algoritmos desta variante, ou em outras "
"variantes como o jogo do 15."

#. type: Content of: <h3>
#: src/lessons/sort/baseball/short_desc.html:2
msgid "Rainbow baseball"
msgstr "basebal multicores"

#. type: Content of: <p>
#: src/lessons/sort/baseball/short_desc.html:4
msgid ""
"This is another funny variation on the sorting problem, adapting the main "
"sorting algorithms on an unusual context."
msgstr ""
"Este é outra variação divertida do problema da ordenação, adaptando os "
"pricipais algoritmos de ordenação num contexto inusitado."

#. type: Content of: <h1>
#: src/lessons/sort/baseball/universe/BaseballWorld.html:2
msgid "Rainbow Baseball"
msgstr "Rainbow Baseball"

#. type: Content of: <p>
#: src/lessons/sort/baseball/universe/BaseballWorld.html:3
msgid ""
"The colors are represented by integers, between <code>0</code> and "
"<code>amount of bases -1</code>.  The hole is represented by the special "
"value <code>-1</code>.  The color of each base is its rank. So base <code>1</"
"code> is of color <code>1</code>.  In the graphical interface, the base "
"<code>0</code> is the dark blue one while the base <code>1</code> is the "
"fuscia one."
msgstr ""
"As cores são representadas por inteiros, entre <code>0</code> e "
"<code>quantidade de bases -1</code>.  O espaço vazio é representado por um "
"valor especial <code>-1</code>. A cor de cada base é  seu rank. Logo, a base "
"<code>1</code> é de cor <code>1</code>. Na interface gráfica, a base "
"<code>0</code> é a azul escura enquanto que a base <code>1</code> é a fuscia."

#. type: Content of: <p>
#: src/lessons/sort/baseball/universe/BaseballWorld.html:9
msgid ""
"Once every players on the field are in their home base, the hole should be "
"in the last base, that is of rank <code>getBasesAmount()-1</code>."
msgstr ""
"Uma vez que todos os jogadores no campo estejam em suas bases, o espaço "
"vazio deve estar na última base, ou seja, a de rank "
"<code>getBasesAmount()-1</code>."

#. type: Content of: <h2>
#: src/lessons/sort/baseball/universe/BaseballWorld.html:12
msgid "Functions to retrieve the world's dimensions"
msgstr "FFunções para recuperar as dimensões do mundo"

#. type: Content of: <pre>
#: src/lessons/sort/baseball/universe/BaseballWorld.html:14
#, no-wrap
msgid "[!java|c]int [/!]getBasesAmount() [!scala]:Int[/!]"
msgstr "[!java|c]int [/!]getQuantidadeDeBases() [!scala]:Int[/!]"

#. type: Content of: outside any tag (error?)
#: src/lessons/sort/baseball/universe/BaseballWorld.html:15
msgid "Returns the amount of bases on this field."
msgstr "Retorna a quantidade de bases neste campo."

#. type: Content of: <pre>
#: src/lessons/sort/baseball/universe/BaseballWorld.html:17
#, no-wrap
msgid "[!java|c]int [/!]getPositionsAmount() [!scala]:Int[/!]"
msgstr "[!java|c]int [/!]getQuantidadeDePosições() [!scala]:Int[/!]"

#. type: Content of: outside any tag (error?)
#: src/lessons/sort/baseball/universe/BaseballWorld.html:18
msgid "Returns the amount of player's positions per base on this field."
msgstr "Retorna a quantidade de posições de jogadores por base neste campo."

#. type: Content of: <h2>
#: src/lessons/sort/baseball/universe/BaseballWorld.html:20
msgid "Functions to retrieve the world's state"
msgstr "Funções para recuperar o estado do mundo"

#. type: Content of: <pre>
#: src/lessons/sort/baseball/universe/BaseballWorld.html:22
#, no-wrap
msgid "[!java|c]int [/!]getHoleBase() [!scala]:Int[/!]"
msgstr "[!java|c]int [/!]getHoleBase() [!scala]:Int[/!]"

#. type: Content of: outside any tag (error?)
#: src/lessons/sort/baseball/universe/BaseballWorld.html:23
msgid "Returns the base in which the hole is located."
msgstr "Retorna a base na qual o espaço vazio está localizado."

#. type: Content of: <pre>
#: src/lessons/sort/baseball/universe/BaseballWorld.html:25
#, no-wrap
msgid "[!java|c]int [/!]getHolePosition() [!scala]:Int[/!]"
msgstr "[!java|c]int [/!]getHolePosition() [!scala]:Int[/!]"

#. type: Content of: outside any tag (error?)
#: src/lessons/sort/baseball/universe/BaseballWorld.html:26
msgid "Returns the hole position within its base"
msgstr "Retorna a posição do espaço vazio na sua base"

#. type: Content of: <pre>
#: src/lessons/sort/baseball/universe/BaseballWorld.html:28
#, no-wrap
msgid "[!java|c]int [/!]getPlayerColor([!java|c]int [/!]base[!scala]:Int[/!], [!java|c]int [/!]position[!scala]:Int[/!])  [!scala]:Int[/!]"
msgstr "[!java|c]int [/!]getCorDoJogador([!java|c]int [/!]base[!scala]:Int[/!], [!java|c]int [/!]posição[!scala]:Int[/!])  [!scala]:Int[/!]"

#. type: Content of: outside any tag (error?)
#: src/lessons/sort/baseball/universe/BaseballWorld.html:29
msgid "Returns the color of the player at a given location."
msgstr "Retorna a cor do jogador numa dada posição."

#. type: Content of: outside any tag (error?)
#: src/lessons/sort/baseball/universe/BaseballWorld.html:32
msgid "Returns whether all players of the field are at home."
msgstr "Retorna se todos os jogadores em campo estão em seus \"home\"."

#. type: Content of: <pre>
#: src/lessons/sort/baseball/universe/BaseballWorld.html:34
#, no-wrap
msgid "[!java]boolean [/!][!c]int [/!]isBaseSorted([!java|c]int [/!]base)  [!scala]:Boolean[/!]"
msgstr "[!java]boolean [/!][!c]int [/!]baseEstáOrdenada([!java|c]int [/!]base)  [!scala]:Boolean[/!]"

#. type: Content of: outside any tag (error?)
#: src/lessons/sort/baseball/universe/BaseballWorld.html:35
msgid "Returns whether all players of a given base are at home."
msgstr "Retorna se todos os jogadores de uma dada base estão em \"home\"."

#. type: Content of: <h2>
#: src/lessons/sort/baseball/universe/BaseballWorld.html:39
msgid "Functions to change the world"
msgstr "Funções para mudar o mundo"

#. type: Content of: <pre>
#: src/lessons/sort/baseball/universe/BaseballWorld.html:41
#, no-wrap
msgid "[!java|c]void [/!]move([!java|c]int [/!]base[!scala]:Int[/!], [!java|c]int [/!]position[!scala]:Int[/!])"
msgstr "[!java|c]void [/!]mover([!java|c]int [/!]base[!scala]:Int[/!], [!java|c]int [/!]posição[!scala]:Int[/!])"

#. type: Content of: outside any tag (error?)
#: src/lessons/sort/baseball/universe/BaseballWorld.html:42
msgid ""
"Moves a given player into the hole. This throws an IllegalArgumentException "
"if the specified player is not near the hole (at most one base away)."
msgstr ""
"Move um dado jogador para um espaço vazio. Vai levantar uma "
"IllegalArgumentException se o jogador especificado não estiver próximo do "
"espaço vazio (no máximo a uma base de distância)."

#. type: Content of: <h1>
#: src/lessons/sort/baseball/NaiveBaseball.html:2
msgid "Naive Rainbow Baseball"
msgstr "Basebal do arco-íris simples"

#. type: Content of: <p>
#: src/lessons/sort/baseball/NaiveBaseball.html:4
msgid ""
"Today, the buggles decided to play a baseball game, but they are rather out "
"of luck, actually.  First, kinda forgot the rules, and ... well ... they "
"cannot find the ball and bats again.  So they decided to \"adapt a bit\" the "
"rules. As the are no ball, the buggles can only running around the field, "
"what they do happily: for a while, all attending buggle run at full speed in "
"all directions around the field."
msgstr ""
"Hoje os buggles decidiram jogar um jogo de basebal, mas eles estão sem muita "
"sorte, na verdade. Primeiro, eles esqueceram as regras, e... bem... eles não "
"acharam as bolas e tacos de novo. Então eles decidiram adaptar um pouco as "
"regras. Como eles não são bolas, tudo que podem fazer é correr ao redor do "
"campo, o que fazem felizes da vida: Por um período, todos os buggles "
"correram na máxima velocidade em todas as direções pelo campo."

#. type: Content of: <p>
#: src/lessons/sort/baseball/NaiveBaseball.html:10
msgid ""
"But after a few collisions, they decide to invent new rules to organize a "
"bit the game: They make one team per base and two players per team. One of "
"the teams has only one player so that its base has an empty location. Then, "
"the players are dispatched randomly around the bases, and the game for them "
"is to reach their home base. The whole game stops when all players are "
"home.  There is no winning team: either all players win, or they all lose. "
"Actually, this game is very different from the original baseball. The only "
"rule that remains is that you can only run around the field, from one base "
"to the next one, without crossing middle of the field."
msgstr ""
"Mas depois de algumas colisões eles decidiram inventar novas regras para "
"organizar o jogo um pouco: eles fizeram um time por base e dois jogadores "
"por time. Um dos times tem apenas um jogador de forma que sua base tem uma "
"vaga. Então, os jogadores são despachados aleatoriamente entre as bases, e o "
"jogo para eles é encontrar sua base de origem. O jogo como um todo pára "
"quando todos os jogadores estão em suas bases de origem. Não existe um time "
"vencedor: ou todo mundo ganha ou todo mundo perde. Na verdade, este jogo é "
"muito diferente do basebal original. A única regra que sobrou é que você só "
"pode correr ao redor do campo, de uma base para a próxima, sem cruzar o meio "
"do campo."

#. type: Content of: <p>
#: src/lessons/sort/baseball/NaiveBaseball.html:18
msgid ""
"Now, they are asking you to help them deciding who and when should move so "
"that each player returns to its base. Only one buggle can move at each "
"round, from its position to the empty spot.  The maximal distance that a "
"buggle can cover in one round is of one base."
msgstr ""
"Agora, eles estão pedindo a você que ajude eles a decidir quem deve se mover "
"de forma que cada jogador retorne à sua base de origem. Apenas um buggle "
"pode se mover por rodada, de sua posição para um espaço vazio. A distância "
"máxima que um buggle pode percorrer em uma rodada é de uma base."

#. type: Content of: <p>
#: src/lessons/sort/baseball/NaiveBaseball.html:22
msgid ""
"So, at each round, the empty spot is on one base (say <code>B</code>), and "
"you should decide which buggle enters that empty spot. There is four "
"candidates (two from base <code>B-1</code> and two from base <code>B+1</"
"code>). Actually, there is a fifth candidate since the buggle that is on the "
"same base than the empty spot can change its position, but that's not really "
"helping."
msgstr ""
"Logo, em cada turno, o espaço vazio fica em uma base (digamos <code>B</"
"code>), e você deve decidir que buggle vai entrar neste espaço vazio. "
"Existem quatro candidatos (dois de base <code>B-1</code> e dois da base "
"<code>B+1</code>). Na verdade, existe um quinto candidato pois o buggle que "
"está na mesma base que o espaço vazio pode mudar de posição, mas isto não "
"ajuda muito."

#. type: Content of: <h3>
#: src/lessons/sort/baseball/NaiveBaseball.html:27
msgid "The Naïve algorithm"
msgstr "O algoritmo simplório"

#. type: Content of: <p>
#: src/lessons/sort/baseball/NaiveBaseball.html:29
msgid ""
"In this exercise, we will first explore a very simple algorithm. To decide "
"which of the four candidate buggles should enter the empty spot, we first "
"restrict ourselves and decide that buggles can only turn clockwise. Then, "
"from the two remaining candidates, we pick the one that has the largest "
"distance to cover to reach its base (turning clockwise). Click on the demo "
"button: this works rather well in practice."
msgstr ""
"Neste exercício, vamos primeiramente explorar um algoritmo muito simples. "
"Para decidir qual dos quatro buggles candidatos deve entrar no espaço vazio, "
"vamos primeiro nos restringir e decidir que os buggles só podem andar no "
"sentido horário. Então, dos dois candidatos restantes, pegamos o que tem a "
"maior distância a percorrer para alcançar sua base (no sentido horário). "
"Clique no botão demo: isto funciona melhor na prática."

#. type: Content of: <p>
#: src/lessons/sort/baseball/NaiveBaseball.html:35
msgid ""
"It's hard to find a simpler algorithm for this problem: While it's not "
"sorted, search for the base containing the candidate buggles: if the hole is "
"in base <code>B</code>, it's the base <code>B+1</code>, modulo the amount of "
"bases. Then, compute the distance that each buggle of that base still has to "
"run to reach its base (0 if it's already home). Once you found the buggle "
"that should enter the empty spot, just use the <code>move</code> method on "
"it, and iterate."
msgstr ""
"É difícil encontrar um algoritmo simples para este problema: Como não está "
"ordenado, busque pela base contendo os buggles candidatos: se o vazio "
"estiver na base <code>B</code>, será a base <code>B+1</code>, módulo a "
"quantidade de bases. Então, calcule a distância que cada buggle daquela base "
"ainda tem que andar para atingir sua própria base (0 se já estiver na "
"própria base). Uma vez que você encontra o buggle que deve entrar no vazio, "
"simplesmente use o método <code>move</code> nele, e itere."

#. type: Content of: <p>
#: src/lessons/sort/baseball/NaiveBaseball.html:41
msgid ""
"The main difficulty should be to get the few equations right: determining "
"the base next to the hole should be easy, but determining the distance that "
"a player has to cover may reveal a bit more challenging. Don't hesitate to "
"draw pictures on a paper to cover all possible cases. It should not be that "
"difficult either: there is not that many cases after all."
msgstr ""
"A principal dificuldade deve ser obter corretamente as poucas equações: "
"determinar a base próxima do espaço vazio deve ser fácil, mas determinar a "
"distância que um jogador tem que cobrir pode se revelar um pouco "
"desafiadora. Não hesite em desenhar esboços num papel para cobrir todas as "
"possibilidades. Não vai ser tão difícil no final das contas: não existem "
"tantos casos assim."

#. type: Content of: <h1>
#: src/lessons/sort/baseball/SelectBaseball.html:2
msgid "Selection Baseball"
msgstr "Selection Baseball"

#. type: Content of: <p>
#: src/lessons/sort/baseball/SelectBaseball.html:4
msgid ""
"The previous algorithm is very pleasant: it's rather simple and rather fast "
"to implement, but unfortunately, it is also rather wrong! In some cases, it "
"never stops, which is obviously bad. If you don't believe it, just copy "
"paste your previous code, and hit the run button. The first world of this "
"exercise is one of these unfortunate situations that drives our previous "
"algorithm crazy."
msgstr ""
"O algoritmo anterior é muito agradável: ele é muito simples e muito rápido "
"de implementar, mas infelizmente, ele é também bastante errado! Em alguns "
"casos, ele nunca pára, o que é obviamente ruim. Se você não acredita, "
"simplesmente copie e cole seu código anterior, e aperte no botão Rodar. O "
"primeiro mundo deste exercício é uma destas situações infelizes que que "
"deixam endoidam o algoritmo anterior."

#. type: Content of: <p>
#: src/lessons/sort/baseball/SelectBaseball.html:10
msgid ""
"So we have to find another algorithm, preferably one that works in all cases."
msgstr ""
"Portanto temos que encontrar outro algoritmo, preferencialmente um que "
"funcione em todos os casos."

#. type: Content of: <p>
#: src/lessons/sort/baseball/SelectBaseball.html:12
msgid ""
"For that, the best solution is to start from a well known algorithm instead "
"of trying to invent a new one from scratch as we just did. When you think a "
"bit about this problem, this can is very similar to a sorting problem: Just "
"make sure that the players are sorted by their colors and you're set. And "
"while we are at it, let's generalize the game to allow more that 4 bases."
msgstr ""
"Para isto, a melhor solução é começar de um algoritmo bem conhecido ao invés "
"de tentar inventar um novo do zero como nós fizemos. Quando você pensa um "
"pouco sobre este problema, ele pode ser muito similar a um problema de "
"ordenação: apenas se certifique de que todos os jogadores estão ordenados "
"por suas cores. E enquanto fazemos isto, vamos generalizar o jogo para poder "
"ter mais de 4 bases."

#. type: Content of: <p>
#: src/lessons/sort/baseball/SelectBaseball.html:18
msgid ""
"Let's adapt the selection sort to our situation. The big lines of the "
"algorithm is then \"for each base, select the players that should occupy "
"this base and make sure that they come to their position\". This way, we "
"will grow an sorted area where all players are already sorted (and never "
"changed) while the unsorted area shrinks."
msgstr ""
"Vamos adaptar o selection sort para nossa situação. As linhas grandes do "
"algoritmo se tornam \"para cada base, selecione os jogadores que devem "
"ocupar esta base e garanta que eles venham para as suas posições\". Desta "
"forma, vamos aumentar uma área ordenada onde todos os jogadores já estão "
"ordenados (e nunca deixam de estar) enquanto a área não-ordenada se reduz."

#. type: Content of: <p>
#: src/lessons/sort/baseball/SelectBaseball.html:24
msgid ""
"Selecting the player should be no problem; Do not hesitate to define some "
"methods such as <code>findPlayer()</code> or <code>findPlayerBase()</code>. "
"This will ensure that your code remains understandable."
msgstr ""
"Selecionar o jogador não deve ser um problema; Não hesite para definir "
"alguns métodos como <code>findPlayer()</code> ou <code>findPlayerBase()</"
"code>. Isto vai garantir que seu código permaneça entendível."

#. type: Content of: <p>
#: src/lessons/sort/baseball/SelectBaseball.html:28
msgid ""
"The most problematic aspect is to move the selected players into position. "
"For that, you have to move the hole to the position where the player is, and "
"then move both the player and the hole to the base that is next to the "
"player's goal (probably in a loop), and finally put the player in the right "
"position of its target base."
msgstr ""
"O aspecto mais problemático é mover os jogadores selecionados para suas "
"posições. Para isto, você tem que mover o espaço vazio para a posição onde o "
"jogador está, e então mover ambos os jogadores e o espaço vazio para a base "
"que estiver próxima do objetivo do jogador (provavelmente com um loop), e "
"finalmente colocar o jogador na posição correta de sua base favorita."

#. type: Content of: <p>
#: src/lessons/sort/baseball/SelectBaseball.html:33
msgid ""
"As often in programming, the devil is in the details: there is a bunch of "
"corner cases that you should detect and deal with correctly, such as the "
"cases where the player is already in the base (but not in the position that "
"you would like), or when the hole is on the right of the player (probably "
"when you sort the first base). But you will find and hunt these while "
"debugging your code."
msgstr ""
"Como é comum em programação, o diabo esconde-se nos detalhes: existe um "
"conjunto de casos particulares que você deve detectar e lidar corretamente, "
"como os casos onde o jogador já está na base (mas não na posição que você "
"gostaria), ou quando o buraco está à direita do jogador (provavelmente "
"quando você ordena a primeira base). Mas você vai caçar tais coisas enquanto "
"depurar seu código."

#. type: Content of: <h1>
#: src/lessons/sort/baseball/InsertBaseball.html:2
msgid "Insertion Baseball"
msgstr "Insertion Baseball"

#. type: Content of: <p>
#: src/lessons/sort/baseball/InsertBaseball.html:4
msgid ""
"The good point of adapting the selection sort to the baseball problem is "
"that we know that it works (provided that our adaptation is correct). That's "
"much better than the first naive algorithm, that was unable to converge to "
"the solution in some situations. But actually, the selection sort is not "
"perfect either as it requires a lot of swaps: we have to bring the hole to "
"the selected player and then both the player and hole in position, and more. "
"We can do better."
msgstr ""
"O aspecto bom de adaptar o selection sort para o problema do basebal é que "
"nós sabemos que isto funciona (desde que nossa adaptação esteja correta). O "
"que é muito melhor que o nosso primeiro e simplório algoritmo, que é incapaz "
"de convergir para a solução em algumas situações. Mas na verdade, o "
"selection sort também não é perfeito pois ele requer muitas trocas: nós "
"temos que trazer o espaço vazio para e jogador selecionado e então levar o "
"jogador e o espaço vazio para a posição, e mais. Podemos fazer melhor."

#. type: Content of: <p>
#: src/lessons/sort/baseball/InsertBaseball.html:10
msgid ""
"For example, each player can run quite a long way from its initial position "
"to its target solution.  Instead, it may be more interesting to split the "
"field in two parts: one on the left where all players are sorted relatively "
"to each others, and one on the right where the players are still at their "
"initial positions. Then, at each iteration, we take the player at the border "
"between the sorted and unsorted areas (that is, the left-most player of the "
"unsorted area) and move it to the left (within the sorted area) until it "
"reaches its position (that is, until the position where it's bigger that its "
"left neighbor). This would at least reduce the travel of players to the "
"sorted area as we use the first one on the border."
msgstr ""
"Por exemplo, cada jogador pode correr por uma longa distância de sua posição "
"inicial para o objetivo. Portanto, pode ser mais interessante dividir o "
"campo em duas partes: uma à esquerda onde todos os jogadores estejam "
"ordenados relativamente uns aos outros, e outra a direita onde os jogadores "
"ainda estejam em suas posições iniciais. Então, em cada iteração, pegaremos "
"o jogador na fronteira entre as áreas ordenada e não-ordenada (ou sejam o "
"jogador mais a esquerda da parte não-ordenada) e moveremos ele para a "
"esquerda (dentro da parte ordenada) até que ele alcance sua posição (ou "
"seja, até a posição onde ele seja maior que seu vizinho da esquerda). Isto "
"pode, pelo menos, reduzir o trajeto dos jogadores para a área ordenada já "
"que usamos o mais perto da fronteira."

#. type: Content of: <p>
#: src/lessons/sort/baseball/InsertBaseball.html:19
msgid ""
"Actually, that's exactly what an insertion sort would do: maintain a sorted "
"area on the left, and put iteratively the player on the border to its "
"position within the sorted area. This is good, as we know that our algorithm "
"is not inherently flawed since we adapt a well known one."
msgstr ""
"Na verdade, é exatamente isto que o insertion sort deve fazer: manter uma "
"área ordenada na esquerda, e colocar iterativamente o jogador na fronteira "
"com esta posição dentro da área ordenada. Isto é bom, já que nós sabemos que "
"nosso algoritmo não é inerentemente \"flawed\" pois nós adaptamos um "
"algoritmo bem conhecido."

#. type: Content of: <p>
#: src/lessons/sort/baseball/InsertBaseball.html:23
msgid ""
"The easiest to adapt the insertion sort to the baseball problem is to "
"consider all positions as adjacent and forget about bases. For that, we "
"define the methods <code>getColor[!c]Insert[/!](pos)</code>, <code>move[!"
"c]Insert[/!](pos)</code> and <code>getHole[!c]Insert[/!]()</code> that all "
"use a unique integer to designate a given position. These functions simply "
"convert between the way to specify a position and then call the usual "
"functions to interact with the world. If you have an <code>index</code> and "
"want to convert it into a <code>base,pos</code>, then <code>base=index/2</"
"code> and <code>pos=index%2</code>. To compute the reverse, "
"<code>index=base*2+pos</code> (this works because "
"<code>getPositionsAmount()</code> always returns 2)."
msgstr ""
"A forma mais fácil de adaptar o insertion sort ao problema do basebal é "
"considerar todas as posições como adjacentes e esquecer sobre as bases. Para "
"isto, definimos os métodos <code>getColor[!c]Insert[/!](pos)</code>, "
"<code>move[!c]Insert[/!](pos)</code> e <code>getHole[!c]Insert[/!]()</code> "
"que usam, todos, um único inteiro para designar uma dada posição. Estas "
"funções simplesmente convertem a forma de especificar uma posição para em "
"seguida chamar as funções usuais para interagir com o mundo. Se você tem um "
"<code>index</code> e quer converter ele em <code>base,pos</code>, para então "
"em <code>base=index/2</code> e <code>pos=index%2</code>. Para calcular o "
"reverso, <code>index=base*2+pos</code> (isto funciona pois "
"<code>getPositionsAmount()</code> sempre retorna 2)."

#. type: Content of: <p>
#: src/lessons/sort/baseball/InsertBaseball.html:32
msgid ""
"For the algorithm itself, you should first move the hole to the position 1. "
"The position 0 is considered to be the sorted area (of size 1 for now) while "
"the area above 2 is the unsorted area.  Then comes an iteration to sort each "
"element of the unsorted area. Since this iteration is a bit complex, you "
"should think of its loop invariant, that is, the condition that is true "
"before and after the loop and which explains that the loop fulfills its "
"goal. Here, the loop invariant is twofold: First, the hole is between the "
"sorted area and the unsorted area, and then, the every elements of the "
"sorted area are ... well sorted relatively to their neighbors."
msgstr ""
"Para o algoritmo em si, você deve primeiro mover o espaço vazio para a "
"posição 1. A posição 0 é considerada como a área ordenada (de tamanho 1 por "
"enquanto) enquanto que a área acima de 2 é a área não-ordenada. Então "
"fazemos uma iteração para ordenar cada elemento da área não-ordenada. Já que "
"esta iteração é um pouco complexa, você deve pensar em seu invariante do "
"loop, ou seja, a condição que é verdadeira antes e depois do loop e que "
"explica que o loop satisfaz seu objetivo. Aqui, o o invariante do loop é "
"duplo: Primeiro, o espaço vazio está entre a área ordenada e a não-ordenada "
"is between the sorted area and the unsorted area, and then, the every "
"elements of the sorted area are ... well sorted relatively to their "
"neighbors."

#. type: Content of: <p>
#: src/lessons/sort/baseball/InsertBaseball.html:40
msgid ""
"Then, the loop body to sort an element should first descend the hole and the "
"elements within the sorted area until the element is larger than the element "
"before in the sorted area (2 moves per position to travel), and then move "
"the hole back to its position between the sorted and unsorted areas (1 move "
"per position)."
msgstr ""
"Então, o corpo do loop para ordenar um elemento deve primeiro empurrar para "
"baixo o espaço vazio e os elementos dentro da área ordenada até que o "
"elemento seja maior que o elemento que está depois na área ordenada (2 "
"movimentos por posição para se mover), e então mover o espaço vazio de volta "
"para sua posição entre as áreas ordenadas e não-ordenadas (1 movimento por "
"posição)."

#. type: Content of: <p>
#: src/lessons/sort/baseball/InsertBaseball.html:44
msgid ""
"Once you insert the last element within the sorted area, your whole set is "
"sorted and you're done.  I preserve the surprise of the border cases that "
"will require some little adjustments to your algorithm to make it work "
"properly :)"
msgstr ""
"Uma vez que você insira o último elemento dentro da área ordenada, seu "
"conjunto como um todo estará ordenado e você terá terminado. Vou deixar como "
"surpresa os casos da fronteira que vão precisar de alguns pequenos ajustes "
"no seu algoritmo para funcionar corretamente :)"

#. type: Content of: <h1>
#: src/lessons/sort/baseball/BubbleBaseball.html:2
msgid "Bubble Baseball"
msgstr "Bubble Baseball"

#. type: Content of: <p>
#: src/lessons/sort/baseball/BubbleBaseball.html:4
msgid ""
"Crap, we adapted the insertion sort because our selection sort required too "
"much moves to get the selected players to their position, but the insertion "
"sort requires an inordinate amount of changes to get the border elements to "
"their position within the sorted area without mixing the already sorted "
"elements. At the end of the day, our selection variant was more efficient "
"with at most <code>3*amountOfBase</code> moves to sort one element (1 to get "
"the hole alongside with the player, and 2 to get the hole+player in "
"position) while our insertion variant requires at most "
"<code>3*amountOfPlayers</code> to sort one element (2 to descend the hole "
"and player in position, 1 to get the hole back to its position). That's "
"twice as bad as there is two players per base. It may be possible to improve "
"the insertion sort by moving by more than one element when descending, but "
"it seems uneasy (at least, while not mixing the already sorted elements) and "
"it would probably only ensure that our insertion variant becomes as "
"efficient as our selection variant, not dramatically better."
msgstr ""
"Putz, nós adaptamos o insertion sort por que o selection sort\n"
"precisava de muitos movimentos para colocar os jogadores selecionados\n"
"em suas posições, mas o insertion sort necessita de uma quantidade\n"
"estúpida de mudanças para alcançar os elementos de fronteira para suas\n"
"posições dentro da área ordenada sem bagunçar os elementos já\n"
"ordenados. No final, nossa variante \"selection\" era mais eficiente com\n"
"pelo menos <code>3*amountOfBase</code> movimentos para ordenar um\n"
"elemento (1 para alcançar o espaço vazio ao lado do jogador, e 2 para\n"
"colocar o espaço vazio e o jogador em posição) enquanto nossa variante\n"
"\"insertion\" precisa de no máximo <code>3*amountOfPlayers</code> para\n"
"ordenar um elemento (2 para descer o espaço vazio e o jogador na\n"
"posição, 1 para trazer o espaço vazio de volta para sua posição). Isto\n"
"é duas vezes pior que ter dois jogadores por base. Pode ser possível\n"
"melhorar o insertion sort movendo mais de um elemento enquanto desce,\n"
"mas parece difícil (pelo menos, fazendo sem misturar os elementos já\n"
"ordenados) e provavelmente isto apenas vai garantir que nossa variante\n"
"\"insertion\" se torne tão eficiente quanto nossa variante \"selection\",\n"
"não dramaticamente melhor."

#. type: Content of: <p>
#: src/lessons/sort/baseball/BubbleBaseball.html:16
msgid ""
"If we cannot make the sort faster, we can make it easier. If you think about "
"it, it seems rather natural to adapt the bubble sort to this problem: the "
"hole becomes the bubble that moves up and down, sorting a bit the array "
"during each traversal. The big lines are simply: \"while it's not sorted, "
"move the hole down to base 0 (moving the biggest player of each base at each "
"step) and then back to the maximal base (moving the smallest player of each "
"base)\". After a while, <code>isSorted()</code> will return true and your "
"algorithm will stop."
msgstr ""
"Se não pudermos tornar o ordenamento mais rápido, podemos torná-lo mais "
"fácil. Se pensar a respeito, parece natural adaptar a ordenção bolha para "
"este problema: o buraco se torna a bolha que se move para cima e para baixo, "
"ordenando um pouco o array a cada passagem. As linhas grandes são simples: "
"\"enquanto (while) não estiver ordenado, mova o buraco para baixo até a base "
"0 (movendo o maior jogador de cada base em cada passo) e então de volta à "
"base maximal (movendo o menor jogador de cada base)\". depois de um tempo, "
"<code>estáOrdenado()</code> vai retornar verdadeiro e seu algoritmo vai "
"parar."

#. type: Content of: <p>
#: src/lessons/sort/baseball/BubbleBaseball.html:22
msgid ""
"This is so easy that we introduce another variant of the problem, with more "
"than two players per base.  But actually, that shouldn't block you very "
"long, should it?"
msgstr ""
"Isto é tão fácil que vamos introduzir outra variante do problema, com mais "
"de dois jogadores por base. Mas isto não vai te segurar por muito tempo, né?"

#. type: Content of: <p>
#: src/lessons/sort/baseball/BubbleBaseball.html:25
msgid ""
"Surprisingly, the bubble sort variant requires ways less moves than the "
"other variants. This is astonishing because usually, the bubble sort "
"performs much worse than the others sorts, but it comes from the very good "
"match between its big lines and the baseball universe. It actually happens "
"rather often that a pleasantly written algorithm performs very decently. But "
"this is not an universal rule either, as demonstrated by the naive algorithm "
"of the first exercise, that was nice, simple and wrong ;)"
msgstr ""
"Surpreendentemente, a variante bubble sort precisa de menos movimentos\n"
"que as outras variantes. Isto é fantástico, por que normalmente, o\n"
"bubble sort é muito pior que os outros algoritmos, mas isto é graças à\n"
"boa combinação entre suas linhas grandes e o universo do basebal. E na\n"
"verdade acontece bastante de um algoritmo escrito de forma agradável\n"
"rodar de forma bem decente. Mas isto não é uma regra universal, como\n"
"foi demontrado pelo algoritmo simplório do primeiro exercício, que era\n"
"legal, simples e errado ;)"

#. type: Content of: <h1>
#: src/plm/universe/turtles/TurtleWorld.html:2
msgid "The universe of turtles"
msgstr "O universo das tartarugas"

#. type: Content of: <p>
#: src/plm/universe/turtles/TurtleWorld.html:4
msgid "This is an adaptation of LOGO for the Programmer's Learning Machine."
msgstr "Esta é uma adaptação do LOGO para o Programmer's Learning Machine."

#. type: Content of: <p>
#: src/plm/universe/turtles/TurtleWorld.html:6
msgid ""
"It is directly inspired from the work of the mathematician Seymour Papert in "
"the 60's. Inspired from the swiss psycholog Jean Piaget, he came up with a "
"learning method called LOGO to teach programming to young childs. The world "
"is full of turtles which leave a painting where they go and which respond to "
"simple orders."
msgstr ""
"É diretamente inspirado no trabalho do matemático Seymour Papert nos anos "
"60. Inspirado no psicólogo suíço Jean Piaget, ele apresentou um método de "
"ensino chamado LOGO para ensinar programação para crianças pequenas. O mundo "
"é cheio de tartarugas que deixam um rastro de tinta por onde passam e que "
"obedecem a comandos simples."

#. type: Content of: <h2>
#: src/plm/universe/turtles/TurtleWorld.html:12
msgid "Functions to move the turtle"
msgstr "Funções para mover a tartaruga"

#. type: Content of: <pre>
#: src/plm/universe/turtles/TurtleWorld.html:14
#, no-wrap
msgid ""
"[!java|c]void [/!]forward([!java|c]double [/!]steps[!scala]:Double[/!])\n"
"[!java|c]void [/!]backward([!java|c]double [/!]steps[!scala]:Double[/!])"
msgstr ""
"[!java|c]void [/!]avançar([!java|c]double [/!]passos[!scala]:Double[/!])\n"
"[!java|c]void [/!]recuar([!java|c]double [/!]passos[!scala]:Double[/!])"

#. type: Content of: outside any tag (error?)
#: src/plm/universe/turtles/TurtleWorld.html:16
msgid "Moves forward or backward of the requested amount of steps."
msgstr "Move para frente e para trás na quantidade de passos pedidos."

#. type: Content of: <pre>
#: src/plm/universe/turtles/TurtleWorld.html:18
#, no-wrap
msgid ""
"[!java|c]void [/!]right([!java|c]double [/!]angle[!scala]:Double[/!])\n"
"[!java|c]void [/!]left([!java|c]double [/!]angle[!scala]:Double[/!])"
msgstr ""
"[!java|c]void [/!]direita([!java|c]double [/!]ângulo[!scala]:Double[/!])\n"
"[!java|c]void [/!]esquerda([!java|c]double [/!]ângulo[!scala]:Double[/!])"

#. type: Content of: outside any tag (error?)
#: src/plm/universe/turtles/TurtleWorld.html:20
msgid "Turns left or right of the given angle (in degrees)."
msgstr "Vira à esquerda ou à direita um dado ângulo (em graus)."

#. type: Content of: <pre>
#: src/plm/universe/turtles/TurtleWorld.html:22
#: src/lessons/lander/universe/DelegatingLanderWorld.html:10
#, no-wrap
msgid ""
"[!java|c]double [/!]getX()[!scala]:Double[/!]\n"
"[!java|c]double [/!]getY()[!scala]:Double[/!]"
msgstr ""
"[!java|c]double [/!]getX()[!scala]:Double[/!]\n"
"[!java|c]double [/!]getY()[!scala]:Double[/!]"

#. type: Content of: outside any tag (error?)
#: src/plm/universe/turtles/TurtleWorld.html:24
msgid ""
"Returns the current position of the turtle.  Note that the point (0,0) is on "
"the top left corner, as it is often the case in Computer Science."
msgstr ""
"Retorna a posição atual da tartaruga. Observe que o ponto (0,0) está no "
"canto superior esquerdo, como é comum na ciência da computação."

#. type: Content of: <pre>
#: src/plm/universe/turtles/TurtleWorld.html:27
#, no-wrap
msgid ""
"[!java|c]void [/!]setX([!java|c]double [/!]x[!scala]:Double[/!])\n"
"[!java|c]void [/!]setY([!java|c]double [/!]y[!scala]:Double[/!])\n"
"[!java|c]void [/!]setPos([!java|c]double [/!]x[!scala]:Double[/!], [!java|c]double [/!]y[!scala]:Double[/!])"
msgstr ""
"[!java|c]void [/!]setX([!java|c]double [/!]x[!scala]:Double[/!])\n"
"[!java|c]void [/!]setY([!java|c]double [/!]y[!scala]:Double[/!])\n"
"[!java|c]void [/!]setPos([!java|c]double [/!]x[!scala]:Double[/!], [!java|c]double [/!]y[!scala]:Double[/!])"

#. type: Content of: outside any tag (error?)
#: src/plm/universe/turtles/TurtleWorld.html:30
msgid "Teleports the turtle to a new position (without leaving any trace)."
msgstr "Teletransporta a tartaruga para uma nova posição (sem deixar rastros)."

#. type: Content of: <pre>
#: src/plm/universe/turtles/TurtleWorld.html:32
#, no-wrap
msgid "[!java|c]void [/!]moveTo([!java|c]double [/!]x[!scala]:Double[/!], [!java|c]double [/!]y[!scala]:Double[/!])"
msgstr "[!java|c]void [/!]moverPara([!java|c]double [/!]x[!scala]:Double[/!], [!java|c]double [/!]y[!scala]:Double[/!])"

#. type: Content of: outside any tag (error?)
#: src/plm/universe/turtles/TurtleWorld.html:33
msgid "Moves the turtle to a new position."
msgstr "Move a tartaruga para uma nova posição."

#. type: Content of: <pre>
#: src/plm/universe/turtles/TurtleWorld.html:35
#, no-wrap
msgid "[!java|c]void [/!]circle([!java|c]double [/!]radius[!scala]:Double[/!])"
msgstr "[!java|c]void [/!]círculo([!java|c]double [/!]raio[!scala]:Double[/!])"

#. type: Content of: outside any tag (error?)
#: src/plm/universe/turtles/TurtleWorld.html:36
msgid "Draw a circle of the specified radius centered on the turtle."
msgstr "Desenha um círculo de raio especificado com o centro na tartaruga."

#. type: Content of: <pre>
#: src/plm/universe/turtles/TurtleWorld.html:38
#, no-wrap
msgid "[!java|c]void [/!]hide()"
msgstr "[!java|c]void [/!]esconder()"

#. type: Content of: outside any tag (error?)
#: src/plm/universe/turtles/TurtleWorld.html:39
msgid "Hides the turtle."
msgstr "Esconde a tartaruga."

#. type: Content of: <pre>
#: src/plm/universe/turtles/TurtleWorld.html:41
#, no-wrap
msgid "[!java|c]void [/!]show()"
msgstr "[!java|c]void [/!]mostrar()"

#. type: Content of: outside any tag (error?)
#: src/plm/universe/turtles/TurtleWorld.html:42
msgid "Shows the turtle back."
msgstr "Mostra novamente a tartaruga."

#. type: Content of: <pre>
#: src/plm/universe/turtles/TurtleWorld.html:44
#, no-wrap
msgid "[!java]boolean [/!][!c]int [/!]isVisible()[!scala]:Boolean[/!]"
msgstr "[!java]boolean [/!][!c]int [/!]éVisível()[!scala]:Boolean[/!]"

#. type: Content of: outside any tag (error?)
#: src/plm/universe/turtles/TurtleWorld.html:45
msgid "Returns whether the turtle is currently visible."
msgstr "Retorna se a tartaruga é visível ou não."

#. type: Content of: <pre>
#: src/plm/universe/turtles/TurtleWorld.html:47
#, no-wrap
msgid "[!java|c]void [/!]clear()"
msgstr "[!java|c]void [/!]limpar()"

#. type: Content of: outside any tag (error?)
#: src/plm/universe/turtles/TurtleWorld.html:48
msgid "Removes any trail on the sheet."
msgstr "Remove todos os rastros do papel."

#. type: Content of: <pre>
#: src/plm/universe/turtles/TurtleWorld.html:50
#, no-wrap
msgid "[!java|c]double [/!]getHeading()[!scala]:Double[/!]"
msgstr "[!java|c]double [/!]getHeading()[!scala]:Double[/!]"

#. type: Content of: outside any tag (error?)
#: src/plm/universe/turtles/TurtleWorld.html:51
msgid "Returns the current heading of the turtle (in degrees)."
msgstr "Retorna a direção atual da tartaruga (em graus)."

#. type: Content of: <pre>
#: src/plm/universe/turtles/TurtleWorld.html:53
#, no-wrap
msgid "[!java|c]void [/!]setHeading([!java|c]double [/!]angle[!scala]:Double[/!])"
msgstr "[!java|c]void [/!]setDireção([!java|c]double [/!]ângulo[!scala]:Double[/!])"

#. type: Content of: outside any tag (error?)
#: src/plm/universe/turtles/TurtleWorld.html:54
msgid "Sets a new heading to the turtle (in degrees)."
msgstr "Ajusta uma nova direção para a tartaruga (em graus)."

#. type: Content of: <h2>
#: src/plm/universe/turtles/TurtleWorld.html:56
msgid "Functions about the pen"
msgstr "Funções da caneta"

#. type: Content of: <pre>
#: src/plm/universe/turtles/TurtleWorld.html:58
#, no-wrap
msgid "[!java|c]void [/!]penUp()"
msgstr "[!java|c]void [/!]levantarCaneta()"

#. type: Content of: outside any tag (error?)
#: src/plm/universe/turtles/TurtleWorld.html:59
msgid ""
"Moves the pen up (turtles have pens, not brushes as buggles). The turtle "
"will not leave any trace during its subsequent moves."
msgstr ""
"Levanta a caneta (tartarugas têm canetas, não pinceis, como os buggles). A "
"tartaruga não vai  deixar nenhum rastro durante seus passos seguintes."

#. type: Content of: <pre>
#: src/plm/universe/turtles/TurtleWorld.html:62
#, no-wrap
msgid "[!java|c]void [/!]penDown()"
msgstr "[!java|c]void [/!]abaixarCaneta()"

#. type: Content of: outside any tag (error?)
#: src/plm/universe/turtles/TurtleWorld.html:63
msgid ""
"Moves the pen down. The turtle will leave a trace during its subsequent "
"moves."
msgstr ""
"Abaixa a caneta. A tartaruga vai deixar um rastro nos próximos movimentos."

#. type: Content of: <pre>
#: src/plm/universe/turtles/TurtleWorld.html:65
#, no-wrap
msgid "[!java]boolean [/!][!c]int [/!]isPenDown()[!scala]:Boolean[/!]"
msgstr "[!java]boolean [/!][!c]int [/!]canetaEstáAbaixada()[!scala]:Boolean[/!]"

#. type: Content of: outside any tag (error?)
#: src/plm/universe/turtles/TurtleWorld.html:66
msgid "Returns the current pen position as a boolean."
msgstr "Retorna a posição atual da caneta como um booleano."

#. type: Content of: <pre>
#: src/plm/universe/turtles/TurtleWorld.html:68
#, no-wrap
msgid "[!java|c]Color [/!]getColor()[!scala]:Color[/!]"
msgstr "[!java|c]Cor [/!]getCor()[!scala]:Cor[/!]"

#. type: Content of: outside any tag (error?)
#: src/plm/universe/turtles/TurtleWorld.html:69
msgid "Returns the current pen color."
msgstr "Retorna a cor atual da caneta."

#. type: Content of: <pre>
#: src/plm/universe/turtles/TurtleWorld.html:71
#, no-wrap
msgid "[!java|c]void [/!]setColor([!java|c]Color [/!]color[!scala]:Color[/!])"
msgstr "[!java|c]void [/!]setCor([!java|c]Cor [/!]cor[!scala]:Cor[/!])"

#. type: Content of: outside any tag (error?)
#: src/plm/universe/turtles/TurtleWorld.html:72
msgid "Changes the pen color."
msgstr "Muda a cor da caneta."

#. type: Content of: <h2>
#: src/plm/universe/turtles/TurtleWorld.html:74
msgid "Other functions"
msgstr "Outras funções"

#. type: Content of: outside any tag (error?)
#: src/plm/universe/turtles/TurtleWorld.html:77
msgid ""
"Returns whether the current turtle is selected in the graphical interface."
msgstr "Retorna se a tartaruga atual está selecionada na interface gráfica."

#. type: Content of: <h3>
#: src/lessons/turtleart/Main.html:2 src/lessons/turtleart/short_desc.html:2
msgid "Turtle Art"
msgstr "Turtle Art"

#. type: Content of: <p>
#: src/lessons/turtleart/Main.html:4
msgid ""
"Since its inception in the 60's, the LOGO turtle fascinates by its ability "
"to draw nice figures on computer.  This lesson allows you to explore some of "
"the classical figures, and draw your own."
msgstr ""
"Desde sua concepção nos anos 60, a tartaruga do LOGO fascinou por sua "
"habilidade de desenhar belas figuras no computador. Este lição permite que "
"você explore algumas das figuras clássicas, e desenhe as suas próprias."

#. type: Content of: <p>
#: src/lessons/turtleart/Main.html:7
msgid ""
"The language's syntax is absolutely not presented, but if you know a bit of "
"it or if someone tells you, you can take these exercises even if you are an "
"absolute beginner in programming."
msgstr ""
"A sintaxe da linguagem é não vai ser apresentada, mas se você conhece um "
"pouco ou se alguém te mostrar, você pode tentar estes exercícios mesmo sendo "
"um completo iniciante em programação."

#. type: Content of: <p>
#: src/lessons/turtleart/Main.html:10
msgid ""
"Please send us your best contributions so that they get added to this "
"gallery to inspire the next ones."
msgstr ""
"Por favor nos mande suas melhores contribuições para que sejam adicionadas a "
"esta galeria para inspirar os próximos usuários."

#. type: Content of: <ul><li>
#: src/lessons/turtleart/Main.html:16
msgid ""
"Other exercises should be added. A whole lot of exercises are available from "
"<a href=\"http://neoparaiso.com/logo/#sect4\">http://neoparaiso.com/logo/"
"#sect4</a> or from <a href=\"http://billkerr2.blogspot.fr/2009/08/40-maths-"
"shapes-challenges.html.\">http://billkerr2.blogspot.fr/2009/08/40-maths-"
"shapes-challenges.html</a>."
msgstr ""
"Outros exercícios devem ser adicionados. Um conjunto completo de exercícios "
"está disponível em <a href=\"http://neoparaiso.com/logo/#sect4\">http://"
"neoparaiso.com/logo/#sect4</a> ou em <a href=\"http://billkerr2.blogspot."
"fr/2009/08/40-maths-shapes-challenges.html.\">http://billkerr2.blogspot."
"fr/2009/08/40-maths-shapes-challenges.html</a>."

#. type: Content of: <ul><li>
#: src/lessons/turtleart/Main.html:19
msgid ""
"Missing: the built-ins arc() and arcTo(), that draw an arc, either w/o "
"moving or by moving to the end of the arc."
msgstr ""
"Faltando: os built-ins arc() e arcTo(), que desenham um arco, tanto movendo "
"ou sem mover para o final do arco."

#. type: Content of: <p>
#: src/lessons/turtleart/short_desc.html:3
msgid ""
"Draw beautiful figures with the Logo turtle, and learn programming while "
"playing."
msgstr ""
"Desenhe belas figuras com a tartaruga do Logo, e aprenda a programar "
"enquanto brinca."

#. type: Content of: <p>
#: src/lessons/turtleart/short_desc.html:6
msgid ""
"You should know the basic syntax of the programming language you will "
"choose, but no exhaustive programming practice is required to take this "
"lesson."
msgstr ""
"Você deve saber a sintaxe básica da linguagem de programação que escolher, "
"mas técnicas avançadas de programação não são necessárias para fazer esta "
"lição."

#. type: Content of: <h1>
#: src/lessons/recursion/cons/universe/ConsWorld.html:2
msgid "ConsWorld"
msgstr "ConsWorld"

#. type: Content of: <p>
#: src/lessons/recursion/cons/universe/ConsWorld.html:4
msgid ""
"This world allows you to experiment with the recursive lists, as they were "
"first introduced in Lisp. It is very similar to the BatWorld, but you are "
"supposed to write recursive functions working on [!python|java]recursive "
"strings. Since [!thelang] does not provide such a construct natively, the "
"ConsWorld defines recursive lists of type <code>RecList</code>.[/!] [!"
"scala]lists of integers (<code>List[Int]</code>).[/!]"
msgstr ""
"Este mundo permite que você experimente com listas recursivas, pois ele foi "
"introduzido primeiro em Lisp. É muito similar ao BatWorld, mas você deve "
"escrever funções recursivas que funcionem em [!python|java]strings "
"recursivas. pois [!thelang] não fornece tal contrução nativamente, o "
"ConsWorld define listas recursivas do tipo <code>RecList</code>.[/!] [!"
"scala]listas de inteiros (<code>List[Int]</code>).[/!]"

#. type: Content of: <p>
#: src/lessons/recursion/cons/universe/ConsWorld.html:12
msgid ""
"Any given such list is either the empty list (noted <code>[!scala]Nil[/!][!"
"java]null[/!][!python]None[/!]</code>), or an integer followed by a list. If "
"a list is not empty, you can retrieve its first integer with <code>list."
"head</code> and the list containing its other parameters with <code>list."
"tail</code>. Of course, the empty list has no head nor the tail, so trying "
"to access these elements will result in an (unpleasant) error message."
msgstr ""
"Qualquer lista dada é ou a lista vazia (noted <code>[!scala]Nil[/!][!"
"java]null[/!][!python]None[/!]</code>), ou um inteiro seguido de uma lista. "
"Se uma lista não é vazia, você pode recuperar seu primeiro inteiro com "
"<code>list.head</code> e a lista contendo os demais parâmetros com "
"<code>list.tail</code>. Obviamente, a lista vazia não tem head nem tail, "
"portanto, tentar acessar estes elementos vai resultar numa mensagem de erro "
"(desagradável)."

#. type: Content of: <p>
#: src/lessons/recursion/cons/universe/ConsWorld.html:20
msgid ""
"To build your own list, you need to concatenate a head and a tail as "
"follows: [!java|python]<code>cons(head, tail)</code>[/!] [!scala]<code>head::"
"tail</code> Note that <code>::</code> is a generic operator in Scala to "
"build lists.[/!]"
msgstr ""
"Para construir sua própria lista, você precisa concatenar um head e um tail "
"como segue: [!java|python]<code>cons(head, tail)</code>[/!] [!"
"scala]<code>head::tail</code> Observe que <code>::</code> é um operador "
"genérico em Scala para construir listas.[/!]"

#. type: Content of: <p>
#: src/lessons/recursion/cons/universe/ConsWorld.html:26
msgid ""
"So, in summary, you can solve every exercises of this lesson with the "
"following constructs."
msgstr ""
"Logo, resumindo, você pode resolver cada exercício desta lição com as "
"seguintes construções."

#. type: Content of: <ul><li>
#: src/lessons/recursion/cons/universe/ConsWorld.html:30
msgid "<b>The empty list:</b>"
msgstr "<b>A lista vazia:</b>"

#. type: Content of: <ul><li><pre>
#: src/lessons/recursion/cons/universe/ConsWorld.html:30
#, no-wrap
msgid "[!java]null[/!][!scala]Nil[/!][!python]None[/!]"
msgstr "[!java]null[/!][!scala]Nil[/!][!python]None[/!]"

#. type: Content of: <ul><li>
#: src/lessons/recursion/cons/universe/ConsWorld.html:31
msgid "<b>Get the first element of <code>l</code></b>"
msgstr "<b>Obtém o primeiro elemento de <code>l</code></b>"

#. type: Content of: <ul><li><pre>
#: src/lessons/recursion/cons/universe/ConsWorld.html:31
#, no-wrap
msgid "l.head"
msgstr "l.head"

#. type: Content of: <ul><li>
#: src/lessons/recursion/cons/universe/ConsWorld.html:32
msgid "<b>Get the rest of the list</b>, when the first element is removed:"
msgstr "<b>Obtém o resto da lista</b>, quando o primeiro elemento é removido:"

#. type: Content of: <ul><li><pre>
#: src/lessons/recursion/cons/universe/ConsWorld.html:32
#, no-wrap
msgid "l.tail"
msgstr "l.tail"

#. type: Content of: <ul><li>
#: src/lessons/recursion/cons/universe/ConsWorld.html:33
msgid ""
"<b>Build a list</b> from a <code>value</code> and a <code>list</code>: [!"
"java|python]"
msgstr ""
"<b>Constrói uma lista</b> a partir de um <code>valor</code> e uma "
"<code>lista</code>: [!java|python]"

#. type: Content of: <ul><li><pre>
#: src/lessons/recursion/cons/universe/ConsWorld.html:34
#, no-wrap
msgid "cons(value, list)"
msgstr "cons(value, list)"

#. type: Content of: <ul><li><pre>
#: src/lessons/recursion/cons/universe/ConsWorld.html:35
#, no-wrap
msgid "value::list"
msgstr "value::list"

#. type: Content of: <h1>
#: src/lessons/recursion/cons/Main.html:2
msgid "Recursive Lists"
msgstr "Listas Recursivas"

#. type: Content of: <p>
#: src/lessons/recursion/cons/Main.html:3
msgid ""
"This lesson contains a bunch of classical exercises on recursive lists.  It "
"is certainly not the most pleasant lesson to do, but I think that it is the "
"easiest of the PLM lessons dealing with recursion."
msgstr ""
"Esta lição contém um monte de exercícios clássicos com listas recursivas. "
"Ele com certeza não é a lição mais agradável para fazer, mas das lições do "
"PLM que lidam com recursão, eu acho esta a mais fácil."

#. type: Content of: <ul><li>
#: src/lessons/recursion/cons/Main.html:10
msgid ""
"New exercises could be proposed, such as http://webloria.loria.fr/~quinson/"
"Teaching/TOP/02-td-recursivite-enonce.pdf If you know some others, please "
"report them as an issue."
msgstr ""
"Novos exercícios podem ser propostos, como http://webloria.loria.fr/~quinson/"
"Teaching/TOP/02-td-recursivite-enonce.pdf Se você conhecer outros, favor "
"abra uma \"issue\" para relatar."

#. type: Content of: <ul><li>
#: src/lessons/recursion/cons/Main.html:13
msgid ""
"It would be interesting to check the asymptotic complexity of the student's "
"code, but that does not sound easy to do. In Python and Java (where we "
"provide a hand-made RecList class), we could count the amount of cons per "
"exercise, but it won't be easy to relate this to the right BatTest. For "
"Scala, it sounds even more difficult as we use the classical :: operators of "
"the language. That will be difficult to override to add a counting "
"mechanism. Another solution would be to ensure that the call stack does not "
"pass a given threshold, but that sounds very difficult too. Any idea is "
"welcome."
msgstr ""
"Pode ser interessante verificar a complexidade assintótica do código do "
"estudante, mas isto não parece fácil de fazer. Em Python e Java (onde "
"fornecemos uma classe RecList feita à mão), podemos contar a quantidade de "
"cons por exercício, mas não é fácil relacionar isto ao BatTest correto. Para "
"Scala, parece ainda mais difícil pois usamos os operadores :: clássicos da "
"linguagem. Vai ser difícil fazer uma sobreposição (\"override\") para "
"adicionar um mecanismod e contagem. Outra solução seria garantir que a pilha "
"de chamadas não passe de um dado limiar,  mas parece muito difícil de fazer "
"também. Quaisquer ideias são bem-vindas."

#. type: Content of: <h1>
#: src/lessons/recursion/cons/Length.html:2
msgid "Length"
msgstr "Comprimento"

#. type: Content of: outside any tag (error?)
#: src/lessons/recursion/cons/Length.html:3
msgid ""
"Given a [!scala]List[Int][/!][!java|python]recursive list[/!], return its "
"length[!scala] (without using its <code>size</code> method, of course)[/!].  "
"[!java|python]"
msgstr ""
"Dada uma [!scala]Lista[Int][/!][!java|python]lista recursiva[/!], retorna "
"seu comprimento[!scala] (sem usar o seu método <code>size</code>, claro)"
"[/!].  [!java|python]"

#. type: Content of: <p>
#: src/lessons/recursion/cons/Length.html:5
msgid ""
"[!python]Be careful, you are not supposed to use the Python lists, but the "
"specific type defined in this exercise. [/!] Please refer to the world's "
"documentation for more information about recursive lists."
msgstr ""
"[!python]Cuidado, você não pode usar listas de Python, mas sim o tipo "
"específico definido neste exercício. [/!] favor ver a documentação do mundo "
"para mais informações a respeito de listas recursivas."

#. type: Content of: <p>
#: src/lessons/recursion/cons/Length.html:10
#: src/lessons/recursion/cons/IsMember.html:7
#: src/lessons/recursion/cons/Occurrence.html:7
#: src/lessons/recursion/cons/Last.html:6
#: src/lessons/recursion/cons/Min.html:6
#: src/lessons/recursion/cons/Increasing.html:6
#: src/lessons/recursion/cons/ButLast.html:6
#: src/lessons/recursion/cons/PlusOne.html:5
#: src/lessons/recursion/cons/Remove.html:9
#: src/lessons/recursion/cons/ButNfirst.html:6
msgid "Your solution should be linear in time."
msgstr "Sua solução deve ser linear no tempo."

#. type: Content of: <h1>
#: src/lessons/recursion/cons/IsMember.html:2
msgid "IsMember"
msgstr "IsMember"

#. type: Content of: outside any tag (error?)
#: src/lessons/recursion/cons/IsMember.html:3
msgid ""
"Given a [!scala]List[Int][/!][!java|python]recursive list[/!] and an "
"integer, return true if the given integer is one of the elements of the "
"list, or false if it cannot be found."
msgstr ""
"Dada uma [!scala]List[Int][/!][!java|python]recursive list[/!] e um inteiro, "
"retorna verdadeiro se o dado inteiro é um dos elementos desta lista, ou "
"falso se ele não for encontrado."

#. type: Content of: <h1>
#: src/lessons/recursion/cons/Occurrence.html:2
msgid "Occurrences"
msgstr "Occurrences"

#. type: Content of: outside any tag (error?)
#: src/lessons/recursion/cons/Occurrence.html:3
msgid ""
"Given a [!scala]List[Int][/!][!java|python]recursive list[/!] and an "
"integer, return the amount of occurrences of the given integer in the list. "
"If the integer is not a member of the list, the function should thus return "
"0."
msgstr ""
"Dada uma [!scala]List[Int][/!][!java|python]recursive list[/!] e um inteiro, "
"retorna a quantidade de ocorrências de um dado inteiro na lista. Se o "
"inteiro não for um membro da lista, a função deve retornar 0."

#. type: Content of: <h1>
#: src/lessons/recursion/cons/Last.html:2
msgid "Last"
msgstr "Last"

#. type: Content of: outside any tag (error?)
#: src/lessons/recursion/cons/Last.html:3
msgid ""
"Given a [!scala]List[Int][/!][!java|python]recursive list[/!], return its "
"last element.  You can assume that the list is not empty."
msgstr ""
"Dada uma [!scala]List[Int][/!][!java|python]recursive list[/!], retorna seu "
"último elemento. Você pode assumir que a lista não é vazia."

#. type: Content of: <h1>
#: src/lessons/recursion/cons/Min.html:2
msgid "Min"
msgstr "Min"

#. type: Content of: outside any tag (error?)
#: src/lessons/recursion/cons/Min.html:3
msgid ""
"Given a [!scala]List[Int][/!][!java|python]recursive list[/!], return the "
"smallest of its values.  You will probably need an extra function, even if "
"you can assume that the list is not empty."
msgstr ""
"Dada uma [!scala]List[Int][/!][!java|python]recursive list[/!], retorna o "
"menor dos seus valores. Você vai precisar provavelmente de uma função extra, "
"mesmo se você puder assumir que a lista é não vazia."

#. type: Content of: <h1>
#: src/lessons/recursion/cons/Increasing.html:2
msgid "Increasing"
msgstr "Increasing"

#. type: Content of: outside any tag (error?)
#: src/lessons/recursion/cons/Increasing.html:3
msgid ""
"Given a [!scala]List[Int][/!][!java|python]recursive list[/!], return "
"whether its elements form an increasing sequence (i.e., if the elements are "
"sorted from the smallest to the largest one)."
msgstr ""
"Dada uma [!scala]List[Int][/!][!java|python]recursive list[/!], retorna se "
"seus elementos estão em ordem crescente (i.e., se os elementos são ordenados "
"do menor para o maior)."

#. type: Content of: <h1>
#: src/lessons/recursion/cons/ButLast.html:2
msgid "But Last"
msgstr "But Last"

#. type: Content of: outside any tag (error?)
#: src/lessons/recursion/cons/ButLast.html:3
msgid ""
"Given a [!scala]List[Int][/!][!java|python]recursive list[/!], return the "
"list containing every elements but the last one.  You can assume that the "
"list is not empty."
msgstr ""
"Dada uma [!scala]List[Int][/!][!java|python]recursive list[/!], retorna a "
"lista contendo todos os elementos exceto o último. Você pode assumir que a "
"lista é não vazia."

#. type: Content of: <h1>
#: src/lessons/recursion/cons/PlusOne.html:2
msgid "PlusOne"
msgstr "PlusOne"

#. type: Content of: outside any tag (error?)
#: src/lessons/recursion/cons/PlusOne.html:3
msgid ""
"Given a [!scala]List[Int][/!][!java|python]recursive list[/!], return a new "
"list containing all elements of your parameter incremented by one."
msgstr ""
"Dada uma [!scala]List[Int][/!][!java|python]recursive list[/!], retorne uma "
"nova lista contendo todos os elementos de seu parâmetro incrementados de um."

#. type: Content of: <h1>
#: src/lessons/recursion/cons/Remove.html:2
msgid "Remove"
msgstr "Remove"

#. type: Content of: outside any tag (error?)
#: src/lessons/recursion/cons/Remove.html:4
msgid ""
"Given a [!scala]List[Int][/!][!java|python]recursive list[/!] <code>L</"
"code>and an integer, return a new list containing all elements of <code>L</"
"code> that are not equal to the value received as parameter."
msgstr ""
"Dada uma [!scala]List[Int][/!][!java|python]recursive list[/!] <code>L</"
"code> e um inteiro, retorna uma nova lista contendo todos os elementos de "
"<code>L</code> que não são iguais ao valor recebido como parâmetro."

#. type: Content of: <h1>
#: src/lessons/recursion/cons/Nth.html:2
msgid "Nth"
msgstr "Nth"

#. type: Content of: outside any tag (error?)
#: src/lessons/recursion/cons/Nth.html:3
msgid ""
"Given a [!scala]List[Int][/!][!java|python]recursive list[/!] and an integer "
"<code>N</code>, return the <code>N</code>th element of the list."
msgstr ""
"Dada uma [!scala]List[Int][/!][!java|python]recursive list[/!] e um inteiro "
"<code>N</code>, retorna o <code>N</code>-ésimo (<code>N</code>th) elemento "
"da lista."

#. type: Content of: <p>
#: src/lessons/recursion/cons/Nth.html:6
#: src/lessons/recursion/cons/Nfirst.html:7
msgid ""
"You can assume that the list is long enough, i.e. that there is at least "
"<code>N</code> elements.  Your solution should be linear in time."
msgstr ""
"Você pode assumir que a lista é longa o suficiente, i.e. que existe pelo "
"menos <code>N</code> elementos. Sua solução deve ser linear no tempo."

#. type: Content of: <h1>
#: src/lessons/recursion/cons/Nfirst.html:2
msgid "Nfirst"
msgstr "Nfirst"

#. type: Content of: outside any tag (error?)
#: src/lessons/recursion/cons/Nfirst.html:3
msgid ""
"Given a [!scala]List[Int][/!][!java|python]recursive list[/!] and an integer "
"<code>N</code>, return the list constituted of the first <code>N</code> "
"elements. You can assume that the list is long enough, i.e. that there is at "
"least <code>N</code> elements."
msgstr ""
"Dada uma [!scala]List[Int][/!][!java|python]recursive list[/!] e um inteiro "
"<code>N</code>, retorna a lista constituída dos primeiros <code>N</code> "
"elementos. Você pode assumir que a lista é longa o suficiente, i.e. que "
"existem pelo menos <code>N</code> elementos."

#. type: Content of: <h1>
#: src/lessons/recursion/cons/Nlast.html:2
msgid "Nlast"
msgstr "Nlast"

#. type: Content of: outside any tag (error?)
#: src/lessons/recursion/cons/Nlast.html:3
msgid ""
"Given a [!scala]List[Int][/!][!java|python]recursive list[/!] and an integer "
"<code>N</code>, return the list with only the <code>N</code> last elements."
msgstr ""
"Dada uma [!scala]List[Int][/!][!java|python]recursive list[/!] e um inteiro "
"<code>N</code>, retorna a lista com apenas os últimos <code>N</code> "
"elementos."

#. type: Content of: <p>
#: src/lessons/recursion/cons/Nlast.html:6
#: src/lessons/recursion/cons/ButNlast.html:6
#: src/lessons/recursion/cons/Concat.html:6
msgid ""
"Your solution should be linear in time, but you will probably need to define "
"several functions to achieve that complexity."
msgstr ""
"Sua solução deve ser linear no tempo, mas você provavelmente precisa definir "
"várias funções para alcançar esta complexidade."

#. type: Attribute 'alt' of: <div>
#: src/lessons/recursion/cons/Nlast.html:8
#: src/lessons/recursion/cons/ButNlast.html:8
#: src/lessons/recursion/cons/Reverse.html:8
#: src/lessons/recursion/cons/Concat.html:8
msgid "I cannot do it in linear time"
msgstr "Eu não posso fazer isto em tempo linear"

#. type: Content of: <div>
#: src/lessons/recursion/cons/Nlast.html:9
#: src/lessons/recursion/cons/ButNlast.html:9
msgid ""
"The trick is to compute only once (and beforehand) how many elements you "
"should keep."
msgstr ""
"O segredo é calcular apenas uma vez (e previamente) quantos elementos\n"
"você deve guardar."

#. type: Content of: <h1>
#: src/lessons/recursion/cons/ButNfirst.html:2
msgid "But Nfirst"
msgstr "But Nfirst"

#. type: Content of: outside any tag (error?)
#: src/lessons/recursion/cons/ButNfirst.html:3
msgid ""
"Given a [!scala]List[Int][/!][!java|python]recursive list[/!] and an integer "
"<code>N</code>, return the list without the <code>N</code> first elements."
msgstr ""
"Dada uma [!scala]List[Int][/!][!java|python]recursive list[/!] e um inteiro "
"<code>N</code>, retorne a lista sem os primeiros <code>N</code> elementos."

#. type: Content of: <h1>
#: src/lessons/recursion/cons/ButNlast.html:2
msgid "But Nlast"
msgstr "But Nlast"

#. type: Content of: outside any tag (error?)
#: src/lessons/recursion/cons/ButNlast.html:3
msgid ""
"Given a [!scala]List[Int][/!][!java|python]recursive list[/!] and an integer "
"<code>N</code>, return the list without the <code>N</code> last elements."
msgstr ""
"Dada uma [!scala]List[Int][/!][!java|python]recursive list[/!] e um inteiro "
"<code>N</code>, retorna a lista sem os últimos <code>N</code> elementos."

#. type: Content of: <h1>
#: src/lessons/recursion/cons/Reverse.html:2
msgid "Reverse"
msgstr "Reverse"

#. type: Content of: outside any tag (error?)
#: src/lessons/recursion/cons/Reverse.html:3
msgid ""
"Given a [!scala]List[Int][/!][!java|python]recursive list[/!], return a new "
"list with all elements in reverse order."
msgstr ""
"Dada uma [!scala]List[Int][/!][!java|python]recursive list[/!], retorna uma "
"nova lista com todos os elementos em ordem inversa."

#. type: Content of: <p>
#: src/lessons/recursion/cons/Reverse.html:5
msgid ""
"This function is very important and you should not pass that challenge.  "
"Your solution should be linear in time, with the help of helper functions."
msgstr ""
"Esta função é muito importante e você não deve pular este desafio. Sua "
"solução deve ser linear no tempo, com a ajuda de funções auxiliares."

#. type: Content of: <div>
#: src/lessons/recursion/cons/Reverse.html:9
msgid ""
"You need an helper function in which the result is accumulated (built) at "
"each step."
msgstr ""
"Você precisa de uma função auxiliar na qual o resultado é acumulado "
"(construído) em cada passo."

#. type: Content of: <h1>
#: src/lessons/recursion/cons/Concat.html:2
msgid "Concat"
msgstr "Concat"

#. type: Content of: outside any tag (error?)
#: src/lessons/recursion/cons/Concat.html:3
msgid ""
"Given two [!scala]List[Int][/!][!java|python]recursive list[/!] <code>l1</"
"code> and <code>l2</code>, return a new list with all elements of <code>l1</"
"code> followed by the elements of <code>l2</code>."
msgstr ""
"Dadas duas [!scala]List[Int][/!][!java|python]recursive list[/!] <code>l1</"
"code> e <code>l2</code>, retorna uma nova lista com todos os elementos de "
"<code>l1</code> seguidos de todos os elementos de <code>l2</code>."

#. type: Content of: <div>
#: src/lessons/recursion/cons/Concat.html:9
msgid ""
"You need to modify <code>l1</code> beforehand so that the computations at "
"each step of the recursion are in constant time."
msgstr ""
"Você precisa modificar <code>l1</code> antes de forma que os cálculos em "
"cada passo da recursão sejam em tempo constante."

#. type: Content of: <h1>
#: src/lessons/recursion/cons/AllDifferent.html:2
msgid "All Different"
msgstr "All Different"

#. type: Content of: outside any tag (error?)
#: src/lessons/recursion/cons/AllDifferent.html:3
msgid ""
"Given a [!scala]List[Int][/!][!java|python]recursive list[/!], return true "
"if any two elements of the list are different (ie, if no element appears "
"more than once in the list)."
msgstr ""
"Dada uma [!scala]List[Int][/!][!java|python]recursive list[/!], retorne "
"verdadeiro se quaisquer dois elementos da lista são diferentes (ie, se "
"nenhum elemento aparece mais de uma vez na lista)."

#. type: Content of: <p>
#: src/lessons/recursion/cons/AllDifferent.html:6
msgid ""
"The simplest solution is in O(n²), meaning that it runs in quadratic time.  "
"You will probably have to define one extra function for that.  Another much "
"more complex solution runs in O(n log(n))."
msgstr ""
"A solução mais simples é em O(n²), o que significa que executa em tempo "
"quadrático. Você provavelmente terá que definir uma função extra para isto. "
"Outra solução muito mais complexa executa em O(n log(n))."

#. type: Content of: <h1>
#: src/lessons/recursion/lego/Main.html:2
msgid "Recursive algorithms"
msgstr "Algoritmos recursivos"

#. type: Content of: outside any tag (error?)
#: src/lessons/recursion/lego/Main.html:3
msgid "This lesson allows to experiment with recursive algorithms."
msgstr "Esta lição permite que se experimente com algoritmos recursivos."

#. type: Content of: <p>
#: src/lessons/recursion/lego/Main.html:5
msgid ""
"If you need more recursive algorithms, an exercise on recursive sorting "
"algorithms (in particular QuickSort and MergeSort) is planned in the future "
"within the sorting lesson."
msgstr ""
"Se você precisa de mais algoritmos recursivos, um exercício em algoritmos de "
"ordenação recursivos (em particular QuickSort e MergeSort) está planejado no "
"futuro dentro da lição de ordenação."

#. type: Content of: <h3>
#: src/lessons/recursion/lego/Main.html:9
msgid "What can I do to improve this lesson?"
msgstr "O que ru posso fazer para melhorar esta lição?"

#. type: Content of: <p>
#: src/lessons/recursion/lego/Main.html:11
msgid ""
"As usual, there are several things that could be done in this lesson to "
"improve it further:"
msgstr ""
"Como sempre, existem várias coisas que podem ser feitas nesta lição para "
"melhorar ela ainda mais:"

#. type: Content of: <ul><li>
#: src/lessons/recursion/lego/Main.html:13
msgid ""
"The Sierpinski triangle can be drawn using a simpler L-system. See http://"
"jpvallon.free.fr/recursivite.html"
msgstr ""
"O triângulo de Sierpinski pode ser desenhado usando um L-system mais "
"simples. Veja em http://jpvallon.free.fr/recursivite.html"

#. type: Content of: <ul><li>
#: src/lessons/recursion/lego/Main.html:14
msgid ""
"The arrowhead curve is also interesting: http://www.mathcurve.com/fractals/"
"sierpinski/sierpinskitriangle.shtml"
msgstr ""
"A curva \"arrowhead\" também é interessante: http://www.mathcurve.com/"
"fractals/sierpinski/sierpinskitriangle.shtml"

#. type: Content of: <ul><li>
#: src/lessons/recursion/lego/Main.html:15
msgid ""
"The dragon curve could be explained as a L-system: http://ecademy.agnesscott."
"edu/~lriddle/ifs/heighway/heighway.htm"
msgstr ""
"A curva do dragão pode ser explicada como um L-system: http://ecademy."
"agnesscott.edu/~lriddle/ifs/heighway/heighway.htm"

#. type: Content of: <ul><li>
#: src/lessons/recursion/lego/Main.html:16
msgid ""
"The dragon2 curve is called the twin dragon: http://ecademy.agnesscott.edu/"
"~lriddle/ifs/heighway/twindragon.htm"
msgstr ""
"A curva do dragão2 é chamada de \"twin dragon\": http://ecademy.agnesscott."
"edu/~lriddle/ifs/heighway/twindragon.htm"

#. type: Content of: <ul><li>
#: src/lessons/recursion/lego/Main.html:17
msgid ""
"The space filling curves could be added (Peano, Hildebert, etc).  See: "
"http://teachout1.net/village/fill.html"
msgstr ""
"As curvas de preenchimento de spaço podem ser adicionadas (Peano, Hildebert, "
"etc).  Veja: http://teachout1.net/village/fill.html"

#. type: Content of: <ul><li>
#: src/lessons/recursion/lego/Main.html:19
msgid ""
"We could do another exercise on embeeded polygons: http://www.inrialpes.fr/"
"helix/people/genoud/ENSJAVA/tds/sujets/dessinsReccursifs/actionsrecursives."
"html"
msgstr ""
"Podemos fazer outro exercício em polígonos \"embeeded\": http://www."
"inrialpes.fr/helix/people/genoud/ENSJAVA/tds/sujets/dessinsReccursifs/"
"actionsrecursives.html"

#. type: Content of: <h3>
#: src/lessons/recursion/lego/short_desc.html:2
msgid "Bases of recursion"
msgstr "As bases da recursão"

#. type: Content of: <p>
#: src/lessons/recursion/lego/short_desc.html:3
msgid ""
"Discover the recursive way of thinking by drawing trees and other figures "
"with the Logo turtle."
msgstr ""
"Descobrir a forma recursiva de pensar desenhando árvores e outras figuras "
"com a tartaruga do Logo."

#. type: Content of: <h2>
#: src/lessons/recursion/lego/square/FourSquare.html:2
msgid "The small cousines of Buggles"
msgstr "Os primos menores dos buggles"

#. type: Content of: <p>
#: src/lessons/recursion/lego/square/FourSquare.html:4
msgid ""
"Today, we will meet the small cousines of the buggles: the turtles. In fact, "
"turtles are much olders than the buggles. They were invented in the 70's by "
"a scientific from MIT called Seymour Papert to help teaching programming, "
"and the buggles are a variation on the idea invented by Lyn Turbak from "
"Wellesley College later."
msgstr ""
"Hoje vamos conhecer os primos menores dos buggles: as tartarugas. Na "
"verdade, as tartarugas são muito mais velhas que os buggles. Elas foram "
"inventadas nos anos 70 por um cientista do MIT chamado Seymour Papert para "
"ajudar no ensino de programação, e os buggles são uma variação da idéia "
"seguinte de Lyn Turbak do Wellesley College."

#. type: Content of: <p>
#: src/lessons/recursion/lego/square/FourSquare.html:10
msgid ""
"Turtles are thus a bit like buggles, but smaller. Just like buggles, you can "
"order them to move forward, to turn, to move backward, etc. Just like "
"buggles, they leave a line on their path when they move (but the line is "
"much smaller)."
msgstr ""
"Tartarugas então, são meio parecidas com buggles, mas menores. Como os "
"buggles, você pode mandar que elas se movam para a frente, virem, se movam "
"para trás, etc. Como os buggles, elas deixam uma linha no caminho por onde "
"passam (mas a linha é muito menor)."

#. type: Content of: <p>
#: src/lessons/recursion/lego/square/FourSquare.html:15
msgid ""
"The main difference is that where buggles can only move of right angles, "
"turtles can move of any arbitrary angles specified by a real number (a "
"double). This gives them much more liberty in their movings. The buggles can "
"do several other tricks, like reading and writting messages, picking or "
"dropping objects, and there is sometimes walls in their worlds (but all this "
"is completely above the capacities of turtles)."
msgstr ""
"A principal diferença é que enquanto os buggles podem se mover apenas\n"
"em ângulos retos, as tartarugas podem se mover em qualquer ângulo\n"
"especificado por um número real (um double). Isto dá a elas muito mais\n"
"liberdade em seus movimentos. Já os buggles podem fazer vários outros\n"
"truques, como ler e escrever mensagens, pegar e soltar objetos, e às\n"
"vezes lidar com paredes existentes nos mundos (mas isto está\n"
"totalmente além da capacidade das tartarugas)."

#. type: Content of: <p>
#: src/lessons/recursion/lego/square/FourSquare.html:22
msgid ""
"From a practical point of view, most of the methods you knew about buggles "
"still work with turtles, with some minor adaptations. In particular, the "
"<code>forward()</code> method takes the amount of steps to do not as an "
"integer, but as a [!python]point number[/!][!java|scala|c]double[/!] (see "
"\"About this world\" for more details)."
msgstr ""
"De um ponto de vista prático, a maioria dos métodos que você conhece sobre "
"buggles ainda funciona com tartarugas, com pequenas adaptações. Em "
"particular, o método <code>forward()</code> pega a quantidade de passos a "
"dar não como inteiro, mas como [!python]point number[/!][!java|scala|"
"c]double[/!] (veja \"Sobre este mundo\" para maiores detalhes)."

#. type: Content of: <h3>
#: src/lessons/recursion/lego/square/FourSquare.html:29
msgid "Doubles? But what is it?"
msgstr "Doubles? Mas o que é isto?"

#. type: Content of: outside any tag (error?)
#: src/lessons/recursion/lego/square/FourSquare.html:30
msgid "It's simply a point number. Example:"
msgstr "é simplesmente um número com vírgula. Por exemplo:"

#. type: Content of: <pre>
#: src/lessons/recursion/lego/square/FourSquare.html:32
#, no-wrap
msgid ""
"double x = 3.72;\n"
"x + 1.234 // Value = 4.954\n"
"x + 2. // Value = 5.72 (2. means 2.0)\n"
"x + 2 // [!java|c]Value = 5.72 (2 automatically converted to 2.0)[/!][!scala]Type error (+ operator don't mix Double and Int); manual conversion mandatory[/!]\n"
"x * 2. // Value = 7.44 \n"
"x / 2. // Value = 1.86 \n"
"[!java|c](int) x[/!][!scala]x.asInstanceOf[Int][/!] // Value = 1 (“casting to int”, converted to integer by truncating)\n"
"Math.round(x) // Value = 2 (1.86 rounded to nearest integer)\n"
"Math.floor(x) // Value = 1 (1.86 rounded toward minus infinity)\n"
"Math.floor(-5.12) // Value = -6 (rounded toward minus infinity)\n"
"Math.ceiling(x) // Value = 2 (1.86 rounded toward plus infinity)\n"
"Math.ceiling(-5.12) // Value = -5 (rounded toward plus infinity)\n"
"[!java|c](double) 17[/!][!scala]17.asInstanceOf[Double][/!] // Value = 17.0 (“casted to double”, converted to double)\n"
msgstr ""
"double x = 3.72;\n"
"x + 1.234 // Valor = 4.954\n"
"x + 2. // Valor = 5.72 (2. significa 2.0)\n"
"x + 2 // [!java|c]Value = 5.72 (2 convertido automaticamente em 2.0)[/!][!scala]Erro de tipo (o operador + não mistura Double e Int); é obrigatória a conversão manual[/!]\n"
"x * 2. // Valor = 7.44 \n"
"x / 2. // Valor = 1.86 \n"
"[!java|c](int) x[/!][!scala]x.asInstanceOf[Int][/!] // Valor = 1 (“fazendo cast para int”, convertido para integer truncando)\n"
"Math.round(x) // Valor = 2 (1.86 arredondado para o inteiro mais próximo)\n"
"Math.floor(x) // Valor = 1 (1.86 rounded toward minus infinity)\n"
"Math.floor(-5.12) // Valor = -6 (rounded toward minus infinity)\n"
"Math.ceiling(x) // Valor = 2 (1.86 rounded toward plus infinity)\n"
"Math.ceiling(-5.12) // Valor = -5 (rounded toward plus infinity)\n"
"[!java|c](double) 17[/!][!scala]17.asInstanceOf[Double][/!] // Valor = 17.0 (“feito cast para double”, convertido para double)\n"

#. type: Content of: <p>
#: src/lessons/recursion/lego/square/FourSquare.html:49
msgid ""
"Even if this is the first exercise on the recursivity lesson, the code you "
"have to write is not recursive. The goal is to get familiar with the turtle "
"world before getting on serious matter."
msgstr ""
"Mesmo este sendo o primeiro exercício da lição de recursividade, o código "
"que você tem que escrever não é recursivo. O objetivo é se familiarizar com "
"o mundo da tartaruga antes da coisa começar a ficar séria."

#. type: Content of: <p>
#: src/lessons/recursion/lego/square/FourSquare.html:53
msgid ""
"You must reproduce a simple geometrical painting constituted of four 100 "
"steps long squares (see the objective world for more details). It is "
"obviously a good idea to write a method to draw a square, and then use it in "
"your code."
msgstr ""
"Você deve reproduzir uma pintura geometricamente simples de quatro quadrados "
"de comprimento de 100 passos (veja o mundo objetivo para mais detalhes). É "
"obviamente uma boa ideia escrever um método para desenhar um quadrado, e "
"então usar ele em nosso código."

#. type: Content of: <h2>
#: src/lessons/recursion/lego/polygonfractal/PolygonFractal.html:2
msgid "Fractal of polygons"
msgstr "Fractal de polígonos"

#. type: Content of: outside any tag (error?)
#: src/lessons/recursion/lego/polygonfractal/PolygonFractal.html:4
msgid ""
"The fractal we will now draw is formed of a polygon, with little polygons on "
"each corner. The prototype of the method drawing it is the following:"
msgstr ""
"O fractal que vamos desenhar agora é formado de um polígono, com pequenos "
"polígonos em cada canto. O protótipo do método que vai desenhar ele é o "
"seguinte:"

#. type: Content of: <pre>
#: src/lessons/recursion/lego/polygonfractal/PolygonFractal.html:6
#, no-wrap
msgid "[!java|c]void [/!]polygonFractal ([!java|c]int [/!]levels[!scala]:Int[/!], [!java|c]int [/!]sides[!scala]:Int[/!], [!java|c]double [/!]length[!scala]:Double[/!], [!java|c]double [/!]shrink[!scala]:Double[/!])"
msgstr "[!java|c]void [/!]fractalDoPolígono ([!java|c]int [/!]níveis[!scala]:Int[/!], [!java|c]int [/!]lados[!scala]:Int[/!], [!java|c]double [/!]comprimento[!scala]:Double[/!], [!java|c]double [/!]shrink[!scala]:Double[/!])"

#. type: Content of: <p>
#: src/lessons/recursion/lego/polygonfractal/PolygonFractal.html:8
#: src/lessons/recursion/lego/dragoncurve/DragonCurve1.html:26
#: src/lessons/recursion/lego/dragoncurve/DragonCurve2.html:45
msgid ""
"Have a look at each world's objective view to understand how to write the "
"function."
msgstr ""
"Dê uma olhada em cada visão de mundo objetivo para entender como escrever a "
"função."

#. type: Content of: <h2>
#: src/lessons/recursion/lego/koch/Koch.html:2
msgid "Snow flake"
msgstr "Floco de neve"

#. type: Content of: outside any tag (error?)
#: src/lessons/recursion/lego/koch/Koch.html:4
msgid ""
"We will now draw snow flakes using the Koch fractal. A fractal is a "
"geometric pattern repeated at every scale."
msgstr ""
"Vamos agora desenhar flocos de neve usando o Koch fractal. Um fractal é um "
"padrão geométrico repetido em cada escala."

#. type: Content of: <p>
#: src/lessons/recursion/lego/koch/Koch.html:7
msgid ""
"The general form is a triangle, with each side given by several recursive "
"calls. Your work is only to write the code of the <code>snowSide</code> "
"method so that it draws one side of the triangle. To make it easier, each "
"sides are represented in a specific color. Just draw the red things (without "
"changing your pen color), and the other colors will be drawn automatically."
msgstr ""
"A forma geral é um triângulo, com cada lado dado por várias chamadas "
"recursivas. Seu trabalho é apenas escrever o código do método "
"<code>snowSide</code> de forma que ele desenhe um lado do triângulo. Para "
"facilitar, cada um dos lados é representado numa cor específica. "
"Simplesmente desenhe as coisas vermelhas (sem mudar a cor da sua caneta), e "
"as outras cores serão desenhadas automaticamente."

#. type: Content of: <p>
#: src/lessons/recursion/lego/koch/Koch.html:13
msgid ""
"Observe the drawing in each world's objective to understand the pattern's "
"logic, and then reproduce it. At level 0, the Koch curve is just a straight "
"line.  At level 1, the curve is divided in three thirds, and the middle part "
"is replaced by the two sides of an equilateral triangle of the same length "
"as the segment being removed.  At level 2, the process is repeated, whith "
"each segments split in three parts and the middle part being replaced by the "
"two sides of an equilateral triangle."
msgstr ""
"Observe o desenho em cada um dos mundos objetivo para entender a lógica do "
"padrão, e então reproduza ele. No nível 0, a curva de Koch é apenas uma "
"linha reta. No nível 1, a curva é dividida em três terços, e a parte média é "
"substituída pelos dois lados de um triângulo equilátero do mesmo comprimento "
"do segmento sendo removido. No nível 2, o processo é repetido, com cada um "
"dos segmentos dividido em três partes e a parte do meio sendo substituída "
"pelos dois lados de um triângulo equilátero."

#. type: Content of: <p>
#: src/lessons/recursion/lego/koch/Koch.html:20
msgid "The pseudo-code of the general case is the following:"
msgstr "O pseudo-código do caso geral é o seguinte:"

#. type: Content of: <pre>
#: src/lessons/recursion/lego/koch/Koch.html:22
#, no-wrap
msgid ""
"  Draw recursively a smaller segment\n"
"  Turn 60 degrees to the left\n"
"  Draw recursively a smaller segment  \n"
"  Turn 120 degrees to the right\n"
"  Draw recursively a smaller segment\n"
"  Turn 60 degrees to the left\n"
"  Draw recursively a smaller segment\n"
msgstr ""
"  Desenhe recursivamente um segmento menor\n"
"  Gire 60 graus para a esquerda\n"
"  Desenhe recursivamente um segmento menor\n"
"  Gire 120 graus para a direita\n"
"  Desenhe recursivamente um segmento menor\n"
"  Gire 60 graus para a esquerda\n"
"  Desenhe recursivamente um segmento menor\n"

#. type: Content of: <p>
#: src/lessons/recursion/lego/koch/Koch.html:30
msgid ""
"As you can see, the function forward() is not called from the recursive "
"case, only in the base case when there is no recursive call."
msgstr ""
"Como você pode ver, a função forward() não é chamada no caso recursivo, "
"apenas no caso base quando não existe chamada recursiva."

#. type: Attribute 'alt' of: <p><div>
#: src/lessons/recursion/lego/koch/Koch.html:34
msgid "Too much letters. Please picture it."
msgstr "Muitas letras. Favor \"picture it\"."

#. type: Content of: <p><div><p>
#: src/lessons/recursion/lego/koch/Koch.html:35
#: src/lessons/recursion/lego/koch/SquareKoch.html:9
msgid "Here are the results of the first levels of recursion."
msgstr "Aqui estão os resultados dos primeiro níveis da recursão."

#. type: Content of: <p>
#: src/lessons/recursion/lego/koch/Koch.html:39
msgid ""
"You must write the <code>snowSide()</code> method, which is recursive but "
"<b>do not call snowFlake from snowSide</b>, or you will get very strange and "
"unexpected behaviors."
msgstr ""
"Você deve escrever o método <code>snowSide()</code>, que é recursivo mas "
"<b>não chame snowFlake de dentro de snowSide</b>, ou vão acontecer "
"resultados estranhos e inesperados."

#. type: Content of: <h2>
#: src/lessons/recursion/lego/koch/SquareKoch.html:2
msgid "Snow square"
msgstr "Snow square"

#. type: Content of: <p>
#: src/lessons/recursion/lego/koch/SquareKoch.html:4
msgid ""
"This exercise is a variation over the snow flake that we saw previously.  "
"The main difference is that we are growing little squares instead of "
"triangles on the sides of the figure."
msgstr ""
"Este exercício é uma variação sobre o snow flake que vimos previamente. A "
"principal diferença é que vamos fazer crescer pequenos quadrados ao invés de "
"triângulos nos lados da figura."

#. type: Attribute 'alt' of: <p><div>
#: src/lessons/recursion/lego/koch/SquareKoch.html:8
msgid "I don't see it, sorry. Please picture it."
msgstr "Desculpe, não vi isto. Favor \"picture it\"."

#. type: Content of: <p>
#: src/lessons/recursion/lego/koch/SquareKoch.html:14
msgid ""
"As previously, your <code>squareSide</code> function should only draw one "
"side of the figure, and the template will call it for all sides "
"automatically (with one color per side)."
msgstr ""
"Como anteriormente, sua função <code>squareSide</code> deve apenas desenhar "
"um lado da figura, e o template vai chamar ela para todos os lados "
"automaticamente (com uma cor por lado)."

#. type: Content of: <h2>
#: src/lessons/recursion/lego/koch/PentaKoch.html:2
msgid "Snow pentagon"
msgstr "Snow pentagon"

#. type: Content of: <p>
#: src/lessons/recursion/lego/koch/PentaKoch.html:4
msgid ""
"Here comes yet another variation of the Koch curve. This time, we grow "
"little pentagons (ie, polygons with five sides each). I'm sure you get it "
"now."
msgstr ""
"Aqui vai outra variação da curva de Koch. desta vez, vamos crescer pequenos "
"pentágonos (ie, polígonos com cinco lados cada). Tenho certeza que agora "
"você pegou a ideia."

#. type: Content of: <p>
#: src/lessons/recursion/lego/koch/PentaKoch.html:7
msgid ""
"Another difference with earlier is that the length is not divided by three "
"at each step anymore, but multiplied by 0.4. The curve looks better this "
"way :)"
msgstr ""
"Outra diferença com o anterior é que o comprimento não é mais dividido por "
"três em cada passo, mas multiplicado por 0.4. A curva parece melhor desta "
"forma :)"

#. type: Content of: <p>
#: src/lessons/recursion/lego/koch/PentaKoch.html:10
msgid ""
"We draw only one side in this exercise so your code will be called only once "
"this time."
msgstr ""
"Desenhamos apnas um lado neste exercício de forma que seu código vai ser "
"chamado apenas uma vez agora."

#. type: Content of: <h2>
#: src/lessons/recursion/lego/koch/HexaKoch.html:2
msgid "Snow hexagon"
msgstr "Snow hexagon"

#. type: Content of: <p>
#: src/lessons/recursion/lego/koch/HexaKoch.html:4
msgid ""
"This time, we will draw the curve that is known as the (6, 0.14)-Koch curve. "
"This means that you have to grow 6-sided polygons on the segments, and that "
"the length should be multiplied by 0.14 at each recursion level."
msgstr ""
"Agora vamos desenhar a curva conhecida por curva (6, 0.14)-Koch. Isto "
"significa que você tem que crescer polígonos de 6 lados nos segmentos e que "
"o comprimento deve ser multiplicado por 0.14 em cada nível de recursão."

#. type: Content of: <p>
#: src/lessons/recursion/lego/koch/HexaKoch.html:8
msgid ""
"For the record, the original Koch curve is the (3, 1/3)-Koch curve, the Snow "
"square would be (4,1/3)-Koch curve while the Snow pentagon is also called "
"the (5, 0.4)-Koch curve. If you want, you can switch to the creative mode in "
"the menu and explore freely other Koch curves. Just change the initial call "
"to hexaKoch to what you want."
msgstr ""
"Para registro, a curva de Koch original é a curva (3, 1/3)-Koch, a\n"
"Snow square será a curva (4,1/3)-Koch enquanto que a Snow pentagon é\n"
"também chamada de curva (5, 0.4)-Koch. Se você quiser, você pode\n"
"trocar para o modo criativo no menu e explorar livremente outras\n"
"curvas de Koch. Simplesmente mude a chamada inicial de hexaKoch para o\n"
"que você quiser."

#. type: Content of: <p>
#: src/lessons/recursion/lego/koch/HexaKoch.html:13
msgid ""
"For further reference, please see <a href=\"http://ecademy.agnesscott.edu/"
"~lriddle/ifs/kcurve/kcurve.htm\">http://ecademy.agnesscott.edu/~lriddle/ifs/"
"kcurve/kcurve.htm</a>."
msgstr ""
"Para mais referências, favor ler <a href=\"http://ecademy.agnesscott.edu/"
"~lriddle/ifs/kcurve/kcurve.htm\">http://ecademy.agnesscott.edu/~lriddle/ifs/"
"kcurve/kcurve.htm</a>."

#. type: Content of: <h2>
#: src/lessons/recursion/lego/koch/Crab.html:2
msgid "Fractal Crab"
msgstr "Carangueijo Fractal"

#. type: Content of: <p>
#: src/lessons/recursion/lego/koch/Crab.html:4
msgid ""
"The Crab curve is not exactly a Koch curve, but that's still a fractal and "
"it's built rather similarly.  This time, we grow square triangle on the side "
"of the figure: the angle is 45 degrees, and the length is divided by [!java|"
"scala]Math.sqrt(2)[/!][!python]math.sqrt(2)[/!][!c]sqrt(2);[/!] at each step."
msgstr ""
"A curva do carangueijo não é exatamente uma curva de Koch, mas ainda é um "
"fractal e e construída de forma similar. Desta vez, vamos crescer um "
"triângulo retângulo na lateral da figura: o ângulo é de 45 graus, e o "
"comprimento é dividido por [!java|scala]Math.sqrt(2)[/!][!python]math.sqrt(2)"
"[/!][!c]sqrt(2);[/!] em cada passo."

#. type: Content of: <p>
#: src/lessons/recursion/lego/koch/Crab.html:8
msgid ""
"Check the figures produced by the first steps of recursion to understand the "
"pattern."
msgstr ""
"Verifique as figuras produzidas pelos primeiros passos da recursão para "
"entender o padrão."

#. type: Content of: <h3>
#: src/lessons/recursion/lego/koch/Crab.html:10
msgid "Bibliographical note"
msgstr "nota bibliográfica"

#. type: Content of: <p>
#: src/lessons/recursion/lego/koch/Crab.html:11
msgid ""
"This curve, also called the Lévy C curve was invented in 1938 by the French "
"mathematician Paul Lévy.  As usual, the wikipedia page is very instructive, "
"and the page provide very good additions: <a href=\"http://www.mathcurve.com/"
"fractals/c/c.shtml\">http://www.mathcurve.com/fractals/c/c.shtml</a>."
msgstr ""
"Esta curva, também chamada de curva C de Lévy foi inventada em 1938 pelo "
"matemático francês Paul Lévy in 1938. Como sempre, a página da wikipédia é "
"bem instrutiva, além de fornecer ótimos extras: <a href=\"http://www."
"mathcurve.com/fractals/c/c.shtml\">http://www.mathcurve.com/fractals/c/c."
"shtml</a>."

#. type: Content of: <h2>
#: src/lessons/recursion/lego/tree/Tree.html:2
msgid "Trees"
msgstr "Árvores"

#. type: Content of: <p>
#: src/lessons/recursion/lego/tree/Tree.html:4
msgid ""
"We will now draw trees. For that, we will write a method using double "
"recursion following this prototype"
msgstr ""
"Vamos agora construir árvores. Para isto, vamos escrever um método usando "
"recursão dupla seguindo este protótipo"

#. type: Content of: <pre>
#: src/lessons/recursion/lego/tree/Tree.html:6
#, no-wrap
msgid "[!java|c]void [/!]tree([!java|c]int [/!]steps[!scala]:Int[/!], [!java|c]double [/!]length[!scala]:Double[/!], [!java|c]double [/!]angle[!scala]:Double[/!], [!java|c]double [/!]shrink[!scala]:Double[/!])"
msgstr "[!java|c]void [/!]árvore([!java|c]int [/!]passos[!scala]:Int[/!], [!java|c]double [/!]comprimento[!scala]:Double[/!], [!java|c]double [/!]ângulo[!scala]:Double[/!], [!java|c]double [/!]shrink[!scala]:Double[/!])"

#. type: Content of: <p>
#: src/lessons/recursion/lego/tree/Tree.html:8
msgid ""
"To draw a tree of four levels, you have to draw a trunk of the given length, "
"turn right of the given angle, draw a tree of level 3, turn left twice of "
"the given angle, draw another tree of level 3, and come back to your initial "
"location. Don't forget to come back to the initial location!"
msgstr ""
"Para desenhar uma árvore de quatro níveis, você deve desenhar um tronco do "
"comprimento dado, virar à direita num ângulo dado, desenhar uma árvore de "
"nível 3, virar a esquerda duas vezes no ângulo dado, desenhar outra árvore "
"de nível 3, e voltar para a posição inicial. Não esqueça de voltar para a "
"posição inicial!"

#. type: Content of: <p><p><p>
#: src/lessons/recursion/lego/tree/Tree.html:13
msgid ""
"If a tree's trunk is of length 'len', the trunk of the next level tree will "
"be of length 'len*shrink'."
msgstr ""
"Se um tronco da árvore é de comprimento 'len', o tronco da árvore no próximo "
"nível será de comprimento 'len*shrink'."

#. type: Content of: <p><p><p><p><p>
#: src/lessons/recursion/lego/tree/Tree.html:16
msgid ""
"At the end, here is the pseudo-code of the general case (you should add the "
"base case yourself):"
msgstr ""
"Finalmente, aqui está o pseudo-código do caso geral (você deve adicionar o "
"caso base por si só):"

#. type: Content of: <p><p><p><p><pre>
#: src/lessons/recursion/lego/tree/Tree.html:18
#, no-wrap
msgid ""
"  Move forward of the desired length\n"
"  Draw (recursively) the right subtree\n"
"  Draw (recursively) the left subtree\n"
"  Move back to your initial position\n"
msgstr ""
"  Mova para a frente no comprimento desejado\n"
"  Desenhe (recursivamente) a sub-árvore da direita\n"
"  Desenhe (recursivamente) a sub-árvore da esquerda\n"
"  Mova para trás para a posição inicial\n"

#. type: Content of: <p><p><p><p><p>
#: src/lessons/recursion/lego/tree/Tree.html:23
msgid ""
"Don't forget to add the base case to your code, or your buggle will enter an "
"infinite loop.  Then, drawing the right subtree comes down to turn right and "
"then draw the subtree."
msgstr ""
"Não esqueça de adicionar o caso base a seu código, ou seu buggle vai entrar "
"num loop infinito. Então, desenhar a sub-árvore da direita é virar a direita "
"e desenhar a sub-árvore."

#. type: Content of: <p><p><p><p><p>
#: src/lessons/recursion/lego/tree/Tree.html:26
msgid ""
"As you can see, each recursion level is represented by a distinctive color. "
"For that, you have to call the <code>current(step)</code>, passing the "
"current recursion level as a parameter. This will pick the right color for "
"you.  Don't erase your great colors when you move back to your initial "
"location."
msgstr ""
"Como você pode ver, cada nível de recursão é representado por uma cor "
"diferente. Para isto, você tem que chamar o <code>current(step)</code>, "
"passar o nível de recursão atual como parâmetro. Isto vai pegar a cor certa "
"para você. Não apague suas belas cores quando se mover de volta para sua "
"posição inicial."

#. type: Content of: <p><p><p><p><p>
#: src/lessons/recursion/lego/tree/Tree.html:30
msgid ""
"If you get your function wrong, this can easily become hairly to debug as "
"your errors will appear at each level of the recursion, completely changing "
"the drawing.  For debugging purpose, you can use the <code>subtree()</code> "
"that will draw a correct subtree. This function is then very similar to the "
"one you are trying to write. The only difference is that <code>subtree()</"
"code> only draws in black. So, you can use it instead of a recursive call to "
"debug your code, but you have to change for a proper recursive call to your "
"own code (once it works)  to get the colors right, and pass the exercise."
msgstr ""
"Se você fizer a função errado, pode rapidamente ficar muito difícil de "
"depurar pois os erros vão aparecer em cada nível  da recursão, mudando "
"completamente o desenho. Por questões de depuração, você pode usar o "
"<code>subtree()</code> que vai desenhar uma sub-árvore corretamente. Esta "
"função é portanto muito similar àquela que você está tentando escrever. A "
"única diferença é que <code>subtree()</code> apenas desenha em preto. Logo, "
"você pode usar ela no lugar da chamada recursiva para depurar seu código, "
"mas você vai ter que mudar para uma chamada recursiva adequada no seu "
"próprio código (uma vez que funcione) para obter as cores certas, e passar "
"no exercício."

#. type: Content of: <h2>
#: src/lessons/recursion/lego/sierpinski/Sierpinski.html:2
msgid "Sierpinski's Triangle"
msgstr "Triângulo de Sierpinski"

#. type: Content of: <p>
#: src/lessons/recursion/lego/sierpinski/Sierpinski.html:4
msgid ""
"The fractal we will now draw is formed of a big triangle inside which "
"several smaller triangles are embedded. The prototype of the function to "
"draw it is the following:"
msgstr ""
"O fractal que vamos desenhar é formado de um grande triângulo dentro do qual "
"há vários pequenos triângulos. O protótipo da função que desenha isto é o "
"seguinte:"

#. type: Content of: <pre>
#: src/lessons/recursion/lego/sierpinski/Sierpinski.html:7
#, no-wrap
msgid "[!java|c]void [/!]sierpinski([!java|c]int [/!]level[!scala]:Int[/!], [!java|c]double [/!]length[!scala]:Double[/!])"
msgstr "[!java|c]void [/!]sierpinski([!java|c]int [/!]nível[!scala]:Int[/!], [!java|c]double [/!]comprimento[!scala]:Double[/!])"

#. type: Content of: <p>
#: src/lessons/recursion/lego/sierpinski/Sierpinski.html:9
msgid ""
"Have a look at each world's objective view to understand how to write the "
"function.  To draw one side of the triangle, draw a smaller recursive "
"triangle (halve the length) and move forward by the requested length.  "
"Globally, you have to draw 3 such sides and turn by 120 between each side."
msgstr ""
"Dê uma olhada em cada uma das visões do mundo objetivo para entender como "
"escrever a função. Para desenhar um lado do triângulo, desenhe um triângulo "
"recursivo menor (metade do comprimento) e mova para a frente no comprimento "
"desejado. Globalmente, você tem que desenhar 3 destes lados e girar 120 "
"graus entre cada lado."

#. type: Content of: <h2>
#: src/lessons/recursion/lego/spiral/Spiral.html:2
msgid "Spirals"
msgstr "Espirais"

#. type: Content of: outside any tag (error?)
#: src/lessons/recursion/lego/spiral/Spiral.html:4
msgid ""
"We will now draw our first recursive function with the turtle. The goal is "
"to draw different kind of spirals with the same function, which prototype is "
"the following:"
msgstr ""
"Vamos agora desenhar nossa primeira função recursiva com a tartaruga. O "
"objetivo é desenhar diferentes tipos de espirais com a mesma função, cujo "
"protótipo é o seguinte:"

#. type: Content of: <pre>
#: src/lessons/recursion/lego/spiral/Spiral.html:7
#, no-wrap
msgid "[!java|c]void [/!]spiral([!java|c]int [/!]steps[!scala]:Int[/!], [!java|c]int [/!]angle[!scala]:Int[/!], [!java|c]int [/!]length[!scala]:Int[/!], [!java|c]int [/!]increment[!scala]:Int[/!])"
msgstr "[!java|c]void [/!]espiral([!java|c]int [/!]passos[!scala]:Int[/!], [!java|c]int [/!]ângulo[!scala]:Int[/!], [!java|c]int [/!]comprimento[!scala]:Int[/!], [!java|c]int [/!]incremento[!scala]:Int[/!])"

#. type: Content of: outside any tag (error?)
#: src/lessons/recursion/lego/spiral/Spiral.html:9
msgid ""
"To help you understanding how to write it, here is an example of how the "
"parameters change during one specific call:"
msgstr ""
"Para ajudar a entender como escrever isto, aqui está um exemplo de como os "
"parâmetros mudam durante uma chamada específica:"

#. type: Content of: <pre>
#: src/lessons/recursion/lego/spiral/Spiral.html:12
#, no-wrap
msgid ""
"spiral(5, 90, 0, 3);\n"
"  forward(0);\n"
"  left(90);\n"
"  spiral(4,90,3,3);\n"
"    forward(3);\n"
"    left(90);\n"
"    spiral(3,90,6,3);\n"
"      forward(6);\n"
"      left(90);\n"
"      spiral(2,90,9,3);\n"
"        forward(9);\n"
"        left(90);\n"
"        spiral(1,90,12,3);\n"
"          forward(12);\n"
"          left(90);\n"
"          spiral(0,90,12,3);\n"
msgstr ""
"espiral(5, 90, 0, 3);\n"
"  avançar(0);\n"
"  esquerda(90);\n"
"  espiral(4,90,3,3);\n"
"    avançar(3);\n"
"    esquerda(90);\n"
"    espiral(3,90,6,3);\n"
"      avançar(6);\n"
"      esquerda(90);\n"
"      espiral(2,90,9,3);\n"
"        avançar(9);\n"
"        esquerda(90);\n"
"        espiral(1,90,12,3);\n"
"          avançar(12);\n"
"          esquerda(90);\n"
"          espiral(0,90,12,3);\n"

#. type: Content of: <h2>
#: src/lessons/recursion/lego/spiral/SpiralUse.html:2
msgid "Drawing spirals"
msgstr "Desenhando espirais"

#. type: Content of: <p>
#: src/lessons/recursion/lego/spiral/SpiralUse.html:4
msgid ""
"This exercise is not really an exercise in that sense that you just have to "
"click on the Execute button to get the reward: All the needed code is "
"already provided. Instead, you can here explore the possibilities of the "
"code you just wrote by changing the parameters of the call to the "
"<code>spiral</code> function. You can move on to the next exercise if you "
"are short on time, and come back later to play around."
msgstr ""
"Este exercício não é realmente um exercício pois você tem que simplesmente "
"clicar no botão Rodar para ter uma recompensa: todo o código necessário já "
"está pronto. Na verdade, você  pode explorar as possibilidades do código que "
"você acabou de escrever mudando os parâmetros da chamada da função "
"<code>spiral</code>. Você pode mover para o próximo exercício se estiver com "
"pressa, e voltar depois para experimentar este."

#. type: Content of: <p>
#: src/lessons/recursion/lego/spiral/SpiralUse.html:10
msgid ""
"Here are some of the figures that you can produce with your <code>Spiral</"
"code> function, provided that you come with the right parameters. You can "
"switch to the creative mode (from the Exercise menu)  to disable the world "
"comparison when you explore with these spirals."
msgstr ""
"Aqui estão algumas figuras que você pode produzir com sua função "
"<code>Spiral</code>, dado que você passe os parâmetros certos. Você pode "
"trocar para o modo criativo (do menu Exercício) para desabilitar a "
"comparação de mundos quando estiver explorando com estas espirais."

#. type: Content of: <p>
#: src/lessons/recursion/lego/spiral/SpiralUse.html:21
msgid ""
"If you discover a cool figure, don't forget to send your parameters (menu "
"Help/feedback) so that we can add it to the list!"
msgstr ""
"Se você descobrir uma figura legal, não esqueça de enviar seus parâmetros "
"(menu Ajuda/\"Dizer o que achou\") para que possamos adicionar a esta lista!"

#. type: Content of: <h2>
#: src/lessons/recursion/lego/dragoncurve/DragonCurve1.html:2
msgid "Dragon curve (1)"
msgstr "Curva do Dragão (1)"

#. type: Content of: <p>
#: src/lessons/recursion/lego/dragoncurve/DragonCurve1.html:4
msgid "The dragon curve is a classical example of recursive method."
msgstr "A curva do dragão é um exemplo clássico de método recursivo."

#. type: Content of: <p>
#: src/lessons/recursion/lego/dragoncurve/DragonCurve1.html:6
msgid "The definition of this curve is the following:"
msgstr "A definição desta curva é a seguinte:"

#. type: Content of: <p>
#: src/lessons/recursion/lego/dragoncurve/DragonCurve1.html:7
msgid ""
"the dragon curve of order 1 is a vector between to arbitrary points P and Q,"
msgstr ""
"A curva do dragão de ordem 1 é um vetor entre dois pontos P e Q arbitrários,"

#. type: Content of: <p>
#: src/lessons/recursion/lego/dragoncurve/DragonCurve1.html:8
msgid ""
"the dragon curve of order n is the dragon curve of order n-1 between P and "
"R, followed by the same curve of order n-1 between Q and R, where PRQ is an "
"isosceles triangle with angle R being a right angle, and R being at the "
"right of the PQ vector. Thus, if P and Q coordinates are (x, y)  and (z, t), "
"the coordinate (u, v) of R are given by:"
msgstr ""
"A curva do dragão de ordem n é a curva do dragão de ordem n-1 entre P e R, "
"seguida da mesma curva de ordem n-1 entre Q e R, onde PRQ é um triângulo "
"isósceles com o ângulo em R sendo um ângulo reto, e R situado a direita do "
"vetor PQ. Logo, se as coordenadas P e Q são (x, y) e (z, t), as coordenadas "
"(u, v) de R são dadas por:"

#. type: Content of: <pre>
#: src/lessons/recursion/lego/dragoncurve/DragonCurve1.html:14
#: src/lessons/recursion/lego/dragoncurve/DragonCurve2.html:27
#, no-wrap
msgid ""
"u = (x + z)/2 + (t - y)/2\n"
"v = (y + t)/2 - (z - x)/2\n"
msgstr ""
"u = (x + z)/2 + (t - y)/2\n"
"v = (y + t)/2 - (z - x)/2\n"

#. type: Content of: <p>
#: src/lessons/recursion/lego/dragoncurve/DragonCurve1.html:18
msgid "The prototype of the method drawing the curve is the following:"
msgstr "O protótipo do método desenhando a curva é o seguinte:"

#. type: Content of: <pre>
#: src/lessons/recursion/lego/dragoncurve/DragonCurve1.html:19
#: src/lessons/recursion/lego/dragoncurve/DragonCurve2.html:23
#, no-wrap
msgid "[!java|c]void [/!]dragon([!java|c]int [/!]order[!scala]:Int[/!], [!java|c]double [/!]x[!scala]:Double[/!], [!java|c]double [/!]y[!scala]:Double[/!], [!java|c]double [/!]z[!scala]:Double[/!], [!java|c]double [/!]t[!scala]:Double[/!])"
msgstr "[!java|c]void [/!]dragão([!java|c]int [/!]ordem[!scala]:Int[/!], [!java|c]double [/!]x[!scala]:Double[/!], [!java|c]double [/!]y[!scala]:Double[/!], [!java|c]double [/!]z[!scala]:Double[/!], [!java|c]double [/!]t[!scala]:Double[/!])"

#. type: Content of: <p>
#: src/lessons/recursion/lego/dragoncurve/DragonCurve1.html:22
msgid ""
"You should use the method <code>setPos(x,y)</code> to put your turtle at "
"coordinates (x,y) and the method <code>moveTo(z,t)</code> to draw a line "
"between the turtle position and the point(z,t)."
msgstr ""
"Você deve usar o método <code>setPos(x,y)</code> para colocar sua tartaruga "
"nas coordenadas (x,y) e o método <code>moveTo(z,t)</code> para desenhar uma "
"linha entre a posição da tartaruga e o ponto (z,t)."

#. type: Content of: <h2>
#: src/lessons/recursion/lego/dragoncurve/DragonCurve2.html:2
msgid "The dragon curve (2)"
msgstr "A curva do dragão (2)"

#. type: Content of: <p>
#: src/lessons/recursion/lego/dragoncurve/DragonCurve2.html:4
msgid ""
"Previous solution induce that the turtle teleports to other location, or at "
"the very least, that it moves its pen up during the drawing. Indeed, the end "
"of the drawing of the first recursive call does not match the beginning of "
"the second recursive call. That is why we had to use the method "
"<code>setPos()</code>"
msgstr ""
"A solução anterior \"induz\" que a tartaruga se teletransporta para outro "
"local, ou pelo menos, que ela levanta a caneta durante o desenho. Na "
"verdade, o final do desenho da primeira chamada recursiva não coincide com o "
"começo da segunda chamada recursiva. É por isto que nós temos que usar o "
"método <code>setPos()</code>"

#. type: Content of: <p>
#: src/lessons/recursion/lego/dragoncurve/DragonCurve2.html:10
msgid ""
"In this lesson, you will write a recursive method allowing to draw the "
"dragon curve without taking the pen up. For that, we need another recursive "
"method drawing the mirror side of the curve."
msgstr ""
"Nesta lição, você vai escrever um método recursivo que permita desenhar a "
"curva do dragão sem levantar a caneta. Para isto, precisamos de outro método "
"recursivo que desenhe o lado espelhado da curva."

#. type: Content of: <p>
#: src/lessons/recursion/lego/dragoncurve/DragonCurve2.html:14
msgid ""
"The method <code>dragon()</code> is then recursively defined using itself "
"and <code>dragonReverse()</code>. Likewise, the method "
"<code>dragonReverse()</code> is defined recursively using itself and "
"<code>dragon()</code>. This is thus an example of <i>mutual recursion</i>."
msgstr ""
"O método <code>dragon()</code> é então definido recursivamente usando ele "
"próprio e <code>dragonReverse()</code>. Da mesma forma, o método "
"<code>dragonReverse()</code> é definido recursivamente usando ele próprio e "
"<code>dragon()</code>. Este é, portanto, um exemplo de <i>recursão mútua</i>."

#. type: Content of: <p>
#: src/lessons/recursion/lego/dragoncurve/DragonCurve2.html:21
msgid ""
"The prototype of the <code>dragon()</code> method remains unchanged from "
"previous exercise:"
msgstr ""
"O protótipo do método <code>dragon()</code> é o mesmo do exercício anterior:"

#. type: Content of: <p>
#: src/lessons/recursion/lego/dragoncurve/DragonCurve2.html:25
msgid ""
"The new point's coordinate (u, v) introduced by the <code>dragon()</code> "
"are:"
msgstr ""
"A coordenada do novo ponto (u, v) introduzida pelo <code>dragon()</code> é:"

#. type: Content of: <p>
#: src/lessons/recursion/lego/dragoncurve/DragonCurve2.html:31
msgid "The prototype of the method <code>dragonReverse</code> is similar:"
msgstr "O protótipo do método <code>dragonReverse</code> é similar:"

#. type: Content of: <pre>
#: src/lessons/recursion/lego/dragoncurve/DragonCurve2.html:32
#, no-wrap
msgid "[!java|c]void [/!]dragonReverse([!java|c]int [/!]order[!scala]:Int[/!], [!java|c]double [/!]x[!scala]:Double[/!], [!java|c]double [/!]y[!scala]:Double[/!], [!java|c]double [/!]z[!scala]:Double[/!], [!java|c]double [/!]t[!scala]:Double[/!])"
msgstr "[!java|c]void [/!]inverterDragão([!java|c]int [/!]order[!scala]:Int[/!], [!java|c]double [/!]x[!scala]:Double[/!], [!java|c]double [/!]y[!scala]:Double[/!], [!java|c]double [/!]z[!scala]:Double[/!], [!java|c]double [/!]t[!scala]:Double[/!])"

#. type: Content of: <p>
#: src/lessons/recursion/lego/dragoncurve/DragonCurve2.html:34
msgid ""
"The new point's coordinate (u, v) introduced by the <code>dragonReverse()</"
"code> are:"
msgstr ""
"A coordenada do novo ponto (u, v) introduzida pelo <code>dragonReverse()</"
"code> é:"

#. type: Content of: <pre>
#: src/lessons/recursion/lego/dragoncurve/DragonCurve2.html:36
#, no-wrap
msgid ""
"u = (x + z)/2 - (t - y)/2\n"
"v = (y + t)/2 + (z - x)/2\n"
msgstr ""
"u = (x + z)/2 - (t - y)/2\n"
"v = (y + t)/2 + (z - x)/2\n"

#. type: Content of: <p>
#: src/lessons/recursion/lego/dragoncurve/DragonCurve2.html:40
msgid ""
"To make the work of each method recursiv more visible, the line painted by "
"the <code>dragon()</code> must be red (<code>Color.red</code>) while the "
"line painted by the <code>dragonReverse()</code> must be blue (<code>Color."
"blue</code>)."
msgstr ""
"Para deixar o trabalho de cada um dos dois métodos recursivos mais visível, "
"a linha pintada pelo <code>dragon()</code> deve ser vermelha (<code>Color."
"red</code>) enquanto que a linha pintada pelo <code>dragonReverse()</code> "
"deve ser azul(<code>Color.blue</code>)."

#. type: Content of: <h3>
#: src/lessons/recursion/hanoi/Main.html:2
#: src/lessons/recursion/hanoi/short_desc.html:2
msgid "Hanoi towers"
msgstr "Torres de Hanoi"

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/Main.html:3
msgid ""
"Here comes the super classical exercise on recursion along with some "
"variations. If you have any other nice variations, please submit them.  At "
"some point, someone should also probably contribute these variations to "
"wikipedia, as only the base problem is nicely described there."
msgstr ""
"Aqui está o exercício super-clássico sobre recursão junto com algumas "
"variações. Se você tiver quaisquer outras variações legais, favor envie "
"elas. Em algum momento, alguém deve enviar estas variações também para a "
"wikipédia, pois por enquanto apenas o problema básico é descrito lá."

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/Main.html:8
msgid ""
"The Interleaved and Split variations come from the following article: "
"\"Exploring Recursion with Variations on the Towers of Hanoi\", Daniel W. "
"Palmer. Available at http://www.ccscjournal.willmitchell.info/Vol12-96/No2a/"
"Daniel%20W%20Palmer.pdf"
msgstr ""
"As variações intercalada e separada vêm do seguinte artigo: \"Exploring\n"
"Recursion with Variations on the Towers of Hanoi\", Daniel\n"
"W. Palmer. Available at\n"
"http://www.ccscjournal.willmitchell.info/Vol12-96/No2a/Daniel%20W%20Palmer."
"pdf"

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/Main.html:13
msgid ""
"The Linear Hanoi is briefly discussed in the article presenting the Linear "
"Twin Towers of Hanoi: \"The Linear Twin Towers of Hanoi Problem\", Steven "
"Minsker (ACM SIGCSE Bulletin Volume 39 Issue 4, December 2007). This article "
"can only be accessed through the paywall of the editor, sorry."
msgstr ""
"Hanoi linear é discutida rapidamente na artigo apresentando as Torres Gêmeas "
"Lineares de Hanoi: \"The Linear Twin Towers of Hanoi Problem\", Steven "
"Minsker (ACM SIGCSE Bulletin Volume 39 Issue 4, December 2007). Este artigo "
"só pode ser acessado através da via paga do editor, desculpe."

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/Main.html:18
msgid ""
"The 3-colors Towers of Hanoi problem was presented on this web page: http://"
"www.cut-the-knot.org/recurrence/TricolorHanoiAuto.shtml"
msgstr ""
"O problema das Torres de Hanoi de 3 cores foi apresentado nesta página: "
"http://www.cut-the-knot.org/recurrence/TricolorHanoiAuto.shtml"

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/Main.html:21
msgid ""
"The Cyclic Towers of Hanoi was proposed by M.D. Atkinson in an article of "
"1981 titled \"The cyclic towers of Hanoi\" (Information Processing Letters, "
"Volume 13:3).  The article is available at http://www.cs.otago.ac.nz/"
"staffpriv/mike/Papers/Hanoi/CyclicHanoi.pdf."
msgstr ""
"As Torres de hanoi cíclicas foram propostas por M.D. Atkinson num artigo de "
"1981 intitulado \"The cyclic towers of Hanoi\" (Information Processing "
"Letters, Volume 13:3). O artigo está disponível em http://www.cs.otago.ac.nz/"
"staffpriv/mike/Papers/Hanoi/CyclicHanoi.pdf."

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/short_desc.html:3
msgid "Here comes the super classical exercise on recursion."
msgstr "Aqui está o exercício super-clássico de recursão."

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/short_desc.html:5
msgid ""
"This is an application exercise of recursion, that you should master to take "
"this lesson."
msgstr ""
"Este é um exercício de aplicação em recursão, que você deve dominar para "
"fazer esta lição."

#. type: Content of: <h2>
#: src/lessons/recursion/hanoi/HanoiBoard.html:2
msgid "Tower of Hanoi"
msgstr "Torre de Hanoi"

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/HanoiBoard.html:4
msgid ""
"The Tower of Hanoi or Towers of Hanoi, also called the Tower of Brahma or "
"Towers of Brahma, is a mathematical game or puzzle. It consists of three "
"pegs, and a number of disks of different sizes which can slide onto any peg. "
"The puzzle starts with the disks in a neat stack in ascending order of size "
"on one peg, the smallest at the top, thus forming a pyramid."
msgstr ""
"A Torre de Hanoi (ou Torres de Hanoi), também conhecida como Torre de Brahma "
"(ou Torres de Brahma), é um quebra-cabeça ou jogo matemático. Consiste de "
"três varas, e uma quantidade de discos de tamanhos diferentes que podem "
"encaixar em qualquer das varas. O jogo começa com os discos todos em uma "
"vara ordenados em ordem crescente, o menor em cima, formando uma pirâmide."

#. type: Content of: outside any tag (error?)
#: src/lessons/recursion/hanoi/HanoiBoard.html:10
msgid ""
"The objective of the puzzle is to move the entire stack to another peg, "
"obeying the following rules:"
msgstr ""
"O objetivo do jogo é mover a pilha completa para outra vara, obedecendo as "
"seguintes regras:"

#. type: Content of: <ul><li>
#: src/lessons/recursion/hanoi/HanoiBoard.html:12
msgid "Only one disk may be moved at a time."
msgstr "Apenas um disco pode ser movido por vez."

#. type: Content of: <ul><li>
#: src/lessons/recursion/hanoi/HanoiBoard.html:14
msgid ""
"Each move consists of taking the upper disk from one of the pegs and sliding "
"it onto another peg, on top of the other disks that may already be present "
"on that peg."
msgstr ""
"Cada movimentação consiste em pegar o disco de cima de uma vara e colocá-lo "
"em outra vara, no topo dos discos que já estiverem presentes."

#. type: Content of: <ul><li>
#: src/lessons/recursion/hanoi/HanoiBoard.html:18
msgid "No disk may be placed on top of a smaller disk."
msgstr "Nenhum disco pode ser colocado sobre um disco menor."

#. type: Content of: outside any tag (error?)
#: src/lessons/recursion/hanoi/HanoiBoard.html:23
msgid ""
"Write the core of the method: <code>[!java|c]void [/!]hanoi[!c]Rec[/!]([!"
"java|c]int [/!]height[!scala]:Int[/!], [!java|c]int [/!]src[!scala]:Int[/!], "
"[!java|c]int [/!]other[!scala]:Int[/!],[!java|c]int [/!]dst[!scala]:"
"Int[/!])</code>"
msgstr ""
"Escreva o núcleo do método: <code>[!java|c]void [/!]hanoi[!c]Rec[/!]([!java|"
"c]int [/!]height[!scala]:Int[/!], [!java|c]int [/!]src[!scala]:Int[/!], [!"
"java|c]int [/!]other[!scala]:Int[/!],[!java|c]int [/!]dst[!scala]:Int[/!])</"
"code>"

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/HanoiBoard.html:26
msgid ""
"This method will recursively solve the presented problem. The first "
"parameter named <code>height</code> is the height of the tower to move; The "
"second parameter <code>src</code> is the index of the initial tower, the "
"third parameter <code>other</code> is the index of the unused peg while the "
"fourth parameter <code>dst</code> is the index of the expected final tower."
msgstr ""
"Este método vai, recursivamente, resolve o problema apresentado. O primeiro "
"parâmetro chamado <code>height</code> é a altura da torre a mover; o segundo "
"parâmetro <code>src</code> é o índice da torre inicial, o terceiro parâmetro "
"<code>other</code> é o índica da vara não utilizada enquanto que o quarto "
"parâmetro <code>dst</code> é o índice da torre final experada."

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/HanoiBoard.html:32
msgid ""
"A key to solving this puzzle is to recognize that it can be solved by "
"breaking the problem down into a collection of smaller problems and further "
"breaking those problems down into even smaller problems until a solution is "
"reached."
msgstr ""
"O segredo para resover este enigma é reconhecer que ele pode ser dividido em "
"problemas menores e este em problemas menores até que uma solução é "
"encontrada."

#. type: Attribute 'alt' of: <div>
#: src/lessons/recursion/hanoi/HanoiBoard.html:36
msgid "I don't get it, please give me some extra indications"
msgstr "Ainda não captei, por favor me dê mais orientações"

#. type: Content of: <div>
#: src/lessons/recursion/hanoi/HanoiBoard.html:37
msgid "Here is the pseudo-code of the solution:"
msgstr "Aqui está um pseudo-código da solução:"

#. type: Content of: <div><ul><li>
#: src/lessons/recursion/hanoi/HanoiBoard.html:39
msgid "label the pegs A, B, C (these labels may move at different steps)"
msgstr ""
"Rotule as varas como A, B, C (estes rótulos pode se mover com diferentes "
"passos)"

#. type: Content of: <div><ul><li>
#: src/lessons/recursion/hanoi/HanoiBoard.html:40
msgid "let n be the total number of discs (the height of the initial tower)"
msgstr "Seja n o número total de discos (A altura da torre inicial)"

#. type: Content of: <div><ul><li>
#: src/lessons/recursion/hanoi/HanoiBoard.html:41
msgid "number the discs from 1 (smallest, topmost) to n (largest, bottommost)"
msgstr ""
"número de discos a partir de 1 (menor, mais alto) até n (maior, mais baixo)"

#. type: Content of: <div>
#: src/lessons/recursion/hanoi/HanoiBoard.html:44
msgid "To move n discs from peg A to peg C:"
msgstr "Para mover n discos da vara A para a vara C:"

#. type: Content of: <div><ul><li>
#: src/lessons/recursion/hanoi/HanoiBoard.html:46
msgid "move n−1 discs from A to B. This leaves disc number n alone on peg A"
msgstr "mova n−1 discos de A para B. Isto deixa o disco n sozinho na vara A"

#. type: Content of: <div><ul><li>
#: src/lessons/recursion/hanoi/HanoiBoard.html:47
msgid "move disc number n from A to C"
msgstr "Mova o disco de número n de A para C"

#. type: Content of: <div><ul><li>
#: src/lessons/recursion/hanoi/HanoiBoard.html:48
msgid "move n−1 discs from B to C so they sit on disc number n"
msgstr ""
"Mova n−1 discos de B para C de forma que eles fiquem sobre o disco de número "
"n"

#. type: Content of: <h2>
#: src/lessons/recursion/hanoi/InterleavedHanoi.html:2
msgid "Interleaved Towers of Hanoi"
msgstr "Torres de Hanoi Intercaladas"

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/InterleavedHanoi.html:4
msgid ""
"In this classical variation of the Towers of Hanoi, you are given 4 pegs "
"with 2 stacks, one white and one black. You should mix the two stacks as "
"depicted in the Objective world.  As previously, you cannot move a disk on a "
"smaller disk."
msgstr ""
"Nesta variação clássica das Torres de Hanoi, você tem 4 varas com duas "
"pilhas, uma branca e outra preta. Você deve misturar as duas pilhas como "
"descrito no mundo objetivo. Como antes, você não pode mover um disco para "
"cima de um disco menor."

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/InterleavedHanoi.html:8
msgid ""
"You will probably need to reuse the <code>hanoi()</code> method that you "
"wrote in the previous exercise."
msgstr ""
"Você provavelmente vai precisar reutilizar o método <code>hanoi()</code> que "
"você escreveu no exercício anterior."

#. type: Attribute 'alt' of: <div>
#: src/lessons/recursion/hanoi/InterleavedHanoi.html:10
#: src/lessons/recursion/hanoi/SplitHanoi1.html:10
msgid "Please show me an intermediate step"
msgstr "Favor me mostra um passo intermediário"

#. type: Content of: <div>
#: src/lessons/recursion/hanoi/InterleavedHanoi.html:12
#: src/lessons/recursion/hanoi/SplitHanoi1.html:12
msgid "If your initial situation is as follows:"
msgstr "Se sua situação é a seguinte:"

#. type: Content of: <div>
#: src/lessons/recursion/hanoi/InterleavedHanoi.html:15
#: src/lessons/recursion/hanoi/SplitHanoi1.html:15
msgid ""
"then you have the following situation right before the main recursive call:"
msgstr ""
"Então você tem a seguinte situação exatamente antes da chamada recursiva "
"principal:"

#. type: Content of: <h2>
#: src/lessons/recursion/hanoi/SplitHanoi1.html:2
msgid "Split Towers of Hanoi"
msgstr "Torres de hanoi Separadas"

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/SplitHanoi1.html:4
msgid ""
"Given one interleaved stack (e.g. resulting from the previous exercise), you "
"should build two separate stacks.  In other words, your code should revert "
"the operations done to solve the previous exercise."
msgstr ""
"Dada uma pilha intercalada (e.g. o resultado do exercício anterior), você "
"deve construir duas pilhas separadas. Em outras palavras, seu código deve "
"reverter as operações feitas para resolver o exercício anterior."

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/SplitHanoi1.html:7
msgid ""
"You will need an extra function that can move an interleaved stack of n "
"pairs of disks, without changing the relative positions of disks of the same "
"size."
msgstr ""
"Você vai precisar de uma função extra que mova uma pilha intercalada de n "
"pares de discos, sem mudar as posições relativas dos discos de mesmo tamanho."

#. type: Content of: <h2>
#: src/lessons/recursion/hanoi/SplitHanoi2.html:2
msgid "Better Split Towers of Hanoi"
msgstr "Better Split Towers of Hanoi"

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/SplitHanoi2.html:4
msgid ""
"Surprisingly, our solution to split the towers generates much more moves "
"than our solution to interleave them. As both problems are symmetric, this "
"should not be."
msgstr ""
"Surpreendentemente, nossa solução de dividir (split) as torres gera\n"
"muito mais movimentos que a solução de intercalar elas. Como os\n"
"problemas são simétricos, isto não deveria acontecer."

#. type: Content of: <br><table><tr><td>
#: src/lessons/recursion/hanoi/SplitHanoi2.html:7
#: src/lessons/recursion/hanoi/SplitHanoi3.html:21
msgid "Disks amount"
msgstr "Quantidade de discos"

#. type: Content of: <br><table><tr><td>
#: src/lessons/recursion/hanoi/SplitHanoi2.html:7
#: src/lessons/recursion/hanoi/SplitHanoi3.html:21
msgid "Interleaved"
msgstr "Intercalada"

#. type: Content of: <table><tr><td>
#: src/lessons/recursion/hanoi/SplitHanoi2.html:7
msgid "Split"
msgstr "Split"

#. type: Content of: <br><table><tr><td>
#: src/lessons/recursion/hanoi/SplitHanoi2.html:8
#: src/lessons/recursion/hanoi/SplitHanoi3.html:22
msgid "5 pairs"
msgstr "5 pares"

#. type: Content of: <br><table><tr><td>
#: src/lessons/recursion/hanoi/SplitHanoi2.html:8
#: src/lessons/recursion/hanoi/SplitHanoi3.html:22
msgid "62 moves"
msgstr "62 movimentos"

#. type: Content of: <br><table><tr><td>
#: src/lessons/recursion/hanoi/SplitHanoi2.html:8
#: src/lessons/recursion/hanoi/SplitHanoi3.html:22
msgid "88 moves"
msgstr "88 movimentos"

#. type: Content of: <br><table><tr><td>
#: src/lessons/recursion/hanoi/SplitHanoi2.html:9
#: src/lessons/recursion/hanoi/SplitHanoi3.html:23
msgid "6 pairs"
msgstr "6 pares"

#. type: Content of: <br><table><tr><td>
#: src/lessons/recursion/hanoi/SplitHanoi2.html:9
#: src/lessons/recursion/hanoi/SplitHanoi3.html:23
msgid "126 moves"
msgstr "126 movimentos"

#. type: Content of: <br><table><tr><td>
#: src/lessons/recursion/hanoi/SplitHanoi2.html:9
#: src/lessons/recursion/hanoi/SplitHanoi3.html:23
msgid "183 moves"
msgstr "183 movimentos"

#. type: Content of: <br><table><tr><td>
#: src/lessons/recursion/hanoi/SplitHanoi2.html:10
#: src/lessons/recursion/hanoi/SplitHanoi3.html:24
msgid "7 pairs"
msgstr "7 pares"

#. type: Content of: <br><table><tr><td>
#: src/lessons/recursion/hanoi/SplitHanoi2.html:10
#: src/lessons/recursion/hanoi/SplitHanoi3.html:24
msgid "254 moves"
msgstr "254 movimentos"

#. type: Content of: <br><table><tr><td>
#: src/lessons/recursion/hanoi/SplitHanoi2.html:10
#: src/lessons/recursion/hanoi/SplitHanoi3.html:24
msgid "374 moves"
msgstr "374 movimentos"

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/SplitHanoi2.html:13
msgid "Can you make the split tower as efficient as the interleaved one?"
msgstr "Você consegue deixar o \"split\" tão eficiente quanto o intercalada?"

#. type: Attribute 'alt' of: <div>
#: src/lessons/recursion/hanoi/SplitHanoi2.html:15
msgid "I need a starter hint"
msgstr "Preciso de uma dica de principiante"

#. type: Content of: <div>
#: src/lessons/recursion/hanoi/SplitHanoi2.html:16
msgid ""
"The source of discrepancy is an inefficient problem decomposition.  "
"Satisfied that it merely worked, we looked no futher for a better solution.  "
"Keeping the disks of the interleaved tower in the correct order during every "
"move is unnecessary.  In fact, we can avoid moving the interleaved tower at "
"all.  A better problem decomposition splits the pair of disks into two "
"colored towers as they are removed from the interleaved tower."
msgstr ""
"A fonte de discrepância é uma decomposição ineficiente do problema. "
"Satisfeitos com o fato dele simplesmente funcionar, nós não procuramos mais "
"por uma solução melhor. Manter os discos da torre intercalada na ordem "
"correta durante cada movimento é desnecessário. De fato, podemos evitar "
"completamente mover a torre intercalada. Uma decomposição melhor do problema "
"divide o par de discos em duas torres coloridas à medida em que eles são "
"removidos da torre intercalada."

#. type: Attribute 'alt' of: <br><br><div>
#: src/lessons/recursion/hanoi/SplitHanoi2.html:24
msgid "The starter hint was not enough"
msgstr "A dica de principiante não foi suficiente"

#. type: Content of: <br><br><div>
#: src/lessons/recursion/hanoi/SplitHanoi2.html:25
msgid ""
"If someone could split the (n-1) pairs of disks beforehand, could you split "
"the remaining pair?"
msgstr ""
"Se alguém puder dividir os (n-1) pares de discos previamente, você poderia "
"dividir o par restante?"

#. type: Attribute 'alt' of: <br><br><br><br><div>
#: src/lessons/recursion/hanoi/SplitHanoi2.html:30
msgid "You need to be more explicit"
msgstr "Você precisa ser mais explícito"

#. type: Content of: <br><br><br><br><div><ul><li>
#: src/lessons/recursion/hanoi/SplitHanoi2.html:32
msgid ""
"First split the first (n-1) pairs of disks from the interleaved stack into a "
"white tower and a black tower (calling recursively your main function)."
msgstr ""
"Primeiro divida os primeiros (n-1) pares de discos da pilha intercalada em "
"uma torre branca e uma torre preta (chamando recursivamente sua função "
"principal)."

#. type: Content of: <br><br><br><br><div><ul><li>
#: src/lessons/recursion/hanoi/SplitHanoi2.html:33
msgid "Then move the large white disk on its target pole."
msgstr "Então mova o disco branco grande para sua vara objetivo."

#. type: Content of: <br><br><br><br><div><ul><li>
#: src/lessons/recursion/hanoi/SplitHanoi2.html:34
msgid "Then move the (n-1) smaller white disks on top of the large one."
msgstr "Então mova os (n-1) discos brancos menores para o topo do maior."

#. type: Content of: <br><br><br><br><div><ul><li>
#: src/lessons/recursion/hanoi/SplitHanoi2.html:35
msgid "Then move the large black disk on its target pole."
msgstr "Então mova o disco preto grande para sua vara objetivo."

#. type: Content of: <br><br><br><br><div><ul><li>
#: src/lessons/recursion/hanoi/SplitHanoi2.html:36
msgid "Then move the smaller black disks in position."
msgstr "Então mova os discos pretos pequenos para a posição."

#. type: Content of: <h2>
#: src/lessons/recursion/hanoi/SplitHanoi3.html:2
msgid "Fast Split Towers of Hanoi"
msgstr "Fast Split Towers of Hanoi"

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/SplitHanoi3.html:4
msgid ""
"Again, our previous solution is working, but it is far from being optimal.  "
"When moving the towers, we use the algorithm for 3 pegs even if we have 4 "
"pegs.  Of course, movements to the last peg are restricted since it contains "
"the other stack, but we can always store the smallest disk on top of the "
"other stack before moving our stack."
msgstr ""
"Novamente, nossas soluções anteriores funcionam, mas estão longe de serem "
"ótimas. Quando movemos as torres, usamos o algoritmo de 3 varas mesmo quando "
"temos 4 varas. Obviamente, movimentos para a última vara são restritos pois "
"ela contém a outra pilha, mas podemos sempre armazenar o menor disco no topo "
"da outra pilha antes de mover nossa pilha."

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/SplitHanoi3.html:9
msgid ""
"For that, we need to devise a new function <code>hanoi_fast(height, src, "
"free, full, dst)</code> that moves the stack from <code>src</code> to "
"<code>dst</code> using <code>free</code>, but storing the smallest disk onto "
"<code>full</code> beforehand."
msgstr ""
"Para isto, nós precisamos criar uma nova função\n"
"<code>hanoi_fast(height, src, free, full, dst)</code> que move a pilha\n"
"de <code>src</code> para <code>dst</code> usando <code>free</code>,\n"
"mas armazenando o menor disco em <code>full</code> antes."

#. type: Attribute 'alt' of: <div>
#: src/lessons/recursion/hanoi/SplitHanoi3.html:13
msgid "I'm lost"
msgstr "Estou perdido"

#. type: Content of: <div>
#: src/lessons/recursion/hanoi/SplitHanoi3.html:14
msgid ""
"The <code>hanoi_fast(height, src, free, full, dst)</code> function is not "
"recursive.  It moves the first disk and then call the regular <code>hanoi()</"
"code> function."
msgstr ""
"A função <code>hanoi_fast(height, src, free, full, dst)</code> não é "
"recursiva. Ela move o primeiro disco e então chama a função regular "
"<code>hanoi()</code>."

#. type: Content of: <br><p>
#: src/lessons/recursion/hanoi/SplitHanoi3.html:18
msgid ""
"This change greatly improve the performance, as you can see below. Of "
"course, this trick could also be used for the interleaved algorithm, leading "
"as expected to the exact same performance."
msgstr ""
"Esta mudança melhora enormemente a eficiência, como você pode ver abaixo. "
"Obviamente, este truque também pode ser usado para o algoritmo intercalado, "
"levando, como esperado, a exatamente a mesma eficiência."

#. type: Content of: <br><table><tr><td>
#: src/lessons/recursion/hanoi/SplitHanoi3.html:21
msgid "Slow Split"
msgstr "Slow Split"

#. type: Content of: <br><table><tr><td>
#: src/lessons/recursion/hanoi/SplitHanoi3.html:21
msgid "Fast Split"
msgstr "Fast Split"

#. type: Content of: <br><table><tr><td>
#: src/lessons/recursion/hanoi/SplitHanoi3.html:22
msgid "46 moves"
msgstr "46 movimentos"

#. type: Content of: <br><table><tr><td>
#: src/lessons/recursion/hanoi/SplitHanoi3.html:23
msgid "82 moves"
msgstr "82 movimentos"

#. type: Content of: <br><table><tr><td>
#: src/lessons/recursion/hanoi/SplitHanoi3.html:24
msgid "150 moves"
msgstr "150 movimentos"

#. type: Content of: <br><p>
#: src/lessons/recursion/hanoi/SplitHanoi3.html:27
msgid ""
"As a conclusion, most of us are satisfied with a working solution and we "
"easily overlook possibilities to improve the problem decomposition. <b>You</"
"b> should not do that ;)"
msgstr ""
"Como uma conclusão, a maioria das pessoas se satisfaz com uma solução que "
"funcione e rapidamente ignora possibilidades para melhorar a decomposição do "
"problema. <b>Você</b> não deve fazer isto ;)"

#. type: Content of: <h2>
#: src/lessons/recursion/hanoi/LinearHanoi.html:2
msgid "Linear Towers of Hanoi"
msgstr "Linear Towers of Hanoi"

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/LinearHanoi.html:4
msgid ""
"This is a classical variation over the Towers of Hanoi where some moves are "
"forbidden.  Specifically, disks cannot move directly between the left-most "
"and the right-most pegs.  The middle peg must be involved in every moves."
msgstr ""
"Esta é uma variação clássica das Torres de Hanoi onde alguns movimentos são "
"proibidos. Especificamente, os disco não podem ser movidos diretamente da "
"vara mais à esquerda para a vara mais a direita. A vara do meio deve ser "
"envolvida em cada movimento."

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/LinearHanoi.html:8
msgid ""
"Beside of that extra complexity, the problem remains unchanged: you are "
"requested to move the whole stack of disks from one extremity peg to the "
"other one. You can only move one disk at a time, and a bigger disk cannot be "
"placed over a smaller one."
msgstr ""
"Apesar desta complexidade, o problema permanece o mesmo: você tem que mover "
"toda a pilha de discos da vara numa extremidade para a vara na outra "
"extremidade. Você só pode mover um disco por vez, e um disco não pode ficar "
"sobre outro menor."

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/LinearHanoi.html:12
msgid ""
"As with the classical version, it is much easier to produce a recursive "
"solution, and you are absolutely able to devise this solution if you think "
"hard enough about it."
msgstr ""
"Como na versão clássica, é muito fácil produzir uma solução recursiva, e "
"você é totalmente capaz de \"devise\" esta solução se você pensar com "
"atenção nela."

#. type: Attribute 'alt' of: <div>
#: src/lessons/recursion/hanoi/LinearHanoi.html:15
msgid "I tried, but I don't get it"
msgstr "Tentei, mas não consegui"

#. type: Content of: <div>
#: src/lessons/recursion/hanoi/LinearHanoi.html:16
msgid ""
"The standard recursive algorithm for classical Hanoi is of complexity "
"<i>2^n-1</i> where the standard recursive algorithm for this variation is of "
"complexity <i>3^n-1</i>."
msgstr ""
"O algortimo recursivo padrão para as torres de Hanoi clássicas é de "
"complexidade <i>2^n-1</i> enquanto que o algoritmo recursivo padrão para "
"esta variação é de complexidade <i>3^n-1</i>."

#. type: Attribute 'alt' of: <div>
#: src/lessons/recursion/hanoi/LinearHanoi.html:20
msgid "That first tip was not enough"
msgstr "A primeira dica não foi suficiente"

#. type: Content of: <div>
#: src/lessons/recursion/hanoi/LinearHanoi.html:21
msgid ""
"The standard recursive algorithm for classical Hanoi involves two recursive "
"calls sandwiching one movement of the largest disk, the standard recursive "
"algorithm for Linear Hanoi involves three recursive calls sandwiched around "
"two movements of the same disk."
msgstr ""
"A algoritmo recursivo padrão para as torres de Hanoi clássicas envolve duas "
"chamadas recursivas sanduichando um movimento do disco maior, O algoritmo "
"recursivo padrão para Hanoi Linear envolve três chamadas recursivas "
"sanduichando dois movimentos do mesmo disco."

#. type: Content of: <h2>
#: src/lessons/recursion/hanoi/LinearTwinHanoi.html:2
msgid "Linear Twin Towers of Hanoi"
msgstr "Torres gêmeas de Hanoi Lineares"

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/LinearTwinHanoi.html:4
msgid ""
"This is a mix between both the Split and Interleaved problems, and the "
"linear problem.  We are given two stacks of disks, on three pegs. We are "
"expected to swap the stacks' position while respecting the classical Hanoi "
"movement restrictions (one disk at a time, and no large disk over smaller "
"disks) and the linear movement restriction (no direct exchange between the "
"left-most and right-most pegs)."
msgstr ""
"Esta é uma mistura entre os problemas \"Split\", Intercalado e linear. Temos "
"duas pilhas de discos, em três varas. Devemos trocar a posição das pilhas "
"respeitando as restrições clássicas de movimento (um disco por vez, disco "
"grande não pode ficar sobre disco pequeno) e a restrição do movimento linear "
"(proibido mudança diretamente da vara mais à esquerda para a vara mais à "
"direita)."

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/LinearTwinHanoi.html:10
msgid "You will use three recursive functions:"
msgstr "Você vai usar três funções recursivas:"

#. type: Content of: <ul><li>
#: src/lessons/recursion/hanoi/LinearTwinHanoi.html:12
msgid ""
"<b>moveDouble(k,from, to)</b>: moves an interleaved stack of k pairs of "
"disks, without changing the relative positions of disks of the same size. As "
"in the Split Hanoi problem, an interleaved stack alternates white and black "
"disks of each sizes. This function is not completely new: you wrote a "
"version with 4 pegs (but using only 3 of them) for the first version of the "
"Split Hanoi problem."
msgstr ""
"<b>moveDouble(k,from, to)</b>: move uma pilha intercalada de k pares de "
"discos, sem mudar as posições relativas dos discos de mesmo tamanho. Como no "
"problema de hanoi \"Split\", uma pilha intercalada alterna discos brancos e "
"pretos de cada tamanho. Esta função não é completamente nova: você escreveu "
"uma versão com 4 varas (mas usando apenas 3 delas) para a primeira versão do "
"problema de hanoi \"split\"."

#. type: Content of: <ul><li>
#: src/lessons/recursion/hanoi/LinearTwinHanoi.html:17
msgid ""
"<b>gather(k)</b>: from the initial split situation, build on peg #2 an "
"interleaved stack of k pairs of disks. You may parametrize your function so "
"that it can be used to gather the disk on any peg passed as parameter, but "
"in practice, your function will only be used to gather on the last peg."
msgstr ""
"<b>gather(k)</b>: da situação inicial do caso \"separado\", constroi na vara "
"#2 uma\n"
"pilha intercalada de k pares de discos. Você pode parametrizar sua\n"
"função de forma que ela possa ser usada para obter o disco\n"
"de qualquer vara passado como parâmetro, mas na prática, sua função\n"
"vai apenas ser usada para obter na última vara."

#. type: Content of: <ul><li>
#: src/lessons/recursion/hanoi/LinearTwinHanoi.html:21
msgid ""
"<b>scatter(k)</b>: from a situation where k pairs of disks are interleaved "
"on peg #0, split it down by moving the white disks to peg #1 and black ones "
"to peg #2."
msgstr ""
"<b>scatter(k)</b>: de uma situação onde k pares de discos são\n"
"intercalados na vara #0, separe eles movendo os discos\n"
"brancos para a vara #1 e os pretos para a vara #2."

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/LinearTwinHanoi.html:25
msgid ""
"In <code>gather()</code>, the recursive call comes before two calls to "
"<code>moveDouble()</code> while in <code>scatter()</code>, the calls to "
"<code>moveDouble()</code> come before the recursive call.  The main function "
"that you should write is not recursive, but simply gather almost all disks, "
"moves directly the remaining disks, and then scatters back the small disks."
msgstr ""
"Em <code>gather()</code>, a chamada recursiva vem antes das duas\n"
"chamadas a <code>moveDouble()</code> enquanto em\n"
"<code>scatter()</code>, as chamadas para <code>moveDouble()</code> vem\n"
"depois da chamada recursiva. A função principal que você deve escrever\n"
"não é recursiva, mas simplesmente obtem quase todos os discos, move os\n"
"discos restantes diretamente, e então espalha (\"scatters\") de volta os\n"
"discos menores."

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/LinearTwinHanoi.html:31
msgid ""
"The linearity naturally induces some extra complexity as you have to "
"decompose every move between pegs 0 and 2. I am still confident in your "
"ability to overcome the challenge :)"
msgstr ""
"A linearidade naturalmente induz alguma complexidade extra pois você\n"
"tem que decompor cada movimento entre as varas 0 e 2. Eu ainda estou\n"
"confiante na sua capacidade de vencer este desafio :)"

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/LinearTwinHanoi.html:35
msgid ""
"Note that the requested algorithm was proved optimal for that problem, so "
"you don't need to fiddle the performance this time."
msgstr ""
"Observe que foi provado que o algoritmo requerido é ótimo para este\n"
"problema, então você não precisa \"fiddle\" a performance desta vez."

#. type: Content of: <h2>
#: src/lessons/recursion/hanoi/TricolorHanoi1.html:2
msgid "Tricolor Hanoi: stack move"
msgstr "Hanoi de tricolor: movimentação de pilhas"

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/TricolorHanoi1.html:4
msgid ""
"In this set of exercises, we will devise an algorithm for the Tricolor Hanoi "
"problem.  There will be 3 stacks on 3 pegs, each stack of a differing color, "
"and the problem is to exchange the stacks' positions under the classical "
"move rules (one disk at a time, and no bigger disk over smaller disk)."
msgstr ""
"Neste conjunto de exercícios, vamos \"devise\" um algoritmo para o\n"
"problema de Hanoi Tricolor. vão existir 3 pilhas em 3 varas, cada\n"
"pilha de uma cor diferente, e o problema é alternar a posição das\n"
"pilhas seguindos as regras clássicas do movimento (um disco por vez,\n"
"disco grande não pode ficar sobre disco pequeno)."

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/TricolorHanoi1.html:9
msgid "As in previous exercises, our solution will use three functions:"
msgstr "Como nos exercícios anteriores, nossa solução vai usar três funções:"

#. type: Content of: <ul><li>
#: src/lessons/recursion/hanoi/TricolorHanoi1.html:11
msgid ""
"<code>move3(n, src, mid, dst)</code>: moves a stack of interleaved disks, ie "
"a stack of (n*3) disks of alternating colors from peg <code>src</code> to "
"peg <code>dst</code>."
msgstr ""
"<code>move3(n, src, mid, dst)</code>: move uma pilha de discos\n"
"intercalados, ie uma pilha de (n*3) discos de cores alternadas de uma\n"
"vara <code>src</code> para uma vara <code>dst</code>."

#. type: Content of: <ul><li>
#: src/lessons/recursion/hanoi/TricolorHanoi1.html:13
msgid ""
"<code>gather()</code>: builds an interleaved stack from the regular split "
"ones."
msgstr ""
"<code>gather()</code>: constrói uma pilha intercalada a partir de três "
"pilhas \"split\"."

#. type: Content of: <ul><li>
#: src/lessons/recursion/hanoi/TricolorHanoi1.html:14
msgid ""
"<code>scatter()</code>: splits an interleaved stack into several regular "
"ones."
msgstr ""
"<code>scatter()</code>: separa uma pilha intercalada em três pilhas normais."

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/TricolorHanoi1.html:17
msgid ""
"The goal of this first exercise in the series is to devise the "
"<code>move3()</code> function.  This starter task should not block you for "
"too long, actually. It is ok if your function changes the order of the "
"bottom triplet of disks, but it must preserve the order of the other "
"triplets."
msgstr ""
"O objetivo deste primeiro exercício na série é \"devise\" a função\n"
"<code>move3()</code>. Esta tarefa inicial não deve segurar você muito,\n"
"na verdade. Tudo bem se sua função muda a ordem do trio de discos mais\n"
"no fundo, mas ela deve preservar a ordem dos outros trios."

#. type: Content of: <h2>
#: src/lessons/recursion/hanoi/TricolorHanoi2.html:2
msgid "Tricolor Hanoi: the Gathering"
msgstr "Tricolor Hanoi: the Gathering"

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/TricolorHanoi2.html:4
msgid ""
"It is now time to write the second function required by the Tricolor Hanoi "
"problem.  <code>gather()</code> builds an interleaved stack from the regular "
"split ones. This function takes four arguments, the last one being the "
"target peg where the interleaved stack must be assembled.  As you can see in "
"the examples, the colors of must be in the same order for each triplet of "
"disks."
msgstr ""
"Agora é a hora de escrever a segunda função necessária para o problema\n"
"de Hanoi Tricolor. <code>gather()</code> constroi uma pilha\n"
"intercalada a partir de pilhas \"split\". Esta função recebe quatro\n"
"argumentos, o último sendo a vara destino onde a pilha intercalada\n"
"deve ser montada. Como você pode ver nos exemplos, as cores devem\n"
"estar na mesma ordem para cada trio de discos."

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/TricolorHanoi2.html:9
msgid ""
"That function actually uses the <code>move3()</code> that you wrote just "
"before. Simply copy/paste your code over to reuse it. If you're lost, please "
"refer to the Interleaved Hanoi exercise. Gathering 3 stacks on 3 pegs is "
"rather similar to gathering 2 stacks on 4 pegs. You can find that exercise "
"<a href=\"plm://lessons.recursion.hanoi/InterleavedHanoi\">here</a>."
msgstr ""
"Esta função na verdade usa o <code>move3()</code> que você escreveu\n"
"agora a pouco. Simplesmente copie-e-cole seu código e reuse ele. Se\n"
"estiver perdido, favor olhe o exercício Hanoi Intercalada. Obter 3\n"
"pilhas em 3 varas é muito similar a obter 2 pilhas em 4 varas. Você\n"
"pode encontrar este exercício <a\n"
"href=\"plm://lessons.recursion.hanoi/InterleavedHanoi\">aqui</a>."

#. type: Content of: <h2>
#: src/lessons/recursion/hanoi/TricolorHanoi3.html:2
msgid "Tricolor Hanoi: the Final"
msgstr "Hanoi Tricolor: o Final"

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/TricolorHanoi3.html:4
msgid ""
"We are almost ready to write the whole tricolor algorithm. We just need the "
"<code>scatter()</code> function, very inspired from the first one that we "
"wrote for the <a href=\"plm://lessons.recursion.hanoi/SplitHanoi1\">Split "
"Hanoi problem</a>. Assuming that your interleaved stack is placed on the "
"<code>mid</code> peg, spread the disks over all pegs. Make sure to use "
"<code>move3()</code> an even amount of time at each recursive level to "
"ensure that the bottom disks are in the correct order."
msgstr ""
"Estamos quase prontos para escrever o algoritmo tricolor. Precisamos\n"
"apenas da função <code>scatter()</code>, bastante inspirada na\n"
"primeira que escrevemos para o\n"
"<a href=\"plm://lessons.recursion.hanoi/SplitHanoi1\">problema de Hanoi "
"Separado</a>.\n"
"Assumindo que sua pilha intercalada esteja na vara do\n"
"<code>meio</code>, espalhe os discos por todas as varas. Certifique-se\n"
"de usar <code>move3()</code> uma quantidade par de vezes em cada nível\n"
"recursivo para garantir que os discos de baixo estejam na ordem\n"
"correta."

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/TricolorHanoi3.html:10
msgid ""
"As you can see, the initial situation is not the one expected by "
"<code>scatter()</code>. You first have to apply <code>gather()</code> and "
"<code>move3()</code> (twice to get the bottom triplet in the right order). "
"These few steps plus the new <code>scatter()</code> function are enough to "
"entirely solve the Tricolor Hanoi problem."
msgstr ""
"Como você pode ver, a situação inicial não é a esperada por\n"
"<code>scatter()</code>. Primeiro você tem que aplicar\n"
"<code>gather()</code> e <code>move3()</code> (duas vezes para colocar\n"
"o trio do fundo na ordem correta). Estes poucos passos mais a nova\n"
"função <code>scatter()</code> são o suficiente para resolver\n"
"inteiramente o problema de Hanoi Tricolor."

#. type: Content of: <h2>
#: src/lessons/recursion/hanoi/CyclicHanoi.html:2
msgid "Cyclic Towers of Hanoi"
msgstr "Torres de Hanoi cíclicas"

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/CyclicHanoi.html:4
msgid ""
"This variation of the Towers of Hanoi is very similar to the regular "
"problem: you are given one stack of disks and three pegs, and you cannot "
"move a larger disk over a smaller one.  The change is that you can only move "
"disks clockwise: 0->1 or 1->2 or 2->0, but never in the other direction."
msgstr ""
"Esta variação das torres de Hanoi é muito similar ao problema normal:\n"
"você recebe uma pilha de discos e três varas, e você não pode mover um\n"
"disco maior sobre um menor. A diferença é que você só pode mover\n"
"discos no sentido horário: 0->1 ou 1->2 ou 2->0, mas nunca na outra\n"
"direção."

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/CyclicHanoi.html:8
msgid ""
"Obviously, the movements are not symmetric anymore. Moves from A to B are "
"now very different from moves to B to A.  As a result, you need two "
"recursive functions depending on whether you are moving the stack clockwise "
"or counterclockwise."
msgstr ""
"Obviamente, os movimentos não são simétricos de forma\n"
"alguma. Movimentos de A para B são agora muito diferentes de\n"
"movimentos de B para A. Como resultado, você precisa de duas funções\n"
"recursivas dependendo de você estar movendo a pilha no sentido horário\n"
"ou anti-horário."

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/CyclicHanoi.html:11
msgid ""
"That being said, the problem decomposition is very similar to the classical "
"Hanoi. The twist is that each function call the other one, constituting a "
"nice example of mutual recursion."
msgstr ""
"Dito isto, a decomposição do problema é muito similar ao Hanoi\n"
"clássico. A diferença é que cada função chama a outra, constituindo um\n"
"bom exemplo de recursão mútua."

#. type: Content of: <h2>
#: src/lessons/recursion/hanoi/IterativeHanoi.html:2
msgid "Iterative Towers of Hanoi"
msgstr "Torres de Hanoi Iterativas"

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/IterativeHanoi.html:4
msgid ""
"In this last exercise of the series, we will implement an iterative "
"algorithm for the base problem of the Towers of Hanoi (one stack, 3 pegs, no "
"extra movement restriction)."
msgstr ""
"Neste último exercício da série, vamos implementar um algoritmo\n"
"iterativo para o problema básico das Torres de hanoi (uma pilha, 3\n"
"varas, sem restrição extra de movimento)."

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/IterativeHanoi.html:8
msgid ""
"This algorithm is actually very simple: On odd moves, the smallest disk is "
"moved in a given direction (either increasing 0-&gt;1-&gt;2-&gt;0 or "
"decreasing 2-&lt;1-&lt;0-&lt;2) while on even moves, the only possible move "
"that does not imply the smallest disk is made. You stop as soon as the stack "
"is rebuilt on another location."
msgstr ""
"Este algoritmo é na verdade bastante simples: em movimentos ímpares, o\n"
"disco menor é movido numa dada direção (tanto aumentando\n"
"0-&gt;1-&gt;2-&gt;0 ou diminuindo 2-&lt;1-&lt;0-&lt;2) enquanto em\n"
"movimentos pares, o único movimento possível que não usa o disco menor\n"
"é feito. Você pára assim que a pilha é reconstruída em outra\n"
"localização."

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/IterativeHanoi.html:13
msgid ""
"The function that you now need to write takes two parameters: the initial "
"position of the smallest disk (i.e., the peg initially containing the stack) "
"and a boolean indicating whether the smallest disk should move in the "
"increasing order or not."
msgstr ""
"A função que você precisa escrever agora tem dois parâmetros: a\n"
"posição inicial do disco menor (i.e., a vara inicialmente contendo a\n"
"pilha) e um booleano indicando se o disco menor deve mover na ordem de\n"
"aumento ou não."

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/IterativeHanoi.html:17
msgid ""
"The simplicity of this algorithm is actually almost deceiving. One could "
"wonder on the interest of the recursive algorithms when such a simple "
"iterative algorithm exists. My personal feeling is that this solution is "
"nice to execute, but almost impossible to devise in the first place (I even "
"suspect that the authors built this iterative solution from observations of "
"the recursive execution)..."
msgstr ""
"A simplicidade deste algoritmo é na verdade enganosa. Podemos nos\n"
"perguntar sobre o interesse em algoritmos recursivos quando algoritmos\n"
"iterativos tão simples existem. Minha impressão é que esta solução é\n"
"boa de executar, mas quase impossível de se descobrir a princípio (eu\n"
"suspeito, inclusive, que os autores construíram esta solução iterativa\n"
"da observação da execução da solução recursiva)..."

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/IterativeHanoi.html:23
msgid ""
"Predicting the effect of this function is also difficult: When the small "
"disk moves in the increasing order, the stack is reconstructed on the right "
"peg with 5 disks but on the left with 6 disks."
msgstr ""
"Predicting the effect of this function is also difficult: When the small "
"disk moves in the increasing order, the stack is reconstructed on the right "
"peg with 5 disks but on the left with 6 disks."

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/IterativeHanoi.html:27
msgid ""
"An interesting question is whether such simple iterative algorithms exist "
"for the other variation of the problem. Some were given in the literature (e."
"g. for the cyclic variation). I would happily integrate your solutions to "
"the PLM, especially if you can hint (without spoiling) the solution to guide "
"the next ones."
msgstr ""
"Uma questão interessante é se tais algoritmos simples existem para a\n"
"outra variante do problema. Alguns estão na literatura (e.g. para a\n"
"variante cíclica). Eu integraria alegramente suas soluções no PLM,\n"
"especialmente se você puder dar uma dica (sem estragar a surpresa) da\n"
"solução para guiar as outras pessoas."

#. type: Content of: <h1>
#: src/lessons/recursion/hanoi/universe/HanoiWorld.html:2
msgid "HanoiWorld"
msgstr "HanoiWorld"

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/universe/HanoiWorld.html:5
msgid ""
"This world implements the ultra-classical Hanoi problem. You are asked to "
"move the disk pile from the stick where they are to the target stick (given "
"as second parameter in the world's name -- number 1 for the default world). "
"There is some extra constraint: you can only move one disk at a time, and "
"you cannot move a big disk over a smaller one."
msgstr ""
"Este mundo implementa o problema ultra-clássico das torres de\n"
"hanoi. Você deve mover a pilha de discos da pilha onde eles estão para\n"
"outra pilha (dado um segundo parâmetro no nome do mundo -- número 1\n"
"para o mundo padrão). Existem algumas restrições extras: você pode\n"
"mover apenas um disco por vez, e não pode colocar um disco sobre um\n"
"menor."

#. type: Content of: <p>
#: src/lessons/recursion/hanoi/universe/HanoiWorld.html:12
msgid "Only 4 functions are provided:"
msgstr "Apenas 4 funções são fornecidas:"

#. type: Content of: <pre>
#: src/lessons/recursion/hanoi/universe/HanoiWorld.html:14
#, no-wrap
msgid "[!java|c]void [/!]move([!java|c]int [/!]src, [!java|c]int [/!]dst)"
msgstr "[!java|c]void [/!]mover([!java|c]int [/!]src, [!java|c]int [/!]dst)"

#. type: Content of: outside any tag (error?)
#: src/lessons/recursion/hanoi/universe/HanoiWorld.html:16
msgid ""
"Moves one disk from the stick <code>src</code> onto the stick <code>dst</"
"code>. If you try to do an invalid move (like laying a disk over a smaller "
"one), an IllegalArgumentException is thrown."
msgstr ""
"Move um disco de uma vara <code>src</code> para a vara\n"
"<code>dst</code>. Se você tentar fazer um movimento inválido (como\n"
"colocar um disco sobre outro menor), uma IllegalArgumentException é\n"
"levantada."

#. type: Content of: <pre>
#: src/lessons/recursion/hanoi/universe/HanoiWorld.html:20
#, no-wrap
msgid "[!java|c]int [/!]getSlotSize([!java|c]int [/!]slot)[!scala]:Int[/!]"
msgstr "[!java|c]int [/!]getTamanhoSlot([!java|c]int [/!]slot)[!scala]:Int[/!]"

#. type: Content of: outside any tag (error?)
#: src/lessons/recursion/hanoi/universe/HanoiWorld.html:21
msgid ""
"Returns the amount of disks placed on the specified slot. This is mainly "
"used to initialize the recursion and set the amount of recursive call to "
"execute."
msgstr ""
"Retorna a quantidade de discos colocados num ponto específico. É usado\n"
"principalmente para inicializar a recursão e ajustar a quantidade de\n"
"chamadas recursivas para executar."

#. type: Content of: <pre>
#: src/lessons/recursion/hanoi/universe/HanoiWorld.html:24
#, no-wrap
msgid "[!java|c]int [/!]getSlotRadius([!java|c]int [/!]slot)[!scala]:Int[/!]"
msgstr "[!java|c]int [/!]getSlotRadius([!java|c]int [/!]slot)[!scala]:Int[/!]"

#. type: Content of: outside any tag (error?)
#: src/lessons/recursion/hanoi/universe/HanoiWorld.html:25
msgid "Returns the radius of the top-most disk of the specified slot."
msgstr "Retorna o raio do disco no topo da vara especificada."

#. type: Content of: <h3>
#: src/lessons/maze/Main.html:2 src/lessons/maze/short_desc.html:2
msgid "Labyrinths"
msgstr "Labirintos"

#. type: Content of: <p>
#: src/lessons/maze/Main.html:4 src/lessons/maze/short_desc.html:4
msgid ""
"This lesson proposes several exercises about labyrinths in the buggle world."
msgstr ""
"Esta lição propõe vários exercícios sobre labirintos no mundo dos buggles."

#. type: Content of: <h2>
#: src/lessons/maze/randommouse/RandomMouseMaze.html:2
msgid "The crazy mouse"
msgstr "O rato doido"

#. type: Content of: <p>
#: src/lessons/maze/randommouse/RandomMouseMaze.html:4
msgid ""
"The day of your buggle starts badly. Out of luck, it got trapped into a "
"maze. Help it finding its path out of there."
msgstr ""
"O dia do seu buggle começou ruim. Sem sorte, ele ficou preso num\n"
"labirinto. Ajude ele a encontrar o caminho para a saída."

#. type: Content of: <p>
#: src/lessons/maze/randommouse/RandomMouseMaze.html:9
msgid ""
"The exit is represented by a baggle and you need to pick this baggle in "
"order to exit the maze."
msgstr ""
"A saída é representada por um baggle e você precisa pegar este baggle\n"
"para sair do labirinto."

#. type: Content of: <p>
#: src/lessons/maze/randommouse/RandomMouseMaze.html:14
msgid ""
"Since the maze is so small, we can write the dumbest possible algorithm to "
"do so. It relies on randomness and proves quite inefficient."
msgstr ""
"Como o labirinto é muito pequeno, vamos escrever o algoritmo mais bobo\n"
"possível. Ele é aleatório e vai se mostrar bem ineficiente."

#. type: Content of: <p>
#: src/lessons/maze/randommouse/RandomMouseMaze.html:19
msgid ""
"While the buggle didn't find the path to the escape, it must proceed the "
"following way: pick a random integer between 0 and 2 by using the provided "
"<code>random3()</code> method and make one of the following actions: moving "
"forward if possible, turn left or turn right."
msgstr ""
"Enquanto o buggle não encontra o caminho para a saída, ele deve fazer\n"
"o seguinte: escolher um número inteiro entre 0 e 2 usando o método\n"
"<code>random3()</code> fornecido e faz uma das seguintes ações: andar\n"
"pra frente se possível, virar à esquerda ou virar à direita."

#. type: Content of: <p>
#: src/lessons/maze/randommouse/RandomMouseMaze.html:25
msgid ""
"You don't believe that it could work? Well, give it a try, you will see...  "
"Don't forget to pick up the baggle once you've reached it."
msgstr ""
"Você acha que isto não vai funcionar? bem, experimente e verá... Não\n"
"esqueça de pegar o baggle quando  chegar nele."

#. type: Content of: <h2>
#: src/lessons/maze/wallfollower/WallFollowerMaze.html:2
msgid "Following the walls"
msgstr "Seguindo as paredes"

#. type: Content of: <p>
#: src/lessons/maze/wallfollower/WallFollowerMaze.html:4
msgid ""
"This time, the maze is a bit more complicated. Random won't be enough, we "
"ough to be smart!"
msgstr ""
"Neste momento, o labirinto é um pouco mais complicado. Aleatoriedade\n"
"pode não ser suficiente, sejamos mais espertos!"

#. type: Content of: <p>
#: src/lessons/maze/wallfollower/WallFollowerMaze.html:7
msgid ""
"The good news is that this maze is simpler that it seems at the first "
"glance: every wall are connected to each other. To get out of this kind of "
"maze, the buggle only have to follow a wall (the one on its left or the one "
"on its right, it doesn't matter).  While keeping a paw on the wall, the "
"buggle must move forward until it finds the maze exit and this biscuit it "
"loves so much."
msgstr ""
"A boa notícia é que este labirinto é mais simples do que pode parecer\n"
"à primeira vista: cada parede é conectada às outras. para sair deste\n"
"tipo de labirinto, o buggle tem que simplesmente seguir uma parede (a\n"
"que fica à sua esquerda ou à sua direita, não importa). Enquanto\n"
"manter uma pata na parede, o buggle deve se mover para a frente até\n"
"encontrar a saída do labirinto e o biscoitinho que ele tanto gosta."

#. type: Content of: <p>
#: src/lessons/maze/wallfollower/WallFollowerMaze.html:14
msgid ""
"This works here because there is no island of isolated walls, so our buggle "
"cannot loop around for ever without encountering its baggle."
msgstr ""
"Isto funciona aqui por que não existem ilhas ou paredes isoladas, logo\n"
"o nosso buggle não vai entrar num loop para sempre sem encontrar seu\n"
"baggle."

#. type: Content of: outside any tag (error?)
#: src/lessons/maze/wallfollower/WallFollowerMaze.html:18
msgid ""
"The goal of this exercise is to write an algorithm allowing the buggle to "
"get out of this maze."
msgstr ""
"O objetivo deste exercício é escrever um algoritmo que permita que o\n"
"buggle saia do labirinto."

#. type: Content of: <p>
#: src/lessons/maze/wallfollower/WallFollowerMaze.html:21
msgid ""
"As said earlier, it does not matter whether you decide to follow the left "
"wall or the right one. Simply, the demo follows the left one, so you should "
"do the same in your solution to ease the comparison of your solution and the "
"demo."
msgstr ""
"Como dito anteriormente, não importa se você decide seguir a parede na\n"
"esquerda ou da direita. Simplesmente, a demonstração segue a da\n"
"esquerda, logo você deve fazer o mesmo em sua solução para facilitar a\n"
"comparação de sua solução e da demonstração."

#. type: Content of: <p>
#: src/lessons/maze/wallfollower/WallFollowerMaze.html:26
msgid ""
"Write a method <code>keepHandOnSideWall()</code> which lets the buggle move "
"one step forward while keeping the paw on the wall of the selected side. You "
"must ensure that the buggle always keep the paw on the wall, but also that "
"it won't crash into a wall. You can check the tip for more info on this, but "
"only do so if you're stuck. Try to do it without the tip first."
msgstr ""
"Escreva um método <code>keepHandOnSideWall()</code> que faz o buggle\n"
"andar uma casa para a frente enquanto mantém a pata na parede do lado\n"
"selecionado. Você deve garantir que o buggle sempre mantenha a pata na\n"
"parede, mas também que ele não bata numa parede. Você pode checar a\n"
"dica para mais informações sobre isto, mas faça isto apenas se você\n"
"estiver perdido. Tente primeiro fazer sem a dica."

#. type: Content of: <p>
#: src/lessons/maze/wallfollower/WallFollowerMaze.html:33
msgid ""
"Then, write the whole algorithm to traverse the maze step by step (using "
"<code>keepHandOnSideWall()</code>) until it finds the biscuit and the exit. "
"Don't forget to pick the baggle up once you've found it."
msgstr ""
"Então, escreva o algoritmo inteiro para percorrer o labirinto passo a\n"
"passo (usando <code>keepHandOnSideWall()</code>) até encontrar o\n"
"biscoito e a saída. Não esqueça de pegar o baggle quando o encontrar."

#. type: Attribute 'alt' of: <div>
#: src/lessons/maze/wallfollower/WallFollowerMaze.html:38
msgid "I'm lost, please give me some extra indications"
msgstr "Estou perdido, me dê orientações extra"

#. type: Content of: <div><p>
#: src/lessons/maze/wallfollower/WallFollowerMaze.html:39
msgid ""
"When your buggle has a wall on the left, there is three situations to "
"consider, depending on the surrounding walls. The following table depicts "
"each initial situation, and where you should let your buggle end after one "
"step."
msgstr ""
"Quando seu buggle tem uma parede à esquerda, existem três situações a\n"
"considerar, dependendo das paredes em volta. A tabela a seguir explica\n"
"cada situação inicial, e onde você deve deixar seu buggle parar após\n"
"cada passo."

#. type: Content of: <div><table><tr><td>
#: src/lessons/maze/wallfollower/WallFollowerMaze.html:46
msgid "Case 1"
msgstr "Caso 1"

#. type: Content of: <div><table><tr><td>
#: src/lessons/maze/wallfollower/WallFollowerMaze.html:47
msgid "Case 2"
msgstr "Caso 2"

#. type: Content of: <div><table><tr><td>
#: src/lessons/maze/wallfollower/WallFollowerMaze.html:48
msgid "Case 3"
msgstr "Caso 3"

#. type: Content of: <div><table><tr><td>
#: src/lessons/maze/wallfollower/WallFollowerMaze.html:50
msgid "Initial situation"
msgstr "Situação inicial"

#. type: Content of: <div><table><tr><td>
#: src/lessons/maze/wallfollower/WallFollowerMaze.html:55
msgid "Where is the next step"
msgstr "Onde é o próximo passo"

#. type: Content of: <div><p>
#: src/lessons/maze/wallfollower/WallFollowerMaze.html:61
msgid ""
"If you do a <code>right()</code> in any case at the end of your function, "
"it's possible to write it in 3 lines with a <code>while</code> loop."
msgstr ""
"Se você faz um <code>right()</code> em qualquer caso no final da sua\n"
"função, é possível escrever ela com 3 linhas com um loop\n"
"<code>while</code>."

#. type: Content of: <h2>
#: src/lessons/maze/pledge/PledgeMaze.html:2
msgid "Pledge algorithm"
msgstr "Algoritmo de Pledge"

#. type: Content of: <p>
#: src/lessons/maze/pledge/PledgeMaze.html:4
msgid ""
"Once again, you thought that your algorithm were good enough to escape the "
"maze, and once again, you buggle is now in a maze where your previous "
"algorithm fails. Just give it a try: copy/paste your code and hit the \"Run"
"\" button and see your creation fail. The trap is shaped like an upper case "
"\"G\". The buggle enters the trap and follows the inner border. At some "
"point, it finds the north direction free, run into that direction, and falls "
"again in the trap."
msgstr ""
"Novamente, você pensou que seu algoritmo era bom o suficiente para\n"
"escapar do labirinto, e novamente, seu buggle está agora num labirinto\n"
"onde seu algoritmo anterior falhou. Dê a ele uma chance: copie-e-cole\n"
"seu código e aperte o botão \"Rodar\" e veja sua criação falhar. A\n"
"pegadinha é no formato de um \"G\" maiúsculo. O buggle entra na\n"
"armadilha e segue a borda interior. Em um determinado momento, ele\n"
"encontra a direção norte livre, vai nesta direção, e cai de novo na\n"
"armadilha."

#. type: Content of: <p>
#: src/lessons/maze/pledge/PledgeMaze.html:14
msgid ""
"The Pledge's algorithm (named after Jon Pledge of Exeter) can solve this "
"maze."
msgstr ""
"O algoritmo de Pledge (em homenagem a Jon Pledge of Exeter) pode\n"
"resolver este labirinto."

#. type: Content of: <p>
#: src/lessons/maze/pledge/PledgeMaze.html:17
msgid ""
"This algorithm is a modification of the previous one thought to avoid "
"obstacles. It randomly picks a heading and let the buggle move in that "
"direction. When it encounters an obstacle, a paw (for example the left one)  "
"is kept on the wall following the obstacle while counting the turns. When "
"the buggle is back to its original heading and when the sum of the turns is "
"0, the buggle leaves the obstacle and continues keeping its original heading."
msgstr ""
"Este algoritmo é uma modificação do anterior para evitar\n"
"obstáculos. Ele pega aleatoriamente uma direção e deixa o buggle ir\n"
"nesta direção. Quando encontra um obstáculo, uma pata (por exemplo, a\n"
"da esquerda) é mantida na parede seguindo o obstáculo enquanto conta\n"
"as curvas. Quando o buggle está de volta à sua direção original e a\n"
"soma das curvas deu 0, o buggle deixa o obstáculo e continua mantendo\n"
"sua direção original."

#. type: Content of: <p>
#: src/lessons/maze/pledge/PledgeMaze.html:25
msgid ""
"Note that the use of \"total turning\" rather than just the \"current "
"direction\" allows the algorithm to avoid G-shapped traps. If one proceeds "
"left into the trap, one gets turned around a full 360 degrees by the walls. "
"As we said before, the naive \"current direction\" algorithm gets into a "
"limit cycle as it leaves the lower rightmost wall heading left and runs into "
"the curved section on the left again."
msgstr ""
"Observe que o uso de \"total turning\" ao invés de simplesmente o\n"
"\"current direction\" permite que o algoritmo evite almadilhas no\n"
"formato G. Se alguém pega a esquerda para dentro da armadilha, acaba\n"
"girando 260 graus pelas paredes. Como dissemos antes, o algoritmo\n"
"simplório \"current direction\" entra num ciclo limitado à medida em que\n"
"ele deixa a parede mais à direita apontando para a esquerda e anda\n"
"para a seção curvada na esquerda de novo."

#. type: Content of: <p>
#: src/lessons/maze/pledge/PledgeMaze.html:32
msgid ""
"The Pledge's algorithm does not leave the rightmost wall due to the total "
"turning not being zero at that point. It follows the wall all the way "
"around, finally leaving it heading left on the bottom outside"
msgstr ""
"O algoritmo de Pledge não deixa a parede mais à direita devido ao\n"
"total de curvas não ser zero neste ponto. Ele segue a parede na volta\n"
"toda, deixando finalmente ela apontando para a esquerda no \"fundo exterior\""

#. type: Content of: <p>
#: src/lessons/maze/pledge/PledgeMaze.html:39
msgid ""
"<a name=\"Objective\"/>You now have to modify your solution to implement the "
"Pledge algorithm to escape this maze."
msgstr ""
"<a name=\"Objective\"/>Agora você tem que modificar sua solução para\n"
"implementar o algoritmo de Pledge para escapar deste labirinto."

#. type: Content of: <p>
#: src/lessons/maze/pledge/PledgeMaze.html:42
msgid ""
"Change your <code>keepHandOnSideWall()</code> method to count the amount of "
"turns done by the buggle (+1 when it turns left, and -1 when it turns "
"right). This counting may require the addition of an <code>angleSum</code> "
"integer value in your program."
msgstr ""
"Mude seu método <code>keepHandOnSideWall()</code> para contar a\n"
"quantidade de curvas feitas pelo buggle (+1 quando gira para a\n"
"esquerda, e -1 quando gira para a direita). Esta contagem pode\n"
"necessitar a adição de um valor inteiro <code>angleSum</code> no seu\n"
"programa."

#. type: Content of: <p>
#: src/lessons/maze/pledge/PledgeMaze.html:47
msgid ""
"Write a boolean method <code>isDirectionFree(dir)</code> indicating if the "
"provided direction is free, ie, if you can move in that direction (Note that "
"the demo uses the NORTH direction for that).  You can retrieve the current "
"direction of the buggle using the method <code>getDirection()</code>. You "
"can change your direction (without moving) using <code>setDirection(dir)</"
"code>. Don't forget to store the previous direction of your buggle (in a "
"dedicated variable) before checking if your favorite direction is free in "
"order to restore your state afterward."
msgstr ""
"Escreva um método booleano <code>isDirectionFree(dir)</code> indicando\n"
"se a direção dada está livre, ou seja, se você pode se mover naquela\n"
"direção (Observe que a demonstração usa a direção NORTH para\n"
"isto). Você pode recuperar a direção atual do buggle usando o método\n"
"<code>getDirection()</code>. Você pode mudar sua direção (sem se\n"
"mover) usando <code>setDirection(dir)</code>. Não esqueça de guardar a\n"
"direção anterior de seu buggle (numa variável exclusiva) antes de\n"
"verificar se sua direção favorita está livre para depois recuperar seu\n"
"estado."

#. type: Content of: <p>
#: src/lessons/maze/pledge/PledgeMaze.html:56
msgid ""
"You may have to change the rest of your code also, but these changes should "
"remain limited."
msgstr ""
"Você pode ter que mudar o resto de seu código também, mas estas\n"
"mudanças devem se manter limitadas."

#. type: Content of: <p>
#: src/lessons/maze/pledge/PledgeMaze.html:59
msgid ""
"Don't forget that if you have a method modifying a global variable (such as "
"angleSum), you should ensure that it declares this variable as global. "
"Without it, the method creates a new variable of the same name, and the "
"global never gets modified."
msgstr ""
"Não esqueça que se você tem um método modificando uma variável global\n"
"(como angleSum), você deve garantir que ele declara esta variável como\n"
"global. Sem ele, o método cria uma nova variável de mesmo nome, e a\n"
"global nunca é modificada."

#. type: Content of: <pre>
#: src/lessons/maze/pledge/PledgeMaze.html:63
#, no-wrap
msgid ""
"def myMethod():\n"
"  global angleSum\n"
"  ...\n"
"  angleSum = angleSum + 1\n"
msgstr ""
"def myMethod():\n"
"  global angleSum\n"
"  ...\n"
"  angleSum = angleSum + 1\n"

#. type: Attribute 'alt' of: <div>
#: src/lessons/maze/pledge/PledgeMaze.html:70
msgid "Show an additional tip"
msgstr "Mostre uma dica adicional"

#. type: Content of: <div>
#: src/lessons/maze/pledge/PledgeMaze.html:71
msgid ""
"You should set your direction to your favorite one (NORTH is advised). Then, "
"you should write the algorithm main loop. In other words, while your buggle "
"did not find its biscuit, you have to move forward until next obstacle in "
"the favorite direction. Then, put a paw on a wall (using "
"<code>keepHandOnSideWall()</code>) while the sum of turns is not null and "
"the favorite direction is not free. Do that until you find your baggle."
msgstr ""
"Você deve ajustar sua direção para sua favorita (NORTH é a\n"
"recomendada). Então, você deve escrever o loop principal algoritmo. Em\n"
"outras palavras, enquanto seu buggle não encontra seu biscoito, você\n"
"tem que mover para a frente até o próximo obstáculo na sua direção\n"
"favorita. Então, coloque uma pata na parede (usando\n"
"(<code>keepHandOnSideWall()</code>) enquanto a soma de curvas não for\n"
"null (nula) e a direção favorita não estiver livre. Faça isto até que\n"
"você encontre seu baggle."

#. type: Content of: <h2>
#: src/lessons/maze/island/IslandMaze.html:2
msgid "Lost between islands"
msgstr "Perdido entre ilhas"

#. type: Content of: <p>
#: src/lessons/maze/island/IslandMaze.html:4
msgid ""
"You thought that your algorithm was enough to escape mazes? Well, not every "
"mazes..."
msgstr ""
"Você acha que seu algoritmo é suficiente para escapar de labirintos?\n"
"Bem, não de todos..."

#. type: Content of: <p>
#: src/lessons/maze/island/IslandMaze.html:8
msgid ""
"The <i>wall follower algorithm</i> we used so far only works if the entry "
"and the exit are placed near to walls connected to the external wall. But if "
"the buggle begins in the middle of the maze, it may exist wall sections "
"disconnected from the external wall."
msgstr ""
"O <i>algoritmo de seguir paredes</i> que usamos até agora só funciona\n"
"se a entrada e a saída estão próximas de paredes conectadas ao muro\n"
"externo. Mas se o buggle começa na metade do labirinto, podem existir\n"
"sessões de paredes desconectadas da parede externa."

#. type: Content of: <p><p>
#: src/lessons/maze/island/IslandMaze.html:13
msgid ""
"That is why the previous strategy would let the buggle round around for "
"ever. Indeed, the maze you should now escape from contains islands, and the "
"buggle does not start along one of the external walls. Just give it a try if "
"you want: copy your code over, push the run button and see your previous "
"solution failing miserabily."
msgstr ""
"É por isto que a estratégia anterior pode deixar o buggle dando voltas\n"
"para sempre. Na verdade, o labirinto do qual você deve escapar agora\n"
"contém ilhas, e o buggle não começa próximo de um dos muros\n"
"externos. Experimente se você quiser: copie seu código aqui, aperte o\n"
"botão rodar e veja sua solução anterior falhar vergonhosamente."

#. type: Content of: <p><p>
#: src/lessons/maze/island/IslandMaze.html:19
msgid ""
"The method of following a wall is still good and allow to escape very "
"efficiently some sections of the maze, so we do not want to remove it "
"entierely. Instead, we want to stop following the wall under some "
"conditions. Notice that the baggle lays near to the external border of the "
"maze. So, we want to reach the border and then follow that wall. We need for "
"example to search for the north wall before following it to the baggle."
msgstr ""
"O método de seguir uma parede ainda é bom e permite escapar com muita\n"
"eficiencia de algumas seções do labirinto, logo nós não precisamos\n"
"remover ele inteiramente. Ao invés disto, queremos parar de seguir a\n"
"parede sob certas condições. Observe que o baggle fica próximo da\n"
"borda externa do labirinto. Logo, queremos chegar na borda e então\n"
"seguir aquela parede. Precisamos, por exemplo, buscar a parede norte\n"
"antes de seguí-la até o baggle."

#. type: Content of: <p><p><p>
#: src/lessons/maze/island/IslandMaze.html:27
msgid ""
"To find the north wall, you simply run to the north as long as it's "
"possible, and when facing an obstacle, you avoid it (using previous method)."
msgstr ""
"Para encontrar a parede norte, você simplesmente anda para o norte\n"
"enquanto for possível, e quando encontrar um obstáculo, você deve\n"
"desviar dele (usando o método anterior)."

#. type: Attribute 'alt' of: <p><p><div>
#: src/lessons/maze/island/IslandMaze.html:31
msgid "I'm lost now, please give me some extra indications"
msgstr "Estou perdido agora, por favor me dê algumas orientações extra"

#. type: Content of: <p><p><div>
#: src/lessons/maze/island/IslandMaze.html:32
msgid ""
"Our new run() method will consist in two modes: our buggle will alternate "
"between the \"north runner mode\" and the \"left follower mode\". You begin "
"in \"north runner mode\", and switch to \"left follower\" when you have a "
"wall at the north (do not forget to make sure you have a wall at your left "
"before switching to \"left follower\" mode). You switch to \"north runner\" "
"as soon as your buggle is facing north and is not in front of a wall during "
"its trip around its left wall. The easiest way to write such a state machine "
"is something like"
msgstr ""
"Nosso novo método run() consistirá de dois modos: nosso buggle vai\n"
"alternar entra o \"modo de andar para o norte\" e o \"modo de seguir à\n"
"esquerda\". Você começa no \"modo de andar para o norte\", e alternar\n"
"para \"seguir à esquerda\" quando você tiver uma parede a norte (não\n"
"esqueça de garantir que você tem uma parede à sua esquerda antes de\n"
"alternar para o modo \"seguir a esquerda\"). Você alterna para \"andar\n"
"para o norte\" assim que seu buggle estiver olhando para o norte e não\n"
"estiver em frente a um muro durante sua viagem ao redor de seu muro à\n"
"esquerda. A forma mais fácil de escrever tal máquina de estado é algo\n"
"como"

#. type: Content of: <p><p><div><pre>
#: src/lessons/maze/island/IslandMaze.html:40
#, no-wrap
msgid ""
"[!scala]var state=0;\n"
"state match  {\n"
"  case 0 => // North runner\n"
"     ...\n"
"     state = 1;\n"
"  case 1 => // Left follower\n"
"     ...\n"
"     state = 0;\n"
"  case _ => println(\"This case should not happen. Please fix me\")\n"
"}[/!][!java|c]int state=0;\n"
"switch (state) {\n"
"  case 0: // North runner\n"
"     ...\n"
"     state = 1;\n"
"     break;\n"
"  case 1: // Left follower\n"
"     ...\n"
"     state = 0;\n"
"     break;\n"
"}[/!][!python]northRunner = True\n"
"if northRunner:\n"
"     ...\n"
"     northRunner = False\n"
"else: # left follower\n"
"     ...\n"
"     northRunner = True[/!]"
msgstr ""
"[!scala]var state=0;\n"
"state match  {\n"
"  case 0 => // para o norte\n"
"     ...\n"
"     state = 1;\n"
"  case 1 => // seguir a esquerda\n"
"     ...\n"
"     state = 0;\n"
"  case _ => println(\"Isto não deveria acontecer. Favor me conserte\")\n"
"}[/!][!java|c]int state=0;\n"
"switch (state) {\n"
"  case 0: // para o norte\n"
"     ...\n"
"     state = 1;\n"
"     break;\n"
"  case 1: // seguir a esquerda\n"
"     ...\n"
"     state = 0;\n"
"     break;\n"
"}[/!][!python]northRunner = True\n"
"if northRunner:\n"
"     ...\n"
"     northRunner = False\n"
"else: # left follower\n"
"     ...\n"
"     northRunner = True[/!]"

#. type: Content of: <p><p><div>
#: src/lessons/maze/island/IslandMaze.html:67
msgid ""
"Don't forget the default case (matching _), or scala will issue an error "
"since your matching would be incomplete.[/!]"
msgstr ""
"Não esqueça do caso default (matching _), ou scala vai dar erro já que\n"
"o seu \"matching\" vai estar incompleto.[/!]"

#. type: Content of: <p><p><p>
#: src/lessons/maze/island/IslandMaze.html:70
msgid "Don't forget to let the buggle pick the baggle at the end of your code."
msgstr "Não esqueça de deixar o buggle pegar o baggle no final do código."

#. type: Content of: <p><p><p>
#: src/lessons/maze/island/IslandMaze.html:73
msgid ""
"You're up. That should be enough for you to figure out how to escape this "
"maze, but if not, you can always request for the tip. But you do not need "
"any more help, do you?"
msgstr ""
"Tudo pronto. Isto deve ser o suficiente para você descobrir como sair\n"
"deste labirinto, e se este não for o caso, você sempre pode pedir uma\n"
"dica. Mas você não vai precisar, correto?"

#. type: Content of: <h2>
#: src/lessons/maze/shortestpath/ShortestPathMaze.html:2
msgid "Basic Shortest Path algorithm"
msgstr "Algoritmo básico do caminho mais curto"

#. type: Content of: <p>
#: src/lessons/maze/shortestpath/ShortestPathMaze.html:4
msgid ""
"To conclude with this introductory lesson to maze solving algorithms, we "
"will investigate another way to find the exit. The buggle in this lesson is "
"a special buggle: he is a jedi. He can feel the Force. This means he is able "
"to feel his environment."
msgstr ""
"Para concluir com esta lição introdutória em algoritmos de resolução\n"
"de labirintos, vamos investigar outra forma de encontrar a saída. O\n"
"buggle nesta lição é um buggle especial: ele é um jedi. Ele pode\n"
"sentir a Força. Isto significa que ele é capaz de sentir o ambiente."

#. type: Content of: <p>
#: src/lessons/maze/shortestpath/ShortestPathMaze.html:8
msgid ""
"Without even leaving his position, he can retrieve information about the "
"world he is leaving in, with the following functions:"
msgstr ""
"Sem nem sequer sair da sua posição, ele pode recuperar informações\n"
"sobre o mundo que está vivendo, com as seguintes funções:"

#. type: Content of: <ul><li>
#: src/lessons/maze/shortestpath/ShortestPathMaze.html:10
msgid "<code>getWorldWidth()</code> gives the width of its world."
msgstr "<code>getWorldWidth()</code> da a largura (\"width\") do mundo."

#. type: Content of: <ul><li>
#: src/lessons/maze/shortestpath/ShortestPathMaze.html:11
msgid "<code>getWorldHeight()</code> gives the height of its world."
msgstr "<code>getWorldHeight()</code> da a altura (\"height\") do mundo."

#. type: Content of: <ul><li>
#: src/lessons/maze/shortestpath/ShortestPathMaze.html:12
msgid ""
"<code>hasTopWall(x,y)</code> tells whether the cell (x,y) of this world has "
"a wall on top."
msgstr ""
"<code>hasTopWall(x,y)</code> diz se a célula (x,y) deste mundo tem uma "
"parede no topo."

#. type: Content of: <ul><li>
#: src/lessons/maze/shortestpath/ShortestPathMaze.html:13
msgid ""
"<code>hasLeftWall(x,y)</code> tells whether the cell (x,y) of this world has "
"a wall on the left."
msgstr ""
"<code>hasLeftWall(x,y)</code> diz se a célula (x,y) deste mundo tem uma "
"parede na esquerda."

#. type: Content of: <ul><li>
#: src/lessons/maze/shortestpath/ShortestPathMaze.html:14
msgid ""
"<code>hasBaggle(x,y)</code> tells whether the cell (x,y) of this world has a "
"baggle."
msgstr ""
"<code>hasBaggle(x,y)</code> diz se a célula (x,y) deste mundo tem um baggle."

#. type: Content of: <ul><li>
#: src/lessons/maze/shortestpath/ShortestPathMaze.html:15
msgid ""
"<code>setIndication(x,y,i)</code> adds the integer indication <code>i</code> "
"to the cell (x,y)."
msgstr ""
"<code>setIndication(x,y,i)</code> adiciona a indicação inteira <code>i</"
"code> à célula (x,y)."

#. type: Content of: <ul><li>
#: src/lessons/maze/shortestpath/ShortestPathMaze.html:16
msgid ""
"<code>getIndication(x,y,i)</code> retrieves the integer indication of the "
"cell (x,y) (or 9999 if there is no indication)."
msgstr ""
"<code>getIndication(x,y,i)</code> obtém a indicação inteira da célula (x,y) "
"(ou 9999 se não houver indicação)."

#. type: Content of: <p>
#: src/lessons/maze/shortestpath/ShortestPathMaze.html:19
msgid ""
"It has to be noted that it is not possible to build a wall on the bottom "
"edge or on the right edge of a cell.  Therefore when such wall exists, it "
"means it was built on a sibling cells -- as a top (respectively left) wall "
"on the cell that is located below (respectively at the right of) the current "
"cell."
msgstr ""
"Note que não é possível construir uma parede na borda de baixo ou na\n"
"borda à direita de uma célula. portanto, se tal parede existe,\n"
"significa que foi construído nas células vizinhas -- como uma parede\n"
"na borda de cima (respectivamente da esquerda) da célula que é localizada\n"
"abaixo (respectivamente à direita) da célula atual."

#. type: Content of: <p>
#: src/lessons/maze/shortestpath/ShortestPathMaze.html:25
msgid ""
"Your buggle should first write the distance to the exit on each cell (or at "
"least the useful ones)."
msgstr ""
"Seu buggle deve primeiro escrever a distância para a saída em cada\n"
"célula (ou pelo menos nas células úteis)."

#. type: Content of: <p>
#: src/lessons/maze/shortestpath/ShortestPathMaze.html:26
msgid ""
"For that, find the exit and write 0 there.  Then, write 1 on every "
"neighboring cells that is not separated from the exit with a wall.  And then "
"mark every cells from which you can reach the exit in 2 steps, and iterate "
"for all cells until all cells are marked."
msgstr ""
"Para isto, encontre a saída e escreva 0 lá. Então, escreve 1 em cada\n"
"célula vizinha que não esteja separada da saída por uma parede. E\n"
"então marque cada célula a partir da qual você possa alcançar a saída\n"
"em 2 passos, e itere para todas as células até que todas as células\n"
"estejam marcadas."

#. type: Content of: <p>
#: src/lessons/maze/shortestpath/ShortestPathMaze.html:31
msgid ""
"Once the cells are marked, get your jedi buggle to follow the shortest "
"path.  Basically the buggle has only to walk on each case with the lesser "
"distance from the exit. You can use the method "
"<code>setDirection(direction)</code> to make your buggle look at the "
"specific direction such as <code>[!scala|java|python]Direction.[/!]NORTH</"
"code> or <code>[!scala|java|python]Direction.[/!]EAST</code>."
msgstr ""
"Uma vez que as células estejam marcadas, leve seu buggle jedi para\n"
"percorrer a caminho mais curto. Basicamente o buggle tem apenas que\n"
"andar em cada caso com a menor distância à saída. Você pode usar o\n"
"método <code>setDirection(direction)</code> para fazer seu buggle\n"
"virar para a direção específica como\n"
"<code>[!scala|java|python]Direction.[/!]NORTH</code> ou\n"
"<code>[!scala|java|python]Direction.[/!]EAST</code>."

#. type: Attribute 'alt' of: <div>
#: src/lessons/maze/shortestpath/ShortestPathMaze.html:36
msgid "I'm lost now. Please give me some extra indications."
msgstr "Estou perdido agora. Por favor, me dê algumas indicações extra."

#. type: Content of: <div>
#: src/lessons/maze/shortestpath/ShortestPathMaze.html:37
msgid "Use the Force, Luke!"
msgstr "Usa a Força, Luke!"

#. type: Content of: <h2>
#: src/lessons/maze/wallfindfollow/WallFindFollowMaze.html:2
msgid "Finding the walls to follow"
msgstr "Encontrando as paredes para seguir"

#. type: Content of: <p>
#: src/lessons/maze/wallfindfollow/WallFindFollowMaze.html:4
msgid ""
"This is exactly the same maze than before, but the buggle does not start at "
"the same location. In particular, it does not have any wall to its left at "
"the beginning."
msgstr ""
"Este é exatamente o mesmo labirinto que o anterior, mas o buggle não\n"
"inicia na mesma localização. Em particular, não existe nenhuma parede\n"
"à esquerda dele no início."

#. type: Content of: <p>
#: src/lessons/maze/wallfindfollow/WallFindFollowMaze.html:8
msgid ""
"As a result, the method you wrote for the previous exercise probably don't "
"work for this one. If you use it here with no modification, your buggle "
"probably start looping over the four free cells around its start position "
"(if that's not the case, well, you didn't really stick to the mission on "
"previous exercise. Feel lucky and proceed to the next :)"
msgstr ""
"Como resultado, o método que você escreveu para o exercício anterior\n"
"provavelmente não vai funcionar neste agora. Se você usar ele aqui sem\n"
"modificações, seu buggle provavelmente vai iniciar rodando nas quatro\n"
"células ao redor do ponto inicial (se este não é o caso, bem, é por\n"
"que você não fez o pedido no exercício enterior. Você deu sorte. Agora\n"
"vá para o próximo exercício :)"

#. type: Content of: <p>
#: src/lessons/maze/wallfindfollow/WallFindFollowMaze.html:15
msgid ""
"This is because your <code>keepHandOnSideWall()</code> method has an "
"implicit <b>pre-condition</b>: it works well if and only if the buggle has a "
"wall to its left when you call it. Such pre-condition are very heavily used "
"when programming. Specifying them explicitly helps understanding the code "
"written by other, and they even allow sometimes to prove that the code works "
"correctly."
msgstr ""
"Isto é por que seu método <code>keepHandOnSideWall()</code> tem uma\n"
"<b>pré-condição</b> implícita: ele funciona bem se e apenas se o\n"
"buggle tem uma parede na esquerda quando você chama ele. Tais\n"
"pré-condições são muito usadas em programação. Especificar elas\n"
"explicitamente ajuda a entender o código escrito por outros, e eles\n"
"até servem, às vezes, para provar que o código está funcionando\n"
"corretamente."

#. type: Content of: <p>
#: src/lessons/maze/wallfindfollow/WallFindFollowMaze.html:25
msgid ""
"Fixing the problem should be very easy. Simply make sure that the pre-"
"condition of <code>keepHandOnSideWall()</code> is verified before calling "
"it. For that, update your code to first look for a wall on its left before "
"the big <code>while</code> loop."
msgstr ""
"Consertar o problema deve ser bem fácil. Simplesmente garanta que a\n"
"pré-condição de <code>keepHandOnSideWall()</code> seja verificada\n"
"antes do chamado. Para isto, atualize seu código para primeiro olhar\n"
"para uma parede à sua esquerda antes do loop <code>while</code>\n"
"maior."

#. type: Content of: <h3>
#: src/lessons/lightbot/universe/LightBotWorld.html:2
#: src/lessons/lightbot/Main.html:2 src/lessons/lightbot/short_desc.html:2
msgid "LightBot"
msgstr "LightBot"

#. type: Content of: outside any tag (error?)
#: src/lessons/lightbot/universe/LightBotWorld.html:4
msgid ""
"This universe introduces a little programming puzzle which can somehow be "
"used to introduce programmation to non-reading kids since it is programmed "
"graphically.  The goal of each board is to light up all the lights. Your "
"robot understands the following orders:"
msgstr ""
"Este universo introduz um pequeno quebra-cabeças de programação que\n"
"pode num certo sentido ser usado para introduzir programação para\n"
"crianças que não sabem ler uma vez que é programado graficamente. O\n"
"objetivo de cada de cada tabuleiro é ligar todas as luzes. Seu robô\n"
"entende as seguintes ordens:"

#. type: Content of: <table><tr><td>
#: src/lessons/lightbot/universe/LightBotWorld.html:8
msgid "<b>Order</b>"
msgstr "<b>Order</b>"

#. type: Content of: <table><tr><td>
#: src/lessons/lightbot/universe/LightBotWorld.html:8
msgid "<b>Meaning</b>"
msgstr "<b>Meaning</b>"

#. type: Content of: <table><tr><td>
#: src/lessons/lightbot/universe/LightBotWorld.html:9
msgid "<b>Move forward</b>"
msgstr "<b>Mover para frente</b>"

#. type: Content of: <table><tr><td>
#: src/lessons/lightbot/universe/LightBotWorld.html:9
msgid ""
"Cannot be done if the destination cell is of another height than source cell"
msgstr ""
"Não pode ser feito se a célula de destino é de outra altura que a célula de "
"origem"

#. type: Content of: <table><tr><td>
#: src/lessons/lightbot/universe/LightBotWorld.html:10
msgid "<b>Jump forward</b>"
msgstr "<b>Pular pra frente</b>"

#. type: Content of: <table><tr><td>
#: src/lessons/lightbot/universe/LightBotWorld.html:10
msgid ""
"Can only be done if the destination cell is one step higher than source "
"cell, or if destination is lower than source. Cannot be used for plain moves."
msgstr ""
"Só pode ser feito se a célula de destino está um passo mais alto que a\n"
"célula de origem, ou se o destino é mais baixo que a origem. Não pode\n"
"ser usado para movimentos \"plain\"."

#. type: Content of: <table><tr><td>
#: src/lessons/lightbot/universe/LightBotWorld.html:11
msgid "<b>Turn left</b>."
msgstr "<b>Virar à esquerda</b>."

#. type: Content of: <table><tr><td>
#: src/lessons/lightbot/universe/LightBotWorld.html:12
msgid "<b>Turn right</b>."
msgstr "<b>Virar à direita</b>."

#. type: Content of: <table><tr><td>
#: src/lessons/lightbot/universe/LightBotWorld.html:13
msgid "<b>Switch the light</b>."
msgstr "<b>trocar a luz</b>."

#. type: Content of: <table><tr><td>
#: src/lessons/lightbot/universe/LightBotWorld.html:13
msgid ""
"Turn it on if it was off, and off if it was on. No effect if the cell does "
"not contain any light."
msgstr ""
"Liga se estiver desligada, e desliga se estiver ligada. Sem efeito se\n"
"a célula não contém nenhuma luz."

#. type: Content of: <table><tr><td>
#: src/lessons/lightbot/universe/LightBotWorld.html:14
msgid "<b>Call function 1</b>."
msgstr "<b>Chamar função 1</b>."

#. type: Content of: <table><tr><td>
#: src/lessons/lightbot/universe/LightBotWorld.html:15
msgid "<b>Call function 2</b>."
msgstr "<b>Chamar função 2</b>."

#. type: Content of: <p>
#: src/lessons/lightbot/universe/LightBotWorld.html:18
msgid ""
"Please note that this world is not completely suited to small kids since the "
"main difficulty comes from the fact that your are highly limited in the "
"amount of instructions you can give to your robot. Advanced levels thus "
"require to write sound functions, and are often above the capacities of "
"small kids."
msgstr ""
"Por favor observe que este mundo não é completamente adequada para\n"
"crianças pequenas uma vez que a principal dificuldade vem do fato de\n"
"que a quantidade de instruções é muito limitada. Níveis avançados\n"
"então necessitam escrever alguns sons, e estão acima das capacidades\n"
"de crianças pequenas."

#. type: Content of: <p>
#: src/lessons/lightbot/universe/LightBotWorld.html:20
msgid ""
"This game is heavily inspirated from a flash game of the same name, which "
"can for example be played on kongregate.com. It was written by Danny "
"Yaroslavski (Coolio-Niato), the original idea being of Matt Chase."
msgstr ""
"Este jogo é fortemente inspirado num jogo em flash de mesmo nome, que\n"
"pode por exemplo ser jogado em kongregate.com. Foi escrito por Danny\n"
"Yaroslavski (Coolio-Niato), e a ideia original é de Matt Chase."

#. type: Content of: outside any tag (error?)
#: src/lessons/lightbot/Main.html:3
msgid ""
"This lesson introduces a little programming puzzle inspired from a flash "
"game."
msgstr ""
"Esta lição introduz um pequeno quebra-cabeças de programação inspirado num "
"jogo em flash."

#. type: Content of: <p>
#: src/lessons/lightbot/Main.html:5
msgid "See the <i>About this world</i> dialog for more details."
msgstr "Veja o diálogo <i>Sobre este mundo</i> para mais detalhes."

#. type: Content of: <p>
#: src/lessons/lightbot/short_desc.html:4
msgid ""
"This lesson constitutes a little brain teaser for programmers. You have to "
"instruct your robot to turn off all lights. The trick is that you program "
"your robot graphically, and that you are limited in the amount of "
"instructions."
msgstr ""
"Esta lição constitui um pequeno \"brain teaser\" para\n"
"programadores. Você tem que instruir seu robô a desligar todas as\n"
"luzes. O truque é que você programa seu robô graficamente, e você tem\n"
"uma quantidade limitada de instruções."

#. type: Content of: <p>
#: src/lessons/lightbot/short_desc.html:9
msgid "No previous experience is expected to take this lesson."
msgstr "Espera-se experiência prévia para fazer esta lição."

#. type: Content of: <h1>
#: src/lessons/lightbot/Board01TwoSteps.html:2
msgid "Welcome"
msgstr "Bem-vindo"

#. type: Content of: <p>
#: src/lessons/lightbot/Board01TwoSteps.html:4
msgid ""
"Welcome to the lightbot world. This is merely a programmer puzzle rather "
"than a real lesson (although some use it to teach programming).  The robot "
"is not programmed in Java, but rather graphically. You can see the existing "
"orders in the documentation using the <i>About this world</i> menu."
msgstr ""
"Bem-vindo ao mundo lightbot. Este é apenas um quebra-cabeça de\n"
"programador ao invés de uma lição real (embora algumas pessoas usem\n"
"isto para ensinar programação). O robô não é programado em Java, mas\n"
"sim graficamente. Você pode ver as ordens existentes na documentação\n"
"usando o menu <i>Sobre este mundo</i>."

#. type: Content of: <p><</p><p>
#: src/lessons/lightbot/Board01TwoSteps.html:7
msgid ""
"The goal of each board is simply to switch on every lights of the board "
"using your little robot."
msgstr ""
"O objetivo de cada tabuleiro é simplesmente ligar cada luz do\n"
"tabuleiro usando seu pequeno robô."

#. type: Content of: <p><</p><p>
#: src/lessons/lightbot/Board01TwoSteps.html:9
msgid ""
"This is a introduction exercise, which should be solvable by only moving "
"forward and switching the light, using respectively"
msgstr ""
"Este é um exercício introdutório, que pode ser resolvido simplesmente\n"
"movendo para frente e apertando o interruptor, usando respectivamente"

#. type: Content of: <p>
#: src/lessons/lightbot/Board01TwoSteps.html:11
#: src/lessons/lightbot/Board02Turn.html:5
#: src/lessons/lightbot/Board06Func.html:4
msgid "and"
msgstr "e"

#. type: Content of: <p><</p><p>
#: src/lessons/lightbot/Board01TwoSteps.html:11
msgid "."
msgstr "."

#. type: Content of: <h1>
#: src/lessons/lightbot/Board02Turn.html:2
msgid "Turn around"
msgstr "Virar"

#. type: Content of: <p>
#: src/lessons/lightbot/Board02Turn.html:4
msgid "Now, you probably need to turn in addition (using"
msgstr "Agora, você provavelmente precisa virar adicionalmente (usando"

#. type: Content of: <p>
#: src/lessons/lightbot/Board02Turn.html:5
msgid ")."
msgstr ")."

#. type: Content of: <h1>
#: src/lessons/lightbot/Board03Jump.html:2
msgid "Jump"
msgstr "Pular"

#. type: Content of: <p>
#: src/lessons/lightbot/Board03Jump.html:4
msgid "You can also jump using"
msgstr "Você também pode pular usando"

#. type: Content of: <p>
#: src/lessons/lightbot/Board03Jump.html:4
msgid ""
"to pass obstacles. You can either jump one level up or any amount of levels "
"down, but you cannot jump to go on a cell of the same height."
msgstr ""
"para passar obstáculos. você pode tanto pular um nível ou qualquer\n"
"quantidade de níveis para baixo, mas você não pode pular para uma\n"
"célula de mesma altura."

#. type: Content of: <h1>
#: src/lessons/lightbot/Board04Stairs.html:2
msgid "Stairs"
msgstr "Degraus"

#. type: Content of: <p>
#: src/lessons/lightbot/Board04Stairs.html:4
msgid "Can you pass these stairs?"
msgstr "Você pode passar estes degraus?"

#. type: Content of: <h1>
#: src/lessons/lightbot/Board05Higher.html:2
msgid "Higher"
msgstr "Mais alto"

#. type: Content of: <p>
#: src/lessons/lightbot/Board05Higher.html:4
msgid "Let's go higher"
msgstr "Vamos mais alto"

#. type: Content of: <p>
#: src/lessons/lightbot/Board06Func.html:4
msgid "You can use"
msgstr "Você pode usar"

#. type: Content of: <p>
#: src/lessons/lightbot/Board06Func.html:4
msgid ""
"to call respectively the first and second functions. Define their code in "
"their own tab."
msgstr ""
"chamar respectivamente as primeira e segunda funções. Defina seu\n"
"código na sua própria aba."

#. type: Content of: <p><p>
#: src/lessons/lightbot/Board06Func.html:6
msgid "This is great if you get out of space in your main function"
msgstr "Isto é muito bom se você ficar sem espaço na sua função principal"

#. type: Content of: <h1>
#: src/lessons/lightbot/Board07Repeat.html:2
msgid "Repetitive tasks"
msgstr "Tarefas repetitivas"

#. type: Content of: <p>
#: src/lessons/lightbot/Board07Repeat.html:4
msgid "Functions are also of great use for repetitive tasks"
msgstr "Funções também são muitos úteis para tarefas repetitivas"

#. type: Content of: <h1>
#: src/lessons/lightbot/Board08Rec.html:2
msgid "Calling functions from functions"
msgstr "Chamando funções de dentro de funções"

#. type: Content of: <p>
#: src/lessons/lightbot/Board08Rec.html:4
msgid "It is perfectly okay to call a function from within a function!"
msgstr "Não tem nada de errado em chamar uma função de dentro de uma função!"

#. type: Content of: <h1>
#: src/lessons/lightbot/Board09Castle.html:2
msgid "Castle"
msgstr "Castelo"

#. type: Content of: <p>
#: src/lessons/lightbot/Board09Castle.html:4
msgid "You're getting good at this..."
msgstr "Você está ficando bom nisto..."

#. type: Content of: <h1>
#: src/lessons/lightbot/Board10Wall.html:2
msgid "Wall"
msgstr "Parede"

#. type: Content of: <p>
#: src/lessons/lightbot/Board10Wall.html:4
msgid "Ready to climb the wall?"
msgstr "Preparado para subir a parede?"

#. type: Content of: <h1>
#: src/lessons/lightbot/Board11Sea.html:2
msgid "Sea"
msgstr "Mar"

#. type: Content of: <p>
#: src/lessons/lightbot/Board11Sea.html:4
msgid "You now have to surf these waves of lamps."
msgstr "Agora você vai ter que surfar neste mar de lâmpadas."

#. type: Content of: <h1>
#: src/lessons/lightbot/Board12Escher.html:2
msgid "Escher Castle"
msgstr "Castelo de Escher"

#. type: Content of: <p>
#: src/lessons/lightbot/Board12Escher.html:4
msgid "This one aint easy."
msgstr "Este não é fácil."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool1/Close10.html:2
msgid "Close to 10"
msgstr "Próximo de 10"

#. type: Content of: <p>
#: src/lessons/welcome/bat/bool1/Close10.html:3
msgid ""
"Given 2 int values, return whichever value is nearest to the value 10, or "
"return 0 in the event of a tie.  [!java|scala]Note that Math.abs(n) returns "
"the absolute value of a number.[/!] [!python]Note that math.fabs(n) returns "
"the absolute value of a number.  This function can only be used if you "
"imported the math module.[/!]"
msgstr ""
"Dados dois valores int, retorne o valor que for mais próximo do 10, ou\n"
"retorne 0 no caso de um empate.  [!java|scala]Note que Math.abs(n)\n"
"retorna o valor absoluto de um número.[/!] [!python]Note que\n"
"math.fabs(n) retorna o valor absoluto de um número.  Esta função só\n"
"pode ser usada se você importar o módulo math.[/!]"

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool1/CountTeen.html:2
msgid "Count Teen"
msgstr "Contar Adolescentes"

#. type: Content of: <p>
#: src/lessons/welcome/bat/bool1/CountTeen.html:3
msgid ""
"We'll say that a number is \"teen\" if it is in the range 13..19 inclusive. "
"Given 4 int values, return the amount of teen ones."
msgstr ""
"Vamos dizer que um número é \"adolescente\" se ele estiver no intervalo "
"13..19\n"
"inclusive. Dados 4 valores int, retorne a quantidade de adolescentes."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool1/Diff21.html:2
msgid "Diff 21"
msgstr "Diferença 21"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool1/Diff21.html:3
msgid ""
"Given an int n, return the absolute difference between n and 21, except "
"return double the absolute difference if n is over 21."
msgstr ""
"Dado um int n, retorne a diferença absoluta entre n e 21, exceto se n\n"
"for maior que 21, onde neste caso você retorna a diferença absoluta."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool1/HasTeen.html:2
msgid "Has Teen"
msgstr "Tem Adolescente"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool1/HasTeen.html:3
msgid ""
"We'll say that a number is \"teen\" if it is in the range 13..19 inclusive. "
"Given 3 int values, return true if 1 or more of them are teen."
msgstr ""
"Diremos que um número é \"adolescente\" se ele está entre 13..19\n"
"inclusive. dados 3 valores int, retorne true se 1 ou mais deles são\n"
"teen."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool1/IcyHot.html:2
msgid "Icy Hot"
msgstr "Frio Quente"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool1/IcyHot.html:3
msgid ""
"Given two temperatures, return true if one is less than 0 and the other is "
"greater than 100."
msgstr ""
"Dadas duas temperaturas, retorne true se uma é menor que 0 e a outra é maior "
"que 100."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool1/In1020.html:2
msgid "In [10;20]"
msgstr "In [10;20]"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool1/In1020.html:3
msgid ""
"Given 2 int values, return true if either of them is in the range 10..20 "
"inclusive."
msgstr ""
"Dados 2 valores int, retorne true se qualquer um deles estiver no intervalo "
"10..20 inclusive."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool1/In3050.html:2
msgid "In [30;50]"
msgstr "In [30;50]"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool1/In3050.html:3
msgid ""
"Given 2 int values, return true if they are both in the range 30..40 "
"inclusive, or they are both in the range 40..50 inclusive."
msgstr ""
"Dados 2 valores int, retorne true se eles estão ambos no intervalo\n"
"30..40 inclusive, ou se eles estão ambos no intervalo 40..50\n"
"inclusive."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool1/LastDigit.html:2
msgid "LastDigit"
msgstr "Último Dígito"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool1/LastDigit.html:3
msgid ""
"Given two non-negative int values, return true if they have the same last "
"digit, such as with 27 and 57. Note that the % \"mod\" operator computes "
"remainders, so 17 % 10 is 7."
msgstr ""
"Dados dois valores int não-negativos, retorne true se eles tem o mesmo\n"
"dígito final, como com 27 e 57. Note que o operador % \"mod\" calcula os\n"
"restos, logo, 17 % 10 is 7."

#. type: Content of: <p>
#: src/lessons/welcome/bat/bool1/LastDigit.html:10
#: src/lessons/welcome/bat/bool2/ShareDigit.html:10
msgid ""
"This exercise was converted to PLM from the excellent exercising site http://"
"javabat.com/"
msgstr ""
"Este exercício foi convertido para o PLM do excelente sítio de\n"
"exercícios http://javabat.com/"

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool1/LoneTeen.html:2
msgid "Lone Teen"
msgstr "Lone Teen"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool1/LoneTeen.html:3
msgid ""
"We'll say that a number is \"teen\" if it is in the range 13..19 inclusive. "
"Given 2 int values, return true if one or the other is teen, but not both."
msgstr ""
"Diremos que um número é \"teen\" se ele está no intervalo entre 13..19\n"
"inclusive. Dados 2 valores, retorne true se um ou o outro é teen, mas\n"
"não ambos."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool1/Main.html:2
msgid "Boolean fun"
msgstr "Boolean fun"

#. type: Content of: <p>
#: src/lessons/welcome/bat/bool1/Main.html:4
msgid ""
"Boolean operations are one of the very basic task in programming.  As long "
"as you cannot write a not so simple boolean test under the minute, you "
"probably will have a very bad time writing a real program."
msgstr ""
"Operações booleanas são algumas das mais básicas tarefas em\n"
"programação. Enquanto você não puder escrever um teste booleano não\n"
"muito simples em menos de um minuto, você provavelmente terá\n"
"dificuldades em escrever programas do mundo real."

#. type: Content of: <p>
#: src/lessons/welcome/bat/bool1/Main.html:9
msgid ""
"That is why this lesson provides you a bunch of such exercises, so that you "
"can get trained in this."
msgstr ""
"É por isto que esta lição fornece vários exercícios deste tipo, de\n"
"forma que você fique treinado nisto."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool1/Makes10.html:2
msgid "Makes 10"
msgstr "Makes 10"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool1/Makes10.html:3
msgid ""
"Given 2 ints, a and b, return true if one of them is 10 or if their sum is "
"10."
msgstr ""
"Dados 2 inteiros, a e b, retorne true se um deles é 10 ou se a a soma deles "
"é 10."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool1/Max1020.html:2
msgid "Max1020"
msgstr "Max1020"

#. type: Content of: <p>
#: src/lessons/welcome/bat/bool1/Max1020.html:3
msgid ""
"Given 2 positive int values, return the larger value that is in the range "
"10..20 inclusive, or return 0 if neither is in that range."
msgstr ""
"Dados 2 valores int positivos, returne o maior valor que está no\n"
"intervalo 10..20 inclusive, ou retorne 0 se nenhum dos dois estiver\n"
"neste intervalo."

#. type: Content of: <p>
#: src/lessons/welcome/bat/bool1/Max1020.html:6
msgid ""
"Note that Math.max(Int,Int):Int and Math.min(Int,Int):Int return the maximum "
"and minimum of two integers"
msgstr ""
"Observe que Math.max(Int,Int):Int e Math.min(Int,Int):Int retornam o\n"
"máximo e o mínimo de dois inteiros"

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool1/MonkeyTrouble.html:2
msgid "MonkeyTrouble"
msgstr "MonkeyTrouble"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool1/MonkeyTrouble.html:4
msgid ""
"We have two monkeys, a and b, and the parameters aSmile and bSmile indicate "
"if each is smiling.  We are in trouble if they are both smiling or if "
"neither of them is smiling.  Return true if we are in trouble."
msgstr ""
"Temos dois macacos, a e b, e os parâmetros aSmile e bSmile indicam se\n"
"cada um está sorrindo. Teremos problemas se os dois estiverem sorrindo\n"
"ou nenhum deles estiver sorrindo. Retorne true se estivermos com\n"
"problemas."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool1/NearHundred.html:2
msgid "Near Hundred"
msgstr "Near Hundred"

#. type: Content of: <p>
#: src/lessons/welcome/bat/bool1/NearHundred.html:3
msgid ""
"Given an int n, return true if it is within 10 of 100 or 200.  [!java|"
"scala]Note that Math.abs(n) returns the absolute value of a number.[/!] [!"
"python]Note that math.fabs(n) returns the absolute value of a number.  This "
"function can only be used if you imported the math module.[/!]"
msgstr ""
"Dado um int n, retorna true se ele estiver entre 10 a 100 ou 200.\n"
"[!java|scala]Note que Math.abs(n) retorna o valor absoluto de um\n"
"número.[/!] [!python]Note que math.fabs(n) retorna o valor absoluto de\n"
"um número. Esta função só pode ser usada se você importar o módulo\n"
"math.[/!]"

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool1/ParotTrouble.html:2
msgid "Parot Trouble"
msgstr "Parot Trouble"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool1/ParotTrouble.html:4
msgid ""
"We have a loud talking parrot. The \"hour\" parameter is the current hour "
"time in the range 0..23. We are in trouble if the parrot is talking and the "
"hour is before 7 or after 20. Return true if we are in trouble."
msgstr ""
"Temos um papagaio muito barulhento. o parâmetro \"hora\" é a hora atual\n"
"no intervalo 0..23. Estamos com problemas se o papagaio fala e a hora\n"
"for antes de 7 ou depois de 20. Retorne true se estivermos com\n"
"problemas."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool1/PosNeg.html:2
msgid "Positive Negative"
msgstr "Positivo Negativo"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool1/PosNeg.html:3
msgid ""
"Given 2 int values, return true if one is negative and one is positive. "
"Unless negative is true, then they both must be negative."
msgstr ""
"Dados 2 valores int, retorne true se um é negativo e o outro é\n"
"positivo. A menos que o negativo seja verdadeiro, neste caso ambos\n"
"devem ser negativos."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool1/SleepIn.html:2
msgid "SleepDay"
msgstr "SleepDay"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool1/SleepIn.html:4
msgid ""
"The parameter weekday is true if it is a weekday, and the parameter vacation "
"is true if we are on vacation. We sleep in if it is not a weekday or we're "
"on vacation. Return true if we sleep in."
msgstr ""
"O parâmetro dia da semana é true se estivermos num dia de semana, e o\n"
"parâmetro vacation (férias) é true se estivermos de férias. Nós\n"
"dormimos de manhã se não for dia de semana ou se estivermos de\n"
"férias. Retorne true se dormimos de manhã."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool1/SumDouble.html:2
msgid "Sum Double"
msgstr "Soma dupla"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool1/SumDouble.html:3
msgid ""
"Given two int values, return their sum. Unless the two values are the same, "
"then return double their sum."
msgstr ""
"Dados dois valores int, retorne sua soma. A menos que dois valores\n"
"sejam os mesmos, neste caso retorne o dobro de sua soma."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool2/AlarmClock.html:2
msgid "AlarmClock"
msgstr "Despertador"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool2/AlarmClock.html:3
msgid ""
"Given a day of the week encoded as 0=Sun, 1=Mon, 2=Tue, ...6=Sat, and a "
"boolean indicating if we are on vacation, return a string of the form "
"\"7:00\" indicating when the alarm clock should ring. Weekdays, the alarm "
"should be \"7:00\" and on the weekend it should be \"10:00\". Unless we are "
"on vacation -- then on weekdays it should be \"10:00\" and weekends it "
"should be \"off\"."
msgstr ""
"Dado o dia da semana, codificado da seguinte forma: 0=Domingo,\n"
"1=Segunda, 2=Terça, ... 6=Sábado, e um booleano férias indicando se\n"
"estamos de férias, retorne uma cadeia de caracteres da forma \"7:00\"\n"
"indicando de que horas devemos botar o despertador. Nos dias da\n"
"semana, devemos nos acordar às 7h e nos finais de semana às\n"
"10h. Durante as férias, devemos nos acordar de 10h e nos finais de\n"
"semana desligar o despertador."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool2/AnswerCell.html:2
msgid "AnswerCell"
msgstr "secretária eletrônica"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool2/AnswerCell.html:3
msgid ""
"Your cell phone rings. Return true if you should answer it. Normally you "
"answer, except in the morning you only answer if it is your mom calling. In "
"all cases, if you are asleep, you do not answer."
msgstr ""
"Seu celular toca. Retorne true se você deve atender. Normalmente você\n"
"responde, exceto de manhã, quando você só atende sua mãe. De qualquer\n"
"forma, se você estiver dormindo, você não responde."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool2/BlueTicket.html:2
msgid "BlueTicket"
msgstr "bilhete azul"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool2/BlueTicket.html:3
msgid ""
"You have a blue lottery ticket, with ints a, b, and c on it. This makes "
"three pairs, which we'll call ab, bc, and ac. Consider the sum of the "
"numbers in each pair. If any pair sums to exactly 10, the result is 10.  "
"Otherwise if the ab sum is exactly 10 more than either bc or ac sums, the "
"result is 5. Otherwise the result is 0."
msgstr ""
"Você tem um bilhete de loteria azul, com os inteiros a, b e c. Eles\n"
"fazem três pares que chamaremos de ab, bc e ac. Considere a soma dos\n"
"números de cada par. Se a soma de um dos pares vale exatamente 10, o\n"
"resultado é 10. Senão, se a soma ab vale exatamente 10 mais bc ou ac,\n"
"o resultado é 5. Senão, o resultado é 0."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool2/CaughtSpeeding.html:2
msgid "CaughtSpeeding"
msgstr "Radar de velocidade"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool2/CaughtSpeeding.html:3
msgid ""
"You are driving a little too fast, and a police officer stops you. Write "
"code to compute the result, encoded as an int value: 0=no ticket, 1=small "
"ticket, 2=big ticket. If speed is 60 or less, the result is 0. If speed is "
"between 61 and 80 inclusive, the result is 1. If speed is 81 or more, the "
"result is 2. Unless it is your birthday -- on that day, your speed can be 5 "
"higher in all cases."
msgstr ""
"Você está dirigindo um pouco rápido demais é um guarda te\n"
"pára. Escreva o código para calcular o resultado, codificado na forma\n"
"de um inteiro: 0=sem multa, 1=multa leve, 2=multa pesada. Se sua\n"
"velocidade é inferior a 60, o resultado é 0. Se a velocidade está\n"
"entre 61 e 80 (inclusive), o resultado é 1. Se a velocidade é 81 ou\n"
"maior, o resultado é 2. Todos estes casos são para dias que não são\n"
"seu aniversário. No seu dia de aniversário sua velocidade pode ser\n"
"maior em 5 em todos os casos."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool2/CigarParty.html:2
msgid "CigarParty"
msgstr "Festa dos charutos"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool2/CigarParty.html:3
msgid ""
"When squirrels get together for a party, they like to have cigars. A "
"squirrel party is successful when the number of cigars is between 40 and 60, "
"inclusive. Unless it is the weekend, in which case there is no upper bound "
"on the number of cigars. Return true if the party was successful."
msgstr ""
"Quando os esquilos fazem uma festa, eles gostam de ter charutos. Uma\n"
"festa de esquilos é boa quando o número de charutos está entre 40 e 60\n"
"(inclusive). Salvo nos finais de semana, onde não há limite superior\n"
"para o número de charutos. Retorne true se a festa foi um sucesso."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool2/DateFashion.html:2
msgid "DateFashion"
msgstr "Encontro elegante"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool2/DateFashion.html:3
msgid ""
"You and your date are trying to get a table at a restaurant. The parameter "
"\"you\" is the stylishness of your clothes, in the range 0..10, and \"date\" "
"is the stylishness of your date's clothes. The result getting the table is "
"encoded as an int value with 0=no, 1=maybe, 2=yes. If either of you is very "
"stylish, 8 or more, then the result is 2 (yes). With the exception that if "
"either of you has style of 2 or less, then the result is 0 (no). Otherwise "
"the result is 1 (maybe)."
msgstr ""
"Você e seu par estão tentando conseguir uma mesa no restaurante. O\n"
"parâmetro \"you\" (você) é o nível de elegância de suas roupas, no\n"
"intervalo 0..10, e \"date\" (par) é o nível de elegância de seu par. O\n"
"resultado da tentativa de obter uma mesa é codificado como um valor\n"
"inteiro com 0=no (não), 1=maybe (talvez), 2=yes (sim). Se um de vocês\n"
"está muito elegante, 8 ou mais, o resultado é 2 (yes). Com uma\n"
"exceção. se um dos dois tem um estilo de 2 ou menos o resultado é 0\n"
"(no). Caso contrário o resultado é 1 (maybe)."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool2/FizzBuzz.html:2
msgid "Fizz Buzz"
msgstr "Fizz Buzz"

#. type: Content of: <p>
#: src/lessons/welcome/bat/bool2/FizzBuzz.html:3
msgid ""
"According to Wikipedia, Fizz buzz is a group word game for children to teach "
"them about division.  Players take turns to count incrementally, replacing "
"any number divisible by three with the word \"Fizz\", and any number "
"divisible by five with the word \"Buzz\". Any number that is divisible by "
"both three and five is replaced with the string \"Fizz Buzz\"."
msgstr ""
"De acordo com a Wikipedia, Fizz buzz é um jogo de \"group word\" para\n"
"crianças para ensinar divisão. Os jogadores jogam em turnos numéricos\n"
"que vão aumentando, substituindo qualquer número divisível por três\n"
"com a palavra \"Fizz\", e qualquer número divisível por cinco com a\n"
"palavra \"Buzz\". Qualquer número que é divisível tanto por 3 quanto por\n"
"5 é substituído pela palavra \"Fizz Buzz\"."

#. type: Content of: <p>
#: src/lessons/welcome/bat/bool2/FizzBuzz.html:8
msgid ""
"Unchanged numbers are simply returned as a string.  [!java|scala]The easiest "
"for that is to use that [!thelang] idiomatic: <code>\"\"+a</code>[/!] [!"
"python]The function <code>str(a)</code> changes an integer <code>a</code> "
"into a string.[/!]"
msgstr ""
"números que não são substituídos são simplesmente retornados como uma\n"
"string.  [!java|scala]O eito mais fácil é usar esta construção em\n"
"[!thelang]: <code>\"\"+a</code>[/!] [!python]A função\n"
"<code>str(a)</code> transforma um inteiro <code>a</code> numa\n"
"string.[/!]"

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool2/GreenTicket.html:2
msgid "GreenTicket"
msgstr "bilhete verde"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool2/GreenTicket.html:3
msgid ""
"You have a green lottery ticket, with ints a, b, and c on it. If the numbers "
"are all different from each other, the result is 0. If all of the numbers "
"are the same, the result is 20. If two of the numbers are the same, the "
"result is 10."
msgstr ""
"Você tem um bilhete de loteria verde, com os inteiros a, b e c\n"
"inscritos nele. Se os números são todos diferentes uns dos outros, o\n"
"resultado é 0. Se todos os números são idênticos, o resultado é 20. Se\n"
"dois dos números são os mesmos, o resultado é 10."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool2/In1To10.html:2
msgid "In1To10"
msgstr "De 1 a 10"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool2/In1To10.html:3
msgid ""
"Given a number n, return true if n is in the range 1..10, inclusive. Unless "
"\"outsideMode\" is true, in which case return true if the number is less or "
"equal to 1, or greater or equal to 10."
msgstr ""
"Seja um número n, retorne verdadeiro se n está no intervalo\n"
"[1,10]. Exceto se \"outsideMode\" é verdadeiro, e neste caso retorne\n"
"verdadeiro se o número é menor ou igual a 1 ou maior ou igual a 10."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool2/InOrderEqual.html:2
msgid "InOrderEqual"
msgstr "Em ordem crescente"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool2/InOrderEqual.html:3
msgid ""
"Given three ints, a b c, return true if they are in strict increasing order, "
"such as 2 5 11, or 5 6 7, but not 6 5 7 or 5 5 7. However, with the "
"exception that if \"equalOk\" is true, equality is allowed, such as 5 5 7 or "
"5 5 5."
msgstr ""
"Dados três inteiros, a b c, retorne verdadeiro se eles estão em ordem\n"
"estritamente crescente, como 2 5 11, ou 5 6 7, mas não 6 5 7 ou 5 5\n"
"7. Entretanto, com a exceção de se \"equalOk\" for verdadeiro, igualdade\n"
"é permitida, como 5 5 7 ou 5 5 5."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool2/InOrder.html:2
msgid "InOrder"
msgstr "Na ordem"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool2/InOrder.html:3
msgid ""
"Given three ints, a b c, return true if b is greater than a, and c is "
"greater than b. However, with the exception that if \"bOk\" is true, b does "
"not need to be greater than a."
msgstr ""
"Dados três inteiros, a b c, retorne verdadeiro se b é maior que a, e c\n"
"é maior que b. Entretanto, com a exceção que se \"bOk\" é verdadeiro, b\n"
"não precisa ser maior que a."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool2/LastDigit2.html:2
msgid "LastDigit 2"
msgstr "Último dígito 2"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool2/LastDigit2.html:3
msgid ""
"Given three ints, a b c, return true if two or more of them have the same "
"rightmost digit. The ints are non-negative. Note: the % \"mod\" operator "
"computes the remainder, e.g. 17 % 10 is 7."
msgstr ""
"Dados três inteiros, a b c, retorne verdadeiro se dois ou mais deles\n"
"tem o mesmo último dígito. Os inteiros são não-negativos. Nota: o\n"
"operador % \"mod\" calcula o resto, e.g. 17 % 10 is 7."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool2/LessBy10.html:2
msgid "LessBy10"
msgstr "Menor por 10"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool2/LessBy10.html:3
msgid ""
"Given three ints, a b c, return true if one of them is 10 or more less than "
"one of the others."
msgstr ""
"Dados três inteiros, a b c, retorne verdadeiro se um deles é 10 ou\n"
"menor que um dos outros."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool2/Main.html:2
msgid "Boolean (even more) fun"
msgstr "(mais) diversão com booleanos"

#. type: Content of: <p>
#: src/lessons/welcome/bat/bool2/Main.html:4
msgid ""
"A very good introduction to this type is available here: http://codingbat."
"com/doc/java-if-boolean-logic.html"
msgstr ""
"Uma ótima introdução a este tipo está disponível em:\n"
"http://codingbat.com/doc/java-if-boolean-logic.html"

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool2/MaxMod5.html:2
msgid "MaxMod5"
msgstr "MaxMod5"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool2/MaxMod5.html:3
msgid ""
"Given two int values, return whichever value is larger. However if the two "
"values have the same remainder when divided by 5, then the return the "
"smaller value. However, in all cases, if the two values are the same, return "
"0.  Note: the % \"mod\" operator computes the remainder, e.g. 7 % 5 is 2."
msgstr ""
"Sejam dois valores inteiros, retorne o maior dos dois. Entretanto, se\n"
"os dois valores possuem o mesmo resto quando divididos por 5, retorne\n"
"o menor dos dois. Entretanto, em todo caso, se os dois valores forem\n"
"iguais, retorne 0. Nota: o operador % \"mod\" calcula o resto, i.e. 7 %\n"
"5 vale 2."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool2/NearTen.html:2
msgid "NearTen"
msgstr "Próximo de dez"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool2/NearTen.html:3
msgid ""
"Given a non-negative number \"num\", return true if num is within 2 of a "
"multiple of 10. Note: (a % b) is the remainder of dividing a by b, so (7 % "
"5) is 2."
msgstr ""
"Seja um inteiro positivo \"num\", retorne verdadeiro se num está a uma\n"
"diferença de 2 ou menos de um múltiplo de 10. Nota: ( a % b ) é o\n"
"resto da divisão de a por b. Logo, (7 % 5) vale 2."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool2/RedTicket.html:2
msgid "RedTicket"
msgstr "Bilhete vermelho"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool2/RedTicket.html:3
msgid ""
"You have a red lottery ticket showing ints a, b, and c, each of which is 0, "
"1, or 2. If they are all the value 2, the result is 10. Otherwise if they "
"are all the same, the result is 5. Otherwise so long as both b and c are "
"different from a, the result is 1. Otherwise the result is 0."
msgstr ""
"Você tem um bilhete de loteria vermelho com três inteiros a, b e\n"
"c. Cada um com o valor 0, 1, ou 2. Se todos tem o valor 2, o resultado\n"
"vale 10. Senão, se eles são iguais, o resultado vale 5. Senão, e se b\n"
"e c são diferentes de a, o resultado vale 1. Senão, o resultado é 0."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool2/ShareDigit.html:2
msgid "ShareDigit"
msgstr "dígitos compartilhados"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool2/ShareDigit.html:3
msgid ""
"Given two ints, each in the range 10..99, return true if there is a digit "
"that appears in both numbers, such as the 2 in 12 and 23. (Note: division, e."
"g. n/10, gives the left digit while the % \"mod\" n%10 gives the right "
"digit.)"
msgstr ""
"Sejam dois inteiros, cada um no intervalo [10,99], retorne verdadeiro\n"
"se existe um dígito que aparece nos dois números, como 2 em 12 e\n"
"23. (Nota: divisão, i.e.  n/10, retorna o dígito à esquerda e % \"mod\"\n"
"n%10 retorna o dígito a direita.)"

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool2/SortaSum.html:2
msgid "SortaSum"
msgstr "Soma de inteiros"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool2/SortaSum.html:3
msgid ""
"Given 2 ints, a and b, return their sum. However, sums in the range 10..19 "
"inclusive, are forbidden, so in that case just return 20."
msgstr ""
"Dados 2 inteiros, a e b, retorne sua soma. Entretanto, somas no\n"
"intervalo 10..19 inclusive, são proibidas. Neste caso, simplesmente\n"
"retorne 20."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool2/SquirrelPlay.html:2
msgid "SquirrelPlay"
msgstr "Jogo do Esquilo"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool2/SquirrelPlay.html:3
msgid ""
"The squirrels in Palo Alto spend most of the day playing. In particular, "
"they play if the temperature is between 60 and 90 (inclusive). Unless it is "
"summer, then the upper limit is 100 instead of 90. Given an int temperature "
"and a boolean isSummer, return true if the squirrels play and false "
"otherwise."
msgstr ""
"Os esquilos em Palo Alto passam a maior parte do dia jogando. Em\n"
"particular, eles jogam se a temperatura está entre 60 e 90\n"
"(inclusive). A menos que seja verão, e neste caso o limite superior é\n"
"de 100 ao invés de 90. Seja uma temperatura inteira e um isSummer\n"
"(éVerão) booleano. Retorne verdadeiro se eles jogam e falso caso\n"
"contrário."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool2/TeaParty.html:2
msgid "TeaParty"
msgstr "Festa do chá"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool2/TeaParty.html:3
msgid ""
"We are having a party with amounts of tea and candy. Return the int outcome "
"of the party encoded as 0=bad, 1=good, or 2=great. A party is good (1) if "
"both tea and candy are at least 5. However, if either tea or candy is at "
"least double the amount of the other one, the party is great (2).  However, "
"in all cases, if either tea or candy is less than 5, the party is always bad "
"(0)."
msgstr ""
"Estamos tendo uma festa com chá e doces. Retorne o resultado inteiro\n"
"da festa codificado como 0=ruim, 1=bom, ou 2=excelente. Uma festa é\n"
"boa (1) se o chá e os doces são pelo menos 5. Entretanto, se tanto os\n"
"doces como o chá forem pelo menos o dobro do outro, a festa é\n"
"excelente (2). Entretanto, em todo caso, se tanto o chá quanto os\n"
"doces forem menos que 5, a festa é sempre ruim (0)."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool2/TeenSum.html:2
msgid "TeenSum"
msgstr "Soma de adolescentes"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool2/TeenSum.html:3
msgid ""
"Given 2 ints, a and b, return their sum. However, \"teen\" values in the "
"range 13..19 inclusive, are extra lucky. So if either value is a teen, just "
"return 19."
msgstr ""
"Dados dois números inteiros (a e b), retorne sua soma. Entretanto, os\n"
"valores adolescentes (no intervalo [13;19]) são particularmente\n"
"sortudos. Portanto, se um dos números for um adolescente, retorne\n"
"simplesmente 19."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool2/TwoAsOne.html:2
msgid "TwoAsOne"
msgstr "Dois como um"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool2/TwoAsOne.html:3
msgid ""
"Given three ints, a b c, return true if it is possible to add two of the "
"ints to get the third."
msgstr ""
"Dados três inteiros a, b e c, retorne verdadeiro se é possível\n"
"adicionar dois deles e o resultado ser o terceiro."

#. type: Content of: <h1>
#: src/lessons/welcome/bat/bool2/WithoutDoubles.html:2
msgid "WithoutDoubles"
msgstr "Sem dobros"

#. type: Content of: outside any tag (error?)
#: src/lessons/welcome/bat/bool2/WithoutDoubles.html:3
msgid ""
"Return the sum of two 6-sided dice rolls, each in the range 1..6. However, "
"if noDoubles is true, if the two dice show the same value, increment one die "
"to the next value, wrapping around to 1 if its value was 6."
msgstr ""
"Retorne a soma das rolagens de dois dados de 6 lados. entretanto, se\n"
"noDoubles é verdadeiro e os dois dados derem o mesmo valor, incremente\n"
"um dos dados para o valor seguinte, e volte a 1 se o valor for 6."

#. type: Content of: <h1>
#: src/lessons/bat/string1/Main.html:2
msgid "String fun"
msgstr "Diversão com Strings"

#. type: Content of: <p>
#: src/lessons/bat/string1/Main.html:4
msgid ""
"Strings are the simplest of the complex data types :) They provide several "
"operations, such as getting the length of the string, or a substring of it."
msgstr ""
"Strings são os mais simples dos tipos de dados complexos :) Elas\n"
"fornecem diferentes operações, como obter o tamanho da string ou uma\n"
"sub-string."

#. type: Content of: <p>
#: src/lessons/bat/string1/Main.html:8
msgid ""
"A very good introduction to this type is available here: http://codingbat."
"com/doc/java-string-introduction.html"
msgstr ""
"Uma introdução muito boa a este tipo pode ser encontrada em:\n"
"http://codingbat.com/doc/java-string-introduction.html"

#. type: Content of: <h3>
#: src/lessons/bat/string1/short_desc.html:2
msgid "Small exercises about strings"
msgstr "Pequenos exercícios com strings"

#. type: Content of: <p>
#: src/lessons/bat/string1/short_desc.html:4
msgid ""
"These are some training exercises around strings. But unfortunately, its "
"integration within PLM is still ongoing."
msgstr ""
"Aqui estão alguns exercícios sobre strings. Mas infelizmente, sua\n"
"integração no PLM ainda está sendo construída."

#. type: Content of: <p>
#: src/lessons/bat/string1/short_desc.html:7
msgid "Please be patient with us."
msgstr "Por favor seja paciente conosco."

#. type: Content of: <h1>
#: src/lessons/bat/string1/AltPairs.html:2
msgid "AltPairs"
msgstr "Pares alternados"

#. type: Content of: outside any tag (error?)
#: src/lessons/bat/string1/AltPairs.html:3
msgid ""
"Given a string, return a string made of the chars at indexes 0,1, 4,5, "
"8,9 ... so \"kittens\" yields \"kien\"."
msgstr ""
"Dada uma string, retorne outra string feita com os caracteres de índices "
"0,1, 4,5, 8,9 ... por exemplo \"kittens\" retorna \"kien\"."

#. type: Content of: <h1>
#: src/lessons/bat/string1/FrontTimes.html:2
msgid "FrontTimes"
msgstr "FrontTimes"

#. type: Content of: outside any tag (error?)
#: src/lessons/bat/string1/FrontTimes.html:3
msgid ""
"Given a string and a non-negative int n, we'll say that the front of the "
"string is the first 3 chars, or whatever is there if the string is less than "
"length 3. Return n copies of the front;"
msgstr ""
"Seja uma string e um inteiro n.\n"
"Definiremos o começo de uma string como seus três primeiros\n"
"caracteres, ou ela toda se o comprimento dela é menor que 3. Retorne n\n"
"cópias do começo de uma string."

#. type: Content of: <h1>
#: src/lessons/bat/string1/Last2.html:2
msgid "Last2"
msgstr "Último2"

#. type: Content of: <p>
#: src/lessons/bat/string1/Last2.html:4
msgid ""
"Given a string, return the amount of times that the two last letters appear "
"as a substring of the string. So \"hixxxhi\" yields 1 (we won't count the "
"end substring) while \"aaaNaa\" yields 2 (substrings may overlap)."
msgstr ""
"Dada uma string, retorne o número de vezes que os dois últimos dígitos\n"
"aparecem. Por exemplo, \"hixxxhi\" retorna 1 (não contamos a última\n"
"sub-string) enquanto que \"aaaNaa\" retorna 2 (as ocorrências podem se\n"
"sobrepor parcialmente)."

#. type: Content of: <h1>
#: src/lessons/bat/string1/StringBits.html:2
msgid "StringBits"
msgstr "StringBits"

#. type: Content of: outside any tag (error?)
#: src/lessons/bat/string1/StringBits.html:3
msgid ""
"Given a string, return a new string made of every other char starting with "
"the first, so \"Hello\" yields \"Hlo\"."
msgstr ""
"Dada uma string, retorne uma nova string formada pegando um caractere\n"
"sim, outro não, começando com o primeiro. Assim, \"Primeiro\" se torna\n"
"\"Pier\"."

#. type: Content of: <h1>
#: src/lessons/bat/string1/StringMatch.html:2
msgid "StringMatch"
msgstr "Comparação de string"

#. type: Content of: outside any tag (error?)
#: src/lessons/bat/string1/StringMatch.html:3
msgid ""
"Given 2 strings, a and b, return the number of the positions where they "
"contain the same length 2 substring. So \"xxcaazz\" and \"xxbaaz\" yields 3, "
"since the \"xx\", \"aa\", and \"az\" substrings appear in the same place in "
"both strings."
msgstr ""
"Sejam duas strings a e b.\n"
"Retorne o número de posições onde elas contém a mesma substring de\n"
"tamanho 2. Assim, \"xxcaazz\" e \"xxbaaz\" retornam 3, pois as substrings\n"
"\"xx\", \"aa\", e \"az\" aparecem nas mesmas posições nas duas strings."

#. type: Content of: <h1>
#: src/lessons/bat/string1/StringSplosion.html:2
msgid "StringSplosion"
msgstr "Explosão de strings"

#. type: Content of: outside any tag (error?)
#: src/lessons/bat/string1/StringSplosion.html:3
msgid ""
"Given a non-empty string like \"Code\" return a string like \"CCoCodCode\"."
msgstr ""
"Dada uma string não vazia como \"Code\".\n"
"Retorne uma string como \"CCoCodCode\"."

#. type: Content of: <h1>
#: src/lessons/bat/string1/StringTimes.html:2
msgid "StringTimes"
msgstr "Multiplicação de strings"

#. type: Content of: outside any tag (error?)
#: src/lessons/bat/string1/StringTimes.html:3
msgid ""
"Given a string and a non-negative int n, return a larger string that is n "
"copies of the original string."
msgstr ""
"Dada uma string e um inteiro positivo n.\n"
"Retorne uma string mais que consiste em n cópias da string original."

#. type: Content of: <h1>
#: src/lessons/bat/string1/StringX.html:2
msgid "StringX"
msgstr "StringX"

#. type: Content of: outside any tag (error?)
#: src/lessons/bat/string1/StringX.html:3
msgid ""
"Given a string, return a version where all the \"x\" have been removed. "
"Except an \"x\" at the very start or end should not be removed."
msgstr ""
"Dada uma string, retorne uma versão onde todos os \"x\" são removidos.\n"
"Exceto os \"x\" no começo e no final que devem permanecer."

#. type: Content of: <h1>
#: src/lessons/bat/string1/StringYak.html:2
msgid "StringYak"
msgstr "StringYak"

#. type: Content of: outside any tag (error?)
#: src/lessons/bat/string1/StringYak.html:3
msgid ""
"Suppose the string \"yak\" is unlucky. Given a string, return a version "
"where all the \"yak\" are removed, but the \"a\" can be any char. The \"yak"
"\" strings will not overlap."
msgstr ""
"A string \"yak\" não tem sorte. Dada uma stringd, retorne uma versão\n"
"onde todas as \"yak\" são suprimidas (qualquer que seja o caractere no\n"
"lugar do 'a'). As diferentes strings \"yak\" não se sobrepõe."

#. type: Content of: <h2>
#: src/lessons/lander/Main.html:2 src/lessons/lander/short_desc.html:2
#: src/lessons/lander/universe/DelegatingLanderWorld.html:2
msgid "Lunar Lander"
msgstr "Módulo lunar"

#. type: Content of: <p>
#: src/lessons/lander/Main.html:4 src/lessons/lander/short_desc.html:4
msgid ""
"In this lesson you pilot a lunar landing module in increasingly complex "
"situations."
msgstr ""
"Nesta lição você vai pilotar um módulo lunar em situações de complexidade "
"crescente"

#. type: Content of: <p>
#: src/lessons/lander/Main.html:7
msgid ""
"At each step of the simulation, the player issues a command controlling how "
"much the angle and thrust of the lander should change"
msgstr ""
"Em cada passo da simulação, o jogador envia um comando controlando\n"
"quanto o ângulo e a potência do módulo devem mudar"

#. type: Content of: <p>
#: src/lessons/lander/Main.html:10
msgid "Ideas concerning the progression of exercises:"
msgstr "Ideias a respeito da progressão dos exercícios:"

#. type: Content of: <ul><li>
#: src/lessons/lander/Main.html:12
msgid ""
"A lander in vertical position above flat ground, the player can only control "
"thrust (done)"
msgstr ""
"Um módulo em posição vertical sobre solo plano, o jogador só controla a "
"potência (feito)"

#. type: Content of: <ul><li>
#: src/lessons/lander/Main.html:14
msgid ""
"A lander in vertical position not above flat ground, the player control "
"thrust and angle (done)"
msgstr ""
"Um módulo em posição vertical sobre solo inclinado, o jogador controla "
"potência e ângulo (feito)"

#. type: Content of: <ul><li>
#: src/lessons/lander/Main.html:16
msgid ""
"A lander with difficult angle and speed not above flat ground, the player "
"control thrust and angle"
msgstr ""
"Um módulo com com ângulo ruim e rápido sobre solo inclinado, o jogador\n"
"controla potência e ângulo"

#. type: Content of: <ul><li>
#: src/lessons/lander/Main.html:18
msgid ""
"A lander with difficult angle and speed not above flat ground, with "
"difficult ground, the player control thrust and angle"
msgstr ""
"Um módulo com ângulo difícil e rápido sobre superfície inclinada, com\n"
"solo difícil, o jogador controla potência e ângulo"

#. type: Content of: <ul><li>
#: src/lessons/lander/Main.html:20
msgid "Same with wind?"
msgstr "O mesmo com vento?"

#. type: Content of: <p>
#: src/lessons/lander/short_desc.html:7
msgid "This lesson assumes some basic programming and physics skills."
msgstr "Esta lição assume algum conhecimento de física e programação básica."

#. type: Content of: <p>
#: src/lessons/lander/universe/DelegatingLanderWorld.html:4
msgid ""
"In this universe you pilot a lunar lander. At each simulation step you're "
"given the lander's position, speed, angle and thrust and must issue a "
"command adjusting its angle and thrust."
msgstr ""
"Neste universo você pilota um módulo lunar. Em cada passo da simulação\n"
"você recebe a posição, velocidade, ângulo e potência do módulo e deve\n"
"enviar um comando ajustando o ângulo e a potência."

#. type: Content of: outside any tag (error?)
#: src/lessons/lander/universe/DelegatingLanderWorld.html:12
msgid "Get the X and Y position of the lander."
msgstr "Obter (Get) as posições X e Y do módulo."

#. type: Content of: <pre>
#: src/lessons/lander/universe/DelegatingLanderWorld.html:13
#, no-wrap
msgid ""
"[!java|c]double [/!]getSpeedX()[!scala]:Double[/!]\n"
"[!java|c]double [/!]getSpeedY()[!scala]:Double[/!]"
msgstr ""
"[!java|c]double [/!]getVelocidadeX()[!scala]:Double[/!]\n"
"[!java|c]double [/!]getVelocidadeY()[!scala]:Double[/!]"

#. type: Content of: outside any tag (error?)
#: src/lessons/lander/universe/DelegatingLanderWorld.html:15
msgid "Get the horizontal and vertical speed of the lander."
msgstr "Obter a velocidade horizontal e vertical do módulo."

#. type: Content of: <pre>
#: src/lessons/lander/universe/DelegatingLanderWorld.html:17
#, no-wrap
msgid ""
"[!java|c]double [/!]getAngle()[!scala]:Double[/!]\n"
"[!java|c]void [/!]setDesiredAngle([!java|c]double [/!]desiredAngle[!scala]:Double[/!])"
msgstr ""
"[!java|c]double [/!]getÂngulo()[!scala]:Double[/!]\n"
"[!java|c]void [/!]setÂnguloDesejado([!java|c]double [/!]ÂnguloDesejado[!scala]:Double[/!])"

#. type: Content of: outside any tag (error?)
#: src/lessons/lander/universe/DelegatingLanderWorld.html:19
msgid "Get or set the angle of the lander."
msgstr "Obter ou ajustar o ângulo do módulo."

#. type: Content of: outside any tag (error?)
#: src/lessons/lander/universe/DelegatingLanderWorld.html:20
msgid ""
"An angle of 0° denotes a vertical position where the \"head\" of the lander "
"points up.  This is the angle you must land with. A positive angle denotes a "
"left-leaning lander, a negative angle a right-leaning one. You cannot lean "
"more than by ±90°, and the angle can vary by at most ±5° in one step."
msgstr ""
"Um ângulo de 0° denota uma posição vertical onde a \"cabeça\" do módulo\n"
"aponta para cima. Este é o ângulo que você deve pousar. Um ângulo\n"
"positivo denota inclinação para a esquerda, um ângulo negativo denota\n"
"inclinação para a direita. Você não pode inclinar mais que ±90°, e o\n"
"ângulo pode sofrer uma variação de no máximo ±5° em cada passo."

#. type: Content of: <pre>
#: src/lessons/lander/universe/DelegatingLanderWorld.html:25
#, no-wrap
msgid ""
"[!java|c]int [/!]getThrust()[!scala]:Int[/!]\n"
"[!java|c]void [/!]setDesiredThrust([!java|c]int [/!]thrust[!scala]:Int[/!])"
msgstr ""
"[!java|c]int [/!]getImpulso()[!scala]:Int[/!]\n"
"[!java|c]void [/!]setImpulsoDesejado([!java|c]int [/!]thrust[!scala]:Int[/!])"

#. type: Content of: outside any tag (error?)
#: src/lessons/lander/universe/DelegatingLanderWorld.html:27
msgid "Get or set the thrust of the lander."
msgstr "Obter ou ajustar a potência do módulo."

#. type: Content of: outside any tag (error?)
#: src/lessons/lander/universe/DelegatingLanderWorld.html:27
msgid ""
"You can only increment or decrement the thrust by 1 between two simulation "
"steps, so if the current thrust is 2 and you ask for 4, you'll only get 3 in "
"the next step. If you ask for less than 0 (resp. more than 4), everything "
"will be as if you had asked for 0 (resp. 4)."
msgstr ""
"Você só pode aumentar ou diminuir a potência de 1 a cada passo. logo,\n"
"se a potência atual é 2 e você pede 4, ela vai mudar para 3 no próximo\n"
"passo. Se você pedir menos que 0 (ou, respectivamente, mais que 4),\n"
"vai ser como se você tivesse pedido 0 (ou, respectivamente, 4)."

#. type: Content of: <pre>
#: src/lessons/lander/universe/DelegatingLanderWorld.html:33
#, no-wrap
msgid "[!java|c]int [/!]getFuel()[!scala]:Int[/!]"
msgstr "[!java|c]int [/!]getCombustível()[!scala]:Int[/!]"

#. type: Content of: outside any tag (error?)
#: src/lessons/lander/universe/DelegatingLanderWorld.html:34
msgid ""
"Get the remaining fuel in the lander.  At each step of the simulation the "
"lander consumes as many fuel units as the current thrust. Once you run out "
"of fuel you're in free fall so beware!"
msgstr ""
"Obter o combustível restante no módulo. Em cada passo da simulação o\n"
"módulo consome tantas unidades de combustível quanto a potência\n"
"atual. Uma vez que você fique sem combustível você entra em queda\n"
"livre. Portanto cuidado!"

#. type: Content of: <pre>
#: src/lessons/lander/universe/DelegatingLanderWorld.html:38
#, no-wrap
msgid "[!java]List&lt;Point&gt; [/!]getGround()[! scala]:List[Point][/!]"
msgstr "[!java]List&lt;Point&gt; [/!]getChão()[! scala]:List[Point][/!]"

#. type: Content of: outside any tag (error?)
#: src/lessons/lander/universe/DelegatingLanderWorld.html:39
msgid ""
"Get the vertices of the ground's profile from left to right.  [!java|"
"scala]You can retrieve the X and Y coordinates of each point with the "
"corresponding methods of your point: <code>p.x()</code> and <code>p.y()</"
"code>.[/!] [!python]Each point is an array of two integers denoting "
"respectively the X and Y coordinates of that point.[/!]"
msgstr ""
"Obter os vértices do perfil do solo da esquerda para a direita.\n"
"[!java|scala]Você pode recuperar as coordenada X e Y de cada ponto com\n"
"os métodos correspondentes do seu ponto: <code>p.x()</code> e\n"
"<code>p.y()</code>.[/!] [!python]Cada ponto é uma array de de dois\n"
"inteiros denotando respectivamente as coordenadas X e Y de cada\n"
"ponto.[/!]"

#. type: Content of: <h1>
#: src/lessons/lander/lvl1_lander_101/Lander101.html:2
msgid "Lander 101"
msgstr "Lander 101"

#. type: Content of: <p>
#: src/lessons/lander/lvl1_lander_101/Lander101.html:4
msgid ""
"Congratulations! You won a (one-way) trip to Mars in a cereal box. NASA was "
"kind enough to donate the Lunar Excursion Module for this mission, so that's "
"what you'll be flying."
msgstr ""
"Parabéns! Você ganhou uma viagem (só de ida) para Marte numa caixa de\n"
"cereais. A NASA está orgulhosa em doar o módulo da excursão lunar para\n"
"esta missão, e é ele que você vai pilotar."

#. type: Content of: <p>
#: src/lessons/lander/lvl1_lander_101/Lander101.html:8
msgid ""
"Before you take off, you must go through some basic landing simulation. You "
"shouldn't have to fly the lander if all goes as planned but, as they say, "
"\"better safe than sorry\"."
msgstr ""
"Antes de pousar, você vai realizar algumas simulações de pouso. Você\n"
"não tem que pilotar o módulo se tudo for como planejado mas, como\n"
"dizem, \"é melhor prevenir que remediar\"."

#. type: Content of: <p>
#: src/lessons/lander/lvl1_lander_101/Lander101.html:12
msgid ""
"Your mission is to <b>land the lander with a vertical speed of at most 10 m/"
"s.</b> There are two ways you can influence the lander's course: by "
"adjusting its angle or by adjusting its thrust. In this simulation we only "
"care about adjusting the thrust, expressed in m/s²."
msgstr ""
"Sua missão é <b>pousar o módulo com velocidade vertical de no máximo\n"
"10 m/s.</b> Existem duas formas de influenciar o curso do módulo:\n"
"ajustando seu ângulo ou ajustando sua potência. Nesta simulação vamos\n"
"nos preocupar apenas com ajustar a potência, expressa em m/s²."

#. type: Content of: <p>
#: src/lessons/lander/lvl1_lander_101/Lander101.html:17
msgid ""
"The [!python]<code>step()</code> function[/!][!scala|java|c]code[/!] that "
"you should write now will be called every 0.1 second during the simulation. "
"Make sure that your code does not last too long, with no while loop! It "
"should only set the desired thrust of the next simulation step, by calling "
"<code>[!java]void [/!]setDesiredThrust([!java]int [/!]desiredThrust[!scala]:"
"Integer[/!])</code> where <code>desiredThrust</code> is some integer between "
"0 and 4 (that is, a thrust between 0 m/s² and 4 m/s²). You can only "
"increment or decrement the thrust by 1 between two simulation steps, so if "
"the current thrust is 2 and you ask for 4, you'll only get 3 in the next "
"step. If you ask for less than 0 (resp. more than 4), everything will be as "
"if you had asked for 0 (resp. 4)."
msgstr ""
"[!python]A função <code>step()</code> [/!][!scala|java|c]O código[/!]\n"
"que você vai escrever agora vai ser\n"
"chamad[!python]a[/!][!scala|java|c]o[/!] a cada 0.1 segundos durante a\n"
"simulação. Certifique-se que seu código não demora muito para\n"
"executar, sem usar loop while! Ele apenas deve ajustar a potência\n"
"desejada para o próximo passo da simulação, chamando <code>[!java]void\n"
"[/!]setDesiredThrust([!java]int\n"
"[/!]desiredThrust[!scala]:Integer[/!])</code> onde\n"
"<code>desiredThrust</code> é algum inteiro entre 0 e 4 (ou seja, uma\n"
"potência entre 0 m/s² e 4 m/s²). Você só pode aumentar ou diminuir a\n"
"potênciapor 1 entre dois passos da simulação. Portanto, se a potência\n"
"atual é 2 e você pede 4, você vai conseguir apenas 3 no próximo\n"
"passo. Se você pede por menos que 0 (ou, respectivamente, mais que 4),\n"
"vai ser como se você tivesse pedido 0 (ou, respectivamente, 4)."

#. type: Content of: <p>
#: src/lessons/lander/lvl1_lander_101/Lander101.html:28
msgid ""
"In order to take informed decisions, you can query the lander's state. In "
"this simulation you'll probably be interested in its vertical position: "
"<code>[!java]double [/!]getY()[!scala]:Double[/!]</code>, and its vertical "
"speed: <code>[!java]double [/!]getSpeedY()[!scala]:Double[/!]</code>. You "
"can also ask for the thrust via <code>[!java]int [/!]getThrust()[!scala]:"
"Integer[/!]</code> in case you don't remember what you asked for. Remember "
"that Mars' gravity is 3.711 m/s², it might come in handy."
msgstr ""
"Para tomar decisões informadas, você pode consultar o status do\n"
"módulo. Nesta simulação você provavelmente vai estar interessado na\n"
"posição vertical: <code>[!java]double\n"
"[/!]getY()[!scala]:Double[/!]</code>, e na velocidade vertical:\n"
"<code>[!java]double [/!]getSpeedY()[!scala]:Double[/!]</code>. Você\n"
"também pode pedir a potência com <code>[!java]int\n"
"[/!]getThrust()[!scala]:Integer[/!]</code> caso você não lembre o que\n"
"pediu. Lembre que a gravidade de Marte é 3.711 m/s². Isto pode ser\n"
"útil."

#. type: Content of: <p>
#: src/lessons/lander/lvl1_lander_101/Lander101.html:36
msgid ""
"One last thing: the lander is pretty small so you don't have much fuel. At "
"each step of the simulation the lander consumes as many fuel units as the "
"current thrust. Once you run out of fuel you're in free fall so beware! You "
"can consult the remaining amount of available fuel units using <code>[!"
"java]int [/!]getFuel()[!scala]:Integer[/!]</code>."
msgstr ""
"Uma última coisa: o módulo é bem pequeno, logo você não tem muito\n"
"combustível. Em cada passo da simulação o módulo consome tantas\n"
"unidades de combustível quanto a potência atual. Uma vez que você\n"
"fique sem combustível você vai cair em queda livre, portanto cuidado!\n"
"Você pode consultar o quantidade de unidades de combustível restante\n"
"usando <code>[!java]int [/!]getFuel()[!scala]:Integer[/!]</code>."

#. type: Content of: <h2>
#: src/lessons/lander/lvl2_locate_landing_zone/LocateLandingZone.html:2
msgid "Locate a Landing Zone"
msgstr "Localizar uma área de pouso"

#. type: Content of: <p>
#: src/lessons/lander/lvl2_locate_landing_zone/LocateLandingZone.html:4
msgid ""
"After 200 days of traveling space and eating cereals you finally reach Mars. "
"Time to land at last!"
msgstr ""
"Depois de 200 dias viajando no espaço e comendo cereais você\n"
"finalmente chegou em Marte. Hora de pousar, finalmente!"

#. type: Content of: <p>
#: src/lessons/lander/lvl2_locate_landing_zone/LocateLandingZone.html:7
msgid ""
"The lander is on autopilot and all you have to do is look around and tell it "
"where to land. The lander must <b>land on a flat zone</b> if you want to "
"remain in one piece. You indicate the lander where to land by modifying the "
"<code>getLandingZone</code> function so that it returns a [!java|"
"scala]<code>Segment</code> representing the zone of your choice."
msgstr ""
"O módulo está no piloto-automático e tudo que você tem que fazer é dar\n"
"uma olhada e dizer ao módulo onde pousar. O módulo deve <b>pousar numa\n"
"área plana</b> se você quiser ficar inteiro. Você indica ao módulo\n"
"onde pousar modificando a função <code>getLandingZone</code> de forma\n"
"que ela retorne um [!java|scala]<code>Segment</code> representando a\n"
"área de sua escolha."

#. type: Content of: <p><p>
#: src/lessons/lander/lvl2_locate_landing_zone/LocateLandingZone.html:13
msgid ""
"A segment is composed of two <code>Point</code>s, each of them composed of "
"two <code>double</code>s. A segment is built via the <code>Segment([!"
"java]Point [/!]start[!scala]:Point[/!], [!java]Point [/!]end[!scala]:"
"Point[/!])</code> constructor.  A point is built via the <code>Point([!"
"java]double [/!]x[!scala]:Double[/!], [!java]double [/!]y[!scala]:"
"Double[/!])</code> constructor. A point's coordinates are accessible via its "
"<code>[!java]double [/!]x()[!scala]:Double[/!]</code> and <code>[!"
"java]double [/!]y()[!scala]:Double[/!]</code> methods."
msgstr ""
"Um segmento é composto de dois <code>Ponto</code>s, cada um deles\n"
"composto de dois <code>double</code>s. Um segmento é construído com o\n"
"construtor <code>Segment([!java]Point [/!]start[!scala]:Point[/!],\n"
"[!java]Point [/!]end[!scala]:Point[/!])</code>. Um ponto é construído\n"
"com o construtor <code>Point([!java]double [/!]x[!scala]:Double[/!],\n"
"[!java]double [/!]y[!scala]:Double[/!])</code>. As coordenadas de um\n"
"ponto são acessíveis através de seus métodos <code>[!java]double\n"
"[/!]x()[!scala]:Double[/!]</code> e <code>[!java]double\n"
"[/!]y()[!scala]:Double[/!]</code>."

#. type: Content of: <p>
#: src/lessons/lander/lvl2_locate_landing_zone/LocateLandingZone.html:18
msgid ""
"[/!] [!python]tuple of two X coordinates representing the zone of your "
"choice.[/!]"
msgstr ""
"[/!] [!python]tupla de duas coordenadas X representando a área escolhida.[/!]"

#. type: Content of: <p><p>
#: src/lessons/lander/lvl2_locate_landing_zone/LocateLandingZone.html:22
msgid ""
"In order to determine which zone to return, you'll need to call <code>[!"
"java]List&lt;Point&gt; [/!]getGround()[!scala]List[Point][/!]</code>, which "
"returns the vertices of the ground's profile as a list of [!java|"
"scala]<code>Point</code>[/!] [!python]tuples (x,y)[/!]."
msgstr ""
"Para determinar para qual área retornar, você precisa chamar\n"
"<code>[!java]List&lt;Point&gt;\n"
"[/!]getGround()[!scala]List[Point][/!]</code>, que retorna os vértices\n"
"do perfil do solo como uma lista de\n"
"[!java|scala]<code>Point</code>s[/!] [!python]tuples (x,y)[/!]."

#. type: Content of: <p><p>
#: src/lessons/lander/lvl2_locate_landing_zone/LocateLandingZone.html:27
msgid ""
"One more thing: your function should return a valid flat zone in any kind of "
"situation, not just for the currently visualized one. That's because it will "
"be not only tested against that world, but also against the one we had in "
"the previous exercise. As usual, you can see the other existing worlds with "
"the appropriate combobox."
msgstr ""
"Mais um detalhe: Sua função deve retornar uma área plana válida em\n"
"qualquer situação, não apenas para a atualmente vista. Isto é por que\n"
"ele não vai ser testado apenas neste mundo, mas também naquele do\n"
"exercício anterior. Como sempre, você pode ver os outros mundo\n"
"existentes com a combobox apropriada."

#. type: Content of: <p><p>
#: src/lessons/lander/lvl2_locate_landing_zone/LocateLandingZone.html:33
msgid ""
"Have a safe landing! Don't forget to put on your space suit on your way out."
msgstr ""
"Tenha um bom pouso! Não esqueça de vestir se traje espacial quando for sair."

#. type: Content of: <h1>
#: src/lessons/lander/lvl3_fly_the_lander/FlyTheLander.html:2
msgid "Fly the Lander!"
msgstr "Pilote o módulo!"

#. type: Content of: <p>
#: src/lessons/lander/lvl3_fly_the_lander/FlyTheLander.html:4
msgid ""
"After 30 days of staring at rocks and eating cereals you decide it's time to "
"go explore other parts of the planet."
msgstr ""
"Depois de 30 dias olhando rochas e comendo cereais você decide que é\n"
"hora de explorar outras partes do planeta."

#. type: Content of: <p>
#: src/lessons/lander/lvl3_fly_the_lander/FlyTheLander.html:7
msgid ""
"You fly for a while and suddenly realize you're almost out of fuel.  "
"Unfortunately you're in a delicate situation and the autopilot is helpless.  "
"You will have to pilot the lander yourself. Your mission is to <b>land the "
"lander on a flat zone with a vertical speed less than 10 m/s, an horizontal "
"speed less than 5 m/s and an angle of 0°.</b>"
msgstr ""
"Você voa por um tempo e repentinamente repara que está quase sem\n"
"combustível. Infelizmente, você está numa situação delicada e o piloto\n"
"altomático é inútil. Você vai ter que pilotar o módulo você mesmo. Sua\n"
"missão é <b>pousar o módulo numa área plana com uma velocidade\n"
"vertical menor que 10 m/s, uma velocidade horizontal menor que 5 m/s e\n"
"um ângulo de 0°.</b>"

#. type: Content of: <p>
#: src/lessons/lander/lvl3_fly_the_lander/FlyTheLander.html:13
msgid ""
"You must define two functions: <code>[!java]void [/!]initialize()</code> and "
"<code>[!java]void [/!]step()</code>. <code>initialize()</code> is called "
"once just after you press \"Run\". You can use it to chose some flat zone. "
"As before, <code>step()</code> is called every 0.1 second and is used for "
"adjusting the lander's thrust and angle. As in the first exercise the "
"lander's thrust is adjusted via <code>[!java]void [/!]setDesiredThrust([!"
"java]int [/!]desiredThrust[!scala]:Integer[/!])</code>.  But you can also "
"control its angle via <code>[!java]void [/!]setDesiredAngle([!java]double "
"[/!]desiredAngle[!scala]:Double[/!])</code>.  An angle of 0° denotes a "
"vertical position where the \"head\" of the lander points up.  This is the "
"angle you must land with. A positive angle denotes a left-leaning lander, a "
"negative angle a right-leaning one. You cannot lean more than by ±90°, and "
"the angle can vary by at most ±5° in one step."
msgstr ""
"Você precisa definir duas funções: <code>[!java]void\n"
"[/!]initialize()</code> e <code>[!java]void\n"
"[/!]step()</code>. <code>initialize()</code> é chamada uma única vez\n"
"depois de você apertar \"Rodar\". Você pode usar isto para escolher\n"
"alguma área plana. Como antes, <code>step()</code> é chamado a cada\n"
"0.1 segundos e é usada para ajustar a potência e ângulo do\n"
"módulo. Como no primeiro exercício, a potência do módulo é ajustada\n"
"através de <code>[!java]void [/!]setDesiredThrust([!java]int\n"
"[/!]desiredThrust[!scala]:Integer[/!])</code>. Mas você também pode\n"
"controlar seu ângulo através de <code>[!java]void\n"
"[/!]setDesiredAngle([!java]double\n"
"[/!]desiredAngle[!scala]:Double[/!])</code>.  Um ângulo de 0° denota\n"
"uma posição vertical onde a \"cabeça\" do módulo aponta para cima. Este\n"
"é o ângulo com o qual você deve pousar. Um ângulo positivo denota um\n"
"módulo inclinado para a esquerda, um ângulo negativo um inclinado para\n"
"a direita. Você não pode inclinar mais que ±90°, e o ângulo pode mudar\n"
"por no máximo ±5° em cada passo."

#. type: Content of: <p>
#: src/lessons/lander/lvl3_fly_the_lander/FlyTheLander.html:26
msgid ""
"As in the previous exercise, <code>[!java]List&lt;Point&gt; [/!]getGround()[!"
"scala]:List[Point][/!]</code> returns the vertices of the ground's profile "
"from left to right.  Please refer to the documentation (Help/About this "
"world) for a reference manual of your lunar lander."
msgstr ""
"Como no exercício anterior, <code>[!java]List&lt;Point&gt;\n"
"[/!]getGround()[!scala]:List[Point][/!]</code> retorna os vértices do\n"
"perfil do solo da esquerda para a direita. Favor consulte a\n"
"documentação (Ajuda/Sobre este mundo) para um manual de referência do\n"
"módulo lunar."

#. type: Content of: <p>
#: src/lessons/lander/lvl3_fly_the_lander/FlyTheLander.html:30
msgid ""
"As before, your program must safely land the lander in all the situations "
"encountered so far in addition to this new one."
msgstr ""
"Como antes, seu programa deve pousar com segurança o módulo em todas\n"
"as situações encontradas além desta nova."

#. type: Content of: <p>
#: src/lessons/lander/lvl3_fly_the_lander/FlyTheLander.html:33
msgid "Good luck, try not to crash!"
msgstr "Boa sorte, tente não cair!"

#. type: Content of: <h2>
#: lib/doc/MainWindow.html:1
msgid "The PLM Main Window"
msgstr "A Janela Principal do PLM"

#. type: Content of: outside any tag (error?)
#: lib/doc/MainWindow.html:3
msgid ""
"The PLM working environment should be self-explanatory, in particular with "
"the tool tips appearing when your mouse is over the elements.  Here is a "
"little explanation of the components in case you fail to understand "
"something. The main window is made of 5 main components:"
msgstr ""
"O ambiente de trabalho do PLM é auto-explicativo, principalmente com as "
"dicas que aparecem quando o mouse passa sobre elementos. Aqui está uma breve "
"explicação dos componentes caso você não entenda algo. A janela principal é "
"composta de 5 componentes principais:"

#. type: Content of: <ul><li>
#: lib/doc/MainWindow.html:10
msgid ""
"<b>The menu:</b> Placed on top of the window, it gives you access to some "
"advanced commands such as exiting the program, and some other that we will "
"detail later."
msgstr ""
"<b>O menu:</b> Colocado na parte de cima da janela, ele dá a você acesso a "
"alguns comandos avançados, como sair do programa, e alguns outros que "
"falaremos mais tarde."

#. type: Content of: <ul><li>
#: lib/doc/MainWindow.html:14
msgid ""
"<b>The tool bar:</b> Placed just below the menu, it gives you access to the "
"four main commands:"
msgstr ""
"<b>A barra de ferramentas:</b> Colocada logo abaixo do menu, ela te dá "
"acesso aos quatro comandos principais:"

#. type: Content of: <ul><li><ul><li>
#: lib/doc/MainWindow.html:19
msgid ""
"The <b>Start</b> button, which begins the compilation and execution of the "
"code you may have typed in the editor. At the end of the execution, it "
"verifies whether you reach the situation constituting the objective of the "
"exercise or not. If yes, you gain access to the next exercise using the "
"<b>Exercise</b> menu. If not, you need to rework your code."
msgstr ""
"O botão <b>início</b>, que começa a compilação e a execução do código que "
"você digitou no editor. No final da execução, ele verifica se você alcançou "
"uma situação que constitui o objetivo do exercício ou não. Se sim, você "
"ganha acesso ao próximo exercício usando o menu <b>Exercício</b>. Se não, "
"você vai precisar refazer seu código."

#. type: Content of: <ul><li><ul><li>
#: lib/doc/MainWindow.html:25
msgid ""
"The <b>Stop</b> button allows you to interupt the execution of your code, "
"what may reveal useful if you encounter an <i>infinite loop</i>."
msgstr ""
"O botão <b>Parar</b> sempre serve para interromper a execução de seu código, "
"o que pode ser útil se você entrar num <i>loop infinito</i>."

#. type: Content of: <ul><li><ul><li>
#: lib/doc/MainWindow.html:28
msgid ""
"The <b>Reset</b> button can be used to reset the world into its initial "
"state."
msgstr ""
"O botão <b>Reset</b> pode ser usado para reconfigurar o mundo para o estado "
"inicial."

#. type: Content of: <ul><li><ul><li>
#: lib/doc/MainWindow.html:31
msgid ""
"The <b>Demo</b> button shows you the execution of the expected solution. "
"During its execution, you may want to switch the seen world to see the "
"different expected solutions."
msgstr ""
"O botão <b>Demo</b> mostra a execução da solução esperada. Durante sua\n"
"execução, você pode alternar o mundo visto para ver as diferentes\n"
"soluções esperadas."

#. type: Content of: <ul><li><ul><li>
#: lib/doc/MainWindow.html:34
msgid ""
"Please note that there is often several ways of achieving the awaited "
"solution, and that the one presented during the demo is not more or less "
"correct than the others. You are completely free to not follow strictly the "
"process shown by the demo, as long as your final solution matches the "
"exercise expectations."
msgstr ""
"Note que às vezes existem várias maneiras de alcançar a solução esperada, e "
"que aquela apresentada durante a demonstração não é mais ou menos certa que "
"as outras. Você é completamente livre para não seguir estritamente o "
"processo mostrado pela demonstração, desde que sua solução final atinja o "
"que exercício pede."

#. type: Content of: <ul><li>
#: lib/doc/MainWindow.html:41
msgid ""
"<b>Mission and editor tabs:</b> this is were you read this very text. This "
"area contains several tabs to which you can access by clicking on their name "
"on the top left. The first tab (which is always named <b>Mission</b>)  "
"contains a presentation of the current exercise. To solve an exercise, you "
"need to write your code in the other tabs. For example, you can now clic on "
"the <b>Source Code</b> tab to see the actual source. If it is empty, that's "
"because you did not write any code yet."
msgstr ""
"<b>Abas de missão e editor:</b> é onde você está lendo este\n"
"texto. Esta área contém várias abas as quais você pode acessar\n"
"clicando em seu nome no canto superior esquerdo. A primeira aba (que\n"
"sempre se chama <b>Missão</b>) contém uma apresentação do exercício\n"
"atual. Para resolver um exercício, você precisa escrever seu código\n"
"nas outras abas. Por exemplo, você pode agora clicar na aba <b>Código\n"
"Fonte</b> para ver o código real. Se estiver vazia, é por que você\n"
"ainda não escreveu nenhum código."

#. type: Content of: <ul><li>
#: lib/doc/MainWindow.html:49
msgid ""
"<b>The console:</b> Placed under the tabs, this is where any messages of the "
"application will appear. This area is initially empty and white."
msgstr ""
"<b>O console:</b> localizado abaixo das abas, é onde aparece qualquer "
"mensagem da aplicação. Esta área inicialmente é vazia e branca."

#. type: Content of: <ul><li>
#: lib/doc/MainWindow.html:52
msgid ""
"<b>World view</b> Placed on the right of the tabs, it is constituted of five "
"elements:"
msgstr ""
"<b>Visão do mundo</b> localizada à direita das abas, é constituída de cinco "
"elementos:"

#. type: Content of: <ul><li><ul><li>
#: lib/doc/MainWindow.html:57
msgid ""
"A scrolling menu allows to choose the world. Indeed, the program you write "
"may be executed in several worlds to test it in differing conditions. This "
"menu allows you to choose the world you want to see. Note that this "
"scrolling menu is hidden if there is only one world in your exercise."
msgstr ""
"Um menu rolante serve para escolher o mundo. Na verdade, o programa\n"
"que você escreveu pode ser executado em vários mundos para testar ele\n"
"em diferentes condições. Este menu é para você escolher o mundo que\n"
"você quer ver. Observe que este menu rolante fica oculto se houver\n"
"apenas um mundo no seu exercício."

#. type: Content of: <ul><li><ul><li>
#: lib/doc/MainWindow.html:62
msgid ""
"A slider placed right bellow allows to choose the animation speed of the "
"world. More precisely, it allows to choose the delay (in milliseconds) that "
"the buggles must wait after each action to allow you to see what they are "
"doing."
msgstr ""
"Um \"slider\" colocado logo abaixo serve para escolher a velocidade da\n"
"animação do mundo. Mais precisamente, permite escolher o atraso (em\n"
"milisegundos) que os buggles devem esperar depois de cada ação para\n"
"permitir que você veja o que eles estão fazendo."

#. type: Content of: <ul><li><ul><li>
#: lib/doc/MainWindow.html:67
msgid ""
"A tab <b>World</b> represents the view of the world currently selected (from "
"the scrolling menu). This view is thus constitued of a grid forming the "
"several cells of the world, as well as several <i>buggles</i> awaiting for "
"your orders."
msgstr ""
"Uma aba <b>Mundo</b> representa a visão de mundo atualmente selecionada (de "
"menu rolante). Esta visão é então constituída de uma grade formando várias "
"células do mundo, assim como vários \"<i>buggles</i>\" esperando suas ordens."

#. type: Content of: <ul><li><ul><li>
#: lib/doc/MainWindow.html:72
msgid ""
"An <b>Objective</b> tab displaying the world as it must be by the end of the "
"exercise."
msgstr ""
"Uma aba <b>Objetivo</b> mostrando o mundo como deveria ser no final do "
"exercício."

#. type: Content of: <ul><li><ul><li>
#: lib/doc/MainWindow.html:76
msgid ""
"<b>The interactive controls</b>. Placed under the world view, these buttons "
"allows you to interactively control the buggles. This way, you can try to "
"<i>manually</i> bring your buggle to the scenario objective before writting "
"the needed code in the editor."
msgstr ""
"<b>Os controles interativos</b>. Localizados abaixo da Visão do mundo, estes "
"botões servem para controlar interativamente os buggles. Desta forma, você "
"pode tentar trazer <i>manualmente</i> seu buggle para o objetivo do cenário "
"antes de escrever o código necessário no editor."

#. type: Content of: <ul><li><ul><li><ul><li>
#: lib/doc/MainWindow.html:82
msgid "A scrolling menu allows to select the buggle you want to control."
msgstr ""
"Um menu rolante serve para selecionar o \"buggle\" que você quer controlar."

#. type: Content of: <ul><li><ul><li><ul><li>
#: lib/doc/MainWindow.html:84
msgid "The <b>Forward</b> button let your buggle do one step forward."
msgstr "O botão <b>Avançar</b> faz seu \"buggle\" dar um passo à frente."

#. type: Content of: <ul><li><ul><li><ul><li>
#: lib/doc/MainWindow.html:86
msgid "The <b>Backward</b> button let it do one step backward."
msgstr "O botão <b>Recuar</b> faz ele dar um passo para trás."

#. type: Content of: <ul><li><ul><li><ul><li>
#: lib/doc/MainWindow.html:88
msgid "The <b>Turn left</b> button ask your buggle to turn of 90° to its left."
msgstr ""
"O botão <b>Virar à esquerda</b> manda seu \"buggle\" virar 90° à esquerda."

#. type: Content of: <ul><li><ul><li><ul><li>
#: lib/doc/MainWindow.html:90
msgid ""
"The <b>Turn right</b> button asks the buggle to turn to the right (isn't "
"this amazing?)."
msgstr ""
"O botão <b>Virar à direita</b> manda seu o \"buggle\" virar à direita "
"(surpreendente, né?)."

#. type: Content of: <ul><li><ul><li><ul><li>
#: lib/doc/MainWindow.html:93
msgid ""
"The <b>Mark</b> button requests your buggle to leave a mark behind it when "
"it goes."
msgstr ""
"O botão <b>Marcar</b> pede que o seu \"buggle\" deixe uma marca atrás dele "
"depois que sair."

#~ msgid "When your program works, move forward to the next exercise."
#~ msgstr "Quando o seu programa funciona, vá para o próximo exercício."

#~ msgid ""
#~ "To take one corridor, you simply have to run from one intersection to "
#~ "another while counting the baggles you see on your path. The method "
#~ "<code>crossing()</code> tells you whether your buggle currently stands on "
#~ "an intersection.  The extra complexity is that at the beginning of a "
#~ "corridor, you obviously stand on an intersection, but you still want to "
#~ "move on.  [!java|scala|c]For that, the easiest is to use a <code>do / "
#~ "while</code> loop instead of a regular <code>while</code> loop to move "
#~ "until the next intersection.[/!] [!python]For that, use an extra variable "
#~ "indicating whether you already entered the corridor, as follows. This "
#~ "will ensure that you execute the loop body at least once (when "
#~ "<code>firstTime</code> is true) before we actually use the value returned "
#~ "by <code>crossing()</code> to determine to continue or not.[/!]"
#~ msgstr ""
#~ "Para entrar em um corredor, você tem simplesmente que ir de uma "
#~ "intersecção para a outra enquanto conta os baggles que vê em seu caminho. "
#~ "O método \"<code>cruzamento()</code>\" diz se seu buggle está ou não numa "
#~ "intersecção. A complexidade extra é que no começo de um corredor, você "
#~ "está obviamente numa intersecção, mas você ainda precisa se mover.  [!"
#~ "java|scala|c]Para isto, a forma mais fácil é usar um loop <code>do / "
#~ "while</code> (faça / enquanto) ao invés de um loop <code>while</code> "
#~ "(enquanto) normal para se mover até a próxima intersecção.[/!] [!"
#~ "python]Para isto, use uma variável extra indicando quando você já entrou "
#~ "no corredor, como segue. Isto vai garantir que você execute o corpo do "
#~ "loop pelo menos uma vez (quando o <code>primeiraVez</code> for "
#~ "verdadeiro) antes de nós usarmos realmente o valor retornado pelo "
#~ "<code>cruzamento()</code> para determinar se continuamos ou não.[/!]"

#~ msgid ""
#~ "firstTime = True\n"
#~ "while firstTime or not crossing():\n"
#~ "  firstTime = False\n"
#~ "  (loop body)\n"
#~ msgstr ""
#~ "primeiraVez = True\n"
#~ "while primeiraVez or not cruzamento():\n"
#~ "  primeiraVez = False\n"
#~ "  (corpo do loop)\n"

#~ msgid "Beware, the first line and column are numbered 0 and not 1..."
#~ msgstr ""
#~ "Cuidado, a primeira linha e a primeira coluna são numeradas com 0 e\n"
#~ "não com 1..."

#~ msgid "Returns the current position of the turtle."
#~ msgstr "Retorna a posição atual da tartaruga."

#~ msgid "This code is then perfectly equivalent to the following one."
#~ msgstr "Este código é então complemtamente equivalente ao seguinte."

#~ msgid ""
#~ "The scrolling menu <b>Lessoon</b> allows you to choose the lesson you "
#~ "want to work on."
#~ msgstr ""
#~ "O menu rolante <b>Lição</b> serve para você escolher a lição na qual quer "
#~ "trabalhar."

#~ msgid ""
#~ "The scrolling menu <b>Exercise</b> allows you to switch to another "
#~ "exercise when you want. Some lessons require you to finish an exercise "
#~ "before starting the previous one."
#~ msgstr ""
#~ "O menu rolante <b>Exercício</b> serve para alternar para outro exercício "
#~ "se você quiser. Algumas lições exigem que você termine um exercício antes "
#~ "de iniciar outro."

#~ msgid "Color.black"
#~ msgstr "Color.black"

#~ msgid "Color.blue"
#~ msgstr "Color.blue"

#~ msgid "Color.cyan"
#~ msgstr "Color.cyan"

#~ msgid "Color.darkGray"
#~ msgstr "Color.darkGray"

#~ msgid "Color.gray"
#~ msgstr "Color.gray"

#~ msgid "Color.green"
#~ msgstr "Color.green"

#~ msgid "Color.lightGray"
#~ msgstr "Color.lightGray"

#~ msgid "Color.magenta"
#~ msgstr "Color.magenta"

#~ msgid "Color.orange"
#~ msgstr "Color.orange"

#~ msgid "Color.pink"
#~ msgstr "Color.pink"

#~ msgid "Color.red"
#~ msgstr "Color.red"

#~ msgid "Color.white"
#~ msgstr "Color.white"

#~ msgid "Color.yellow"
#~ msgstr "Color.yellow"

#~ msgid "Direction.NORTH, Direction.EAST, Direction.SOUTH and Direction.WEST"
#~ msgstr "Direção.NORTE, Direção.LESTE, Direção.SUL e Diração.OESTE"

#~ msgid "Backtracking lesson"
#~ msgstr "Lição de Backtracking"

#~ msgid ""
#~ "This <b>experimental</b> lesson aims at teaching students about "
#~ "backtracking. It is not ready for consumtion yet, not even the first "
#~ "exercises. It will feature several exercices on the topic allowing to "
#~ "progressively build the relevant notions and mental representation in the "
#~ "students mind."
#~ msgstr ""
#~ "Esta lição <b>experimental</b> foca em ensinar alunos a respeito de "
#~ "\"backtracking\". Ainda não está pronta para uso, nem mesmo os primeiros "
#~ "exercícios. Ela vai apresentar  vários exercícios no tópico permitindo "
#~ "uma construção progressiva das noções relevantes e representações mentais "
#~ "nas mentes dos estudantes."

#~ msgid ""
#~ "For now, it contains a Backtracking exercise which lacks a graphical "
#~ "representation to be usable. It is based on an entity KnapsackSolver "
#~ "which works on a KnapsackPartialSolution. This latter is not a World, but "
#~ "a passive world component. It is used by the solver to store the "
#~ "currently best solution and the working solution. This design should be "
#~ "rather generic and other backtracking problems, such as the ones used in "
#~ "my TOP teaching (pyramid, recipients) should be implmentable following "
#~ "this design. That is why Backtracking classes derive from generic ones: "
#~ "BacktrackingEntity and BacktrackingPartialSolution.  There is also a "
#~ "BacktrackingWorld, that specific universes should need to not override, "
#~ "and BacktrackingExercise, dealing with this specificity where the world "
#~ "does not only contain solving entities, but also two partial solutions "
#~ "(best know and current)."
#~ msgstr ""
#~ "Por enquanto, contém um exercício de \"Backtracking\" que carece de uma "
#~ "representação gráfica para ser utilizável. É baseado na entidade "
#~ "KnapsackSolver que funciona numa KnapsackPartialSolution. Este último não "
#~ "é um Mundo, mas um componente de mundo passivo. Ele é usado pelo "
#~ "resolvedor para armazenar a melhor solução do momento e a solução de "
#~ "trabalho. Este design deve ser suficientemente genérico e outros "
#~ "problemas de \"backtracking\", como aqueles nas minhas aulas de \"TOP"
#~ "\" (pyramid, recipients) devem ser implementáveis seguindo  este design. "
#~ "É por isto que classes \"Backtracking\" derivam de genéricas: "
#~ "BacktrackingEntity e BacktrackingPartialSolution. Também existe um "
#~ "BacktrackingWorld, que universos específicos devem não precisam "
#~ "sobreescrever, e BacktrackingExercise, lidando com esta especificidade "
#~ "onde o mundo não apenas contém entidades de solução, mas também duas "
#~ "soluções parciais (a melhor conhecida e a atual)."

#~ msgid ""
#~ "This exercise should be introduced by an interactive discovery activity "
#~ "such as the one used here: http://interstices.info/jcms/c_19213/le-"
#~ "probleme-du-sac-a-dos"
#~ msgstr ""
#~ "Este exercício deve ser introduzido por uma atividade de descoberta "
#~ "interativa como aquela usada aqui: http://interstices.info/jcms/c_19213/"
#~ "le-probleme-du-sac-a-dos"

#~ msgid ""
#~ "Although this exercise seems almost usable, there is a fundamental "
#~ "difficulty to solve in the visualization. It is envisionned that the call "
#~ "graph is used here, to help the students building their mental "
#~ "representation of recursion. The actual representation of the graph "
#~ "should be quite easy, thanks to the jung library. But I fail to see how "
#~ "to get the needed info so far. Adding sensors to the stepUI()  method is "
#~ "probably the best way to go, but I would need to inspect the complete "
#~ "call stack where Thread.currentThread().getStack() only give the static "
#~ "stack (method called, file location, etc). I think I need to inspect the "
#~ "parameters passed to each method call to rebuild the proper call tree."
#~ msgstr ""
#~ "Embora este exercício pareça quase usável, existe uma dificuldade "
#~ "fundamental para resolver a visualização. É \"envisionned\" que o \"call "
#~ "graph\" é usado aqui, para ajudar os estudantes a construir sua "
#~ "representação mental de recursão. A representação real do gráfico deve "
#~ "ser bastante fácil, graças à biblioteca jung. Mas eu não consigo ver como "
#~ "\"get the needed info so far\". Adicionando sensores ao método stepUI() é "
#~ "provavelmente a melhor forma, mas eu preciso inspecionar a pilha de "
#~ "chamadas completa onde Thread.currentThread().getStack() apenas dá a "
#~ "pilha estática (método chamado, local do arquivo, etc). Eu acho que "
#~ "preciso inspecionar os parâmetros passados para cada chamada de método "
#~ "para reconstruir a própria árvore de chamadas."

#~ msgid ""
#~ "The first thing that I tried to use was dtrace, but it seems non-portable "
#~ "and somehow linked to solaris so I didn't dig any further."
#~ msgstr ""
#~ "A primeira coisa que eu tentei usar foi dtrace, mas parece que ele é não-"
#~ "portável e de certa forma vinculado ao solaris, então eu não fui mais à "
#~ "fundo."

#~ msgid ""
#~ "Then, I tried to use the debugging infrastructure (JPDA), but never "
#~ "managed to get it working. It seems to me that the original com.sun.jdi "
#~ "package is somehow deprecated since com.sun.jdi.BootStrap."
#~ "virtualMachineManager() returns null while org.eclipse.jdi.Bootstrap."
#~ "virtualMachineManager() does not. But when I'm using the eclipse version, "
#~ "it seem to take an endless amount of dependencies, which I'm not inclined "
#~ "to do. The root of my problem may be that I was using a jdi.jar comming "
#~ "from eclipse, but I didn' find any other. I just realised that the com."
#~ "sun.jdi package is also implemented in /usr/lib/jvm/java-6-sun-1.6.0.26/"
#~ "lib/tools.jar on my disk. It seem to be functional, I should give it "
#~ "another spin."
#~ msgstr ""
#~ "Então, eu tentei usar a infraestrutura de depuração (JPDA), mas nunca "
#~ "consegui fazê-la funcionar. Me parece que o pacote original com.sun.jdi "
#~ "está de alguma forma obsoleto uma vez que com.sun.jdi.BootStrap."
#~ "virtualMachineManager() retorna null enquanto org.eclipse.jdi.Bootstrap."
#~ "virtualMachineManager() não. Mas quando eu estou usando a versão do "
#~ "eclipse, ele tenta usar uma quantidade enorme de dependências, que eu não "
#~ "estou inclinado a usar. A raíz do meu problema deve ser que eu estou "
#~ "usando um jdi.jar que vem do eclipse, mas não encontro nenhum outro. Eu "
#~ "notei que o pacote com.sun.jdi também está implementado em /usr/lib/jvm/"
#~ "java-6-sun-1.6.0.26/lib/tools.jar no meu disco. Ele parece funcional, "
#~ "devo dar a ele outro \"spin\"."

#~ msgid ""
#~ "Afterward, I tried to reuse the debugging infrastructure of DrJava. It "
#~ "looks like a good idea because they have several helper interfaces for "
#~ "debugging and compiling. Also, they have a good editor that we could "
#~ "reuse. Finally, they have a strong testing infrastructure with junit "
#~ "ensuring that their tool still work after modifications (that's something "
#~ "we are seriously missing in PLM). I'm really thinking that the two tools "
#~ "should converge to something stronger. The only argument for not doing so "
#~ "(beside the amount of work it'll take) is that each of us get the credit "
#~ "for each tool where things would be more fuzzy on a mixed tool. But I "
#~ "don't care, the mixed tool would be so much cooler that I'd like to find "
#~ "the time to ensure this convergence."
#~ msgstr ""
#~ "Depois disto, eu tentei reutilizar a infraestrutura de depuração do "
#~ "DrJava. Pareceu uma boa ideia por que eles tem várias interfaces de "
#~ "auxilio para depuração e compilação. Também, eles tem um bom editor que "
#~ "nós podemos reutilizar. Finalmente, eles tem uma infraestrutura de testes "
#~ "forte com junit garantindo que sua ferramenta ainda funcionará após "
#~ "modificações (isto é algo sério que não temos aqui no PLM). Eu considerei "
#~ "que as duas ferramentas poderíam convergir para algo mais forte. O único "
#~ "argumento para não fazer isto (além do grande trabalho que geraria) é que "
#~ "cada um tem o crédito por cada ferramenta enquanto as coisas ficariam "
#~ "mais confusas numa ferramenta misturada. Mas eu não me importo, a "
#~ "ferramenta misturada seria tão legal que eu encontraria tempo para "
#~ "garantir esta convergência."

#~ msgid ""
#~ "But the debugging feature of DrJava seems to suffer from an issue: http://"
#~ "sourceforge.net/tracker/index.php?"
#~ "func=detail&aid=3004294&group_id=44253&atid=438935 I was suspecting a "
#~ "permission error (something related to com.sun.jdi.JDIPermission), but "
#~ "even with a java.security.AllPermission as permission file, I still have "
#~ "the issue."
#~ msgstr ""
#~ "Mas a função depuração do DrJava parece ter um problema issue: http://"
#~ "sourceforge.net/tracker/index.php?"
#~ "func=detail&aid=3004294&group_id=44253&atid=438935 eu suspeitei de um "
#~ "erro de permissão (algo relacionado a com.sun.jdi.JDIPermission), mas "
#~ "mesmo com um arquivo java.security.AllPermission, o problema persistia."

#~ msgid ""
#~ "Another lead to get it working it to use lib ASM to modify the student "
#~ "code so that their recursive method gets traced. With the static "
#~ "backtrace and the tracing information, I guess I could rebuild the actual "
#~ "call tree. That seem to be possible: 2 sec of googling gave me something "
#~ "like http://rejeev.blogspot.com/2009/04/method-tracing.html"
#~ msgstr ""
#~ "Outro \"lead\" para colocar para funcionar seria usar lib ASM para\n"
#~ "modificar o código do estudante de forma que seu método recursivo\n"
#~ "fosse rastreado. Com o \"backtrace\" estático e a informação de\n"
#~ "rastreio, eu imaginei que poderia reconstruir a árvore de chamadas\n"
#~ "atual. Isto parecia possível: 2 segundos de google me deram isto\n"
#~ "http://rejeev.blogspot.com/2009/04/method-tracing.html"

#~ msgid ""
#~ "So, here I am. The lesson would be very interesting to students, and "
#~ "quite easy to finish once I manage to get the information I need, but I "
#~ "didn't manage to do so so far, despite my efforts. If you have any hint "
#~ "(or patch!), please email martin.quinson#loria.fr."
#~ msgstr ""
#~ "E aqui estou eu. A lição pode ser bastante interessante para estudantes, "
#~ "e muito fácil de terminar uma vez que eu consiga a informação que "
#~ "preciso, mas eu não consegui até agora, apesar dos meus esforços. Se você "
#~ "tem alguma dica (ou patch!), por favor me mande um email martin."
#~ "quinson#loria.fr."

#~ msgid ""
#~ "This gives me the following todo actions: * Check whether tools.jar gives "
#~ "a working com.sun.jdi package * Find the DrJava bug around debugging to "
#~ "help them, and so that I can steal parts of their code about it for PLM "
#~ "(it's BSD'ed while PLM is mainly GPL'ed for now -- I'll have to ask them "
#~ "for an exception). That would be better since their helper interface seem "
#~ "to be able to deal with several debuggers (eclipse, sun or openjdk). "
#~ "That's quite a large amount of work I'd like to avoid duplicating.  * "
#~ "Check wheter I can get tracing info from ASM. It may be more robust to "
#~ "JVM variants than the debugging approach. On the other hand, debugging is "
#~ "a neat feature for PLM as is.  * Work on the convergence of PLM and "
#~ "DrJava. Beside of the licencing issue, it will also complicate the "
#~ "ongoing integration of PLM within Debian, since DrJava is composed of [[5 "
#~ "separated modules|http://drjava.org/docs/developer/ch02s03.html]] that "
#~ "can only be integrated as separated source packages. As every java "
#~ "package, no source archive is distributed, and they must be retrieved "
#~ "directly from the svn. Finally, they are quite huge, with sloccount "
#~ "reporting"
#~ msgstr ""
#~ "Isto me deixa com as seguintes ações a fazer: * Verificar se tools.jar "
#~ "deixa um pacote com.sun.jdi funcional * Encontrar o bug do DrJava "
#~ "\"around debugging\" para ajudá-los, e para que eu possa roubar partes do "
#~ "código deles para o PLM (o deles é BSD enquanto o PLM é basicamente GPL "
#~ "por enquanto -- preciso pedir a eles para abrirem uma exceção). Isto "
#~ "parece ser melhor pois a interface \"helper\" deles parece ser capaz de "
#~ "lidar com vários depuradores (eclipse, sun ou openjdk). Isto é muito "
#~ "trabalho que eu gostaria de não duplicar.  * Verificar se eu posso obter "
#~ "a informação de rastreio da ASM. Seria mais robusto para variantes JVM do "
#~ "que a abordagem de depuração. Por outro lado, depuração é uma "
#~ "funcionalidade limpa para o PLM como está. * Trabalhar na convergência de "
#~ "PLM e DrJava. Junto com o problema do licenciamento, também terá uma "
#~ "complicação numa futura integração do PLM no Debian, já que DrJava é "
#~ "composto de [[5 módulos separados|http://drjava.org/docs/developer/"
#~ "ch02s03.html]] que só podem ser integrados como pacotes fontes separados. "
#~ "Como todo pacote Java, nenhum pacote fonte é distribuído, e eles devem "
#~ "ser recuperados diretamente do svn. Finalmente, eles são muito grandes, "
#~ "com relatos de sloccount"

#~ msgid "&nbsp;&nbsp;"
#~ msgstr "&nbsp;&nbsp;"

#~ msgid "Welcome to the Programmer's Learning Machine"
#~ msgstr "Bem vindo ao Programmer's Learning Machine"

#~ msgid ""
#~ "The PLM is a Learning Management System (LMS) aiming at teaching the art "
#~ "of computer programming through interactive exercises. It offers an "
#~ "extensive set of varied exercises, allowing you to practice at your own "
#~ "pace."
#~ msgstr ""
#~ "O PLM é um sistema de gestão de aprendizagem (Learning Management System "
#~ "- LMS) para ensinar a arte da programação de computadores através de "
#~ "exercícios interativos. Ele oferece um amplo conjunto de exercícios  "
#~ "variados, permitindo que você pratique no seu ritmo."

#~ msgid "Pick a classical lesson"
#~ msgstr "Escolha uma lição clássica"

#~ msgid ""
#~ "<a href=\"plm://lessons.welcome\">Welcome lesson</a> This lesson is "
#~ "intended to lead the first steps in programming of absolute beginners."
#~ msgstr ""
#~ "<a href=\"plm://lessons.welcome\">Lição de boas vindas</a> Esta lição é "
#~ "feita para guiar os primeiros passos em programação para o completo "
#~ "iniciante."

#~ msgid ""
#~ "<a href=\"plm://lessons.maze\">Escape the maze</a> Will you escape the "
#~ "mazes?"
#~ msgstr ""
#~ "<a href=\"plm://lessons.maze\">Fugindo do labirinto</a> Você consegue "
#~ "fugir do labirinto?"

#~ msgid ""
#~ "<a href=\"plm://lessons.bat.string1\">String lesson</a> A bunch of "
#~ "exercises on strings."
#~ msgstr ""
#~ "<a href=\"plm://lessons.bat.string1\">Lição sobre strings</a> várias "
#~ "lições sobre  strings."

#~ msgid ""
#~ "<a href=\"plm://lessons.sort\">Sorting lesson</a> This short lesson "
#~ "proposes to discover the classical sorting algorithms by practice."
#~ msgstr ""
#~ "<a href=\"plm://lessons.sort\">Lição sobre ordenação</a> Esta pequena "
#~ "lição se propõe a descobrir os algoritmos clássicos de ordenação na "
#~ "prática."

#~ msgid ""
#~ "<a href=\"plm://lessons.recursion\">Recursion lesson</a> Build some "
#~ "classical geometric figures through recursion."
#~ msgstr ""
#~ "<a href=\"plm://lessons.recursion\">Lição sobre recursão</a> Constrói "
#~ "algumas figuras geométricas clássicas através de recursão."

#~ msgid ""
#~ "<a href=\"plm://lessons.lightbot\">LightBot</a> In this little game, you "
#~ "must program graphically a little robot to instruct it how to switch the "
#~ "lights off. It is a brain teaser for programmer."
#~ msgstr ""
#~ "<a href=\"plm://lessons.lightbot\">LightBot</a> neste pequeno jogo, você "
#~ "deve programar graficamente um pequeno robô dizendo para ele como "
#~ "desligar as luzes. É de rachar a cuca do programador."

#~ msgid ""
#~ "This isn't a real lesson, it's here that you can select a lesson among "
#~ "others."
#~ msgstr ""
#~ "Esta não é uma lição real, está aqui para que você possa selecionar uma "
#~ "lição dentre outras."

#~ msgid ""
#~ "If you prefer not to post your successes online, just change the relevant "
#~ "properties in your configuration file, that is [!configfile] in your case."
#~ msgstr ""
#~ "Se você prefere não publicar seus sucessos online, simplesmente mude as "
#~ "propriedades relevantes no seu arquivo de configuração, que é [!"
#~ "configfile] no seu caso."

#~ msgid "forward()[!java];[/!]"
#~ msgstr "avançar()[!java];[/!]"

#~ msgid ""
#~ "forward()[!java];[/!]\n"
#~ "forward()[!java];[/!]\n"
#~ "left()[!java];[/!]\n"
#~ "forward()[!java];[/!]\n"
#~ "forward()[!java];[/!]\n"
#~ "left()[!java];[/!]\n"
#~ "forward()[!java];[/!]\n"
#~ "forward()[!java];[/!]\n"
#~ "left()[!java];[/!]\n"
#~ "forward()[!java];[/!]\n"
#~ "forward()[!java];[/!]\n"
#~ "left()[!java];[/!]"
#~ msgstr ""
#~ "avançar()[!java];[/!]\n"
#~ "avançar()[!java];[/!]\n"
#~ "esquerda()[!java];[/!]\n"
#~ "avançar()[!java];[/!]\n"
#~ "avançar()[!java];[/!]\n"
#~ "esquerda()[!java];[/!]\n"
#~ "avançar()[!java];[/!]\n"
#~ "avançar()[!java];[/!]\n"
#~ "esquerda()[!java];[/!]\n"
#~ "avançar()[!java];[/!]\n"
#~ "avançar()[!java];[/!]\n"
#~ "esquerda()[!java];[/!]"

#~ msgid "Color.YELLOW"
#~ msgstr "Cor.AMARELO"

#~ msgid "Color.RED"
#~ msgstr "Cor.VERMELHO"

#~ msgid "Color.BLUE"
#~ msgstr "Cor.AZUL"

#~ msgid "Color.GREEN"
#~ msgstr "Cor.VERDE"
