SkillsTecnológicas
Menu
Conteúdo da trilha

Conteúdo 14 de 20

Tipos de dados

Conheça números, textos, caracteres, valores lógicos e ausência e entenda como cada tipo define operações possíveis.

Publicado em 10 de setembro de 202616 min de leituraSkills Tecnológicas

Valores com formas distintas são separados em compartimentos desenhados a lápis conforme suas características

O tipo define valores e operações possíveis

Um tipo de dado descreve que espécie de valor está sendo representada e quais operações fazem sentido para ele. Um inteiro pode ser somado; um texto pode ser concatenado; um valor lógico pode participar de uma condição.

O tipo ajuda o algoritmo a interpretar os mesmos símbolos de maneiras diferentes. 12 representa um número inteiro. "12" representa uma sequência de caracteres. Embora ambos possam aparecer como “12” em uma tela, um participa naturalmente de cálculos e o outro de operações de texto.

Na aula sobre variáveis e constantes, vimos como nomes acompanham o estado. Agora acrescentamos outra pergunta: que valores cada nome pode receber e o que pode ser feito com eles?

Mapa apresenta inteiro, real, texto, caractere, lógico e ausência com um exemplo e a finalidade principal de cada tipo
Os nomes concretos variam entre linguagens, mas essas categorias formam um vocabulário inicial útil.

Literais também possuem tipo

Um literal é um valor escrito diretamente no algoritmo ou no código. A forma como ele aparece fornece pistas sobre o tipo:

Literal em pseudocódigoTipo conceitualSignificado
42inteiroquantidade sem parte fracionária
42,5realnúmero com parte fracionária
"42"textodois caracteres: 4 e 2
'A'caractereuma unidade de texto, quando a linguagem separa esse tipo
verdadeirológicoum dos dois valores de uma condição
nuloausêncianenhum valor presente naquele contexto

Nesta trilha, usamos vírgula decimal na explicação em português e nomes como real no pseudocódigo. Linguagens de programação costumam adotar ponto em literais, como 42.5, e podem usar nomes como float, double ou decimal.

Aspas fazem parte da notação, não do conteúdo armazenado. O texto "Ana" possui três caracteres; as aspas apenas delimitam o literal.

Números inteiros

Inteiros representam valores sem parte fracionária: -3, 0, 18 e 1200. Eles aparecem em contagens, índices, quantidades e posições discretas.

Operações comuns incluem soma, subtração, multiplicação, comparação e, dependendo da linguagem, divisão inteira e resto. O resultado de uma divisão merece atenção: 5 ÷ 2 pode produzir 2, 2,5 ou exigir outro operador conforme os tipos e as regras da linguagem.

Inteiro não significa ilimitado. Muitas linguagens oferecem tipos inteiros com tamanhos e intervalos diferentes. A escolha por limites ficará para a próxima aula; por enquanto, reconheça que quantidade de itens e número de tentativas não precisam de parte fracionária.

Números reais e representações decimais

No pseudocódigo introdutório, chamamos de real um valor que pode possuir parte fracionária, como 1,75 ou -0,5. Linguagens concretas subdividem essa ideia.

Tipos de ponto flutuante, como float e double em várias linguagens, representam uma faixa ampla de números, mas não conseguem guardar exatamente todos os valores decimais. Já algumas plataformas oferecem um tipo decimal voltado a cálculos em que a representação de casas decimais precisa seguir outras garantias.

Isso significa que “tem vírgula” não encerra a decisão. Medidas aproximadas, valores monetários e resultados científicos podem exigir escolhas diferentes. A aula seguinte organizará esses critérios sem depender de uma linguagem específica.

Texto e caractere

Texto — frequentemente chamado de string — representa uma sequência de caracteres. Nomes, mensagens, identificadores formatados e endereços são exemplos.

Operações comuns incluem:

  • concatenar trechos;
  • obter comprimento;
  • comparar textos;
  • buscar ou substituir partes;
  • acessar elementos da sequência, quando a linguagem permite.

Um caractere representa uma unidade individual, como 'A', '7' ou '?'. C# possui tipos separados char e string. Python não oferece um tipo char separado: um caractere é uma string de comprimento 1. Portanto, não transforme uma convenção vista em uma linguagem em regra universal.

O caractere '7' continua sendo texto, não o número 7. Sua forma visual não determina as operações válidas.

Para ver implementações concretas, consulte os guias do blog sobre tipos de dados em Python e tipos de dados em C#.

Valores lógicos

O tipo lógico, também chamado de booleano, possui dois valores: verdadeiro e falso. Ele representa respostas a perguntas como:

  • o usuário está autenticado?
  • a entrada é válida?
  • ainda existem itens?
  • o limite foi atingido?
entradaValida ← idade >= 0

Depois dessa atribuição, entradaValida não contém a idade. Contém o resultado lógico da comparação.

Não presuma que verdadeiro seja o número 1 e falso seja 0. Algumas linguagens permitem conversões ou tratamentos numéricos; outras, como C#, separam bool de inteiros. No modelo lógico, use booleanos para condições e números para quantidades.

Ausência não é zero, vazio ou falso

Algoritmos também precisam representar que um dado não está presente. Linguagens usam recursos como null, None, nil, undefined ou tipos opcionais, cada um com regras próprias.

Compare quatro estados:

ValorInterpretação possível
0quantidade conhecida igual a zero
""texto conhecido, mas vazio
falsocondição conhecida e negativa
nulovalor ausente ou não aplicável

Esses estados não são intercambiáveis. Em um cadastro, numeroDeDependentes ← 0 informa que a pessoa não possui dependentes. numeroDeDependentes ← nulo pode indicar que a informação não foi fornecida.

JavaScript, por exemplo, diferencia null, usado como ausência intencional, de undefined, associado à falta de atribuição em vários contextos. Outras linguagens usam modelos diferentes. Sempre defina o significado da ausência no problema antes de escolher a representação.

O mesmo símbolo pode produzir operações diferentes

O operador + ilustra por que o tipo importa:

12 + 3        // soma numérica: 15
"12" + "3"    // concatenação textual: "123"

Misturar os tipos pode ser rejeitado ou provocar conversão automática:

12 + "3"

O resultado dessa expressão depende da linguagem. Pode haver erro, conversão para texto ou outra regra. Não baseie a lógica em uma conversão implícita que o leitor precisa adivinhar.

Comparação mostra números 12 e 3 produzindo soma 15, textos 12 e 3 produzindo concatenação 123 e valor lógico sendo usado em uma decisão
Os símbolos podem se repetir, mas o tipo dos operandos define qual operação está sendo solicitada.

A conversão explícita torna a intenção visível, mas será estudada em uma aula própria. Neste momento, identifique primeiro os tipos presentes e desconfie de combinações incompatíveis.

O tipo pertence à variável ou ao valor?

A resposta depende da linguagem e do momento observado.

Em linguagens de tipagem estática, uma variável possui um tipo declarado ou inferido que restringe os valores atribuídos. C# permite declarar int quantidade; depois disso, a variável não recebe livremente um texto.

Em linguagens de tipagem dinâmica, os valores possuem tipos e um nome pode ser associado a valores de tipos diferentes ao longo da execução. Python permite que o mesmo nome seja associado primeiro a um inteiro e depois a uma string, embora isso nem sempre seja uma decisão clara.

Tipagem estática ou dinâmica não elimina tipos. Ela muda quando e como a compatibilidade é verificada. Para raciocinar sobre um algoritmo, manter um significado estável para cada nome reduz surpresas mesmo quando a linguagem permite trocas.

Exemplo: dados de uma atividade

Considere este registro conceitual:

titulo ← "Introdução à lógica"
cargaHoraria ← 12
notaMinima ← 6,0
possuiCertificado ← verdadeiro
turma ← 'A'
dataDeEncerramento ← nulo

Cada valor responde a uma necessidade diferente:

NomeTipo conceitualOperação esperada
titulotextoapresentar ou buscar palavras
cargaHorariainteirosomar horas completas
notaMinimarealcomparar com uma nota calculada
possuiCertificadológicodecidir se certificado pode ser emitido
turmacaractere ou texto curtoidentificar um grupo
dataDeEncerramentodata opcionalverificar presença antes de usar
Cadastro de atividade associa título a texto, carga horária a inteiro, nota mínima a real, certificado a lógico, turma a caractere e encerramento a valor opcional
Tipo não é decoração: ele conecta o significado do campo às operações que o algoritmo realizará.

dataDeEncerramento introduz uma categoria mais rica: uma data que pode estar ausente. Não a transforme em texto vazio sem decidir como comparar, ordenar e validar datas.

Erros comuns

Escolher pelo formato visual

Um CEP, telefone ou código de produto pode conter apenas dígitos e ainda ser texto, pois não participa de cálculos aritméticos e pode preservar zeros à esquerda.

Confundir número real com valor exato

Um tipo de ponto flutuante não representa exatamente todo decimal. A precisão necessária faz parte do problema.

Usar texto para todos os dados de entrada

Interfaces frequentemente entregam texto, mas o algoritmo precisa validar e converter antes de calcular ou comparar numericamente.

Tratar ausência como valor padrão

Zero e vazio podem ser respostas válidas. Usá-los para ausência apaga uma distinção importante.

Presumir os mesmos tipos em todas as linguagens

char, inteiro, real e ausência possuem modelos diferentes. Consulte a documentação da linguagem usada.

Depender de conversão implícita

Uma linguagem pode aceitar a combinação e ainda produzir um resultado diferente do pretendido.

Pratique classificando dados

Classifique os campos de um pedido hipotético:

  • código "00042";
  • quantidade 3;
  • peso 1,75;
  • entrega expressa verdadeiro;
  • observação "";
  • data de entrega ainda desconhecida.

Para cada campo:

  1. indique o tipo conceitual;
  2. explique quais operações serão necessárias;
  3. diferencie vazio de ausente;
  4. identifique o que aconteceria se o código fosse convertido para inteiro;
  5. monte uma tabela de estado e faça um teste manual.

O código deve permanecer texto para preservar os zeros à esquerda. Quantidade é inteira; peso admite fração; entrega expressa é lógica; observação é um texto presente e vazio; a data precisa representar ausência.

O que você deve guardar

Tipo de dado define um conjunto de valores e as operações coerentes com eles. Inteiro representa quantidades discretas; real representa valores fracionários; texto reúne caracteres; lógico expressa verdadeiro ou falso; ausência indica que um valor não está presente.

Os nomes e detalhes variam entre linguagens. Antes de operar, identifique o significado do dado, o tipo atual e o resultado esperado. Continue em Como escolher o tipo de dado adequado para transformar essas categorias em um método de decisão, ou consulte o catálogo da trilha de Lógica de Programação.

Referências