🔗 Parâmetros: Passagem por Referência
Na passagem por valor, enviamos uma cópia. Na passagem por referência, enviamos o “endereço” da variável original. Isso permite que a função modifique o dado diretamente na fonte.
🔍 Comparativo Visual
Passagem por Valor (Cópia)
graph LR
A["Variavel A (10)"] -- "Copia valor 10" --> B["Parametro B (10)"]
B -- "Muda para 20" --> C["Parametro B (20)"]
style A fill:#e8f5e9
style C fill:#ffebeePassagem por Referência (Apontamento)
graph LR
A["Variavel A (10)"] -- "Aponta para" --- B["Parametro &B"]
B -- "Muda para 20" --> A
style A fill:#e1f5fe,stroke:#01579b🏗️ Sintaxe em Portugol
Para indicar uma referência, utilizamos o símbolo ampersand (&) antes do nome do parâmetro:
💡 Quando usar cada uma?
| Situação | Técnica Recomendada | Por quê? |
|---|---|---|
| Simulação | Valor (Cópia) | Você não quer alterar o dado original (ex: ver como ficaria um desconto). |
| Ação Real | Referência (&) | Você precisa atualizar o estado global (ex: confirmar uma compra, perder vida em um jogo). |
| Múltiplos Retornos | Referência (&) | Funções só podem retorne um valor. Use referências para “devolver” vários dados alterados. |
🎮 Exemplo Prático: Sistema de Jogo
Imagine um jogo onde uma função coletarItem() precisa atualizar as moedas e o inventário ao mesmo tempo.
🏁 Resumo do Capítulo
A passagem por referência é uma ferramenta poderosa, mas deve ser usada com cuidado, pois permite que funções alterem o estado do programa principal de forma direta. Você agora domina a base da comunicação avançada entre funções! 🚀