Void Vision()

Tecnologia no mundo real

Relax… Dontpad.com

O Dontpad é um site novo e com uma proposta bastante interessante: ser útil mesmo tendo uma interface extremamente simples.
Você já viu algum site sem botões, abas, menus, imagens? O Dontpad não possui nada disso, apenas uma grande caixa de texto. E o site consegue fazer milagres mesmo tendo só isso.
Como o nome sugere, o Dontpad é uma versão do Notepad (Bloco de Notas), mas totalmente na nuvem. Isso significa que o que você escrever lá pode imediatamente ser lido em outro computador.
O site é tão simples, tão simples, que nem login você precisa fazer. Ele funciona de modo diferente. Por exemplo, você quer passar uma receita de bolo para a sua avó, que está em outro computador. Digite então em seu navegador: dontpad.com/meunome/receitadavovo e escreva. Em seguida, envie este link para a sua avó. O único pré-requisito é que sua avó saiba usar a internet.
Sabe quando você está fazendo algo importante num documento de Word, pisca a luz e você perde tudo? Com o Dontpad este problema não existe, pois o conteúdo da caixa de texto é salvo na hora, a cada letra digitada. Se faltar luz enquanto você escreve a receita da sua avó, o texto ainda estará lá, pela metade.
Até o mês passado, quando eu queria enviar um link ou informação qualquer para outra pessoa ou para mim mesmo, sempre usava o e-mail. Agora só uso o Dontpad. Espero ter ajudado a tornar sua vida 1% mais simples.

Visite www.dontpad.com 

19/05/2011 Posted by | Computação, Sites Úteis, Vídeos | , , , , , , , | 2 Comentários

Linguagem C – Parte IV – if, switch e ternário

Com o que foi mostrado até agora já somos capazes de executar fórmulas, fazer contas básicas, escrever textos… mas nenhuma destas ações envolve raciocínio lógico. Todas elas são “lineares”, relativamente óbvias. Não seria mais interessante se o programa pudesse pensar um pouco mais e fazer escolhas, em vez de apenas executar ações diretas? E se ele se recusasse a escrever algo que o usuário mandou, ou somasse em vez de subtrair? Não seria legal também se ele pudesse escolher qual fórmula usar, dependendo da ocasião? Para fazer isso, usam-se os comandos de decisão: if, switch ou ternário.

"Se tem eu compro e se não tem eu não compro? Vou esquecer até lá."

Imagine que você deu dinheiro para o seu irmão, Jureminho, comprar balas em uma loja. Quais os passos que ele seguirá?

Primeiro ele irá até a loja. Se tiver a bala, então ela será comprada. Senão ele voltará para casa de mãos vazias.
A criança é capaz de identificar uma característica (A existência de um produto em uma loja) e agir de acordo com opções pré estabelecidas. No caso, comprar ou não.

Suponha então que o Jureminho foi até a loja e achou a bala. Mas o preço desta bala é muito maior do que o imaginado, e o dinheiro não vai dar.

Jureminho então vai pensar do seguinte modo: “Se o preço for menor do que o dinheiro que eu tenho, então eu compro. Senão vou voltar pra casa sem as balas.”

O comando if funciona de modo bastante similar. Ele analisa a resposta de uma pergunta “sim-não” e faz uma ação diferente para o “sim” e outra para o “não”.

Veja abaixo um exemplo. É lido um número inteiro do teclado. O comando if faz a pergunta: “É maior do que dez?” e dependendo da resposta, uma frase diferente é escrita na tela:

C - Maior que Dez

A pergunta de resposta “sim-não” é feita dentro do if através de alguns operadores lógicos que já conhecemos desde o ensino fundamental: Maior, Menor, Igual, Diferente, Maior ou Igual e Menor ou Igual. No programa acima foi usado o Maior. Se a resposta para a pergunta for “não”, então é executado o código dentro do bloco else.

O programa acima confere apenas duas coisas: Se é maior do que dez ou se não é maior do que dez. Mas e se eu quiser que o programa me diga quando é menor, quando é maior, ou quando é igual a dez? É possível resolver este problema assim:

O comando else if é usado quando precisamos checar mais do que só uma condição. Neste caso, foi preciso usá-lo porque não sabíamos se o número era menor, maior ou igual, 3 coisas diferentes.

Imagine que você tinha um “sim” e dois “nãos”.
Sim: Ser maior do que dez.
Não: Ser menor do que dez.
Não: Ser igual a dez.

Este mesmo programa pode ser escrito de outra forma, com ifs aninhados:

Uma observação importante: O bloco else não é obrigatório. Eu posso apenas estar interessado em saber se o valor é maior do que dez. E se não for, tanto faz qual número ele é.

Há também um outro comando de controle, menos utilizado, chamado switch. Ele é limitado em relação ao if, mas sua utilização torna o código muito mais legível. O if recebe uma pergunta que resulta em sim ou não, certo? O switch recebe várias constantes, e estas são comparadas ao valor de uma variável. O programa abaixo lê um número entre 1 e 5 e o escreve por extenso, utilizando switch.

C - Switch

O default funciona como o else.
Uma linha “case > 5:” não funciona. Também não pode ser escrito “case x:“, para x sendo uma variável. Os valores testados devem realmente ser constantes.
O break é necessário ao fim de cada case. Experimente rodar o programa sem os breaks para ver o que ocorre. Se eu tentar explicar, você certamente vai dizer: “Hã?”

Este mesmo código acima pode ser escrito apenas com ifs e elses. Fica menos legível, mas…

C - If como Switch

Atenção para a pergunta dentro dos ifs, neste último programa. numero == 5 significa: “A variável número é igual a 5?” São usados “dois iguais” para diferenciar do “igual” de atribuição. Sempre que quiser fazer comparações, use dois iguais colados. Resuminho rápido:

Comparação: if(x == 3) igual, if(x != 3) diferente
Atribuição: int x = 2;

E por último, o meu comando de controle favorito: Ternário. Ele é usado para decidir qual valor é atribuído a uma variável, de acordo com a resposta de uma pergunta “sim-não”.

Sim, ele é meu favorito exatamente por ser feio. É muito útil em ocasiões em que você não quer que seu código seja entendido.
O formato do comando é: pergunta ? se verdadeiro : se falso
É retornado um dos valores entre “dois pontos”, dependendo da resposta da pergunta.

Na próxima parte do tutorial mostrarei vários assuntos de uma vez:
1 – Será a segunda parte sobre variáveis, apresentarei a idéia do tipo booleano e também operações aritméticas com os tipos já ensinados.
2 – Comentários.
3 – Operadores lógicos, para que duas perguntas sejam feitas ao mesmo tempo em um só if.

02/12/2010 Posted by | Computação, Programação, Tutorial de C | , , , , , , | 1 Comentário

Behold Studios – Super Roommates

Super Roommates - The Next Generation of Facebook GamingNeste BGS tive duas surpresas, uma boa e uma ruim.

A boa é que tinha um estande gigante da Seven. Não sou fã, nem aluno, nem ex-aluno e nem garoto propaganda da empresa, mas achei legal haver um estande gigante comprado por uma empresa brasileira. Os outros eram de Sony, Blizzard…

A ruim é que, dos estandes não-megalomaníacos, poucos eram de fato relacionados a jogos. Tinha de lojas, de rádios… e de desenvolvedores de jogos, poucos. Destes poucos, acabei gostando só do trabalho de duas empresas. Neste ponto achei o evento bem inferior ao SBGames. Claro, só neste ponto.

As duas empresas foram: Jungle, que já citei em outra postagem, responsável pelo jogo Mito da Caverna, e a Behold Studios, que tinha um estande quase temático com imagens de seu futuro projeto, ainda em versão beta, chamado Super Roommates.

Ele será lançado ano que vem, para Facebook. Se você adorou o Mito da Caverna por ser um jogo educativo, então você provavelmente odiará este, pois a proposta é relativamente… oposta. A estória do jogo não ficou muito clara na versão beta disponível no estande, mas o objetivo do jogo, ao menos, agradará boa parte dos jogadores brasileiros. Você joga com pessoas vestidas de super heróis, e bate em alguns caras maus nas ruas de uma cidade. Simples e divertido. O jogo é similar a Cadillacs & Dinosaurs e a Battletoads, mas com um cenário tridimensional, mais bonito e muito mais livre. Não tenho como saber dos programadores, mas ao menos a equipe de arte está de parabéns.

A Behold existe só há dois anos e já possui um outro produto já completo: o jogo Gravediggers, para IPhone. Sem dúvida são espertos por criarem jogos apenas para plataformas que independem do país. No Brasil realmente é complicado fazer um jogo que não seja educativo. A outra opção é programar pra Web, pra IPhone, pra DS…

Abaixo estão vídeos com os dois jogos:

Dois jogos de qualidade em três anos. Equipe sem dúvida promissora.

26/11/2010 Posted by | Brasil Game Show, Games | , , , , , | Deixe um comentário

Kinect for XBox 360

Agora tenho uma nova história para os meus futuros netinhos.
A Microsoft acabou de abolir a existência dos gamers gordos. No Brasil Game Show tive a oportunidade de testar o Kinect, aparelho recém-lançado, integrado ao XBox 360, inovador em comparação a (quase) tudo que existia no mercado de jogos até então.

O Kinect faz algo parecido com o que o Wii já faz, mas usando outra tecnologia. O Wii possui um controle que tem seus movimentos lidos pelo console. Se o jogador levanta o braço enquanto segura o controle, este movimento é entendido pelo jogo, e algo acontece na tela. Um ponteiro sobe, um personagem olha para cima, um lutador soca para o alto, etc, etc, etc.

O XBox 360 agora também terá jogos de movimento, mas de modo muito mais realista. O console não lerá o movimento de um controle, mas de todo o corpo do jogador. O Kinect possui uma câmera que escaneia o corpo da pessoa e faz com que um personagem dentro do jogo se mova da mesma forma, da cabeça aos pés. Vocês tem idéia do quanto essa tecnologia pode influenciar outras áreas? Prepare-se para ver celulares com sistemas de movimento, televisões que aceitam mudar de canal com movimento de mãos, jogos para cegos com descrições em audio, filmes interagindo com a platéia, simuladores de operações médicas… e o limite da utilidade desta tecnologia é a imaginação dos desenvolvedores.

No BGS joguei o Kinect Adventures. Como eu mesmo canso de dizer, uma imagem diz mais do que mil palavras, então vai um vídeo, que diz mais do mil PDFs:

22/11/2010 Posted by | Brasil Game Show, Games | , , , | Deixe um comentário

O Mito da Caverna

Não, esta postagem não é sobre filosofia. Na verdade ela serve como complemento a algo que já escrevi.
Estive hoje no primeiro dia do Brasil Game Show. O melhor, para mim, nestes eventos de tecnologia, é a oportunidade de estar em contato com empreendedores, pessoas que tiveram coragem de começar seu próprio negócio, que conseguiram e que estão colhendo frutos. No caso do BGS, bati um papo com pessoas realmente muito corajosas, pois tiveram a coragem de criar empresas de jogos em um país que pouco incentiva o desenvolvimento e o mercado destes.
Falarei especificamente da Jungle Digital Games, empresa brasileira que fez questão de enviar representantes de Viçosa-MG, onde possuem sede, para participar do evento e para mostrar seu primeiro projeto completo, o jogo educativo O Mito da Caverna.

O nome é o mesmo dado a uma conversa clássica na filosofia, entre Platão e seu irmão Glauco. Platão descreve o ambiente no interior de uma caverna, onde homens passaram suas vidas inteiras acorrentados. A única coisa que estes homens conheciam eram as sombras e as vozes das pessoas que passavam do lado de fora. Platão descreve então o que aconteceria se um destes homens conseguisse fugir de sua prisão e pudesse conhecer o mundo: a natureza, as pessoas, o sol, a lua. Ele notaria que por muito tempo viveu com uma idéia errada do que era o mundo. Supondo que ele voltasse para a caverna para contar aos colegas sobre o que aprendeu, estes não acreditariam em nada, pensariam que havia enlouquecido. O mito abre discussão sobre a ignorância, e é exatamente este o gancho que a Jungle pegou para usar em seu jogo. É espalhado pelo mundo um “vírus da ignorância”. Duas crianças, imunes a este vírus, precisam viajar o mundo para acumular o máximo possível de conhecimento, para usar como antídoto. A estória do jogo é basicamente esta.

Não tive a oportunidade de jogar no estande, apenas assisti a um vídeo com o gameplay, e o que vi me pareceu bem interessante. Há uma interface para cadastro de professores, turmas e alunos. Cada aluno se loga para jogar, e sem que saibam, está sendo gerado um relatório de desempenho com o tempo que levam para finalizar missões, e com o que conseguem fazer, em quantas tentativas. As missões são puzzles envolvendo questões interdisciplinares de assuntos ensinados no ensino fundamental. Sem dúvida seria um diferencial se usado em uma escola, pois não apenas ensina do jeito que a nova geração gosta de aprender, mas também auxilia professores como ferramenta estatística.

O site da empresa é: http://www.jungledigitalgames.com.br

Professor, ouse, fale com o diretor da sua escola, apresente este e outros jogos educativos. Ajude sua escola a se destacar.

21/11/2010 Posted by | Brasil Game Show, Educação, Games | , , , , | 5 Comentários

Linguagem C – Parte III – Variáveis I

Antes de começar a ler esta parte do tutorial, prepare-se psicologicamente e esquente uma caneca de café. Contarei sobre variáveis, parte essencial de qualquer programa, em qualquer linguagem. Os assuntos ficarão mais complexos de agora em diante, mas a curva de aprendizagem acaba sendo mais íngrime nesta parte se este for o seu primeiro contato com programação. Tenha paciência e não desista. Se possível, poste sua opinião sobre os tutoriais. Estão muito fáceis? Muito difíceis? Muito ruins? Preciso saber, senão vou acabar escrevendo mais um tutorial péssimo de C, e isso já existem centenas na internet.

C possui uma vantagem em relação a qualquer outra linguagem de programação (exceto por C++): é muito otimizada e otimizável. Isto significa que se um mesmo programa for feito em Java e em C, é possível fazer com que o resultado da versão em C gere o resultado em muito menos tempo, e ocupando menos espaço na memória. Por isso esta linguagem acaba sendo muito utilizada na programação de jogos, sistemas operacionais, ou de qualquer outro programa de complexidade similar. Ao fim do tutorial ensinarei como fazer programas gráficos (jogos simples) em C. Mas até lá todos os exemplos rodarão no prompt de comando, pois no momento o essencial é treinar o desenvolvimento de algoritmos.

Nas duas partes anteriores havia um mesmo código, que calculava a média entre duas notas. Há neste código 3 palavras especiais, que estão visivelmente guardando valores: nota1, nota2 e media. Para facilitar, repetirei a imagem do código:

nota1 e nota2 armazenam valores que foram digitado pelo usuário. media armazena o resultado de uma expressão. Estas palavras, com esta utilidade, são chamadas de Variáveis. Mas o que torna uma palavra uma variável? Dentro das chaves, logo na primeira linha, está escrito float, seguida exatamente por elas.
Ou seja, para criar uma variável, é preciso escrever float antes? Precisa-se escrever algo antes, mas não necessariamente float. Existem vários tipos de variáveis, e float é apenas um deles.  Os mais comuns são:

int: significa que a variável criada será um número inteiro. 1, 2, 5, 100, etc.
float: significa que a variável será um número real. 1.5, 3.9, 15.3, etc.
char: a variável criada guardará um caractere. a, z, &, $, *, etc.

Fora outras variações destes 3 tipos, que comentarei no futuro.
Resumindo, em C só existem números e letras, grosseiramente falando.

E estes scanf e printf? Ao compararmos o código e o algoritmo presentes na parte I, temos a intuição de que o scanf serve pra ler alguma coisa e o printf serve para escrever alguma coisa. E de fato, é isso. scanf lê uma informação digitada no teclado e printf escreve um valor na tela. Eles devem ser escritos de um modo característico:

Se eu espero que o usuário escreva um número inteiro, e se eu pretendo guardar este valor dentro da variável “vi”, então é esta linha que devo colocar em meu código: scanf(“%d”, &vi). O %d é um modo de avisar ao compilador: “Se prepara aí que ta vindo um número inteiro!”

Se eu espero por um número real, e pretendo guardar na variável “vr”, a linha é praticamente a mesma: scanf(“%f”, &vr). É o que acontece no exemplo da média. O %f é uma mensagem para o compilador, mais ou menos assim: “Tem um ponto flutuante chegando!”

E se eu espero por uma caractere, para guardar na variável “vc”, a linha é esta: scanf(“%c”, &vc). Mais uma vez, o %c é uma mensagem ao compilador: “O cara vai digitar um caractere!”

Atenção: Não esqueça de escrever o & antes das variáveis, no scanf. O motivo disse será explicado num futuro ainda distante…

O printf é parecido, e serve para escrever variáveis e textos na tela. Note que não é usado & antes das variáveis:
Para escrever um número inteiro: printf(“%d”, vi)
Para escrever um número real: printf(“%f”, vr)
Para escrever um caractere: printf(“%c”, vc)
Para escrever um texto qualquer: printf(“Texto qualquer”)
Para misturar texto e variável: printf(“Número: %d”, vi)
Para misturar variáveis de tipos diferentes: printf(“Um tipo de cada: %d, %f e %c”, vi, vr, vc)

E… é só isso. Agora mostrarei alguns exemplos.

1) Código que não faz nada. Todo código C deve ter no mínimo estas linhas.

2) Exemplo de uso do tipo int. Este programa lê um número do teclado e escreve o sucessor na tela.

3) Exemplo de uso do tipo char. Este programa apenas escreve na tela qual a letra que vem depois de uma já estabelecida.

4) Código que calcula a área de um círculo, dado um raio recebido por teclado.

Na próxima parte escreverei sobre os comandos de decisão: if, switch e ternário. A partir daí já será possível escrever códigos muito mais interessantes…😀

19/11/2010 Posted by | Computação, Programação, Tutorial de C | , , , , , , | Deixe um comentário

Fórum de Software Livre de Duque de Caxias

Povo da Zitolândia: Finalmente haverá um evento decente de tecnologia na cidade. Não percam a oportunidade!

18/11/2010 Posted by | Computação, Eventos | , , , | 1 Comentário

Linguagem C – Parte II – Instalação

Esqueci de falar algo muito importante na postagem anterior. Não basta apenas escrever o programa, é preciso também testar se o que foi escrito de fato funciona e se é o que você queria fazer. Para transformar um texto em um programa executável, usa-se uma ferramenta chamada compilador. Toda linguagem de programação compilada possui o seu próprio…compilador. No caso do C, existem diferentes compiladores que fazem quase a mesma coisa. Se você estiver aprendendo a programar por este blog, o compilador que recomendo é o gcc. É nele que testarei todos os exemplos colocados aqui. Não farei propaganda de nenhum ambiente de desenvolvimento, mostrarei que é possível programar mesmo sem eles.

Se você estiver no Linux, provavelmente este compilador já está instalado e funcionando. Senão, boa sorte.
No Windows, baixe o MinGW.

Após baixar e instalar o MinGW, é preciso fazer uma mudança numa variável de ambiente. Abra o Computador/Meu Computador e clique com o botão direito do mouse. Vá em Propriedades. Procure onde ficam as opções avançadas do sistema. Se você não estiver fazendo besteira, esta tela aparecerá:


Clique então na opção Variáveis de Ambiente. Não mude NADA além do que eu mandar, ou o seu sistema pode ser danificado.
Na parte Variáveis de Sistema, haverá uma chamada Path. Selecione-a e clique em Editar. Adicione então o caminho até a pasta bin, dentro do diretório em que você instalou o MinGW. Não apague nada, apenas escreva no final. Aqui em casa, e também aí se você não modificou o caminho padrão, o diretório é C:\MinGW\bin. Coloque um “;” (Ponto-e-vírgula) no final. Se você conseguiu se perder com o que eu acabei de dizer, veja a imagem abaixo:


Tendo feito isso, abra o Bloco de Notas. Cole o bloco de código da postagem anterior (cálculo da média do aluno) e salve como media.c
Se o seu Windows não exibe a extensão do arquivo, vá (em qualquer pasta) no menu Ferramentas->Opções de Pasta->Modo de Exibição e desmarque a opção “Ocultar as extensões dos tipos conhecidos”. Nunca entendi o motivo de o Windows sempre manter esta opção marcada como padrão. Se você não desmarcar esta opção, o seu arquivo na verdade se chamará media.c.txt, e o processo de compilação não funcionará.

—-
EDIT: Estou editando esta postagem neste ponto para incluir o que meu amigo Erich escreveu no comentário:
“Na hora que a pessoa vai salvar o media.c no bloco de notas ela embaixo do lugar que ela digita o nome tem uma combobox escrito Tipo (no windows Vista), e o padrão é .txt, é possível alterar para Todos os arquivos, e aí ele vai salvar corretamente como media.c ao invés de media.c.txt…”
—-

Abra o prompt de comando (ou procure por cmd.exe no computador). Abrirá uma tela preta com letras brancas. Você deve “caminhar” pasta por pasta até o diretório em que o arquivo media.c foi salvo. Para fazê-lo, basta usar os comandos cd ou cd.., que estão descritos aqui junto de outros comandos do prompt. Em seguida, uma linha com palavras esquisitas deve ser digitada, para que o texto seja compilado em um programa.
Veja, por exemplo, o que fiz aqui para chegar até o Desktop, que foi onde salvei o arquivo:


A linha cd Desktop significa que quero entrar na pasta Desktop, que fica no diretório do usuário Vitor (só aqui em casa… não procure por um diretório Vitor no seu computador, por favor). A linha gcc -o media media.c -Wall simplesmente pega o arquivo media.c e transforma no programa media, ou media.exe.
gcc é o nome do compilador;
-o serve para dizer: “O que vem depois de mim será o nome do programa executável”;
-Wall serve para o compilador te alertar caso haja problemas de menor importância no código, como linhas desnecessárias, ou variáveis criadas mas não utilizadas.
Em seguida. executei o programa e ele de fato funcionou: Tirei a média entre os números 3 e 5, e foi retornado 4.

Se você, assim como eu, acha o Bloco de Notas o editor de texto mais trash do mundo, recomendo usar outros editores. Para programar, existem o Textpad, o Editplus, o Notepad++ e o Crimson Editor, entre dezenas de outros. Eu particularmente gosto do Crimson Editor. Todos estes editores que acabei de citar pintarão o seu código de um modo característico da linguagem C. Veja abaixo como fica o código aberto no Crimson Editor:

Se você não entendeu absolutamente nada do que escrevi nesta postagem, baixe o Code::Blocks e seja feliz. É possível setá-lo para usar o gcc. Se isto ainda for algo muito difícil, use o compilador padrão. O resultado final não deve ser tão diferente, num primeiro momento.

Agora sim posso dizer: Na próxima postagem escreverei sobre as funções de leitura/escrita e sobre os tipos de variáveis. Haverá também outros exemplos de algoritmos.

14/11/2010 Posted by | Computação, Programação, Tutorial de C | , , , , , , | 3 Comentários

Linguagem C – Parte I – Introdução

Há alguns anos fiz um tutorial da linguagem de programação C++, que seria (e ainda é) usado como fonte de estudo durante o treinamento básico da GDP. Mas se você, leigo em programação(?), pegar este meu material, vai notar que é preciso já saber muito para entender o que está escrito. Logo na primeira página digo: “é suposto que o aluno já tenha conhecimento avançado de C”. Para os alunos do meu treinamento isso é o de menos, pois C nos é ensinado já no primeiro período. Mas como meu tutorial está na internet, livre para quem quiser usar, sinto-me no dever de terminar o que comecei. Farei várias postagens para ensinar a linguagem de programação C. Estas postagens eventualmente serão transferidas para uma apostila, que também ficará disponível no meu site.

Se você já sabe C, ou se você já sabe qualquer outra linguagem de programação estruturada e agora quer aprender C++, este é o link para o meu tutorial já pronto:
Orientação a Objetos, primeira parte
Orientação a Objetos, segunda parte
Template, Referências, Redefinição de Operadores, Palavras-chave
Standard Template Library – Vector, Deque, Stack, Queue

Se você não sabe C, não sabe nenhuma outra linguagem de programação, mas sabe ler, escrever, somar e multiplicar, não se preocupe, pois é para você que estarei escrevendo a partir de agora.

Para um leigo em computação, um programa geralmente é visto como uma linguagem alienígena, ou como um emaranhado de palavras estranhas e sem sentido. Mas poucos param para notar que este não é um problema apenas da computação. Um brasileiro que saiba apenas português, ao tentar ler um texto em inglês, também tem a impressão de que este é um emaranhado de letras sem sentido, quando na verdade, este é um idioma completo, com palavras, frases, ambiguidades e figuras de linguagem.

Todo idioma desconhecido é igual para os nossos olhos num primeiro instante, até que aprendemos uma palavra, aprendemos a montar frases… e aos poucos somos capaz de diferenciá-lo de outros idiomas. O que antes era um emaranhado de letras passa então a ter sentido. Aos poucos, sabemos que uma frase está em coreano e não em japonês, ou por determinada junção de letras com determinados acentos, sabemos que uma frase está em francês.

Assim como qualquer idioma, uma linguagem de programação serve como ferramenta de comunicação. Não que o programador seja capaz de conversar com o computador; esta comunicação ocorre de modo um pouco diferente. Na verdade o computador apenas entende ordens, e a sua resposta é a conclusão do que foi ordenado. Com uma linguagem de programação, é possível dizer: “Calcule a média de todos os alunos da minha turma!”, e a resposta do computador é “É pra já, senhor. Aqui está a listagem”. Não deste modo fantasioso, mas também, não tão diferente. Ele resolve, geralmente, problemas envolvendo lógica e matemática. Aviso desde já que estou definindo tudo de modo extremamente informal e incompleto, mas os buracos deixados agora serão preenchidos ao longo do tempo.

Suponha que um professor está sentado de frente para uma mesa, com lápis e papel na mão, e gostaria de calcular a média de um de seus alunos. Cada aluno possui duas notas de prova. Note que não estou falando nada de programação.

Primeiro ele lerá em sua tabela de notas qual foi a primeira nota do aluno em questão. Anotará então no papel. Em seguida lerá qual foi a segunda nota. Anotará também no papel. Em seguida ele somará os dois valores que estão no papel e dividirá por dois. Por último, escreverá o resultado em sua tabela de notas. Posso escrever estes passos de modo um pouco diferente?

ler(nota um)
ler(nota dois)
media = (nota um + nota dois)/2
escrever(media)

Esta sequência de passos é um algoritmo. Descrevendo grosseiramente, mas não tão incorretamente, algoritmos são conjuntos de passos que descrevem uma, e somente uma ação. O professor seguiu os passos acima e calculou a média, mesmo sem saber o que é um algoritmo. Algoritmos são intuitivos, e a programação baseia-se neles. Abaixo está a versão em C. Note que apesar de estar escrito de modo um pouco mais feio, a idéia é a mesma da sequência de passos acima.

#include <stdio.h>

int main(void)
{
    float nota1, nota2, media;

    scanf("%f", &nota1);
    scanf("%f", &nota2);

    media = (nota1 + nota2)/2;

    printf("%f", media);

    return 0;
}

Na próxima postagem escreverei sobre as funções de leitura/escrita e sobre os tipos de variáveis. Haverá também outros exemplos de algoritmos.

14/11/2010 Posted by | Computação, Programação, Tutorial de C | , , , , | 2 Comentários

Logic Pix

Na postagem sobre nonogramas eu disse que não existiam revistas no Brasil, mas existe sim. Uma, pelo menos. Um amigo da faculdade me alertou sobre a existência da Logic Pix, da Coquetel. Além dos nonogramas, existem outros tipos de jogos envolvendo números e lógica. Não é SÓ de nonogramas, mas já é alguma coisa.

Quem estiver interessado, deve ir à livrarias ou bancas de jornal e pedir pela revista. Não adianta procurar na prateleira de revistas da Coquetel, pois provavelmente ela estará no lugar mais obscuro possível, isso se estiver na estante.

13/11/2010 Posted by | Arte, Games, Revistas | , , , , | Deixe um comentário

Jogos no Ensino

Desde já gostaria de dizer que esta postagem não é uma brincadeira. Escreverei principalmente para professores e para estudantes que desejam ser professores num futuro próximo. Há algum tempo pesquiso sobre a utilidade dos jogos além do entretenimento, sua aplicação em outras áreas. Gostaria de dividir algumas das minhas conclusões com os educadores das novas gerações.

O mundo gira, novas modas aparecem, palavras são inventadas e abandonadas, preconceitos aparecem e desaparecem… e esta mutabilidade pode ser notada também dentro de sala de aula. Basta compararmos professores mais antigos e professores mais jovens. Os mais antigos tendem a reproduzir apenas o que é dito nos livros, e também a agir severamente com os seus alunos. Professores mais jovens tendem a ser informais, a falar de modo que crianças e adolescentes se identificam. Estes costumam usar materiais extra-didáticos com frequência. Fiz questão de marcar a palavra “tendem”, pois é óbvio que existem professores mais velhos que se adaptam às mudanças. E também é óbvio que muitos ainda repetirão os erros de seus antecessores, lecionando como se estivessem no início do século XX.

Professores, vocês não estão mais no início do século XX. Os alunos continuam com a mesma falta de vontade em aprender que sempre tiveram, mas há uma diferença: a palmatória acabou. Não se bate mais nos filhos dos outros, e mesmo quando se podia fazer isso, castigos e violência nunca fizeram uma criança aprender mais. Isso certamente criou traumas e ódio, não conhecimento. Por mais injusto que pareça para vocês, não são as crianças que devem mudar, e sim os professores.

Sua aula se resume a passar e corrigir deveres de casa, colocar matéria no quadro e falar ininterruptamente por duas horas? Você pode ser o profissional mais qualificado do mundo e passar rios de conteúdo, mas destes rios, poucas gotas serão de fato aproveitadas. Hoje os jovens se cansam com facilidade. E a velocidade da informação está tornando não só eles, mas todos nós, mais impacientes e agitados. Uma aula parada deixará os alunos dispersos, com sono. Se seu forte não for a simpatia, será ainda pior.

Já é comum ver, em cursos e escolas, professores que aliam mídias ao assunto que querem ensinar, ao levar músicas e trechos de filmes para a sala de aula. Hoje o melhor modo para ensinar é fazer com que o aluno se esqueça de que está numa sala de aula. Antes de falar sobre a minha técnica pessoal de estudo, gostaria de falar sobre uma outra técnica de ensino, que eu mesmo uso em minhas apostilas e aulas de programação, sempre que possível.

O cérebro humano possui uma peculiaridade interessante. O lado esquerdo dele trabalha a lógica, a matemática, a simetria. Se você pensa em uma situação que não faz sentido e está incomodado com isso, é o lado esquerdo do seu cérebro em ação. O lado direito é responsável pela arte, pelo “sexto sentido”, pelas emoções. Se você acabou de fazer um desenho e surpreendeu-se com o resultado final, então você usou o lado direito do seu cérebro.

O aprendizado costuma ter mais efeito quando há uma integração entre os dois lados. Por isso alunos aprendem mais quando há uma música ou vídeo envolvido no processo. O mesmo vale para brincadeiras durante a aula, pois incentivam o uso da criatividade, das emoções. Se o aluno, num momento de diversão, usa uma palavra nova num curso de inglês, ele não a esquecerá, e passará a ligar a palavra à situação em que a aprendeu. Muitos livros se aproveitam desta descoberta e enchem suas páginas com imagens relacionadas ao assunto que se propõem a ensinar, como é o caso da série Head First, ou Use a Cabeça, no Brasil.

A arte de ensinar há muito tempo vem convergindo para o entretenimento, e a junção das duas coisas resulta em aulas dinâmicas, interessantes e mais proveitosas. Um aluno, ao final de uma aula comum, absorveu menos de 20% do que foi ensinado. Recomenda-se que ele chegue em casa e estude, exatamente para que esta taxa suba para, quem sabe, uns 40 ou 50%. Mas se a aula foi bem preparada e aliada à mídias, o aluno chegará em casa para estudar e notará que boa parte daquele assunto já está fixada. Quanto maior a integração entre lógica e arte, melhor.

Quando estamos no jardim de infância, nossa criatividade é atiçada, com desenhos, músicas e brincadeiras. Mas então aprendemos a ler, entramos na primeira série… e aos poucos passamos a exercitar nossa criatividade com muito menos frequência do que exercitamos a lógica. Se esta lógica fosse ensinada desde a alfabetização em conjunto com emoção e criatividade, certamente teríamos melhores alunos. Foi descoberto por uma universidade americana que músicos possuem uma grande facilidade para aprender, exatamente por estarem diariamente misturando a lógica matemática das partituras e o sentimento envolvido no processo criativo de compor e ouvir.

Sim, e o que jogos tem a ver com isso? Onde quero chegar? Acontece que jogos também são tipos de mídia. Se você acha que jogos são limitados e se resumem a passar fases, atirar com naves, correr e pular, sinto dizer, mas você parou no tempo há 20 anos. Hoje eles são tão complexos e super-produzidos quanto filmes.

Veja da seguinte maneira: livros contam histórias, podendo ter imagens ou não. Filmes são como livros, mas apenas com imagens. Se você gosta de livros e gosta de filmes, sinto dizer, mas você também gosta de jogos. Hoje eles atingiram tal evolução que se parecem de fato com filmes. Com uma única diferença: os personagens principais são controláveis, interativos. Antes de concluir meu raciocínio, postarei alguns videos com cenas de jogos, escolhidos a dedo do Youtube.

Campeonato cujos vencedores foram brasileiros, com um jogo educativo:

Braid, jogo-arte com desafios lógicos:

Professor Layton, série com desafios lógicos, já clássica da Nintendo:

Twilight Princess, outro clássico da Nintendo, vencedor dos prêmios de melhor trilha sonora e melhor arte gráfica pela IGN, e também ganhador de outros prêmios, como melhor história e melhor jogo do ano, por várias revistas e sites especializados:

Um exemplo que foge do padrão dos vídeos acima. Este jogo é de matemática, para crianças, e ensina a ordenar numeros inteiros e frações. Professor de matemática: o que acha de usá-lo com sua turma?

Aos professores de inglês: notaram algo assistindo a estes vídeos? Jogos são uma fonte rica de vocabulário. E são excelentes para treinar a audição. Consegui boa parte do meu vocabulário jogando. Várias vezes acontecia de uma palavra aparecer em sala, nenhum dos meus colegas conhecer, mas eu saber o significado por ter visto em um jogo. Os melhores para adquirir novos vocabulários são RPGs, como Pokémon. Pensem duas vezes antes de repreender uma criança ou adolescente que esteja jogando, pois estes jogos estão fazendo um favor para vocês mesmos. Funcionam como dever de casa que as crianças fazem por prazer.

Alguns exemplos de vocabulário “avançado” que aprendi ainda criança, jogando Pokémon, e que só fui ver no curso de inglês anos depois: Karate Chop, Bind, Double-Edge, Tackle, Poison Sting, Flamethrower, Glare, Blizzard, Seismic Toss, Strength, Stun Spore, Thunderbolt, Rage, Night Shade, Withdraw, Selfdestruct, Clamp, Splash, Sharpen, Snore, Curse, Spite, Foresight, Endure, Outrage, Swagger, Dragon Breath, Moonlight, Crunch, Whirlpool, Safeguard… e por aí vai. Algumas destas palavras eu nem cheguei a ver no curso de inglês, mesmo em níveis mais avançados. Obviamente o mesmo vale para RPGs em outros idiomas. Jogos costumam ser traduzidos para o francês quando lançados na França, o mesmo para Alemanha e Espanha. Praticamente todos os jogos que existem possuem uma versão também em japonês.

Meus conselhos para os professores são: usem jogos em sala de aula. Mande jogar como dever de casa. Não repreenda jogos que sejam visivelmente construtivos. Países como Suíça, Estados Unidos, Japão e Coréia do Sul já fazem isso em algumas escolas. Professores de idiomas, procurem jogos na língua que vocês lecionam. Professores de história, de geografia, de matemática, de ciências, vocês possuem um leque enorme de jogos educativos, muitos gratuitos, que se encaixariam perfeitamente em suas aulas. Mudem seus modos de ensinar, utilizem mídia, imagens, músicas, jogos, brincadeiras. Lembrem-se de que as aulas não são para vocês, mas para os seus alunos. Vocês estão em sala com a missão de fazer com que eles aprendam.

06/11/2010 Posted by | Arte, Educação, Games | , , , , , | 2 Comentários

Palestra – Mozilla Firefox 4

Se você é estudante/profissional da área de computação, ou se apenas não tem nada para fazer na próxima segunda-feira, haverá uma palestra na UFRJ sobre o Firefox 4 e sobre outras tecnologias aplicadas em novos projetos da Mozilla.
Abaixo está o poster oficial do evento.

05/11/2010 Posted by | Computação, Eventos | , , | 1 Comentário

Ernest, le Vampire

ErnestLembram-se do Glub-Glub? Era um programa que passava na TVE, há muitos anos. Eu assistia a este programa, e se não me engano, ao Castelo Rá-Tim-Bum logo depois. Alguns dias atrás, provavelmente enquanto pensava em alguma coisa macabra, me veio um flash deste cara aí da figura ao lado. Lembrei do nome, se chamava Ernest. Era um vampiro que em todos os episódios passava por situações bizarras. Daí acontecia algo ruim, ele acordava em seu caixão, com os olhos esbugalhados de susto, deixando claro que o episódio foi um grande pesadelo. Passava todos os dias no programa da TVE que citei.

Ele não era o único desenho do programa, mas lembrei-me especificamente dele por ter sido um dos meus favoritos da época. Os episódios apresentavam desafios lógicos, sequências impossíveis de fatos, que ficavam gradativamente mais esdrúxulos até a conclusão. Esta brincadeira com o impossível era o que mais me atraía. A estrutura do roteiro também era excelente. A série não possuia falas, apenas trilha sonora e efeitos sonoros, e mesmo assim não ficava confusa em momento algum.

Depois de rever a série pude notar algo que só um adulto é capaz de perceber, e fiquei com verdadeira inveja do criador. Acho improvável que a série não tenha sido feita para crianças, mas o personagem principal é egocêntrico, preconceituoso, egoísta e tarado. Tudo bem que ele sempre se dava mal, mas não me lembro de ter assistido a alguma outra série com anti-heróis na minha infância, ao menos não tão evidentes.

Escolhi um episódio aleatório pra postar aqui. Quem se interessar pode ver exatos 39 episódios no Youtube, de um total de 117.

30/10/2010 Posted by | Desenhos Animados, Televisão | , , , , | 1 Comentário

Nonogramas

Faz um mês que conheci um tipo de jogo bem interessante, principalmente para os sem muito talento artístico, como é o meu caso. Chama-se Nonograma, e baseia-se em deduções lógicas, assim como o Sudoku. O jogo tem de fato a mesma aparência de um Sudoku, mas o objetivo não é preencher com números. Nele, os quadradinhos devem apenas ser pintados ou não pintados. No final, o conjunto de quadradinhos pintados forma uma figura. A imagem abaixo é de um nonograma já preenchido:

Coração-Nonograma

Os números embaixo e ao lado são dicas de quantos quadrados seguidos serão pintados nas respectivas colunas e linhas. Quando há apenas um número, então deve haver esta quantidade de pontos pintados, em sequência. Por exemplo, a primeira coluna à esquerda possui um 3 na parte inferior. Significa que, em algum lugar desta coluna existem 3 quadrados pintados. Na coluna ao lado desta há um 5, e de fato, vemos que há 5 quadrados pintados em sequência.
Quando há dois números, ou mais, então haverá duas, ou mais, sequências pintadas. Uma das colunas possui os valores 2 e 3 (terceira da esquerda para a direita). Isso significa que nesta coluna haverá uma sequência de dois e uma sequência de três, separadas. É de fato o que ocorre na figura.

E o jogo é basicamente isso. A grande dificuldade é saber quais quadrados preencher. A imagem abaixo é do mesmo exemplo do coração, só que ainda em branco. E agora, o que fazer?

Coração-Nonograma-Vazio1

Note que há duas linhas com o valor 7 do lado. Elas devem ser totalmente preenchidas:

Coração-Nonograma-Vazio2

A coluna mais à esquerda deve ser preenchida com uma sequência de 3. Já existem dois pontos pintados, separados. Devemos então pintar o quadrado do meio. O mesmo vale para a coluna mais à direita:

Coração-Nonograma-Vazio3

Na linha entre os dois setes há dois números, 2 e 4. Note que só há um modo de pintar, pois 2 pintados + 4 pintados + 1 espaço vazio resulta em 7. Esta dedução é um pouco mais complexa, mas depois de um tempo de jogo torna-se fácil de notar:

Agora mais uma dedução complexa. Já é possível concluir a coluna dos números 2 e 3 (terceira da esquerda para a direita). Note que há dois quadrados pintados, separados por um espaço. Se pintarmos este quadrado do meio, teremos uma sequência de 3. Mas a sequência de 2 deve vir antes da sequência de 3, e não haveria mais espaço para ela. Então sabemos que este espaço vazio deve se manter de fato, vazio. Isso significa que o quadrado já pintado de cima faz parte da sequência de 2 e o já pintado de baixo faz parte da sequência de 3. Complicado?

Coração-Nonograma-Vazio5

Antes de continuar, colocarei X em todos os quadrados que já sabemos que não serão preenchidos. E a partir de agora, farei isso em todas as próximas imagens:

Coração-Nonograma-Vazio6

A primeira linha de cima já pode ser concluída, usando um tipo de dedução que já citei. Existem 5 espaços livres. 2 pintados + 2 pintados + 1 espaço vazio = 5:

Coração-Nonograma-Vazio7

Agora já dá pra concluir o resto sem dificuldade. A segunda coluna da esquerda para a direita deve ter uma sequência de 5, e já existem 4 pintados. O mesmo vale para a coluna com 5 do outro lado. E a mesma idéia vale para as duas colunas com sequências de 6. Pronto, fim do nonograma:

Coração-Nonograma-Vazio8

Se você teve coragem de ler este post até aqui, provavelmente gosta de jogos lógicos, como Sudoku e Kakuro. Caso more no Japão, vá até a banca/livraria mais próxima, e haverá dezenas de revistinhas de Nonograma, ou Picross (Picture Crossword), como também é conhecido. Mas se você mora no Brasil, como eu, e é refém apenas do que faz sucesso nos Estados Unidos, existem outras opções.

Tem para Game Boy o Mario’s Picross, tematizado com os personagens da série Mario, e para Super Nintendo o Mario’s Super Picross. Para Nintendo DS existem dois jogos, Picross DS e Picross 3D. Este último forma estátuas, e não imagens bidimensionais como o coração do exemplo.

Para jogar nonogramas online, entre num dos sites abaixo:
http://www.kongregate.com/games/MoonberryStudios/picma
http://armorgames.com/play/338/armor-logic-2
http://www.puzzle-nonograms.com/

O Picma em especial possui uma regra extra, própria. Nele você deve não apenas preencher os quadrados, mas deve preencher com a cor correta. Para entender melhor, leiam a sessão How to Play antes de jogar.

Divirtam-se e viciem-se!

30/10/2010 Posted by | Arte, Games | , , , , , , | 1 Comentário

Novo Blog

A partir de hoje estarei usando (e atualizando) este novo blog. Desisti do meu antigo, do Blogspot. O serviço do Google é muito fraco, possui poucas opções para postagem e tenho a impressão de que foi programado nas coxas. Bem ruim comparado a todos os outros produtos da empresa (Earth, Gmail, Maps…). Enfim, pretendo atualizar ao menos uma vez na semana, já começando no próximo sábado.

Meu outro blog se chamava Quinta Visão, antigo título temporário de um livro que escrevo já há algum tempo. Mudei o livro de nome urgentemente há algumas semanas, pois ele passou a me parecer tosco a partir do momento em que comecei a imaginar uma hipotética Ótica localizada na Quinta da Boa Vista o.O
O nome dado a este novo blog é apenas uma brincadeira com programação, e espero não ser nada que eu venha a me arrepender no futuro.

28/10/2010 Posted by | Arte | Deixe um comentário

   

%d blogueiros gostam disto: