2. O que vamos aprender
1 Conceito de variáveis na programação
Como as informações são armazenadas na memória do
computador
2 Tipos de dados fundamentais
Numéricos, texto, booleanos e estruturas compostas
3 Diferenças entre linguagens de
programação
Como C/C++, Java, Python, JavaScript, Rust e Go lidam com tipos
de dados
4 Tipagem estática vs. dinâmica
Vantagens, desvantagens e casos de uso para cada abordagem
3. O que são variáveis?
Variáveis são espaços na memória do computador destinados a armazenar valores
durante a execução de um programa.
Cada variável possui:
Um nome (identificador)
Um tipo (explícito ou implícito)
Um valor (que pode mudar durante a execução)
Pense em variáveis como caixas com etiquetas onde guardamos informações para usar
depois.
4. Analogia: Variáveis como
caixas
Variáveis funcionam como caixas organizadoras em seu programa:
O nome da variável é como a etiqueta na caixa
O tipo de dado define que tipo de conteúdo a caixa pode armazenar
O valor é o conteúdo atual dentro da caixa
Quando seu programa precisa daquela informação, ele sabe exatamente onde procurar!
5. Tipos de dados básicos
Numéricos
int: números inteiros (1, 42, -10)
float/double: números com decimal
(3.14, -0.5)
Texto
char: um único caractere ('a', '5', '@')
string: sequência de caracteres ("Olá
mundo")
Booleanos
bool: valores lógicos (true/false,
verdadeiro/falso)
Usados para controle de fluxo e
decisões
Estes são os tipos de dados fundamentais presentes em quase todas as linguagens de programação, com pequenas variações de sintaxe.
6. Tipos compostos/estruturados
numeros = [1, 2, 3, 4, 5]
nomes = ["Ana", "Bruno", "Carla"]
pessoa = {
"nome": "Carlos",
"idade": 25,
"altura": 1.75
}
Arrays/Listas
Coleções ordenadas de valores do mesmo tipo:
Objetos/Dicionários
Coleções de pares chave-valor:
coordenadas = (10.5, 20.8)
rgb = (255, 0, 127)
cores = {"vermelho", "verde", "azul"}
Tuplas
Coleções ordenadas e imutáveis:
Conjuntos (Sets)
Coleções não ordenadas sem duplicatas:
Estes tipos permitem organizar dados complexos de forma estruturada.
8. Tipagem estática vs. dinâmica
Tipagem Estática
O tipo da variável é definido explicitamente
Uma vez declarado, o tipo não pode mudar
Erros de tipo são detectados na compilação
Exemplos: C, C++, Java, Rust, Go
Vantagens: mais segura, otimizada, documentada
Desvantagens: menos flexível, mais verbosa
Tipagem Dinâmica
O tipo é inferido automaticamente
Uma variável pode mudar de tipo durante a execução
Erros de tipo aparecem na execução
Exemplos: Python, JavaScript, Ruby, PHP
Vantagens: mais flexível, rápida para prototipar
Desvantagens: mais propensa a erros, menor otimização
9. Tipagem: forte vs. fraca
# Python (tipagem forte)
"5" + 5 # Erro! Não soma string com número
Tipagem Forte
Não permite conversões automáticas entre tipos diferentes
Exemplos: Python, Rust, Java
// JavaScript (tipagem fraca)
"5" + 5 // Resultado: "55" (converte 5 para string)
"5" - 2 // Resultado: 3 (converte "5" para número)
Tipagem Fraca
Realiza conversões automáticas entre tipos diferentes
Exemplos: JavaScript, PHP
A força da tipagem determina quão rigorosa a linguagem é quanto à mistura de tipos diferentes em operações.
10. Como diferentes
linguagens lidam com
variáveis
int idade = 20;
float altura = 1.75;
char inicial = 'M';
// Precisa declarar o tipo
C/C++
int idade = 20;
double altura = 1.75;
String nome = "Maria";
// Estático com classes
Java
idade = 20
altura = 1.75
nome = "Maria"
# Tipo inferido automaticamente
Python
let idade = 20;
idade = "vinte"; // válido!
// Dinâmica e fraca
JavaScript
11. C/C++: Linguagens com tipagem estática
rígida
int idade = 20;
float altura = 1.75;
char nome[50] = "Ana Silva";
// Erro! Tipos incompatíveis
idade = "vinte";
// Conversão explícita (casting)
float resultado = (float)5 / 2; // 2.5
C e C++ são linguagens clássicas com tipagem estática, explícita e rígida:
Características:
Exige declaração de tipo antes do uso
Alta performance e controle de memória
Conversões precisam ser explícitas
12. Java: Orientação a objetos com tipagem
estática
Java combina tipagem estática com forte orientação a objetos:
// Tipos primitivos
int idade = 25;
double altura = 1.82;
// Tipos por referência (objetos)
String nome = "Carlos Eduardo";
ArrayList linguagens = new ArrayList();
linguagens.add("Java");
linguagens.add("Python");
// Erro de compilação - tipos incompatíveis
idade = nome;
Características:
Diferencia tipos primitivos (int, double) de objetos (String, ArrayList)
Verificação rigorosa de tipos na compilação
Foco em segurança e portabilidade ("write once, run anywhere")
13. Python: Dinamismo e simplicidade
# O tipo é inferido automaticamente
idade = 30
altura = 1.65
nome = "Ana Clara"
# A mesma variável pode mudar de tipo
contador = 0
contador = "zero" # Válido em Python!
# Tipos fortes - sem conversão implícita
# print(5 + "5") # Erro!
print(5 + int("5")) # OK: 10
Python é conhecido pela tipagem dinâmica e sintaxe limpa:
Características:
Foco na legibilidade e produtividade
Dinâmica mas forte (não converte tipos automaticamente)
14. JavaScript: Flexibilidade e conversões
automáticas
JavaScript é dinâmico e fraco, realizando conversões automáticas:
// Declaração dinâmica com let/var/const
let idade = 40;
let altura = 1.78;
let nome = "Ricardo";
// Mudança de tipo é permitida
idade = "quarenta anos"; // Válido!
// Conversões automáticas (tipagem fraca)
console.log("5" + 5); // Saída: "55" (concatenação)
console.log("5" - 2); // Saída: 3 (subtração numérica)
console.log(true + true); // Saída: 2 (true é tratado como 1)
Características:
Extremamente flexível (às vezes perigosamente)
Conversões implícitas podem causar comportamentos inesperados
Ideal para desenvolvimento web rápido, mas requer atenção
15. Rust e Go: Modernas e seguras
// Inferência de tipos com segurança
let idade: u32 = 28;
let nome = String::from("Julia");
// Controle rigoroso de memória
let x = 5;
let y = x; // x ainda é válido
Rust
Foco em segurança de memória e prevenção de erros concorrentes
// Sintaxe simples com segurança
var idade int = 32
nome := "Marcos" // inferência
// Tipagem estática simplificada
var alturas = []float64{1.75, 1.82}
Go
Projetada para simplicidade, eficiência e concorrência
Ambas combinam a segurança da tipagem estática com sintaxe moderna e inferência de tipos, reduzindo a verbosidade sem sacrificar a segurança.
16. Os tipos e a memória do computador
Cada tipo de dado ocupa um espaço diferente na memória:
Boolean
Geralmente 1 byte (mesmo só precisando de 1 bit)
Char
1 byte (ASCII) ou 2-4 bytes (Unicode)
Int
Tipicamente 4 bytes (32 bits) ou 8 bytes (64 bits)
Float/Double
4 bytes (float) ou 8 bytes (double)
String
Varia conforme o tamanho do texto
17. Quando o tipo de dado importa?
Sistemas de baixo nível
Embarcados/IoT: memória limitada
Jogos: performance é crucial
Sistemas operacionais: eficiência
Usar int8 em vez de int64 pode significar economizar 7 bytes por
variável - crucial quando você tem milhões delas!
Sistemas de alto nível
Aplicações web: flexibilidade
Ciência de dados: praticidade
Protótipos: velocidade de desenvolvimento
Linguagens como Python e JavaScript abstraem a complexidade dos
tipos, permitindo foco na solução do problema.
A escolha depende do equilíbrio entre eficiência, segurança e velocidade de desenvolvimento.
18. Exemplos práticos de uso de variáveis
# Python
num1 = float(input("Primeiro número: "))
num2 = float(input("Segundo número: "))
soma = num1 + num2
print(f"Resultado: {soma}")
Calculadora Simples
// JavaScript
let nome = prompt("Nome completo:");
let idade = parseInt(prompt("Idade:"));
let ativo = true;
console.log(`Usuário ${nome}, ${idade} anos`);
Cadastro de Usuário
19. Dicas para escolher a abordagem certa
Quando usar tipagem estática
Projetos grandes com muitos desenvolvedores
Sistemas que exigem alta performance
Aplicações onde segurança é crítica
Quando precisa de documentação clara sobre a interface
Para detectar erros antes da execução
Ex: C++, Java, Rust, TypeScript
Quando usar tipagem dinâmica
Protótipos rápidos e MVPs
Scripts e automações simples
Ciência de dados e análises exploratórias
Quando flexibilidade é mais importante que performance
Para aprendizado inicial de programação
Ex: Python, JavaScript, Ruby, PHP
Lembre-se: não existe uma abordagem "melhor" - cada uma tem seu propósito!
20. Resumo: O que
aprendemos
Variáveis são espaços na memória para
armazenar valores
Cada variável tem um nome, um tipo e um valor atual
Tipos básicos incluem números, texto e
booleanos
Tipos compostos organizam dados mais complexos
Linguagens diferem em como tratam tipos
Estáticas vs. dinâmicas, fortes vs. fracas
A escolha da abordagem depende do contexto
Considere segurança, performance, flexibilidade e produtividade
Continue praticando e experimentando diferentes linguagens para entender melhor
como cada uma implementa esses conceitos!