Lua – Tables

Dando continuidade ao nosso tutorial de Lua, hoje falaremos de Tables.

Tables são estruturas multidimensionais que permitem o armazenamento de dados diversos.

Sua declaração é semelhante a de variáveis.

O acesso a estes valores na table é feito a partir da utilização de colchetes.

Uma outra forma de atribuir valores a uma table é durante a sua declaração.

Funções Básicas

table.concat()

Concatena os ítens da tabela.

table.insert()

Insere um valor na tabela.

É possível ainda, incluir o valor em uma posição determinada da tabela.

Você pode ver que um novo texto foi incluído na primeira posição da table. O texto que originalmente estava na primeira posição passou a segunda posição.

table.maxn()

Retorna o maior índice numérico positivo da tabela. Caso a tabela não possua índice positivo, será retornado zero.

table.remove()

Revome da table o último elemento.

É possível ainda informar qual o índice do elemento que deverá ser removido.

No exemplo anterior, removemos o segundo elemento da table.

table.sort()

Ordena os elementos da table

 

Algumas destas funções permitem a inclusão de outros parâmetros, aumentando a gama de opções, no entanto, iremos no restringir ao básico para desenvolvimento.

No próximo post, falaremos sobre operadores.

Para saber mais:

Lua – Variáveis e Estruturas de Controle

Manual de Referência de Lua – Table

Sobre

Desenvolvedor de software nas horas vagas.

Apesar de não parecer, eu vi os dinossauros…
Aprendi Auto Program, Pascal, Clipper e outras velharias (Dataflex passou perto).

Trabalhei por anos com Delphi e ASP (não o .net), Oracle e SQL Server. Por curiosidade pura acabei por aprender um monte de outras coisas como Linux (SO eleito com maioria de votos la em casa.), PostgreSQL, MySQL, Ruby e mais um monte de outras sopas de letrinhas. Mas como é sabido, conhecimento é a única coisa que não ocupa espaço.

Me graduei em 2004 em Ciências da Computação pela Universidade Gama Filho. Em 2009 terminei minha pós graduação em Engenharia de Sistemas pela Universidade Federal do Rio de Janeiro.

Atualmente trabalho com TV Digital, desenvolvendo aplicações de t-learning. Assunto este que tenho um grande interesse desde os tempos da graduação.

Fora isso, sou aficionado por cinema, música, séries, quadrinhos e mais um monte de nerdisses que não lembro no momento…

Trabalhos Acadêmicos

Engenharia de Software
Instituição: Escola Politécnica – UFRJ
Ano: 2009

Banco de Dados
Professor: Sérgio Palma Medeiros
Título: Implantação de ERP
Apresentação
Slide 30 – Vídeo – SAP – 8.2 MB
Slide 31 – Vídeo – Nexedis – 2.87MB


Engenharia de Software
Professor: Geraldo Xexéo
Título: Volere – Elicitação de Requisitos
Exemplo 1
Exemplo 2


Análise e Projeto Orientado a Objetos
Professor: Eduardo Bezerra
Título: DSL – Linguagens Específicas de Domínio
Apresentação

Review: XPS-1000 da Proview – Versão 1.6.20

Recentemente escrevi um review do XPS-1000. Hoje, um mês depois da postagem, pude testar uma nova versão do middleware instalado no aparelho e preciso dizer que estou muito surpreso com a evolução entre a versão anterior e a versão atual.

O middleware disponibilizado no XPS está bem pareado com o middleware desenvolvido pela comunidade Ginga NCL. Os módulos canvas e event estão tão funcionais quanto a versão disponibilizada nos STBs virtuais.

Aplicações desenvolvidas totalmente no STB virtual tendem a rodar sem muitos problemas no XPS. Na verdade, dois problemas foram identificados. Na classe key do módulo event o tipo release não está implementado e a codificação de caracteres não permite apresentação de caracteres especiais no módulo canvas.

Segundo a RCASoft, responsável pelo desenvolvimento do middleware, a codificação para caracteres especiais funciona no XPS, no entanto, até a publicação deste post, não tive uma resposta para a aplicação teste para a verificação deste problema.

Ainda segundo a RCA, esta versão do middleware já possui a classe tcp implementada, o que permitirá a utilização do canal de retorno. Assim como a codificação de caracteres, não consegui testar e áté o momento, não tive uma resposta sobre o assunto.

Em resumo, o XPS-1000 deu um grande salto de melhoria e hoje já pode ser considerado como um bom ambiente de testes para aplicações NCLua.

Lua – Variáveis e Estruturas de Controle

Após o nosso primeiro post que explicava como preparar um ambiente para desenvolvimento em Lua, iremos falar hoje sobre variáveis e estruturas de controle.

Variáveis

Variáveis, conforme descrição do Wikipedia, é um objeto que representa valor ou uma expressão matemática.

Não existem dados primitivos em Lua, portanto, ao declarar uma variável, ela poderá ser utilizada tanto para dados númericos, como texto e valores booleanos. A única exeção são tabelas que precisam ser declaradas de uma forma especial.

Em Lua temos três tipos de variáveis: Globais, Locais e Table. Toda variável, ao ser declarada é determinada como global, a não ser que, seja explicitamente definida como local.

Antes da primeira atribuição, uma variável possui o valor nil. Sendo assim, podemos realizar o seguinte teste:

Ao executar o script acima, percebemos que no primeiro print, a variável possui valor nulo. No segundo print, a variável possui o valor determinado na segunda linha.

Variáveis locais tendem a existir apenas dentro do seu escopo. Sua declaração é definida pela palavra chave local. Um exemplo de declaração de uma variável local seria:

Uma outra forma de declarar variáveis globais e locais seria atribuindo o valor durante a declaração:

É possível ainda atribuir valores a várias variáveis em uma mesma linha:

No exemplo acima atribuimos dois textos as duas primeiras variáveis e um valor numérico na última variável

A table por ser uma estrutura especial, dedicaremos um post futuro apenas para ela.

Estruturas de Controle

Lua possui quatro estruturas de controle: if, while, repeat e for

if

A estrutura if, executa um bloco de comandos apenas se uma sentença é verdadeira. Sua sintaxe é a seguinte:

Um exemplo simples é testar se o conteúdo de uma variável maior ou menor que um determinado número.

while

A estrutura while, irá executar o bloco de comandos enquanto a sentença for verdadeira. Sua sintaxe é a seguinte:

No exemplo a seguir, o bloco de comando irá ser executado enquanto o valor da variável for menor que 10.

repeat

A idéia do repeat é a mesma do while, no entanto, o teste para verificação se a sentença é verdadeira é realizado após a execução do bloco de comandos, ou seja, caso a sentença seja verdadeira inicialmente, o bloco de comandos será executado pelo menos uma vez.

Sabendo desta diferença, vamos executar o mesmo exemplo anterior, adaptado para o repeat.

Compare os dois exemplos e veja se o resultado final, apesar da semelhança das estruturas, é o mesmo.

for

A estrutura de controle for irá executar um bloco de comandos, enquanto uma variável de controle varia de acordo com uma progressão aritimética. Sua sintaxe é:

Um exemplo simples é a interação de uma variável dentro de um intervalo numérico e a impressão do seu valor, assim como fizemos no while e no repeat.

Durante este post, utilizamos algumas funções, que você pode não estar familiarizado, vamos a elas:

print() – Esta função é utilizada para imprimir na tela o valor de uma variável ou uma string.
io.read() – Esta função inclui uma pausa na execução do programa e aguarda o pressionamento de uma tecla para retomar a execução da aplicação.

Os dois pontos, utilizados na maioria dos exemplos, é o operador que indica concatenação.

Com isso finalizamos mais um post. No próximo post falaremos de table.

Saiba Mais

Preparando um ambiente de desenvolvimento
Manual de Referência Lua

Lua – Preparando um ambiente

Este é o primeiro da nossa série de posts sobre Lógica de Programação com a linguagem LUA. O intuito é fazer um bom material pra quem está começando. Se o FeedBack for bom, podemos aprofundar mais no “curso”.

Introdução

Lua é com certeza uma das linguagens de programação mais simples para aprendizado. Leve e rápida, é ideal para a utilização em sistemas embarcados.

Com a adoção do Lua como uma das linguagens para o SBTVD e a inclusão como uma das linguagens disponíveis nos celulares com Android, a demanda por profissionais qualificados será grande, por isso temos que nos preparar.

Acompanhando as discussões na lista Lua-BR, recem criada por conta do Lua Workshop 2009, temos notado um grande apelo por tutoriais que expliquem a linguagem. Com isso decidimos escrever uma série de artigos para apresentação da linguagem. Sendo assim, vamos ao que interessa.

Preparando o Ambiente

A instalação do Lua é simples. Utilizaremos como base o Windows e a distribuição Ubuntu.

Windows
1. Realize o downlod do Lua para Windows do Site Lua Forge.
2. Execute o arquivo como um instalador padrão do Windows: Next – Next – Finish.
2.1 Ao final, o instalador dá a opção de rodar os exemplos. Se você for um autodidata, recomendo que dê uma olhada nos exemplos para começar a se ambientar com a linguagem. Não se preocupem em fazer N programinhas para se aperfeiçoar, traremos exemplos bem legais para isso.
3. Para testar a instalação, abra o prompt do DOS e execute o comando lua.

O interpretador Lua deverá ser iniciado:

Microsoft Windows XP [versão 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\luiz>lua
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
>

4. O Lua está instalado e pronto para utilização.

Ubuntu
1. Na linha de comando, execute o comando sudo apt-get install lua
2. Para testar a instalação, na linha de comando execute o comando lua.

O interpretador Lua deverá ser iniciado:

[root@gingavm ~]# lua
Lua 5.1.2 Copyright (C) 1994-2007 Lua.org, PUC-Rio
>

IDE
Para a edição dos códigos lua você poderá utilizar qualquer editor de texto. A instalação do Lua para Windows também instala o editor SciTE.

Preferimos o Geany como editor. Ele funciona tanto no Windows quanto no Linux e sua instalação é bem simples.

No Windows, basta seguir o procedimento padrão: Next – Next – Finish.

No Linux basta executar na linha de comando sudo apt-get install geany.

Hello World
Como primeiro exercício, iremos criar um Hello World. Com o Geany aberto, digite a linhas de código a seguir:

Na barra de ferramentas do Geany, clique no botão Executar. O resultado será esse:

Com isso finalizamos este primeiro post. Seu ambiente está configurado e funcional. No próximo post, explicaremos declaração de variáveis, atribuição de valores, estruturas condicionais e laços de repetição. Não percam!

1º Simpósio Internacional de TV Digital

A Comissão Organizadora do I Simpósio Internacional de Televisão Digital comunica que os prazos para envio de resumos e de artigos foram estendidos. Os resumos, de acordo com as normas disponíveis no site do evento, podem ser enviados até 17 de setembro. O prazo para envio de trabalho final (em todos os casos) passa a ser 18 de outubro.

Os aceites serão enviados em duas datas diferentes: até 17 de agosto (para aqueles que enviaram até dia 09 de agosto) e até 24 de setembro (para aqueles que enviarem até 17 de setembro).

Mais informações sobre a inscrição de trabalhos e programação completa, confira no site do evento, em www.faac.unesp.br/simtvd .

Programação Confirmada:

18 de novembro – quarta-feira (Teatro Municipal de Bauru)
19h – Recepção dos participantes
19h30 – 20h – Sessão de Abertura
20h – 21h – Conferência de Abertura – “Panorama da Televisão Digital no Brasil: perspectivas e embates” com Maurício Kakassu (Superintendente do Fórum SBTVD)

19 de novembro – quinta-feira (Auditório A1)
10h – 12h – Mesa 01: Comunicação, Produção de Conteúdos e Políticas Públicas: desafios para Televisão Digital no Brasil – Fernando Dias (Presidente da ABPI – TV)
14h – 16h – Mesa 02: Tecnologias educacionais para a Televisão Digital – Fernando Spanhol (Diretor da ABED), Maria Teresa Quiroz (Universidade de Lima, Peru), Márcio Pereira (Canal Futura)
20h30 – 22h30 – Mesa 03: Padrão do Sistema Digital Brasileiro: convergência, interatividade em multiplataformas – Guido Lemos (UFPB), Luis Valle (Universidade de Palermo, Argentina), Fernando Bittencourt (Diretor de Tecnologia da TV Globo)

20 de novembro – sexta-feira (locais a serem confirmados)
8h – 10h – Relatos de Pesquisa
16h – 18h – Grupos de Trabalho
18h – Plenária de Encerramento

Mesas temáticas e oficinas estão sendo agendadas para sexta-feira, 20, às 10h e 14h.

O evento está sendo promovido pelo Programa de Pós-Graduação em Televisão Digital: Informação e Conhecimento (UNESP – Bauru). Será realizado nos dias 18, 19 e 20 em Bauru – SP.

Contato: 014 – 3103-6168
simtvd2009@faac.unesp.br

Review: XPS-1000 da Proview

Acabei de responder a um e-mail da lista de discussão de TV Digital sobre o Set-top Box (STB) XPS-1000 da proview e decidi, a partir do e-mail, escrever esta análise.

Antes de falar sobre o XPS, vamos entender oque é o STB:

Set-top Box (STB) ou conversor é um termo que descreve um equipamento que se conecta a um televisor e a uma fonte externa de sinal, e transforma este sinal em conteúdo no formato que possa ser apresentado em uma tela.

A fonte deste sinal pode ser um cabo ethernet, (veja triple play), uma antena de satélite, um cabo coaxial (veja Televisão a cabo), uma linha telefônica (incluindo conexões DSL), ou até mesmo uma conexão de uma antena VHF ou UHF.

Fonte: Wikipedia

No caso do SBTVD, a conexão realizada é feita a partir de uma antena UHF. Sabendo disso, vamos ao que interessa.

O XPS-1000 é o primeiro STB para o SBTDV a chegar ao mercado com suporte a interatividade. O aparelho chega com o status de STB mais barato do mercado e realmente ele consegue ser feliz nesta tarefa. Em uma consulta rápida no boa dica encontramos o aparelho por R$ 299,00, no Rio de Janeiro.

O aparelho possui 3 saidas de vídeo (HDMI, Vídeo Componente e Vídeo Composto), 2 saidas de áudio (Coaxial e Ótico) mais uma porta ethernet e uma USB.

Caso o consumidor possua uma TV HDMI, terá uma bela surpresa ao abrir a caixa: o aparelho vem apenas com os cabos de Vídeo Componente.

A caixa possui ainda fonte de alimentação e uma antena que certamente deverá ser substituida caso o local onde será instalado o aparelho possua muitos obstáculos.

No meu caso, a opção pelo XPS era justamente a possibilidade de se testar aplicações interativas que só foi possível desenbolsando mais R$ 200,00 pela a atualização. No final das contas, o barato não é tão barato, principalmente se levarmos em consideração que o aparelho é instável, lento na transição de menus e o midleware instalado não está implementado em sua totalidade. Chego a dizer que não está implementado nem mesmo 25% do que está descrito na norma.

Assistência técnica hoje é inexistente, não é possível encontrar lugar que realize manutenção no aparelho no Rio de Janeiro. O suporte por e-mail é fraco e desconhece o produto. Cheguei a esperar mais de sete dias para obter uma relação de melhorias/implementações em uma atualização do firmeware.

É comum que o aparelho trave e seja necessário retirá-lo da tomada. A velha estória de sair e entrar no fusca para ver se pega.

Ao final de 2 meses o aparelho apresentou defeito e até o momento não encontramos um local que realize a assistência. Antes que alguém diga que foi azar meu, conheço casos de pessoas que tiveram problemas no aparelho após 2 semanas de uso apenas como decodificador.

A dica que fica é: para quem pretende desenvolver para TV Digital com Ginga-NCL, vale mais a pena pegar um computador que esteja encostado e instalar o Ginga-NCL que está disponível no portal do software público. Na pior das hipóteses você ganhará conhecimento.

PUC-Rio prepara o LUA Workshop 2009

Nos dias 06 e 07 de outubro, será realizado na PUC-Rio o LUA Workshop 2009. O objetivo do evento é reunir a comunidade, discutir e divulgar a linguagem.

As inscrições deverão ser realizadas através do e-mail lua.workshop@gmail.com com a seguinte ficha de inscrição:

Lua Workshop 2009 – Formulário de inscrição
Nome, afiliação (empresa/universidade/organização), email
Por que você gostaria de participar do workshop?
Se você gostaria dar uma palestra, informe título e resumo

O evento está dividido entre as seguintes atividades:
– LUA Games 2009. Um pré-evento ao SBGames 2009
– Palestra plenária com Roberto Ierusalimschy, principal arquiteto da linguagem.
– Palestra plenária com Jim Whitehead II, autor do livro World of Warchaft Programming.
– Palestras de membros da comunidade.
– Mesa redonda.

Para mais informações, acesse o site do evento. http://www.lua.org/wshop09.html.