Posts com Tag ‘Curiosidade’

h1

Diferenças: = e ==

Agosto 16, 2009

As vezes até mesmo os mestres fazem coisas erradas… descuido… e nós mortais também nos descuidamos. Um dia um programa não estava rodando direito, e quando eu fui ver era um problema simples: um if estava usando somente um sinal de “igual” (=).

Qual a diferença?

Bem, de um modo simples você usa o sinal de = quando vai atribuir um valor (ou outra coisa) a uma variável, ou objeto, ou ao estanciar algo. Sinais de == juntos é verificação. Juntos significam “igual a”.

Tanto é que o sinal = é um operador de atribuição, ele atribui um valor. Os == se chama operador relacional. Quando usar cada um?

Você usa = quando vai atribuir um valor. Dãa. Por exemplo:

int x;

x = 4;

int u;

u = x;

Você usa == quando quer… verificar se algo é igual a outra coisa. Exemplo:

int x, u;

x = 4;

u = 5;

if ( x == u)

{

cout<<”Eles são iguais”;

}

Se você usar = num if vai dar erro de compilação. Apesar que um dia a muito tempo aconteceu o milagre de não dar erro. Digo, eu deixei um = só no if, e na hora que o programa chegava na linha do if ele atribuía um tal valor a variável ao invés de verificar se eram iguais. Nunca mais isso aconteceu comigo. Mágica. Do mesmo jeito, não façam isso em casa. E nem no trabalho.

h1

Projeto XNAF: colocar imagens do nosso jogo em XNA

Julho 5, 2009

Olá
Vamos continuar com o joguinho de torre de Hanói usando XNA? Lembra, é o nosso projeto, meu e seu, leitor imaginário. XD
Lembrando que vamos começar por baixo, fazendo coisas simples e depois aumentando a dificuldade.

Bom, primeiro vamos pegar essas imagens ai e salva-las, e é bom deixar com o mesmo nome que eu dei. Só para ajudar.

barra

barra

disco_1

disco_1

disco_2

disco_2

disco_3

disco_3

Bom, salvaram elas? Agora abra o Visual Studio ou o Visual C# Express. Abra o projeto da torre de Hanói. Você pode ir por File>>Open>>Project/Solution e escolher o arquivo dentro da pasta torre de Hanói com o nome de Game1.cs

Ou você clica no nome do projeto na abinha de Recents Project.

Bom, vá à abinha da Solution Explore, que é onde mostrar todos os componentes (arquivos) do projeto. Se ela não estiver visível vá ao menu View>>Solution Explore. Ou dê Ctrl+Alt+L.

Bom, Tá vendo onde está escrito Content? Clique sobre ele (para selecionar) e depois clique com o botão direito e escolha add e crie uma pasta. A pasta deve ter o nome de Sprites. Sprites? Ah pai, a tia MayogaX explica depois. Enfim:

Solution Explore

Solution Explore

Agora clique com o botão direito na pasta criada e escolha add>>existing item e ai escolha as imagens. Uma de cada vez.

Bom, primeiro tenho que contar uma coisa: como testar seu jogo. É claro que por enquanto não tem nada, mas só para você já ficar sabendo, olhe a imagem abaixo:

obotão player

Ta vendo o botãozinho verde? Se você clicar nele pode ver como está ficando o sue jogo. Ou seja, por enquanto uma tela azul. Vamos trocar a cor dele primeiro?

Vá onde tem o código:  protected override void Draw(GameTime gameTime){

Vá na linha depois e onde tem escrito a cor de tonalidade azul escreva White:

GraphicsDevice.Clear(Color.White);

É importante que escreva White com ‘w’ maisculo. Em C# há distinção de letras maisculas de minusculas.

Agora clique no botãozinho verde que eu acabei de falar. A tela tá branca, né? Por enquanto, por enquanto, vamos deixa-lá assim.

Bom, poderiamos criar jeitos muito imaginários para controlar as imagens… por enquanto vamos fazer do metodo mais simples, certo?

Agora vamos criar a váriavel  que chama a imagem e a variavel que diz em que posição da tela cada coisa vai ficar. A começar com a barra. Pense comigo: por que variavel a posição na tela? Oras os discos vão ter que se mover, né?

Vá na classe publica Game1 e escreva logo depois de onde está escrito:

public class Game1 : Microsoft.Xna.Framework.Game

{

GraphicsDeviceManager graphics;

SpriteBatch spriteBatch;

Ai escreva:

Texture2D barra1;

Vector2 barra1posicao = Vector2.Zero;

Texture2D barra2;

Vector2 barra2posicao = Vector2.Zero;

Texture2D barra3;

Vector2 barra3posicao = Vector2.Zero;

NOTA IMPORTANTE: Onde é letra maiscula deve ser maiscula e minuscula deve ser minuscula. Espaços devem ser respeitado. Depois falamos mais sobre isso, mas como eu já disse letras maisculas e minusculas são diferentes em C#.

Bom, percebeu que eu criei 3 barras? Ué, no jogo não são 3 barras? Ai você pergunta por que temos só um desenho de barra e eu respondo: não podemos copiar todas as barras?

Criamos as variaveis de textura e as variáveis de vetor. As variáveis de vetor são para colocarmos as possições nas barras.

Agora vamos dizer qual imagem de cada um e qual a possição.

Vá em  protected override void LoadContent()

E escreva logo depois do segundo cometário:

// TODO: use this.Content to load your game content here

barra1 = Content.Load<Texture2D>(“Sprites\\barra”);

barra2 = Content.Load<Texture2D>(“Sprites\\barra”);

barra3 = Content.Load<Texture2D>(“Sprites\\barra”);

Bom, já criamos as variáveis e já dizemos que cada uma delas é a imagem da barra. É isso que diz essas linhas.

barra1 é o nome da variável. Content.Load diz que dentro da variável vai caber tal conteúdo que deve ser carregado. <Texture2D> diz que é 2d. E depois o arquivo que deve ser carregado.

Bom, agora precisamos mandar desenhar as barras. Onde tiver o código:

protected override void Draw(GameTime gameTime)

{

GraphicsDevice.Clear(Color.White);

// TODO: Add your drawing code here

Escreva logo depois:

spriteBatch.Begin(SpriteBlendMode.AlphaBlend);

spriteBatch.Draw(barra1, barra1posicao, Color.White);

spriteBatch.End();

spriteBatch.Begin(SpriteBlendMode.AlphaBlend);

spriteBatch.Draw(barra2, barra2posicao, Color.White);

spriteBatch.End();

spriteBatch.Begin(SpriteBlendMode.AlphaBlend);

spriteBatch.Draw(barra3, barra3posicao, Color.White);

spriteBatch.End();

Dê o play, Macaco! Digo… ahn… teste o joguinho (dica: apertar F5 é a mesma coisa que clicar no botãozinho de play verde).

Você vê só uma barra, certo? Bem, estão as três, mas agente pôs como todas na mesma posição ZERO. Vamos mudar as posições?

Vá em protected override void Update(GameTime gameTime) e logo depois do comentário // TODO: Add your update logic here escreva:

barra1posicao = new Vector2(170.0f, 200.0f);

barra2posicao = new Vector2(370.0f, 200.0f);

barra3posicao = new Vector2(570.0f, 200.0f);

Teste o jogo agora. Bom, por hoje é só. Depois o resto e depois faremos leitura do mouse no jogo (esse jogo será rodado só em pcs).

Bom, até a próxima!

Olá
Vamos continuar com o joguinho de torre de Hanói usando XNA? Lembra, é o nosso projeto, meu e seu, leitor imaginário. XD
Lembrando que vamos começar por baixo, fazendo coisas simples e depois aumentando a dificuldade.

Bom, primeiro vamos pegar essas imagens ai e salva-las, e é bom deixar com o mesmo nome que eu dei. Só para ajudar.

barra

disco_1

disco_2

disco_3

Bom, salvaram elas? Agora abra o Visual Studio ou o Visual C# Express. Abra o projeto da torre de Hanói. Você pode ir por File>>Open>>Project/Solution e escolher o arquivo dentro da pasta torre de Hanói com o nome de Game1.cs

Ou você clica no nome do projeto na abinha de Recents Project.

Bom, vá à abinha da Solution Explore, que é onde mostrar todos os componentes (arquivos) do projeto. Se ela não estiver visível vá ao menu View>>Solution Explore. Ou dê Ctrl+Alt+L.

Bom, Tá vendo onde está escrito Content? Clique sobre ele (para selecionar) e depois clique com o botão direito e escolha add e crie uma pasta. A pasta deve ter o nome de Sprites. Sprites? Ah pai, a tia MayogaX explica depois. Enfim:

Agora clique com o botão direito na pasta criada e escolha add>>existing item e ai escolha as imagens. Uma de cada vez.

Bom, primeiro tenho que contar uma coisa: como testar seu jogo. É claro que por enquanto não tem nada, mas só para você já ficar sabendo, olhe a imagem abaixo:

Ta vendo o botãozinho verde? Se você clicar nele pode ver como está ficando o sue jogo. Ou seja, por enquanto uma tela azul. Vamos trocar a cor dele primeiro?

Vá onde tem o código:  protected override void Draw(GameTime gameTime){

Vá na linha depois e onde tem escrito a cor de tonalidade azul escreva White:

GraphicsDevice.Clear(Color.White);

É importante que escreva White com ‘w’ maisculo. Em C# há distinção de letras maisculas de minusculas.

Agora clique no botãozinho verde que eu acabei de falar. A tela tá branca, né? Por enquanto, por enquanto, vamos deixa-lá assim.

Bom, poderiamos criar jeitos muito imaginários para controlar as imagens… por enquanto vamos fazer do metodo mais simples, certo?

Agora vamos criar a váriavel  que chama a imagem e a variavel que diz em que posição da tela cada coisa vai ficar. A começar com a barra. Pense comigo: por que variavel a posição na tela? Oras os discos vão ter que se mover, né?

Vá na classe publica Game1 e escreva logo depois de onde está escrito:

public class Game1 : Microsoft.Xna.Framework.Game

{

GraphicsDeviceManager graphics;

SpriteBatch spriteBatch;

Ai escreva:

Texture2D barra1;

Vector2 barra1posicao = Vector2.Zero;

Texture2D barra2;

Vector2 barra2posicao = Vector2.Zero;

Texture2D barra3;

Vector2 barra3posicao = Vector2.Zero;

NOTA IMPORTANTE: Onde é letra maiscula deve ser maiscula e minuscula deve ser minuscula. Espaços devem ser respeitado. Depois falamos mais sobre isso, mas como eu já disse letras maisculas e minusculas são diferentes em C#.

Bom, percebeu que eu criei 3 barras? Ué, no jogo não são 3 barras? Ai você pergunta por que temos só um desenho de barra e eu respondo: não podemos copiar todas as barras?

Criamos as variaveis de textura e as variáveis de vetor. As variáveis de vetor são para colocarmos as possições nas barras.

Agora vamos dizer qual imagem de cada um e qual a possição.

Vá em  protected override void LoadContent()

E escreva logo depois do segundo cometário:

// TODO: use this.Content to load your game content here

barra1 = Content.Load<Texture2D>(“Sprites\\barra”);

barra2 = Content.Load<Texture2D>(“Sprites\\barra”);

barra3 = Content.Load<Texture2D>(“Sprites\\barra”);

Bom, já criamos as variáveis e já dizemos que cada uma delas é a imagem da barra. É isso que diz essas linhas.

barra1 é o nome da variável. Content.Load diz que dentro da variável vai caber tal conteúdo que deve ser carregado. <Texture2D> diz que é 2d. E depois o arquivo que deve ser carregado.

Bom, agora precisamos mandar desenhar as barras. Onde tiver o código:

protected override void Draw(GameTime gameTime)

{

GraphicsDevice.Clear(Color.White);

// TODO: Add your drawing code here

Escreva logo depois:

spriteBatch.Begin(SpriteBlendMode.AlphaBlend);

spriteBatch.Draw(barra1, barra1posicao, Color.White);

spriteBatch.End();

spriteBatch.Begin(SpriteBlendMode.AlphaBlend);

spriteBatch.Draw(barra2, barra2posicao, Color.White);

spriteBatch.End();

spriteBatch.Begin(SpriteBlendMode.AlphaBlend);

spriteBatch.Draw(barra3, barra3posicao, Color.White);

spriteBatch.End();

Dê o play, Macaco! Digo… ahn… teste o joguinho (dica: apertar F5 é a mesma coisa que clicar no botãozinho de play verde).

Você vê só uma barra, certo? Bem, estão as três, mas agente pôs como todas na mesma posição ZERO. Vamos mudar as posições?

Vá em protected override void Update(GameTime gameTime) e logo depois do comentário // TODO: Add your update logic here escreva:

barra1posicao = new Vector2(170.0f, 200.0f);

barra2posicao = new Vector2(370.0f, 200.0f);

barra3posicao = new Vector2(570.0f, 200.0f);

Teste o jogo agora. Bom, por hoje é só. Depois o resto e depois faremos leitura do mouse no jogo (esse jogo será rodado só em pcs).

Bom, até a próxima!

h1

FAQ: O que são números de ponto flutuante, float e double?

Julho 2, 2009

Olá meus leitores queridos. Esta é a primeira semana de julho, e resolvi fazer um post mega sobre o que mais os meus leitores imaginários perguntaram. Como ninguém pergunta nada, só fala “legal”, então não tem o que eu responder. Porém eu pensei: vou fazer um post sobre o que as pessoas perguntam pro tio Google.

A maior dúvida parece ser sobre ponto flutuante, ou, números quebrados.

O que são números quebrados?

Bom, lembra da época da escola? Apesar de que… deixa pra lá. Enfim, e a professora explicou sobre números Q? Números Racionais? Os números racionais são os obtidos através de uma razão (para mais detalhes vai um site de ensino fundamental mesmo XD http://pessoal.sercomtel.com.br/matematica/fundam/fracoes/racionais.htm ). Uma razão é uma divisão. Pense comigo: 1,5 nada mais é que 3 dividido por 2. Normalmente nós escrevemos os números racionais com um número seguido de vírgula e depois outro número ou de uma fração. Uma fração pode se transformar nesse negocio de número seguido de vírgula com outro número depois (não vamos entrar em detalhes matemáticos). Existem cálculos para transformar um número assim>>1,5 em uma fração 3/2. E para transformar o 3/2 em 1,5 é só dividir o 3 por 2.

Bom, sabendo o que para seres normais são os números racionais podemos continuar nosso estudo.

Muita gente chama os números racionais de números quebradinhos, talvez porque eles são quebrados mesmo.

número quebrado, racional

número quebrado, racional

Bom, mas para o computador eles não são “números quebrados”.

Em computação chamamos os números quebrados de ponto flutuante ou vírgula flutuante.

NOTA: Agora eu só vou dar uma por cima. Por enquanto não vamos falar do cálculo de ponto flutuante, certo?

Esses números são definidos por uma Mantissa que multiplica 2 elevado a um certo expoente. Em um ambiente de 32 bits (provavelmente o seu) o ponto flutuante consiste num bit de sinal, 8 bites de expoente e uma mantissa de 23 bits. O bit de sinal é zero para números positivos e 1 para números negativos. Por que um número de sinal? Oras, esqueceu que existem números acima do zero e números abaixo do zero?  O campo expoente é 128 menos alguma coisa. Não se preocupe com isso, e lembre-se que esse número pode ser zero. O campo da mantissa é correspondente à parte fracionária do número Considera-se a mantissa entre o número 1 e 2 (existem infinitos aqui no mundo real).

Eu li um conteúdo legal feito por um professor da Universidade Católica de Brasília. Não sei se tenho autorização pra divulgá-lo… mas tava lá livre… na internet… Resolvi mostrar para vocês. Relaxem, o material é forte. Digo, muito bom e difícil pra quem é newbie como nós, meros mortais. Mas vale a pena dar uma olhada: http://www.ucb.br/prg/professores/gualeve/disciplinas/2006_1/ac1bcc/05_PtoFlutuante.pdf

Bom, voltando ao foco, você quer saber como declará-lo né?

Tem alguns tipos de ponto flutuante. Por hoje vamos falar do float e do double. O float é o que vamos costumar usar. Comporta valores desde 1.40239846e-46 até 3.40282347e+38. Muita coisa né? Lembre-se que o e-46 significa elevado a -46. Adivinha só o que significa e+38. Sim, além de comportar números quebradinhos ainda comporta números muito, mas muito grandes. Significa que se você quiser fazer contas com números grandes pode usar o float no lugar do int, e não só para números quebradinhos.

Um exemplo é que int cabe desde -2.147.483.647  até  2.147.483.648

Bom, o Double é quase igual, a diferença é que cabem muito mais números. Vai de 4.94065645841246544e-324  até  1.7976931348623157e+308. Nunca parei pra pensar como esse número é grande.

Mas por que então o float é mais usado que o Double se o double é maior? Essa é justamente a resposta: o Double é grande demais. Normalmente não precisamos de números tão grandes, e criar uma  variável dessas faz o programa ficar mais pesado e lento. Como estamos só fazendo coisas simples nem dá muita diferença, mas quando você for fazer um programa grande vai fazer diferença sim. É por isso que o float é mais usado que o double.

Existem variações desses tipos de variáveis, mas fica pra outro dia.

Bem, agora considerações importantes: quando você cria uma variável int ela sempre vai mostrar números inteiros, e nunca números quebrados. Se você fizer um programa que divida 1 por 3 e o resultado for colocado em uma variável inteira você terá o resultado 1. A parte decimal é ignorada. Se você pegar essa variável resultado e dividir por 2 o resultado via ser 0. Sempre é ignorada a parte decimal.

Porém se você cria uma variável de ponto flutuante você pode mostrar tantos números inteiros como números decimais.

Contas são realizadas normalmente.

Bom, alguma dúvida é só falar. Ainda sinto que não respondi a todas as perguntas dos leitores imaginários pára-quedistas do Google.

h1

Dois códigos… um em C e outro em C++

Junho 29, 2009

Uhn, foi mal não postar o resto de XNA… semana péssima…começou com um mal sábado…

Charada: qual desses dois códigos é melhor? Por que um deles não tá funcionando direito? Qual era o objetivo?

#include <stdio.h>
#include <conio.h>
#include <math.h>
main()
{
int M[4];
int I;
for (I = 1; I <=4; I++)
{
printf(” Entre com o %d numero: “, I); scanf(“%f”, &M[I]);

if ((M[I] %2 == 0)||(M[I] %3 == 0))
{
printf(“Numero divizivel por 2 ou 3  “, M[I]);
}        }

getch();
}

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
int M[4], I;
for(I=1; I<=4; I++)
{
cout<<”Entre com numero  “<<I<<endl;
cin>>M[I];
if((M[I]%2==0)||(M[I]%3==0))
{
cout<<”Numero “<<M[I]<<” eh divisivel por 2 ou 3″<<endl;
}
}
system(“PAUSE”);
return EXIT_SUCCESS;
}

resposta…?

adivinha quando sai

h1

Por que existem tantas linguagens?

Maio 25, 2009

“Uma pergunta bastante relevante que surge na cabeça de quase todos os programadores certa hora da vida é: por que existem tantas linguagens de programação? Outra bastante comum é: qual delas é melhor? Alguém poderia responder: existem tantas porque uma vem para corrigir as falhas das outras, e a melhor é a que tem menos falhas. Certo? Errado.”

É assim que começa o post do VidaGeek. O post original você encontra em: http://vidageek.net/2008/08/11/linguagens-de-programacao/#more-356

Eu achei o texto muito bom. Concordo na parte sobre começar com C(eu acrescento o C++ no meio). Uma boa leitura para quem já se fez esta pergunta titulo-do-post.

Aliais, feliz dia do orgulho nerd!!!

h1

SPOJ!

Maio 22, 2009

SPOJ!! Sphere Online Judge

Nani? O que é isso? Bem, é uma brincadeira geek. Você entra, se cadastra, escolhe um problema, pensa, programa e vê se tá certo. Há um rank e sistemas de pontuação. Quanto mais difícil for o problema que você resolveu mais pontos você ganha. Eu e meus amigos estamos numa colocação baixa. Apesar de serem programas simples há toda uma lógica matemática por trás.

Sei que a maioria dos meus leitores imaginários não está apto para isso, mas não custa dá uma olhada. http://br.spoj.pl/

Quem sabe não te vejo na Olimpíada de Programação?

h1

Wolfram Alpha

Maio 21, 2009

Oi gente!! Parando a programação normal (o piada ruim) eu vim mostrar algo legal. Um jovem site muito loco, feito por um dos homens mais inteligentes da atualidade. O site é o Wolfram Alpha http://www84.wolframalpha.com/ e é muito legal.

Se você queria saber quantos acessos diários o Google tem pesquise dentro dele www.google.com , se você faz um curso ferrado de engenharia e não sabe como calcular uma derivada peça que o Wolfram Alpha faz para você. Ele faz muitos cálculos, alguns você nunca viu, e mostra o gráfico e como fazer para por esta expressão em um programa.

Ele mostra muitas coisas. Você quer saber a diferença entre dois países? Ele mostra. O ranking do seu site? Ele mostra, como sair com aquela garota linda? Isso ele não mostra.

Porém é perfeito para nerds curiosos. Vale a pena.