terça-feira, 30 de dezembro de 2008

Aprenda C++ malvadamente(3)—Variáveis e afins

Respostas do post passado

1- Escreveria #include < Adm >

Mas onde eu acharia uma biblioteca igual a esta?O mais provável seria que o sr. a tivesse feito em minha homenagem.Então seria #include "Adm.h" com aspas para avisar o compilador para procurar a biblioteca (header file) no seu programa e não no lugar onde ele procura por padrão. O porquê de .h veja ali em baixo em preliminares.

2- cout<<"Eu nao sei mostrar na tela";

Então eu sei mostrar na tela.O sr. não.

3- Nada ora, pois. Já que cada ponto e vírgula determina o fim de uma instrução não há necessidade de identação.Identação é uma viadagem técnica que torna o código mais legível :cada linha uma instrução,separadinho,coloridinho...

4-Só porque é caseiro não usa a funcão main()?O sr. não fez programa em casa?Não tem main ,não?


 

Preliminares

* O texto do seu programa é chamado código fonte. A extensão para códigos fonte em c++ é .cpp e para bibliotecas é .h no geral.Há também .hpp, .rc, etc..

* Palavra reservada ou keyword é toda palavra própria da linguagem,nesse caso c++.São exemplos de palavras reservadas: int,return , using e etc(não o etc é claro).


 

Indo direto ao ponto— Variáveis e memória

O computador tem uma memória,dita principal,chamada RAM.Tudo para rodar no computador,incrusive seu msn e o seu compilador, tem que reservar espaço nessa memória.Como nossos programas também rodam em computador somos obrigados a reservar espaço por ai para armazenar as informações que utilizaremos neles.Para isso usaremos variáveis.

----------------------------------------------------------------------------------------------------------

Variável é um espaço reservado na memória para guardar algum dado

--------------------------------------------------------------------------------------------------------

A variável,seu tipo, é definida pelo tamanho (determinado em bytes) do dado que ela vai ter que guardar.A tabela abaixo mostra os diferentes tipos de variáveis.Não é preciso decorá-los ,por enquanto apenas saiba o que é e para que serve um int,float e um char.

Tipo de variável

Para que serve

O que pode guardar¹

int

Para números inteiros

De -2147483647 até 4294967295

float

Para números decimais, vulgo número quebrado

Coisas como 1.34 ou 1.23543

char

Para caracteres (letras,símbolos e afins)

'S' ou "veja lá em baixo"

string

Para frases e caracteres

"String é um char evoluído"

bool

Verifica condições lógicas

true(que é verdadeiro) ou false(falso)

double

Números quebrados, racionais

O dobro da capacidade do float

wchar_t

Para caracteres "selvagens" (muito longos)

Caracteres "selvagens" ,uai


 

Existem palavras(especificadores) que mudam as características da variável:


 

Especificador²

Atua em

Faz...

  

  

  

  

unsigned

int,char e junto com short ou long ex.:unsigned short int

com que a variável só receba valores positivos

short

int ex.:short int

diminuir o tamanho da variável pela metade

long

int ,double ex.:long double

dobrar o alcance(tamanho )da variável


 

¹O valor de int considera todos os alcances(long,signed ,etc.).Note que apenas declarar int resolve a maioria dos casos.

²signed é o tipo de variável que aceita tanto valores positivos quanto negativos.

Note que eu não pus o tamanho em bytes de cada variável.Como isso depende do seu ambiente o melhor é perguntar ao seu próprio compilador.Digite esse código fonte;a saída será o tamanho de cada tipo de variável no seu sistema.

#include < iostream >

using
namespace std;

int main()

{

cout << "O tamanho de um int e:\t\t" << sizeof(int) << "bytes.\n";

cout << "O tamanho de um um short int e:\t" << sizeof(short) << "bytes.\n";

cout << "O tamanho de um long int e:\t" << sizeof(long) << "bytes.\n";

cout << "O tamanho de um char e:\t\t" << sizeof(char) << "bytes.\n";

cout << "O tamanho de um bool e:\t\t" << sizeof(bool) << "bytes.\n";

cout << "O tamanho de um float e:\t" << sizeof(float) << "bytes.\n";

cout << "O tamanho de um double e:\t" << sizeof(double) << "bytes.\n";

cin.get();

return 0;

}

Entenderam a idéia de variável?Não? Sim?Vamos ver um exemplo então:


 

Dois.cpp

//Variáveis,cin e endl


 

#include < iostream >

using
namespace std;

int main()

{

int idade;//cria uma variável inteira(int)chamada idade

cout<<"Qual a sua idade?(seja sincero)"<< endl;//veja endl abaixo

cin>>idade;//veja abaixo cin

cout<<"A sua idade e "<< idade;

cin.get();

cin.get();

return 0;

}


 

Saída(O que o sr. verá na tela)

Qual a sua idade?(seja sincero)

56(ou o que for digitado)

A sua idade é 56


 

Entendendo

A instrução int idade; cria uma nova variável.Em seguida o usuário é interrogado para digitar um valor e então vem: cin>>idade; .O que o usuário digitou é armazenado na variável idade tanto é que imprimimos na tela o que ele digitou com

cout<<"A sua idade é "<< idade;

Veja que sai o valor da variável e não a palavra idade(para mostrar idade na tela teria que ter aspas).Observe também o <<.Ele serve para separar a frase terminada nas aspas e variável que não pode ter aspas .Veja outro exemplo:

cout<< "Exemplo: "<< idade << "é muita coisa";

Saída: Exemplo 3245236 é muita coisa


 

Então eu posso concluir que cin é para entrada de dados?

Isso jovem padawan.O comando cin recebe um dado digitado pelo usuário e o armazena em uma variável. Sua sintaxe(escrita) é essa:

cin>>nome da variável;

cin>> nome da variável>>nome de outra variável >>e assim por diante;

Note o >> (menor menor)diferente do cout que é maior maior(<<).


 

Mas e o endl?

É uma frescura seqüência que faz o texto pular uma linha.Também existe:

Sequência

Equivale a

 \n

 Nova linha

 \t

 Tabulação

 \b

 Backspace

 \"

 Aspa dupla

 \'

 Aspa simples

 \?

 Ponto de interrogação

 \\

 Barra invertida


 

Esta tabela não foi tirada da Wikipédia

Ex.:cout<<"Nova linha\n";

cout<<"Outra linha"<< "\n";

cout<<"\nJá encheu";

Perceba que mesmo com aspas ("\n") não se imprime \n, mas sim pula-se a linha.


 

Nome de variáveis, inicialização e constantes

Nome das variáveis

O sr. viu que a variável que usei se chamava idade .Mas por que idade?Simplesmente porque eu quis. Uma variável pode ter qualquer nome desde que este não seja uma palavra reservada, contenha símbolos esdrúxulos (só é permitido underline) ou comece com um número. Regra prática: Não nomeie variáveis como você conversaria com seus miguxos.

Ex.:

1var                      Inválido  

Id§d* Inválido!

MiGGUxinH@aM) Muito inválido

sobre               Valido


 

--------------------------------------------------------------------------------------------------------------------------------------------------

Atenção:C++ é case sensitive.Isso significa que int é diferente de INT e Int, ou seja, ele diferencia minúsculas de maiúsculas.

---------------------------------------------------------------------------------------------------------------------------------------------------

Inicialização

O Sr. também viu que a variável idade recebeu o valor digitado pelo usuário.Mas que valor ela tinha antes disso?Tinha um valor aleatório dado pelo compilador.Mas se quiséssemos que a variável idade começasse com um valor?Easy ,é só inicializá-la com aquele valor.Veja:

int idade=63;

Você pode inicializar a variável e depois atribuir-lhe um valor:

int idade;

idade=123;

Pode-se também atribuir a uma variável o valor de outra:

int idade=suaidade;

Constantes

Uma variável pode ter um valor constante também.Se o sr. declara uma variável como constante obviamente o sr. não poderá mudar seu valor posteriormente.Se for baca o suficiente para tentar fazê-lo o compilador retornará um erro.Para declarar uma constante podemos usar:

# define

Ou:

const

#define é uma diretiva que indica, vulgarmente falando, uma troca. Se disessemos

#define adm 77

toda vez que aparecesse adm no nosso código ele seria substituído pelo número 77. Mas isto além de pobre e tosco é um mau hábito(como #define é uma diretiva para pré-processador o compilador nunca verá adm ,apenas o número 77).Uma maneira mais adequada de fazer isso é usando a keyword const.Sua sintaxe é a seguinte:

const tipo de variável nome da vaiável =valor;

Ex:

const int x=234;

As variáveis const devem ser inicializadas com um valor.


 

Mas por que raios eu usaria uma variável constante?

Primeiro para proteger-se do seu próprio burrice erro ou erro de terceiros. Depois como veremos const também se aplica a outras coisas e além do mais variáveis constantes impedem que algo no nosso programa, contra a nossa vontade, mude o teor de nossas variáveis (referências passadas para funções ,etc.)

Tres.cpp ,o programa final deste artigo, exemplificará o uso de todas estas trenheiras(cin,cout,#define,const e etc).

#include < iostream >

using
namespace std;

#define esse 34//usando o define

int main()

{

const
float age =26.7;//inicialização da variável age.Veja que é //26.7 sem virgula mas sim com ponto

int idade,ide;//fazendo dois int.note a virgulas separando cada nome de variavel

idade=97;//agora idade tem valor de 97

cout<<"Digite sua idade"<< endl;

cin>>ide;//recebe uma valor para ide

cout<<"Voce digitou "<< ide << endl ;

cout<<"Agora mostrando sua real idade:";

ide=idade;//ide passa a ter o mesmo valor que idade

cout<< ide << "\n";

cout<<"Uma idade que faz muito tempo para voce: "<< age << "\n";//usando a variável constante

cout<<"Outra igualmente distante:" << esse; //finalmente usamos o esse definido pelo #define

cin.get();

cin.get();//aqui também são precisos dois cin.get()

return 0;

}

Saída(o que sai disso tudo)

Digite sua idade

20

Voce digitou 20 como sua idade

Agora mostrando sua real idade: 97

Uma idade que faz muito tempo para voce: 26.7

Outra igualmente distante: 34


 

Entendendo

Números decimais,que usamos com float, devem ser com ponto e não com virgula por causa da notação americana.O resto é auto ilustrativo.Mostra como inicializar as variáveis com const ou #define,como atribuir-lhes valores , o uso mais elaborado do cout e o uso do cin para recebermos um valor digitado pelo usuário.


 

Checando o que o Sr. (não)aprendeu

1- Para que serve o comando cin?

2- Mostre-me com declarar duas variáveis ,um float e outro int chamadas Joao e Maria.

3- Usando Joao e Maria peça para o usuário digitar dois valores e os receba.

4- O que há de errado com este código??

#include< iostream >

using
namespace std;

int main()

{

int
char;

cout<<"Digite sua idade"<< "\n";

cin>>char>>"\n";

cout<<char;

cin.get();

cin.get();

return 0;

}

5- Em que situação uma variável const pode ser alterada???


 

Artigo longo...Se não entenderem, os COMENTÁRIOS existem para isso.


 

0 COMENTE AQUI: