## Guia de C++ Este é um guia de estudos preparado por mim, com os materiais que a minha professora de Programação de computadores disponibilizou para a minha turma. Está é uma documentação de meus estudos e foi acurada por um iniciante, sempre confira informações importantes e se certifique de estudar com outros materiais de maior confiabilidade. ### Materiais de referência - [Introdução a C++ (Profa Regiane Kawasaki)](introdução_cpp_kawasaki.pdf) ## Básico ### Estrutura Está é a estrutura básica de um programa qualquer em C++: ``` #include using namespace std; int main () { return 0; } ``` #### Oque cada coisa significa ? `#include ` --> Aqui se declara as bibliotecas que serão utilizadas no programa, essa demarcação é feita pelo comando `#include`no início do programa e a biblioteca, nesse caso a **iostream**, é posta entre os sinais de menor e maior : **<>** `using namespace std;`--> O `std;`serve para dizer ao programa que tudo na biblioteca padrão de nomes reservados, a Standard= `std`, você estará utilizando. Caso você não use o `using namespace std; ` você terá que por `std::`antes de cada comando básico em C++, como cin e cout. Ou seja, com ele você pode escrever as palavras reservadas sem o prefixo `std::` ``` std::cout -> Você terá que escrever isso sempre se não usar o comando cout-> Mas usabdo ele, você pode simplesmente usar a palavra reservada que vai funcionar perfeitamente ``` `int main ()`-> É aqui que seu programa começa a rodar de verdade, este comando identifica o início de seu programa, a seguir, você irar por todas as instruções dentro do par de chaves **{}**, para que seja tudo executado perfeitamente `return 0;`-> Este comando serve para sinalizar para o sistema operacional de que tudo dentro do código ocorreu bem e está tudo funcional, ele é utilizado praticamente sempre na função `main() `, mas também pode aparecer em outras funções. Alguns programas simples em C++ conseguem rodar tranquilamente sem que você deixe explícito o `return 0;`, isso por que nas versões mais recentes do C++ o compilador entende automaticamente que o `return 0 `está lá e roda o programa normalmente, somente em alguns casos onde o código é particularmente complexo que isso não funciona, mas como estamos no nível básico isso não nos convém agora. A principal razão pela qual é muito aconselhável usar o `return 0;` é por que isso é considerado uma boa prática, já que isso facilita a manutenção de um terceiro no seu código. ##### Aqui vai um exemplo reunindo todos estes conceitos ``` #include using namespace std; int main() { cout<< "Olá mundo! Programar em C++ é melzinho na chupeta hehehe"; return 0; } ``` ## Tipos de dados Aqui vão alguns tipos de dados fundamentais em C++: | Tipo | Bytes | Intervalo | Uso | | ------ | ----- | -------------------- | ----------------------------- | | char | 1 | -128 a 127 | Um caractere | | int | 4 | -2.1 bi a 2.1 bi | Números inteiros | | float | 4 | 1.2×10⁻³⁸ a 3.4×10³⁸ | Decimais com precisão simples | | double | 8 | 1.2×10⁻³⁸ a 3.4×10³⁸ | Decimais com dupla precisão | | bool | 1 | true/false | Valores lógicos | ### char Este é utilizado para representar valores alfanuméricos unitários de forma que eles ocupem menos espaço, ocupando então apenas 1 byte na memória. Os símbolos compreendidos são os chamados **caracteres**: símbolos, letras e algarismos. todos esses caracteres são representações de números compreendidos internamente no intervalo de [-128,127] - char letra = 'A' - char número = '7' - char símbolo = '!' ### string Usado para representar textos, a diferença para o char é que ele armazena uma sequência de caracteres, e ocupa um número variado de bytes, enquanto o char só guarda 1 único caractere. - string = " Cale-se, cale-se , cale-se se não você me deixa looouco!" - string = "Ninguém tem paciência comigo..." - string = "Não contavam com minha astúcia!" ### int Este representa os números compreendidos nos conjunto dos números inteiros (ℤ). O intervalo de números aceitos em compiladores varia de versão para versão mas usualmente o intervalo é de 2.147.483.648 até 2.147.483.647. Ele ocupa geralmente 2 bytes de memória. - int = -1922 - int = 44 - int = 0 ### unsigned / unsigned int Este é usado para representar valores compreendidos no conjunto dos números naturais (ℕ). Embora haja diferença entre compiladores , usualmente o intervalo de números aceitos é de 0 até 2.147.483.647 - unsigned = 9 - unsigned = 1344 - unsigned = 55 ### short / short int Utilizado para representar valores com menos precisão que o **int** ,dependendo do compilador ele ocupa 2 bytes de memória ### long / long int Dependendo do compilador, ele é utilizado para representar valores com mais precisão do que o int, ele ocupa 4 bytes de memória r. ### long long / long long int Este traz uma precisão maior ainda do que o long dependendo do compilador, ele ocupa 8 bytes de memória. ### bool Utilizado para representar valores lógicos que também recebem o nome de valores booleanos em referência a teoria de George Boole, os dois valores possíveis são true (verdadeiro) e false (falso). Estes dados geralmente são usados para representar o resultados de uma expressão condicional. - Pepsi > Coca-cola = true - 7 > 8 = false - 12 > 9 = true ### float Usado para representar valores que estão em ponto flutuante, apresenta uma precisão simples quando utilizado, ele consome 4 bytes de memória, dependendo do compilador, o intervalo de representações está compreendido entre `1.2×10⁻³⁸` até `3.4×10³⁸` - float = 7.123 - float = -34.90 - float = 1.228272272772 ### double Este apresenta uma dupla precisão de representação em comparação ao **float** para números flutuantes, consome 8 bytes , dependendo do compilador o intervalo compreendido está entre `1.2×10⁻³⁸` até `3.4×10³⁸` ### long double Este representa valores em ponto flutuante com uma precisão maior ainda do que o double, consome pelo menos 10 bytes.