Aula 05 - Funções 🧩
O que é uma Função?
- Um bloco de código reutilizável que realiza uma tarefa específica.
- Promove a modularização e evita repetição de código (DRY - Don't Repeat Yourself).
Estrutura Básica
tipo_retorno nome_funcao(parametros) {
// Corpo da função
return valor;
}
Tipo de Retorno
int, float, string, etc.
void: Quando a função não retorna nada.
Parâmetros (Argumentos)
- Entradas que a função recebe para trabalhar.
- Podem ser opcionais ou múltiplos.
Declaração vs Definição
- Declaração (Protótipo): Avisa ao compilador que a função existe.
- Definição: Contém o código real da função.
Por que usar Protótipos?
- Permite chamar funções antes de sua implementação no arquivo.
- Geralmente colocados no topo do arquivo ou em arquivos
.h.
Passagem por Valor
- Uma cópia do dado é enviada.
- Alterações dentro da função não afetam a variável original.
Passagem por Referência
- O endereço (referência) é enviado.
- Alterações afetam diretamente a variável original.
- Use o símbolo
&.
Quando usar Referência?
- Para alterar a variável original.
- Por performance (evita cópia de objetos grandes como strings ou vectors).
Funções Const
void imprimir(const string &s)
- Protege o dado de ser alterado acidentalmente.
Sobrecarga de Funções (Overloading)
- Várias funções com o mesmo nome, mas parâmetros diferentes.
void desenhar(int x);
void desenhar(int x, int y);
Funções Inline
- Sugestão ao compilador para substituir a chamada da função pelo seu código.
- Aumenta performance em funções minúsculas.
Valores Padrão (Default Arguments)
void alerta(string msg = "Erro desconhecido");
- Permite chamar a função sem passar o argumento.
Escopo de Variáveis
- Locais: Existem apenas dentro da função.
- Globais: Acessíveis por todo o programa (evite!).
Variáveis Estáticas (static)
- Mantêm seu valor entre as chamadas da função.
Recursividade
- Uma função que chama a si mesma.
- Deve ter um caso base para não virar um loop infinito.
Stack Overflow (Pilha de Amostragem)
- Erro que acontece quando há excesso de chamadas recursivas.
Funções Lambda (C++11)
- Funções anônimas escritas "na hora".
auto soma = [](int a, int b) { return a + b; };
Bibliotecas de Funções
- C++ possui milhares de funções prontas em bibliotecas como
<cmath>, <string>, <algorithm>.
Organização Profissional
- Arquivo
.h: Declarações.
- Arquivo
.cpp: Implementações.
Resumo da Aula
- Divida problemas grandes em funções pequenas.
- Use referências para performance.
- Evite variáveis globais.
Fim da Aula 05
- Próxima aula: Arrays e Strings!