Informações Principais
     Resumo
     Abstract
     Introdução
     Conclusão
     Download
  
  
  
 
Introdução
 
 
Acadêmico(a): Luiz Angelo Heinzen
Título: Módulo de Raciocínio Baseado em Casos em uma Ferramenta de Apoio ao Ensino de Lógica de Programação
 
Introdução:
Um dos primeiros obstáculos que um estudante do curso de Ciências de Computação enfrenta é a matéria de Lógica de Programação. Para muitos esta disciplina se torna o maior obstáculo a ser superado, sendo que em alguns casos este obstáculo se torna insuperável, o que acaba gerando a desistência do estudante. Em cursos da área de Informática, este conteúdo costuma ser o filtro ou, melhor dizendo, o fator diferencial, que vai definir quem ‘serve’ e quem não ‘serve’ para a computação. Para comprovar este fato basta analisar o nível de reprovação e desistência desta disciplina nestes cursos. Esta disciplina é de fundamental importância para a formação de um bom profissional na área de informática. É imprescindível que, desde os primeiros passos, o aluno aprenda a usar metodologias apropriadas e aprenda a desenvolver programas de maneira eficiente e correta. Maus hábitos adquiridos nesta fase podem se revelar difíceis de corrigir. Segundo Mattos (2000), a aprendizagem é um processo no qual experiências fomentam modificação do comportamento e aquisição de hábitos. O autor cita Piaget (1964), escrevendo que Piaget ao estudar a gênese do desenvolvimento da inteligência, demonstrou a importância da maturação do sistema nervoso, da ação sobre os objetos e dos fatores sociais como variáveis influenciantes na compreensão do processo intelectual e demonstrou como os processos de assimilação e acomodação de novos conhecimentos se incorporam à estrutura do pensamento. Os processos cognitivos dizem respeito aos processos psicológicos envolvidos no conhecer, compreender, perceber, aprender, nas formas de pensar e nos tipos de pensamento. Mattos (2000) afirma que, normalmente, os processos educacionais se baseiam, quase exclusivamente, no desenvolvimento da inteligência lingüística e da lógico-matemática, deixando de lado as outras formas de acesso ao conhecimento. Mattos citando Papert escreve \'... que muitas vezes a diferença evolutiva pode ser atribuída à escassez ou à ausência de materiais, a partir dos quais podem ser construídas estruturas intelectuais aparentemente \'mais avançadas\'. A hipótese de Papert é que o computador, quando utilizado de maneira adequada, pode \'concretizar\' (e personalizar) o formal\'. Analisando a maioria dos livros-texto adotados na disciplina de Lógica de Programação ou Algoritmos, é fácil validar a idéia de que algumas pessoas simplesmente não conseguem aprender programação, visto que a maneira como o conteúdo é apresentado é de difícil compreensão e assimilação para a maioria dos seres humanos, habituados a pensar de maneira menos formal que aquela exigida pela área de Informática. Ou seja, a falta do hábito de pensar de uma maneira formal e estruturada, indispensável para o bom desenvolvimento profissional na área, acaba sendo a responsável pela dificuldade de assimilação do conteúdo apresentado. O professor que leciona esta disciplina tem o desafio de fazer com que os alunos modifiquem sua maneira habitual de pensar, passando a desenvolver seus pensamentos de maneira mais estruturada e formal, maneira esta mais próxima da linguagem computacional. A dificuldade consiste em eliminar ou substituir antigas estruturas de pensamento a que se está habituado por novas estruturas mais formais e mais racionais. E ainda mais importante, o aluno deverá ser capaz de identificar problemas similares aos já trabalhados para aplicar as soluções, utilizadas anteriormente com sucesso, aos problemas que aparecerão. Mattos (2000) afirma ainda que é imprescindível uma constante pesquisa na área educacional para promover métodos de ensino mais atuais e atuantes. O computador surge como uma ferramenta de transmissão de conhecimentos a qual não pode deixar de ser considerada. E o computador é ao mesmo tempo uma ferramenta de trabalho e uma ferramenta de aprendizagem auxiliando a capacidade do indivíduo de utilizá-lo em todo o seu potencial para resolver problemas. Muitos softwares foram desenvolvidos com o intuito de ajudar os alunos a superarem estas dificuldades iniciais, mas muitos deles, auxiliam apenas no desenho dos algoritmos, o que é insuficiente, já que os alunos tem a tarefa, hercúlea para alguns, de aprender a (re)estruturar a maneira de pensar. O uso do CONSTRUTOR, um software desenvolvido pelo SENAC para simulação de algoritmos, que se constitui numa ferramenta que auxilia o aluno no desenho (gráfico) e (visualização) da resolução de problemas produz resultados, conforme pode ser constatado em conversa com o professor Luiz Heinzen, que leciona esta disciplina. Este professor vem utilizando este software na disciplina de Introdução a Programação do curso de Bacharelado em Ciências da Computação desde 1999. Mesmo trabalhando com turmas menores, com a maioria dos alunos sendo repetentes, o índice de aprovação nestas turmas é bem superior ao das turmas normais, como pode ser visto na tabela 01. TABELA 01 – Índice de aprovações da disciplina Lógica de Programação Semestre Turma Inscritos Aprovados - % Reprovados - % Desistentes - % 2001/1 Matutino Calouros 42 18- 42,85% 14- 33,33% 10 - 23,80% 2001/1 Noturno Veteranos 15 9 - 60% 4 - 37,5% 2 - 13,33% 2000/1 Noturno Veteranos 30 16 - 53,33% 10 - 33,33% 4 - 13,33% 2000/1Matutino Calouros 60 26 - 43,33% 12 - 46,15% 22 - 36,67% 1999/2 Matutino Calouros 61 26 - 42,62% 13 -50% 22 - 36,06% 1999/2 Noturno Veteranos 30 15 - 50% 4 - 26,67% 11 - 36.67% Mas, conforme pode ser visto na tabela, ainda existe espaço para melhorias, tendo em vista o nível de reprovações/desistências, ainda mais quando é levado em conta o fato de a maioria dos alunos para os quais o Professor Luiz Heinzen leciona são repetentes. Para tentar amenizar, ou sanar completamente, as dificuldades que aparecem nesta primeira etapa do aprendizado, vem sendo desenvolvido um projeto na FURB – Universidade Regional de Blumenau – que auxilie os alunos no aprendizado de lógica de programação. Esta proposta, desenvolvida em Mattos (1999), sugere uma outra abordagem: fazer com o que o aluno aprenda a pensar (estruturada e formalmente) através de um processo de indução. Este processo de indução consiste em, partindo do enunciado de um problema, fazer ao aluno perguntas chaves referentes ao enunciado em questão. O objetivo é que, ao tentar responder estas perguntas, o aluno consiga visualizar uma solução para então poder produzir a solução que o problema pede. Para validar os objetivos desta proposta foi criado um protótipo baseado em Sistemas Especialistas (SE). A ferramenta tinha por objetivo introduzir o conceito de análise de requisitos já nas primeiras fases do ensino de computação, de tal forma que o aluno acostume-se a realizar uma análise mais detalhada dos problemas que, apesar de simples, já requerem algum grau de formalização. Este SE buscava desempenhar o papel do professor no processo de indução. Esta proposta revelou-se válida quando da apresentação da mesma a alunos de algoritmos que apresentavam dificuldades nesta disciplina. Mas esta ferramenta não contemplava um dos maiores problemas apresentados pelos alunos que freqüentam a disciplina de Lógica de Programação: a abstração, ou generalização. Há uma grande diferença entre conseguir resolver um problema específico apresentando pelo professor, sendo induzindo pelo mesmo à resposta, e saber identificar os motivos que levaram àquela resolução. Saber identificar os motivos que levaram a resolução é essencial, se constituindo no objetivo principal da referida disciplina, pois só assim o aluno poderá resolver problemas similares no futuro. Foi exatamente para contemplar esta fase do processo de aprendizado que o SE de Mattos (1999) foi complementado em Mattos (2000) com uma ferramenta, um protótipo desenvolvido em Java, que utiliza a técnica de Raciocínio Baseado em Casos. Este protótipo primeiramente lê um enunciado escolhido pelo usuário e em seguida identifica, através de um analisador de texto, expressões de texto que indiquem possíveis construções lógicas e de estrutura de dados. Com base nas expressões encontradas no enunciado, o RBC gera o perfil do caso. Para fins de exemplo, considerar o enunciado: “Ler palavras e imprimir até que a palavra FIM seja fornecida. No final apresentar quantas palavras foram lidas”. Neste enunciado considera-se que a expressão “até que” indica uma construção lógica - estrutura de repetição - e as expressões “ler”, “imprimir” e “no final apresentar” identificam estruturas de dados. A primeira, de entrada de dados e as outras duas, de saída de dados. O protótipo RBC de Mattos (2000) validou apenas uma das fases de um sistema RBC, que é a geração de perfil dos casos, não tendo sido implementada a ligação com o sistema em CLIPS, nem o armazenamento de casos. Não é uma ferramenta adequada para uso no dia a dia, necessitando de aperfeiçoamento em alguns aspectos, quais sejam: a) a precária interface com o usuário; b) o não armazenamento de casos; c) falta de integração com o SE desenvolvido em Mattos (1999).