MAC 499 - Trabalho de Formatura Supervisionado

Projeto: Ferramentas para o ensino presencial  e on-line de Geometria Descritiva
Aluna: Fabiana Piesigilli
Orientadores: Prof. Dr. Eduardo Toledo Santos
Prof. Dr. Leônidas Oliveira Brandão

Resumo

O igeom é um software para ensino de geometria que permite realizar quaisquer construções geométricas a partir de objetos elementares como pontos, retas, semi-retas, segmentos e circunferências, simulando com o mouse o uso de régua e compasso. Ele faz uso de geometria dinâmica, ou seja, quando algum objeto é movido, reconstrói automaticamente as construções geométricas mantendo suas propriedades originais, e salva o processo de construção através de scripts, que podem ser enviados ao professor para correção.
Este texto visa discorrer sobre minha participação até o momento no desenvolvimento deste sofware.

1) Objetivos do projeto

O projeto como um todo tem por objetivo desenvolver três produtos:

1.      Software para resolução de exercícios de geometria, com suporte para avaliação automática: Permite realizar quaisquer construções do tipo "régua-e-compasso", e ainda, que as resoluções sejam enviadas ao professor para correção detalhada. Incorpora recursos de geometria dinâmica, permitindo que, após a construção dos elementos geométricos, estes possam ser movimentados, mantendo-se automaticamente as propriedades geométricas estabelecidas inicialmente. Seu principal destaque ficará por conta da avaliação, pois é capaz de fornecer realimentação imediata ao estudante sobre a correção ou não da solução apresentada.

2.      Software para demonstração de solução passo-a-passo de exercícios de geometria: Permite que o aluno comande passo-a-passo o andamento da solução de exercícios complexos, tendo acesso a um roteiro explicativo (texto ou narração) para cada passo.

3.      Biblioteca de Exercícios de Geometria on-line: este produto é baseado nos dois anteriores e inclui uma grande biblioteca de exercícios resolvidos e propostos. Sua característica de destaque será o mecanismo de seleção/busca de exercícios por vários métodos, incluindo tema, complexidade, operações envolvidas, etc. Permite ainda a multiplicação da base de exercícios através da geração aleatória de parâmetros, alterando a configuração geométrica dos exercícios base. Faz o registro individual de cada aluno (através de login/senha) de forma a controlar a evolução dos estudantes. Este desenvolvimento se faz em cooperação com a Universidad de Jaén - Espanha, e será um dos componentes de um projeto maior, cuja meta é o desenvolvimento de um sistema tutor inteligente para ensino de geometria descritiva.  

2) Atividade Desenvolvidas e Sistemas Estudados

As minhas atividades tiveram por objetivo participar do desenvolvimento do primeiro e do segundo produtos. Eles possuem a mesma estrutura interna, formando um único software - batizado de igeom - que pode ser utilizado tanto dentro do navegador (em forma de applet), quanto na forma de um aplicativo comum. O que muda entre as duas versões são os respectivos front-ends, e como a versão aplicativo não exige conexão com a internet, esta não proporciona o envio de soluções de exercícios pela rede, mas permite que elas sejam gravadas em disco, e possam ser recuperadas posteriormente. O igeom está disponível no endereço http://www.matematica.br/igeom/IGeomApplet.html.

Durante a minha participação no projeto, o igeom era desenvolvido em parceria com outro aluno. Quando nele comecei a trabalhar, todo o módulo de desenho já estava em fase avançada de desenvolvimento, e foi necessário estudá-lo, pois a integração com a minha parte exigiu certas modificações.  

Sou responsável pela implementação do módulo de script (gravação, interpretação e envio para o servidor, o qual é implementado em PHP), e pela interface ao usuário. Além disso, implementei a construção de retas paralelas e perpendiculares, corrigi bugs em diversos módulos, escrevi um manual simplificado do programa e fiz um estudo sobre a compatibilidade dos navegadores com as diversas versões da linguagem Java.

A linguagem de programação utilizada foi Java, e o ambiente de desenvolvimento, o Borland JBuilder 1.1 e o JDK 1.1.8. A comunicação com o servidor php que recebe as resoluções dos alunos é via HTTP, através da biblioteca para Java HTTPClient, e o parser para interpretação de scripts foi gerado pelo JLex.

Dentre as bibliotecas gráficas disponibilizadas pelo Java, havia duas opções: AWT, e Swing. Optamos por  utilizar apenas a AWT por esta ser bem mais rápida e leve (apesar de mais restrita), e por o uso de Swing exigir plug-ins na maioria (senão em todos) dos navegadores da época.  

3) Metodologia

A metodologia empregada segue o modelo incremental da Engenharia de Software. Este modelo aplica seqüências lineares repetitivamente, conforme ilustra a figura:

Cada seqüência linear produz uma versão operacional e útil do software, com algumas funcionalidades a mais da especificação formal implementadas.

4) Trabalhos Correlatos

Software Plataforma Exporta Applet ? Licença
Cabri Windows Sim Comercial
C.a.R Windows Não Livre
Cinderella Linux/Windows/Mac Sim Comercial
Dr Geo Linux/Windows Não Livre
Euklid Windows Não Shareware
Geometer's SketchPad Windows Sim Comercial

Como demostra a tabela, apenas os softwares comerciais exportam applets. O igeom será o primeiro software livre (ao que sabemos) a fazê-lo. Além disso, por ter sido desenvolvido em Java, ele pode ser utilizado em qualquer plataforma. 

Obs: Por exportar applet entenda-se utilizar a versão aplicativo do programa para criar um applet contendo o enunciado ou a explicação de um exercício.

5) Resultados obtidos: o igeom

O igeom foi desenvolvido com o intuito de ser utilizado como recurso didático no ensino de geometria. Como exposto anteriormente, programas como o iGeom, permitem realizar-se quaisquer construções geométricas a partir de objetos elementares como pontos, retas, semi-retas, segmentos e circunferências, simulando com o mouse o uso de régua e compasso. A grande vantagem do igeom é que este faz uso de dinamismo, ou seja,  pode-se interagir com as construções, movendo-se os objetos que as compõem, o que não é possível no papel. Quando o usuário interage com a construção, o programa automaticamente reconstrói os objetos, preservando suas relações e propriedades originais. A geometria dinâmica incentiva o aluno a realizar descobertas, transformando o computador numa excelente bancada para realização de testes geométricos. Com os atuais recursos, o igeom pode também ser utilizado para se estudar trigonometria.

 Além disso, o igeom permite que o processo de construção seja salvo através de scripts, que podem conter comentários e marcações  de parada. Os scripts, ao serem recuperados, proporcionam ao aluno um recurso único que o possibilita a comandar passo-a-passo o andamento da solução de exercícios complexos, tendo acesso a um roteiro explicativo (texto ou narração) para cada passo. Esta ferramenta é muito importante no ensino pois respeita o ritmo de aprendizado individual de cada estudante e preserva a ordem de execução das construções, permitindo ao aluno conhecer a seqüência das construções para  resolução de um exercício, informação que é normalmente perdida na apresentação em formato impresso. Os scripts podem ainda conter recorrências (capacidade de invocar a si mesmo), o que torna possível a construção de fractais geométricos como Curva de Kock e Triângulo de Sierpinski. Esta funcionalidade está presente - ao que sabemos - em apenas um concorrente comercial. Nas figuras abaixo ilustramos algumas construções geométricas para "simular" fractais (o fractal matemático é o limite destas representações, quando a profundidade tende para infinito). Na primeira, apresentamos alguns passos de construção e nas seguintes três fractais conhecidos.
 

A construção original (durante gravação de script)

A mesma construção com recorrência de profundidade 1

 

Recorrência de profundidade 2

 

Profundidade 4


Fractal de Kock


Triângulo de Sierpinski


Fractal Antena ou Árvore Binária

 O igeom é apresentado em duas versões: aplicativo e applet. A versão applet, que funciona em qualquer navegador com Java embutido, possui em recurso único para programas de Geometria Dinâmica (ao menos, não existente nos mais conhecidos, como Cabri, GSP, Cinderella e Dr.Genius): o de enviar a solução dos exercícios ao professor através da internet, e ainda num futuro próximo,  permitirá fornecer realimentação imediata ao estudante sobre a correção ou não da solução apresentada. Já a versão aplicativo não necessita da internet, possibilitando o uso do software em lugares onde a rede não está disponível.

 Pretende-se que este seja um software gratuito, disponível a qualquer aluno ou professor, que poderá utilizar os seus recursos para tornar a experiência de aprendizado muito mais interessante e interativa em todos os níveis de ensino.

 Já existem vários projetos em andamento utilizando o igeom como base. Estão sendo desenvolvidas para o portal imatica  (http://www.matematica.br/), páginas da internet que ensinam diversos tipos de construções geométricas, como pentágono, ponto médio, etc, utilizando a versão applet do igeom.

 A idéia do igeom, uma parceria entre Escola Politécnica e Instituto de Matemática e Estatística da USP, começou a ser concebida em 1998, e existem diversas publicações sobre o software, as quais são listadas aqui.

Veja a versão applet do igeom

Manual do usuário do igeom

6) Experiência Adquirida

No BCC, quando os EPs eram em grupo, eles eram divididos de maneira que não houvesse intersecção entre os códigos de cada um, coisa que não acontecia neste projeto. Nele, um aluno trabalhava a partir da última versão entregue pelo outro - sem saber o que o outro estava fazendo, e isso dificultou a integração de versões no início. Erros que eram consertados voltavam a aparecer, incrementos eram perdidos, módulos que poderiam ser aproveitados por outros não o eram. Muito tempo foi perdido com esse problema, que foi resolvido criando-se uma lista de discussão para que todos ficassem sempre a par do que estava acontecendo, e adotando-se um política bem simples: colocar a data da versão no nome do arquivo, e manter uma lista de alterações da versão anterior para aquela versão. Na época não conhecíamos CVS, e quando ficamos conhecendo, o método que estávamos usando já estava funcionando tão bem, que resolvemos não adotar o CVS.

Foi muito interessante como no projeto foram aplicados temas de diferentes áreas, tanto antes da respectiva disciplina ser cursada, como depois. Por exemplo, para implementar o interpretador de scripts, aplicou-se conceitos de compiladores, disciplina que eu não cursei. A necessidade desses conceitos apareceu quando foi preciso incluir recorrência nos scripts, e por isso tornou-se preciso empilhar valores (veja o item 6.1). Naquele momento, foram fundamentais as explicações do prof. Leônidas. 

As disciplinas mais importantes para o projeto foram:

Minhas únicas frustrações foram discordar dos orientadores com relação a certas decisões de projeto - o que deixou-me  temporariamente desmotivada - e também a pouca ênfase dada às fases de análise e design, pois fosse diferente, a qualidade do código teria sido muito superior. Mas no geral, a experiência foi riquíssima, e aprofundou meu conhecimento em diversos assuntos.

Um possível desdobramento deste projeto que renderia um mestrado seria na área de Computer Supported Cooperative Work, groupware e learningware, áreas da Ciência da Computação relacionadas com pesquisa em "computação aplicada ao ensino". Uma idéia nesse sentido seria expandir o igeom para ser utilizado em grupos cujos alunos poderiam resolver problemas em conjunto estando distantes entre si. Outra linha interessante seria a aplicação de Inteligência Artifical em correções e análises das respostas dos alunos (mas isso provavelmente seria um doutorado, dado sua complexidade). Em geometria dinâmica, nada disso ainda foi feito, ou seja, todos os trabalhos de pesquisa nesta área ainda não foram experimentados em ambientes interativos como o do igeom.

Dentre os desafios encontrados, posso citar a execução de recorrências nos scripts, cujos detalhes explico a seguir.

6.1 Detalhes de Implementação

Gravando Scripts: A gravação de um script por parte do usuário foi implementada de modo a parecer um antigo gravador de fitas cassete, isto é, todo objeto que o aluno constrói na área de desenho é escrito no script.  

Comparando a geometria dinâmica com linguagens de programação, um script com parâmetro é uma função (que tem como argumentos de entrada os objetos de partida), enquanto um sem parâmetro é análogo a um procedimento.

A cada objeto geométrico escrito num script é atribuído um número identificador - o menor possível - único naquele arquivo, através do qual ele será referenciado no mesmo. São atribuídos identificadores (pequenos) inclusive aos argumentos do script. São considerados argumentos ou parâmetros todos os objetos que não foram gerados pelo script, mas que foram referenciados em algum momento. Tais objetos deverão ser selecionados previamente pelo usuário cada vez que o script for executado, e é neles que será aplicada a recorrência, se esta existir. Por exemplo, no script abaixo, que constrói o ponto médio de um segmento, os argumentos são os pontos A e B.

Dependências: Ponto (A); Ponto (B);
C0: Traçar Circunferência de A a B
C1: Traçar Circunferência de B a A
C:  Intersecção entre C1 e C0
D:  Intersecção entre C1 e C0 
r: Traçar reta de A a B
s: Traçar reta de C a D
E:  Intersecção entre r e s
Esconda r, s, C1, C0, C e D
Recorrência em A e E
Recorrência em E e B

Neste exemplo, os identificadores foram substituídos por letras por fins didáticos, mas na realidade, este script seria escrito pelo igeom desta maneira:

Dependências: Ponto (1); Ponto (2);
3: Traçar Circunferência de 1 a 2
4: Traçar Circunferência de 2 a 1
5:  Intersecção entre 4 e 3
6:  Intersecção entre 4 e 3 
7: Traçar reta de 1 a 2
8: Traçar reta de 5 a 6
9:  Intersecção entre 7 e 8
Esconda 7, 8, 4, 3, 5 e 6
Recorrência em 1 e 9
Recorrência em 9 e 2

Interpretando Scripts: Não fosse a capacidade dos scripts do igeom de invocarem a si próprios (recorrência), interpretar um script seria uma tarefa fácil. Bastaria analisar lexicamente o arquivo, e executar linearmente cada operação registrada nele. Mas por causa da recorrência, foi necessário adotar técnicas mais sofisticadas (tratar os scripts com um compilador simplificado).

O analisador sintático do igeom produz uma estrutura de dados contendo as operações e seus respectivos argumentos (por exemplo, uma reta é construída a partir de dois pontos). Essa estrutura é passada para o interpretador, que se encarrega de executá-las. Tal separação garante que o interpretador seja completamente independente do formato do arquivo, isto é, pode-se mudar o formato do arquivo, sem ser necessário modificar o interpretador.

No exemplo acima, a primeira recorrência, na profundidade 1,  gera o ponto-médio do segmento do lado esquerdo e a segunda, o ponto-médio do segmento do lado direito (na profundidade 1, AE e EB, respectivamente). Vamos chamar o ponto-médio de AE de K, e o de EB de H. Neste caso, na profundidade 2, o script produz os pontos-médios dos quatro novos segmentos gerados (AK, KE, EH e HB), e assim por diante, conforme a profundidade aumenta.

Os objetos gerados numa execução e os recebidos como argumento são armazenados num vetor indexado por seus identificadores, para que possam ser acessados de maneira bastante eficiente (o vetor serve como tabela de símbolos e pilha ao mesmo tempo). Entretanto, quando uma recorrência é invocada, os argumentos passam a ser outros (no exemplo, quando a primeira recorrência é executada, o ponto A assume o papel do objeto 1, e o ponto E toma o lugar do objeto 2), e os objetos que são criados são referenciados pelos mesmos identificadores utilizados anteriormente. Mas dois objetos distintos não podem ter o mesmo identificador, pois são armazenados no vetor indexado por estes valores. Como então diferenciá-los? É aí que surge a necessidade do base-pointer, um número que marca onde começam os objetos da nova profundidade no vetor. Com os base-pointers, os objetos podem ser acessados pelo identificador respectivo registrado no script, somado ao base-pointer corrente. Agora, cada vez que uma recorrência é invocada, basta empilhar o base-pointer corrente, criar um novo, e reiniciar o script com os novos argumentos, aproveitando a própria estrutura de recorrência permitida pela linguagem Java.

Na profundidade 0:

1 A
2 B
3 C0
4 C1
5 C
6 D
7 r
8 s
9 E


Na profundidade 1:
1 A
2 E
3 C2
4 C3
5 F
6 G
7 t
8 u
9 H

Com o base-pointer = 9:

1 A
2 B
3 C0
4 C1
5 C
6 D
7 r
8 s
9 E
10 A
11 E
12 C2
13 C3
14 F
15 G
16 t
17 u
18 H

Observe que com o base-pointer = 9, na recorrência de profundidade 2, para acessar o objeto 1 no vetor de objetos, basta fazer:

1 + base-pointer = 1 + 9 = 10.

Uma dificuldade adicional é trazida pela necessidade de "marcação de pausa", ou seja, a delimitação de pontos de parada na execução do script. Logo, uma recorrência pode parar antes de ser terminada, e por isso não é mais possível aproveitar a recorrência do Java: torna-se preciso implementar um processo próprio. Introduz-se então uma espécie de contador, armazenando o local do script onde parou aquele nível de recorrência. Cada vez que uma recorrência é invocada, além do base-pointer corrente, empilha-se também o contador atual, e o mesmo é feito quando o script é pausado. Quando o script é reiniciado, ou um nível de recorrência termina, basta desempilhar um contador para saber de onde continuar.

7) Bibliografia

8) Publicações sobre o software

Em ordem cronológica:

BRANDÃO, L. O. ; ISOTANI, S. iMática: Ambiente Interativo de Apoio ao Ensino de Matemática via Internet

L. O. Brandão, Algoritmos e Fractais com Programas de GD:  Revista do Professor de Matemática, no. 49, pp. 27-34.

 L. O. Brandão, Geometria Interativa na Internet: iGeom, Anais do XIII Simpósio Brasileiro de Informática na Educação (SBIE 2002), São Leopoldo, RS, pp. 652

 L. O. Brandão, Dynamic Geometry = computer + geometry + algorithms: how to learn algorithms and geometry using dynamic geometry software and geometric fractals
 International Conference on Science and Mathematics Education (ICSU) 21-23 September 2002 Rio de Janeiro, RJ, Brazil, poster.

 L. O. Brandão, iGeom: a free software for dynamic geometry into the Web International Conference on Science and Mathematics Education (ICSU) 21-23 September 2002
 Rio de Janeiro, RJ, Brazil, poster.

 L. O. Brandão, Produção de material para ensino de matemática: LEM, iMática e iGeom
Primeiro Workshop de História e Tecnologia no Ensino de Matemática (I HTEM), 21 a 23 de Fevereiro de 2002.

SANTOS, E. T. ; ROJAS-SOLA, J. I. A Proposal for an On-Line Library of Descriptive Geometry Problems , Journal for Geometry and Graphics, v.5, n.1, p.93-100, 2001.

SANTOS, E. T. ; BARROS, L. N.; VALENTE, V. C. P. N. Projetando uma Ontologia de Geometria Descritiva. Anais do IV Congresso Internacional de Engenharia Gráfica nas Artes e no Desenho (GRAPHICA 2001), p.918-928, nov. 2001, São Paulo, SP.

BARROS, L. N. ; SANTOS, E. T. Um Estudo da Modelagem do Domínio de Geometria Descritiva para a Construção de um Sistema Tutor InteligenteIn: Anais do XI Simpósio Brasileiro de Informática Educativa (SBIE´2000), p. 259-66, nov. 2000, Maceió, AL.

SANTOS, E. T. Topographic surfaces on the web: a tool for distance learning In: ICECE2000 - International Conference on Engineering and Computer Education, IEEE, São Paulo, Brazil, August 2000. (CD-ROM).

ROJAS-SOLA, J. I. SANTOS, E. T. Implementación de una Biblioteca on-line de Ejercicios para el Aprendizaje del Sistema Diédrico vía Internet  In: XII Congreso Internacional de Ingeniería Gráfica, Valladolid, España, 2000. (CD-ROM).

SANTOS, E. T., ROJAS-SOLA, J. I. An On-Line Library of Descriptive Geometry Problems In: Proceedings of the 9th International Conference on Geometry and Graphics, v.1,pp. 295-299, Johannesburg, South Africa, July 2000.

SANTOS, E. T. Un applet Java(tm) para hacer disponibles ejercicios de Geometría Descriptiva en Internet  In: Actas del II Congreso Iberoamericano de Expresión Gráfica, v.1, p.144-149, Salta, Argentina, Septiembre 1999.

GARCIA, D. B., SANTOS, E. T. Um Applet Interativo para Ensino de Desenho. In: Anais do 7º Simpósio de Iniciação Científica da USP (SICUSP´99), trabalho 6.32, (CD-ROM), São Paulo, 1999.

SANTOS, E. T. ; CHENG, L. Y. ; PETRECHE, J. R. D. An On-Line Interactive Tutorial on Projective Geometry In: Proceedings of the Eighth International Conference on Engineering Computer Graphics and Descriptive Geometry, p.593-597, Austin, TX, USA, July 1998.