• Nenhum resultado encontrado

4. PENSAMENTO COMPUTACIONAL

4.3. OS QUATRO PILARES DOS PENSAMENTO COMPUTACIONAL

Utilizamos o Pensamento Computacional para encontrar um dado problema de grande complexidade e fragmentá-lo, de forma a tornar esse problema em problemas menores e de fácil manipulação; chamamos isso de decomposição. Fragmentado o problema, podemos analisar parte a parte desse problema de forma mais precisa e profunda, comprando-os a problemas anteriores, esse processo é chamado de reconhecimento de padrões. Esse processo se torna mais ágil e eficaz quando damos prioridade aos detalhes importantes e ignoramos informações irrelevantes, essa etapa é o que chamamos de abstração. Por fim, estabelecemos regras ou estruturas no processo de solução desses pequenos problemas, o que denominamos de algoritmo. Com isso, podemos adaptar esse processo em forma de códigos que podem ser interpretados por computadores, podendo assim, delegar a máquina o processo de resolução do problema inicial. (BRACKMANN, 2017)

A resolução de problemas utiliza dessas quatro etapas: Decomposição, Reconhecimento de Padrões, Abstração e Construção Algoritmos, formando o que chamamos de Quatro Pilares do Pensamento Computacional. As Figuras 19 e 20 ilustram essa ideia.

Figura 19 – Os Quatro Pilares do Pensamento Computacional Fonte: BRACKMANN, 2017, p.33

Figura 20 – Os quatro pilares do Pensamento Computacional segundo BBC Fonte: BRACKMANN, 2017, p.34

Cada um desses pilares, mesmo não sendo necessariamente dependentes entre si, possuem sua importância dentro do Pensamento Computacional no processo de solução de problemas, por isso analisaremos cada um deles separadamente.

4.3.1 Decomposição

O processo de decomposição permite ao pesquisador dissolver um problema maior em problemas menores. Liukas (2015) compara esse processo a uma receita culinária, em que uma refeição nada mais é do que a decomposição dos seus ingredientes, ou então um jogo que é dividido em fases. Esse processo de quebra em partes menores permite maior mobilidade e administração dos problemas, muitas das vezes facilitando sua compreensão.

Um problema grande tem por consequência uma solução complexa e muita das vezes, que demanda de grande tempo de análise. Porém, quando utilizamos da decomposição facilitamos esse estágio de análise, tornando mais leve sua gestão, mesmo que de forma individual. Brackmann (2017, p.34) compara esse processo ao analisar o funcionamento de uma bicicleta, o que lhe permite uma maior atenção aos detalhes, conforme demonstrado na Figura 21.

Figura 21 – Processo de Decomposição de uma bicicleta Fonte: BRACKMANN, 2017, p.35

Para Brackmann (2017, p.35):

Quando a decomposição é aplicada a elementos físicos, como por exemplo a bicicleta, a manutenção torna-se mais fácil quando é possível modularizar suas partes. Caso contrário, se o item em questão fosse desenvolvido em uma única peça, seu reparo se tornaria muito difícil e a forma de consertá-lo seria trocando por outro. O mesmo acontece com o desenvolvimento de programas. (BRACKMANN, 2017, pag.35)

Essa técnica está diretamente ligada ao processo de programação, onde os códigos e algoritmos são divididos durante o processo de desenvolvimento, a fim de tornar sua estrutura de fácil compreensão e manutenção. Sistemas de grande porte são projetados de forma separada, essa técnica torna o projeto mais simples e menos complexo. (LIUKAS, 2015)

4.3.2 Reconhecimento de Padrões

Devido ao processo anterior de decomposição, onde geramos pequenos problemas a partir de um problema maior, podemos agrupar esses pequenos problemas por padrões e características semelhantes, o que permite que esses grupos de subproblemas possam compartilhar de uma mesma solução, tornando o processo mais eficaz. Segundo Brackmann (2017, p.35):

o Reconhecimento de Padrões como encontrar similaridades e padrões com o intuito de resolver problemas complexos de forma mais eficiente. Para isso, procura-se por elementos que sejam iguais ou muito similares em cada problema. Na literatura, o Reconhecimento de Padrões também pode estar associado ao termo “Generalização”. (BRACKMANN, 2017, pag.35)

Experiências anteriores servem como modelos quando fazemos uso do reconhecimento de padrões, tendo em vista que com a identificação de características semelhantes é possível também utilizar soluções semelhantes. Quando levamos isso para o Pensamento Computacional podemos perceber que ao identificar esses padrões é possível utilizar algoritmos específicos, utilizados para solução de problemas parecidos, tendo em vista que a computação permite que você adapte essa solução para problemas semelhantes.

Brackmann (2017), utiliza como analogia a esse processo a identificação de raças de cachorro através de características semelhantes, conforme podemos observar na Figura 22.

Figura 22 – Reconhecimento de Padrões nas raças de cachorros Fonte: BRACKMANN, 2017, p.36

Brackmann (2017, p.36) ao utilizar a imagem como exemplo explica que embora os cachorros “possuem olhos, rabo e pelos, porém suas características podem ser diferentes, como por exemplo, a cor dos olhos, comprimento do rabo e a cor dos pelos”. Essas características dentro dos fundamentos do Pensamento Computacional recebem o nome de “padrões”. Para o autor, esses padrões quando

observados e identificados podemos “descrever outros, simplesmente seguindo o padrão e alterando as características [...]”.

Knott (2016) utiliza-se da sequência de Fibonacci para exemplificar a utilização do reconhecimento de padrões, ainda mais pelo fato da sequência de Fibonacci poder ser encontrada em diversas obras naturais e de criação humana. O autor coloca que a cada passo da sequência de Fibonacci podemos utilizar passos anteriores para chegar na solução, sua formula utiliza de um padrão, e reconhecer esse padrão permite facilitar a solução de cada algarismo dessa sequência.

4.3.3 Abstração

Cas (2014), coloca que a principal função deste pilar do Pensamento Computacional, está em digerir de forma correta os elementos que serão descartados e os que serão analisados, essa filtragem permite que se possa ter uma ideia melhor sobre o problema a ser resolvido, porém a competência para se realizar essa tarefa sem que se perca informações importantes é essencial para seu sucesso.

Wing (2006), trata essa etapa como a mais importante dentro dos pilares do Pensamento Computacional, tendo em vista que sua utilização se faz presente em diversos momentos do processo, como quando elaboramos a escrita de uma pergunta, ou como selecionamos, ou ainda como iremos organizar um algoritmo e suas interações.

Liukas (2015) muda um pouco o discurso em relação aos outros autores, pois para Liukas essa etapa não é necessariamente um processo de qualificação entre o que é mais importante ou menos irrelevante. Esse processo é uma forma de concentrar no que é essencial. Ela exemplifica isso como o mapa do metro que encontramos nas estações, onde nele são utilizadas somente informações que irão permitir ao passageiro transitar entre os locais da cidade, facilitando sua compreensão. Percebemos que na Figura 23 do mapa do metrô da cidade de São Paulo não encontramos informações como latitude, posição geográfica, distância entre outras informações que não fogem da proposta principal de sua utilização.

Figura 23 – Exemplo de Abstração através do mapa de metrô de São Paulo Fonte: CPTM-SP

A Computação é uma Ciência de abstração, pois a partir de seus fundamentos se projeta formas corretas para se mecanizar a solução de um problema, tornado sua resolução mais fácil, e isso é visto no nosso cotidiano, seja pelo simples uso de uma planilha ou em softwares que facilitam e tornam o trabalho mais produtivo.

Brackmann (2017) compara a abstração como as histórias infantis utilizadas na elaboração de um problema matemático, essas histórias permitem que a criança mantenha um foco no problema que está sendo gerado e possa abstrair dela as etapas necessárias a fim de utilizar as equações adequadas para sua solução. Na disciplina de História, por diversas vezes somos apresentados a diversos líderes mundiais, compreender quais características os tornaram lideres tão importante também é uma forma de abstração.

4.3.4 Algoritmos

Para Wing (2014), o algoritmo é o processo que busca englobar todos os outros anteriores, através de um “conjunto de instruções” organizadas de forma clara

para solucionar-se um problema. Em uma primeira etapa, o algoritmo é escrito em forma de diagrama ou pseudocódigos, posteriormente sendo adaptado a linguagens de programação. Liukas (2015) destaca que é importante não se confundir algoritmo com programa, pois enquanto em um algoritmo usasse um conjunto especifico de passos em busca de uma solução, em um programa existe as instruções são precisas para compreensão dos computadores.

Segundo Brackmann (2017), esse pilar dentro do Pensamento computacional pode ser visto como,

[...] um conjunto de regras para a resolução de um problema, como a receita de um bolo; porém, diferentemente de uma simples receita de bolo, pode-se utilizar diversos fatores mais complexos. Existem algoritmos muito pequenos, que podem ser comparados a pequenos poemas. Outros algoritmos são maiores e precisam ser escritos como se fossem livros, ou então maiores ainda, necessitariam inevitavelmente serem escritos em diversos volumes de livros. Para entender melhor, é possível fazer questionamentos que possam facilitar a compreensão de como gerar e quais as limitações do mesmo, tais como: “É possível solucionar um problema utilizando algoritmos?”, ou “Qual a precisão que se necessita para solucionar um problema?”.. (BRACKMANN, 2017, pag.40)

Algoritmos sempre serão uma solução pronta, tendo em vista que já os demais processos de decomposição, reconhecimento de padrões e abstração, já foram executados anteriormente. Na matemática isso é visto com frequência, pois as fórmulas permitem que, independente dos dados utilizados, possamos chegar ao resultado. Na escola, a estrutura para se resolver uma conta ou equação é um exemplo de algoritmo, pois embora os dados de entra possam mudar, a estrutura para solução será a mesma, independentemente da quantidade de vezes que será utilizado.