Sobre o livro e o método

Introdução

Programação de computadores ou somente programação é costuma ser um conteúdo ou disciplina muito difícil, com alta taxa de reprovações, tem diversos artigos que apresentam isso, mas não há porque apresentarmos aqui. Contudo, como professor e aluno, ocasionalmente, vejo muitos alunos falharem no aprendizado de programação, metade da turma costuma não entender nada, uns 5 em 30 costumam ter facilidade, ou seja, 25 em 30 alunos costumam ter alguma ou muita dificuldade.

"Arthur, Mas por que isso acontece?"

Programação envolve conhecimentos novos, que a maioria de nós nunca vimos, além disso precisa de uma lógica (raciocinio lógico) muito bem desenvolvida, algo que nossas escolas não conseguem nos ajudar a desenvolver. Por fim, programação não tem decoreba ou cópia, não tem uma receita de bolo como muitas disciplinas, sempre é necessário resolver um problema com conhecimentos prévios e, então, passar para o código.

Não entendeu ainda? Explico com exemplos. Em história podemos aprender decorando como foi a história, assim na prova podemos apenas responder o que decoramos e pronto. Claro que se você entender o contexto, as ideias por trás da época e situação, saberá muito mais, mas basta decorar para aprender um mínimo e conseguir o mínimo 6 nas provas. Em matemática você tem mais dificuldade, mas geralmente fazendo diversos exercícios, você chega ao ponto que o exercício se torna uma repetição do que você já fez, basta trocar valores, contudo ainda assim matemática é uma das disciplinas que nossos alunos tem mais dificuldade. A programação se aproxima disso, porém é ainda mais complexa, pois envolve conceitos novos e a resolução do problema necessita de mais conhecimentos. Pense na programação como uma questão de ENEM onde há diversos temas interligados e você precisa usar as ferramentas que tem para resolvê-lo, não é a toa que a maioria dos alunos não se da bem com o ENEM.

Então como posso ajudar você a aprender programação? Qual é esse método didático? "Arraste para cima e se inscreva na semana da programação que te explico", brincadeira. Vou explicar o que me motivou a montar esse livro e depois eu explicarei os pilares da metodologia.

Desde que comecei a ensinar programação em 2019, tive dificuldades para ensinar alguns alunos, tentei algumas formas como usar Scratch, Portugol (aquele bonito do portugol studio) e até explicações com fluxogramas. Todas essas formas são positivas, porém faltava serem sistemáticas, seguirem uma ideia clara e sistemática. Em 2021, ajudei uma aluna de um curso de uma universidade pública, ela era uma aluna bastante motivada, tentava e queria entender, mas tinha algumas dúvidas e eu não queria dar nenhuma resposta pronta para ela, então sempre a fiz pensar sobre suas ações e ela evoluiu bem. Contudo, imagino que a maior parte de sua turma, com certeza, estava com as mesmas dúvidas, também estava com dificuldade para aprender. Por conta disso, entra a minha ideia de ensino de programação, não é nada novo ou inovador, mas é algo que ninguém costuma fazer e muito menos fazer de forma sistemática.

Público-alvo

Se você reparar bem, este livro é para qualquer aluno de programação, porém ele é especialmente dirigido aos alunos que tem alguma dificuldade ou, em outras palavras, ele é menos recomendado aos alunos que tem facilidade com programação, esses poderão considerar o livro repetitivo ou cansativo, pois para eles qualquer livro serve. Então, se você não faz parte dessa nata que tem facilidade, seja bem-vindo e desfrute das metodologias utilizadas pelo livro.

Pilares do método

Os pilares do método são simples e estão no meio de qualquer ensino, mas lembro que a ideia é fazer isso de forma sistemática. Abaixo apresento uma frase sobre o que é ser um programador e desenvolver códigos.

Desenvolver códigos envolve resolver problemas, assim você primeiro entende o problema, depois divide o problema em pequenas partes e tenta resolver cada parte passo a passo, se necessário pesquinsado no Google ou fórum de desenvolvedores.

Assim, os pilares são ilustrados abaixo e devem ser apresentados após uma breve explicação ao conteúdo abordado:

1. Exemplos

Quando mais exemplos temos, mais bagagem teremos para novos problemas, pois boa parte dos problemas são resolvidos com soluções ou parte de soluções de outros problemas, portanto quanto mais diversos forem os exemplos, mais fácil será, afinal os exercícios ou momentos práticos deixam de ser totalmente novos e passam a ser apenas parcialmente novos. Por isso, ver muitos exemplos é excelente, pois te ajuda ao conhecer um novo conteúdo. Este pilar será conhecido como Veja exemplos.

2. Aprender a partir de erros

Quando você erra, você aprende como não fazer, ao errar algumas vezes você aprende qual a forma correta de se fazer. Além disso, o erro é mais forte que o acerto para forçar a gravação de uma informação, não tenho comprovações científicas para essa afirmação, contudo pense e me diga, quantas vezes você errou e nunca mais errou aquilo, porque sempre se lembrava do erro e então fazia o correto? Ainda há outro motivo para essa abordagem, todos nós vamos nos deparar com erros, se eu lhe mostro alguns erros no momento do aprendizado, você estará preparado para lidar com tais erros. Seria como se eu te treinasse em um labirinto antes de te soltar nesse labirinto, você já sabe quais as soluções para os principais erros, então quando se deparar com um deles, saberá o que fazer. Este pilar será conhecido como Aprenda com erros!.

3. Perguntas para reflexão

Eu posso te passar um pedaço de código e dizer: "este código verifica se a idade é maior que 18 e, se for, imprime uma mensagem dizendo que o usuário é maior de idade". Porém, este tipo de abordagem não funciona com todos, principalmente na programação. O ideal é eu lhe passar um código e perguntar: "me diga o que esse código faz". Então você entenderá com os seus próprios olhos e mente, será um conceito mais bem fixado que apenas decorar que o código x faz algo. Agora imagine que eu peça para você alterar, a cada momento, uma parte do código e me dizer o que acontece, você irá entender muito melhor o que as suas ações e alterações estão causando no código. Este pilar será conhecido como Reflita!.

4. Passo a passo

Programar é criar algoritmos em linguagens de programação, algoritmos são sequencias de passos finitos para fazer alguma tarefa. Muita gente tem dificuldade em detalhar o passo a passo para realizar alguma tarefa porque não tem o costume de fazer isso, então programar se torna mais difícil, pois as pessoas têm dificuldade na criação de passo a passo e para organizar ideias em suas "cabeças". Portanto, ao ensinar o passo a passo na montagem de código, ensinamos o aluno a pensar como programador. Este pilar será conhecido como Passo a passo.

5. Dividir em subproblemas

Na computação existe um conceito chamado dividir para conquistar, este conceito envolve a divisão de problemas em problemas menores para facilitar a solução. Pense comigo: você precisa montar uma comoda, como você irá realizar essa tarefa? Como dividiria o problema em problemas menores? Te dou uma resposta possível. Você poderia separar nos seguintes sub-problema:

  1. Pegar o manual;

  2. Juntar os pregos e parafusos e os manter em um local a vista;

  3. Juntar maçanetas e dobradiças e as manter em um local a vista;

  4. Juntar peças semalhantes, como portas de gaveta com porta de gaveta.

  5. Montar a estrutura das gavetas;

  6. Colocar as maçanetas nas gavetas

  7. Montar a estrutura da comoda;

  8. Colocar as dobradiças e outros itens na estrutura da comoda;

  9. Colocar as gavetas na comoda;

Perceba que é uma espécie de algoritmo, porém cada parte é uma tarefa diferente e sem muitos detalhes, logo uma subtarefa ou subproblema para ser resolvido. Pensar em dividir em subproblemas é essencial para qualquer pessoa, pois facilita nossa resolução de problemas na vida.

Não confuda dividir em subproblemas com passo a passo, o passo a passo é a montagem do algoritmo, com detalhes, já dividir para conquistar é separar em partes sem muitos detalhes para facilitar o entendimento e desenvolvimento da solução.

Este pilar será conhecido como Dividir para conquistar.

6. Leitura de código

É fundamental que o programador saiba ler os códigos, saiba o que cada comando faz para realizar testes de mesa com papel ou mentalmente, assim o aluno não se torna um progamador que trabalha na tentativa e erro, ele lê o código e avalia como funciona e o que deve ser corrigido. Este pilar será conhecido como Leia o código!.

7. Exercícios

Quando mais exercícios forem realizados mais fácil será fixar um conteúdo, não é a toa que falamos que se aprende matemática resolvendo exercícios, com a computação a prática, também, leva a perfeição.

Limitações do ensino de programação

Pedagogos e outros profissionais costumam dizer que o melhor é integrarmos conteúdos, ou seja, incluir um conteúdo em outros ou mesmo levar o conteúdo para a realidade do aluno, porém nem sempre isso é possível, muitos exercícios são cansativos e parecem inúteis, contudo é uma realidade, não é possível ter todos exercícios legais e bacanas no início da programação.