FILOSOFIA LOGO E APRENDIZAGEM DE LÓGICA DE PROGRAMAÇÃO EM CURSO SUPERIOR DE INFORMÁTICA Adriana da Silva Nogueira 1 Luiz Alexandre da Silva Rosado 2 Programa de Pós-Graduação em Educação (PPGE / UNESA Rio de Janeiro) Eixo 9. Pesquisa, Artes, Mídias e Educação. Categoria: Pôster. Resumo A aprendizagem de lógica de programação é um ponto chave em cursos ligados à ciência da computação no Ensino Superior, porém seu aprendizado não é simples. O objetivo das disciplinas dedicadas ao tema é desenvolver conhecimento sobre os elementos básicos para a elaboração de programas de computador, o que depende das estruturas lógicas de pensamento. Esta pesquisa visa verificar se a aprendizagem realizada utilizando a Filosofia LOGO fará com que os alunos desenvolvam as estruturas lógicas de pensamento e sejam capazes de construir os conhecimentos fundamentais da área da lógica de programação. Propomos, assim, uma mudança na metodologia tradicional de ensino de programação para alunos dos primeiros períodos, utilizando a linguagem LOGO, que será apresentada como linguagem de modelagem para o ensino de lógica de programação. Os alunos terão autonomia para gerenciar o processo de aprendizagem, desenvolvendo atividades cujas propostas serão apresentadas por eles e elaboradas em diálogo com colegas e professores. A pesquisa encontra-se em fase de desenvolvimento e, portanto ainda serão apresentados resultados parciais. Acredita-se que ao final da mesma, os alunos que participaram do processo tenham desenvolvido os conceitos trabalhados de maneira satisfatória e sejam capazes de aplica-los na solução de problemas computacionais. Palavras-chave: Aprendizagem, Lógica de Programação, Filosofia LOGO. 1. INTRODUÇÃO Nos cursos superiores de Informática 3, a aprendizagem de lógica de programação é um dos pontos-chave, sendo apresentada como uma das disciplinas ministradas entre o primeiro e o segundo períodos do curso. A disciplina exige alto grau de abstração e capacidade interpretativa, gerando dificuldade de aprendizado, embora represente a base para inúmeras outras disciplinas que compõem os cursos 1 Mestranda em Educação pelo Programa de Pós-Graduação em Educação da Universidade Estácio de Sá no Rio de Janeiro. 2 Doutor em Educação. Professor Adjunto do Programa de Pós-Graduação em Educação da Universidade Estácio de Sá. 3 Segundo o Ministério da Educação - MEC a área de Ciências Exatas e da Terra, tem como uma de suas subáreas a Informática e, dentro dela, diversas nomenclaturas para os cursos superiores, entre elas: Ciências da Computação, Engenharia da Computação e Sistemas de Informação.
da área. O domínio dos conceitos abordados é necessário para que os alunos desenvolvam programas de computador. Programas de computador são um dos diversos tipos de algoritmos existentes. São textos com instruções ordenadas em linguagem que será decodificada por um programa específico (GUIMARÃES; LAGES, 1994) um compilador, interpretador, tradutor ou ambos para uma linguagem inteligível ao computador. A construção de algoritmos depende das estruturas de raciocínio lógico, que devem ser desenvolvidas ao longo da educação básica, embora nem sempre isso ocorra. Um dos maiores problemas na construção de algoritmos é fazer com que os alunos combinem e utilizem apropriadamente os conceitos básicos de programação (CASPERSEN; KÖLLING, 2009). Gomes (2008) aponta uma série de fatores na abordagem tradicional de ensino que podem interferir no processo de aprendizagem de programação, entre eles: a) método de ensino: o ensino não pode ser personalizado devido às restrições temporais, além disso, conceitos dinâmicos são apresentados de forma estática e há uma preocupação maior em ensinar a linguagem e sua sintaxe do que trabalhar a resolução de problemas; b) método de estudo: a prática não é suficiente e os alunos não estudam o necessário para aprenderem a programar; c) habilidades e atitudes dos alunos: para programar é necessário resolver problemas e alguns alunos não apresentam as habilidades necessárias para a sua resolução, em função de déficits de conhecimentos lógicos e matemáticos, falta de conhecimento das estruturas sintáticas e gramaticais das linguagens, o que acarreta dificuldades em detectar erros sintáticos; d) natureza da programação: para programar é necessário alto nível de abstração e, durante a construção do programa, o programador tem que se preocupar tanto com a sintaxe quanto com a construção do algoritmo; e) aspectos psicológicos: falta de motivação; aprendizado num período de transição em sua vida, onde o aluno encontra-se num momento de instabilidade e, ainda, no início do curso. Percebe-se então, a necessidade de uma abordagem específica no que se refere ao ensino de linguagens de programação, devido não só à dificuldade de aprendizado, mas também pelas suas características. Ao aprender linguagens de programação, é frequente que os alunos trabalhem de maneira solitária, embora seja interessante um trabalho colaborativo no qual eles possam discutir com seus pares, o que está sendo desenvolvido como forma de aperfeiçoar seu modo de trabalhar. 2. A FILOSOFIA LOGO E O APRENDIZADO DE LÓGICA DE PROGRAMAÇÃO
Papert (1988) apresenta em seus estudos o termo matofobia como o medo de aprender e sugere a utilização dos computadores para romper as barreiras entre as áreas humanas e científicas, plantando sementes que gerariam uma cultura epistemológica menos dissociada [...] (p.59). Assim, o autor afirma a importância da contextualização através do que ele chama de matelândia, que consiste em criar um ambiente propício para a aprendizagem de qualquer conteúdo que se deseja aprender; é tornar a área de conhecimento, a matemática, por exemplo, como vocabulário natural (p.59) e apresenta a linguagem LOGO como um dos caminhos para construção dessa matelândia. As atividades desenvolvidas com computador e LOGO levam à aprendizagem em decorrência de desafios/problemas que o aluno precisa resolver. O foco não está no ensino de conteúdos, pois o aluno aprende à medida que precisa, já o professor provoca o aprendiz para que busque o caminho para resolver suas questões, ou seja, o professor ensina os conteúdos que levarão o aluno ao caminho necessário à solução do problema proposto. Papert (1988) apresenta a filosofia LOGO de educação para enfrentamento das questões mencionadas. Santanchè e Teixeira (1999) afirmam que essa filosofia é baseada nos princípios construtivistas de Piaget, no qual o aluno/aprendiz é encarado como um construtor ativo de seu conhecimento e o computador e sua programação são meios com os quais se constrói o conhecimento, já que usa-se a ideia de que o aluno ensina o computador. Para que tal filosofia pudesse ser utilizada, foi desenvolvida uma linguagem que possui o mesmo nome. O aluno, ao usar a linguagem, pode ensinar novos comandos ao computador, escrevendo assim sobre a linguagem existente uma nova linguagem a partir da assimilação dos comandos preexistentes. Ao utilizar uma instrução desconhecida pela linguagem, rapidamente se obtém um feedback, atribuindo para si o não conhecimento de tal elemento. A resposta dada é: Não aprendi..., o que faz com que o aluno se perceba como aquele que ensina ao computador e, ainda, não considere o erro algo ruim, mas uma possibilidade de novos aprendizados. Papert (1988) afirma que o fato de o indivíduo ensinar o computador permite explorar a maneira como ela própria pensa, o que o torna um epistemólogo. Outra questão a ser ressaltada é o fato de que o professor pode acompanhar toda a estruturação da solução proposta pelo aluno, através de uma área específica denominada janela de comandos. Todos os elementos citados contribuem para que o aluno participe ativamente do processo e reflita sobre como ele próprio pensa. O LOGO não é uma linguagem tradicional de programação do ponto de vista técnico, foi desenvolvida com o objetivo de provocar o desenvolvimento das estruturas
de pensamento de seus usuários. Hoje, LOGO é um nome genérico de uma coleção de linguagens de programação criadas sob a mesma perspectiva. Através do uso da filosofia LOGO, é possível provocar os alunos a experimentarem e explorarem conceitos de lógica de programação e as primeiras estruturas de programação, buscando favorecer o aprendizado de forma que haja tomada consciência de seus processos de aprendizagem. Para Piaget, a tomada de consciência é uma construção que ocorre das relações do sujeito com o objeto, sendo a mesma vista como uma conceituação, isto é, uma passagem de uma assimilação prática (assimilação do objeto a um esquema) a uma assimilação por meio de conceitos (PIAGET, 1977, apud FERREIRA; LAUTERT, 2003, p. 549). É um processo que exige transformações contínuas e uma reestruturação das estruturas de pensamento. Ao longo do processo, espera-se que os alunos busquem a solução apropriada, pois ele a medida que adquire experiência é capaz de detectar erros e buscar estratégias para solucioná-los a fim de atingir seu objetivo. Nesse sentido, o aluno é capaz de, a cada passo, reorganizar sua estrutura de pensamento em relação ao problema/desafio proposto. Sendo assim, teremos a filosofia LOGO como uma alternativa para o ensino de lógica de programação, fugindo da abordagem tradicional de ensino (GOMES, 2008), na qual o foco está no ensino dos conteúdos e na elaboração e aplicação de exercícios já com respostas previstas, sem flexibilidade na solução e/ou proposta de problemas. Dessa forma, ela permitirá um processo de ensino mais dinâmico e estimulante. Assim, acreditamos se tratar de uma contribuição para os docentes do ensino superior, especialmente aqueles envolvidos em cursos de graduação em Informática, de forma que estes possam compreender que, mais que ensinar o conteúdo e a técnica, é necessário articulá-los de forma que o aluno possa construir bases sólidas de conhecimento através do desenvolvimento de estruturas lógicas de pensamento e ter autonomia sobre tal processo. 3. OBJETIVOS Através da inserção da filosofia LOGO, investigaremos o desenvolvimento de estruturas lógicas de pensamento em uma disciplina de lógica de programação que está sendo ministrada para o primeiro período em curso superior de informática de uma universidade privada da zona oeste do Rio de Janeiro.
Identificamos inicialmente quais conceitos de lógica de programação os alunos já conhecem e sabem aplicar quando iniciam o curso. Durante a pesquisa analisaremos como se dá o desenvolvimento de estruturas lógicas de pensamento na interação com a linguagem LOGO. Com isso, esperamos estabelecer diferenças entre os processos de solução de problemas envolvendo lógica de programação em um curso baseado na filosofia LOGO e outro baseado na abordagem tradicional de ensino de programação. 4. METODOLOGIA Para o desenvolvimento desta pesquisa estamos realizando o estudo em uma instituição de ensino superior da Zona Oeste do Rio de Janeiro, com aproximadamente 60 alunos que cursam o primeiro período dos cursos de Bacharelado em Sistemas de Informação e Licenciatura em Computação. Trata-se da primeira disciplina que apresenta conceitos de programação de computadores e esta está sendo ministrada por um dos pesquisadores em questão. Durante os encontros, temos acompanhado o desenvolvimento dos sujeitos e sua evolução a fim de verificarmos como se deu o processo e como tal proposta contribuiu para a aprendizagem de lógica de programação. Além do grupo mencionado, há uma segunda turma que está sendo ministrada por outro professor que mantém a metodologia tradicional de ensino. Esta turma é submetida aos mesmos testes diagnósticos que serão descritos a seguir, servindo de parâmetro para comparação de resultados. A turma pesquisada será submetida à metodologia alternativa proposta, que trata da utilização de linguagens de programação criadas especialmente para a aprendizagem e o desenvolvimento de estruturas lógicas de pensamento, sendo, nesse caso, a Super LOGO. Elas serão apresentadas como linguagens de modelagem para o ensino de lógica de programação. Inicialmente foi aplicado um questionário para que os alunos pudessem responder acerca de seu conhecimento e experiência com programação. Em seguida, foi realizado um teste diagnóstico para verificar a capacidade de estruturação lógica de um programa simples e a verificação de quais estruturas lógicas de pensamento os alunos já trazem e quais conseguem aplicar na solução do problema proposto. Posteriormente os alunos serão submetidos a dois outros testes, um no meio do período e outro ao fim, com questões equivalentes ao do primeiro teste, com o objetivo de avaliar o progresso do aluno na resolução dos problemas propostos a partir da aplicação da da metodologia com o uso da linguagem LOGO.
Simultaneamente ao ensino dos conceitos de programação, será apresentada a linguagem LOGO, com objetivos específicos, inicialmente ambientação e, em seguida serão propostos problemas que exijam o uso das estruturas lógicas trabalhadas em aula, avaliando como cada sujeito usou tais estruturas para desenhar a solução. Os principais conceitos de lógica de programação a serem trabalhados são os princípios básicos sequência lógica; conceitos de variáveis e constantes; operadores - relacionais lógicos e aritméticos; estruturas de seleção e repetição; e funções/procedimentos. Serão propostos desafios e atividades que necessitem dos conceitos mencionados e que possibilitarão verificar se este consegue utilizá-los de maneira consistente. Serão analisados: i) como foi estruturada a solução de modo a classificá-la segundo o grau de generalidade, com menor ou maior esforço computacional; ii) se o aluno desenvolveu soluções sozinho ou se solicitou ajuda e de que forma foi feita essa solicitação; e iii) a forma como o aluno é capaz de apresentar a solução, se apenas com interesse no valor de certo ou errado ou se discute a sua qualidade. Será utilizado o método clínico de Piaget, adaptado à coletividade da sala de aula, para verificar como a utilização da filosofia LOGO influenciará no aprendizado de lógica de programação e como ocorre o desenvolvimento do conhecimento lógicomatemático e de lógica de programação em si. Almeida Neto et al. (2006) afirmam que o método clínico consiste em entrevistas individuais e acompanhamento dos estudantes durante a resolução de um problema elaborado segundo os critérios de resolução que se deseja. Piaget aplicou o método com elementos concretos, sendo que no caso de elementos abstratos, como uma linguagem de programação, será necessário realizar adaptações no mesmo. Collares (2001) afirma que o desafio que este método impõe, em princípio, ao fazer pedagógico é o de se aprender a observar e a ouvir a criança para construir, a partir do que se vê e ouve, hipóteses de trabalho que deem consistência ao planejamento e atendam às necessidades dos alunos (COLLARES, 2001, p. 74). Em sua adaptação ao contexto escolar, ele elaborou um modelo dinâmico não estereotipado, que tivesse autonomia e particularidades que permitissem que fosse aplicado coletivamente; na qual a intervenção docente assume características diferenciadas, incluindo o fato de que a observação obedece aos períodos impostos pelo tempo de aula e nem todas as soluções serão desenvolvidas num tempo específico. Pode haver interrupções ou intervalos consideráveis. 5. RESULTADOS INICIAIS
No presente momento, a pesquisa está em estruturação e aplicação. No contato inicial, que foi o primeiro encontro com a turma, a maioria dos alunos mencionou ter algum conhecimento de programação ou lógica de programação, o que não ficou evidente no preenchimento do questionário, no qual verificamos que menos da metade da turma havia tido algum contato com programação. Após o primeiro teste verificamos que uma questão de simples resolução, como ensinar alguém a calcular a média, foi bem entendida pelos alunos, porém mais da metade dos respondentes não sabiam como realizar o passo a passo, ou seja, como descrever a sequência lógica. Uma segunda questão foi sobre como se fazer um saque em um caixa eletrônico, sendo que essa foi de difícil compreensão, pois alguns dos alunos não entenderam o que estava sendo solicitado e não responderam a questão; já outros apresentaram uma solução incompleta e poucos foram capazes de apresentar uma solução coerente. Durante as aulas, foi realizado um exercício coletivo, onde foi proposto a turma algo mais simples, através da seguinte frase: "Suponha que você tem uma parede e, de frente para ela, um robô, ao lado dele temos uma lata de tinta e um pincel. Como ensinar o robô a pintar a parede?" Foi abordada inicialmente a necessidade de estabelecer uma lista de ações possíveis para ensinar o robô a pintar a parede. Os alunos reconheceram que, dentro de um contexto que parecia simples, eles teriam várias formas de solucionar o problema. Alguns alunos se posicionaram como observadores e não cooperaram com a atividade. Neste momento, não foi possível avaliar se eles não compreenderam a proposta ou se não sabiam como responder. A maioria da turma expôs seu ponto de vista e sua possibilidade de solução. Houve momentos de troca intensa e debate entre eles do que estava faltando ou da possibilidade de conclusão. Pelo curto tempo não conseguimos concluir a atividade, mas ao final eles começaram a criar novas soluções trazendo elementos que não foram inicialmente comentados. Ao final foram apresentadas novas possibilidades e coisas que deveriam ser pensadas quando se trata de programar o robô para realizar tarefas que nós realizaríamos sem refletir sobre o que estaríamos desenvolvendo. Foi perceptível a motivação da turma, sendo que na aula seguinte, ao apresentar uma metodologia simples para construção de algoritmos, novas questões foram mais rapidamente resolvidas. Na aula seguinte os alunos conheceram o Português Estruturado, o Portugol, e elementos simples de programação como: Entrada e Saída de Dados, Tipos de Dados, Variáveis e Constantes. Após esse momento, eles resolveram alguns
exercícios, onde tiveram a possibilidade de estruturar algoritmos simples em Portugol. Nesse primeiro momento, tivemos uma avanço considerável, pois os alunos estavam mais familiarizados com o processo de construção de programas simples. Um dos pontos favoráveis a troca de informações pelo grupo foi a criação de um grupo no Facebook com a adesão da maioria da turma, no qual diversas informações são postadas diariamente, indo desde o compartilhamento de material (apostilas, livros em PDF) até a solução de programas compostos em aula. Os próprios alunos compartilharam entre si a ideia de usar o programa VisuAlg para compilar e executar os programas em pseudocódigo. Não é possível, neste momento, precisar quantos deles o utilizam, mas a iniciativa partiu deles, assim como a criação do grupo. 6. CONCLUSÕES A motivação, participação do grupo e a interação entre eles foi fundamental para a realização desta pesquisa. De uma forma geral, eles interagem muito bem entre si em todas as atividades e estão dispostos a participar do que lhes é proposto. Embora esta pesquisa ainda esteja em seu momento inicial, não temos como avaliar se há diferenças significativas entre os alunos da turma pesquisada e da turma de controle. A introdução da Linguagem LOGO através do programa Super Logo será feita nos próximos encontros e esperamos que esta, aliada à filosofia LOGO, nos traga resultados positivos sobre o desenvolvimento das estruturas lógicas de pensamento e o desenvolvimento de programas computacionais, sejam eles simples ou complexos. REFERÊNCIAS COLLARES, D. Epistemologia Genética e Pesquisa Docente: estudo das ações no contexto escolar. 202 f. Tese de Doutorado. Faculdade de Educação. Universidade Federal do Rio Grande do Sul. Rio Grande do Sul. 2001. Disponível em: http://www.lume.ufrgs.br/handle/10183/1910 CASPERSEN, M. E.; KÖLLING, M. (2009) STREAM: A First Programming. Journal ACM Transactions on Computing Education (TOCE), v.9, n.1, p.4:1-4:29. FERREIRA. P. A. e Lautert, S. L. A tomada de consciência analisada a partir do conceito de divisão: Um estudo de caso. Psicologia: Reflexão e Crítica, 16, p. 547-554, 2003.
GUIMARÃES, A., LAGES, N. Algoritmos e Estruturas de Dados. 28ª tiragem. Rio de Janeiro: LTC, 1994. SANTANCHÈ, A.; TEIXEIRA, C. Integrando instrucionismo e construcionismo em aplicações educacionais através do Casa Mágica. In: V Workshop de Informática na Escola XIX Congresso da SBC. 1999. PAPERT, S. Logo: Computadores e Educação. 3ª ed. São Paulo: Editora Brasiliense, 1988.