O pensamento computacional (PC) é uma estratégia de resolução de problemas que se baseia nos fundamentos utilizados, com frequência, por programadores e desenvolvedores na área das Ciências da Computação. Esses fundamentos são, essencialmente, a Decomposição, o Reconhecimento de padrões, a Abstração e o Algoritmo.
Existem várias maneiras plugadas e desplugadas de desenvolvê-lo criando um ambiente propício para a resolução de problemas. Esse é o produto final que desenvolvi em Unity – um ambiente de desenvolvimento de games que se baseia em uma linguagem de programação denominada C# -, utilizando tais fundamentos. Trata-se de um projeto muito simples (a intenção, aqui, é a aplicação do PC e da codificação e não da funcionalidade e/ou utilização do produto final), sendo, desse modo, apenas, uma sugestão dentre inúmeras outras possíveis.
Cada ambiente de desenvolvimento e cada linguagem de programação têm suas peculiaridades. Porém, quando você os utiliza, de modo geral, está decompondo, reconhecendo padrões, abstraindo e criando algoritmos.
Nesse caso particular desenvolvido no Unity, o problema foi colocado em uma missão que faz parte do Curso Junior Programmer: Create with Code 1. A missão era a seguinte: um cubo foi inserido no ambiente Unity girando em uma determinada, rotação – dependente dos eixos x, y, z -, posição, escala e cor – tudo fixo/constante. A tarefa era variar todas essas propriedades através de código. Ou seja, o cubo teria que variar essas propriedades enquanto o programa roda. Para iniciantes, é um desafio bem interessante, tanto com relação ao PC, quanto às habilidades de código que serão desenvolvidas.
Temos o nosso problema e a resolução passa pelo código. Nesse caso, sim, temos que aprender a codificar, minimamente, em C# para chegarmos à solução, pois trata-se de um caso que se encaixa no que chamamos de “plugado”. Como dito anteriormente, esse é, apenas, um tipo de aplicação do PC e que envolve codificação – uma habilidade cada vez mais solicitada no mundo que vivemos.
Não vou focar nas linhas de código, pois não faz parte do escopo desse artigo, mas, sim, nos fundamentos do PC para resolver esse problema. Através de código, inicialmente, vamos decompor a nossa questão, tratando, separadamente, cada propriedade – posição, rotação, escala e cor. Temos, portanto, o pilar Decomposição “em ação”. Em uma determinada propriedade, alteraremos, constantemente e randomicamente, seus valores para que se tornem imprevisíveis. Separar o problema em partes, torna muito mais fácil a solução e o seu gerenciamento.
Depois, ao reconhecer padrões que podem ser aplicados às outras propriedades, faremos o mesmo com as demais. Ou seja, estamos utilizando os princípios do Reconhecimento de padrões e percebendo que há “um modelo” que pode ser aplicado em outros contextos (Abstração). A Abstração pode ser entendida como “utilizar só o que interessa e esquecer os detalhes”, ou seja, descobrir um tipo de “regra geral” ou “modelo” que pode ser replicado em outras situações. Outra maneira de entender a Abstração é “investigar a regra geral que produziu determinado padrão aplicando-a em novas situações”.
Por fim, cria-se o código – Algoritmo – para que tudo se torne realidade e as modificações ganhem vida. Nesse projeto, além das habilidades do PC, desenvolvem-se habilidades de codificação, pois não há como resolver esse problema sem criar funções e alterar as propriedades envolvidas.
De modo geral e bem simples, em código, funções “fazem coisas” e propriedades são características inerentes ao objeto em foco. Por exemplo, imagine um cachorro: ele late, abana o rabo, pula, anda etc. Em uma analogia com códigos de determinadas linguagens de programação, o cachorro seria um objeto que teria essas “funções”. Se eu quiser utilizá-las, eu posso, por exemplo, escrever algo do tipo cachorro.pula(4). Isso poderia significar “cachorro pule 4 vezes”. O ponto final entre as duas palavras é um tipo de acesso para que a função possa ser executada e faz parte do que se chama de sintaxe – “regras de escrita”, de um modo bem simplificado.
Cachorros têm cor de pelo, tipo de focinho, tipo de orelha etc. Essas seriam as suas “propriedades”. Se eu quiser alterá-las, eu posso, por exemplo, escrever algo do tipo cachorro.cor_do_pelo = “azul”. Traduzindo: atribua ao pelo do cachorro a cor azul.
Esses são, apenas, exemplos simplórios e, claro, dependentes do tipo de linguagem que se utiliza, mas, julgo que sejam pertinentes para se começar a entender, mesmo que de modo bem inicial, como um código funciona para “fazer as coisas acontecerem”.
Enfim, nesse projeto, se aprendem várias habilidades importantes praticando o PC e a codificação. Fica mais essa sugestão para ser desenvolvida nas escolas e em quaisquer espaços de aprendizagem.
Prof. Carlos Sanches