Linguagem de Programação C++
Universidade Federal de Santa Catarina
Departamento de Engenharia Elétrica, CTC
Prof. Eduardo Augusto Bezerra
"Esse material foi adaptado a partir de um website não identificado."
Um identificador válido é uma sequência de uma ou mais letras, dígitos ou caracteres “sublinhado” ( _ ). Espaços em branco e caracteres acentuados não podem ser utilizados na formação de identificadores. É preciso tomar cuidado para não utilizar palavras reservadas do C++ como nome de identificador. Abaixo estão listadas as palavras reservadas, de acordo com o padrão ANSI-C++, que não podem ser utilizadas como identificadores em programas:
asm, auto, bool, break, case, catch, char, class, const, const_cast, continue, default, delete, do, double, dynamic_cast, else, enum, explicit, 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
ATENÇÃO!! C++ é “case sensitive”, e identificadores definidos com caracteres maiúsculos e minúsculos não são equivalentes. Por exemplo, a variável RESULT é diferente de result, que por sua vez é diferente de Result.
Lembrando que em um byte é possível armazenar valores inteiros entre 0 e 255, em C++ existem diversos tipos de dados que possibilitam armazenar valores com diferentes tipos e tamanhos. Os tipos de dados fundamentais do C++ estão listados a seguir:
Tipo |
Bytes |
Descrição |
Faixa de valores |
char |
1 |
Caracter ou inteiro de 8 bits. |
signed: -128 a 127 |
short int |
2 |
Inteiro de 16 bits. |
signed: -32768 a 32767 |
long int |
8 |
Inteiro de 64 bits. |
signed:-9223372036854775808 a 9223372036854775807 |
int |
* |
Inteiro. O tamanho depende do tamanho da palavra da arquitetura destino. Em sistemas 32 bits tais como diversas edições do Windows e Linux, o inteiro possui 4 bytes (32 bits). |
Ver short, long |
float |
4 |
Número em ponto flutuante. |
3.4e + / - 38 (7 digitos) |
double |
8 |
Número em ponto flutuante precisão dupla. |
1.7e + / - 308 (15 digitos) |
long double |
10 |
Número em ponto flutuante precisão dupla “longo”. |
1.2e + / - 4932 (19 digits) |
bool |
1 |
Valor “booleano”. Pode receber apenas os valores true ou false. Por ser um tipo adicionado recentemente ao ANSI-C++, pode ser que alguns compiladores ainda não aceitem. |
true ou false |
wchar_t |
2 |
Caracteres “largos”. Armazena caracteres internacionais de dois bytes. Por ser um tipo adicionado recentemente ao ANSI-C++, pode ser que alguns compiladores ainda não aceitem. |
Caracteres extendidos |
Obs. Valores das colunas “Bytes” e “Faixa de valores” podem variar dependendo do sistema destino. Esses são os valores mais comumente utilizados pela maioria dos compiladores C++ da atualidade.
Outros tipos de dados do C++ incluem os ponteiros e o parâmetro void que serão discutidos adiante.
Variáveis em C++ precisam ser declaradas antes de serem utilizadas:
int a;
int a, b, c;
float meuNumero;
Os tipos de dados inteiros (char, short, long e int) podem ser definidos com sinal ou sem sinal (signed ou unsigned), de acordo com a faixa de números que se deseja representar:
unsigned short numeroDeFilhos;
signed int meuSaldo;
Caso não seja utilizado explicitamente a palavra signed ou unsigned na frente do tipo, será assumido o tipo signed.
Caso seja utilizado apenas signed ou unsigned sem nenhum tipo associado, é assumido o tipo inteiro para a variável.
Exemplo de programa com declaração de variáveis:
// trabalhando com variaveis #include <iostream> using namespace std; int main () { // declarando variaveis: int a, b; int resultado; // processamento: a = 5; b = 2; a = a + 1; resultado = a - b; // apresentacao dos resultados: cout << resultado; // terminando o programa: return 0; } |
4 |
Ao ser declarada a variável não possui um valor. Caso seja desejado atribuir um valor inicial a uma variável, isso deve ser feito explicitamente:
int a = 0;
que equivale a:
int a (0);
Uma diferença importante entre C e C++, é que em C++ as variáveis podem ser declaradas em qualquer lugar do código fonte.
Em C++ o escopo das variáveis é definido pelo bloco no qual a variável é declarada. Os limites do bloco são definidos por chaves {}. Se a declaração for no início de uma função, o escopo da variável será a função (qualquer parte da função). Se a declaração for no início de um laço (após a primeira abertura de chave), então o escopo será o laço em questão. Adicionalmente, existe também o escopo externo, que leva a variável a ser visível não apenas no arquivo em que foi declarada, mas também em outros arquivos que forem “ligados” juntos. |
#define PI 3.14159265
#define NEWLINE '\n'
#define WIDTH 100
Uma vez declaradas, as constantes podem ser utilizadas no código normalmente:
circulo = 2 * PI * r;
cout << NEWLINE;
Ao encontrar a diretiva #define o compilador substitui todas as ocorrências do símbolo definido (PI, NEWLINE ou WIDTH) pelo código associado (3.14159265, '\n' e 100, respectivamente).
A diretiva #define não é uma instrução, e por essa razão não necessita o ponto-e-vírgula (;) no final da linha.
Com o uso de const constantes podem ser definidas com um tipo de forma similar a variáveis:
const int largura = 100;
const char tab = '\t';
const zip = 12440;
Quando o tipo não é definido (como no último exemplo), o compilador assume o tipo inteiro.