O que é uma variável? A pergunta certa não é o que ela é, mas como ela resolve um problema concreto: guardar um valor temporário para reutilizar. Uma variável é um espaço nomeado na memória RAM que armazena um dado, um número, um texto, uma data, e permite que o programa acesse e modifique esse dado durante a execução. Declarar uma variável é o ato de criar esse espaço e dar a ele um nome, seguindo as regras da linguagem. Só que cada linguagem faz isso de um jeito, e a diferença não é só sintática: envolve como a memória é alocada, se o tipo é fixo ou flexível, e quais erros você pode evitar. Este guia cobre o conceito, a declaração em cinco linguagens populares e as pegadinhas que todo iniciante enfrenta.
O que é uma variável na programação?
Uma variável é um contêiner lógico na memória do computador. O nome "variável" vem do fato de que o valor armazenado pode variar ao longo da execução do programa. Na prática, você reserva um endereço de memória, associa a ele um identificador (o nome da variável) e define que tipo de dado ele pode guardar. O compilador ou interpretador cuida do resto: alocar espaço, garantir que o tipo seja respeitado e liberar a memória quando a variável sai de escopo.
A promessa é simples, mas a entrega depende da linguagem. Em linguagens de tipagem estática (Java, C), você declara o tipo na hora e o compilador verifica se o valor atribuído é compatível. Em linguagens de tipagem dinâmica (Python, JavaScript), o tipo é inferido pelo valor, o que dá flexibilidade, mas abre brecha para erros em tempo de execução. A pergunta certa é outra: você quer segurança em tempo de compilação ou agilidade para prototipar?
Como declarar uma variável em Python?
Python não exige declaração explícita de tipo. Basta escrever o nome da variável, o operador de atribuição (=) e o valor. O interpretador infere o tipo automaticamente.
Exemplo: nome = "Maria" idade = 30 preco = 49.99 ativo = True
Python permite reatribuir a mesma variável com outro tipo, mas isso é uma faca de dois gumes. Se você espera que idade seja sempre um inteiro e acidentalmente atribui uma string, o erro aparece só quando o programa tenta somar. A dica prática: use nomes descritivos e, em projetos maiores, considere type hints (idade: int = 30), eles não impedem a atribuição errada em runtime, mas ajudam ferramentas de análise estática.
Como declarar uma variável em JavaScript?
JavaScript oferece três palavras-chave: var, let e const. Cada uma controla escopo e reatribuição de forma diferente.
var: escopo de função, pode ser redeclarada. É o jeito antigo, hoje evitado por causar confusão com hoisting.let: escopo de bloco, não pode ser redeclarada no mesmo escopo. É o padrão moderno para variáveis que mudam.const: escopo de bloco, não pode ser reatribuída. Ideal para valores fixos como URLs de API ou configurações.
Exemplo: let nome = "João"; const PI = 3.14159; var cidade = "São Paulo"; // evitar
JavaScript também é de tipagem dinâmica. Uma variável declarada com let pode começar como número e depois receber uma string. O problema: let valor = "10" + 5 resulta em "105" (concatenação), não em 15. A promessa de flexibilidade vira armadilha se você não controla os tipos com funções como Number() ou parseInt().
Como declarar uma variável em Java?
Java exige que você declare o tipo antes do nome da variável. A tipagem é estática e forte: uma vez declarada como int, ela só aceita inteiros.
Exemplo: String nome = "Ana"; int idade = 25; double salario = 4500.00; boolean ativo = true;
Java também permite declaração sem inicialização imediata: int contador;, mas a variável não pode ser usada até receber um valor. O compilador impede o uso de variáveis não inicializadas, o que elimina uma classe inteira de bugs.
A limitação: o tipo é fixo. Se você precisa armazenar um número que pode ser inteiro ou decimal, precisa declarar como double ou usar classes wrapper (Integer, Double). A vantagem é a previsibilidade: o programa não quebra no meio da execução por causa de um tipo inesperado.
Como declarar uma variável em C?
C é a linguagem que mais se aproxima do hardware. Declarar uma variável em C significa reservar um número fixo de bytes na memória, e o tipo define exatamente quantos bytes.
Exemplo: int idade = 30; float preco = 49.99f; char letra = 'A'; char nome[20] = "Carlos";
C não inicializa variáveis automaticamente. Se você declarar int x; e usar x sem atribuir valor, ele conterá lixo de memória, um número aleatório. Isso é uma das maiores fontes de bugs em C. A dica: sempre inicialize na declaração.
Outra diferença: strings em C são arrays de caracteres, não um tipo nativo. Declarar char nome[20] reserva 20 bytes, e se o texto ultrapassar esse limite, ocorre estouro de buffer. A promessa de controle total sobre a memória vem com a responsabilidade de gerenciar limites manualmente.
Como declarar uma variável em C++?
C++ herda a sintaxe de C, mas adiciona o operador auto para inferência de tipo (a partir do C++11) e o conceito de referências.
Exemplo com tipo explícito: int idade = 30; std::string nome = "Daniel"; double altura = 1.85;
Exemplo com auto: auto idade = 30; // int auto nome = "Daniel"; // const char* auto altura = 1.85; // double
Cuidado com auto: ele infere o tipo exato do valor. Se você escreve auto x = 3.14;, x é double, não float. Se quer float, precisa escrever auto x = 3.14f;. A inferência é conveniente, mas pode esconder tipos inesperados.
C++ também oferece referências (int& ref = idade;), que são apelidos para uma variável existente. Diferente de ponteiros, referências não podem ser nulas e não mudam de alvo. É um recurso poderoso para evitar cópias desnecessárias em funções, mas exige cuidado: uma referência para uma variável local de uma função que já retornou vira uma dangling reference (referência solta).
Qual a diferença entre declaração e atribuição?
Declaração é o ato de criar a variável, reservando espaço na memória. Atribuição é colocar um valor nesse espaço. Em algumas linguagens, os dois podem acontecer na mesma linha.
- Em Java:
int x;(declaração),x = 10;(atribuição),int y = 10;(declaração + atribuição). - Em Python:
x = 10já faz declaração e atribuição juntos, porque não existe declaração sem valor. - Em JavaScript com
let:let x;declara sem valor (undefined),x = 10;atribui.
A confusão comum: em linguagens de tipagem dinâmica, a declaração acontece no momento da primeira atribuição. Se você tenta usar a variável antes, recebe um erro de referência (ReferenceError em JavaScript, NameError em Python).
FAQ
O que acontece se eu não declarar uma variável?
Depende da linguagem. Em Python e JavaScript, se você atribuir um valor a um nome que não foi declarado com let, const ou var, a variável é criada automaticamente no escopo global, o que pode causar efeitos colaterais. Em Java e C, o código nem compila. Em C++, o compilador também exige declaração.
Variável e constante são a mesma coisa?
Não. Uma variável pode ter seu valor alterado após a declaração. Uma constante, uma vez definida, não pode ser reatribuída. Em JavaScript usa-se const, em Java final, em C const, em Python não há constante nativa, por convenção, nomes em maiúsculas indicam que o valor não deve mudar.
Posso declarar duas variáveis com o mesmo nome?
No mesmo escopo, não. Em Java e C, o compilador acusa erro. Em JavaScript com let, também. Em Python, a segunda declaração sobrescreve a primeira. Em C, se você declarar int x; e depois float x; no mesmo escopo, o compilador reclama de conflito de tipo. Escopos diferentes (por exemplo, dentro de uma função e fora dela) podem ter nomes iguais sem conflito.
Qual a diferença entre tipagem estática e dinâmica?
Na tipagem estática (Java, C, C++), o tipo é verificado em tempo de compilação. Você precisa declarar o tipo, e uma variável não muda de tipo. Na tipagem dinâmica (Python, JavaScript), o tipo é verificado em tempo de execução e pode mudar se você reatribuir. A estática pega erros mais cedo; a dinâmica dá mais flexibilidade, mas exige testes mais rigorosos.
O que é escopo de uma variável?
Escopo define onde a variável pode ser acessada. Variáveis declaradas dentro de uma função (escopo local) não são visíveis fora dela. Variáveis declaradas fora de funções (escopo global) são acessíveis em todo o programa. Em JavaScript, let e const têm escopo de bloco (if, for), enquanto var tem escopo de função. Em C e Java, o escopo é delimitado por chaves {}.
Como escolher o nome de uma variável?
Use nomes descritivos, em camelCase (JavaScript, Java) ou snake_case (Python, C). Evite abreviações obscuras (v1, tmp). O nome deve indicar o propósito: idadeDoUsuario é melhor que i. Em C, nomes muito longos podem ser truncados em alguns compiladores antigos, mas hoje isso não é mais problema. A regra de ouro: outro programador (ou você daqui a seis meses) deve entender o que a variável armazena sem precisar ler o código ao redor.