Pular para conteúdo

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?

  1. Para alterar a variável original.
  2. 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!