domingo, 29 de julho de 2012

Softwares Antigos Desenvolvidos

Galera neste post tenho por objetivo disponibilizar alguns softwares antigos desenvolvidos por mim.   Este softwares em geral teve o objetivo de aprendizado da linguagem Java (o qual são a maioria dos programas) desenvolvidos aqui. Estou disponibilizando aqui, mais como incentivo para quem já desenvolve em alguma linguagem ter algumas idéias interessantes de programas a serem desenvolvidos. A maioria dos programas que se encontram aqui consegui desenvolver nos primeiros meses após começar a programar na linguagem java, o que demonstra a facilidade da linguagem.

Programa Jogo Reversi: Este programa é uma Inteligência Artificial (IA) para o jogo Reversi. Este trabalho foi feito na disciplina de Inteligência Artificial enquanto fazia graduação na UFLA. Possui os modos de jogar Humano x Humano e Humano x CPU. Foi desenvolvido com o proposito de aprender sobre algoritmo Minimax com poda alfa e beta. Desenvolvido em Java.


Programa Jogo Reversi. 
Programa Perceptron X: Este programa mostra uma rede neural para fazer separação de classes nos problemas AND e OR. Esses são problemas clássicos de Redes Neurais Artificiais (RNA). Foi desenvolvido com o proposito de aprender a trabalhar com RNA. Desenvolvido na linguagem Java.
Software Perceptron Utilizando Redes Neurais Artificiais.
Jogo da Velha: Um simples jogo velha onde joga-se apenas dois jogadores humanos, ou seja, não tem inteligência artificial. Foi desenvolvido com o proposito de aprendizado para trabalhar com Swing e Awt. Desenvolvido em Java.

Jogo da Velha
Download Jogo da Velha: Download aqui.

Jogo do Campo Minado X: Jogo simples do campo minado, mas ficou bem próximo ao do programa da Microsoft em Jogabilidade (Eu acho kkkkkk). Foi desenvolvido com o proposito de aprendizado para trabalhar com Swing e Awt além de aperfeiçoar a lógica de programação. Feito em Java.

Jogo Campo Minado X
Download Jogo Campo Minado X: Download aqui.

Fractais: Este programa mostra alguns fractais desenvolvidos como o fractal de Mandelbrot, o de Júlia, o de Koch, o de Ló, o de Sierpinski, entre outros famosos. Tem alguns criados por mim também e tem alguns desenhos que não são fractais são maluquices quaisquer. Foi desenvolvido com o proposito de aprendizado para trabalhar com Swing e Awt, fazer os códigos interessantes de fractais entre outros objetivos. Feito em Java.

Software Fractais, mostrando o fractal de Mandelbrot.
Download do Programa Fractal: Download aqui.

Programa Paint X: Este programa é uma versão bem simples do paint desenvolvido por mim. Ele possui os seguintes recursos: desenhar retângulos, elipses e linhas nas mais diversas cores, as formas geométricas podem ser preenchidas ou não. Foi desenvolvido com o proposito de aprendizado para trabalhar com Swing e Awt. Feito em Java

Software Paint, mostrando uma loucura qualquer.
Download Programa Paint X: Donwload aqui.

Programa Leitor de Mente 2.0: Este software foi criado com base em um propriedade da matemática. Este software foi feito quando eu estava no curso técnico no CEFET-Formiga. Foi feito em C#, assim para rodar talvez precise de instalar um biblioteca no Windows.

Programa Leitor de Mente 2.0
Download Programa Leitor de Mente 2.0: Downlaod aqui.

Programa Sistema Planetário: Este software tenta simular um pouco do sistema solar. Possui os movimentos de translação dos planetas Mercúrio, Vênus, Terra e Marte, além de possuir também a animação da lua em translação em volta da terra. Foi desenvolvido com o proposito de aprendizado para trabalhar com Swing e Awt além de aperfeiçoar a lógica de programação. Desenvolvido na linguagem Java.


Software que simula o sistema planetário.
Programa Problema das Damas: Este software busca sozinho a solução para o problema das Damas o método de busca não apresenta muita inteligência, apenas um algoritmo de força bruta, mas é o suficiente para esse problema quando o tamanho do tabuleiro é 8x8, em tabuleiros maiores esse algoritmo não é viável. Foi desenvolvido com o proposito de aprendizado para trabalhar com Swing e Awt além de aperfeiçoar a lógica de programação. Feito em Java.

Software que resolve por força bruta o problema das damas.

Programa Caça Níqueis X: Este software pretendia simular o jogo de caça níquel. Foi desenvolvido com o proposito de aprendizado para trabalhar com Swing e Awt além de aperfeiçoar a lógica de programação. Feito em Java.


Software que simula uma máquina de caça níqueis.

Programa Desenha Smile: Este software desenha uma "carinha" (sorriso) na tela e através dos JSliders o usuário pode aumentar ou diminuir o tamanho da "carinha". Foi desenvolvido com o proposito de aprendizado para trabalhar com Swing e Awt além de aperfeiçoar a lógica de programação. Feito em Java.

Software que desenha uma smile.
Como disse anteriormente a maioria dos softwares aqui apresentados não possui nenhum valor. Exceto o valor dado ao aprendizado obtido sobre programação. Até+.

Adivinhando Números

Olá este post tem por objetivo apresentar uma técnica interessante de adivinhar o número pensado por uma pessoa. Sendo assim é uma maneira de se divertir aplicando esta técnica a seus amigos e familiares.  Observe a figura abaixo para entender como funciona.
Cartelas Para adivinhar o Número Pensado.
Abaixo encontra-se cinco cartelas que você deverá imprimi-las para fazer a brincadeira. Após imprimi-las recorte-as, e atrás destas cartelas coloque a letra que se encontra acima de cada uma das cartelas. Fazendo isto peça para uma pessoa que escolha um número de 1 a 31. Feito isto peça para a pessoa olhar a cartela e dizer em quais cartelas se encontra o número pensado, ela deve dizer em quais letras das cartelas o número se encontra. 

Por exemplo, suponha que a pessoa pensou no 25, ela dever-a te dizer que o número pensado encontra-se na cartela A, D e E. Feito isto você consegue descobrir qual número ela pensou associando a letra A = 1, B = 2, C = 4, D = 8 e E = 16. Como as cartelas A, D e E são as cartelas que está o número pensado você descobre este número somando-se os números associados a cada cartela neste caso 1 + 8 + 16 = 25 (número pensado). Repare que somamos 1 + 8 + 16, pois são os números associados as cartelas A, D e E respectivamente. 

Explicação do funcionamento da brincadeira: Este brincadeira funciona com base no sistema de numeração binário. Quando você escolhe ou não uma cartela, você esta ativando ou desativando-a, sendo assim 0 ou 1 que é a base do sistema binário. Como temos cinco cartelas, o maior número pensado vai ser 31 (marcado na figura acima de verde), onde todas as cartelas estão ativadas. O número em binário com cinco dígitos uns consecutivos (0b11111 = 31). Repare então que conforme a nossa regra 31 tem de ser igual a soma de 1, 2, 4, 8, 16, o que é verdade (1 + 2 + 4 + 8 + 16 = 31). Outra característica presente na cartela é que o valor associado a cada cartela é exatamente o primeiro valor de cada cartela (marcado na figura acima de vermelho). Assim repare que o A = 1, B = 2, C = 4, D = 8 e E = 16, pois estes são os primeiros números em cada cartela.

Abaixo encontra-se para download um arquivo contendo as cartelas. Neste arquivo tem-se duas cartelas para serem impressas, uma para iniciantes (pessoas com dificuldades em fazer contas) onde o número pensado vai de 1 a 31 e outra para pessoas mais avançadas que vai de 1 a 127. Nesta cartela mais avançada é claro que deve-se colocar mais duas letras que são a letra F e G além das outras já existentes. Onde a letra F = 32 e G = 64. Você pode propagar o raciocínio existente nesta brincadeira para qualquer intervalo de números inteiros apenas incluindo ou excluindo cartelas, que apresentem esta propriedade.

Download da cartelas prontas: Download aqui.

segunda-feira, 23 de julho de 2012

ChessClock

Um dos meus hobbys é jogar xadrez, e como muitos dos jogadores de xadrez, eu não possuo o relógio de xadrez para cronometrar as partidas. Assim resolvi fazer um software (um relógio de xadrez digital) que simule o relógio de xadrez. 

Tela Principal do Relógio de Xadrez Digital
Esta tela marca o tempo dos jogadores. O tempo é dado em segundos neste exemplo acima um dos jogadores tem 48,73 segundos e o outro 57,90 segundos. O relógio tem as opções de play, pause, restart e opções.


A tela de Opções pode ser vista acima. Nesta tela os jogadores definem o tempo para cada jogador, e caso desejem colocar acréscimo de tempo (tempo extra) após cada jogada poderão fazê-lo. Apesar de ser um software simples achei poucos softwares que façam algo parecido, os que encontrei acabaram não satisfazendo as minhas necessidades. Dessa forma, eu decide fazer meu próprio relógio digital de xadrez. Abaixo encontra-se o link para download desse software. Qualquer dúvidas ou sugestões deixe o seu comentário abaixo. 

Download ChessClock: Download aqui.

Visual GrubiX

O Visual GrubiX é um visualizador de Redes de Sensores Sem Fio (RSSF) feito para o framework GrubiX. O GrubiX é derivado do simulador ShoX mais informações são obtidas no site do Grubi. Este visualizador foi desenvolvido por mim com o auxílio do grupo de pesquisa GRUBi que fica localizado no DCC da UFLA. Foi desenvolvido durante meu trabalho de Iniciação Científica. 

Essa ferramenta é capaz ler o arquivo XML que é dado como saída pelo framework GrubiX. Dessa forma, primeiro deve-se programar a RSSF através do GrubiX depois de pronta a simulação gera-se o arquivo XML que o Visual GrubiX trabalha. Esse software funciona como um player de vídeo, só que exibindo a simulação da RSSF mostrando o envio e recebimento dos pacotes. Mostra também o alcance dos sensores, etc. A tela abaixo mostra a interface gráfica desse software.

Tela do Visualizador - Visual GrubiX
Download Visualizador Visual GrubiX: Download aqui.

Jogo: O Reino da Portumática

Olá este post tem por objetivo divulgar um jogo o qual fui um dos desenvolvedores. Foi desenvolvido em um trabalho de Iniciação Científica na Universidade Federal de Lavras (UFLA). Este jogo tem por objetivos auxiliar a crianças de 2ª e 3ª série, nas disciplinas de matemática e português dai o nome Portumática. Este jogo é do tipo perguntas/respostas, o qual uma pergunta virá e o jogador deverá responder corretamente a mesma senão perde uma vida. O cenário do jogo, um ambiente medieval, este foi vislumbrado pelas crianças de uma escola. Nesta escola foi feito o levantamento de requisitos para a criação de um jogo educacional. Este jogo foi desenvolvido em Java usando as APIs Swing e AWT. Este foi o primeiro projeto de médio porte o qual me envolvi. No mesmo aprendi a trabalhar com a criação de interfaces usando Swing e Awt, reprodução de áudio, orientação a objetos em java. Foi feito usando o padrão de projeto Model View Control - MVC.

A seguir pode-se ver um conjunto de telas do jogo. Na primeira tela mostrada tem-se a tela de abertura do jogo. Na segunda tela tem-se a tela de escolha dos personagens e definição dos nomes do jogador. E por fim, na última tela exibida tem-se a tela onde o jogador pode escolher uma determinada porta e a pergunta associada. Caso o jogador acerte a pergunta ele avança uma nas salas do castelo até chegar no último nível e então terminar o jogo.

Tela Inicial do Jogo
Tela de Escolha do Personagem do Jogo 
Tela de Perguntas e Respostas do Jogo
Download de Esquema do Jogo em PDF: Download aqui.

segunda-feira, 26 de março de 2012

Software Gráfico Região Factível

Este post tem por objetivo mostrar um software desenvolvido por mim (Jesimar Arantes autor do Blog) durante a disciplina de Programação Matemática enquanto cursava graduação na Universidade Federal de Lavras (UFLA). Esse software desenha a região factível em um sistema de equações lineares. Chamei este software de Gráfico Região Factível (GRF-2D), bem tosco o nome mas está valendo (kkkkkk).

A área de Programação Matemática ou Pesquisa Operacional lida com sistemas de equações lineares, quando estes sistemas contem sobre duas variáveis, é possível (fácil) construir um software para desenhar a região factível em um plano bidimensional. 

Este programa foi feito na linguagem Java usando as API Swing e AWT. O arquivo .jar que utilizado para rodar o programa encontra-se abaixo para download.

Abaixo algumas telas do software construído. A figura 1 possui a tela de abertura do software.

Figura 1 - Tela de Abertura do Software GRF-2D
A figura 2 mostra o gráfico da região factível sobre as 4 restrições do sistema linear e a condição de não negatividade das variáveis.
Objetivo:
      Minimizar 2x1 - x2
Sujeito a:
      x1 + 2*x2 <= 700
      2*x1 - x2 <= 700
      -3*x1 - 2* x2 <= -350
      -x1 + x2 <= 200
      x1 >= 0
      x2 >= 0

Figura 2 - Interface do Software GRF-2D

Espero que tenham gostado do post, caso alguém tenha alguma dúvida ou crítica sobre o software favor postar. Lembrem-se que este software foi desenvolvido apenas para auxiliar na disciplina (como trabalho final), não tem interesse em ser amplamente utilizando no mercado.

Link para download do software GRF-2D: Download Aqui

sábado, 3 de março de 2012

Leis da Física e Lógica nos Animes

Este post tem como objetivo fazer algumas inferências lógicas sobre animes em geral. Estas inferências se basearão na matemática e nas leis da física. Meu objetivo aqui não é ridicularizar estes animes na verdade gosto muito deles. E apenas brincar um pouco com cálculos em geral e ver o que se pode concluir.

O planeta do senhor Kaio Sama do anime Dragon Ball Z. Vamos ver o que se pode concluir sobre este planeta usando as leis da física. 

Imagem do Planeta do Senhor Kaio
Calculando o raio do planeta com base na imagem do planeta. Chega-se a um raio próximo a 17 metros deste que se acredite que a casa tenha metros de altura (usando proporções). 

Imagem do Planeta do Senhor Kaio - Raio Aproximado
Conforme relatado no anime DBZ a gravidade do planeta é cerca de 10 vezes maior que a gravidade da Terra. O que fez o treino de Goku ser muito promissor.

F = G.M.m/r² (equação da gravitação universal)
P = m.g (formula do peso)
m.g = G.M.m/r² (juntando as duas fórmulas acima)
g = G.M/r² (simplificando a fórmula acima)

Como sabemos a gravidade neste planeta é 10 * 9,8 (que é 10 vezes a gravidade da Terra). O raio deste planeta é aproximadamente 17 metros. E G é a constante gravitacional que vale 6,67 * 10⁻¹¹ N.m/Kg²

Assim pela última vamos calcular a massa (M) do planeta. 

M = g.r²/G = 10 * 9,8 * 17*17/(6,67 * 10⁻¹¹) = 1,89 * 10¹⁶ Kg

Vamos calcular a densidade do planeta: d = M/v (densidade = massa / volume)
volume = 4/3*pi*r³ = 4/3 * 3,141592 * 17³ = 20579,53 m³

d = 1,89 * 10¹⁶/20579,53 = 9,18 * 10¹¹ Kg/m³


Pelas contas observa-se que o planeta do senhor Kaio é extremamente denso. Vamos comparar a densidade do planeta com a densidade do Ósmio 2,261 * 10⁴ Kg/m³. Ou seja, a densidade do planeta é mais de 40 milhões de vezes a densidade do Ósmio que é o elemento da tabela periódica mais denso. 



Algumas perguntas sobre o planeta que me deixam intrigado: Para que ter um carro neste planeta se este planeta tem apenas uma rua. E esta rua tem certa de 106,76 metros de comprimento. Acho desnecessário um automóvel para isto.



Espero que tenham gostado da viagem por trás da equações. 

att.

quarta-feira, 8 de fevereiro de 2012

Jogo da Memória

Olá neste novo post de hoje pretendo apenas divulgar um pequeno jogo de memória que fiz. A ideia básica do jogo é localizar duas imagem iguais em um conjunto de imagens. Ao todo tem-se 30 imagens. Para isto clique com o botão esquerdo do mouse sobre uma região e uma imagem irá se abrir. Ao abrir duas imagens caso elas sejam iguais, então elas permanecerão viradas para o lado da figura (cima), caso contrário elas voltam a ser viradas para baixo. Você pode repetir este processo indefinidas vezes até que todas estejam viradas para cima, ganhando assim o jogo.

Este programa foi feito na linguagem Java usando as APIs Swing e AWT para desenvolvimento da interface gráfica. O arquivo .jar utilizado para rodar o programa encontra-se abaixo disponível para download.  

Conforme os leitores poderão reparar embora o jogo seja bem simples ainda assim é bem divertido. Este foi um dos primeiros jogos que fiz em java utilizando os recursos de interface gráfica do Java.



Download Jogo Memória: Download Aqui

terça-feira, 7 de fevereiro de 2012

Calendário Genérico

Olá o objetivo deste post é brincar com um calendário genérico. Este calendário apresentado aqui serve para sabermos o dia da semana que vai cair um determinado dia do mês em um determinado ano e mês. Mais especificamente este calendário calcula datas de 2009 até o ano de 2092, sendo assim serve por muitos anos (100 anos).

Para aprender a utilizá-lo faça o seguinte. Pegue o valor do ano e mês encontrados na tabela abaixo. Este valor é descoberto percorrendo a tabela abaixo como se fosse uma matriz, onde as linhas são os anos respectivamente apresentados e as colunas são os meses. Em seguida, some este valor com o dia do mês atual, com este resultado basta olhar na tabelinha abaixo da imagem apresentada este número corresponde a um determinado dia da semana corrente.

Exemplo: Suponhamos que a data atual seja 08/02/12. Sendo assim, vamos ver o valor associado ao ano  (2012) e mês atual (fevereiro). Repare na tabela maior que este valor associado é o 3 (encontrado nas interseções de 12 e FEV. Este valor deverá ser somado com o dia do mês 08, assim teremos 3 + 8 = 11.  Com este valor obtido (11) vamos olhar o mesmo na tabelinha abaixo da imagem, vemos nesta que o valor 11 encontra-se na quarta-feira, logo o dia da semana que vai dar 08/02/12 será quarta-feira o que confere com realidade.


Caso tenham gostado a imagem acima e as abaixo poderão ser copiadas. Para ampliá-las basta clicar nas mesmas. As montagens das imagens foram todas desenvolvidas por mim, usando o software Corel Draw, já a ideia do calendário é de conhecimento geral. 

A ideia de fazer este calendário surgiu após ver na casa de um amigo meu calendário parecido (com as mesmas regras), achei muito legal e queria ter um calendário deste para mim. Sendo assim chegando em casa decide reproduzir o mesmo usando o software Corel Draw e ai encontra-se o resultado.

 


Até o próximo post.

Apresentação do Blog


Bem vindo ao blog Paradoxo Bit. Primeiramente vou explicar o porquê do nome do blog. A ideia central do blog é falar de temas relacionadas a informática e computação. Sendo assim a palavra "bit" acho que descreve bem estas áreas, para esclarecer ainda mais BIT ou bit vem do inglês e significa BInary Digity (Digito Binário). Mas vejam bem  a palavra digito remete a ideia de dez e originalmente veio dos dedos das mãos que são dez. Sendo assim a expressão Digito Binário é paradoxal, pois irá representar números que atingem no máximo dois estados (0 a 1) em um espaço de dez estados (0 a 9).

A ideia deste nome é para mostrar um ambiente onde as coisas apesar de serem construídas sobre bases sólidas (matemática) as vezes se tornam paradoxal (informática).

O principal objetivo deste blog é postar algumas ideias sobre programação ficando principalmente nas linguagens Java e C. Postarei alguns tópicos interessante sobre outras áreas do conhecimento principalmente relacionados a informática e matemática. Todos os trabalhos mostrados neste blog são de minha autoria.

Espero que gostem do blog.