A utilidade dos programas "Hello World" mostrados na seção anterior é bastante questionável. Nós tivemos que escrever várias linhas de código, compilá-los e, em seguida, executar o programa resultante apenas para obter uma simples frase escrita na tela como resultado. Ele certamente teria sido muito mais rápido do que digitar a frase saída por nós mesmos. No entanto, a programação não se limita apenas à impressão de textos simples na tela. A fim de ir um pouco mais adiante e tornar-se capaz de escrever programas que executam tarefas úteis que realmente salvar-nos trabalhar, precisamos introduzir o conceito de variável.
Vamos pensar que eu lhe pedir para manter o número 5 em sua memória mental, e então eu lhe pedir para memorizar também o número dois ao mesmo tempo. Você tem apenas dois valores diferentes armazenados em sua memória. Agora, se eu pedir para você adicionar um para o primeiro número que eu disse, você deve manter os números 6 (que é 5 +1) e 2 em sua memória. Valores que poderiam agora, por exemplo, subtrair e obter 4 como resultado.
Todo o processo que você acabou de fazer com a sua memória mental é um símile do que um computador pode fazer com duas variáveis. O mesmo processo pode ser expresso em C + + com o seguinte conjunto de instruções:
|
|
Obviamente, este é um exemplo muito simples, já que usamos somente dois pequenos valores inteiros, mas considere que o computador pode armazenar milhões de números como estes, ao mesmo tempo e realizar operações matemáticas sofisticadas com eles.
Portanto, podemos definir uma variável como uma parte da memória para armazenar um valor determinado.
Cada variável tem um identificador que o distingue dos outros. Por exemplo, no código anterior, os identificadores de variáveis foram a, b e resultado, mas poderia ter chamado as variáveis de todos os nomes que queríamos inventar, desde que eles eram identificadores válidos.
Identificadores
Um identificador válido é uma sequência de uma ou mais letras, números ou caracteres de sublinhado (_). Nem espaços nem sinais de pontuação ou símbolos podem ser parte de um identificador. Somente letras, números e caracteres de sublinhado simples são válidas. Além disso, os identificadores de variáveis sempre tem que começar com uma letra. Eles também podem começar com um caractere sublinhado (_), mas em alguns casos, estas podem ser reservados por palavras-chave específicas do compilador ou identificadores externos, bem como identificadores contendo dois personagens sucessivos sublinhado em qualquer lugar. Em nenhum caso, eles podem começar com um dígito.
Outra regra que você tem que considerar quando se inventar seus próprios identificadores é que eles não podem corresponder a qualquer palavra-chave da linguagem C + +, nem aqueles específicos de seu compilador, que são palavras-chave reservadas. As palavras-chave reservadas padrão são:
asm, auto, bool, break, case, catch, char, class, const, const_cast, continue, default, delete, do, double, dynamic_cast, else, enum, explicit, export, extern, false, float, for, friend, goto, if, inline, int, long, mutable, namespace, new, operator, private, protected, public, register, reinterpret_cast, return, short, signed, sizeof, static, static_cast, struct, switch, template, this, throw, true, try, typedef, typeid, typename, union, unsigned, using, virtual, void, volatile, wchar_t, while
Além disso, as representações alternativas para alguns operadores não pode ser utilizado como identificadores, uma vez que são palavras reservadas em algumas circunstâncias:
and, and_eq, bitand, bitor, compl, not, not_eq, or, or_eq, xor, xor_eq
O compilador pode também incluir algumas palavras-chave reservadas específicas adicionais.
Muito importante: A linguagem C + + é uma linguagem "case sensitive". Isso significa que um identificador escrito em letras maiúsculas não é equivalente a um outro com o mesmo nome mas escrito em letras pequenas. Assim, por exemplo, a variável de resultado não é o mesmo que a variável de resultado ou a variável de resultado. Estes são três identificadores de variáveis diferentes.
Tipos de dados fundamentais
Durante a programação, nós armazenamos as variáveis na memória do nosso computador, mas o computador tem que saber que tipo de dados que deseja armazenar em si, uma vez que não vai ocupar a mesma quantidade de memória para armazenar um número simples de armazenar uma única letra ou um número grande, e eles não vão ser interpretadas da mesma maneira.
A memória em nossos computadores está organizado em bytes. Um byte é a quantidade mínima de memória que podemos gerenciar em C + +. Um byte pode armazenar uma quantidade relativamente pequena de dados: um único caractere ou um pequeno número inteiro (geralmente um número inteiro entre 0 e 255). Além disso, o computador pode manipular os tipos de dados mais complexos, que vêm do agrupamento de vários bytes, como números longos ou de números não inteiros.
Ainda tem um resumo dos tipos de dados fundamentais básicos em C + +, bem como a gama de valores que podem ser representados com cada um:
| Name | Description | Size* | Range* |
|---|---|---|---|
char | Character or small integer. | 1byte | signed: -128 to 127 unsigned: 0 to 255 |
short int(short) | Short Integer. | 2bytes | signed: -32768 to 32767 unsigned: 0 to 65535 |
int | Integer. | 4bytes | signed: -2147483648 to 2147483647 unsigned: 0 to 4294967295 |
long int (long) | Long integer. | 4bytes | signed: -2147483648 to 2147483647 unsigned: 0 to 4294967295 |
bool | Boolean value. It can take one of two values: true or false. | 1byte | true or false |
float | Floating point number. | 4bytes | +/- 3.4e +/- 38 (~7 digits) |
double | Double precision floating point number. | 8bytes | +/- 1.7e +/- 308 (~15 digits) |
long double | Long double precision floating point number. | 8bytes | +/- 1.7e +/- 308 (~15 digits) |
wchar_t | Wide character. | 2 or 4 bytes | 1 wide character |
* Os valores da dimensão e colunas intervalo dependem do sistema, o programa é compilado. Os valores apresentados acima são os encontrados na maioria dos sistemas de 32 bits. Mas, para outros sistemas, a especificação geral é que int tem o tamanho natural, sugerida pela arquitectura do sistema (uma "palavra") e os quatro tipos inteiros char, curto e longo int devem cada um ser pelo menos tão grande como o que precede que, com carvão sendo sempre um byte de tamanho. O mesmo se aplica ao ponto flutuante tipo float, double double e longo prazo, onde cada um deve fornecer pelo menos tanta precisão quanto o anterior.
Declaração de variáveis
Para usar uma variável em C + +, devemos primeiro declará-lo especificando que tipo de dados que queremos que ele seja. A sintaxe para declarar uma nova variável é escrever o especificador do tipo de dados desejado (como int, bool, float ...) seguido por um identificador de variável válido. Por exemplo:
|
|
Estas são duas declarações válidas de variáveis. O primeiro declara uma variável do tipo int com o identificador a. O segundo declara uma variável do tipo float com o varVezes identificador. Uma vez declarado, as variáveis A e varVezes podem ser usados dentro do resto do seu âmbito no programa.
Se você estiver indo para declarar mais de uma variável do mesmo tipo, você pode declarar todos eles em uma única instrução, separando seus identificadores com vírgulas. Por exemplo:
int a, b, c;
Esta declara três variáveis (a, b e c), todos eles de tipo int, e tem exactamente o mesmo significado como:
|
|
Os tipos de dados inteiros char, short, long e int podem ser assinados ou não assinados de acordo com o intervalo de números necessários para ser representado. Tipos assinados podem representar valores positivos e negativos, ao passo que os tipos não assinados só pode representar valores positivos (e zero). Isto pode ser especificado usando o especificador assinado ou não assinado o especificador antes do nome do tipo. Por exemplo:
|
|
Por padrão, se não especificar a maioria das configurações do compilador assinado ou não assinado assumirá o tipo a ser assinado, portanto, em vez de a segunda declaração acima, poderia ter escrito:
int MyAccountBalance;
com exatamente o mesmo significado (com ou sem a palavra-chave assinado)
Uma exceção a esta regra geral é o tipo char, que existe por si só e é considerado um tipo diferente de dados fundamental de assinado char e unsigned char, pensado para armazenar caracteres. Você deve usar com ou sem sinal, se você pretende armazenar valores numéricos em uma variável do tipo char de tamanho.
curta e longa podem ser utilizados isoladamente como tipo especificadores. Neste caso, eles se referem a seus respectivos tipos fundamentais: inteiros short é equivalente a curto e longo int é equivalente a long int. As duas declarações de variáveis a seguir são equivalentes:
|
|
Finalmente, assinada e sem sinal pode também ser utilizado como especificadores tipo independentes, ou seja, o mesmo que assinou int e unsigned int respectivamente. As duas declarações seguintes são equivalentes:
|
|
Para ver o que as declarações de variáveis parecer em ação dentro de um programa, vamos ver o código do exemplo sobre a sua memória mental, proposto no início desta seção C + +:
|
| 4 |
Não se preocupe se algo mais do que as declarações de variáveis-se parece um pouco estranho para você. Você vai ver o resto em detalhes nas próximas seções.
Escopo de variáveis
Todas as variáveis que pretendemos usar em um programa deve ter sido declarada com o seu especificador de tipo em um ponto anterior no código, como fizemos no código anterior, no início do corpo da função principal quando declarou que um, b, e resultado foram do tipo int.
Uma variável pode ser tanto de âmbito global ou local. Uma variável global é uma variável declarada no corpo principal do código de fonte, fora de todas as funções, enquanto que uma variável local é declarada dentro do corpo de uma função ou um bloco.
As variáveis globais podem ser consultados em qualquer lugar do código, mesmo dentro de funções, sempre que após a sua declaração.
O escopo de variáveis locais é limitado ao bloco entre chaves ({}), onde eles são declarados. Por exemplo, se forem declaradas no início do corpo de uma função (como na função principal), o seu âmbito é entre o seu ponto de declaração e no final dessa função. No exemplo acima, isto significa que, se existiu uma outra função além principal, as variáveis locais declaradas no principal não pode ser acedida a partir da outra função e vice-versa.
Inicialização de variáveis
Ao declarar uma variável local regular, o seu valor é, por padrão indeterminado. Mas você pode querer uma variável para armazenar um valor concreto, no mesmo momento em que é declarada. A fim de fazer isso, você pode inicializar a variável. Há duas maneiras de fazer isso em C + +:
O primeiro, conhecido como c-como a inicialização, é feito adicionando um sinal de igual seguido do valor para o qual a variável será inicializada:
type identifier = initial_value ; Por exemplo, se quisermos declarar uma variável int chamada inicializado com um valor de 0, no momento em que for declarado, poderíamos escrever:
|
A outra maneira de iniciar as variáveis, conhecidas como inicialização do construtor, é feito colocando o valor inicial entre parênteses (()):
Tipo de identificador (initial_value);
Por exemplo:
|
Ambas as formas de inicialização de variáveis são válidos e equivalente em C + +.
|
| 6 |
Introdução às cordas
Variáveis que podem armazenar valores não-numéricos, que são mais do que um único personagem são conhecidos como strings.
A + + biblioteca linguagem C fornece suporte para strings através da classe string padrão. Este é um tipo não fundamentais, mas comporta-se de uma maneira semelhante como tipos fundamentais fazer na sua utilização mais simples.
A primeira diferença com tipos de dados fundamentais é que, a fim de declarar e usar objetos (variáveis) desse tipo precisamos incluir um arquivo de cabeçalho adicional em nosso código fonte: <string> e ter acesso ao namespace std (que já tinha em todos os nossos programas anteriores graças à instrução using namespace).
|
| This is a string |
Como você pode ver no exemplo anterior, as cordas podem ser inicializados com qualquer cadeia de caracteres válida literal como variáveis do tipo numérico pode ser inicializado a qualquer numérico literal válido. Ambos os formatos de inicialização são válidos com strings:
|
|
Cordas também podem executar todas as outras operações básicas que tipos de dados fundamentais pode, gosta de ser declarada sem um valor inicial e sendo atribuídos valores durante a execução:
|
| This is the initial string content This is a different string content |
Para mais detalhes sobre seqüências de C + +, você pode ter um olhar para a referência de classe string.