Revista PROGRAMAR nº 43 — Dezembro 2013

Nesta edição continuaremos também a premiar os autores dos três melhores artigos, dado o sucesso nas edições anteriores. E os leitores devem dar a sua opinião para que possamos premiar correctamente. Para isso vote em http://tiny.cc/ProgramarED43_V

Assim nesta edição trazemos até si, como artigo de capa, um artigo sobre Interação com voz no Android: Aprenda a desenvolver um aplicativo com interação por voz no Android.

Nesta 43ª edição pode ainda encontrar os seguintes artigos:

«Out of sync»

Fora de Sincronismo… Com o Natal quase a chegar e com cheiro “sabor a Natal” já no ar, chegamos a mais uma edição da Revista PROGRAMAR.Como tem vindo a ser “tradição” desde que escrevo os editoriais, escolho como titulo um código de erro e neste caso escolhi um genérico “out of sync”, por me parecer o mais adequado nesta altura em que tudo “parece estar fora de sincronismo”, desde o clima, até à tecnologia, com tantos lançamentos de novas tecnologias, consolas, updates de software, etc… Continuar a ler

Interação com voz no Android: Aprenda a desenvolver um aplicativo com interação por voz no Android

Do que se trata no artigo: Este artigo demonstra os passos básicos para desenvolver um aplicativo que utiliza a interação por voz, posterior reconhecimento do que foi dito e com isso realizar uma determinada acção (no nosso exemplo, faremos uma simples mudança na interface).

Em que situação o tema é útil: Será útil para os programadores que desejem ter uma experiência inicial com a API de reconhecimento de voz.

Desenvolvendo aplicações para Android: A utilização de smartphones tem crescido no mundo todo, tendo como um dos principais sistemas operativos o Android, o qual conta com diversas aplicações para atrair novos utilizadores. Pensando nisso, a Google disponibilizou o Android SDK, uma plataforma gratuita para o desenvolvimento de aplicações. Este artigo apresenta os passos necessários para o desenvolvimento de uma aplicação que utiliza uma busca por voz, e através dessa busca retorna resultados que serão analisados e uma nova acção será tomada de acordo com essa análise.

Continuar a ler

Introdução ao Web2py Parte 2

Neste artigo, vou aprofundar um pouco mais a framework web2py, na sua aplicação mais prática, uma vez que se trata de um artigo de continuidade do anterior onde abordei a instalação da framework tanto em ambiente Windows como em ambiente GNU/Linux, e a construção de uma primeira aplicação com acesso a base de dados, utilizando a DAL fornecida pelo web2py.

Uma vez que estamos a falar num artigo de continuação, vou tentar debruçar-me mais sobre a construção de aplicações em web2py e menos sobre alguns aspectos da linguagem.

A framework web2py tem como base a linguagem Python no desenvolvimento dos models, controllers, views, embora utilize uma sintaxe de Python ligeiramente modificada nas views de forma a tornar o código mais legível, sem impor quaisquer restrições sobre o uso correcto Python.

O propósito das views é “embutir” código Python, em documentos HTML. Esta tarefa por norma é bastante árdua e complexa, além de apresentar problemas complexos de implementação

A ferramenta gengetopt

Os parâmetros de linha de comando constituem um poderoso mecanismo de interação, especialmente nas aplicações de modo consola/terminal que funcionam em modo de texto. De facto, através dos parâmetros da linha de comando, torna-se possível especificar múltiplos comportamentos e funcionalidades para uma mesma aplicação de modo consola/terminal, estando cada comportamento associado a um dado conjunto de parâmetros passado pela linha de comando. Por exemplo, o bem conhecido comando ls, cuja função primária no UNIX é a listar nomes de ficheiros e diretórios, disponibiliza na versão GNU mais de 50 parâmetros da linha de comando, desde o -a (mostra todos os ficheiros) ao -x (mostra a listagem por linhas). Curiosamente, existe ainda a opção -X (maiúscula) que lista os ficheiros por ordem alfabética das respetivas extensões.

Este artigo mostra como se usa e quais as mais-valias da ferramenta gengetopt para o tratamento semi-automatizado das opções passadas pela linha de comando em programas escritos em linguagem C que se destinam a ambientes Linux.

Implementação de Árvores de Vantagem

Nesta edição, em que estamos em pleno Outono e muitas das nossas ruas se cobrem de mantos de folhas, propomos ao leitor uma vista mais reforçada às árvores… Mais concretamente pelas árvores binárias e pelas árvores de vantagem.

Os que me conhecem, sabem que esta foi uma temática que me deu algumas dores de cabeça, mas no fim de contas, este foi um assunto que confesso, ter valido a pena ter aprofundado.

Antes de prosseguirmos vamos recordar, ao leitor, uma característica fundamental das árvores binárias. Este esquema de representação de dados torna-se bastante útil quando queremos armazenar um grande número de dados, contudo as árvores binárias são sempre ordenadas tendo em consideração uma chave ou atributo específico. Todos os elementos à esquerda de um elemento da árvore têm uma chave inferior ao elemento em que estamos e todos os elementos à direita têm uma chave superior.

No exemplo implementado para este artigo, simulámos uma aplicação disponível numa rede de stand de automóveis, em que cada automóvel que essa rede detém, é identificado por um número de série (único), pela cor, marca, ano e ainda qual o número de jante que esse automóvel tem.

Listas Duplamente Ligadas

Conforme o prometido no artigo Listas Simplesmente Ligadas e Exemplo de Implementação em C da passada edição, aqui está o artigo das listas duplamente ligadas. Uma vez que este se engloba num mesmo tema, certos aspectos podem tornar-se um pouco repetitivos, isto porque a única diferença no nó entre os dois tipos de listas referidos é um apontador adicional nas segundas.

Para começar, vamos estudar as vantagens das listas duplamente face às simplesmente ligadas. Se bem se lembram uma lista simplesmente é possível percorre-la apenas num sentido. Nas que vamos ver de seguida é possível percorrê-las em ambos os sentidos e é essa a principal diferença entre o modo de funcionamento das segundas. Esta diferença é muito vantajosa. Imaginemos que estamos no nó número 1000 e queríamos imprimir o conteúdo do nó 999, com as listas simplesmente ligadas teríamos de voltar à cabeça da lista e percorrer os 999 nós até chegarmos ao pretendido, com as listas duplamente ligadas basta andar uma posição para trás.

O que muda na estrutura de cada nó relativamente às simplesmente ligadas, como já foi referido, é apenas a adição de um novo apontador, o qual irá apontar para o elemento da posição imediatamente anterior da lista.

Já que estamos a falar de apontadores convém alertar para uma situação muito específica desta estrutura de dados. Vamos focar-nos na primeira posição da lista. Se todas as posições têm um apontador para os elementos anterior e posterior, como será que definimos o apontador para elemento anterior ao da cabeça?

Expande o Teu Mercado, Globalizando a Tua App!

Uma das atracções da Store do Windows é a possibilidade de disponibilizar a nossa aplicação, não apenas em Portugal, mas também em qualquer um dos mais de 200 países em que a Store de Windows está disponível. Se o leitor considerar que o número de habitantes de Portugal ronda os 10,6 milhões de habitantes, e Reino Unido, por exemplo, cerca 61,7 milhões, França 64,3 milhões, ou EUA 300 milhões, podemos ver a diferença do potencial de mercados. No entanto, para tal ser possível, é necessário disponibilizar a aplicação nas várias línguas. Neste artigo vou falar de como podemos desenvolver a aplicação de forma a podê-la traduzir nas várias línguas, para que a aplicação detecte a língua do Windows e mude automaticamente os textos para a linguagem correspondente, sem intervenção do utilizador.

JSF – Parte 1

O JSF (JavaServer Faces) é uma especificação para criar interfaces gráficas de aplicações web. É um standard do mundo Java EE, atualmente na versão 2.2. A ideia base é, após alguns anos de evolução (esta especificação nasceu em 2004), sistematizar o que as interfaces web têm em comum, apoiando o programador nesse sentido. Com relativa facilidade permite desenvolver interfaces web ricas e interativas (cujas aplicações são denominadas RIA – Rich Internet Application). É server-side e totalmente orientada ao componente: para além de uma série de componentes (abstrações dos componentes HTML), prevê validadores, gestão de estado, conversores, modelo de eventos, etc. Entenda-se por componente (UI) um “pedaço” reutilizável da interface (ex: dropdown box).

Continuar a ler

Tecnologias de Programação de Jogos

Comecei a leitura desde livro com um pé atrás. No índice era mencionado XNA (coisa que a meu ver cria maus hábitos aos iniciantes) e assim um livro que à primeira vista me parecia ser um livro de iniciação rapidamente me surpreendeu pela positiva, não só não era o caso como era um excelente ponto de referência acompanhado de exemplos de várias linguagens e ferramentas mais usadas pela indústria de entretenimento.

Após uma análise atenta, vejo um livro que se destaca pela divisão em três partes de forma a abordar o leitor independentemente da sua formação específica. É um livro que como muitos outros, inicia com uma introdução histórica de referência que tem sempre o seu interesse, um guia organizacional (a meu ver de leitura obrigatória, mesmo para o programador experiente) e uma compilação de tutoriais de introdução às principais técnicas e ferramentas atualmente mais utilizadas na indústria. Com uma estrutura concisa e de fácil leitura, apresenta ainda um sistema de diagramas e pequenos exemplos de código, claros o suficiente para facilmente dispensar o uso da cor sem comprometer a compreensão dos mesmos. Chamou-me em especial à atenção as notas de leitura recomendada no final de cada capítulo, como uma ideia brilhante, dado o quão vasto é o tema de programação de jogos.

Continuar a ler