Tipos de dados
Assim como o C, o C++ também trabalha com dados do tipo int, float, double e char. O booleano _Bool do C agora será chamado de bool e passa a aceitar os literais booleanos true e false além do 0 do 1 como no C, porém sem a inclusão de um arquivo de cabeçalho para isso.
A principal diferença entre C e C++ no que diz respeito aos tipos de dados é que o C++ possui o tipo de dado string para cadeia de caracteres, não sendo mais necessária a criação de um vetor (matriz unidimensional) como na linguagem C. Exemplo:
- #include <iostream>
- using namespace std;
- int main () {
- int numeroInteiro = 10;
- float numeroDecimal = 3.14159265358979323846;
- double decimalMaisPreciso = 3.14159265358979323846;
- char caracter = 'J';
- string cadeiaDeCaracteres = "Linguagem C++";
- bool booleano = true;
- cout << "int: " << numeroInteiro << "\n";
- cout << "float: " << numeroDecimal << "\n";
- cout << "double: " << decimalMaisPreciso << "\n";
- cout << "char: " << caracter << "\n";
- cout << "string: " << cadeiaDeCaracteres << "\n";
- cout << "bool: " << booleano << "\n";
- return 0;
- }
Se você copiou e colou esse código no GDB Online deve ter reparado que tanto o float como o double retornou o mesmo valor 3.14159 omitindo as demais casas decimais o que mostra que para os problemas do dia a dia, não vemos uma diferença prática entre eles.
Outra coisa que você deve ter reparado é que a variável booleana continua retornando 1 para true e 0 para false, apesar de entender os literais booleanos.
Entrada de dados
Na aula passada e no exemplo acima vimos como promover a saída de dados em tela com o objeto cout utilizando o operador <<. Da mesma forma que temos um objeto cout para saída, teremos em C++ o objeto cin para entrada.
Neste caso, ao invés do operador de inserção <<, teremos o operador de extração >> para a entrada de fluxo. Exemplo:
- #include <iostream>
- using namespace std;
- int main() {
- int x;
- cout << "Escreva um número inteiro: ";
- cin >> x;
- cout << "O quadrado desse número é: " << x*x;
- return 0;
- }
Eu usei de propósito um operador na linha 8 só para lembrá-los que os operadores básicos do C continuam valendo no C++: + para adição, - para subtração, * para multiplicação, / para divisão, % para resto da divisão, ++ para incremento e -- para incremento.
Repare que a entrada de fluxo em C++ com cin na linha 7 do exemplo acima fica muito mais fácil que entrada de dados em C com o scanf(), pois não precisamos especificar o formato da variável x, nem utilizar ponteiros.
Essa facilidade fica mais escandalosa na manipulação de Strings. Exemplo:
- #include <iostream>
- using namespace std;
- int main() {
- string nome;
- cout << "Escreva seu nome: ";
- cin >> nome;
- cout << "Olá " << nome<<"! Como vai?";
- return 0;
- }
Uma dúvida existencial
Se o C++ tem uma sintaxe mais simples e amigável que o C, porque então ainda utilizamos o C?
Vamos lembrar que o C++ foi desenvolvido a partir do C, incorporando mais recursos inclusive permitindo a implementação do paradigma de programação orientada a objetos.
Na maioria das vezes quando uma linguagem evolui a partir de outra oferecendo mais recursos ela fica mais pesada, gera arquivos executáveis maiores e consome mais recursos de memória.
Isso também se reflete no tempo de execução de programas que geralmente também tornam-se maiores. Isso em Sistemas Embarcados pode ser um fator limitante em dispositivos com poucos recursos.
Por essa razão o C ainda tem o seu espaço garantido onde é desejável desempenho e onde o paradigma de programação estruturada atende os requisitos de projeto.
Já nos projetos onde o paradigma de programação orientada a objetos é um requisito, o C++ será a opção de melhor desempenho quando comparado, por exemplo, com o Python.
Referências
DEITEL, H. M. DEITEL, P. J. C++: Como programar. Pearson Education do Brasil. 2006.
GBDONLINE. Learn C++ Programming. Disponível em: <https://learn.onlinegdb.com/c%2B%2B_for_beginners> Acesso em 05 ago. 2024.
W3SCHOOLS. C++ Tutorial. Disponível em: <https://www.w3schools.com/cpp/default.asp> Acesso em 05 ago. 2024.