2008
12 a 18 de julho
Belm do Par, PA
1. Introduo
O baixo ndice de assimilao dos estudantes nas disciplinas cujos requisitos exigem o
conhecimento de programao tem sido um grande problema enfrentado em muitas
instituies (Santiago e Dazzi, 2004). Dada a importncia da atividade de programao
em um curso de cincia da computao, uma das abordagens mais comuns para
enfrentar esse problema o desenvolvimento de ferramentas que venham a facilitar o
ensino de programao de forma didtica e pedaggica.
A aprendizagem de conceitos iniciais de programao difcil para muitos
estudantes iniciantes. Uma das razes, de acordo com Sajaniemi e Kuittinen (2003),
que os programas envolvem entidades abstratas como: construes formais de loops,
ponteiros, arrays, etc., conceitos estes que os estudantes no esto familiarizados. Dessa
maneira, mtodos e tcnicas so necessrios para auxiliar os estudantes a alcanarem
uma aprendizagem inicial destes conceitos de programao.
Ao longo dos anos, muitas ferramentas tm sido desenvolvidas para o ensino de
programao, utilizando as mais diversas abordagens, como animao de algoritmos,
utilizao de pseudo-linguagens, entre outras (Almeida et. al, 2004; Brown, 1988;
Moreno et. al, 2004; Silva e Favero, 2005), entretanto, ainda no existe uma ferramenta
SBC 2008
127
SBC
2008
12 a 18 de julho
Belm do Par, PA
2. Trabalhos relacionados
Na literatura encontram-se diversas ferramentas desenvolvidas para o ensino de
programao. Um dos mtodos utilizados o uso do pseudocdigo, uma forma genrica
de escrever um algoritmo, utilizando uma linguagem mais informal, podendo ser
entendida por qualquer pessoa, sem necessidade de conhecer a sintaxe de nenhuma
linguagem de programao. O uso do pseudocdigo tambm pode auxiliar a escrever
um programa menor e mais fcil de ser entendido. Nesta categoria, Almeida et. al,
(2004) descrevem o ambiente AMBAP e Silva e Favero (2005) descrevem o ambiente
VisualPseudo. A utilizao de pseudocdigo tambm apresenta uma desvantagem, a
qual a falta de padronizao. Dada a sua natureza no estruturada, um tanto difcil de
padroniz-lo, logo, um programador pode no entender a lgica de um programa escrito
por outra pessoa (Halstead, 2007).
Noutra linha, Gomes e Mendes (2000) descrevem o ambiente SICAS, centrado
em fluxogramas com smbolos diagramticos, focando mais a estrutura dos algoritmos.
A linha de visualizao de programas vem sendo pesquisada h algum tempo e consiste
no uso da computao grfica e da animao para auxiliar a ilustrar e a apresentar
programas de computador, processos e algoritmos. Programas para visualizao podem
ser utilizados no ensino para ajudar os estudantes a entenderem como os algoritmos
funcionam e tambm podem ser usados para auxiliar os programadores a
compreenderem melhor o seu cdigo (Frick, 1997).
A visualizao de programas foca na representao grfica da execuo de um
programa e seus dados. A representao visual de dados e da seqncia de execuo de
um programa pode proporcionar aos usurios valiosa informao em muitos aspectos do
desenvolvimento e da execuo de um programa, como depurao ou comparao entre
diferentes algoritmos em termos de desempenho, por exemplo. (Ellershaw e Oudshoorn,
1994).
SBC 2008
128
SBC
2008
12 a 18 de julho
Belm do Par, PA
3. A Ferramenta JavaTool
Uma das maiores dificuldades de um estudante de programao entender cada passo
da execuo do programa. Aprender a gramtica de uma linguagem de programao,
consertar erros de sintaxe em um programa, desenvolver novos algoritmos, escrever um
novo programa, depurar e consertar erros em um programa so as principais
dificuldades de um estudante que inicia um curso de programao, em ordem crescente
de dificuldade (Miyadera, 1999).
De acordo com os resultados obtidos em pesquisas no trabalho de Miyadera
(1999), so apresentados alguns requisitos para um sistema educacional: a) o sistema
deve exibir explanaes escritas junto com a animao do programa; b) os estudantes
preferem visualizar o cdigo dos programas, explicaes e animaes ao mesmo tempo;
c) os estudantes gostam de ter controle sobre a execuo da animao, o sistema deve
ento permitir a execuo do algoritmo continuamente, passo a passo, ir e voltar, e deve
permitir tambm o controle da velocidade da execuo da animao; d) a interao com
a animao melhora a aprendizagem, o sistema deve ento permitir entrada de dados
pelos usurios. A implementao da ferramenta proposta levou em considerao todos
estes requisitos.
O JavaTool uma ferramenta para auxlio ao ensino de programao, para ser
utilizada nas disciplinas iniciais de programao, nas aulas prticas de laboratrio.
Futuramente a ferramenta JavaTool dever ser integrada a um ambiente de ensino Web,
como por exemplo o Moodle (Moodle, 2008), podendo assim ser utilizada como uma
ferramenta de um laboratrio virtual de programao. No ambiente Web, o estudante
poder (i) examinar a animao de um exemplo de algoritmo presente no contedo
ministrado pelo professor e /ou poder (ii) selecionar um exerccio proposto pelo
professor e desenvolver uma soluo. O estudante poder editar cdigo Java, compilar,
depurar o cdigo e visualizar a animao do cdigo.
No laboratrio, a idia central do ambiente animar cdigos de algoritmos
escritos com uma sintaxe reduzida da linguagem Java em um curso inicial de
SBC 2008
129
SBC
2008
12 a 18 de julho
Belm do Par, PA
SBC 2008
130
SBC
2008
12 a 18 de julho
Belm do Par, PA
SBC 2008
131
SBC
2008
12 a 18 de julho
Belm do Par, PA
Chamada de mtodos.
Alguns mtodos da classe Math(ceil, floor, max, min, sqrt, pow, random, round)
e da classe String(length, charAt, toUpperCase, toLowerCase, substring, trim,
replace, valueOf);
SBC 2008
132
SBC
2008
12 a 18 de julho
Belm do Par, PA
SBC 2008
133
SBC
2008
12 a 18 de julho
Belm do Par, PA
SBC 2008
134
SBC
2008
12 a 18 de julho
Belm do Par, PA
5. Concluses
O JavaTool foi desenvolvido para minimizar as dificuldades de aprendizes em
disciplinas de programao, por meio da animao da execuo do cdigo. A
ferramenta busca tornar possvel a visualizao do comportamento da execuo do
cdigo fonte. O JavaTool foi desenvolvido aps uma experincia de sucesso de nosso
grupo de pesquisa com um ambiente similar para programao de SQL, que j est num
estado mais desenvolvido. O ambiente para SQL (Lino et. al, 2007) foi utilizado nos
ltimos dois anos em dezenas de turmas e a sua avaliao mostrou uma melhora de
performance de 10% a 15% no conceito final dos estudantes, comparando-se turmas que
usaram a ferramenta contra turmas que no usaram a ferramenta, para a mesma
disciplina.
Acreditamos que a utilizao do JavaTool ter no mnimo um desempenho
similar. A partir deste ano estaremos utilizando como ferramenta nas atividades prticas
de laboratrio. Por outro lado estamos trabalhando na integrao dele com uma
plataforma virtual de ensino, por exemplo, o Moodle.
Acreditamos tambm que o uso de uma sintaxe reduzida da linguagem Java no
incio de um curso de programao permite focalizar mais nos conceitos essenciais de
programao; o estudante liberado da memorizao de detalhes excessivos da sintaxe
da linguagem. Por outro lado, com o uso de uma sintaxe simplificada do Java, o
estudante est sendo preparado j com conceitos da linguagem Java a ser estudada mais
adiante em disciplinas de programao mais avanadas.
As principais funcionalidades do JavaTool so: edio de cdigo Java,
compilao, depurao, visualizao da animao do cdigo, exibio dos dados em
vrios formatos (binrio, hexadecimal e octal) e a visualizao do histrico de execuo
da animao tanto grfico como textual.
O JavaTool foi pensado como uma ferramenta para uso em aulas de prtica de
programao, sejam presenciais ou na modalidade a distncia. Por exemplo, poder
animar os exemplos expostos pelo professor bem como os exemplos existentes em um
contedo digital de uma disciplina de programao. Como trabalhos futuros so
considerados os seguintes itens:
SBC 2008
135
SBC
2008
12 a 18 de julho
Belm do Par, PA
Referncias
Almeida, E. S., Herreral, J.D., Filho, L.J. S., Almeida, H. O., Costa, E.B., Vieira, B.L.,
Melo, M.D. (2004) Um Ambiente Integrado para auxlio ao Ensino de Cincia da
Computao, In: Revista Digital da CVA, Vol. 2 n8.
Brown, M. H. (1988) Algorithm Animation. MIT Press.
Ellershaw, S., Oudshoorn, M. Program Visualization - The State of the Art.
Department of Computer Science, University of Adelaide, 1994. Disponvel em:
<http://citeseer.ist.psu.edu/ellershaw94program.html>. Acesso em: 11 de Novembro
de 2007.
Frick, A. Software Visualization. 1997. Disponvel em: <http://www.info.unikarlsruhe.de/~frick/SoftVis/>. Acesso: 30 de Outubro de 2007.
Gomes, A., Mendes, A., (2000) Suporte aprendizagem da programao com o
ambiente SICAS, V Congresso Ibero-Americano de Informtica Educativa, Vina
del Mar - Chile.
Halstead, N. Uses of Pseudo Code in Development. 2007. Disponvel em:
<http://blog.assembleron.com/2007/06/03/uses-of-pseudo-code-in-development/3>.
Acesso em: 11 de Novembro de 2007.
Lino, A. D. P., Silva, A. S., Harb, M.P.A.H., Favero, E.L., Brito, S.R. (2007)
Avaliao automtica de consultas SQL em ambiente virtual de ensinoaprendizagem. Conferencia Ibrica de Sistemas y Tecnologas de la Informacin.
CISTI .
Miyadera, Y., Huang, N., Yokoyama, S. A programming language education system
based on program animation. Tokyo Gakugei University, 1999. Disponvel em
<http://www.ifip.org/con2000/iceut2000/iceut08-04.pdf>. Acessado em 12 de
Novembro de 2007.
Moodle (2008) Disponvel em: <http://moodle.org/>. Acessado em 12 de maio de
2008.
Moreno, A., Myller, N., Sutinen, E., Ben-Ari, M. (2004) Visualizing Programs with
Jeliot 3, Proceedings of the Advanced Visual Interfaces.
Sajaniemi, J., Kuittinen, M. (2003) Program Animation Based on the Roles of
Variables. Proceedings of the 2003 ACM symposium on Software visualization. San
Diego, California. P. 7 ff.
Santiago, R., Dazzi, R.,Rudimar L.S. (2004) Ferramenta de apoio ao ensino de
algoritmos In: SEMINRIO DE COMPUTAO, Blumenau.
Silva, M.A.B., Favero, E.L.(2005) Compiladores e Interpretadores Uma Abordagem
Prtica.
SBC 2008
136