quarta-feira, 10 de setembro de 2008

Alba - artigo sobre Ferramenta de apoio ao ensino de algoritmos

FERRAMENTA DE APOIO AO ENSINO DE ALGORITMOS 
Rafael de Santiago (UNIVALI)
santiago@inf.univali.br
Rudimar Luís Scaranto Dazzi (UNIVALI)
rudimar@inf.univali.br

RESUMO. Este trabalho pretende apresentar o Construtor e Interpretador de Algoritmo para Programação (CIFluxProg) e os testes efetuados com ele em sala de aula. O CIFluxProg é uma ferramenta de apoio para as disciplinas iniciais da área de programação, como por exemplo, as disciplinas de algoritmos. Desenvolveu-se esta ferramenta que permite aos alunos implementarem e testarem suas soluções lógicas de programação tanto em Portugol como em Fluxograma.
Contando com o auxílio do teste de mesa e com a interpretação da solução, inclusos na ferramenta, a verificação de integridade das soluções pode ser verificada. Esta ferramenta flexibiliza o processo de treinamento dos alunos, uma vez que estes podem verificar o funcionamento das suas soluções na prática, visualizando em detalhes os passos e os resultados da sua solução.
Palavras-chaves: Ensino em Ciência da Computação, Algoritmos, Fluxogramas.

1. INTRODUÇÃO
A aprendizagem de lógica de programação é muito importante para todas as carreiras ligadas à informática. Programação é, sem dúvida, a disciplina mais importante para a formação daqueles que terão no desenvolvimento de softwares o produto final do seu trabalho. Uma vez que a aprendizagem de programação ocorre praticamente, durante todo o curso, o baixo índice de assimilação dos estudantes nas disciplinas cujos requisitos exigem o conhecimento de programação tem sido um grande problema enfrentado em muitas instituições. Rocha (1991) afirma que estamos tendo um fracasso no ensino de programação e Gomes (2000) fala do insucesso generalizado verificado na aprendizagem de programação.
Diversos sistemas para implementação de animações de algoritmos e de estruturas de dados (STUBBS, WEBRE 1988; SZWARCFITER, MARKENSON 1994) foram produzidos desde o trabalho pioneiro de Brown (1987, 1988), como por exemplo, (AMORIM, REZENDE 1993; BROWN 1991; STASKO 1990). Vários destes sistemas exploram muito bem a potencialidade do uso de visualizações gráficas das operações realizadas nas estruturas de dados como ferramenta de ensino. Algumas ferramentas mais recentes podem ser verificadas em Cares (2002), Medeiros (2001) e Mendes e Gomes (2000).
O sistema CIFluxProg é uma ferramenta que foi construída com intuito de auxiliar os estudantes de computação no aprendizado da lógica de programação de computadores. Não são muitas as opções de ferramentas disponíveis neste contexto e nem sempre possuem recursos visuais e sintaxe equivalente a utilizada em sala de aula para a construção das soluções computacionais, sejam com a utilização de Fluxograma ou de Português Estruturado (Portugol).
Isto torna difícil e desagradável o processo de aprendizagem que deveria ser na medida do possível fácil e prazeroso (MEDEIROS e DAZZI 2002).
A principal meta desse sistema é disponibilizar aos aprendizes de lógica de programação uma maneira fácil e intuitiva de testar os conceitos ensinados em sala de aula nas disciplinas que envolvem lógica de programação. Esta ferramenta em seus dois módulos, permite a construção e teste de algoritmos confeccionados como Fluxogramas ou Portugol. Com isso, atende tanto aos alunos que possuem perfil mais visual quanto no textual.
Esta ferramenta, com o que foi construído até o momento, não tem o objetivo de ser uma ferramenta de ensino propriamente, mas um software de apoio ao professor, permitindo ao mesmo efetuar a prática do ensino de algoritmos em computador, com os recursos utilizados em sala. Este deve ser utilizado inicialmente com supervisão do professor, mas pode ser disponibilizado para os alunos confeccionarem e testarem suas soluções fora do horário de aula.
A utilização de uma ferramenta computacional para os alunos confeccionarem seus algoritmos, permitindo aos mesmos testarem suas soluções visualizando o resultado gerado por elas, é antes de tudo, um grande motivador do processo de ensino aprendizagem (DAZZI, MIRANDA, SOUZA 2000; SANTIAGO e DAZZI 2003).
Mendes e Gomes (2000) em seu sistema denominado SICAS, nos diz que este permite a construção de resoluções para problemas, bem como a sua simulação, observação e análise. Caso a solução não seja adequada, o aluno poderá detectar e corrigir os erros cometidos, de forma a encontrar uma solução satisfatória. Este processo de detecção e correção de erros é fundamental para o desenvolvimento nos aprendizes de programação. A construção da resolução do problema é realizada no SICAS, através de fluxogramas. Esta decisão foi tomada no sentido de privilegiar o uso de representações gráficas fluxogramas), em detrimento de especificações verbais (pseudocódigo), não apenas pelos estudos analisados, mas por uma forte convicção de que essa forma de representação é mais apelativa (prendendo mais a atenção do aluno), tira mais partido do potencial do sistema visual humano para facilitar a compreensão, é mais clara e está menos sujeita a erros, mantendo uma atividade mais organizada e estruturada.
Esta proposta avança um pouco mais nestes contexto, disponibilizando tanto o ambiente visual com fluxogramas, como o textual, com portugol, permitindo com isso que os alunos possam escolher a seu critério qual das opções utilizar. Também permite desta forma, que os professores possam optar pela forma que mais lhe seja favorável, tornando assim o processo mais flexível.

2. A FERRAMENTA

O CIFluxProg é a composição de dois ambientes de desenvolvimento, um para a confecção de Fluxogramas e outro para a confecção de algoritmos em Portugol, junto com um compilador e um interpretador. Isso permite que sejam criadas e testadas tanto soluções em fluxogramas quanto em português estruturado, em um ambiente visual. Com a possibilidade de execução das soluções geradas com a visualização do resultado ou dos erros cometidos, é mais simples e agradável para os alunos interagirem e entenderem os processos de confecção de soluções de problemas computacionais.
A ferramenta foi desenvolvida na linguagem C++, contando com um interpretado de código desenvolvido na mesma linguagem, mas com apoio da ferramenta Lex & Yacc.

2.1 O INTERPETRADOR

Para que haja execução de código na ferramenta CIFluxProg, um interpretador foi desenvolvido. Analisando a solução do usuário em busca de erros léxicos e sintáticos e se possível executando a mesma. Para a execução de soluções em fluxogramas, foi construído um algoritmo que monta um código na memória um código compatível com o interpretador. O interpretador, por sua vez, analisa o código montado e o executa.
A gramática que o interpretador utiliza pode ser visualizada na Tabela 1. Esta gramática privilegia um conjunto reduzido de instruções, para permitir que os alunos coloquem em prática seus algoritmos desde os primeiros testes até o ponto considerado necessário antes de apresentar uma linguagem de programação, por parte dos professores das disciplinas. Sendo assim foram disponibilizadas as estruturas básicas de desvio e repetição, além dos elementos necessários para estruturar as soluções como um programa.
Portugol Descrição

2.2 MÓDULO PORTUGOL
O módulo de portugol foi desenvolvido para usuários com perfil verbal, pois estes possuem maior facilidade para exercitar sua lógica de programação em ferramentas que apresentam suas soluções de forma mais textual.
O módulo descrito (Figura 1) apresenta uma caixa de texto para a edição de códigos, uma barra de estruturas (para usuário inserirem algum texto padrão como IF..ELSE), e uma barra de menus. A ferramenta também possibilita salvar, abrir e imprimir fluxogramas. Como principal atrativo do módulo, pode ser destacada a opção de execução do código escrito. Essa execução acontece com uma solicitação ao interpretador de código (desenvolvido especificamente para a ferramenta CIFluxProg).

A Figura 2 demonstra um algoritmo de fatorial executando no módulo de portugol. Nesta figura, pode-se observar ao lado direito teste de mesa da solução, contendo a cada linha as modificações ocorridas nas variáveis declaradas. Ao centro pode-se visualizar que o resultado da solução foi 120, sendo que no teste de mesa constata-se que o valor inserido para se chegar ao fatorial foi 5.


2.3 MÓDULO DE FLUXOGRAMA

O módulo de fluxograma (Figura 3) foi o ponto mais importante para o projeto da ferramenta CIFluxProg, pois foi a necessidade inicial, visto que este recurso (Fluxograma) passou a ser utilizado na disciplina de algoritmos do curso de ciência da computação e não se tinha acesso a qualquer ferramenta que desse suporte a confecção e testes dessas soluções.
Como detalhe importante deste módulo é o suporte a aninhamento de símbolos. O aninhamento acontece quando se tem dentro de um símbolo dos tipos Laço de Repetição ou Desvio Condicional um outro símbolo também destes mesmos tipos. É imprescindível que o sistema suporte esse tipo de encadeamento, pois este tipo de estrutura é bastante utilizado na resolução de problemas computacionais. A ferramenta similar que fora anteriormente desenvolvida não tinha esse tipo de recurso o que praticamente inviabilizava seu uso.
Todos os símbolos disponibilizados na barra de ferramentas possuem campos editáveis pelo usuário. É nesses campos que o usuário deve inserir os nomes e valores de variáveis, condições lógicas, etc.
Quando um símbolo é inserido seu desenho é criado na tela e automaticamente o cursor do teclado é direcionado para a área de edição do símbolo criado, permitindo assim uma fácil manipulação das informações necessárias para a futura interpretação e execução do fluxograma.
O sistema também disponibiliza um botão localizado no canto superior esquerdo da tela com o título executar". Sua função é repassar a solução desenvolvida para o interpretador que retornará como resposta a execução do algoritmo.
O usuário dispõe também de recursos para guardar em seu computador o material que estasendo desenvolvido no sistema. As opções disponíveis na ferramenta, que são as opções tipicamente encontradas nos softwares em geral como salvar e abrir arquivos. Com isso não há a necessidade de que o usuário recrie todo um fluxograma a cada vez que for usar o sistema.
Todas as soluções implementadas em quaisquer dos módulos pode ser aberto no outro, sem perda ou problema de qualquer natureza. O interpretador utilizado para executar o fluxograma é o mesmo que o utilizado para o Portugol. Isso permite total compatibilidade entre as soluções, deixando o usuário totalmente livre para escolher qual das opções lhe agrada mais. Podendo ainda verificar a solução em ambas as formas de implementação (fluxograma ou portugol, uma vez que o código gerado em ambas as ferramentas é totalmente compatível), e se desejar executá-la verificando que o resultado é o mesmo.
Na Figura 4 pode-se constatar que o mesmo algoritmo submetido aos dois módulos (algoritmo de fatorial), obteve os mesmos resultados tanto na execução, quanto na interpretação.


3 CONCLUSÃO

Como pode ser observado neste artigo, a ferramenta CIFluxProg1, possui várias características que a credenciam como uma boa opção para a utilização em aulas práticas de algoritmos. Esta agrega duas opções de ensino, tanto com a utilização da clássica ferramenta denominada Fluxograma, como do Portugol, permitindo com isso atender os alunos com maior 1 A ferramenta em sua versão experimental está disponível no endereço: http://www.cttmar.univali.br/~gia/projetos_pesquisa.htm dificuldade no desenvolvimento da lógica necessária para a solução computacional dos problemas, sejam eles com perfil tendendo mais ao tipo de raciocínio lógico-matemático e visual-espacial, como os que possuem perfil tendendo mais para o verbal.
Essa ferramenta se mostrou bastante agradável para os usuários, que se empolgaram bastante ao utilizá-la, nos testes preliminares efetuados com uma das turmas de algoritmos do primeiro período do curso de ciência da computação do CTTMar-UNIVALI. Esse fato parece demonstrar que o interesse pelo aprendizado está diretamente relacionado a motivação dos alunos para com os recursos utilizados. O fato destes alunos deixarem de utilizar apenas papel e o lápis para utilizar também o computador, tanto para escrever suas soluções, como para testar e visualizar os resultados, parece ter gerado esse efeito motivador. Outro ponto que agradou foi a possibilidade de visualizar e testar a mesma solução tanto em portugol como em fluxograma. Esse objetivo pode se considerar alcançado, mesmo com a ferramenta em fase final de acabamento.
Acredita-se que esta ferramenta possibilite melhorias no processo de ensino aprendizagem das disciplinas que a utilizarem, minimizando com isso um dos grandes problemas existentes nestas disciplinas, que é o alto índice de reprovação. Só o fato observado da disposição dos alunos em fazer exercícios ter aumentado já começa a validar esse processo de melhoria, uma vez que umdos grandes problemas observados para o baixo rendimento dos alunos em sala é a falta de exercícios efetuados fora do horário de aula.
REFERÊNCIAS

AMORIM, R. V.; REZENDE, P. J. Compreensão de Algoritmos através de Ambientes Dedicados
a Animação. In: SEMISH, 10., 1993.
BROWN, M. H. Zeus: A System for Algorithm Animation and Multi-View Editing. Procedings...
IEEE Workshop on Visual Languages, 1991.
BROWN, M. H. Algorithm Animation. The MIT Press, 1987.
BROWN, M. H. Exploring Algorithms Using Balsa-II. Computer, maio 1988. p. 14-36.
CARES, P. L. L. Ambiente para teste de mesa utilizando fluxograma. Trabalho de Conclusão
(Graduação)–Faculdade de Ciência da Computação, Universidade do Vale do Itajaí, Itajaí, 2002.
DAZZI, R. L. S.; MIRANDA, E. M.; SOUZA, E. M. S. SAEL: Sistema de apoio ao ensino de
lógica de programação. In: WORKSHOP DE INFORMÁTICA APLICADA À EDUCAÇÃO,
Araraquara, 2000.
GOMES, A. J. Ambiente de suporte à aprendizagem de conceitos básicos de programação,
Dissertação (Mestrado)–Universidade de Coimbra, 2000.
MEDEIROS, C. L. Aplicação web para realizar teste de mesa em algoritmos. Trabalho de
Conclusão (Graduação)–Faculdade de Ciência da Computação, Universidade do Vale do Itajaí,
Itajaí, 2001.
MEDEIROS, C. L.; DAZZI, R. L. S. Aprendendo algoritmos com auxílio da WEB, In:
CONGRESSO BRASILEIRO DE COMPUTAÇÃO, 2., 2002, Itajaí. Anais... Itajaí: UNIVALI
– CTTMar, 2002.
MENDES, A. J. N.; GOMES, A. J. Suporte a aprendizagem de programação com o ambiente
SICAS. In: CONGRESSO IBERO AMERICANO DE INFORMÁTICA EDUCATIVARIBIE,
5., 2000, Viña del Mar-Chile. Anais... Viña del Mar-Chile: Universidad de Chile, 2000.
PRICE, A. M. A.; TOSCANI, S. S. Implementação de linguagens de programação:
Compiladores. Porto Alegre: Sagra Luzzatto, 2. ed., 2001.
ROCHA, H. V. Representações Computacionais Auxiliares ao Entendimento de Conceitos de
Programação, Unicamp, 1991.
SANTIAGO, R.; DAZZI, R. L. S. Ferramentas que auxiliam o desenvolvimento da lógica de
programação. In: SEMINCO - SEMINÁRIO DE COMPUTAÇÃO, 12., 2003. Anais...
Blumenau: FURB, 2003. p.113-120.
SOUZA, E. M. S.; GRANDI, G.; SOUZA, O. R. M.; DAZZI, R. L. S. Reavaliando o ensino de
algoritmos. In: SIMPÓSIO CATARINENSE DE COMPUTAÇÃO, 1., 2000. Anais... Itajaí:
UNIVALI, 2000. vol. 3, p. 69-79.
STASKO, J. T. Tango: A Framework and System for Algorithm Animation. Computer, setembro 1990. p. 14-36.
STUBBS, D. F.; WEBRE, N. W. Data Structures with Abstract Data Types and Pascal, Pacific
Grove, Brooks/Cole, 2 ed., 1988.
SZWARCFITER, J.; MARKENSON, L. Estruturas de Dados e seus Algoritmos, LTC, 1994.


Conclusão Pessoal

O ensino de Algoritmos, em cursos de Computação, tem por objetivo ordenar o pensamento do aluno, fazendo com que o mesmo aprenda a pensar na mesma seqüência lógica utilizada pelo computador e sua importância é percebida somente mais a frente dos cursos de computação.

Todos nós sabemos que ensino de algoritmo e estrutura de dados requer uma atenção especial por parte dos professores. Existem muitos pesquisadores preocupados com este aspecto. É importante que todos tenham em mente que para se obter sucesso na área de Informática em contexto nacional é necessário que se forme no mínimo, bons programadores. Uma boa fonte de informação sobre este assunto é a lista alg-prog-l mantida pela Sociedade Brasileira de Computação (www.sbc.org.br).

O sistema CIFluxProg é um projeto pedagógico que tem como meta principal melhorar o ensino de algoritmos, utilizando para tal, ferramentas que auxiliem na relação ensino-aprendizagem, melhorando o rendimento, motivação, freqüência e participação dos alunos. Ele permite a construção de resoluções para problemas, bem como a sua simulação, observação e análise. Caso a solução não seja adequada, o aluno poderá detectar e corrigir os erros cometidos, de forma a encontrar uma solução satisfatória. Este processo de detecção e correção de erros é fundamental para o desenvolvimento nos aprendizes de programação.

É uma boa opção para utilização em aulas práticas de algoritmos por nos dar o privilegio de usar de representações gráficas (fluxogramas), em detrimento do pseudocódigo (o nosso Portugol), prendendo mais nossa atenção, pois tira partido do sistema visual humano para facilitar a compreensão. Sendo mais clara, está menos sujeita a erros, mantendo uma atividade mais organizada e estruturada.
A tradução de um algoritmo escrito em Portugol para um programa de computador numa linguagem de programação tem que ser fácil e clara, facilitando assim o ensino e aprendizado da linguagem de programação. O ensino do Portugol, hoje, é feito de maneira manual (utilizando folhas de papel), o que não estimula os alunos em aprender e exercitar o desenvolvimento de algoritmos. Poder contar com o auxílio do teste de mesa e com a interpretação da solução, inclusos na ferramenta, a verificação de integridade das soluções pode ser verificada. O CIFluxProg é ferramenta que flexibiliza o processo de treinamento dos alunos, uma vez que estes podem verificar o funcionamento das suas soluções na prática, visualizando em detalhes os passos e os resultados da sua solução.

Um comentário:

sauih disse...

alguém teria este programa(CIFluxProg) e que possa enviar para meu email(chron@ig.com.br)?