🌐 Escopo: Variáveis Locais e Globais
O Escopo determina onde uma variável “vive” e quem pode acessá-la. Quando uma variável sai de escopo, o computador libera o espaço de memória que ela ocupava.
🏠 Variáveis Locais
Uma variável local só existe dentro do bloco { ... } onde foi criada (função, se, para). Ao chegar no fechamento da chave, ela é “esquecida”.
graph LR
subgraph Funcao ["Bloco da Função"]
V[Variável Local]
end
Chamador["Programa Principal"] -.-> X["ERRO: Acesso negado"]
X -.-> VSe você declarar uma variável dentro de um se, tentar usá-la fora dele resultará em erro de compilação.
🌍 Variáveis Globais
Variáveis globais são declaradas logo no início, fora de todas as funções. Elas ficam disponíveis para o programa inteiro.
📥 Passagem por Valor (A Cópia)
Quando passamos um parâmetro por valor, o Portugol cria uma cópia idêntica do dado em um novo endereço de memória da função de destino.
📊 Fluxo na Memória
inicio()criaoriginal(Valor: 10).- Chamada
dobrar(original)cria uma nova variávelnum(Valor: 10). dobrar()alteranumpara 20.originalpermanece intocado.
🏗️ Sintaxe e Resumo
- Parâmetros: São as variáveis na porta de entrada da função:
funcao nome(tipo param). - Retorno: É o dado que a função envia de volta ao final:
retorne valor.
| Tipo | Localização | Visibilidade | Recommandação |
|---|---|---|---|
| Local | Dentro de funções/blocos | Restrita ao bloco | Sempre use por segurança. |
| Global | Topo do programa | Todo o programa | Evite, pois consome memória e dificulta testes. |
🏁 Resumo do Capítulo
O domínio do escopo evita bugs silenciosos e garante que você saiba exatamente onde cada dado está sendo processado. No próximo capítulo, veremos o poder da Passagem por Referência! 🚀