AMBIENTE DIDÁTICO GRÁFICO PARA A COMPREENSÃO DE LÓGICA DE PROGRAMAÇÃO Rodrigo Ferreira da Silva rodrigoferreira2002@hotmail.com Klaus Schlünzen Junior klaus@prudente.unesp.br Universidade Estadual Paulista Unesp Faculdade de Ciências e Tecnologia FCT Brasil A dificuldade encontrada por alunos iniciantes na programação de computadores é o fator que impulsiona esta pesquisa. A realidade que verificamos é que os aprendizes não entendem como é o funcionamento de alocação de variáveis e do fluxo de execução dos comandos em uma linguagem de programação. Esta investigação visa o estudo, a implementação, a depuração e a validação de um ambiente didático para visualização destes fluxos. Os testes da ferramenta estão sendo realizados pelos alunos de Licenciatura em Matemática e Engenharia da Faculdade de Ciências e Tecnologia da Universidade Estadual Paulista-Unesp - Brasil, ajudando-os na aprendizagem de programação estruturada de computadores, auxiliando-os a visualizar graficamente a execução de um código fonte de uma determinada linguagem de programação. Finalmente, estamos também trabalhando em uma versão deste ambiente para Web. 1. Introdução Uma disciplina onde os alunos dos cursos de Licenciatura em Matemática e de Engenharia da Faculdade de Ciências e Tecnologia FCT/Unesp encontram dificuldades é aquela que os capacitam para programar computadores. Nesta disciplina é escolhida uma linguagem de programação, no caso da FCT/Unesp a opção é pela linguagem Pascal (O Brien, 1993; Wirt, 1985) e o aluno, durante um ano, deve aprender a programar computadores utilizando-a na implementação de uma série de algoritmos e no desenvolvimento de um projeto final de curso. A escolha por esta linguagem se deve evidentemente não pelos recursos de programação disponíveis, mas sim por ser uma linguagem muita bem estruturada e que não permite que o aluno adote procedimentos de programação não desejáveis. Pela sua própria concepção em um ambiente acadêmico, a linguagem Pascal tem servido como um significativo instrumento de aprendizagem de iniciantes em programação em diversas e renomadas Universidades Brasileiras e permite que o aluno possa mais tarde utilizar-se de ambientes de programação mais atuais, como por exemplo, Delphi (Cantù, 2000), cujo código é baseado na linguagem Pascal. Entretanto, mesmo com uma linguagem de programação bem estruturada, os alunos iniciantes apresentam dificuldades para entender o seu funcionamento considerando a alocação de variáveis e o fluxo de execução. Não é uma tarefa fácil definir passos sem ambigüidades para a implmentação de um algoritmo codificado em um programa escrito em uma linguagem de programação. Assim, mesmo com um esforço didático, os professores das VII Congresso Iberoamericano de Informática Educativa 68
disciplinas de programação encontram grandes dificuldades para que os alunos consigam visualizar a dinâmica de execução de um programa. Diante deste cenário, a proposta deste artigo é de apresentar a construção um ambiente didático que permite que o aluno possa codificar e visualizar graficamente a execução de programas em Pascal, podendo acompanhar o fluxo de dados decorrente da execução de cada linha de código. A idéia foi de proporcionar ao usuário o acompanhamento visual da execução do programa com a identificação passo a passo de todos as variáveis envolvidas e dos comandos sendo executados. Para o acompanhamento do fluxo de execução, foi utilizada a representação (do código) do programa na forma de português estruturado e identado, além do próprio código fonte, o que possibilita uma identidade visual melhor e de maior facilidade de análise. Esta ferramenta foi implementada utilizando o ambiente de programação Delphi 6.0 1 (Cantù, 2000) e sua escolha é justificada pela quantidade de componentes já disponíveis que alavancaram o trabalho de implementação, considerando ainda que Delphi é um ambiente de programação pautado na linguagem Pascal. O projeto inicialmente levou em conta alguns exemplos de programas-fonte em Pascal já implementados. Também foram considerados outros sistemas semelhantes já desenvolvidos como: BALSA (Brown, 1988) e TANGO (Stasko, 1990). Entretanto, nestes sistemas, de acordo com nossa avaliação, não existem interfaces gráficas que relacionem diretamente o código escrito pelo usuário e o fluxo gráfico de sua execução, dificultando ao aprendiz acompanhar passo a passo a execução de cada linha de comando. Em uma segunda etapa, implementamos uma espécie de pré-compilador para a linguagem Pascal para geração do esquema gráfico que favorece a visualização da execução de partes dos programas pré-selecionadas pelo usuário/aprendiz. Este recurso permitiu a identificação de erros de lógica de programação, o que contribui para a sua correção em uma interface de alto nível. Estamos atualmente na fase de depuração de todo o ambiente. Neste momento, contamos com o apoio dos alunos da disciplina Introdução à Ciência da Computação da FCT/Unesp que estão podendo testar a ferramenta e analisar os primeiros resultados. 1 As licenças de uso do Delphi 6.0 foram doadas ao Núcleo de Educação Corporativa NEC/FCT/Unesp pela Borland Inc., empresa produtora do software, como forma de incentivo aos trabalhos de pesquisa que este Núcleo desenvolve. VII Congresso Iberoamericano de Informática Educativa 69
Finalmente, trabalhamos em uma versão para a Web, destacando a relevância do oferecimento de ambientes didáticos, via Internet, e a crescente demanda por ferramentas de aprendizagem à distância. 2. O Ambiente Didático O Ambiente Didático tem suporte para compilação e execução de código em Pascal, além de permitir visualizar este código em execução e os símbolos definidos como variáveis, registros, entre outros. Sua principal função é possibilitar a visualização gráfica por meio de fluxograma, oportunizando ao aluno entender melhor a lógica de programação. O programa também possui alguns recursos semelhantes ao do editor de programas Delphi como por exemplo: destaque da sintaxe, completamento de código, visualização dos símbolos definidos em tempo de projeto, depuração passo a passo, tanto via editor, quanto via fluxograma após a compilação do código fonte, entre outros. Estas são algumas vantagens identificadas sobre outros sistemas já implementados. Usando o Ambiente Didático os alunos podem compreender melhor a lógica de programação, aprender a programar e elaborar programas simples, posibilitando o entendimento do seu funcionamento passo a passo, como pode ser visto nas telas das Figuras 1 e 2. Na tela da Figura 1 encontramos uma janela com o código fonte de um programa em linguagem Pascal. Nesta janela é possível editar o programa fonte e executá-lo, acompanhando sua execução por meio da janela gráfica do Ambiente Didático com o fluxograma, apresentada na Figura 2. Nesta figura o programa fonte é apresentado na forma de fluxograma. Pode-se observar no lado direito uma área reservada para a apresentação gráfica das variáveis, na qual o aprendiz poderá acompanhar todas as suas instanciações e alocações. VII Congresso Iberoamericano de Informática Educativa 70
Figura 1: Editor de Código Figura 2: Janela gráfica com fluxograma do programa fonte VII Congresso Iberoamericano de Informática Educativa 71
Na Figura 3 observa-se novamente a janela de edição de código mas com um outro exemplo. Neste caso, o programa possui procedimentos onde uma janela de informações aparece logo após a digitação de uma função com parâmetros, apresentando-os com seus respectivos tipos. Um exemplo de um programa em execução passo a passo no modo fluxograma é apresentado na Figura 4. Podemos verificar que um dos comandos está destacado em azul e o outro em vermelho, significando que a execução está parada neste comando (o de cor azul) a espera do usuário dar um comando para continuidade (no Delphi esta opção é conhecida como Step Over ou Trace Into). O comando em vermelho indica que se ele for executado, antes será feita uma pausa na execução do programas (conhecido como Breakpoint no ambiente Delphi). Todos estes recursos são comuns nos ambientes de depuração existentes hoje. Figura 3: Um exemplo de programa com procedimentos VII Congresso Iberoamericano de Informática Educativa 72
Figura 4: Exemplo de um programa compilado em execução O ambiente está em fase de testes com a sua utilização pelos alunos dos cursos de Licenciatura em Matemática e Engenharia Cartográfica da FCT/Unesp - Brasil. Além de toda essa funcionalidade apresentada pelo Ambiente Didático, estamos implementando uma outra funcionalidade, ou seja, a possibilidade de gerar o código fonte em Pascal através do fluxograma cronstruído pelo aprendiz/usuário. 3. Considerações Finais Construir um ambiente computacional didático para ajudar alunos na aprendizagem da programação estruturada de computadores, capaz de permitir visualizar graficamente a execução de um código fonte de uma determinada linguagem de programação, foi o objetivo principal desta pesquisa. Cabe destacar que este código é construído pelo aluno e pode abranger os algoritmos mais diversos possíveis dentro de programas que utilizem estruturas básicas de programação, variáveis estáticas estruturadas, sub-rotinas e definição de tipos. Para tanto, foi necessário um estudo com profundidade dos aspectos sintáticos e semânticos da linguagem Pascal e do ambiente de programação Delphi 6.0, incluindo o conjunto de componentes já disponíveis neste ambiente. Em seguida, conseguimos VII Congresso Iberoamericano de Informática Educativa 73
implementar um protótipo do ambiente de visualização considerando um conjunto de exemplos pré-definidos. Além disso, a experiência de mais de quinze anos em ensino de linguagens de programação por parte do professor da disciplina envolvida, permitiu identificar a relevância deste ambiente para o aprendizado em programação de computadores. Isto possibilitou o teste do ambiente em um contexto real, onde os alunos puderam utilizar a ferramenta e compreender o fluxo de execução de um algoritmo, bem como, aspectos que dificultam o entendimento sobre alocação e uso de variáveis, redefinição do fluxo de execução do programa com chamadas a sub-rotinas, visualização de instanciação de variáveis locais, globais e parâmetros de procedimentos e funções. Nossa meta final e com a qual estamos trabalhando atualmente é a definição e implementação de uma versão para a Web do ambiente de visualização, o que possibilitará disponibilizarmos seus recursos e potencialidades para um número maior de usuários aprendizes. 4. Agradecimentos Os autores agradecem a Fundação de Amparo à Pesquisa do Estado de São Paulo Fapesp pelo suporte financeiro, o que viabilizou a realização desta pesquisa. A Borland Software Corp. pela doação do software Delphi 6.0 para o desenvolvimento do projeto. 5. Referências Bibliográficas Brown, M. H. (may, 1988). Exploring Algorithms using Balsa. Computers, 21(5), 14-36. Cantù, M. (2000). Dominando o Delphi 5: A bíblia. São Paulo: Makron Books. O Brien, S. (1993). Turbo Pascal 6: Completo e Total. São Paulo: Makron Books. Stasko, J.T. (september, 1990). TANGO: A Framework and System for Algorithm Animation. Computer, 23(9): 27-39. Wirt, N. (1985). Programação Sistemática em Pascal. Rio de Janeiro: Campus. VII Congresso Iberoamericano de Informática Educativa 74