Aula 09 - C e C++: Baixo Nível 🧱
Agenda 📅
- História e Importância
- Anatomia de um Programa C
- Compilação
- Gerenciamento de Memória (Stack vs Heap)
- Ponteiros
- Introdução ao C++ (OOP)
1. O Pai das Linguagens 👴
- C (1972): Dennis Ritchie (Bell Labs).
- Base de Tudo: Windows, Linux, Mac, Android, iOS.
- Filosofia: "Confie no programador" (mesmo se ele fizer besteira).
Por que aprender C hoje? 🧐
- Entender como a máquina funciona de verdade.
- Gerenciar memória manualmente.
- Performance extrema (Jogos, Sistemas Embarcados).
2. Anatomia Básica 🦴
Desmontando o Código 🔧
#include <stdio.h>: Importa biblioteca de IO (Entrada/Saída).int main(): A função principal. Todo programa começa aqui.printf(...): Imprime formatado.return 0;: Retorna "Sucesso" para o Sistema Operacional.
O Ponto e Vírgula ;
- Em C/C++, ele é OBRIGATÓRIO.
- O compilador não adivinha onde a linha termina.
- Esquecer
;é o erro nº 1 de iniciantes.
3. O Processo de Compilação ⚙️
C é uma linguagem Compilada.
- Código Fonte (
.c): Texto legível. - Compilador (
gcc): Traduz para Assembly/Machine Code. - Linker: Junta com bibliotecas.
- Executável (
.exe): Programa final.
4. Memória: Stack vs Heap 🧠
Onde seus dados moram?
Visualizando a Memória
graph TD;
subgraph RAM
Stack["Stack (Pilha)"] --- V["Locais\nAutomáticas\nRápidas"];
Heap["Heap (Monte)"] --- D["Dinâmicas\nManuais\nLentas"];
end
style Stack fill:#f9f;
style Heap fill:#bbf;
Stack (Pilha) 🥞
- Variáveis normais:
int idade = 20; - Criada e destruída automaticamente.
- Tamanho fixo e pequeno.
Heap (Monte) 🏔️
- Memória dinâmica:
malloc()ounew. - Você pede memória ao sistema.
- Cuidado: Você precisa devolver (
freeoudelete), senão vaza memória (Memory Leak)!
5. Ponteiros: O Superpoder ⚡
Um ponteiro não guarda o valor. Guarda o ENDEREÇO.
int x = 10;(Valor 10)int *p = &x;(Endereço onde o 10 mora, ex:0x7ffee4)
Para que serve? 🤷
- Modificar variáveis originais dentro de funções.
- Alocar memória dinâmica.
- Criar estruturas complexas (Listas, Árvores).
"Com grandes poderes vêm grandes responsabilidades." (E Segmentation Faults).
6. Introdução ao C++ 🚀
C++ = C + Classes (OOP).
- Mantém a performance do C.
- Adiciona organização de objetos.
- Base para Jogos (Unreal) e Softwares Pesados (Chrome, Photoshop).
Exemplo C++ 🚗
#include <iostream>
using namespace std;
class Carro {
public:
void buzinar() {
cout << "Bi Bi!" << endl;
}
};
int main() {
Carro meuCarro;
meuCarro.buzinar();
return 0;
}
Diferenças C vs C++
| Feature | C | C++ |
|---|---|---|
| Paradigma | Estruturado | Orientado a Objetos (Multi) |
| Output | printf() |
cout << |
| Input | scanf() |
cin >> |
| Extensão | .c |
.cpp |
Termynal: Compilando 🖥️
gcc programa.c -o programa
Compilando...
./programa
Olá Mundo C!
Resumo ✅
- C é a mãe de todas.
- Compilador traduz para binário.
- Ponteiros acessam memória direta.
- C++ adiciona Classes ao poder do C.
Próxima Aula 🚀
- Sair do "Baixo Nível".
- Ir para o mundo corporativo e robusto.
- Java: "Escreva uma vez, rode em qualquer lugar".
👉 Tarefa: Instalar o Code::Blocks ou configurar GCC no VS Code!