Pensamento Computacional (Parte 1): Decomposição
Quando pensamos em cientistas de dados, desenvolvedores de software ou engenheiros de inteligência artificial, é muito comum imaginarmos pessoas com inteligência matemática sobre-humana, capazes de decorar comandos difíceis em telas pretas. No entanto, a habilidade mais importante desses profissionais não é a linguagem de programação que eles usam. O maior segredo da programação é o Pensamento Computacional — uma forma estruturada e lógica de pensar para resolver problemas de qualquer área, ant
Cajuina Code
Quando pensamos em cientistas de dados, desenvolvedores de software ou engenheiros de inteligência artificial, é muito comum imaginarmos pessoas com inteligência matemática sobre-humana, capazes de decorar comandos difíceis em telas pretas.
No entanto, a habilidade mais importante desses profissionais não é a linguagem de programação que eles usam. O maior segredo da programação é o Pensamento Computacional — uma forma estruturada e lógica de pensar para resolver problemas de qualquer área, antes mesmo de tocar no teclado.
Nesta trilha de 4 partes, vamos desmistificar os pilares do pensamento computacional. Começaremos nesta Parte 1 aprendendo a dominar o primeiro e mais importante pilar para lidar com desafios complexos: a Decomposição.
TL;DR: Decomposição é a prática lógica de quebrar um grande problema complexo em partes menores e mais simples, permitindo resolver cada etapa de forma independente.
---
O que é a Decomposição?
No cotidiano, costumamos ficar paralisados quando nos deparamos com um grande objetivo desafiador (como criar um aplicativo do zero, aprender um novo idioma ou organizar uma mudança de casa). O problema parece tão gigantesco que não sabemos por onde começar.
Para o computador, qualquer instrução também precisa ser dividida. Um microprocessador não consegue executar uma tarefa complexa de uma vez só; ele precisa de uma sequência de micro-instruções elétricas simples.
A decomposição é o processo de pegar esse grande problema assustador e fatiá-lo em pequenos pedaços. Ao resolver cada pedaço menor de forma individual, o grande problema se resolve de forma natural.
---
Duas Analogias Práticas do Cotidiano
Para entender como a decomposição organiza nossa mente de forma intuitiva, vamos analisar dois exemplos simples:
1. Como comer um Elefante?
Existe um ditado clássico na administração de projetos que faz a seguinte pergunta: "Como se come um elefante inteiro?". A resposta é óbvia: "Uma mordida de cada vez".
Tentar engolir um elefante inteiro de uma vez é fisicamente impossível e perigoso. Na programação é igual: se você tentar programar um sistema financeiro inteiro de uma só vez, seu código quebrará em centenas de bugs. Você precisa quebrar o elefante (o sistema) em pequenas mordidas (criar a tela de login, depois o banco de dados, depois a lógica de juros).
2. A Lasanha de Domingo do João
Imagine que o João quer preparar uma lasanha caseira complexa de domingo para sua família. Se ele ler a receita inteira de 35 passos simultaneamente, ele ficará estressado e desistirá.
Aplicando a decomposição, o João divide o almoço em 5 tarefas simples e independentes:
- Tarefa A: Fazer o molho vermelho de carne.
- Tarefa B: Fazer o molho branco de queijo.
- Tarefa C: Cozinhar a massa de lasanha.
- Tarefa D: Montar as camadas alternadas no refratário.
- Tarefa E: Assar no forno por 30 minutos.
Resolver a Tarefa A é muito simples. Resolver a Tarefa B também. Ao realizar cada uma delas na sequência, a lasanha complexa fica pronta de forma suave e organizada.
---
Como Aplicar a Decomposição na Programação
Quando você começa a programar em Python ou criar projetos com Arduino, a decomposição é a sua ferramenta mais valiosa de desenvolvimento.
Imagine que você precisa programar o alarme de ré de um carro (como o projeto que fizemos na Parte 5 de Arduino). Em vez de tentar escrever o código completo de uma vez, você decompõe a entrega em subproblemas:
- Subproblema 1: Como fazer o sensor ultrassônico medir a distância física do obstáculo em centímetros?
- Subproblema 2: Como fazer a placa-mãe imprimir essa distância no monitor serial para teste?
- Subproblema 3: Como fazer o buzzer emitir um apito físico simples?
- Subproblema 4: Como criar a lógica que varia o tempo de espera do apito baseando-se na distância medida?
Ao focar e resolver o Subproblema 1 sozinho, você garante a entrada de dados. Ao resolver o Subproblema 3, garante a saída de som. Juntar tudo no final torna-se uma tarefa simples de encaixe lógico.
---
Perguntas Frequentes
Qual a diferença entre Decomposição e Divisão de Trabalho?
A decomposição é um processo cognitivo de análise lógica do problema em si, dividindo as partes do sistema. A divisão de trabalho é a atribuição dessas partes decompostas para pessoas ou computadores diferentes executarem.
O que acontece se eu não decompor meus problemas?
Seus códigos de programação serão gigantescos, difíceis de ler (o chamado "código espaguete") e qualquer pequeno erro em uma linha parará o programa inteiro, tornando o diagnóstico de falhas cansativo e complexo.
---
Próximo Passo
Parabéns por dominar o primeiro pilar do pensamento lógico! Você agora entende que nenhum problema é grande demais se for fatiado em pequenas partes simples (mordidas de elefante).
Mas como economizamos tempo quando percebemos que essas pequenas partes decompostas são parecidas com outras tarefas que já resolvemos no passado? Na Parte 2 da nossa trilha, conheceremos o segundo pilar: o Reconhecimento de Padrões!