Aprenda C++

  • Página Inicial
  • Contato!
  • Tudo sobre C++ Parte 1!
  • Tudo sobre C++ Parte 2!
  • Tudo sobre C++ Parte 3!
  • Tudo sobre C++ Parte 4!
  • Tudo sobre C++ Parte 5!
  • Tudo sobre C++ Parte 6!
  • Tudo sobre C++ Parte 7!
  • Tudo sobre C++ Parte 8!
  • Tudo sobre C++ Parte 9!
  • Tudo sobre C++ Parte 10!
  • Tudo sobre C++ Parte 11!
  • Tudo sobre C++ Parte 12!
  • Tudo sobre C++ Parte 13!
  • Tudo sobre C++ Parte 14!
  • Tudo sobre C++ Parte 15!
  • Tudo sobre C++ Parte 16!
  • Tudo sobre C++ Parte 1

    Primeiro Programa em C++

    Essa é uma estrutura básica em C++:

    
    #include <iostream>
    
    using namespace std;
    
    int main() {
        
    }
    
    

    Abra um novo projeto e vá até o arquivo main.cpp, e escreva esses comandos:

    
    #include <iostream> // Comando de entrada e saída, necessário para o cout.
    
    using namespace std; // Indica onde procurará e organizará as bibliotecas que iremos trabalhar.
    
    int main() {
        cout << "Olá Mundo!\n"; // iostream
        getchar(); // cstdio
        return 0;
    }
    
    

    PS: Verifique que colocamos uma sequência de escape para pular linhas.

    O #include é usado pra incluir uma biblioteca. A biblioteca no caso acima foi a iostream (usada para o cout), e sempre ficarão entre tags.

    Como em outras linguagens, int é inteiro e main é principal. Essa é a principal função do C++, nesse caso, o retorno que usamos é o zero. Podemos usar também o método void que não retorna nada.

    O using significa utilizar, nesse caso usamos o namespace de nome std, que é usado como o caminho para um diretório diferente (para ter arquivos com mesmo nome).

    Diferente de outras linguagens, o C++ usa o cout, e não o print. O cout terá dois símbolos menores apontando pra ele antes da frase ou variável.

    Para o Prompt não fechar automaticamente após a execução, usamos o parâmetro system com "pause" no Windows, mas tem que incluir a biblioteca cstdlib, caso seja executado no Visual Studio.

    No Linux, podemos usar getchar() com a biblioteca iostream (getchar() só é executado ao clicar "Enter").

    PS: É necessário em qualquer caso ter o return 0 no final, que diz que o programa foi executado e fechado, principalmente em Linux.

    Ou também pode ser:

    
    #include <iostream>
    #include <cstdlib>
    
    using namespace std;
    
    int main() {
        cout << "Olá Mundo!" << endl; // endl pula uma linha em C++;
        system("pause"); // cstdlib
        return 0;
    }
    
    

    O endl não é obrigatório, mas é bom praticar com ele, ele pulará uma linha. Pode ser usado no lugar da sequência \n em certos casos.

    Os comentários de uma linha se colocam ao lado de //, e de várias linhas entre /* */, por exemplo:

    
    // Comentário de uma linha
    
    /*
    Comentário
    de
    várias
    linhas
    */
    
    

    PS: Caso você tenha configurado corretamente o path do Mingw no seu Windows, você pode criar diretamente arquivos com extensão cpp e compilar ele usando os comandos g++ main.cpp -o nomedoprograma (no Linux é o mesmo processo, apenas omitindo a extensão ou usando alguma extensão genérica, pode ser necessário usar o parâmetro -no-pie para gerar um executável, sendo que o padrão de algumas distribuições são -pie que gera a biblioteca compartilhada). Caso tenha mais de um arquivo do mesmo projeto, execute o comando g++ -c nomedoarquivo.cpp nos outros arquivos pra compilá-los e depois g++ main.cpp nomedoarquivo.o -o nomedoprograma no main pra montar. Pode ser necessário colocar o parâmetro -lm para forçar inclusão de bibliotecas, como as de operações matemáticas. Caso esteja num sistema 64 bits e queira compilar para 32 bits, use o parâmetro -m32 (o default é -m64). Pode ser necessário instalar as dependências (instale o gcc-multilib).

    Para resolver problemas com acentuações em programas utilizamos o setlocale, dessa forma:

    
    #include <iostream>
    #include <clocale>
    
    using namespace std;
    
    int main() {
        setlocale(LC_ALL, "portuguese"); // Inclua clocale
        cout << "Essa é uma frase com acentuação!" << endl;
       
        return 0;
    }
    
    

    Dessa forma, resolvemos o problema com caracteres em idiomas latinos. Em algumas IDEs não exigem o clocale incluído para isso.

    Variáveis em C++

    Como sabemos, variável é um local reservado na memória utilizado no armazenamento temporário de um dado, quando a aplicação está sendo executada. E que dados é tudo que a aplicação está processando, recebendo ou enviando ao usuário.

    As variáveis em C++ são inicializadas com o valor e o tipo, antes de serem utilizadas. Se não forem inicializadas, tem que ser pelo menos declaradas.

    Veja um exemplo de variável em C++:

    
    int vidas = 0;
    char letra = 'B';
    double decimal = 5.2;
    float decimal2 = 5.2; // Existem casos que deverá ter um f no float, no caso, 5.2f
    bool vivo = true;
    string nome = "Nome";
    
    cout << vidas << "\n";
    cout << letra << "\n";
    cout << decimal << "\n";
    cout << vivo << "\n";
    cout << nome << "\n";
    
    

    PS: Quando uma variável não é inicializada, ela recebe o valor 0, e o char só permite uma letra e deve usar aspas simples. E Note que no C++ é permitido declarar variáveis em string e bool, diferente do C, que usávamos um char com array para textos e um typedef enum para true e false (em versões mais antigas do C), isso só é possível graças a biblioteca iostream.

    Também podemos usar um cout só para todos os dados, assim:

    
    cout << vidas << "\n" << letra << "\n" << decimal << "\n" << vivo << "\n" << nome << "\n";
    
    

    PS: Pode ver que, graças à essa particularidade do cout, a concatenação é feita dessa forma, usando os <<. Mas isso só vale pra usos como o do cout, cin e semelhantes, concatenação de string em variáveis, utiliza o + normalmente.

    No C++, usamos o cin para o programa entrar valores dos teclados. Lembrando que o cin usa dois >>, exatamente o contrário do cout.

    Veja um exemplo abaixo:

    
    int vidas;
    char letra;
    double decimal;
    bool vivo = true;
    string nome;
    
    cout << "Digite o número de vidas: ";
    cin >> vidas;
    cout << "Digite uma letra: ";
    cin >> letra;
    cout << "Dinheiro: ";
    cin >> decimal;
    cout << "Digite seu Nome: ";
    cin >> nome;
    
    cout << "Vidas: " << vidas << "\n";
    cout << "Letra: " << letra << "\n";
    cout << "Dinheiro: " << decimal << "\n";
    cout << "Vivo: " << vivo << "\n";
    cout << "Nome: " << nome << "\n";
    
    

    PS: Caso seja necessário pegar strings com espaços, faça dessa forma:

    
    cout << "Digite seu Nome: ";
    cin.ignore();
    getline(cin, nome);
    
    

    Veja abaixo alguns tipos primitivos em C++:

    Tipo Tamanho Faixa de Valores
    char 1 byte -128 a 127
    unsigned char 1 byte 0 a 255
    signed char 1 byte -128 a 127
    int 4 bytes -2147483648 a 2147483647
    unsigned int 4 bytes 0 a 4294967295
    short 2 bytes -32,768 a 32,767
    unsigned short 2 bytes 0 a 65,535
    long 4 bytes -2147483648 a 2147483647
    long long 8 bytes -9223372036854775808 a 9223372036854775807
    unsigned long 4 bytes 0 a 4294967295
    float 4 bytes 3.4E-38 a 3.4E+38 (até 6 casas decimais)
    double 8 bytes 1.7E-308 a 1.7E+308 (até 15 casas decimais)
    long double 16 bytes 3.4E-4932 a 1.1E+4932 (até 19 casas decimais)
    bool 1 byte true/false
    string 1 byte por caractere Textos em Geral

    PS: Letras únicas em char se coloca entre aspas simples, cadeias de caracteres se coloca entre aspas duplas.

    Em C++ é possível criar objetos com os tipos também, por exemplo (não esqueça dos asteriscos nesse caso):

    
    int *num = new int(10);
    char *letra = new char('A');
    string *palavra = new string("Texto");
    bool *logico = new bool(true);
    	
    cout << *num << endl;
    cout << *letra << endl;
    cout << *palavra << endl;
    cout << *logico << endl;
    
    

    A concatenação de strings não dá pra fazer de forma direta, mas podemos unir uma ou mais strings assim:

    
    string texto = "abc";
    
    string completo = texto + "def";
    
    cout << completo;
    
    

    Podemos comparar strings da seguinte forma:

    
    string login;
    string senha;
    
    cout << "Digite o login: ";
    cin >> login;
    
    cout << "Digite a senha: ";
    cin >> senha;
    
    if(!login.compare("admin") && !senha.compare("123")) { // Inclua cstring
        cout << "Bem-Vindo!" << endl;
    }
    else {
        cout << "Acesso Negado!" << endl;
    }
    
    

    Para ver se uma string está vazia, use a função empty() do objeto, assim:

    
    string nome = "";
    
    cout << "Nome está vazio? " << (nome.empty() ? "true" : "false") << endl;
    
    

    Para ver a quantidade de caracteres de uma string, use o método length() do objeto, assim:

    
    string frase = "Exemplo de String";
        
    cout << "Quantidade de caracteres: " << frase.length() << endl;
    
    

    PS: Apesar de semelhantes, um array de char é bem diferente de uma string.

    Declarações Múltiplas de Variáveis e Constantes

    Uma variável é uma localização na memória do computador que é utilizada para armazenar temporariamente os dados que são utilizados durante o programa.

    As variáveis possuem algumas características, como identificação, endereço, tipo, tamanho e valor (conteúdo). Elas só podem ter letras, números e underlines, deve iniciar com letra e não deve ser nenhuma palavra reservada.

    Para que uma variável possa ser usada em um programa, ela deve primeiro ser declarada, para que seja reservado espaço na memória para armazenamento dos seus dados. Elas devem ser declaradas no início do programa, mas dependendo do caso pode ser declarada em outras partes do código.

    As declarações das variáveis funcionam dessa forma:

    
    int vidas;
    int tiros;
    int life;
    
    

    Se forem do mesmo tipo, podem ser usadas numa só linha, separadas por vírgulas, que são chamadas de declarações múltiplas, dessa forma:

    
    int vidas, tiros, life;
    
    

    Variáveis também podem ser inicializadas na declaração. Veja um exemplo:

    
    int vidas = 3, tiros = 500, life = 100;
    
    

    Para usar constantes, devemos colocar #define no formato #define NOMEDACONSTANTE DADO. O #define é colocado junto com as bibliotecas, na parte superior do programa (sem ;). Se for usar uma variável que nunca mudará de valor, é melhor usar as constantes.

    Veja um exemplo de uso de constante:

    
    #include <iostream>
    #define PI 3.141592653589793
    
    using namespace std;
    
    int main(void) {
        cout << PI << "\n\n";
        
        return 0;
    }
    
    

    Comandos também podem ser associados ao #define, assim basta apenas colocar o nome da constante na função principal, dessa forma:

    
    #include <iostream>
    #define PI 3.141592653589793
    #define FRASE cout << "Esse é um Texto" // Não será executado aqui.
    
    using namespace std;
    
    int main(void) {
        cout << PI << "\n\n";
        FRASE; // Só aqui que a constante será executada.
        
        return 0;
    }
    
    

    Variáveis Globais e Locais, e Operadores Aritméticos

    Quando uma variável é declarada fora de uma função, ela é global e pode ser usada em qualquer parte do programa. Quando ela é declarada dentro de uma função (incluindo a principal), ela é local.

    Veja uma aplicação prática de variáveis:

    
    int n1, n2; // Variáveis globais.
    
    int main(void) {
        int n3, n4; // Variáveis locais.
        int res;
        
        n1 = 11;
        n2 = 3;
        n3 = 5;
        n4 = 2;
        
        res = n1 + n2 + n3 + n4;
        
        cout << "A soma de todas as variáveis é " << res << ".\n\n";
        
        return 0;
    }
    
    

    Teste o código acima com essa modificação na operação, para tirar médias:

    
    res = (n1 + n2 + n3 + n4) / 4;
    
    

    Teste outros operadores aritméticos e parênteses. Os operadores são os mesmos de outras linguagens de programação (*, /, %, + e -).

    Também podemos fazer operações aritméricas, mas é necessário adicionar a biblioteca cmath. Veja algumas dessas funções abaixo:

    Veja o uso de algumas delas abaixo:

    
    int n1, n2;
    
    cout << "Digite o 1º número: ";
    cin >> n1;
    cout << "Digite o 2º número: ";
    cin >> n2;
    
    cout << "O valor absoluto de " << n1 << " é " << abs(n1) << endl;
    cout << n1 << " elevado ao quadrado é " << pow(n1, 2) << endl;
    cout << n1 << " elevado ao cubo é " << pow(n1, 3) << endl;
    cout << n1 << " elevado à " << n2 << " é " << pow(n1, n2) << endl;
    cout << "A raiz quadrada de " << n1 << " é " << sqrt(n1) << endl;
    cout << "A raiz cúbica de " << n1 << " é " << cbrt(n1) << endl;
    cout << "Menor valor entre " << n1 << " e " << n2 << ": " << min(n1, n2) << endl;
    cout << "Maior valor entre " << n1 << " e " << n2 << ": " << max(n1, n2) << endl;