Tipo de Dados

Classificação que especifica que tipo de valor uma variável pode conter e quais operações podem ser realizadas.

Um tipo de dado define a natureza dos dados que podem ser armazenados em uma variável e as operações permitidas. Tipos garantem o manuseio correto dos dados.

Tipos primitivos:
- Inteiro (Integer): Números inteiros
- Ponto Flutuante (Float): Números decimais
- Booleano: verdadeiro/falso
- Caractere: Letra/símbolo único
- String: Sequência de caracteres

Tipos compostos:
- Array: Coleção de elementos do mesmo tipo
- Objeto: Estrutura definida pelo usuário
- Struct: Grupo de campos nomeados

Sistemas de tipos:
- Tipagem estática: Verificada na compilação (Java, C++)
- Tipagem dinâmica: Verificada na execução (Python, JS)
- Tipagem forte: Regras rígidas
- Tipagem fraca: Conversão automática

        graph LR
  Center["Tipo de Dados"]:::main
  Rel_boolean["boolean"]:::related -.-> Center
  click Rel_boolean "/terms/boolean"
  Rel_data_modeling["data-modeling"]:::related -.-> Center
  click Rel_data_modeling "/terms/data-modeling"
  Rel_data_structure["data-structure"]:::related -.-> Center
  click Rel_data_structure "/terms/data-structure"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧒 Explique como se eu tivesse 5 anos

Um tipo de dado é como recipientes diferentes: um cofre guarda moedas (números), uma estante guarda livros (textos) e um semáforo mostra vermelho/verde (booleano). Cada recipiente é feito para sua própria coisa!

🤓 Expert Deep Dive

A inferência de tipo Hindley-Milner permite tipagem estática sem anotações. Tipos de dados algébricos (soma/produto) permitem modelagem expressiva. Tipos dependentes (Idris) codificam restrições. Tipagem gradual (TypeScript) une estático e dinâmico. Type erasure remove tipos em tempo de execução.

📚 Fontes