CajuínaCode
Voltar ao blog
TecnologiaLógicaIniciantesTutorialProgramação

Pensamento Computacional (Parte 3): Abstração

Nas duas primeiras partes da nossa trilha, aprendemos a fatiar grandes problemas em pequenas partes (Parte 1) e a buscar semelhanças e tendências entre eles para poupar esforço mental (Parte 2). No entanto, no mundo real da tecnologia, os problemas de negócios vêm acompanhados de uma avalanche de detalhes secundários, exceções e poluição visual. Tentar pensar em todos esses detalhes microscópicos simultaneamente é a receita perfeita para travar o seu cérebro e criar códigos confusos. Para cons

CC

Cajuina Code

·3 min de leitura

Nas duas primeiras partes da nossa trilha, aprendemos a fatiar grandes problemas em pequenas partes (Parte 1) e a buscar semelhanças e tendências entre eles para poupar esforço mental (Parte 2).

No entanto, no mundo real da tecnologia, os problemas de negócios vêm acompanhados de uma avalanche de detalhes secundários, exceções e poluição visual. Tentar pensar em todos esses detalhes microscópicos simultaneamente é a receita perfeita para travar o seu cérebro e criar códigos confusos.

Para conseguir simplificar a realidade e focar unicamente no que é essencial para resolver o problema, usamos o terceiro pilar do pensamento computacional: a Abstração.

TL;DR: Abstração é a prática lógica de ocultar detalhes secundários e desnecessários de um problema, criando um modelo mental simplificado focado apenas nos aspectos cruciais para a solução.

---

O que é a Abstração?

Abstrair significa filtrar ou ignorar.

Quando um computador renderiza a imagem de um jogo 3D na tela, ele não calcula o peso real físico da roupa do personagem ou a temperatura real do vento. Ele ignora esses detalhes da física do mundo real e calcula apenas as coordenadas tridimensionais geométricas e as cores dos pixels.

O computador cria um modelo abstrato (simplificado) da realidade para conseguir rodar com velocidade de processamento viável.

---

Duas Analogias do Mundo Real

Para tornar o conceito intuitivo e fácil de compreender, vamos analisar como a abstração é usada para facilitar o nosso cotidiano físico:

1. O Mapa do Metrô de uma Metrópole

Imagine que você está em uma grande metrópole (como São Paulo ou Londres) e precisa pegar o metrô para ir a um museu.

Se o mapa do metrô exibisse:

  • A localização exata de cada árvore na calçada acima da terra;
  • O nome de todas as padarias e farmácias das ruas;
  • O fluxo de trânsito dos carros em tempo real nas avenidas.

Você não conseguiria ler o mapa de tão poluído e confuso que ele seria. Por isso, os designers criaram um modelo abstrato: o mapa oculta 99% da geografia da cidade e exibe apenas as linhas coloridas e as bolinhas das estações. Ele esconde o que não importa (o trânsito de carros) para focar no que importa (como ir de trem do ponto A ao ponto B).

2. O Painel de Controle de um Carro

Imagine o João dirigindo seu carro pela rodovia. O João não precisa ter conhecimentos profundos de engenharia mecânica, saber a temperatura de combustão do oxigênio com a gasolina dentro dos pistões do motor ou a rotação física da caixa de engrenagens do câmbio para dirigir.

Os engenheiros automotivos esconderam toda essa física complexa sob o capô de metal e criaram uma abstração de controle simples:

  • Um pedal para ir mais rápido (Acelerador).
  • Um pedal para parar (Freio).
  • Uma roda de metal para mudar de direção (Volante).

Você interage com a abstração (os pedais e volante) sem precisar se preocupar com a complexidade interna do motor.

---

Como Usamos a Abstração na Programação?

Na programação, a abstração é o que nos permite criar funções e estruturas que ocultam a complexidade do código.

Pense no comando que usamos em Python na Parte 1 para exibir dados na tela:

print("Olá, Mundo!")

A linha acima parece extremamente simples. Mas, por trás desse único comando, o seu computador executa uma sequência gigantesca de tarefas complexas:

  1. O sistema operacional calcula quais pixels da tela devem ser acesos.
  2. Aloca um bloco de endereços físicos na memória RAM para guardar o texto.
  3. Envia impulsos elétricos para o processador de vídeo renderizar a fonte da letra.

Graças à abstração de software, você não precisa escrever centenas de linhas de código assembly de controle de memória para jogar um texto na tela; você interage apenas com a função abstrata simplificada: o comando print().

Quando você cria as suas próprias funções ou classes no código, você está agindo como o engenheiro do carro: você empacota dezenas de linhas difíceis dentro de um bloco nomeado simples para que os outros programadores da sua equipe possam usá-lo sem precisar entender toda a matemática interna do bloco.

---

Perguntas Frequentes

Qual a diferença entre Abstração e Generalização?

A abstração é o processo de filtrar e esconder a complexidade inútil de um caso específico. A generalização é o processo de pegar essa solução abstrata e expandi-la para que ela sirva para múltiplos casos diferentes (como criar uma única função de cálculo de juros que serve para carros, casas ou compras simples).

O excesso de abstração pode ser prejudicial?

Sim. Se você ocultar detalhes demais, o seu modelo simplificado pode ficar tão genérico que perde a precisão necessária para resolver o problema real, ou dificulta o diagnóstico de erros profundos de hardware caso as peças físicas parem de responder.

---

Próximo Passo

Parabéns! Você agora domina a arte lógica de simplificar a realidade, ignorar ruídos e focar apenas no que é vital para a resolução de problemas (como o mapa de metrô).

Estamos prontos para a última etapa da nossa jornada! Na Parte 4 da nossa trilha (final), aprenderemos a organizar todas as partes decompostas, padronizadas e abstratas em um roteiro linear e lógico de execução: os Algoritmos!

Newsletter

Receba as notas de desenvolvimento

Enviamos atualizações técnicas e bastidores de código sem spam direto no seu e-mail.

Leia também

·3 min

Pensamento Computacional (Parte 4): Algoritmos

Chegamos ao final da nossa trilha de Pensamento Computacional! Ao longo dos posts anteriores, aprendemos a dividir grandes problemas em partes menores (Parte 1), a identificar semelhanças para poupar esforço mental (Parte 2) e a ignorar os detalhes inúteis para focar apenas no essencial (Parte 3). Agora que limpamos o nosso problema e sabemos exatamente o que precisa ser resolvido de forma simplificada, como transformamos esse raciocínio em instruções práticas que o computador consiga executar

·3 min

Pensamento Computacional (Parte 2): Reconhecimento de Padrões

Na Parte 1 da nossa trilha, aprendemos o que é decomposição: o processo mental de quebrar um elefante em pequenos pedaços (desafios menores) para poder resolvê-los um a um de forma simples e independente. No entanto, depois de fatiar um grande problema em pequenas etapas, como podemos economizar tempo e evitar "reinventar a roda" a cada novo código ou circuito que construímos? A resposta está no segundo pilar do pensamento computacional: o Reconhecimento de Padrões. Nesta Parte 2, você aprende