O C serve como alicerce para o C++. Embora o C++ seja mais utilizado em aplicações e jogos para computadores, o C é uma excelente opção para iniciantes, especialmente se você está adentrando o mundo do software. Descubra o motivo.
O que é C?
C é uma linguagem de programação estruturada de alto nível. Programas escritos em C são portáveis. C permanece uma das linguagens de programação mais relevantes devido à sua robustez. Ela é empregada em softwares complexos como sistemas embarcados, drivers, kernels, aplicativos de sistema, sistemas operacionais como Microsoft Windows e Apple OS X, bancos de dados como MySQL e diversas aplicações de IoT.
C é uma linguagem compilada, o que estabelece uma camada de abstração entre o código de máquina e o programa.
Um programa simples em C para realizar a soma de dois números teria a seguinte estrutura:
#include<stdio.h> int main() { int a, b, sum; printf("Digite dois números para somar: "); scanf("%d%d", &a, &b); sum = a + b; printf("nSoma de %d e %d é %d", a, b, sum); return 0; }
O resultado seria:
Saída do programa C de exemplo
Programas em C incluem stdio.h, que corresponde à saída de entrada padrão.
O STDIO fornece funções básicas de entrada e saída como printf e scanf. A função printf é usada para exibir algo (mensagem ou resultado) no console, enquanto scanf é utilizada para receber dados do console. Usamos %d para indicar que os números são inteiros.
Se você inserir números decimais, poderá obter resultados inesperados. Para evitar isso, use %f. A função main() é a primeira função a ser executada ao iniciar o programa. A sintaxe é bastante simples: declare os tipos de variáveis e utilize-as.
O que é C++?
C++ é construído com base em princípios de programação orientada a objetos, como abstração, polimorfismo, herança e encapsulamento. C++ pode ser compreendido como uma extensão do C que incorpora o conceito de classes e objetos.
A utilização de objetos para armazenar dados conferiu uma estrutura elegante aos programas. Por exemplo, se você deseja registrar os dados de um estudante, pode criar uma classe Aluno e definir atributos como nome, idade, passatempos, notas, etc., dentro dessa classe. Um objeto de aluno real pode ser criado sempre que necessário!
class Student { public: char name[20]; int age; float marks; }; //Isso cria um objeto Student student1 = new Student();
Na realidade, o objeto será criado e a memória alocada somente durante a execução do programa.
C++ oferece um alto desempenho, o que o torna a escolha mais popular para o desenvolvimento de engines de jogos de alta performance, sistemas embarcados, navegadores, compiladores e aplicações gráficas, como processamento de imagens.
Alguns bancos de dados, como o MongoDB, são escritos em C++. Assim como o C, o C++ é portátil.
Vamos reescrever nosso programa de soma anterior em C++: observe as diferentes funções.
#include <iostream> using namespace std; int main() { int a, b; cout << "Insira os números: "; cin >> a >> b; int sum = a + b; cout << a << " + " << b << " = " << sum; return 0; }
Note que usamos cout e cin em vez de printf e scanf. Além disso, declarações de tipo podem ser feitas em qualquer parte do programa antes da utilização da variável (por exemplo, a variável soma). O comando de impressão é bem direto, utilizando apenas os nomes das variáveis. Perceba que utilizamos o namespace std do cabeçalho iostream. O namespace std inclui métodos como cout, in e muitos outros.
Semelhanças entre C e C++
Pode-se dizer que o C é um subconjunto do C++. Existem diversas semelhanças entre C e C++, seja na maneira como os programas são escritos ou nas aplicações em que são utilizados. Ambos são robustos, portáveis e de alto desempenho. Algumas semelhanças importantes incluem:
Característica | Explicação |
1. Sintaxe | Ambos compartilham a mesma sintaxe, por exemplo, declaração de variáveis, uso de ponto e vírgula no final da linha, convenções de nomenclatura, etc. |
2. Estrutural e Procedural | Cada linha de código é executada sequencialmente. Os programas são estruturados seguindo uma ordem: primeiro as importações, depois as declarações de variáveis e, por fim, o código principal. |
3. Função Main() | Todo código que precisa ser executado deve estar contido dentro da função main(). main() é a primeira função a ser chamada durante a execução do programa. |
4. Ponteiros | C e C++ usam ponteiros da mesma forma. Um ponteiro é uma variável que armazena o endereço de memória de outra variável. Por exemplo, int a = 1;. Assim que este código é executado, um espaço na memória (digamos, XX0011) é alocado para ‘a’. A localização de memória de ‘a’ pode ser acessada usando o e comercial (&) como int ptr_a = &a |
5. Palavras-chave e Operadores | Todas as palavras-chave e operadores existentes em C também são válidos para C++. Por exemplo, scope, static, public, int, etc. C++ também apresenta operadores e palavras-chave adicionais. |
Diferenças entre C e C++
C++ foi desenvolvido para superar algumas das limitações do C e é um superconjunto de C. Portanto, qualquer programa escrito em C irá funcionar em C++, mas o contrário não é verdadeiro! A principal diferença entre C e C++ é que C++ é baseado em princípios de programação orientada a objetos (POO). Além disso, há uma maior ênfase na verificação de tipos em C++. Existem outras diferenças mais sutis, conforme listado abaixo:
C | C++ |
Foi desenvolvido entre 1969 e 1973 por Dennis Ritchie no AT&T Bell Labs. | Desenvolvido por Bjarne Stroustrup em 1979. |
Não segue os princípios da programação orientada a objetos. | Baseado em conceitos de POO, como encapsulamento, polimorfismo e herança. |
C contém um total de 32 palavras-chave, como char, switch, int, static, union e outros. | Todas as palavras-chave do C são válidas em C++, e mais 31 palavras-chave adicionais estão presentes. |
Suporta apenas programação procedural. | C++ suporta múltiplos paradigmas de programação, como POO, programação genérica e funcional. |
Não podemos implementar recursos de POO em C. | Recursos como amigos, funções virtuais em C++ aprimoram a essência da POO. |
C suporta tipos de dados internos. | C++ suporta tipos de dados internos e definidos pelo usuário através do conceito de classes e sobrecarga de função (polimorfismo). |
A alocação de memória é feita através das funções malloc() e calloc(), e a desalocação usando free(). | A alocação de memória ocorre usando o operador new, e a desalocação usando o operador delete. |
C não suporta tratamento de exceções. | Suporta tratamento de exceções. |
Foca no procedimento ou método mais do que nos dados. | Mais focado em dados. |
Alguns outros recursos importantes presentes apenas em C++ são:
- Usando a palavra-chave namespace, podemos criar variáveis com o mesmo nome em diferentes namespaces.
- Podemos utilizar funções dentro de uma estrutura. As estruturas também podem ter modificadores de acesso.
- Suporta variáveis de referência.
Quando usar C ou C++
Este é um debate comum entre programadores: por que devo aprender C quando posso fazer tudo em C++?
Aprender C lhe proporcionará uma base sólida sobre estruturas de dados, ponteiros, palavras-chave, conceitos de pilha, heap e alocação de memória.
Além disso, C ainda é amplamente usado em aplicações de alto desempenho, pois o compilador C é mais rápido que o compilador C++. Portanto, se você precisa escrever blocos de código que não demandam objetos e classes, funções virtuais ou templates, opte por C, pois o C++ pode ser excessivo com suas vastas bibliotecas.
A maioria dos códigos de baixo nível, como kernels, sistemas operacionais e bancos de dados, ainda são mantidos em C, portanto, conhecer C também facilitará o aprendizado do C++.
C++ é considerado uma das linguagens mais rápidas e eficientes, e por isso, continua sendo uma das principais linguagens de programação, especialmente para aplicações de alto desempenho como engines de jogos, dispositivos IoT e aplicativos de desktop. Muitas aplicações combinam código C e C++ para obter o melhor desempenho e se beneficiar da programação orientada a objetos.
Resumo
Neste artigo, abordamos os fundamentos do C e C++ com um programa de exemplo simples. Examinamos as principais diferenças e semelhanças entre as duas linguagens e quando utilizar cada uma.
Se você está começando sua jornada no desenvolvimento de software, começar com C lhe dará um impulso de confiança, pois é fácil e abrange todos os conceitos de programação, como estruturas de dados, ponteiros, memória e assim por diante.
Você pode ter interesse em usar o compilador C online e o compilador C++ do etechpt.com.