DATA WIRES Com a excepção do bloco de espera (wait block), todos os blocos de programação podem usar fios de dados (data wires) e alguns blocos requerem o uso de fios de dados. Trabalhar com os fios de dados é mais difícil do que trabalhar com blocos de programação. Uma tentativa de usar um fio de dados sem perceber bem o conceito do mesmo pode facilmente levar a problemas no programa. Primeiramente, o fundamento dos fios de dados são os data hubs (centros de dados), que podem ser facilmente acedidos através de um clique na pequena aba no canto inferior esquerdo de um bloco. Alguns blocos imediatamente mostram todos ou parte do seu centro de dados (data hubs) quando são postos na área de trabalho, enquanto que outros blocos têm o seu data hub fechado por defeito. A Figura 1 mostra o mesmo bloco, primeiramente com o data hub fechado e a seguir com ele aberto. Figura 1 O mesmo bloco motor com o data hub fechado e aberto Ao longo de cada data hub existe um ou mais data plugs ( tomadas da dados) que vêm em dois principais tipos: tomadas de entrada (input plugs) e tomadas de saída (output plugs). Input plugs encontram-se sempre do lado esquerdo de um data hub e os output plugs encontram-se sempre do lado direito. Um input plug recebe dados de outros blocos através de um data wire. Um output plug envia dados para outros blocos através de um data wire. Na perspectiva de cada bloco, um data wire conectado a um dos seus input plugs é um input data wire (fio de dados de entrada) e um data wire conectado a um dos seus output plugs é um output data wire (fio de dados de saída). Nem todos os blocos têm ambos input e output plugs nos seus data hubs e o tipo e número de plugs pode depender da configuração do bloco. Por
exemplo, o bloco loop não possui data hubs mas podem aparecer plugs para certas configurações deste bloco. Posicionando o cursor por cima de um data plug, este torna-se num rolo. Ao clicar no plug uma vez prende um data wire ao cursor e movendo o cursor para fora dessa zona desenrola o data wire. Ao clicar num data plug noutro bloco completa a conexão do data wire. Mesmo que criar um data wire seja fácil, criar um data wire com sentido e válido requer um conhecimento de quatro conceitos: características do data plug, o caminho do fio, transmitir tipos de dados e fios de dados quebrados (broken data wires). CARACTERÍSTICAS DO DATA PLUG Um data plug tem três características que determinam como é usado. Primeiro, um data plug está relacionado com um aspecto particular do bloco, simbolizado pelo ícone no data hub do bloco. Por exemplo, o primeiro par de input e output plugs do bloco move é denominado de Left Motor Plug e está simbolizado por um plug com a letra L (visível na Figura 2). Segundo, um data plug usa um tipo específico de dados: número, lógico ou texto. Dados numéricos (number data) simplesmente consistem em números como 42, 25.1 ou -150. Dados lógicos (logic data) envolvem apenas dois valores: verdadeiro ou falso. Dados textuais (text data) consistem em caracteres como letras, sinais de pontuação e até números, como por exemplo exemplo, ex123 ou!5kl. Podemos referir um plug como sendo um plug numérico, um plug lógico ou um plug textual caso use dados numéricos, dados lógicos ou dados textuais, respectivamente. Em terceiro lugar, um data plug normalmente aceita apenas uma certa variedade de valores. Por exemplo, o Left Motor Plug aceita dados numéricos apenas entre 1 e 3. Se o numero dado for 1, o motor esquerdo vai ser na porta de saída A; se for 2, o motor esquerdo vai ser na porta de saída B; se for 3 o motor esquerdo vai ser na porta de saída C. Quando um input plug recebe um dado que está fora do seu alcance, ele ignora-o caso o seu alcance consista em apenas alguns números (ex.: 1-3) e caso o alcance seja um número grande de valores (ex.: 1-100), ele muda os dados de forma a que se ajustem dentro do alcance. Para determinar estas três peças de informação sobre um data plug, é necessário consultar as tabelas dos data hubs dos blocos. Figura 2 Exemplo simples de uma aplicação de um data wire
O CAMINHO DO FIO Quando um pedaço de dado inicialmente sai de um output plug e viaja sobre um data wire para um ou mais blocos, está a seguir um wire path (caminho do fio). Um wire path pode consistir em apenas um data wire ou múltiplos data wires. De forma a serem criados wire paths funcionais, devem ser seguidas duas orientações. Primeiro, cada wire path deve conectar a pelo menus um output plug e um input plug. Não se pode conectar data wires apenas a input plugs nem apenas a output plugs. Mais ainda, um wire path deve sempre começar num output plug sem o correspondente input plug, ou seja, um plug em que apenas temos o lado direito como capaz de estabelecer ligação com outro bloco. Em segundo lugar, um wire path pode ser estendido para poder chegar a mais que um bloco usando os pares de input e output plugs. Na Figura 3 está um exemplo disso mesmo em que o primeiro bloco move recebe dados de um bloco variável e esses dados passam inalterados do input plug do bloco move para o seu correspondente output plug e depois outro data wire está conectado a esse output plug que envia esses dados para outro bloco move. Não se pode usar um output plug se este tem um correspondente input plug sem um data wire conectado a ele; o output plug serve apenas para transmitir input data (dados de entrada) para outros blocos. Caso hajam plugs não utilizados depois de serem feitas as conexões dos data wires, pode-se carregar novamente na aba do data hub do bloco para esta diminuir de tamanho e apenas mostrar os data plugs que estão a ser utilizados. Por vezes isto reposiciona secções dos wire paths mas os seus efeitos mantêm-se. Em resumo, o wire path da Figura 3 consiste em dois data wires que transmitem dados para dois blocos. Por exemplo, se o bloco variável enviar o valor 3 (dado numérico), ambos os blocos move receberiam esse valor. Teoricamente, pode-se estender um data wire para um número ilimitado de blocos. Figura 3 Exemplo de um wire path a ser estendido
TRANSMITIR TIPOS DE DADOS Um data wire deve-se conectar a um plug do mesmo tipo de dados. Por exemplo, um data wire conectado a um plug numérico de um bloco apenas se pode conectar a plugs numéricos de outro bloco. Pode-se verificar o tipo de dados de um plug consultando a tabela do data hub do bloco. De qualquer das formas, os data wires são coloridos. Existem quatro cores diferentes para data wires: Amarelo Corresponde a um data wire que transmite dados numéricos. Verde Corresponde a um data wire que transmite dados lógicos. Laranja Corresponde a um data wire que transmite dados textuais. Cinzento Corresponde a um broken data wire que é explicado a seguir. FIOS DE DADOS QUEBRADOS (BROKEN DATA WIRES) Um data wire quebra quando se faz uma conexão inválida entre dois data plugs e não se pode fazer o download do programa para o NXT se o programa tiver data wires quebrados. Data wires quebrados geralmente resultam de três tipos de erros: desencontro do tipo de dados, falta de input ou demasiados inputs. Caso seja criado um data wire quebrado, é aconselhável desfazer a acção em vez de tentar apagá-lo pois isso pode resultar num problema mais grave. Desencontro do tipo de dados: Este é o tipo mais comum de erro num data wire. Um data wire tem sempre que se conectar plugs do mesmo tipo de dados. Falta de input: Outro erro comum é ligar um data wire a um output plug quando esse output plug tem um input plug correspondente que não recebe dados. Com um par correspondente de input e output plugs, o output plug apenas pode enviar dados recebidos pelo input plug. Quando se quer começar um wire path, utiliza-se um output plug sem um input plug correspondente. A Figura 4 representa este caso. Figura 4 Exemplo de falta de input
Demasiados inputs: Quando um input plug recebe dados de mais do que um output plug, o wire path contêm demasiadas entradas. Um wire path pode-se conectar a múltiplos input plugs mas deve começar em apenas um output plug. A Figura 5 representa este caso. Figura 5 Exemplo de demasiados inputs