Posts com Tag ‘Tutorial’

h1

Comandos break e continue

Agosto 18, 2009

Bom, vamos começar a adiantar as coisas… não sei quando, mas vamos começar. Já peguei o cd da MSDN AA pra instalar o Windows no meu note, que teve que ser formatado… logo, espero, eu volto a postar sobre XNA.

Bem, hoje vamos falar sobre uns comandinhos legais: break e continue.

BREAK

O comando break para um laço de repetição. Bem, pelo menos é isso que vamos ver hoje. Ele para sem dó nem piedade.

Exemplo:

#include <iostream.h>

void main ()

{

int x,i;

for(x=1;x<=100;x++)

{

cout<<x<<endl;

}

for (i=1; i<=100; i++)

{

cout<<i<<endl;

if(i=50)

{

break;

}

}

}

O que acontece a cima?

Primeiro FOR imprime na tela os números de 1 a 100. O segundo FOR vai imprimir de 1 a 50. Por que ele para? O BREAK mandou parar o laço. Num programa maior quando chega no BREAK o programa pula para a próxima linha do programa.

CONTINUE

Agora o continue é um pouquinho parecido. Ao invés de parar o laço e pular fora, indo pro próximo comando, o continue manda continuar o laço ignorando a linha depois deste.

Exemplo:

#include <iostream.h>
void main ()
{

int x,i;

for(x=1;x<=100;x++)

{

cout<<x<<endl;

}

for (i=1; i<=100; i++)

{

if(i=50)

{

continue;

}

cout<<i<<endl;

}

}

Nesse exemplo o programa roda o FOR, mas quando chega no CONTINUE, quando o valor de i for 50, ele ignora o COUT e não imprime o valor de i, porém, só naquela vez. Depois retorna ao laço, normalmente.

Bom, é isso.. não sei se fui muito clara… é que estou sem inspiração XD preciso voltar a postar.

Até mais

h1

Operadores aritméticos

Agosto 16, 2009

Não falamos muito sobre os operadores aritméticos, né?

Se você lembra que aritmética é um campo de estudo da matemática você deve imaginar do que estamos falando.

As operações em C/C++ (e em C# também) são:

+ adição

- subtração

* multiplicação

/ divição

% módulo

Bom, soma e subtração já usamos, né? Multiplicação e divisão são sinais diferentes dos que já conhecemos, mas tudo bem, né?

E o módulo?

Módulo é o resto de uma divisão. Pra que usar isso?

Bom, se você precisar de uma aplicação que verifique se o número é par você pode usar:

resto=numero%2;

if(resto == 0)

{

cout<<”Numero eh par”;

}

else

{

cout<<”Numero impar”;

}

Muito bem, se você sabe o que é um número par sabe que quando dividimos ele por 2 o resto é 0. Quando o resto é 1 ele é impar. Quando o resto não for nem 0 e nem 1? Bom… se você atribuiu essas variáveis como inteiras isso não pode acontecer… se acontecer você conseguiu uma coisa incrível, meu caro!

Eu sei que deveria ter feito esse post antes… mas eu tinha esquecido dele. Sinto muito. Qualquer sugestão…

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

Variável do tipo char

Julho 5, 2009

Olá. Só falta falar de mais um tipo de variável antes de falar mais afundo sobre… sobre…elas? Bom adivinha qual faltava? Tipo char. Bom, string é outra… Mas…  Vamos dar um tempo.

Variável char

O tipo char é um tipo pequeno. Ele cabe muita pouca coisa. Ela cabe 8 bits. Para você entender o int cabe muitos números, certo? (vide o final do post sobre double e float) mas o tipo char só agüenta do -127 até o 128. Mas tem uma vantagem em relação ao tipo int: ela cabe letras! Bom, quase isso, nela cabem números da tabela ASCII. A Tabela ASCII é uma tabela em que cada número vale uma letra.  Para saber sobre a tabela ASCII tem um texto direto e simples aqui: http://equipe.nce.ufrj.br/adriano/c/apostila/tabascii.htm . Bom, cada número até 127 vale um sinal, letra, número, espaço… Também tem como conseguir uns desenhos… isso fica para a próxima. O importante é que você saiba como o tipo char encarar um caractere.

Quando você pede para a variável do tipo char guardar um certo número ela guarda um caractere só. Se você pedir para ela guardar o número 100 ela vai guardar o sinal referente ao 100 na tabela ASCII. Se você pedir para ela guardar um número superior aos números da tabela, ela vai guardar só um último digito e deixá-lo como número comum mesmo.

Não sei se alguém notou que quando escrevemos em C++ sempre precisamos escrever sem acentos ou na hora de rodar o programa você via uma coisa esquisita no lugar onde seria o acento. Alguém notou? Usando a tabela ASCII você pode por os acertos.

Bom, é isso.

Um exemplo esta no código do joguinho de adivinhação em while. (vide o post do joguinho aqui e o código dele aqui).

Você declara a variável normalmente

char alguma_coisa;

E depois o usa. Um exemplo é da pergunta se deseja continuar ou não:

cout<<”deseja continuar? Digite n ou s”<<endl;
cin>>alguma_coisa;
if((alguma_coisa==’n’) || (alguma_coisa==’N’))
{
cout<<”Obrigaod pela resposta”<<endl;
}

Assim o teste é feito para saber se a pessoa digitou um ‘n’ minúsculo ou maiúsculo.

Olhe atentamente o código do joguinho.

Tem uma parte que tem a variável char chamada asci, que recebe o valor de 198 e por isso ao rodar o programa aparece um caractere ‘a’ com o sinal de tio ‘~’. Sim, a tabela ASCII não vai só até o 127 no Brasil XD. Um dia eu falo sobre isso.

Bom, qualquer dúvida é só falar, okay?

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

Laço de Repetição FOR

Julho 1, 2009

Me toquei que nem expliquei duas coisas: laço de repetição For e aquele código do joguinho de while. Preciso fazer isso, né?

Muito bem, vamos começar com o For agora.

O que é For?

For é um tipo de laço de repetição. Tem quem o chame de laço contado pois você sabe quantas vezes ele vai se repetir. Tem quem chame de laço de newbie. Por isso eu quis passar sobre ele por último, pois te muita gente que quando aprende não quer fazer outra coisa, e até se complica depois por causa das limitações do for quando vai aprender outra coisa.

Eu mesmo, até entrar no último semestre do curso técnico só usava for por que era, pra um newbie, mais fácil. Ao dar aula pra minha aluninha (não vou citar nomes mas um beijo pra ela) eu percebi que realmente é um problema de newbie achar que o for é a solução de todos os problemas >< E como este blog é voltado pra newbies resolvi falar do for por último, pra ninguém se apegar a ele.

Bom o Laço For é utilizado quando sabemos previamente quantas vezes o laço vai rodar.

EXEMPLO: quero que um programa pergunte a idade de 40 alunos. Nesse caso se usa For na boa.

Bom o For tem uma estrutura simples: você precisa dizer o valor inicial de uma variável, o valor final e a cada vez que o laço rodar o que vai mudar na variável.

EXEMPLO:

int idade, contador, soma, media;

soma=0;

for (contador=1; contador<=40; contador=contador+1)

{

cout<<”Qual a idade do aluno <<contador<<” ?”<<endl;

cin>>idade;

soma=soma+idade;

}

media=soma/40;

cout<<”A media das idades e de  “<<media<<end;

Bom, o que o programa faz? Ele começa criando as variáveis idade, contador, soma e media, e depois atribui o valor de 0 (zero) a variável soma. Ai ela entra no for. Ao entrar no for o programa entende que a variável contador é que é responsável pelo controle de quantas vezes o laço vai rodar. O contador começa no um (1). Ai entra um ponto-e-virgula (;). O ponto-e-virgula serve para mostrar  ao programa que a instrução de começar o contador no um (1) acabou. Ai vem a instrução que indica até quando o laço for vai rodar. Ele vai rodar até o numero 40. Quando o contador chegar ao numero 40 ele vai parar. Ai outro ponto-e-virgula que indica que a instrução acabou e ai vem a instrução que indica que a cada vez que o for rodar vai ser acrescentando 1 ao valor anterior do contador.

O for precisa ser indicado dessa maneira pra funcionar.

Dentro do for é perguntado a idade do aluno, acrescentado a idade a variável soma e fora do laço for é feita  a conta da média e dita pro usuário.

O importante é lembrar do que vai dentro do laço e o que não vai.

Soma vai dentro do laço por que ela começa com zero e a cada vez que entrar uma altura diferente vai ser acrescentado ao valor anterior. EXEMPLO: ela começa com zero, depois com o valor que recebe a variável idade, digamos que 12, depois na próxima vez que o laço for  rodar vai acrescentar outro valor de idade, digamos que 13 e ai o valor que a variável soma vai ter agora será 12+13, que é 25. Na próxima vez que rodar o for a variável soma será 25+idade, e assim o valor da variável soma vai crescendo.

Lembra que média é a soma de todos os valores dividido pela quantidade de valores? Por isso a variável media fora do for é igual a soma dividido por 40.

Se um exemplo de algoritmo de For:

Algoritmo For

Algoritmo For

Por favor, qualquer dúvida avisem, eihn?

h1

Entendendo o começo do código em XNA

Junho 26, 2009

NOTA: Este texto tava quase pronto há semanas. Mas não terminava. Até que eu cheguei em casa com um livro novo de C.# quando achei minha irmã com o note ligado na web. (não tenho roteador wireless). Era um sinal dos céus para postar este texto. Lá vai:

Olá olá olá, eu não esqueci do projeto XNAF. Bem. Primeiramente gostaria de falar sobre o jogo que vamos fazer. Lembre-se que estamos começando a nossa jornada e por isso começaremos com algo simples, depois subindo de nível e depois, quem sabe, algo bem legal parecido com seus games favoritos?

Primeiro vamos fazer um joguinho de Torre de Hanói. Chato? Bem, para começar ta ótimo. Depois iremos fazer menus e todas as frescuras e partir para algo legal. Lembre-se que se você souber manejar seu equipamento e ter a lógica certa você poderá fazer o que você quiser.

Primeiro, você fez o algoritmo da Torre de Hanói? Eu achei que vocês iriam mandar para eu corrigir XD enfim, você sabe quantos casos irão existir? Pois é, iremos ter algum trabalho para programar tudo. Começaremos com a torre de 3 anéis, depois faremos um menu em que o usuário escolhe qual o nível de dificuldade (número de anéis) e pois ai a diante vamos implementar nosso joguinho.

Bem, chega de papo! Abra o seu C# Express. O meu é diferente, é o próprio Visual Studio 2008 profissional. Por que o meu é diferente do seu? Estudantes de faculdade que seja parceira do MSDN AA ganham algumas licenças de grátis. Se você estiver entrando na faculdade pergunte ao seu professor se sua faculdade é parceira. Bem, voltando ao assunto principal abra o seu Express. Vá na abinha File>New>New Project

Ai abrirá esta janelinha:

New Game em XNA

New Game em XNA

Está Vendo o pedaço da janela destinado aos Project Types? Lá você escolherá o tipo de projeto, se é um programa, um site, um XNA Project…Bem, clique no XNA  Game Studio, e do lado aparecerá os templates. Escolha Windows Game.  No name ponha “Torre de Hanói”, ou como preferir. Escolha onde vai salvar (é bom criar uma pasta pro seu jogo). Dê OKAY

Visualizando o código em XNA

Visualizando o código em XNA

Bom, vou explicar o código inicial.

Primeiro temos o cabeçalho do código. Ele chama todas as bibliotecas usadas, todos os recursos do XNA.

using System;

using System.Collections.Generic;

using System.Linq;

using Microsoft.Xna.Framework;

using Microsoft.Xna.Framework.Audio;

using Microsoft.Xna.Framework.Content;

using Microsoft.Xna.Framework.GamerServices;

using Microsoft.Xna.Framework.Graphics;

using Microsoft.Xna.Framework.Input;

using Microsoft.Xna.Framework.Media;

using Microsoft.Xna.Framework.Net;

using Microsoft.Xna.Framework.Storage;

Aqui começa o jogo: namespace Torre_de_hanói
Lembra quando usavamos o void main(){ para começar o progrma? De um jeito leigo e bruto vamos dizer que é a mesa coisa. Vamos dizer… não é necessáriamente a mesma coisa. Um dia eu explico.

As linhas que começam com /// são comentários.

Aqui começa a grande classe pública do jogo. Uma classe…ah…a tia MayogaX explica depois. Bem, ela é pública por que pode ser acessada em qualquer parte do projeto. Ou seja, pública mesmo.
public class Game1 : Microsoft.Xna.Framework.Game

Aqui chamamos, ou inicializamos, todo o nosso conteúdo não gráfico. protected override void Initialize()

Aqui chamamos todo o conteúdo gráfico (imagens, textura…)
protected override void LoadContent()

Aqui é onde fica toda a lógica, cálculos, leitura de entrada de dados..
protected override void Update(GameTime gameTime)

Aqui é onde mandamos desenhar tudo. Sempre que deve ser atualizado a tela devemos mandar aqui.
protected override void Draw(GameTime gameTime)

Bom, o post tá comprido. Este fds começamos pra valer o joguinho.

Beijos

h1

Laço de repetição do while

Junho 22, 2009

Oi, vamos estudar o laço Do While agora?

Para quem não lembra o que é laço de repetição ou while ver o post: http://amethistyreport.wordpress.com/2009/05/26/laco-de-repeticao-while/

Bem, o Do While é bem parecido com o while, porém a condição fica no final do laço.

Mas ele tem uma coisa legal: ele é rodado pelo menos uma vez.

Seguinte: o computador ao ver o do (comando “faça”) entra dentro do laço, faz ele, e ao encontra o while (comando “enquanto”) ele verifica se a pode fazer o do de novo. Se pode ele faz de novo, se não ele não faz.

EXEMPLO:

int contador, valor;

contador=1;

do

{

cout<<”Digite um numero”<<endl;

cin>>valor;

cout>>”Voce digitou “<<valor<<endl;

contador=contador+1;

}

while(contador<=10);

O que este programa faz?

Ele pede o número e fala que número você digitou e no final soma mais um no contador. Toda vez que o programa rodar o do while o contador vai ter um valor diferente. Logo quando o contador chegar a 10 ele para de rodar.

Legal né?

Nota: lembre-se que o while é fora das chaves do do, e a condição de existência (enquanto) é dentro de parenteses e tem um ponto-e-virgula depois.

Por hoje é só pessoal.

Fica aqui um exemplo de fluxograma com while

fluxograma do while

fluxograma do while

h1

O código do joguinho de while

Junho 20, 2009

Vou postar a resposta do joguinho. Amanhã vejo se posto sobre blocos de repetição (a continuação) ou a primeira parte do PFXNA.

Ah, logo posto o código denovo comentado.

#include <iostream.h>
#include <stdlib.h>
#include <time.h>
void main()
{
int numero, memoria, contador, cont2, max=100, min=1;
char resposta, asci;
asci=198;
do{
cout<<ascc<<ascc<<”   BEM VINDO AO JOGO DE ADIVINHAC”<<asci<<”O   \n\n”;
contador=0;
srand(time(NULL));
memoria=rand()%(max-min+1)+min;
cont2=1;
cout<<”**Digite um numero** \n”;
while(contador!=1)
{
cout<<”\n    “;
cin>>numero;
while(!(numero<=100 && numero>=1))
{
cout<<”**Entrada invalida, tente novamente**\n   “;
cin>>numero;
}
if(numero==memoria && cont2<=6)
{
cout<<”\n   PARABENS!!! Voce acertou em “<<cont2<<” tentativas! \n\n”;
contador=1;
}
if (numero==memoria && cont2>6)
{
cout<<”\nOpa! Voce acertou o numero, mas tentou em “<<cont2<<” vezes, por isso voce perdeu. \n\n”;
contador=1;
}
if ( numero>memoria )
{
cout<<”   Digite um numero menor.\n”;
}
if ( numero < memoria)
{
cout<<”   Digite um numero maior.\n”;
}
cont2++;
}
do {
cout<<”\nDeseja jogar novamente? Digite S para sim ou N para nao. \n\n”;
cin>>resposta;
}
while ((resposta!=’n') && (resposta!=’N') && (resposta!=’s’) && (resposta!=’S'));
}
while((resposta==’s’) || (resposta==’S'));
}