Para desenvolver o pensamento computacional, uma importante habilidade a ser adquirida é a resolução de problemas e sua decomposição em partes menores. O pensamento computacional passar pela resolução de problemas usando ferramentas computacionais (assunto já abordado em outro artigo).

Existem algumas maneiras de facilitar a resolução de problemas. Ralph Emerson (1803-1882), escritor norte americano disse que: “Um problema sem solução é um problema mal colocado.” Ou seja, é necessário primeiro entender o problema e saber interpretá-lo. Vejo muitos alunos afoitos para resolver um determinado problema usando a computação, mas esquecem-se de primeiro fazer uma análise detalhada dele. Uma dica que pode ser importante: procure traduzir seu problema com suas próprias palavras. Ou seja, escreva ele em um papel. (ou digite no Word, se preferir) Use diagramas e mapas mentais se necessário (já falei desse assunto em outro artigo). Para qualquer problema, geralmente há soluções múltiplas: algumas boas, algumas ruins e outras aceitáveis. Você deve se concentrar em encontrar a melhor solução possível.

Este breve artigo trata sobre uma forma de resolver problemas, que é a decomposição, ou o processo de dividir um problema maior em problemas menores. Essa técnica podemos dizer que não é algo novo já que René Descartes, (1596-1650 ), já afirmou que: “Divide as dificuldades que tenhas de examinar em tantas partes quantas for possível, para uma melhor solução.”

Encontrar uma maneira de dividir um problema em etapas ou fases pode tornar o problema muito mais fácil. Vamos tornar o conceito mais fácil através de um exemplo::

Suponha que você tenha 100 fichas que precisa colocar em ordem alfabética, e seu método usa a classificação por inserção: você pega uma das fichas aleatoriamente, e depois coloca a próxima ficha antes ou depois da primeira de acordo com a letra e então continua o mesmo processo até terminar. Isso pode se tornar algo um tanto difícil quando organizar várias dessas fichas.  Uma alternativa pode ser você separar as fichas  em 4 grupos, separados por faixas de letras. Por exemplo:  um primeiro grupo de  A até F, um segundo de G até M, um terceiro de N até  S e o último de T até Z. Primeiramente você pode separar todas as fichas por estes grupos, sem se preocupar com ordem e posteriormente coloca-las em ordem alfabética grupo a grupo. (adaptado de Spraul, 2012).

A decomposição de um problema grande em problemas menores tem sua importância particular para o pensamento computacional por meio da experiência de programadores que costumam lidar com problemas grandes e complexos que apresentam várias partes inter-relacionadas. A decomposição é uma estratégia de dividir e conquistar, algo visto em vários lugares. E você, já pensou em dividir seus problemas em vários problemas menores para resolvê-los?

Referências bibliográficas:

BEECHER, K. Computational Thinking, A beginner’s guide to problem – solving and programming. BCS Learning & Development Ltd. Swindon, UK. 2017

SPRAUL. V. Anton. Think Like a Programmer. No Starch Press. 2012.