Variáveis
Imagine que, ao final da aula de Introdução à Programação, você se dirigiu a uma cantina. Lá, consultou o preço de um copo de café (R$ 1,00) e de um pão de queijo (R$ 5,00), optando por comprar os dois produtos. Saindo da cantina, você encontra um colega, que lhe pergunta o preço do copo de café. Nesse momento, você provavelmente se lembrará que o café custou R$ 1,00 e compartilhará a informação.
Nessa situação fantasiosa, observe que o apreciador de pão de queijo e de café não anotou em nenhum momento o preço de cada produto: ele simplesmente se lembrou. De alguma forma, seu cérebro se encarregou de registrar essa informação (vamos deixar o entendimento de como isso acontece para os especialistas). Por parecer natural que a pessoa se lembre de informações, temos a impressão de nenhum processo especial foi necessário nessa situação.
Para o computador, no entanto, o processo não é tão simples assim. Embora pareçam inteligentes, computadores não são capazes de se lembrar de informações e acontecimentos de forma automática. Tudo precisa ser feito de forma planejada. Assim, quando estamos desenvolvendo um programa, precisamos ter o cuidado de fazer com que as informações importantes sejam armazenadas para que sejam recuperadas depois (mesmo que esse depois seja meio segundo).
De forma bem simples, é como se o computador sempre precisasse anotar as informações em um papel ✍🏻
🥣 Entendendo o conceito
Os programas de computador, independentemente de seu tamanho, precisam lidar com diversos valores. Uma simples mensagem enviada pelo WhatsApp, por exemplo, envolve o armazenamento de, pelo menos, os seguintes dados:
- a identificação do usuário que escreveu a mensagem;
- o conteúdo da mensagem;
- o horário de envio.
Cada valor a ser utilizado em um software precisa ocupar um espaço próprio na memória. A memória de um computador é comumente representada como um armário com vários espaços. Assim como escolhemos uma posição disponível quando precisamos guardar algum objeto, selecionamos uma posição disponível da memória quando precisamos armazenar um valor no programa de computador. Se tivermos que armazenar essas informações sobre a mensagem do WhatsApp, precisaríamos escrever as seguintes linhas em Python:
usuario = "Renan"
mensagem = "Olá! Tudo bem?"
horario = "14:35"
Reservar um espaço na memória parece ser um procedimento bastante complicado, mas não é. Embora cada posição de memória tenha uma identificação própria (chamada de endereço de memória e representada em hexadecimal), podemos criar um apelido para essa posição de memória. A esse apelido damos o nome de variável. No caso do exemplo acima, as variáveis são usuario
, mensagem
e horario
.
🕵️ Um Raio-X da variável
De acordo com Robert Sebesta (2018), no livro "Linguagens de Programação", uma variável pode ser compreendida como um conjunto de seis atributos:
- Nome:
- O identificador único usado para se referir à variável durante o código.
- Endereço:
- O endereço de memória onde a variável está armazenada.
- Valor:
- O conteúdo armazenado na variável, que pode ser um número, um caractere, uma string, ou qualquer outro tipo de dado.
- Tipo:
- O tipo de dado que a variável pode armazenar, como inteiro, ponto flutuante, caractere, etc.
- Tempo de Vida:
- O período durante o qual a variável existe na memória. Pode ser de curta duração (temporária) ou de longa duração (persistente).
- Escopo:
- A região do código onde a variável é acessível. Pode ser local (restrito a uma função ou bloco) ou global (acessível em todo o programa).
💾 Tipos de dados
Uma variável pode armazenar diferentes tipos de dados. Em Python, temos os seguintes tipos:
Tipo | Exemplo | Descrição |
---|---|---|
int | 42 | Números inteiros |
float | 3.14 | Números com ponto flutuante |
str | "Olá" | Texto (cadeias de caracteres) |
bool | True , False | Valores lógicos (booleanos) |
list | [1, 2, 3] | Lista de valores |
dict | {"a": 1} | Dicionário (chave → valor) |
NoneType | None | Ausência de valor |
Quando temos uma variável em Python, podemos descobrir o seu tipo da seguinte forma:
x = 42
print("Tipo:", type(x)) # <class 'int'>
print("Endereço:", id(x)) # Exibe o endereço de memória (interno)
```
## 🗣️ Declarações implícitas e explícitas
Apesar de simples, a declaração de variáveis pode ocorrer de formas distintas, de acordo com a estratégia adotada pela linguagem de programação. Em seu livro, Robert Sebesta classifica duas abordagens para a declaração de variáveis:
### Declaração Explícita:
Na declaração explícita de variáveis, o programador especifica explicitamente o tipo da variável durante a declaração. Isso é mais comum em linguagens de programação estáticas, onde os tipos são definidos em tempo de compilação. Em C, por exemplo:
```cpp
int a = 5; // a é explicitamente declarado como um inteiro
double b = 2.718; // b é explicitamente declarado como um número de ponto flutuante
```
### Declaração Implícita:
Na declaração implícita de variáveis, o tipo da variável não é explicitamente especificado, e a linguagem de programação infere automaticamente o tipo com base no valor atribuído à variável. Isso é mais comum em linguagens de programação dinâmicas, onde os tipos são determinados em tempo de execução. Aqui está um exemplo em Python:
```python
x = 10 # x é inferido como um inteiro (int)
y = 3.14 # y é inferido como um número de ponto flutuante (float)
```