152
1. Página de Resumo e Assinaturas UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO Orientador: Prof. Heitor Augustus Xavier Costa Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados e Algoritmos em Grafos para Web Bolsista: Rodrigo Pereira dos Santos Relatório Final apresentado à Universidade Federal de Lavras, como parte das exigências do PBIICT/FAPEMIG, referente ao período de março/2005 a fevereiro/2006. _______________________________ ______________________________ Assinatura do bolsista Assinatura do orientador LAVRAS/MG - MAIO/2006

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

  • Upload
    lambao

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

Page 1: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

1. Página de Resumo e Assinaturas

UNIVERSIDADE FEDERAL DE LAVRAS

DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO

Orientador: Prof. Heitor Augustus Xavier Costa

Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados e Algoritmos em Grafos para Web

Bolsista: Rodrigo Pereira dos Santos

Relatório Final apresentado à Universidade Federal de Lavras, como parte das exigências do PBIICT/FAPEMIG, referente ao período de março/2005 a fevereiro/2006.

_______________________________ ______________________________ Ass inatura do bolsista Ass inatura do orientador

LAVRAS/MG - MAIO/2006

LAVRAS/MG - NOVEMBRO/2004

Page 2: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Rodrigo Pereira dos Santos

Heitor Augustus Xavier Costa

Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados e Algoritmos em Grafos para Web

Page 3: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Resumo

Este trabalho tem o objetivo de apresentar TBC-AED/WEB, TBC-GRAFOS e TBC-GRAFOS/WEB, produtos de software que contém vários temas relacionados aos conteúdos lecionados aos iniciantes em Computação, procurando deixar uma contribuição à literatura e aos docentes da área. Com isso, esses ambientes educacionais buscam contribuir para a melhoria da qualidade de ensino de programação, algoritmos, estruturas de dados e teoria dos grafos nos cursos de graduação em Computação e Informática.

Palavras-chaves: algoritmos e estruturas de dados, teoria dos grafos, programação, metodologias de ensino de computação, informática na educação.

Abstract

The paper objective is to present TBC-AED/WEB, TBC-GRAFOS and TBC-GRAFOS/WEB, software that contains some themes related to the taught contents to new students in Computation, trying to contribute to literature and to teachers of the field. So, this educational environment tries to help the improvement of the teaching quality of programming, algorithms, data structures and theory of graphs in the graduation courses in Computing.

Key-words: algorithms and data structures, theory of graphs, programming, methodologies of computing teaching and computing in education.

Page 4: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Sumár io

Capítulo 1 – Introdução..............................................................................................1 1.1 Motivação...........................................................................................................3 1.2 Objetivos.............................................................................................................5 1.3 Metodologia de Desenvolvimento .......................................................................6 1.4 Estrutura do Trabalho..........................................................................................9

Capítulo 2 – Metodologias de Ensino de Computação ............................................11 2.1 Considerações Iniciais.......................................................................................11 2.2 Análise de Problemas e Soluções no Ensino de Computação .............................11 2.3 Programação e Algoritmos: a Base da Computação...........................................18 2.4 Projetos de Software Relacionados ao Ensino de Algoritmos, Estruturas de Dados e Algoritmos em Grafos na Computação ................................................................. 22

2.4.1 Projetos Relacionados às Estruturas de Dados.........................................23 2.4.2 Projetos Relacionados a Algoritmos em Grafos.......................................25

2.5 Considerações Finais.........................................................................................27

Capítulo 3 – A História de Java: Tecnologias e Evolução .......................................29 3.1 Considerações Iniciais.......................................................................................29 3.2 O Nascimento ................................................................................................... 30 3.3 A Evolução .......................................................................................................33 3.4 Algumas Tecnologias........................................................................................34 3.5 Algumas Características....................................................................................38 3.6 Considerações Finais.........................................................................................40

Capítulo 4 – TBC-AED/WEB, TBC-GRAFOS e TBC-GRAFOS/WEB: Desenvolvimento dos Produtos de Software e seus Reflexos ................................... 42

4.1 Considerações Iniciais.......................................................................................42 4.2 Análise metodológica do desenvolvimento........................................................42

4.2.1 TBC-AED/WEB.....................................................................................42 4.2.2 TBC-GRAFOS e TBC-GRAFOS/WEB..................................................44

4.3 Organização e estrutura.....................................................................................45 4.3.1 TBC-AED/WEB.....................................................................................45 4.3.2 TBC-GRAFOS e TBC-GRAFOS/WEB..................................................49

4.4 Temas Abordados pelos Produtos de Software: Conceitos e Aplicação..............55 4.4.1 TBC-AED/WEB.....................................................................................55

4.4.1.1 Busca em Vetor .............................................................................56 4.4.1.2 Métodos de Ordenação................................................................... 62

4.4.1.2.1 Select Sort .............................................................................63 4.4.1.2.2 Insert Sort..............................................................................63 4.4.1.2.3 Boubble Sort..........................................................................65 4.4.1.2.4 Merge Sort.............................................................................65 4.4.1.2.5 Quick Sort .............................................................................66

4.4.1.3 Estruturas de Dados de Alocação Estática e Dinâmica de Memória 68 4.4.1.3.1 Listas.....................................................................................68 4.4.1.3.2 Filas.......................................................................................71

Page 5: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

4.4.1.3.3 Pilhas.....................................................................................72 4.4.1.4 Árvores..........................................................................................75

4.4.2 TBC-GRAFOS e TBC-GRAFOS/WEB..................................................77 4.4.2.1 Buscas em Grafos..........................................................................77

4.4.2.1.1 Percurso em Profundidade.....................................................78 4.4.2.1.2 Percurso em Largura..............................................................84

4.4.2.2 Árvore Geradora Mínima...............................................................85 4.4.2.2.1 Algoritmo de Kruskal ............................................................88 4.4.2.2.2 Algoritmo de Prim................................................................. 88

4.4.2.3 Caminho Mínimo...........................................................................89 4.4.2.3.1 Algoritmo de Dijkstra............................................................92 4.4.2.3.2 Algoritmo de Bellman-Ford...................................................94

4.5 Considerações Finais.........................................................................................94

Capítulo 5– Considerações Finais ............................................................................96 5.1 Conclusões........................................................................................................96 5.2 Contribuições....................................................................................................97 5.3 Trabalhos Futuros.............................................................................................99

Referências Bibliográficas......................................................................................100

Anexo A – Artigos Publicados................................................................................104

Page 6: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Lista de Figuras

Figura 1 – Página principal do TBC-AED/WEB.....................................................46

Figura 2 – Tela Busca Binária..................................................................................47

Figura 3 – Tela L ista Duplamente Encadeada.........................................................47

Figura 4 – Tela Árvore Binária de Busca ................................................................48

Figura 5 – Tela Quick Sort ........................................................................................49

Figura 6 – Tela principal do TBC-GRAFOS...........................................................50

Figura 7 – Janela de mensagem exibida contendo uma introdução a respei to do tópico relacionado .............................................................................................51

Figura 8 – Tela Percurso em Profundidade do TBC-GRAFOS..............................51

Figura 9 – Tela Percurso em Profundidade, com janela de mensagem interna usada para o efeito de passo-a-passo................................................................52

Figura 10 – O mouse sobre a região de exibição gráfica exibe uma breve mensagem sobre ela.............................................................................................................52

Figura 11 – Barra de menu do TBC-GRAFOS.......................................................53

Figura 12 – I tem explicativo do tema Buscas em Grafos ........................................53

Figura 13 – I tem de representação gráfica do tópico Algor itmo de Kruskal, um dos algoritmos de Árvore Geradora Mínima disponíveis ......................................54

Figura 14 - Página principal do TBC-GRAFOS/WEB ...........................................54

Figura 15 – Tela Algoritmo de Bellman-Ford .........................................................55

Figura 16 – Janela de mensagem exibida contendo uma introdução a respeito do tópico relacionado .............................................................................................57

Figura 17 – Janela de mensagem exibida ao clicar no botão Informações.............58

Figura 18 – Ao clicar no botão Introdução, a área super ior é preenchida com uma breve introdução e uma janela de mensagem é exibida................................... 59

Figura 19 – Uma janela de mensagem é exibida para que o usuár io entre com o número de elementos.........................................................................................59

Figura 20 – Uma janela de mensagem é exibida para que o usuár io possa entrar com o elemento a ser procurado .......................................................................60

Figura 21 – Janela de mensagem exibida quando do advento do processo gráfico 60

Figura 22 – O botão Passos do Processo é habilitado para iniciar o processo gráfico...........................................................................................................................61

Figura 23 – Cada um dos sub-vetores é exibido a cada clique sobre o botão Passos do Processo........................................................................................................61

Figura 24 – Janela de mensagem contendo o resultado da pesquisa ......................62

Page 7: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Figura 25 – Tópico Select Sort do tema Métodos de Ordenação............................64

Figura 26 – Tópico Insert Sort do tema Métodos de Ordenação............................64

Figura 27 – Tópico Boubble Sort do tema Métodos de Ordenação........................65

Figura 28 – Tópico Merge Sort do tema Métodos de Ordenação...........................66

Figura 29 – Tópico Quick Sort do tema Métodos de Ordenação............................67

Figura 30 – Tópico Lista L inear do tema Estruturas Estáticas..............................69

Figura 31 – Tópico Lista Simplesmente Encadeada do tema Estruturas Dinâmicas...........................................................................................................................70

Figura 32 – Tópico Lista Duplamente Encadeada do tema Estr uturas Dinâmicas71

Figura 33 – Tópico Fila do tema Estruturas Estáticas............................................72

Figura 34 – Tópico Fila do tema Estruturas Dinâmicas..........................................73

Figura 35 – Tópico Pilha do tema Estruturas Estáticas..........................................74

Figura 36 – Tópico Pilha do tema Estruturas Dinâmicas .......................................75

Figura 37 – Tópico Árvore Binária de Busca do tema Árvores ..............................77

Figura 38 – Janela de mensagem exibida ao clicar no botão Informações.............79

Figura 39 – Ao clicar no botão Introdução, a área super ior é preenchida com uma breve introdução e uma janela de mensagem é exibida................................... 80

Figura 40 – Uma janela de mensagem é exibida para que o usuár io entenda o que deve fazer para prosseguir no ambiente...........................................................80

Figura 41 – Ao clicar no botão Opções, o usuário visualiza quais ações deve fazer para montar seu grafo.......................................................................................81

Figura 42 – Montagem do grafo no painel cinza à direita.......................................82

Figura 43 – Ao clicar no botão Passos do Processo, uma janela de mensagem interna é exibida na par te infer ior à esquerda, para efeito de passo-a-passo. 82

Figura 44 – Ao clicar no botão Reiniciar, o usuário terá o mesmo grafo que desenhou antes de iniciar o algoritmo, podendo fazer alterações ...................83

Figura 45 – Ao clicar no botão Novo Grafo, o usuário continuará no ambiente, mas terá que desenhar um novo grafo para iniciar o algor itmo.............................84

Figura 46 - Janela de mensagem exibida contendo uma introdução a respeito do tópico relacionado .............................................................................................84

Figura 47 – Tela Percurso em Largura do TBC-GRAFOS....................................86

Figura 48 – Tela Percurso em Largura do TBC-GRAFOS/WEB ..........................86

Figura 49 – Tela Algor itmo de K ruskal do TBC-GRAFOS....................................88

Figura 50 - Tela Algor itmo de K ruskal do TBC-GRAFOS/WEB ..........................89

Figura 51 - Tela Algor itmo de Prim do TBC-GRAFOS..........................................90

Figura 52 - Tela Algor itmo de Prim do TBC-GRAFOS/WEB................................90

Page 8: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Figura 53 - Tela Algor itmo de Dijkstra do TBC-GRAFOS....................................93

Figura 54 - Tela Algor itmo de Dijkstra do TBC-GRAFOS/WEB ..........................93

Figura 55 - Tela Algor itmo de Bellman-Ford do TBC-GRAFOS...........................94

Figura 56 - Tela Algor itmo de Bellman-Ford do TBC-GRAFOS/WEB.................95

Page 9: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

1

Capítulo 1 – Introdu ção

A crescente quantidade de informação e a tecnologia gerada atualmente tornam

cada vez mais necessário a presença de profissionais de caráter persuasivo e inovador,

que sejam capazes de unir inteligência e dinamismo na busca por melhores soluções dos

problemas apresentados pelo mundo real. Isso encontra seu principal pilar nas

metodologias de ensino aplicadas durante o estágio universitário, principalmente na área

de Computação e Informática.

Com o intuito de produzir melhores resultados no processo de aprendizagem

nessas áreas, faz-se constante a necessidade de atualização das didáticas de ensino de

forma geral, procurando transformar processos abstratos em concretos, através de

produtos de software que possibil item melhor compreensão dos tópicos abordados e

maior interação entre aluno – objeto de trabalho. Isso encontra sua maior barreira nos

processos iniciais dos cursos relacionados, quando do contato com algoritmos,

programação, raciocínio lógico e estudo de estruturas de dados e grafos.

Segundo [ASCENCIO apud CAMPOS et al 2003], algoritmo é a descrição de

uma seqüência de passos que deve ser seguida para a realização de uma tarefa e, para

[FARRER apud CAMPOS et al 2003], ação é um acontecimento que, a partir de um

estado inicial, após um período de tempo finito, produz um estado final previsível e bem

definido. Assim, um algoritmo é a descrição de um conjunto de comandos que,

obedecidos, resultam em uma sucessão finita de ações.

Atualmente, o ensino de algoritmos busca nas Ciências Exatas seu pilar de

sustentação, pois disciplinas nessa área despertam o raciocínio matemático-lógico para

resolução de problemas. Mas, isso deve ser mais uma das ferramentas para o estudante e

não a sua única fonte, pois a sua formação futura será muito ampla.

Um dos grandes ramos iniciais de estudo do graduando da área se encontra na

teoria de grafos que, segundo [SANTOS et al 1995], tem origem relativamente recente

(século XVIII) e apresenta extensiva utilização em matemática aplicada, pois

demonstrou ser uma poderosa ferramenta para a modelagem de diversas situações reais

Page 10: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

2

em física, química, biologia, engenharia elétrica e pesquisa operacional. Entretanto, seu

estudo e os algoritmos relacionados muitas vezes são de difícil imaginação, o que gera

uma antítese. Portanto, torna-se um grande desafio para professores e coordenadores de

cursos da área promover mudanças que possam impulsionar as capacidades intelectuais

para que estudantes possam contribuir mais e mais para a evolução global.

Os problemas apresentados na compreensão de tais conceitos, conforme [BUZIN

2001], encontra sua raiz ainda durante a formação básica, o que caracteriza uma

importante linha de pesquisa na metodologia educacional: o iniciante do curso superior

traz uma bagagem cultural que não serve apenas para o apropriado desenvolvimento de

um estudo acadêmico, mas pode atrapalhar o desenvolvimento do estudo. Ele vem de

uma experiência de estudante de disciplinas desenvolvidas em torno do paradigma de

apresentação de resposta e soluções, usualmente da velha e surrada didática diretiva, ao

invés de focar no processo de questionamento. Com certeza, sem uma radical mudança

cultural de atitude e comportamento, este indivíduo dificilmente poderá ser um

profissional de Computação adequado, visto que é preciso desenvolver a capacidade de

buscar a resposta através de novas perguntas que levem à resposta da questão original. A

formação do profissional em Computação deve incitar o desenvolvimento de raciocínio

crítico, a solução de problemas, a aplicação de métodos de pesquisa e o desenvolvimento

profissional contínuo.

Uma outra linha de pesquisa realizada é aquela direcionada para a tendência de

utilizar ferramentas computacionais como ambientes de estudo, pois segundo [SOARES

et al apud SOARES et al 2004], a partir de observações dentro de disciplinas de

graduação, percebe-se também um melhor resultado no aprendizado por meio de

atividades práticas de desenvolvimento de simuladores e ferramentas visuais didáticas de

representação de conceitos abstratos. Além disso, acompanhando esse desenvolvimento,

a linha acopla contribuições dos pesquisadores para novas estratégias de transmissão de

conhecimentos, promovendo a ampliação do acervo existente e a melhor organização de

currículos para o mercado de trabalho, e acesso facil itado de tais recursos inovadores

através de suporte via web.

Page 11: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

3

Dentro dessa esfera, percebe-se que cada ramo profissional deve ser embasado de

acordo com sua própria definição, através da idéia de meta-educação. É ao encontro a

isso que foi realizado um estudo denso de applets1 para disponibil izar via web produtos

de software educacionais. Dessa forma, este trabalho pretende apresentar o TBC-

AED/WEB – Treinamento Baseado em Computador para Algoritmos e Estruturas

de Dados via WEB (derivado do TBC-AED – [SANTOS e COSTA 2005a], [SANTOS

e COSTA 2005b], [SANTOS e COSTA 2005c]) –, e duas novas ferramentas

computacionais didáticas (produtos de software educacionais), o TBC-GRAFOS

(Treinamento Baseado em Computador para Algoritmos em Grafos) e TBC-

GRAFOS/WEB (Treinamento Baseado em Computador para Algoritmos em

Grafos via WEB), dentro da mesma linha de pesquisa seguida, que torne o ensino deste

conteúdo – básico para o estudo em Computação avançada que promove a resolução de

problemas de otimização – mais prático e abrangente. Desta forma, desperta o interesse

do aluno, o seu espírito de pesquisa e a busca de informações que possam torná-lo um

profissional crítico e de opinião sólida. Assim, seu rendimento ao longo do curso

aumenta, melhorando o seu desempenho em disciplinas mais específicas. Além disso, a

pesquisa propõe deixar uma contribuição a respeito dos problemas envolvidos no

processo educacional da área de Computação e Informática, listando algumas tentativas

de solução.

1.1 Motivação

É importante salientar alguns pontos especiais acerca do intuito da pesquisa,

visto que a aula de uma disciplina que relaciona programação com algoritmos e

estruturas de dados ou com algoritmos em grafos deve ser realizada em laboratórios. Isso

para que os alunos possam entender as abstrações apresentadas. Deve ser composta de

uma parte teórica, onde conceitos são transmitidos, e uma parte prática, onde vão

entender comandos e tópicos ministrados. Deve também haver questões-desafio, para

que os discentes sejam acostumados a usar de agilidade e criatividade na solução de

problemas ([JÚNIOR e RAPKIEWICZ 2004]).

1 Applets são programas Java que podem ser embutidos em documentos HTML. Quando um navegador carrega uma página da web que contém um applet, o applet é baixado para o navegador e começa a ser executado ([DEITEL e DEITEL 2003]).

Page 12: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

4

Nesse sentido, TBC-AED/WEB, TBC-GRAFOS e TBC-GRAFOS/WEB, os

quais enfatizam animação gráfica, são de extrema importância como facilitadores do

processo de aprendizagem, uma vez que a apresentação de conceitos abstratos se torna

mais viável e didática, melhorando a qualidade do material das aulas ([SOARES et al

2004]).

Normalmente, um aluno se interessa por aulas diferenciadas e isso não só prende

sua atenção, como também influenciam posi tivamente nas avaliações ([BUZIN 2001]).

Uma economia de tempo pode ser conseguida, direcionando para mais

explicações e resoluções de exercícios, uma vez que o material didático seria virtual,

evitando uma explanação cansativa através do quadro-negro ([SANTOS e COSTA

2005b]).

Um dos grandes pontos positivos é que o aluno teria acesso livre ao material

virtual para que pudesse estudar em casa. Além disso, ele possuirá um valioso projeto,

para consultas futuras, em caso de necessidade – a tendência em abstrair detalhes, com o

passar do tempo, sempre leva a dúvidas e estas a novas pesquisas em estruturas básicas

ora aprendidas ([GARCIA, REZENDE e CALHEIROS 1997]).

Além disso, a existência de material via web para estudos e pesquisas estimula

maior contribuição tecnológica para a sociedade, integração de diferentes ideais através

de contatos pela Internet, maior alcance ao público e divulgação das propostas de

melhorias de processos educacionais visando injetar e obter informações para ampliação

da literatura disponível.

A transição de educadores também seria facilitada, uma vez que existiria uma

base pronta para ser apreciada, mantendo a qualidade de ensino e aprendizagem do

conteúdo.

Um bom ensino de teoria dos grafos é importante, uma vez que suas aplicações

são variadas, como na área de otimização de processos, com resolução de problemas via

grafos, visando economia de tempo e melhor relação custo-benefício.

Page 13: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

5

Assim sendo, o uso do TBC-AED/WEB, TBC-GRAFOS e TBC-

GRAFOS/WEB é um subsídio valioso para a formação de alunos, ajudando-os a

concluírem o seu curso de Computação, pois são disciplinas que estão no início e são

pré-requisitos necessários às disciplinas mais específicas de períodos posteriores.

Quando feita uma boa base, o rendimento e o desempenho aumentam, proporcionando

melhores resultados, melhores currículos e, conseqüentemente, melhores profissionais

para o mercado.

1.2 Objetivos

Os objetivos para a realização deste trabalho de pesquisa foram:

• aplicar o produto de software educacional desenvolvido na área de algoritmos e

estruturas de dados (projeto PBIICT/FAPEMIG 2004 – [SANTOS e COSTA

2005c]) às turmas de 2005 da disciplina COM155 – Algoritmos e Estruturas de

Dados II, com acompanhamento do orientador (ministrante da disciplina) e do

orientado, para estabilizar o produto de software;

• propiciar ao orientado continuar estudando linguagem de programação Java, que é

amplamente utilizada no mercado e na pesquisa para o desenvolvimento de produtos

de software. Além disso, pesquisar recursos contidos nesta linguagem de

programação para o desenvolvimento de um ambiente web para disponibil izar o

produto desenvolvido e, assim sendo, divulgar a pesquisa;

• ampliar conhecimentos do orientado na área de programação e algoritmos em grafos,

nos seguintes tópicos: � Terminologias, convenções e implementações; � Percurso em Largura e Percurso em Profundidade; � Árvore Geradora Mínima; � Caminho Mínimo; � Fluxo Máximo.

• proporcionar ao orientado maior contato com áreas específicas de seu curso, como

Linguagens de Programação, Informática na Educação, Otimização e Engenharia de

Software;

Page 14: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

6

• continuar as contribuições à literatura a respeito de métodos de ensino de

programação mais didáticos para os ingressos no curso de graduação, listando

algumas soluções discutidas na literatura;

• desenvolver um produto de software – ambiente gráfico para estudo da disciplina de

algoritmos em grafos tornando as aulas mais dinâmicas e didáticas. Isso será

disponibil izado aos alunos e demais interessados, como uma ferramenta poderosa

aos programadores iniciantes e intermediários;

• facil itar e melhorar o acesso de alunos de outros cursos que não os fundamentados

em Computação e Informática às disciplinas de programação e algoritmos em grafos,

embasando o processo de transição curricular, visto que muitos dos cursos

apresentam disciplinas eletivas2 de programação, algoritmos, estruturas de dados e

algoritmos em grafos;

• estimular mudanças na metodologia de ensino de cursos de Computação, com o

desafio de não manter na vanguarda uma área de constante atualização;

• formar um suporte para o orientado poder desenvolver projetos futuros de forma bem

consistente e engajada – uma vez que a programação e os algoritmos formam a base

de grande parte dos estudos de Computação;

• manter a estabil idade de ensino de disciplinas da área, mesmo quando da alteração

no quadro docente.

1.3 Metodologia de Desenvolvimento

Foi realizado um estudo de recursos da linguagem de programação Java para

disponibil izar o ambiente sobre algoritmos e estruturas de dados, desenvolvido durante o

projeto PBIICT/FAPEMIG 2004 ([SANTOS e COSTA 2005c]), via web. Isso foi feito

principalmente com a leitura do livro [DEITEL e DEITEL 2003] em capítulos mais

relacionados à pesquisa.

Paralelamente, foi feito um acompanhamento da disciplina Algoritmos e

Estruturas de Dados II (AED II – disciplina oferecida pelo Departamento de Ciência da

Computação da Universidade Federal de Lavras – DCC/UFLA) com a utilização do

2 Disciplinas eletivas têm a finalidade de complementar a formação do estudante, na área de conhecimento do curso.

Page 15: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

7

produto de software educacional desenvolvido – TBC-AED (Treinamento Baseado em

Computador para Algoritmos e Estruturas de Dados). Sua aplicação foi realizada em

regime parcial, com apresentação geral da ferramenta e disponibil ização aos alunos, para

que estes a consultassem em casa e nos laboratórios, ao longo da disciplina. O uso

parcial se deveu às condições dos laboratórios de Computação, em fase de transição de

recursos tecnológicos, impossibil itando o uso contínuo na disciplina. Mesmo com esse

problema resolvido, outro obstáculo enfrentado foi o grande número de alunos,

decorrente do alto índice de reprovações, sendo necessária a divisão da turma para aulas

práticas em laboratório. Dessa forma, estão sendo estudadas formas para sanar esse

problema.

Foi realizado um levantamento bibliográfico, na Internet e em bibliotecas, de

textos, artigos e informações a respeito dos tópicos relacionados à programação,

algoritmos, estruturas de dados e algoritmos em grafos, em especial capítulos específicos

de [WIRTH 1989] e [CORMEN, LEISERSON e RIVEST 2002]. Também foram

verificadas novas metodologias de ensino na área de Computação.

Foram identificadas as dificuldades de alunos e ex-alunos das disciplinas, para

que pudessem contribuir para a qualidade do projeto. Isso foi feito através de reuniões

entre o orientador (professor das disciplinas diretamente envolvidas há três semestres

consecutivos) e o orientado (ex-aluno das disciplinas que atingiu ótimas médias).

Em seguida, foi analisada a forma de ministrar as disciplinas de COM155 –

Algoritmos e Estruturas de Dados II e COM159 – Técnicas de Programação, oferecidas

pelo Departamento de Ciência da Computação da Universidade Federal de Lavras

(DCC/UFLA). Estas disciplinas são fundamentais para a formação de programadores e

bons estudantes para o curso. Além disso, outras disciplinas que utili zam a programação

e algoritmos em estruturas de dados e em grafos foram analisadas. Por isso, com o

término deste trabalho, foram preparados seminários para discussão sobre o tema e o

engrandecimento de pesquisas futuras.

A preocupação de construir códigos-fonte manuteníveis do produto de software

educacional foi constante. O paradigma de programação utilizado foi orientação a

Page 16: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

8

objetos e a linguagem de programação foi Java devido a alguns aspectos intrínsecos

considerados importantes como a portabilidade.

Foram disponibil izados no site do orientado

(www.comp.ufla.br/~rpsantos/ic/2005.html) e do orientador

(http://www.dcc.ufla.br/~heitor/Projetos/TBC_AED_GRAFOS_WEB/TBC_AED_

GRAFOS_WEB.html) links que contém atualmente: resumos dos projetos

desenvolvidos, as monografias finais do PBIICT/FAPEMIG-2004 e PBIICT/FAPEMIG-

2005 (o presente trabalho), os produtos de software educacionais e ambientes applets-

Java para web desenvolvidos. Os sites são mantidos atualizados.

As implementações propostas pelo projeto foram concluídas. Foram

desenvolvidos applets-Java, com os temas Busca em Vetor (busca binária), Métodos de

Ordenação (select sort, insert sort, bubble sort, merge sort e quick sort), Tipos

Abstratos de Dados (TAD) lista, pilha e fi la – implementados utilizando alocação

estática e dinâmica e Árvores (árvore binária), todos referentes ao TBC-AED

(desenvolvido durante o projeto PBIICT/FAPEMIG 2004 – [SANTOS e COSTA

2005c]). Também foram desenvolvidos os temas Buscas em Grafos (percurso em

largura e percurso em profundidade), Árvore Geradora Mínima (algoritmo de

K ruskal e algoritmo de Prim) e Caminho Mínimo (algoritmo de Dij kstra e algoritmo

de Bellman-Ford). Além disso, foi desenvolvido o TBC-GRAFOS (versão para

download, que contém os tópicos acima, relacionados a grafos). Para evitar quaisquer

problemas, uma vez que algoritmos em grafos são de caráter básico para programação e

importantes para o futuro dos graduandos, optou-se por iniciar a etapa laboratorial após a

conclusão do produto de software educacional. Isso porque se trata de uma experiência

bastante interessante e inovadora, mas que precisa ser realizada com orientação inicial

bem elaborada e estruturada. Logo, pensou-se em cuidar para que quaisquer pontos

negativos imprevisíveis pudessem alterar o resultado final. Assim, a avaliação da

eficiência, da validade, da qualidade e da didática esperadas pelo projeto poderão ser

feitas de maneira formal e engajada na fase final do projeto. Além disso, ambos,

orientado e orientador, poderão discutir e montar um programa de ensino melhor e mais

completo para a disciplina a partir de 2006.

Page 17: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

9

Aconteceram reuniões entre orientado e orientador para discussão a respeito dos

produtos de software educacional, coleta constante de artigos e periódicos na área de

programação, linguagem de programação Java e metodologias de ensino de

Computação. Assim, pelo fato do orientador lecionar as disciplinas envolvidas, a

pesquisa se tornou menos propícia a erros. Isso torna transparente e mais astuta a

posição tomada por ambos de conduzir as disciplinas com recursos gerados, a partir do

segundo período letivo de 2005. No entanto, se acontecer alguma eventualidade durante

o decorrer do curso, o orientado será acionado e estará apto para verif icar o que ocorreu

juntamente com o orientador.

Foram elaborados resumos e artigos científicos para submissão a congressos e a

periódicos científicos. Foram apresentados trabalhos em três congressos nacionais, em

sessões técnicas orais (Anexo A): 1º) XVII Congresso de Iniciação Científica, XII

Seminário de Avaliação do PIBIC/CNPq-UFLA, VII Seminário de Avaliação do

PBIICT/FAPEMIG-UFLA (2005); 2º) IV WEIMIG – Workshop em Educação em

Computação e Informática do Estado de Minas Gerais (2005); 3º) I COMPSULMT - I

Congresso de Computação do Sul do Mato Grosso (2005). Além disso, foi publicado um

artigo completo em uma revista indexada, INFOCOMP – Journal Computer Science.

Um seminário direcionado à primeira turma a utilizar o TBC-GRAFOS (1º

semestre de 2006) será realizado, para apresentação dos objetivos do produto de

software e avaliação de perspectivas dos alunos para o futuro. Uma apresentação final

dos resultados e da metodologia de ensino para o engrandecimento da pesquisa, do órgão

que possibil itou esta realidade e da equipe técnica (orientado e orientador) será

realizada. Esta terá como público alvo alunos, professores e coordenadores de curso.

Dessa forma, espera-se que os frutos desta pesquisa contribuam para a melhoria de

profissionais das áreas de Informática e Computação.

1.4 Estrutura do Trabalho

O Capítulo 2 discorre sobre a análise de metodologias de ensino em

Computação, alguns problemas enfrentados e possíveis soluções.

Page 18: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

10

O capítulo 3 apresenta a linguagem de programação Java, retratando seu

histórico e suas tecnologias.

O capítulo 4 apresenta os produtos de software desenvolvidos, TBC-AED/WEB,

TBC-GRAFOS e TBC-GRAFOS/WEB, com a descrição do processo de elaboração,

ferramentas utilizadas, funcionalidades e conceitos envolvidos.

Por fim, o Capítulo 5 conclui o trabalho fazendo algumas considerações finais

sobre a pesquisa realizada.

Page 19: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

11

Capítulo 2 – Metodolog ias de Ensino de Computação

2.1 Considerações Iniciais

Neste capítulo, são apresentados alguns dos pontos críticos relacionados às

metodologias de ensino de Computação, enfatizando a forma de resolução de problemas

e suas implicações. Na seção 2, é apresentada uma breve análise de problemas e

desafios enfrentados no ensino desta ciência, considerando algumas soluções. Na seção

3, são retratados os problemas de estudo de algoritmos e programação em decorrência

da forma de ensino. Na seção 4, são listados alguns produtos de software util izados para

o ensino desses tópicos. Por fim, são apresentadas as considerações finais do capítulo.

2.2 Análise de Problemas e Soluções no Ensino de Computação

Dentro da esfera de discussão dos métodos educacionais como ferramentas para

a formação de profissionais de qualidade para o mercado, o presente trabalho se propõe

a dar sua contribuição. Entretanto, ele analisará um tema mais abrangente e complexo:

as áreas de Computação e Informática, que apresentam inovações constantes e grande

transformação de preceitos existentes. Sabe-se que é complicado promover mudanças

na educação básica e, ao se tratar de cursos de graduação baseados na produção de

tecnologia, o problema é ainda maior. O que se pode perceber é que esses cursos

exercem grande atração sobre os futuros ingressos em uma faculdade, o que se mostra

pela concorrência elevada em processos seletivos. No entanto, vencido o obstáculo de

entrada, vêm o início da fase universitária e um dos maiores dilemas: o contato com

disciplinas básicas que vão preparar o ingresso para atuar em áreas específicas. Esse

contato, sobretudo em cursos de Computação, pode gerar tanto afinidade quanto

repulsa, o que acontece com freqüência expressiva, conforme [RODRIGUES 2002;

SCHULTZ 2003; CHAVES DE CASTRO et al 2003; DELGADO et al 2004 apud

JÚNIOR e RAPKIEWICZ 2004].

Os problemas apresentados na compreensão de conceitos abstratos de

programação, conforme [BUZIN 2001], encontra sua raiz ainda durante a formação

básica, o que caracteriza uma importante linha de pesquisa na metodologia educacional.

Page 20: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

12

Deve-se incitar o raciocínio lógico e agilidade de pensamento desde cedo, para que o

jovem possa desenvolver suas habil idades cognitivas e atingir seus objetivos mais

facilmente no futuro.

Dessa forma, a falta de compreensão do raciocínio lógico pode ser a principal

razão pelo alto índice de reprovação nas disciplinas de Algoritmos e Programação e, em

alguns casos, pela desistência de um curso. Em parte, isso é decorrência da dificuldade

encontrada pelos professores para acompanharem efetivamente as atividades

laboratoriais de programação, dado o grande número de estudantes geralmente sob sua

supervisão [TOBAR et al 2001]. Dentro desse paradigma, pode ser destacada também a

forma como os alunos estudam para a disciplina, geralmente memorizando, e a falta de

pré-requisitos em conteúdos relacionados ([JÚNIOR e RAPKIEWICZ 2004]).

[RODRIGUES 2002] relata outros problemas associados a este processo:

• a falta de motivação do aluno criada pelo despreparo, citado anteriormente, e o

desânimo quando há, principalmente, a crença de que a disciplina constitui um

obstáculo extremamente difícil de ser superado;

• o processo tradicional de avaliação pode deixar o aluno tenso prejudicando o

aprendizado;

• o relacionamento entre professor e aluno pode ser um problema quando o primeiro

preocupa-se em mostrar o que sabe desconsiderando um ambiente de aprendizagem

descontraído e colaborativo;

• a didática ou a falta de metodologia de ensino dificulta o aprendizado dos novos e

diversos conceitos. Inclui-se aqui a grave falta de comunicação entre os professores

das várias disciplinas que permitiria identificar conteúdos afins ou superposição de

tópicos tornando o trabalho realizado mais integrado auxiliando o processo de

ensino e aprendizagem ([GIRAFFA, MARCZAK e ALMEIDA 2003; PIMENTEL,

FRANÇA e OMAR 2003]).

[RODRIGUES 2002] ainda afirma que o professor deve ser capaz de fazer o

aluno compreender a abstração envolvida com toda a simbologia utilizada. Para isto,

deve utilizar sua criatividade e tentar resolver cada problema baseando-se em situações

do cotidiano. Assim, o aluno começa a ter raciocínio lógico e ordem de pensamento.

Page 21: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

13

Segundo [SCHULTZ apud MENEZES e NOBRE 2002], algumas das

dificuldades vivenciadas pelo professor no processo são: i) reconhecer as habil idades

inatas de seus alunos; ii) apresentar técnicas para soluções de problemas; iii ) trabalhar a

capacidade de abstração do aluno, tanto na busca das possíveis soluções como na

escolha da estrutura de dados a ser utili zada; e iv) promover a cooperação e a

colaboração entre os alunos.

No entanto, para [BUZIN 2001], o iniciante do curso superior vem de uma

experiência de estudante de disciplinas desenvolvidas em torno do paradigma de

apresentação de resposta e soluções, usualmente da velha e surrada didática diretiva, ao

invés de focar no processo de questionamento. Assim, mais uma das vertentes do

problema educacional na área de Computação encontra-se na sua formação básica.

Mas, considerando o campo universitário, o nível de maturidade do aluno é

importante neste ponto para que o professor possa adequar o processo pedagógico no

sentido de acompanhar o amadurecimento do aluno, permitindo aplicar técnicas de

ensino e aprendizagem ([JÚNIOR e RAPKIEWICZ 2004]).

O acompanhamento contínuo de cada aprendiz e o tratamento personalizado a

cada estudante, principalmente em turma com um número elevado de alunos, são

possíveis se forem apoiados por sistemas inteligentes, ou seja, auxil iados por

computador ([PIMENTEL, FRANÇA e OMAR 2003]). Logo, a idéia de usar produtos

de software para o ensino de programação é de grande valia e ainda poderá transformar

o ensino de disciplinas avançadas em algo mais primoroso e tecnológico.

A partir de todo esse problemático desafio, mudanças passaram a ser

consideradas por graduados, mestres e doutores que trabalham com o ensino de

algoritmos e programação. A análise da literatura feita por [JÚNIOR e RAPKIEWICZ

2004], independente de ser nacional ou internacional, mostrou que há três vertentes na

busca de soluções para os problemas apontados:

• Ferramentas, que incluem trabalhos que apresentam ferramentas computacionais

visando facil itar o processo de ensino e aprendizagem;

Page 22: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

14

• Estratégias, que incluem trabalhos que discutem estratégias de ensino e/ou de

avaliação de competências;

• Ferramentas e Estratégias, que são os trabalhos que discutem alguma estratégia

suportada por ferramentas computacionais.

Juntamente com o uso de uma ferramenta computacional, deve-se tentar ajustar

algumas propostas pedagógicas de trabalho disciplinar, cada vez mais foco de pesquisas

na área de Computação, principalmente no âmbito internacional ([JÚNIOR e

RAPKIEWICZ 2004]). Alguns trabalhos nacionais relacionados aos problemas de

ensino de algoritmos e programação estão listados a seguir:

• [FARIA e COELLO 2005], percebendo os problemas e procurando solucioná-los,

ou pelo menos amenizá-los, propuseram o uso de uma abordagem de aprendizagem

baseada na colaboração. Esta abordagem colaborativa parte do princípio de que o

conflito sócio-cognitivo entre os aprendizes pode melhorar o seu aprendizado. Para

suportar o aprendizado colaborativo, foi desenvolvido um avaliador de programas

em C, chamado Verificador de Diferenças Significativas Entre Programas – VDSP.

O VDSP avalia os programas dos alunos, pontuando-os. A pontuação é utilizada

para montar grupos de alunos que deverão refazer o programa, trocando pontos de

vista e considerações. O VDSP foi experimentado com alunos do curso de Sistemas

de Informação da PUC Minas Arcos, especificamente, alunos da disciplina

Algoritmos e Estruturas de Dados, com resultados positivos em relação à formação

de grupos de trabalho homogêneos e heterogêneos sob mediação do professor em

detrimento de um trabalho individual;

• [RAABE e SILVA 2005] notaram que o aprendizado de algoritmos é considerado

desafiador pelos estudantes de cursos tecnológicos. Os principais motivos para este

fato são: o alto nível de abstração do conteúdo e a dificuldade dos docentes em

detectar e atender as dificuldades de aprendizagem dos alunos. Dessa forma,

propuseram um ambiente que auxil ia no atendimento das dificuldades de

aprendizagem da disciplina de Algoritmos utilizando o paradigma de Assistentes

Inteligentes de Ensino. Estes assistentes auxil iam o professor em sua tarefa de

monitorar, analisar e assistir os alunos. Os resultados da utilização do ambiente

apontam para a viabil ização da tarefa de acompanhamento individualizado dos

Page 23: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

15

alunos e uma maior eficiência na identificação e no atendimento às dificuldades de

aprendizagem;

• [BORGES e FILHO 2005] afirmaram que grupos de estudo têm surgido como uma

alternativa para complementar os conteúdos vistos em sala de aula e

desenvolver/aprimorar habil idades. Neste contexto, apresentaram a importância dos

grupos de estudo na formação dos futuros profissionais da área de computação.

Relataram a experiência com o grupo de estudos da linguagem Java da Universidade

Luterana do Brasil . Ao contrário do que se possa imaginar, a diferença de nível entre

os alunos não constituiu obstáculos para o andamento dos trabalhos. Observou-se

uma forte interação entre os componentes do grupo e o prazer em dividir o

conhecimento adquirido. Relações se estabeleceram a partir da experiência de

pesquisar, aprender e resolver problemas juntos;

• [FARIA, VILELA e COELLO 2005] concluíram, após diversos estudos sobre

Ambientes de Aprendizado Colaborativo Suportado por Computador, que eles

podem trazer melhorias ao processo de aprendizado e contribuir para torná-lo mais

prazeroso e socializador. Então, desenvolveram um software verificador de

diferenças significativas entre programas e o utilizaram para a montagem de grupos

para o aprendizado colaborativo de programação de computadores. Chegaram à

conclusão de que o aprendizado colaborativo é viável e eficaz nesse contexto, mas

difícil de implantar sem a presença de um mediador. Logo, estudaram o Learn in

Group, um sistema baseado na web para o suporte ao aprendizado colaborativo de

programação. O sistema contará com dois agentes mediadores, um para a

constituição de grupos de trabalho colaborativo e outro para acompanhar e estimular

a participação dos membros dos grupos;

• [JÚNIOR et al 2005] citaram que o Grupo de Trabalho de Licenciatura em

Computação (GT-3) da Sociedade Brasileira de Computação (SBC) estabeleceu

entre as metas para 2004-2005 desenvolver experiências relativas ao ensino de

programação no nível médio. Isso visando melhorar o comportamento dos futuros

ingressos em cursos de Computação e Informática e tentando sanar os problemas

relacionados ao pensamento algorítmico mais cedo. A partir dessa idéia, realizaram

tal proposta pela Universidade Estadual Norte Fluminense em uma escola pública de

Page 24: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

16

Cardoso Moreira – RJ, através de uma oficina que permitiu identificar pontos de

dificuldade no processo e a necessidade de trabalhar mais a informática de modo

interdisciplinar. Apesar da elevada evasão, o resultado obtido na avaliação dos

concluintes da oficina permite projetar as expectativas da inclusão do tema

algoritmos e programação na matriz curricular. A oficina permitiu comprovar que a

idéia do GT-3 é factível, ou seja, que alunos do ensino médio são capazes de

desenvolver tal conteúdo sem necessariamente estarem inseridos em um curso

técnico, o que pode estimular o professor por aproveitar a nova competência do

aluno para promover o aprofundamento de conteúdos de sua disciplina e,

conseqüentemente, a interdisciplinaridade;

• [YAMAMOTO et al 2005] discutiram a experiência do uso de projetos integrados

para promover a interdisciplinaridade no curso de Ciência da Computação. A

integração tanto ocorre entre disciplinas de um mesmo período quanto entre

disciplinas de diferentes semestres. Esta última modalidade é altamente favorável

entre as disciplinas que formam os pacotes de disciplinas optativas, ofertadas a

partir do sexto semestre. Cada projeto visa transpor as barreiras da fragmentação do

conhecimento (não se trata de uma colagem fragmentada de saberes), o aluno é

posto diante de problemas que exigem a aplicação dos conhecimentos de uma

disciplina em outra, para posteriormente utili zá-los nos problemas. Esse processo

visa estabelecer o valor das competências e habilidades em converter o

conhecimento específico da área de formação para outras áreas de estudo. Os

resultados mais expressivos se refletiram no comportamento dos alunos: criou-se

uma cultura do ensino-aprendizado pelo próprio esforço, de que o processo de

aprendizado deve ser, em grande parte, construído pelo próprio aluno. Para os

docentes, ficou claro que devem estar aptos a aceitarem novos papéis e ficar atento

ao processo dinâmico que é o ensino da Ciência da Computação. Os projetos

iniciaram uma série de discussões sobre a fragmentação das disciplinas envolvidas

nos projetos, exibiram inúmeras deficiências de disciplinas dos períodos anteriores

ao quarto período e provocaram o questionamento dos conteúdos programáticos de

diversas disciplinas e suas formas de abordagens. Finalmente, tais projetos foram

relevantes nas discussões sobre as novas propostas para uma total reestruturação

Page 25: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

17

curricular do Bacharelado em Ciência da Computação, visando melhorar a

metodologia de ensino;

• [GIRAFFA, MARCZAK e PRIKLADNICKI 2005] afirmaram que os programas

educacionais, conforme a metodologia utilizada pelo professor, podem ser

explorados de diferentes formas. Neste sentido, estes ambientes requerem um

conjunto de funções para atender os aspectos pedagógicos, identificados pelos

professores especialistas. Como esta tarefa não é de fácil execução, dado o perfil

diferenciado da equipe interdisciplinar, faz-se necessário o uso de uma metodologia

para guiar e organizar todo o projeto de desenvolvimento do software. Dessa forma,

eles apresentaram um relato de experiência em uma disciplina da graduação da

PUCRS no intuito de formalizar as práticas de engenharia de software adotadas para

o Projeto e o Desenvolvimento de Software Educacional, através do projeto PDS-E.

Isso para que sistemas de informação educacionais sejam desenvolvidos de formas

estruturada e pedagógica, contendo o assunto a ser atacado. Os resultados obtidos

com a aplicação da disciplina em três semestres consecutivos foram muito

promissores. Os alunos, em seus depoimentos colhidos através da avaliação formal

da disciplina e no seu decorrer, afirmaram que desta maneira conseguiram

dimensionar melhor o trabalho a ser feito e conseguiram conversar melhor com os

desenvolvedores (programadores). Os programadores, por sua vez, entenderam

melhor o que deviam fazer. Enfim, todos ganharam com a formalização e a

padronização das idéias. Neste contexto, tem-se buscado formalizar a metodologia

de ensino relatada e o uso dos recursos através da proposta do PDS-E.

Para [GARCIA, REZENDE e CALHEIROS 1997], diversos sistemas para

implementação de animações de algoritmos e de estruturas de dados foram produzidos.

Vários destes sistemas exploram bem a potencialidade do uso de visualizações gráficas

das operações realizadas nas estruturas de dados como ferramenta de ensino. O uso de

movimento em tempo real, cores e sons enriquecem ainda mais o poder de

comunicação. De fato, algumas experiências positivas foram relatadas na literatura,

principalmente com o uso de sistemas que utilizam a abordagem ativa, na qual o

aprendiz interage com as animações na criação de instâncias testes. Por outro lado, a

ênfase na qualidade da animação gráfica para enriquecer a abordagem ativa da maioria

Page 26: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

18

dos sistemas levou-os a um grau de complexidade que impede seu uso para fins de

criação de animações pelos próprios aprendizes. Deste modo, sua utilização se limita à

interação, ainda que ativa, com as animações pré-implementadas, representando as mais

novas tendências de trabalhos para o ensino de Computação e Informática.

[GARCIA, REZENDE e CALHEIROS 1997] ainda afirmam que, do mesmo

modo que a experimentação durante a operação das animações enriquece o aprendizado

mais do que a mera observação passiva delas, é de se esperar que, com um sistema onde

a própria implementação das animações gráficas é facilitada a ponto de poder ser

realizada pelo estudante, a absorção do funcionamento dos algoritmos seja ainda mais

intensa.

Apesar desta nova tendência dos produtos de software para educação em

Computação, ainda é muito utilizada a abordagem ativa descrita anteriormente. Isso

porque configura uma forma de controle do aprendizado pelo docente, uma vez que

quaisquer informações erroneamente assimiladas na maioria das vezes causam um

impacto negativo na evolução do aluno durante o curso.

2.3 Programação e Algoritmos: a Base da Computação

Segundo a estrutura curricular abstrata constante nas Diretrizes Curriculares do

MEC, a matéria de Programação faz parte da área de formação básica em Ciência da

Computação, juntamente com as matérias Computação e Algoritmos e Arquitetura de

Computadores. [AZEREDO 2000] afirma que seu conteúdo abrange, além do ensino de

linguagens de programação propriamente ditas, os conceitos, os princípios e os modelos

de programação e o estudo de estruturas de dados e de métodos de classificação e

pesquisa de dados.

Ainda de acordo com [AZEREDO 2000], conforme consta na caracterização da

matéria, a programação, entendida como programação de computadores, é uma

atividade voltada à solução de problemas. Nesse sentido, ela está relacionada com uma

variada gama de outras atividades como especificação, projeto, validação, modelagem e

estruturação de programas e dados, utili zando-se das linguagens de programação

propriamente ditas, como ferramentas.

Page 27: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

19

Ao contrário do que se apregoava há alguns anos, a atividade de programação

deixou de ser uma ‘arte’ para se tornar uma ciência, envolvendo um conjunto de

princípios, técnicas e formalismos que visam a produção de software bem estruturado e

confiável. Cite-se, dentre estes, os princípios da abstração, do encapsulamento e as

técnicas de modularização e de programação estruturada.

Portanto, o estudo de programação não se restringe ao estudo de linguagens de

programação. As linguagens de programação constituem-se em uma ferramenta de

concretização de software, que representa o resultado da aplicação de uma série de

conhecimentos que transformam a especificação da solução de um problema em um

programa de computador que efetivamente resolve aquele problema.

No estudo de linguagens de programação, deve ser dada ênfase aos aspectos

funcionais e estruturais das linguagens de programação, em detrimento aos detalhes de

sintaxe. Conceitos como o significado de associação, avaliação, atribuição, chamada de

procedimento, envio de mensagens, passagem de parâmetros, herança, polimorfismo e

encapsulamento devem ser enfatizados. O estudo de linguagens deve ser precedido do

estudo dos principais paradigmas de programação, notadamente a programação

imperativa, a funcional, a baseada em lógica e a orientada a objetos.

O desenvolvimento de algoritmos, juntamente com o estudo de estruturas de

dados, deve receber especial atenção na abordagem do tema programação. Igualmente,

deve ser dada ênfase ao estudo das técnicas de especificação, projeto e validação de

programas. Um excelente campo para o exercício da programação é constituído pelo

estudo de pesquisa em tabelas e de técnicas de ordenação.

Dessa forma, deve-se entender que ensinar programação não é simplesmente

ensinar uma linguagem de programação. Este ensino envolve sobretudo entender

problemas e descrever formas de resolução, de maneira imparcial, para que então sejam

codificadas em uma linguagem. Ou seja, somente após o aprendizado dos conceitos de

algoritmo e fundamentos de lógica é que o estudante pode travar contato com uma

linguagem de programação concreta (executável), para experimentar aqueles conceitos.

Page 28: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

20

Além disso, o estudo de programação deve passar efetivamente pelo estudo de

estruturas de dados. Ou seja, quando se projeta um programa, deve-se pensar tanto nos

algoritmos que manipulam os dados como também na forma de estruturar estes dados.

Desta maneira, as duas coisas se complementam.

De acordo com [AZEREDO 2000], dentro do ensino de estruturas de dados,

deve ser dado destaque a parte conceitual e comportamental das estruturas, antes de

pensar em implementação. Por exemplo, no ensino de estruturas lineares, deve-se

transmitir ao aluno o conceito desta estrutura, através das operações aplicáveis, como

criar, acrescentar, consultar e remover objetos da lista. Em um curso de Ciência da

Computação, esta parte pode ser apresentada através de uma especificação algébrica,

por exemplo. Após, pode-se prosseguir mostrando disciplinas de uso, como FIFO (first

in, first out) e LIFO (last in, first out) caracterizando os casos particulares de listas

lineares (fila e pilha). Finalmente, discutem-se formas de implementações ou

representações físicas das listas (contigüidade, encadeamento, circulares, duplamente

encadeada, com/sem descritor, etc). Deve ser dada ênfase especial no estudo de

estruturas encadeadas. Este tópico é onde normalmente o aluno apresenta maior

dificuldade de assimilação do conceito, uma vez que o encadeamento não é um conceito

muito freqüente na vida real, dificultando sua compreensão. Dessa forma, é

recomendável que as disciplinas de estruturas de dados possuam significativa atividade

prática em laboratório.

Para o ensino de algoritmos em grafos, deve-se consolidar bem a finalidade e o

funcionamento de cada processo, para a sedimentação das idéias e ordem de

pensamento do aluno. Exemplos de aplicações reais devem ser constantemente

associados. Após a conceituação teórica, deve-se partir para a análise dos algoritmos

propriamente dita, enfatizando a sua exercitação motora sobre exemplos de grafos, para

que o aprendizado seja bem sólido. Nesse caso, a condução correta e clara de um

primeiro exemplo pelo professor é fundamental, para que o aprendiz possa prosseguir

sem receio e/ou dúvidas.

Quanto ao sistema de avaliação aplicado atualmente, é o mesmo adotado

tradicionalmente na maioria dos cursos de natureza teórico-prática. Além de provas

Page 29: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

21

periódicas, são aplicados alguns trabalhos de programação para fixação. Uma sugestão

que vem ao encontro do uso de um produto de software durante as aulas é a redução do

peso em provas teóricas, normalmente elaboradas sobre um conteúdo denso.

Com relação aos cursos na área de Computação e Informática, os cursos de

licenciatura visam a formação de educadores para o ensino médio. Os de Ciência da

Computação e Engenharia de Computação são voltados para a formação de recursos

humanos para o desenvolvimento científico e tecnológico da computação. Embora

conhecedores da matéria, não necessariamente devem sair dos cursos com o perfil de

“programadores” . Os cursos de Sistemas de Informação incluem a formação de

programadores entre seus objetivos. Nesse sentido, em um curso de Licenciatura em

Computação, o aluno poderá ter uma carga de prática de programação menor do que a

exigida nos demais cursos, sem prejuízo da parte conceitual da matéria. Também deve

haver uma diferenciação entre os casos de cursos de atividade fim e atividade meio.

Para este último, recomenda-se uma ênfase maior no conhecimento de linguagens de

programação e atividades práticas.

Assim, a programação é, pois, um dos pontos chaves em um curso de

Computação, pois é a atividade que supre o computador com meios para servir ao

usuário. Seu uso adequado, juntamente com o entendimento de conceitos, princípios,

teorias e tecnologias, pode conduzir à produção de software de qualidade, objetivo final,

tanto quando se tem a computação como um meio como quando a computação é tida

como um fim.

Com esse intuito, [SETUBAL 2000] apresenta algumas recomendações

genéricas a serem aplicadas no ensino de disciplinas relacionadas a algoritmos e

computação:

• coerência com os objetivos fundamentais. Por coerência, entende-se que o

professor deve expressar claramente as idéias, os conceitos e as técnicas perante os

alunos (se o professor coloca algoritmos confusos na lousa ou em transparências, ele

não pode esperar algoritmos claros nas respostas dos alunos); deve destacar a

importância dos resultados teóricos e mostrar rigor formal toda vez que isto se fizer

necessário; e deve procurar valorizar o uso de técnicas na resolução de problemas.

Page 30: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

22

Esta última coerência pode ser alcançada em particular usando a técnica de

“descobrir” a solução de um problema junto com os alunos, ao invés de

simplesmente apresentar e explicar soluções “prontas” ;

• ênfase no pensamento crítico. Este é papel de toda educação, porém nesta matéria

um cuidado especial deve ser necessário, dada sua natureza teórica com forte

componente matemático. Em outras palavras, os alunos que têm pouca maturidade

matemática tendem a acreditar em qualquer demonstração que se lhes põe na frente.

Tal comportamento deve ser desestimulado! É essencial que os alunos duvidem

daquilo que lhes é apresentado e é com dúvidas saudáveis e sua resolução que a

percepção da importância do resultado teórico poderá ser consolidada. Nesse

sentido, considera-se um recurso valioso os exercícios que pedem para os alunos

identificarem falhas de argumentação (por exemplo em uma demonstração errada),

erros em algoritmos ou erros em notícias da imprensa;

• a teoria na prática. A experiência com o ensino das disciplinas relacionadas a

algoritmos e computação mostra que os alunos em geral não se sentem atraídos por

elas, por considerarem-na muito abstrata. Por esse motivo, crê-se ser importante usar

como recurso didático sempre que possível um grande número de exemplos da “vida

real” . A inclusão de projetos de implementação, seja dentro das disciplinas teóricas,

seja dentro de uma disciplina específica, também visa a tornar a matéria menos

abstrata. De resto, é importante salientar para os alunos o grande impacto que os

resultados teóricos têm alcançado na prática.

2.4 Projetos de Software Relacionados ao Ensino de Algoritmos, Estruturas de Dados e Algoritmos em Grafos na Computação

Como considerado relevante para o enriquecimento da pesquisa, serão listados

alguns projetos envolvidos com algoritmos, estruturas de dados e algoritmos em grafos.

Entretanto, não há pretensão alguma de se fazer uma resenha exaustiva de todos os

trabalhos relacionados.

Page 31: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

23

2.4.1 Projetos Relacionados às Estruturas de Dados

A seguir, são listados alguns projetos relacionados a algoritmos e estruturas de

dados:

• ASTRAL – Animation of Data Structures and Algorithms ([GARCIA, REZENDE e

CALHEIROS 1997]). É um ambiente de programação para produção de animações

de algoritmos e estruturas de dados com propósito instrucional. O ambiente foi

desenvolvido no Instituto de Computação da UNICAMP em 1995-97 para

plataforma Macintosh e recentemente portado para Windows. Utilizando o

ambiente, um usuário pode implementar uma variedade de estruturas de dados e

algoritmos e, através de chamadas de algumas rotinas específicas do ambiente, é

possível visualizar graficamente as estruturas de dados bem como animações dos

algoritmos. Isso se dá através de uma biblioteca de suporte gráfico que é parte do

ASTRAL. A abordagem de animação de algoritmos tem duas vantagens imediatas:

i) aprendizado, beneficia a observação dinâmica do funcionamento das estruturas de

dados e proporciona um nível de abstração maior; e ii) depuração, que é facil itada

pela visualização gráfica, deixando claro ao usuário-programador, no momento da

execução, em que parte da implementação da estrutura ou do algoritmo os erros

ocorrem. Estas vantagens são interessantes aos alunos de disciplinas de estruturas de

dados e algoritmos. O uso do ASTRAL em disciplinas de graduação sobre estruturas

de dados com componente de programação foi muito bem sucedido em vários

semestres;

• EDDL – Estruturas de Dados Dinâmicas Lineares ([AZUL e MENDES 1998]).

Surgiu de uma discussão sobre estratégias de ensino das estruturas de dados e tipos

de dados abstratos utilizados em programação. A estruturação do programa EDDL e

a concepção da sua funcionalidade englobam as seguintes componentes: 1)

abordagem introdutória aos conceitos ou especificação dos tipos de estruturas; 2)

técnicas de implementação; e 3) utili zação dessas estruturas na resolução de

problemas. Pode-se utilizar como ferramenta introdutória ou de revisão, exercitação

e auto-avaliação. Após o desenvolvimento dos primeiros protótipos, o EDDL

adquiriu uma configuração global em que uma tela principal dá acesso aos módulos

principais do programa, que são: conceitos introdutórios, pilhas, filas, listas lineares

Page 32: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

24

e exercícios. Em cada uma dessas seções, são analisadas em detalhes as operações

mais usuais com estes tipos de estruturas, tais como: criação e destruição da

estrutura, inserção e remoção de elementos na estrutura e verificação do estado da

estrutura. O processo de avaliação do programa em situações concretas de

ensino/aprendizagem está em curso. Oferece um conjunto de ferramentas e recursos

de programação que revelam ser ao mesmo tempo intuitivo e de fácil manipulação,

diversificado, versátil e eficaz para o desenvolvimento de projetos, principalmente

quando o aspecto gráfico é um dos componentes importantes a considerar;

• TED – Tutorial de Estruturas de Dados ([FLÁVIO 2004]). É um tutorial para

dinamizar o ensino na disciplina de estrutura de dados e é um software educacional

com o objetivo de permitir uma maior interação professor-aluno, servindo como

uma ferramenta de apoio ao aprendizado. O tutorial subdivide-se nas várias

estruturas apresentadas durante a disciplina, permitindo ao aluno ter uma visão

individualizada dos conteúdos, mas sem perder a visão do todo. Através de

conceitos de dinamização de aprendizagem, como a visualização dos

acontecimentos simultaneamente com o que é executado, o aluno cria uma visão de

totalidade do sistema. O tutorial apresenta algoritmos das estruturas de dados, ao

mesmo tempo que demonstra a sua implementação lógica através de exemplos

visuais permitindo ao aluno acompanhar os passos simultaneamente ao que é

executado;

• Dictionary of Algorithms and Data Structures ([BLACK 2005]). Este site contém

uma parte do Software Quality Group do Software Diagnostics and Conformance

Testing Division, Information Technology Laboratory. Este é um dicionário de

algoritmos, técnicas algorítmicas, estruturas de dados, problemas atípicos e

definições relativas. Os algoritmos incluem funções comuns e os problemas incluem

alguns como o caixeiro viajante. Alguns tópicos têm links para implementações e

mais informações. A página de índice relaciona os tópicos por tipo ou em ordem

alfabética. Apresenta o funcionamento dos algoritmos como animações sendo

executadas ao se definirem os seus parâmetros.

A seguir, são listados outros projetos citados em [GARCIA, REZENDE e

CALHEIROS 1997]:

Page 33: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

25

• Balsa (Brown ALgorithm Simulator and Animator). Foi desenvolvido na Brown

University no início dos anos 80. Seu intuito era servir como um laboratório de

experimentação com representações dinâmicas de algoritmos em tempo real. Seu

sucessor, Balsa-II , introduziu uma interface mais amigável e uma maneira

homogênea para a execução e interações com animações, trabalhando sobre a

plataforma Macintosh e com a linguagem Pascal;

• Projeto Zeus <http://www.research.digital.com/SRC/zeus/home.html>. Surgiu no

início dos anos 90, desenvolvido por M. Brown cujas contribuições incluíram uma

proposta de separação entre algoritmo e visualizadores, colocando interfaces bem

definidas entre eles, suporte à construção de programas de grande porte orientados a

objetos e a utilização da linguagem Modula 3. Em Zeus, múltiplos algoritmos

podem ser executados concorrentemente, facilitando a análise de diferenças e

similaridades entre vários algoritmos;

• Projeto Zada <http://ls4-www.informatik.unidortmund.de/RVS/zada.html>.

Desenvolvido na University of Dortmund, implementou algoritmos distribuídos

utilizando o ambiente Zeus;

• Xtango <http://www.cc.gatech.edu/gvu/softviz/algoanim/xtango.html>. É um

sistema de animação de algoritmos de propósito genérico que permite a construção

de animações em tempo real. O objetivo principal é prover facilidades para os

usuários que irão construir as suas animações, fornecendo uma interface de alto

nível. Utiliza a linguagem C e opera sobre plataformas Unix e X11 Window System;

• Polka <http://www.cc.gatech.edu/gvu/softviz/parviz/polka.html>. É sucessor de

Xtango e foi projetado para dar suporte ao desenvolvimento de animações

concorrentes, de maneira a facil itar a exibição de algoritmos paralelos;

• Projeto AnimA foi desenvolvido na Unicamp por R. Amorim e P. de Rezende e seu

principal objetivo é a produção sistemática de animações em C++ dentro de um

ambiente de estações de trabalho Unix.

2.4.2 Projetos Relacionados a Algoritmos em Grafos

A seguir, são listados alguns projetos relacionados a algoritmos e teoria dos

grafos:

Page 34: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

26

• Rin’G ([SOARES et al 2004]). Consiste em um ambiente que permite aos usuários

desenvolver seus algoritmos e incluí-los em uma interface gráfica, executando-os

passo-a-passo de forma interativa. Isso visa facil itar a compreensão das técnicas

aplicadas, por meio do mapeamento das representações computacionais de

implementações para abstrações visuais de algoritmos em grafos. Permite a edição

de grafos, a execução de algoritmos para geração e acompanhamento de animações

e o salvamento e abertura de grafos e animações. No Rin’G, algoritmos são

implementados em Java e a estrutura disponibil izada pelo Diamante – um

framework também criado pelo grupo com o intuito de simpli ficar o

desenvolvimento de aplicações que utilizam grafos. Dessa forma, o ambiente busca

garantir que essas implementações sejam o máximo possível similar às definições

teóricas dos algoritmos propostos. Foi utili zado durante parte de 1º semestre de

2004 por alunos da disciplina Grafos e Teoria da Complexidade do curso de Ciência

da Computação da PUC Minas. Este teste foi considerado satisfatório pelo grupo,

motivando a contínua melhoria e o incremento do conjunto de funções da

ferramenta;

• GVF – Graph Visualization Framework ([MARSHALL e HERMAN 2003]). É um

framework para desenvolvimento de ferramentas direcionadas para manipulação de

problemas de teoria dos grafos que apresenta um bom suporte para criação de

entrada e saída de dados e layout para os grafos. Por outro lado, não permite a

inclusão de algoritmos dinamicamente ao sistema e não fornece amparo à animação

de algoritmos. Não fornece capacidade de expansão, visto que existe a possibilidade

de inclusão de operações, componentes e propriedades de um grafo;

• EVEGA ([KHURI e HOLZAPFEL 2001]). É uma ferramenta desenvolvida para o

aprendizado de algoritmos em grafos e fornece uma interface poderosa e de boa

usabilidade para criação e edição interativa de grafos e animação de algoritmos. As

execuções de vários algoritmos podem ser comparadas por meio de gráficos de

desempenho gerados pela ferramenta. Um algoritmo de fluxo máximo acompanha a

ferramenta para demonstração e é possível incluir no ambiente novos algoritmos. A

operação do EVEGA, no entanto, para geração das animações, é feita de forma

Page 35: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

27

intrusiva no código do algoritmo, podendo ser necessário dividir a atenção do

problema a ser solucionado com a criação da animação;

• DIDAGRAPH ([DAGDILELIS e STRATZEMI 1998]). Permite o

acompanhamento de animações da execução de algoritmos, em alto nível, por meio

de uma visualização do grafo com o algoritmo em andamento e de uma descrição

em linguagem de alto nível do algoritmo. Essa ferramenta, atualmente, conta apenas

com poucos algoritmos; para estudar algoritmos utili zando esta ferramenta é

necessário aprender uma nova linguagem, fato este que pode desviar a atenção do

objetivo das disciplinas de grafos;

• VisualGraph ([LUCAS e NAPS 2003]). Fornece uma biblioteca para a animação

de algoritmos em grafos. Essa biblioteca, no entanto, não fornece uma interface

gráfica para o usuário, servindo apenas como base para a criação de grafos que

possam ser utili zados em outros projetos e ambientes. Para visualizar a animação

gerada por algoritmos criados com o VisualGraph, é necessário o uso de outra

ferramenta. A interface para criação de grafos é baseada em texto, pouco intuitiva e

não representa o grafo de forma amigável ao aluno;

• DisViz ([SHERSTOV 2003]). Foi desenvolvido para permitir o aprendizado em

grupo, por meio de redes locais, em um ambiente P2P (Peer to Peer) no qual é

possível criar grafos de teste e animações de algoritmos que possam ser visualizados

por todos os membros da rede. Esta ferramenta não fornece uma maneira fácil de

acoplar algoritmos desenvolvidos por usuários, de forma que os alunos só podem

utilizar os algoritmos existentes. O estudo de algoritmos em grafos utilizando esse

programa é restrito aos algoritmos implementados na ferramenta e ao

acompanhamento da animação desses algoritmos. Além disso, o estudo depende da

existência de uma rede local e da colaboração dos membros dessa rede, o que pode

dificultar o estudo dentro e fora dos horários de aulas práticas.

2.5 Considerações Finais

Apesar de existirem várias frentes de estudos interessadas em contribuir para a

melhoria e o enriquecimento do ensino de Computação, muito trabalho ainda terá que

ser feito. Uma vez que a maior parte das disciplinas dos cursos da área tem enfoque

teórico acaba por deixar as aplicações e as tarefas práticas a cargo dos alunos, o que

Page 36: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

28

quase sempre acaba por deixá-los desestimulados e pensativos com relação à sua

escolha profissional. Logo, deve ser uma preocupação constante de coordenadores de

cursos da área de tentar manter condições físicas apropriadas ao desenvolvimento dos

cursos, aumentando a produtividade e qualidade dos trabalhos de conclusão de curso.

Page 37: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

29

Capítulo 3 – A História de Java: Tecnolog ias e Evolução

3.1 Considerações Iniciais

Dentro da gama de tecnologias disponíveis no mercado atual, a busca por

aquelas que atendam melhor aos requisitos de projetos modernos é cada vez maior. Em

contrapartida, a cada dia novas tecnologias são desenvolvidas e novos conceitos

precisam ser incorporados à formação profissional.

Em projetos que envolvem programação, utili zar meios de construção do

produto de software que sigam padrões é importante. Os atuais padrões de

implementação usam a orientação a objetos em larga escala e procuram evitar

dependência em relação à plataforma ou à estrutura física onde será executado o

produto de software.

Nesse contexto, surgiu a linguagem de programação Java, que é uma poderosa

linguagem de programação, desenvolvida pela Sun Microsystems. Java foi

originalmente concebida para ser usada com a Televisão Interativa (Tvi). A Tvi,

conforme [FERNANDES et al 2004], é um conceito que integra a televisão

convencional com as potencialidades de programas de computador, possibilitando ao

usuário assistir e interagir com o conteúdo que está sendo apresentado. Mas, de acordo

com [THOMAS et al 1997], Java acabou por se tornar uma linguagem de grande

interesse para a comunidade Internet quando a Sun lançou o HotJava, um browser web

que executa pequenos programas Java embutidos, chamados applets, em páginas web.

Em seguida, o suporte para applets foi acrescentado ao Netscape Navigator 2.0. Hoje,

applets estão se tornando obrigatórios nos sites mais sofisticados.

Neste capítulo, é apresentada a linguagem de programação Java, ferramenta

sobre a qual foram implementados os produtos de software. A seção 2 apresenta um

breve histórico a respeito do nascimento de Java, bem como os rumos que o seu projeto

de construção tomou durante seu desenvolvimento. A seção 3 retrata aspectos

importantes da sua evolução e da sua abrangência. A seção 4 detalha algumas

tecnologias disponíveis para o desenvolvimento de produtos de software em Java. A

Page 38: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

30

seção 5 apresenta as principais características de Java. Por fim, são apresentadas as

considerações finais do capítulo.

3.2 O Nascimento

Segundo [BANK 1995], as origens de Java remontam ao início da década de 90,

quando o mercado de computador pessoal estava em franca expansão. Nessa época, a

Sun começava a compreender o por quê de suas estações de trabalho terem perdido

terreno para o padrão PC da IBM. Conforme [BANK 1995], complicadas, feias e

extremamente científicas para o mercado doméstico eram o conceito unânime sobre tais

máquinas. Assim, a empresa cujos equipamentos chegaram a representar mais da

metade das máquinas conectadas à Internet estava mais do que pronta para ouvir

sugestões; anteriormente, algo altamente improvável.

Nesse contexto, o jovem programador Patrick Naughton mencionou ao seu

companheiro de hockey e também presidente da Sun, Scott McNealy, que estava

deixando a empresa para se juntar à NeXT Computer onde, segundo ele, as coisas

estavam tomando um rumo mais interessante. Quando McNealy ouviu isso, sua reação

foi pedir a Naughton que, antes de ir, fizesse uma espécie de carta-sugestão, onde

constariam os erros cometidos pela Sun, segundo sua visão [BANK 1995]. Naughton,

interessado pelo desafio de descrever tais falhas, redigiu doze telas de texto e as enviou

ao presidente que, após ler, as enviou a todos da gerência da empresa.

Foi o estopim para uma vigorosa discussão. Entretanto, todos estavam propensos

a concordar com os pontos levantados. Dentre eles: i) um artista para conceber as

interfaces da Sun; ii ) um único conjunto de ferramentas de desenvolvimento; iii) uma

única tecnologia de janelas; e iv) mudanças no time de desenvolvimento de janelas e

interfaces.

Com sua vaga garantida na NeXT, Naughton participou das reuniões com os

executivos aonde se chegou à predição sobre a terceira onda da computação: pequeno

computador móvel de fácil uso, em contraponto aos mainframes e minicomputadores e

aos computadores pessoais de mesa. Estava fundado o Projeto Green ([QUINTEIRO

2005]).

Page 39: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

31

Para evitar o ambiente conservador e para ter o máximo de sigilo sobre o

projeto, decidiu-se trabalhar fisicamente fora dos muros da empresa. Naughton, James

Gosling e Mike Sheridan idealizaram um sistema compacto e simples que interagisse

com todo e qualquer dispositivo eletrônico, mesmo aqueles não tecnicamente chamados

de computador. Eles vislumbraram uma espécie de controle remoto universal. Algo tão

fácil de uso que permita a programação de um vídeo-cassete, a operação de uma TV ou

de um sistema de som por qualquer pessoa, mesmo aquela não inteirada sobre o

funcionamento de tais dispositivos. Começaram os dias de glória do Projeto Green.

Apesar de sua rapidez, a inconsistência das interfaces e a portabilidade

incompleta de C++ determinaram o descarte da linguagem como ambiente de

desenvolvimento. Após concluir que a confiabili dade era preferível à velocidade no

mundo dos eletro-eletrônicos, partiu-se para o desenvolvimento de um novo ambiente

de programação.

Gosling viu a possibil idade de fazer uso de sua idéia, desenvolvida em 1979.

Um enorme código Pascal nativo de uma estação PERQ precisava rodar na arquitetura

VAX da Digital. Os compiladores Pascal da época geravam um pseudo-código

intermediário que, depois, era convertido para a linguagem de máquina. Assim, Gosling

teve a idéia de criar uma máquina virtual para o VAX que, recebendo o código Pascal

PERQ, converteria-o para a arquitetura Digital. Era essa a portabilidade sem fronteiras

desejada pelo Projeto Green.

Enquanto a nova linguagem Oak (carvalho) era preparada por Gosling,

Naughton criava a interface gráfica que rodaria no protótipo. Conforme [GOSLING

2001], usando a tecnologia hammer, o protótipo foi construído: tela LCD de uma mini-

televisão Sharp, auto-falantes de um Game Boy Nintendo e partes compactadas de uma

estação Sun. Em agosto de 1992, o protótipo foi apresentado a McNeally, sendo uma

pequena tela e nada de botões. Passando o dedo pela tela, McNeally seleciona um filme

de um catálogo virtual e o arrasta para a imagem de um vídeo-cassete: a gravação do

filme está programada! Tudo feito sem teclado, mouse ou botões. O presidente da Sun

ficou em êxtase, dizendo: “Precisamos vender isso. Não falhem comigo. Derrubaremos

Page 40: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

32

Microsoft, Apple, IBM e HP de uma só vez”. Wayne Rosing, outro co-fundador da Sun

Microsystems, completa: “Bil l Gates vai lamentar” .

Porém, o protótipo Star7 tinha muito mais para apresentar: Oak, uma poderosa e

segura linguagem orientada a objetos. Ao tomar conhecimento do software, Mitsubishi

e France Telecom iniciaram negociações para obter uma licença da tecnologia. A Sun

criou a FirstPerson Incorporated para cuidar dos negócios relativos ao Projeto Green.

Ao designar Rosing para a direção da FirstPerson, Mike Sheridan abandona a empresa

pois se sentiu desvalorizado.

A Mitsubishi e a France Telecom desistiram de Oak. Enquanto isso, o custo do

Star7 foi estimado em U$50. Ao mesmo tempo, a noção de Era da Informação

contagiou as pessoas e muitos entenderam que a Tvi era o caminho para atingi-la.

Assim, após a Time-Warner anunciar uma concorrência para escolher a tecnologia que

utilizaria o seu protótipo de Tvi, Naughton, Gosling e Bil l Joy (outro fundador da Sun)

empreenderam um amplo esforço para que Oak fosse escolhida. Após várias idas e

vindas à Time-Warner, a FirstPerson perdeu a disputa para a Sili con Graphics, arqui-

rival da Sun no mercado de estações de trabalho.

Meses depois, novo acordo foi tentado para transformar o ambiente provido por

Oak em produto comercial. A 3DO disponibilizou um decodificador para a Tvi. Oak foi

adaptada para a plataforma em 10 dias, mas as negociações para um acordo comercial

se estenderam por mais de 3 meses. Isso culminou em fracasso. Dessa maneira, a

atenção voltou-se novamente para o protótipo Star7.

Estas investidas fizeram com que a Sun só percebesse a relevância de um outro

fenômeno emergente, o Mosaic, cerca de 3 meses depois do seu lançamento. Em junho

de 1993, Marc Andreessen do NCSA (National Center for Supercomputing

Applications) lançou o Mosaic, primeiro visualizador gráfico para a Internet.

Esses conjuntos deixaram a direção da Sun transtornada. Em um lacônico e

taxativo comunicado à FirstPerson, a gerência da Sun determinou que encontrassem

algo para gerar dividendos. Um novo plano foi traçado, mas o fato de não mencionar ou

considerar duas das maiores sensações do momento, o Mosaic e a WWW, e de não se

Page 41: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

33

atrelar a equipamentos da Sun, o que promoveria suas vendas, gerou pouco entusiasmo

nos executivos. Assim, no segundo trimestre de 1994, a FirstPerson foi oficialmente

liquidada e o Star7 foi abandonado.

Entretanto, quando tudo parecia perdido, Bill Joy salvou Oak, convencendo a

alta cúpula de que a linguagem poderia ter um caminho próspero na Web. Gosling tratou

de adaptar o código de Oak para WWW, enquanto Naughton preparou um navegador,

mais tarde denominado HotJava. Em dezembro de 1994, uma versão preliminar de Oak

e HotJava foi disponibil izada na Web para um seleto grupo. Três meses depois, Marc

Andreessen, que fundou a Netscape, teve acesso à tecnologia e ficou maravilhado.

Segundo [I.F.S. 2003], por problemas de copyrigth, o nome foi mudado em 1995 para

Java, em homenagem à ilha de Java, de onde vinha o café consumido pela equipe da

Sun. A idéia da Netscape de incorporar Java a seu navegador foi recebida como uma

benção pelos remanescentes do Projeto Green. Mas, sem um plano de licenciamento

ainda definido, a Sun acabou disponibilizando Java para a Netscape por U$750 mil e

sem taxação por cópia de navegador vendido. Uma pechincha, segundo analistas da

época.

Em maio de 1995, a tecnologia Java foi oficialmente lançada pela Sun. Kits de

desenvolvimento, eventos e correlatos foram planejados para sedimentar a tecnologia

como um padrão para a WWW. Isso porque o Microsoft Blackbird foi anunciado para o

início de 1996 e forneceu a mesma funcionalidade propostas por Java. Nesse meio

tempo, Patrick Naughton deixou a empresa por não concordar com a direção dos

negócios relativos a Java. O ponto de discordância foi o fato da Sun querer subjugar a

empresa de Bill Gates, ao passo que Naughton estava interessado apenas no sucesso de

Java. Depois de um bom tempo, o preço da licença do produto foi fixado em U$125 mil

mais U$2 por cópia de produto destinado ao mercado.

3.3 A Evolução

A seguir, é apresentado um cronograma de evolução, conforme [JAY 2005]:

• 1995: em março, surgiu Java, sob a coordenação de James Goslings e da Sun

Micorsystems; em maio, Java foi anunciada oficialmente na conferência SunWorld;

Page 42: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

34

• 1996: em janeiro, ocorreu a liberação do JDK 1.0 (Java Development Kit); em maio,

ocorreu a primeira conferência para divulgar as novas tecnologias de Java; em

outubro o primeiro compilador Just-inTime (JIT) e API Java (Application Program

Interface Java) foram anunciados; em dezembro, o JDK 1.1 foi anunciado;

• 1997: em janeiro, o JavaBeans Development Kit foi liberado; em fevereiro, o JDK

1.1 foi liberado; em março, o Java Servlet Developers Kit foi liberado;

• 1998: em novembro, Java versão 2 se tornou portável para Linux e, em dezembro, é

disponibil izado para avaliação;

• 1999: em junho, as três edições Java, J2SE (Java 2 Platform Standard Edition),

J2EE (Java 2 Platform Enterprise Edition) e J2ME (Java 2 Platform Micro

Edition), foram anunciadas; em dezembro, a plataforma J2EE foi disponibilizada

para avaliação e a plataforma J2SE foi disponibil izada para o Linux;

• 2000: em fevereiro, API Java foi disponibil izada para pacote opcional XML

(eXtensible Markup Language); em maio, a plataforma J2SE versão 1.3 foi lançada

e foi disponibil izada para a Apple Mac OS X;

• 2001: em fevereiro, J2EE foi anunciada; em março, o catálogo J2EE e o Java Web

Start 1.0 foram liberados; em abril, a plataforma Java 2 Enterprise Edition (J2EE)

SDK 1.3 beta foi liberado;

• 2002: em dezembro, J2EE 1.4 Beta foi liberado;

• 2004: em outubro, Tiger (Java 5.0) foi liberado;

• 2005: em março, comemoração dos 10 anos de Java. Em novembro, Mustang (Java

6.0) foi liberado.

3.4 Algumas Tecnologias

Como uma tecnologia pioneira, Java apresenta uma série de ferramentas que dão

suporte a software de diferentes tipos [GALVÃO 2003]. A seguir, são descritas algumas

delas:

• JSDK – Java Software Development Kit: nome genérico dado para o conjunto de

ferramentas de desenvolvimento Java disponibil izado pela Sun. Em um JSDK, são

incluídos um compilador e um interpretador. Geralmente, são incluídas muitas

Page 43: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

35

outras ferramentas, como depuradores e geradores de documentação. Um sinônimo

comum é JDK;

• JVM – Java Virtual Machine: abreviação mais usada para a máquina virtual Java, o

mecanismo responsável por grande parte do sucesso (e algumas vezes insucesso) de

Java. A máquina virtual é um software nativo que interpreta os bytecodes (código

intermediário Java) transformando-os em código binário. A primeira versão da JVM

apenas interpretava. Depois, vieram os compiladores Just-in-Time (JIT), que

compilavam parte do código na hora em que era executado, fazendo otimizações e

aumentando o desempenho. Uma evolução foi a introdução da máquina virtual

HotSpot, um JIT especial que usa tecnologias de compilação adaptativa, para

otimizar, dinamicamente, o código usado com mais freqüência e melhorar a

alocação de recursos;

• JRE – Java Runtime Environment: subconjunto do JSDK, direcionado para usuários

finais, que precisam apenas executar o software e não desenvolvê-los. Inclui a JVM

e as classes principais;

• J2SE: chamada apenas de Java Platform. Com o crescimento de Java, vieram o

J2EE e o J2ME. O J2SE contém as classes principais da plataforma Java e é

chamado às vezes de Core Java Platform;

• J2ME: a mais jovem plataforma Java, utilizada para os pequenos dispositivos, de

handhelds a pagers. A plataforma conta com o apoio cada vez maior da comunidade

e da indústria. A vantagem decisiva para o uso de J2ME é a possibil idade de usar a

mesma linguagem e praticamente as mesmas APIs no desenvolvimento para

centenas de dispositivos diferentes;

• J2EE: uma das siglas mais conhecidas do universo de tecnologias Java, tem alter ado

significativamente o desenvolvimento de software distribuído. Ao J2EE, são dados

muitos nomes: plataformas, arquitetura, tecnologia, conjunto de padrões,

especificação entre outras. Na verdade, todos estes são aplicáveis, dependendo do

ponto de vista. O J2EE pode ser considerado uma tecnologia que engloba um

conjunto de tecnologias que fornecem APIs e um ambiente para desenvolvimento e

execução de software corporativo, complexo e distribuído fisicamente. A plataforma

passou por quatro versões e a quinta (J2EE 1.4) está em fase avançada de

Page 44: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

36

padronização. As tecnologias englobadas pelo J2EE são: JDBC (Java Database

Connectivity) para acesso a dados; JNDI (Java Naming and Directory Interface)

para integração com serviços de nomes e diretórios; JMS (Java Message Service)

para chamadas assíncronas; Servlets e JSP (Java Server Page) para desenvolvimento

Web; EJB (Enterprise JavaBeans) componentes de negócios distribuídos; JavaMail

para envio e recepção de e-mail ; JTS/JTA (Java Transaction Service/Java

Transaction) para gerenciamento de transações distribuídas; JCA (Java

Cryptography Architecture) para integração com sistemas legados; e RMI-IIOP

(Remote Method Invocation- Internet Inter-Orb Protocol) para comunicação entre

componentes;

• JDBC: solução elegante para o acesso multiplataforma a banco de dados.

Praticamente, toda a arquitetura JDBC é baseada em interfaces e especificações;

Isso torna a API tão geral e padronizada para bancos de dados distintos como

Oracle, MySQL e Microsoft SQLServer. O acesso a dados com o JDBC é baseado

em drivers JDBC, que são implementados por conjuntos de classes que conhecem

intimamente a arquitetura e os comandos de banco de dados. Um fato interessante é

os drivers JDBC serem implementados pelos fabricantes dos bancos de dados. A

Sun entra apenas com as especificações. Isso garante que as implementações dos

drivers sejam eficientes e leves. A maioria das empresas fabricantes de bancos de

dados fornece drivers JDBC gratuitamente junto com seus produtos e muitas

disponibil izam esses drivers na internet para download gratuito;

• JSP: usado para a criação de páginas Web dinâmicas. Com JSP, é possível criar

páginas que mesclam código Java e HTML (HyperText Markup Language),

permitindo a criação de templates com regiões dinâmicas e estáticas. Os códigos

JSP são incluídos no código HTML usando tags especiais. São oferecidas APIs

muito ricas para a criação de sites completos com acesso a dados e interação com o

usuário. Em uma evolução da primeira versão do JSP, os tags libraries reduzem o

código Java embutido no HTML simplificando o trabalho de designers e

desenvolvedores;

• Servlets: extensões do puro Java do padrão CGI (Common Gateway Interface). São

usados para a geração de conteúdo dinâmico para a Web. Servlet é uma classe Java

Page 45: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

37

que conhece o protocolo HTTP (HyperText Transfer Protocol). Assim, um servlet é

capaz de processar solicitações HTTP, ler e processar parâmetros de formulários

HTML e envia respostas HTTP. Nos últimos anos, com a introdução da tecnologia

JSP, o uso de Servlets é reorientado. Em software bem arquitetado para Web, é

recomendado o uso de JSPs para a sua apresentação e de Servlets para a lógica de

validação e controle;

• EJB: sua especificação define um padrão para componentes de negócios

distribuídos. EJB é usado para se referir aos componentes criados seguindo esta

especificação. EJBs são executados em um runtime, que fornece serviços básicos de

gerenciamento de transações, persistência, distribuição e nomes. O runtime é

geralmente implementado pelo Application Servers. Uma das principais vantagens

de usar EJBs é o ganho com produtividade. Várias tarefas complicadas e cansativas,

tais como a implementação de persistência no banco de dados ou a abertura e o

fechamento de transações, são realizadas pelo Application Servers;

• RMI: é uma solução simples para a distribuição de software Java, permitindo a

comunicação entre objetos em máquinas virtuais diferentes. Com RMI, o código

para chamar um método de um objeto remoto é o mesmo para chamar um método

equivalente em um objeto local.

• AWT – Abstract Window Toolkit: acompanha Java desde sua primeira versão. Nesta

API, são definidos eventos, janelas, caixas de diálogo, cores e outros elementos

visuais. A primeira versão do AWT era pesada e pouco prática. Na segunda, que

veio com o Java 1.1, várias questões foram resolvidas, mas um problema crítico da

tecnologia permanecia: os recursos gráficos usados pelo AWT vinham do sistema

operacional. O AWT funcionava apenas como uma casca sobre os elementos visuais

da plataforma. Isso criava muitos problemas de compatibil idade e desempenho.

Além disso, restringia os recursos que podiam ser disponibil izados – apenas as

funções disponíveis em todas as plataformas, ou na maioria delas, podiam ser

utilizadas. Apesar de todas as desvantagens, AWT ainda sobrevive, mas é usado

como uma camada de serviços básicos para a mais moderna API Swing;

• Swing: estende e substitui o AWT. Swing resolve a maior parte das limitações do

AWT – todos os componentes visuais são desenhados diretamente na tela, o que

Page 46: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

38

retira a dependência dos recursos de interfaces gráficas do sistema operacional. Isso

garante que o software tenha exatamente o mesmo visual e funcionalidade em

plataformas diferentes e aumenta a flexibil idade na criação de interfaces gráficas.

Nas versões iniciais do Swing, software construído com a tecnologia era pesado e

lento, mas aperfeiçoamentos foram feitos em ritmo intenso. Com J2SE 1.4, obteve-

se uma velocidade e leveza aceitável, viabilizando finalmente a criação de software

gráfico usando Java.

3.5 Algumas Características

De acordo com [SILVA 2003], Java é resultado de uma busca por uma

linguagem de programação que pudesse fornecer uma ligação com C++, mas com

segurança. Os primeiros objetivos alcançados com seu desenvolvimento foram a criação

de uma linguagem orientada a objetos, o fornecimento de um ambiente de

desenvolvimento (velocidade no desenvolvimento – eliminando o ciclo de compilar-

linkar-carregar-testar e portabilidade do código – com um interpretador que especifica a

forma do nível do sistema operacional), o não acesso a ponteiros e o dinamismo durante

a manutenção de programas.

Java é notável não apenas porque applets podem ser executadas dentro de

páginas Web, mas é uma linguagem orientada a objetos poderosa e fácil de usar. Java

lida com muitos problemas comuns, porém complexos, que os programadores

encontram ao desenvolver software robusto. Java suporta multiprocessamento com suas

classes thread (linhas de execução) e executa automaticamente a coleta de lixo,

liberando memória que não está mais sendo usada em segundo plano. A API incluída no

JDK fornece aos programadores acesso independente de plataforma para ferramentas

essenciais na programação de software complexo para Internet, como soquetes de rede e

um sistema de janelas gráficas. Poucas linguagens de programação geram o tipo de

interesse que Java tem gerado, mas poucas redefinem o que são programas e o que os

programadores podem fazer [THOMAS et al 1997].

Page 47: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

39

Como forte critério de decisão pela implementação do software em Java, está

seu conjunto de características que a tornam singular perante outras linguagens de

programação disponíveis [SILVA 2003]:

• Orientada a Objetos. Java é puramente orientada a objetos, pois, com exceção de

seus tipos primitivos de dados, tudo é classe ou instância de uma classe. Java atende

a todos os requisitos necessários para ser considerada orientada a objetos que

resumidamente são oferecer mecanismos de abstração, encapsulamento e herança;

• Independente de Plataforma. Java é independente de plataforma, pois os

programas em Java são compilados para uma forma intermediária de código

denominada bytecodes que utiliza instruções e tipos primitivos de tamanho fixo,

ordenação big-endian e uma biblioteca de classes padronizada. Os bytecodes são

como uma linguagem de máquina destinada a uma única plataforma, a JVM, um

interpretador de bytecodes. Pode-se implementar uma JVM para qualquer

plataforma; assim, um mesmo software em Java pode ser executado em qualquer

arquitetura que disponha de uma JVM;

• Performance. Java foi projetado para ser compacto, independente de plataforma e

para utilização em rede, o que levou a decisão de ser interpretado através de

bytecodes. Como é interpretada, é razoável a performance, não podendo ser

comparada a velocidade de execução de código nativo. Para superar esta limitação,

várias JVMs dispõem de compiladores JIT que compilam os bytecodes para código

nativo durante a execução otimizando a execução, que melhora a performance de

software em Java;

• Segurança. Considerando a possibilidade de software obtido através de uma rede,

Java possui mecanismos de segurança que podem evitar qualquer operação no

sistema de arquivos da máquina-alvo, minimizando problemas de segurança. Tal

mecanismo é flexível o suficiente para determinar se uma applet é considerada

segura especificando diferentes níveis de acesso ao sistema alvo;

• Permite Multithreading. Java oferece recursos para o desenvolvimento de software

capazes de executar múltiplas rotinas concorrentemente e dispõe de elementos para

a sincronização destas várias rotinas. Cada um destes fluxos de execução é

denominado thread, um importante recurso de programação de software mais

Page 48: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

40

sofisticado. Além disso, Java é robusto, oferece tipos inteiros e ponto flutuante

compatíveis com as especificações IEEE, tem suporte para caracteres UNICODE e é

extensível dinamicamente além de ser naturalmente voltada para o desenvolvimento

de software em rede ou distribuído;

• Garbage Collection. Java não segura áreas de memória que não estão sendo

utilizadas, porque tem uma alocação dinâmica de memória em tempo de execução.

Em outras linguagens de programação, o software é responsável pela

alocação/desalocação da memória. Durante o ciclo de execução do software, Java

verifica se os objetos instanciados estão em uso. Caso não estejam, Java libera

automaticamente esta área que não é utili zada.

Além disso, conforme [SILVA 2003], deve-se salientar também as diferenças de

Java que a tornaram vantajosa em detrimento das outras: i) Java não implementa

ponteiro explicitamente; ii) não tem gabarito; iii ) inexistência de aritmética de

ponteiros; iv) arrays são objetos; v) Strings são objetos; v) não há a necessidade de

desalocação explícita de memória; vi) tamanhos em bits dos tipos primitivos são os

mesmos em todas as plataformas; vii) não há sobrecarga de operadores; viii) não há

métodos com lista de argumentos de tamanho variável; ix) não há diretivas de pré-

compilação; x) não há Templates; xi) não há herança múltipla com classe; e xii) não há

funções, mas apenas métodos de classes.

3.6 Considerações Finais

Tecnologias nascem todos os dias sem um dos três fatores primordiais para o

sucesso: i) grupo de desenvolvedores de primeira linha; ii) mercado disposto a acolher;

e iii) plano de negócios que funcione. Java teve o time vencedor e teve um mercado

ansioso por sua funcionalidade. Mas, se continuará fazendo sucesso, depende de como

os negócios serão conduzidos.

A história de Java é um exemplo do que acontece quando uma grande

companhia “afrouxa as rédeas” dos seus mais talentosos integrantes. É também uma

prova do quão acidental é a natureza do desenvolvimento tecnológico, que vive às

voltas com o confuso e oscilante mercado de negócios.

Page 49: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

41

Nesse contexto, a Sun fatura com Java pelo seguinte motivo: é um padrão

aberto, isto é, qualquer um pode escrever um programa em Java e vendê-lo, mas a JVM

é paga, além de haver um custo por cópia de cada produto vendido com essa JVM. Pois,

sendo um padrão aberto, qualquer um pode criar uma máquina virtual que interprete

bytecodes e disponibilizá-la gratuitamente. É isso que faz a GNU (GNU' s Not UNIX)

que disponibil iza o GJC gratuitamente.

Com todo esse aparato oferecido por Java, acabou por se tornar preferida para

implementar software baseado em Intranet e Internet e para dispositivos que se

comunicam através de uma rede. Não é de surpreender se um novo estéreo e outros

dispositivos domésticos estiverem conectados em rede utilizando Java. Além disso, Java

é particularmente atraente como primeira linguagem de programação. No evento

JavaOneTM, em junho de 2001, foi anunciado que Java é parte obrigatória do currículo

de linguagens de programação de 56% das faculdades e universidades dos EUA.

Ademais, 87% das faculdades e universidades americanas oferecem cursos de Java.

Java também é atraente para escolas de segundo grau. Em 2003, o College Board

estabeleceu Java como padrão para cursos de Ciência da Computação de colocação

antecipada [DEITEL e DEITEL 2003].

Logo, diante desses fatos, a experiência de implementar software em Java se

torna muito importante para usuários e programadores, como forma de inserção no

universo tecnológico.

Page 50: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

42

Capítulo 4 – TBC-AED/WEB, TBC-GRAFOS e TBC-GRAFOS/WEB: Desenvolvimento dos Produt os de Software e seus Reflexos

4.1 Considerações Iniciais

Neste capítulo, são apresentados os produtos de software TBC-AED/WEB,

TBC-GRAFOS e TBC-GRAFOS/WEB. Tais produtos de software são frutos da

pesquisa realizada durante o ano de 2005 na área de Informática na Educação e

desenvolvimento de sistemas em ambiente Java. Na seção 2, é realizada uma breve

análise do desenvolvimento dos produtos de software, considerando obstáculos

enfrentados e vantagens a serem alcançadas. Na seção 3, são apresentadas a estrutura e a

forma de organização dos produtos de software, incluindo recursos utilizados para sua

construção e a forma de estudar algoritmos em estruturas de dados e em grafos pelo

programa. Na seção 4, são descritos os temas abordados pelos programas, apresentando

conceitos e seus modelos de apresentação gráfica. Por fim, são apresentadas as

considerações finais do capítulo.

4.2 Análise metodológica do desenvolvimento

As subseções a seguir apresentam uma breve análise do desenvolvimento dos

produtos de software gerados por esta pesquisa, li stando obstáculos e vantagens visadas.

4.2.1 TBC-AED/WEB

Assimilar o conceito e o desenvolvimento de algoritmos é alvo de muitas

dificuldades enfrentadas pelos alunos de cursos da área de Computação. Alunos que

apresentam deficiências advindas dos ensinos fundamental e médio encontram grandes

dificuldades em aprender conceitos simples de programação de computadores ([ALVES

e COSTA 2004]).

Assim sendo, foi desenvolvido, em 2004, o TBC-AED (Treinamento Baseado

em Computador para Algoritmos e Estruturas de Dados) – ([SANTOS e COSTA

2005a], [SANTOS e COSTA 2005b] e [SANTOS e COSTA 2005c]) –, um produto de

software educacional que vem ao encontro dos objetivos discutidos nos capítulos

Page 51: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

43

anteriores, buscando corrigir este problema da educação básica (agil idade de

pensamento e raciocínio lógico). Ele procura analisar tópicos básicos de programação,

englobando um conteúdo teórico sintético e direto, acompanhado de processo gráfico

passo-a-passo. Isso facil ita a visualização e o entendimento das informações ora

apresentadas e disponibiliza o tempo que seria gasto em transcrever explicações do

quadro-negro para o caderno para a resolução de exercícios de aplicação e fixação.

Além disso, pode-se alcançar maior interação entre o professor e seus alunos, no sentido

de aumentar o espaço para questionamentos.

Como conseqüência da evolução, intrínseca a qualquer projeto, o TBC-AED foi

disponibil izado via web, através de applets-Java, gerando o TBC-AED/WEB

(Treinamento Baseado em Computador para Algoritmos e Estruturas de Dados via Web)

para que possa ter maior acessibil idade, além de possibilitar a troca de idéias, através da

interatividade com usuários diversos. A idéia de criar o TBC-AED/WEB surgiu para

evitar que o estudante precise fazer o download do TBC-AED para estudar, bastando ter

uma versão do aplicativo apenas em sua estação de trabalho em casa, para trabalhar

offline. Quando estiver em alguma estação conectada à Internet, ele pode executar o

programa diretamente no navegador, desde que esta estação de trabalho tenha a JVM

(Java Virtual Machine) instalada.

Foi observado que o TBC-AED/WEB é um verdadeiro material de coleta de

informações a respeito de programação, algoritmos e estruturas de dados. É um produto

desenvolvido para fins de consumo, gratuito e direcionado aos alunos da área de

Computação e Informática. Além disso, ele visa atender aos alunos que estudam

algoritmos e estruturas de dados básicas, mais especialmente os da disciplina

Algoritmos e Estruturas de Dados II oferecida pelo Departamento de Ciência da

Computação da Universidade Federal de Lavras (DCC/UFLA).

Dentre as vantagens da abordagem construtiva, estão mecanismos para facil itar

o processo de abstração, o fato de a animação refletir a interação com o aprendiz e as

várias facilidades para a detecção visual de erros. Com isso, incentiva-se o processo de

compreensão e autocorreção ([GARCIA, REZENDE e CALHEIROS 1997]). Isso pode

ser facilmente percebido em processos recursivos, os quais são de difícil explicação

Page 52: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

44

teórica, mas que podem ser vistos facilmente através da animação gráfica disponível em

ambientes que utili zam algum algoritmo desse tipo (como merge sort e quick sort).

Com isso, verifica-se que a organização do TBC-AED/WEB é amplamente

didática e esse fato serve de grande utilidade para o ensino de disciplinas que

apresentam como ementa os tópicos relacionados. Além disso, é uma experiência

desafiadora de graduandos, mestres e doutores tornar o ensino de Computação mais

dinâmico, ao despertar o seu interesse a terem a mesma iniciativa, se possível com igual

dedicação e empenho, para melhorar e aprimorar a formação de recursos humanos para

a tecnologia.

4.2.2 TBC-GRAFOS e TBC-GRAFOS/WEB

Grande parte dos alunos sente dificuldade na implementação dos algoritmos em

grafos, devido à necessidade de um suporte para a implementação, composto por

estruturas de dados e ferramentas de visualização e interação com grafos, e à diferença

de níveis de abstração entre as definições teóricas dos algoritmos e representações

computacionais necessárias para implementá-los ([SOARES et al 2004]).

Com o objetivo de permitir que os alunos sejam capazes de focar o seu estudo e

esforço em compreender o funcionamento de algoritmos clássicos em grafos, que são

largamente estudados em cursos de graduação da área, essa pesquisa propôs o

desenvolvimento de um produto de software educacional para acompanhar esse ensino.

Durante o processo de embasamento teórico-prático, vários exemplos foram

vistos e estudados para que este produto de software educacional pudesse ser elaborado

com cuidado especial, o que, a priori, não despertava qualquer tipo de receio; além

disso, o seu conteúdo era de conhecimento. No entanto, por se tratar de um processo

complexo e inovador e devido às dificuldades de representação gráfica, gerou

dificuldades iniciais expressivas. Estas estavam relacionadas a bibliotecas gráficas da

linguagem de programação Java e tiveram que ser acompanhadas e foram aos poucos

resolvidas. Isso levou a uma aquisição relativamente positiva de novos conhecimentos e

de experiências na resolução de problemas – que são os principais desafios dos

ingressos em cursos superiores na área.

Page 53: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

45

Com a introdução e a sedimentação de informações, o produto de software

educacional começou a ser desenvolvido e passou por várias etapas de melhorias,

aplicadas tanto à forma de apresentação, quanto ao processamento dos algoritmos

propriamente dito.

Dessa forma, surgiu o TBC-GRAFOS (Treinamento Baseado em Computador

para Algoritmos e Teoria dos Grafos) e o TBC-GRAFOS/WEB (Treinamento Baseado

em Computador para Algoritmos e Teoria dos Grafos via Web). O primeiro segue a

mesma linha do TBC-AED ([SANTOS e COSTA 2005a] , [SANTOS e COSTA 2005b]

e [SANTOS e COSTA 2005c]) quanto à organização da tela, além de ser para acesso

off-line, e o segundo é uma adaptação em applets-Java do TBC-GRAFOS, para Internet,

tal como o TBC-AED/WEB para o TBC-AED. Está sendo observado que o TBC-

GRAFOS, mais que uma simples ferramenta, é um verdadeiro material de coleta de

informações a respeito de programação e algoritmos em grafos. Ele representa uma

experiência profissional, uma vez que é um produto software desenvolvido para fins de

consumo que, neste caso, é gratuito e direcionado aos alunos da área de Computação e

Informática. Além disso, ele visa atender aos alunos que estudam algoritmos em grafos,

mais especialmente os da disciplina Técnicas de Programação oferecida pelo

Departamento de Ciência da Computação da Universidade Federal de Lavras

(DCC/UFLA). Isso é importante para tornar maior a interação graduando-computador, o

que propicia estímulos de curiosidade, atenção e eficácia no desenvolvimento de

trabalhos relacionados e do raciocínio lógico.

4.3 Organização e estrutura

As subseções a seguir apresentam a estrutura e a forma de organização dos

produtos de software, incluindo recursos utilizados para sua construção e a forma de

estudar os algoritmos relacionados.

4.3.1 TBC-AED/WEB

Quanto às características relacionadas à funcionalidade e à aparência, o TBC-

AED/WEB não difere do TBC-AED ([SANTOS e COSTA 2005a] , [SANTOS e

COSTA 2005b] e [SANTOS e COSTA 2005c]). Quanto à organização, o TBC-

Page 54: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

46

AED/WEB está disponível em forma de tópicos, nos sites

www.comp.ufla.br/~rpsantos/ic/2005.html e http://www.dcc.ufla.br/~heitor/Projetos/

TBC_AED_GRAFOS_WEB/TBC_AED_GRAFOS_WEB.html, que direcionam o

usuário ao assunto de seu interesse (Figura 1). Quanto à estrutura, cada tópico foi

elaborado segundo um JApplet3. A Figura 2 mostra uma janela relativa à representação

gráfica do tópico Busca Binária, que apresenta uma breve introdução a respeito do

assunto pesquisado (na parte superior), o algoritmo em Portugol4 (à esquerda), o painel

de animação, onde o algoritmo será executado graficamente (à direita), contendo uma

legenda, e um conjunto de botões (na parte inferior). Exceto este, os demais temas

contém uma janela de mensagem interna (método JOptionPane.showMessageDialog5)

usada para o efeito de passo-a-passo na parte inferior à direita (Figura 3).

Figura 1 – Página principal do TBC-AED/WEB

3 JApplet é uma classe que define os recursos necessários para a criação de um applet simples. A classe JApplet é uma subclasse de Java.swing ([DEITEL e DEITEL 2003]). 4 Por tugol ou pseudocódigo consiste em analisar o enunciado do problema e escrever, por meio de regras predefinidas, os passos a serem seguidos para a resolução do problema ([CAMPOS e ASCENCIO 2003]). 5 O método JOptionPane.showMessageDialog é um método especial da classe JOptionPane do pacote javax.swing. Esse método exibe uma caixa de diálogo para informar o usuário sobre algum evento ([DEITEL e DEITEL 2003]).

Page 55: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

47

Figura 2 – Tela Busca Binária

Figura 3 – Tela Lista Dup lamente Encadeada

Page 56: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

48

A única tela que se diferencia dos padrões descritos é relativa ao tema Árvore

Binária de Busca que, devido à sua peculiaridade de representação perante aos demais

temas, demandou maior espaço para o processo gráfico (Figura 4). As mudanças

ocorreram no posicionamento interno das informações: o algoritmo em Portugol possui

uma área menor contendo na parte inferior uma janela de mensagem interna, usada para

o efeito de passo-a-passo, e o painel de animação é exibido em uma área maior,

contendo na parte inferior um espaço para a exibição dos elementos quando o usuário

requisitar uma das formas de se imprimir uma árvore binária (pré-ordem, in-ordem ou

pós-ordem) e uma legenda. Enfim, a partir do acesso web, espera-se gerar uma

interatividade maior com outros pesquisadores, difusão da pesquisa, contribuição à

comunidade científica da área e feedback em relação ao trabalho realizado.

Figura 4 – Tela Árvore Binária de Busca

Assim, o TBC-AED/WEB é uma ferramenta valiosa para a formação de alunos,

pois atende a disciplinas que estão no início do curso e que são pré-requisitos

necessários para as disciplinas mais específicas de períodos avançados. Quando feita

uma boa base, o rendimento e o desempenho aumentam, proporcionando melhores

resultados, melhores currículos e melhores profissionais para o mercado.

Page 57: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

49

Uma característica importante do TBC-AED/WEB é ser auto-explicativo,

bastando deslizar com o mouse sobre as partes da tela para ver uma breve mensagem

sobre a região posicionada (Figura 5). Além disso, as janelas nas quais os ambientes

gráficos passo-a-passo são apresentados exibem apenas os botões os quais são de

utilidade para o usuário, dada a parte do processo em que ele se encontra estudando.

Isso deixa o usuário mais à vontade e sem preocupações quanto a quaisquer

peculiaridades, também por se tratar de um produto de software direcionado para alunos

iniciantes aos cursos de Computação.

Figura 5 – Tela Quick Sort

4.3.2 TBC-GRAFOS e TBC-GRAFOS/WEB

Quanto às características relacionadas à funcionalidade e à aparência, o TBC-

GRAFOS e TBC-GRAFOS/WEB não diferem entre si, e são semelhantes ao TBC-

AED e TBC-AED/WEB ([SANTOS e COSTA 2005a] , [SANTOS e COSTA 2005b] e

[SANTOS e COSTA 2005c]), na forma de apresentação (janela do programa) e

funcionalidade (textos introdutórios, algoritmo em Portugol e execução gráfica passo-a-

passo). Quanto à organização do TBC-GRAFOS, este apresenta uma tela principal,

Page 58: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

50

contendo uma barra de menu separando os temas, que direcionam o usuário para o

assunto de seu interesse (Figura 6). Ao selecionar um desses temas, um submenu é

apresentado, contendo um item explicativo do tema (Figura 7) e outros itens de

representação gráfica do tema. A Figura 8 mostra uma janela relativa à representação

gráfica do tópico Algoritmo de Dijkstra, que apresenta uma breve introdução a

respeito do assunto pesquisado (na parte superior), o algoritmo em Portugol (à

esquerda), o painel de animação, onde o algoritmo será executado graficamente (à

direita), contendo na parte inferior um espaço para a exibição do resultado do algoritmo

(referente ao valor do custo ou ao caminho percorrido ou ainda se o algoritmo funciona

ou não sobre o grafo) e uma legenda, e ainda um conjunto de botões (na parte inferior).

Os tópicos também contêm uma janela de mensagem interna usada para o efeito de

passo-a-passo na parte inferior à direita (Figura 9). Além disso, uma inovação do TBC-

GRAFOS e TBC-GRAFOS/WEB é que o usuário irá desenhar o grafo sobre o qual será

executado o algoritmo, podendo ainda fazer alterações no desenho do grafo, para

melhorar a visualização, antes de iniciar a execução, e também poder reiniciar o

processo sem precisar desenhar o mesmo grafo várias vezes.

Figura 6 – Tela principal do TBC-GRAFOS

Page 59: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

51

Figura 7 – Janela de mensagem exibida contendo u ma introdução a

respeito do tópico relacionado

Figura 8 – Tela Percurso em Profundidade do TBC-GRAFOS

Page 60: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

52

Figura 9 – Tela Percurso em Profundidade, com janela de mensagem interna usada para o efeito de passo-a-passo

Figura 10 – O mouse sobre a região de exibição gráfica exibe uma b reve mensagem sobre ela

Page 61: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

53

Também é importante ressaltar que, assim como no TBC-AED e TBC-

AED/WEB, uma característica importante do TBC-GRAFOS e TBC-GRAFOS/WEB

é ser auto-explicativo. Basta deslizar com o mouse sobre as partes da tela para ver uma

breve mensagem sobre a região posicionada. Além disso, as janelas dos ambientes

gráficos passo-a-passo exibem apenas os botões que têm utili dade para o usuário

(Figura 10).

Quanto à estrutura, o TBC-GRAFOS foi elaborado segundo um JFrame

principal, que se apresentará como a sua tela principal, contendo o nome e o logotipo.

Esta tela contém uma barra de menu, onde estarão os itens de menu e seus sub-itens,

separando os temas, que direcionarão o usuário para o assunto de seu interesse. Os itens

de menu representam os temas lecionados na disciplina (Figura 11) e os seus sub-itens,

um deles como direcionador para uma janela na mensagem explicativa acerca do tema

(Figura 12) e os demais como direcionadores para tópicos de representação gráfica do

tema a ser estudado (Figura 13). Quando o sub-item que direciona para a janela de

mensagem é acionado, uma caixa de diálogo de mensagem é exibida (método

JOptionPane.showMessageDialog), contendo uma introdução a respeito do tópico

relacionado (como mostrado na Figura 9). Quando um sub-item que direciona para uma

tela é acionado, um JInternalFrame6 é exibido (como mostrado na Figura 10).

Figura 11 – Barra de menu do T BC-GRAFOS

Figura 12 – Item explicativo do tema Buscas em Grafos

6 JInternalFrame é uma janela-filha que pode ser alternada com outras de mesmo tipo ou que pode ser fechada, gerenciadas por uma janela-pai e que não alteram-na ([DEITEL e DEITEL 2003]).

Page 62: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

54

Figura 13 – Item de representação gráfica do tóp ico Algoritmo de Kruskal, um dos algoritmos de Árvore Geradora Mínima disponíveis

Quanto à organização,o TBC-GRAFOS/WEB está disponível em forma de

tópicos, nos sites www.comp.ufla.br/~rpsantos/ic/2005.html e

http://www.dcc.ufla.br/~heitor/Projetos/TBC_AED_GRAFOS_WEB/TBC_AED_GRA

FOS_WEB.html, que direcionam o usuário para o assunto de seu interesse (Figura 14).

Quanto à estrutura, cada tópico foi elaborado segundo um JApplet. A Figura 15 mostra

uma janela relativa à representação gráfica do tópico Algoritmo de Bellman-Ford.

Figura 14 - Página principal do TBC-GRAFOS/WEB

Page 63: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

55

Figura 15 – Tela Algoritmo de Bellman-Ford

4.4 Temas Abordados pelos Produtos de Software: Conceitos e Aplicação

Nesta seção, serão abordados os assuntos que foram o foco das implementações

realizadas pelos produtos de software.

4.4.1 TBC-AED/WEB

O TBC-AED/WEB visa abordar temas envolvidos a um tópico em Ciência da

Computação denominado Tipo Abstrato de Dados, construído a partir dos Tipos de

Dados existentes. Um tipo de dados caracteriza o conjunto de valores a que uma

constante pertence ou que pode ser assumido por uma variável ou expressão, ou que

pode ser gerado por uma função. Por exemplo, variável do tipo Boolean, variável do

tipo inteiro, variável do tipo real. Um tipo abstrato de dados (TAD) pode ser visto como

um modelo matemático acompanhado das operações sobre o modelo. Por exemplo, o

conjunto de inteiros e suas operações (soma, subtração, etc), lista de inteiros e suas

operações (fazer lista vazia, obter o 1º elemento, inserir elemento, remover elemento,

etc).

Page 64: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

56

4.4.1.1 Busca em Vetor

Freqüentemente, o programador trabalhará com grandes quantidades de dados

armazenados em vetores (arrays), análogos em matemática a uma matriz-linha,

definidos cada qual como um novo tipo de dado cujos valores são agregados

homogêneos de um tamanho definido construído sobre um tipo primitivo. Conforme

[DEITEL e DEITEL 2003], pode ser necessário determinar se o array contém um valor

que corresponde a um determinado valor-chave. O processo de localizar o valor de um

elemento particular em um array chama-se pesquisa. Dentre as técnicas de pesquisa,

tem-se a técnica simples da pesquisa linear (busca seqüencial) – que consiste em

percorrer todo o array comparando cada elemento do vetor ao elemento procurado – e a

técnica mais eficiente da pesquisa binária (busca binária).

O algoritmo de pesquisa binária pressupõe que os elementos no array estão

ordenados, por exemplo em ordem crescente, e elimina metade dos elementos no array

que está sendo pesquisado a cada comparação. O algoritmo localiza o elemento do meio

do array e o compara com a chave de pesquisa. Se forem iguais, a chave de pesquisa foi

localizada e a pesquisa binária retorna o valor desse elemento. Caso contrário, a

pesquisa binária reduz o problema, pesquisando metade do array. Se a chave de

pesquisa foi menor que o elemento do meio do array, a primeira metade do array será

pesquisada; caso contrário, a segunda metade do array será pesquisada. Se a chave de

pesquisa não for o elemento do meio do subarray (um pedaço do array original)

especificado, o algoritmo será repetido para um quarto do array original. A pesquisa

continua até que a chave de pesquisa seja igual ao elemento do meio de um subarray ou

até que o subarray consista em apenas um elemento que não é igual à chave de pesquisa

(isto é, a chave de pesquisa não foi localizada). Essa é uma enorme melhora no

desempenho em relação à pesquisa linear que exigia comparação da chave de pesquisa

com todos os elementos existentes em posições subseqüentes, da primeira até a posição

em que se encontra o elemento, ou até a última posição, encontrando-o ou não, no pior

caso ([DEITEL e DEITEL 2003]).

Page 65: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

57

Baseado nestas definições, para agilizar e melhorar a apresentação do tema, o

TBC-AED/WEB apresenta os conceitos e um ambiente gráfico relacionados à busca

em vetor. Analisando o funcionamento do ambiente gráfico:

• ao clicar no item “Busca Binária” (ver site do TBC-AED/WEB na Figura 1), uma

applet é exibido no browser, contendo o ambiente gráfico passo-a-passo, mostrado

na Figura 2. A partir de então, o usuário pode começar a estudar e entender esse

algoritmo;

• ao clicar no botão “Conceitos” , localizado na parte inferior do ambiente gráfico,

uma janela de mensagem é exibida, apresentando os conceitos relacionados ao tema

“Busca em Vetor” e o algoritmo em Portugol do método de busca seqüencial,

conforme Figura 16;

Figura 16 – Janela de mensagem exibida contendo uma introdução a respeito do tópico relacionado

• devido a apenas os botões necessários em dado instante estarem habilitados, ao

iniciar, o usuário deve clicar no botão Informações para que uma janela de

mensagem seja exibida, contendo algumas considerações sobre o funcionamento do

programa (Figura 17);

Page 66: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

58

Figura 17 – Janela de mensagem exibida ao clicar no bo tão Informações

• ao clicar em OK, o botão Introdução estará livre para que o usuário possa prosseguir

com seus estudos. Ao clicar nele, uma breve introdução é exibida na área superior

do ambiente gráfico, além de uma janela de mensagem direcionando o usuário em

sua forma de prosseguir no programa (Figura 18);

• feito isso, o botão Iniciar estará disponível para que o usuário possa clicar nele para

exibir o algoritmo de busca binária e uma janela de diálogo a fim de que o usuário

entre com o número de elementos do vetor a ser gerado sobre o qual deseja que a

operação seja realizada (Figura 19);

• ao fornecer o tamanho do vetor, o painel superior à direita exibe a estrutura com no

máximo 12 números de dois algarismos gerados aleatoriamente. Uma nova janela de

mensagem é exibida para que o usuário possa fornecer com o valor a ser procurado

na estrutura, usando o processo de busca binária (Figura 20);

• a partir desse momento, uma janela de diálogo contendo uma dica de como

prosseguir durante o processo gráfico é exibida (Figura 21) e o botão Passos do

Processo é habilitado para que o usuário possa acompanhar o processo passo-a-

Page 67: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

59

passo. Além disso, uma legenda é exibida na parte inferior à direita (Figura 22). Ao

ir pressionando o botão mencionado, alguns sub-vetores são exibidos, mostrando as

partes do vetor original sobre as quais está sendo processada a busca binária e o

elemento mediano de cada parte (Figura 23);

Figura 18 – Ao clicar no bo tão Introdução, a área superior é p reenchida com uma breve introdução e uma janela de mensagem é exibida

Figura 19 – Uma janela de mensagem é exibida para que o u suário entre com o número de elementos

Page 68: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

60

Figura 20 – Uma janela de mensagem é exibida para que o u suário po ssa entrar com o elemento a ser procurado

Figura 21 – Janela de mensagem exibida quando do advento do processo gráfico

Page 69: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

61

Figura 22 – O botão Passos do Processo é habilitado p ara iniciar o processo gráfico

Figura 23 – Cada um dos su b -vetores é exibido a c ada clique sobre o bo tão Passos do Processo

Page 70: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

62

• ao fim da busca, uma janela de mensagem é exibida informando se o elemento foi

ou não encontrado (Figura 24).

Figura 24 – Janela de mensagem contendo o resultado da pesquisa

Analisando o decorrer deste tema do TBC-AED/WEB, percebe-se que há uma

facil idade maior em apresentar o conteúdo e considerações acerca do problema a ser

discutido. Sugere-se como trabalho aos discentes implementar outros tipos de pesquisa

em vetor, por exemplo a busca ternária, para que o aluno possa assimilar o conteúdo e

consolidar seu conhecimento sobre o assunto.

4.4.1.2 Métodos de Ordenação

Os algoritmos de ordenação constituem bons exemplos de como resolver

problemas utili zando computadores. As técnicas de ordenação permitem apresentar um

conjunto amplo de algoritmos distintos para resolver uma mesma tarefa. Dependendo da

aplicação, cada algoritmo considerado possui uma vantagem particular sobre os outros.

Além disso, os algoritmos ilustram muitas regras básicas para a manipulação de

estruturas de dados ([ZIVIANI 1992]).

Page 71: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

63

Ordenar corresponde ao processo de rearranjar um conjunto de objetos em uma

ordem ascendente ou descendente. O objetivo principal da ordenação é facil itar a

recuperação posterior de itens do conjunto ordenado. Imagine como seria dif ícil util izar

um catálogo telefônico se os nomes das pessoas não estivessem listados em ordem

alfabética. A atividade de colocar as coisas em ordem está presente na maioria das

aplicações onde os objetos armazenados têm que ser pesquisados e recuperados, tais

como dicionários, índices de livros, tabelas e arquivos ([ZIVIANI 1992]).

No TBC-AED/WEB, foram implementados os seguintes métodos de ordenação:

Select Sort, Insert Sort, Boubble Sort, Merge Sort e Quick Sort. Seus conceitos são

apresentados nas seções subseqüentes.

4.4.1.2.1 Select Sort

Segundo [ZIVIANI 1992], um dos algoritmos mais simples de ordenação é o

método Select Sort, cujo princípio de funcionamento é : selecione o menor item do vetor

e troque-o com o item que está na primeira posição do vetor. Repita estas duas

operações com os n – 1 itens restantes, depois com os n – 2 itens, até que reste apenas

um elemento.

Apesar de ser um método de fácil entendimento, sua apresentação através de um

ambiente gráfico como o TBC-AED/WEB é de grande utilidade, pois permite ao

usuário verificar seus conhecimentos através da movimentação de elementos com cores

diferentes, o que realça os passos do algoritmo. Analogamente, o tópico Select Sort

possui os mesmos procedimentos iniciais do tema Busca Binária, exceto a partir do

funcionamento do processo gráfico. Agora, o usuário terá que clicar em OK dentro de

uma janela de mensagem exibida na parte inferior da área de processo gráfico. Isso pode

ser verificado na Figura 25.

4.4.1.2.2 Insert Sort

Este é o método preferido dos jogadores de cartas, conforme [ZIVIANI 1992].

Em cada passo, a partir de i = 2 (onde i é a posição correspondente a um elemento no

vetor a ser ordenado), o i-ésimo item da seqüência fonte é pego e transferido para a

seqüência destino, sendo inserido no lugar apropriado. Como mostrado na Figura 26,

Page 72: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

64

este tópico em nada difere do descrito anteriormente no que se refere ao funcionamento

e organização, apesar de ainda ser um dos métodos de ordenação mais simples.

Figura 25 – Tópico Select Sort do tema Métodos de Ordenação

Figura 26 – Tópico Insert Sort do tema Métodos de Ordenação

Page 73: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

65

4.4.1.2.3 Boubb le Sort

No Boubble Sort, compara-se o último elemento com o penúltimo e troca-se a

posição dos dois, se eles estiverem fora de ordem. Procede-se da mesma maneira com

os outros números até o início da lista, isto é, compara-se o penúltimo com o

antepenúltimo e assim sucessivamente. Se os elementos forem testados desde o último

até o primeiro, sem ser feita nenhuma troca é porque já estão ordenados. Caso contrário,

isto é, toda vez que houver pelo menos uma troca, volta-se ao fim do vetor e repete-se o

mesmo procedimento. Deve-se, no entanto, considerar que no primeiro retorno é

suficiente fazer as comparações, desde o último elemento até o segundo, pois, neste

caso, o menor de todos já borbulhou (método da bolha), isto é, o menor elemento ficou

arrumado na primeira posição do vetor (Figura 27).

Figura 27 – Tópico Boubb le Sort do tema Métodos de Ordenação

4.4.1.2.4 Merge Sort

Foi um dos primeiros algoritmos usados em computadores. O processo chave é

fundir metades ordenadas em um vetor ordenado. No entanto, estas metades precisam

Page 74: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

66

estar ordenadas primeiro, o que é realizado fundindo as suas metades ordenadas. Isso

pode ser feito de forma recursiva, o que torna mais complexo o entendimento deste

algoritmo. Devido a esse fato, sua implementação demandou um certo tempo. No

entanto, isso foi superado e a tela Merge Sort foi elaborada e apresentada da mesma

forma que os demais métodos de ordenação (Figura 28).

Figura 28 – Tópico Merge Sort do tema Métodos de Ordenação

4.4.1.2.5 Quick Sort

Quick Sort é o algoritmo de ordenação mais rápido que se conhece para uma

ampla variedade de situações, sendo provavelmente mais utilizado do que qualquer

outro algoritmo. Segundo [ZIVIANI 1992], a idéia básica é partir do problema de

ordenar um conjunto com n itens em dois problemas menores. A seguir, os problemas

menores são ordenados independentemente e depois os resultados são combinados para

produzir a solução do problema maior. A parte mais delicada deste método é relativa ao

procedimento partição, o qual tem que rearranjar o vetor A[1..n] através da escolha

arbitrária de um item do vetor chamado pivô, de tal forma que as três condições abaixo

sejam simultaneamente satisfeitas:

• o pivô x é colocado no seu lugar definitivo A[k], para algum índice k do vetor;

Page 75: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

67

• todos os itens em A[1], A[2], ..., A[k - 1] são menores ou iguais a A[k];

• todos os itens em A[k + 1], A[k + 2], ..., A[n] são maiores ou iguais a A[k].

Este comportamento pode ser descrito pelo seguinte algoritmo: primeiro, escolha

arbitrariamente um item do vetor e coloque-o em um variável x (no TBC-AED, foi

escolhido o primeiro elemento do vetor). A seguir, percorra o vetor a partir da esquerda

até que um item A[ i] �������������� �������������������������������������������� �����"!�# ����$������% �&'�(���

direita até que um item A[ j] ) ���$��������� ���������*+����������,����&%� itens A[ i] e A[ j] estão fora

de lugar no vetor final então troque-os de lugar. Continue este processo até que os

apontadores i e j se cruzem em algum ponto do vetor. Ao final o vetor A está

particionado em uma parte esquerda com chaves menores ou iguais a x e uma parte

direita com chaves maiores ou iguais a x.

Este algoritmo também demandou certo trabalho, pois se trata de outro método

de ordenação que utiliza a recursão como meio facilitador de ser executado. Além disso,

o TBC-AED/WEB trata esse tópico, do ponto da apresentação, como os demais, o que

torna mais fácil sua apresentação gráfica, dada a complexidade de visualização de

algoritmos recursivos (Figura 29).

Figura 29 – Tópico Quick Sort do tema Métodos de Ordenação

Page 76: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

68

4.4.1.3 Estruturas de Dados de Alocação Estática e Dinâmica de Memória

Tipos abstratos de dados que utilizam alocação estática de memória são aqueles

nos quais o comprimento é definido a priori, através do uso de um vetor. Isso representa

uma limitação em tais tipos. No entanto, a contigüidade de elementos pode representar

uma vantagem, que torna o acesso aos dados mais fácil e rápido. Os tipos abstratos de

dados apresentados neste trabalho e que podem utilizar alocação estática de memória

são: i) lista linear; ii) fila; e iii) pilha.

Os mesmos tipos abstratos de dados podem utilizar alocação dinâmica de

memória, que consiste em alocar espaço em memória à medida que for precisando. Isso

representa uma vantagem em tais tipos. No entanto, não há a contigüidade de elementos

em memória, o que pode representar uma desvantagem, devido a riscos advindos de má

implementação (acesso e operações sobre posições errôneas de memória).

4.4.1.3.1 Listas

Conforme [ZIVIANI 1992], uma das formas mais simples de interligar os

elementos de um conjunto é através de uma lista. Lista é uma estrutura onde as

operações inserir, retirar e localizar são definidas. Uma lista linear é uma seqüência de

um ou mais x1, x2, ..., xn, onde xi é de um determinado tipo e n representa o tamanho da

lista linear. Sua principal propriedade estrutural envolve as posições relativas dos itens

em uma dimensão.

Para criar um tipo abstrato de dados lista, é necessário definir um conjunto de

operações sobre os objetos do tipo lista. O conjunto de operações a ser definido depende

de cada aplicação, não existindo um conjunto de operações que seja adequado a todas as

aplicações.

Quanto à implementação feita deste tópico para o TBC-AED/WEB, uma

diferença relativa é notada. O usuário terá a oportunidade de interagir mais com o

produto de software, uma vez que executará as operações sobre o TAD lista e observará

suas ocorrências passo-a-passo. A escolha da tarefa a ser executada é feita através de

uma janela de diálogo exibida quando o usuário clicar no botão Passos do Processo

(Figura 30).

Page 77: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

69

Figura 30 – Tópico L ista Linear do tema Estruturas Estáticas

No entanto, segundo [ZIVIANI 1992], em uma implementação de listas através

de apontadores, cada item da lista é encadeado com o seguinte através de uma variável

do tipo apontador. Este tipo de implementação permite utilizar posições não contíguas

de memória, sendo possível inserir e retirar elementos sem haver necessidade de

deslocar os itens seguintes da lista. A lista possui um apontador indicando o início da

lista.

A lista é constituída de nós, onde cada nó contém um item da lista (informação)

e um apontador para o nó seguinte. A implementação através de apontadores permite

inserir ou retirar itens do meio da lista a um custo constante, aspecto importante quando

a lista tem que ser mantida em ordem. Em aplicações em que não existe previsão sobre

o crescimento da lista, é conveniente usar listas encadeadas por apontadores, porque,

neste caso, o tamanho máximo da lista não precisa ser definido a priori. A maior

desvantagem deste tipo de implementação é a utili zação de memória extra para

armazenar os apontadores.

No TBC-AED/WEB, foram feitas duas implementações de listas com alocação

de memória dinâmica: lista simplesmente encadeada e lista duplamente encadeada. A

diferença entre elas é que na primeira existe apenas um ponteiro, que indica qual o

Page 78: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

70

próximo elemento da lista, e na segunda, existe a possibilidade de “caminhar” na lista

em direção aos elementos anteriores e posteriores. Quanto à forma de apresentação da

tela, não há eventuais detalhes em relação às estruturas de dados de alocação estática,

salvo os ponteiros existentes e um ponteiro, que aponta para o primeiro elemento

(Figura 31 e Figura 32).

O tópico lista circular não foi implementado. Segundo [SZWARCFITER e

MARKENZON 1994], uma pequena modificação na estrutura física da lista pode ser de

grande auxílio: obrigar o último nó da lista a apontar para o nó-cabeça, criando assim

uma lista circular encadeada. Com isso, tem-se mais dois tipos derivados de listas: lista

circular simplesmente encadeada e lista circular duplamente encadeada, que seguem a

definição mencionada, somada à forma circular da estrutura de dados. Como trabalho,

sugere-se que o docente solicite aos alunos que implementem esta estrutura de dados,

para fixarem os conceitos adquiridos nas aulas.

Figura 31 – Tópico L ista Simplesmente Encadeada do tema Estruturas Dinâmicas

Page 79: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

71

Figura 32 – Tópico L ista Duplamente Encadeada do tema Estruturas Dinâmicas

4.4.1.3.2 Filas

Uma fila é uma lista linear em que todas as inserções são realizadas em um

extremo da lista e todas as retiradas e os acessos são realizados no outro extremo da

lista. O modelo intuitivo de uma fila é o de uma fila de espera em que as pessoas no

início da fila são servidas primeiro e as pessoas que chegam, entram no fim da fila. Por

esta razão, as filas são chamadas de listas fifo, termo formado a partir de first-in, first-

out. Existe uma ordem linear para filas que é a “ordem de chegada”. Filas são utilizadas

quando se deseja processar itens de acordo com a ordem “primeiro que chega, primeiro

atendido” . Sistemas operacionais utili zam filas para regular a ordem na qual tarefas

devem receber processamento e recursos devem ser alocados a processos ([ZIVIANI

1992]).

A sua implementação pelo TBC-AED/WEB segue os mesmos passos da tópico

li sta linear, descrito anteriormente, com a participação ativa do usuário durante as

operações realizadas sobre o tipo abstrato de dados (Figura 33).

Page 80: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

72

Figura 33 – Tópico Fila do tema Estruturas Estáticas

A fila, implementada com uso de alocação dinâmica de memória, possui dois

apontadores indicando o início e o final da fila. Quando a fila está vazia, os apontadores

“ frente” e “ trás” são “aterrados” . Para enfileirar um novo item, basta criar um nó, ligá-lo

após o último nó na fila, colocar nele o novo item e fazer o apontador “trás” apontar

para ele. Para desenfileirar um item, basta fazer o apontador “ frente” apontar para o

segundo nó e desligar o nó a ser retirado do segundo nó. A fila é implementada através

de nós, onde cada nó contém uma(informação) da fila e um apontador para outro nó.

No TBC-AED/WEB, a implementação deste tópico não difere da estrutura fila

de alocação estática de memória, quanto à funcionalidade, mas apresenta ponteiros que

a classificam como estruturas de alocação dinâmica de memória (Figura 34).

4.4.1.3.3 Pilhas

Uma pilha é uma lista linear em que todas as inserções, retiradas e, geralmente,

todos os acessos são feitos em apenas um extremo da lista.

Page 81: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

73

Figura 34 – Tópico Fila do tema Estruturas Dinâmicas

Os itens em uma pilha estão colocados um sobre o outro, com o item inserido

mais recentemente no topo e o item inserido menos recentemente no fundo. O modelo

intuitivo de uma pilha é o de um monte de pratos em uma prateleira, sendo conveniente

retirar pratos ou adicionar novos pratos na parte superior. Esta imagem está

freqüentemente associada com a teoria de autômatos, onde o topo de uma pilha é

considerado como o receptáculo de uma cabeça de leitura/gravação que pode empilhar e

desempilhar itens da pilha ([HOPCROFT e ULLMAN 1969 apud ZIVIANI 1992]).

As pilhas possuem a seguinte propriedade: o último item inserido é o primeiro

item que pode ser retirado da lista. Por esta razão as pilhas são chamadas de listas li fo,

termo formado a partir de last-in, first-out. Existe uma ordem linear para pilhas, que é a

ordem do “mais recente para o menos recente”. Esta propriedade torna a pilha uma

ferramenta ideal para processamento de estruturas aninhadas de profundidade

imprevisível. A qualquer instante uma pilha contém uma seqüência de obrigações

Page 82: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

74

adiadas, cuja ordem de remoção da pilha garante as estruturas mais internas serão

processadas antes das estruturas mais externas. As pilhas ocorrem também em conexão

com algoritmos recursivos e estruturas de natureza recursiva, tais como as árvores.

No caso do tópico implementado pelo TBC-AED/WEB, a metodologia de

apresentação é a mesma das demais estruturas de alocação estática de memória,

conforme apresentado na Figura 35.

Figura 35 – Tópico Pilha do tema Estruturas Estáticas

A pilha, implementada com uso de alocação dinâmica de memória, possui um

apontador indicando o topo da pilha. Para desempilhar o item xn, basta o apontador do

topo da pilha apontar para o nó seguinte. Para empilhar um novo item, basta fazer a

operação contrária, criando um novo nó, colocando o novo item no novo nó e fazendo-o

como o primeiro nó da pilha (o apontador do topo da pilha aponta para o novo nó). Cada

nó de uma pilha contém um item (informação) da pilha e um apontador para outro nó.

Page 83: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

75

Dessa forma, a implementação deste tópico também segue o padrão das

estruturas de alocação estática de memória (Figura 36).

Figura 36 – Tópico Pilha do tema Estruturas Dinâmicas

4.4.1.4 Árvores

As listas ligadas geralmente fornecem maior flexibil idade que as matrizes, mas

são estruturas lineares e é difícil usá-las para organizar uma representação hierárquica.

Embora as pilhas e as filas possuam alguma hierarquia, são limitadas a uma dimensão.

Para superar essa limitação, criou-se um novo tipo abstrato de dados chamado árvore. A

definição de uma árvore não impõe qualquer condição sobre o número de filhos de um

nó. Esse número pode variar de zero a qualquer inteiro.

Segundo [SZWARCFITER e MARKENZON 1994], em diversas aplicações,

necessita-se de estruturas mais complexas do que puramente seqüenciais, as quais foram

examinadas. Entre essas, destacam-se as árvores, por existirem inúmeros problemas

práticos que podem ser modelados através delas. Além disso, as árvores, em geral,

admitem um tratamento computacional simples e eficiente.

Page 84: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

76

Da mesma forma que as listas lineares, árvores são estruturas de dados que

caracterizam uma relação entre os dados que a compõem. Neste caso, a relação

existente entre os dados (denominados nós) é uma relação de hierarquia ou de

composição, onde um conjunto de dados é hierarquicamente subordinado a outro

([VELOSO et al 1986]).

Segundo [VELOSO et al 1986], árvores binárias são estruturas do tipo árvore,

onde o grau (quantidade de filhos) de cada nó é menor ou igual a dois. No caso de

árvores binárias, distinguem-se as subárvores de um nó entre subárvore da esquerda e

subárvore da direita. Assim, se o grau de um nó for igual a 1, deve ser especificado se a

sua subárvore é a da esquerda ou a da direita. Uma árvore binária também pode ser

vazia, isto é, não possuir nenhum nó. Entretanto, deve ser considerado que uma árvore

binária não é um caso especial de árvore ([SZWARCFITER e MARKENZON 1994]).

A estrutura de árvore é utilizada em casos onde os dados ou objetos a serem

representados possuem relações hierárquicas entre si. Considere, por exemplo, a

estrutura de uma universidade, composta de centros. Cada centro composto por um

certo número de departamentos. Cada departamento oferece um conjunto de

disciplinas nas quais são matriculados os alunos. Outra aplicação é a representação de

expressões aritméticas, que podem ser representadas sob a forma de árvores binárias, de

tal forma que a hierarquia (prioridade) dos operadores fique clara (bem definida). Pode-

se ainda utilizar árvores binárias para armazenar dados de maneira tal que, ao final da

operação de armazenamento, os dados estejam ordenados, segundo um dado critério,

independente da ordem de armazenamento ([VELOSO et al 1986]).

A estrutura do tópico árvore binária implementada pelo TBC-AED/WEB não

segue a risca o padrão dos demais tópicos abordados. Como já foi mencionado na seção

4.3.1, ocorrem algumas mudanças na apresentação, além das estratégias utilizadas para

a exibição de deste tipo abstrato de dados, as quais demandaram cálculos matemáticos

envolvidos com a representação geométrica. Entretanto, com relação à funcionalidade,

nada de especial está agregado ao tópico (Figura 37).

Page 85: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

77

Figura 37 – Tópico Árvore Binária de Busca do tema Árvores

4.4.2 TBC-GRAFOS e TBC-GRAFOS/WEB

Os grafos são estruturas de dado sempre presentes em Ciência da Computação, e

os algoritmos para trabalhar com eles são fundamentais na área. Existem centenas de

problemas computacionais interessantes definidos em termos de grafos. Nesse sentido, o

TBC-GRAFOS e sua evolução, o TBC-GRAFOS/WEB, visam abordar alguns dos

mais significativos algoritmos em grafos, relacionados a buscas em grafos

(profundidade e largura), cálculo de árvore geradora mínima (Kruskal e Prim) e

caminho mínimo entre vértices (Dijkstra e Bellman-Ford).

4.4.2.1 Buscas e m Grafos

O percurso visa resolver um problema básico: explorar um grafo. Ou seja, dado

um grafo, deseja-se obter um processo sistemático de como caminhar pelos seus

vértices e suas arestas.

Page 86: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

78

Embora existam diversas maneiras de realizar o percurso sistematicamente,

alguns processos ou algoritmos de percurso ocorrem com bastante freqüência, e são: i)

percurso em largura; e ii ) percurso em profundidade. Segundo [CORMEN et al 2002],

tais algoritmos demandam métodos para representar um grafo e para pesquisar um

grafo. Um algoritmo de pesquisa de grafo pode descobrir muito sobre a estrutura de um

grafo. Muitos algoritmos começam pesquisando seu grafo de entrada para obter

informações estruturais. Outros algoritmos de grafos são organizados como elaborações

simples de algoritmos básicos de pesquisa de grafos. As técnicas para pesquisar um

grafo estão no núcleo do campo de algoritmos de grafos.

O TBC-GRAFOS apresenta os conceitos e dois ambientes gráficos relacionados

às buscas em grafos. Dentro do menu “Buscas em Grafos” , o submenu “Buscas”

apresenta conceitos teóricos sobre buscas em grafos (conforme mostrado na Figura 7), e

os outros dois apresentam os ambientes gráficos para os algoritmos de percurso em

profundidade e percurso em largura. O TBC-GRAFOS/WEB apresenta os mesmos

tópicos de buscas em grafos tratados no TBC-GRAFOS (percurso em profundidade e

percurso em largura), com o único diferencial de ser via web.

4.4.2.1.1 Percurso em Profundidade

A estratégia seguida pela pesquisa em profundidade é, como seu nome implica,

procurar “mais fundo” no grafo sempre que possível. Conforme [CORMEN et al 2002],

na pesquisa primeiro na profundidade, as arestas são exploradas a partir do vértice v

mais recentemente descoberto que ainda tem arestas inexploradas saindo dele. Quando

todas as arestas de v são exploradas, a pesquisa “regressa” para explorar as arestas que

deixam o vértice a partir do qual v foi descoberto. Esse processo continua até se

descobrir todos os vértices acessíveis a partir do vértice de origem inicial. Se restarem

quaisquer vértices não descobertos, então um deles será selecionado como uma nova

origem, e a pesquisa se repetirá a partir daquela origem. Esse processo inteiro será

repetido até que todos os vértices sejam descobertos. Neste caso, deve-se escolher um

vértice inicial e o percurso é feito em grafos não direcionados.

Page 87: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

79

Baseado nestas definições, para agilizar e melhorar a apresentação do tema, o

TBC-GRAFOS e TBC-GRAFOS/WEB apresentam um ambiente gráfico relacionado ao

percurso em profundidade. Analisando o funcionamento do ambiente gráfico:

• ao clicar no item de menu “Buscas em Grafos” , sub-item “Percurso em

Profundidade”, uma janela interna é exibida, contendo o ambiente gráfico passo-a-

passo, mostrado na Figura 8. A partir de então, o usuário pode começar a estudar e

entender esse algoritmo;

• devido a apenas os botões necessários em dado instante estarem habilitados, ao

iniciar, o usuário deve clicar no botão Informações para que uma janela de

mensagem seja exibida, contendo algumas considerações sobre o funcionamento do

programa (Figura 38);

Figura 38 – Janela de mensagem exibida ao clicar no bo tão Informações

• ao clicar em OK, o botão Introdução estará livre para que o usuário possa prosseguir

com seus estudos. Ao clicar nele, uma breve introdução é exibida na área superior

do ambiente gráfico, além de uma janela de mensagem direcionando o usuário em

sua forma de prosseguir no programa (Figura 39);

• feito isso, o botão Iniciar estará disponível para que o usuário possa clicar nele para

exibir o algoritmo de percurso em profundidade e uma janela de diálogo a fim de

que o usuário entenda o que deve fazer para prosseguir no ambiente. Neste caso, ele

terá que desenhar o grafo desejado no painel cinza à direita e clicar no botão Opções

Page 88: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

80

para entender como fazê-lo. Nesse momento, uma legenda aparecerá na parte

inferior do painel de desenho de grafos para indicar as cores que os nós do grafo

desenhado poderão assumir quando da execução do algoritmo (Figura 40 e Figura

41);

Figura 39 – Ao clicar no bo tão Introdução, a área superior é p reenchida com uma breve introdução e uma janela de mensagem é exibida

Figura 40 – Uma janela de mensagem é exibida para que o u suário entenda o que deve fazer para prossegu ir no ambiente

Page 89: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

81

Figura 41 – Ao clicar no bo tão Opções, o usuário visualiza quais ações deve fazer para montar seu grafo

• a partir disso, o usuário deverá desenhar seu grafo, inserindo e/ou removendo nós e

arestas, configurando os pesos destas quando o algoritmo assim o permitir (não é o

caso deste algoritmo de percurso em profundidade), reposicionando nós para

melhorar visualização e ainda alterar o nó inicial, também quando o algoritmo assim

o permitir. O botão Passos do Processo é habilitado para que o usuário possa iniciar

o processo passo-a-passo (Figura 42);

• ao clicar no botão Passos do Processo, uma janela de mensagem interna é exibida no

canto inferior esquerdo do ambiente, para que, a cada clique em OK, o usuário

prossiga nos passos do algoritmo executado sobre o grafo desenhado (Figura 43).

Nesse processo, o painel de desenho estará travado para qualquer alteração do grafo,

devendo-se terminar a execução do algoritmo;

• após o término da execução do algoritmo, o usuário poderá cli car no botão Reiniciar

para que possa exibir o grafo originalmente desenhado, antes do processo gráfico.

Nesse caso, ele poderá fazer alterações sobre o grafo e/ou iniciar o algoritmo sobre

ele novamente (Figura 44). Ao invés disso, o usuário ainda poderá continuar no

Page 90: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

82

ambiente e clicar no botão Novo Grafo para limpar o painel de desenho de grafos e

montar uma nova estrutura para a execução do algoritmo (Figura 45).

Figura 42 – Montagem do g rafo no p ainel cinza à direita

Figura 43 – Ao clicar no bo tão Passos do Process o, uma janela de mensagem interna é exibida na parte inferior à esquerda, para efeito de

passo-a-passo

Page 91: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

83

Figura 44 – Ao clicar no bo tão Reiniciar, o usuário terá o mesmo grafo que desenhou antes de iniciar o algoritmo, podendo fazer alterações

Page 92: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

84

Figura 45 – Ao clicar no bo tão Novo Grafo, o usuário continuará no ambiente, mas terá que desenhar um novo grafo para iniciar o algoritmo

O TBC-GRAFOS/WEB funciona de forma análoga ao TBC-GRAFOS. As

diferenças são as seguintes:

• ao clicar no item “Percurso em Profundidade” (ver site do TBC-GRAFOS/WEB na

Figura 14), uma applet é exibido no brownser, contendo o ambiente gráfico passo-a-

passo, mostrado na Figura 15. A partir de então, o usuário pode começar a estudar e

entender esse algoritmo;

• ao clicar no botão “Conceitos” , localizado na parte inferior do ambiente gráfico,

uma janela de mensagem é exibida, apresentando os conceitos relacionados ao tema

“Buscas em Grafos” (Figura 46).

Figura 46 - Janela de mensagem exibida contendo uma introdução a respeito do tópico relacionado

4.4.2.1.2 Percurso em Largura

De acordo com [CORMEN et al 2002], a pesquisa primeiro na extensão, ou

percurso em largura, é um dos algoritmos mais simples para se pesquisar um grafo e é o

Page 93: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

85

arquétipo de muitos algoritmos de grafos importantes. O algoritmo de caminhos mais

curtos de origem única de Dijkstra e o algoritmo de árvore de amplitude mínima de

Prim utilizam idéias semelhantes às que aparecem na pesquisa primeiro em extensão.

Dado um grafo G = (V,E) e um vértice de origem distinta s, o percurso em

largura explora sistematicamente as arestas de G até “descobrir” cada vértice acessível a

partir de s. O algoritmo calcula a distância (menor número de arestas) desde s até todos

os vértices acessíveis desse tipo. Ele também produz uma “árvore primeiro na extensão”

com raiz s que contém todos os vértices acessíveis. Para qualquer vértice v acessível a

partir de s, o caminho na árvore primeiro na extensão de s até v corresponde a um

caminho mais curto de s até v em G, ou seja, um caminho que contém o número mínimo

de arestas. O algoritmo funciona sobre grafos direcionados e também não direcionados.

No TBC-GRAFOS e TBC-GRAFOS/WEB, o percurso em largura é feito em grafos não

direcionados.

O percurso em largura recebe esse nome porque expande a fronteira entre

vértices descobertos e não descobertos uniformemente ao longo da extensão da

fronteira. Isto é, o algoritmo descobre todos os vértices à distância k a partir de s, antes

de descobrir quaisquer vértices à distância k + 1. Neste caso, dentre todos os vértices a

partir do qual será realizada a próxima exploração de aresta e incidente a alguma aresta

ainda não explorada, deve-se escolher aquele menos recentemente alcançado no

percurso.

O TBC-GRAFOS e TBC-GRAFOS/WEB tratam o percurso em largura de

forma análoga ao percurso em profundidade, com alterações apenas no algoritmo em si

(Figura 47 e Figura 48).

4.4.2.2 Árvore Geradora Mínima

No projeto de circuitos eletrônicos, freqüentemente é necessário tornar os pinos

de vários componentes eletricamente equivalentes, juntando a fiação de todos eles. Para

interconectar um conjunto de n pinos, podemos usar um arranjo de n – 1 fios, cada qual

conectando dois pinos. De todos os arranjos possíveis, aquele que utiliza a quantidade

mínima de fio é normalmente o mais desejável.

Page 94: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

86

Figura 47 – Tela Percurso em Largura do TBC-GRAFOS

Figura 48 – Tela Percurso em Largura do TBC-GRAFOS/WEB

Page 95: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

87

Podemos modelar esse problema de fiação com um grafo conectado não

orientado G = (V,E), onde V é o conjunto de pinos, E é o conjunto de interconexões

possíveis entre pares de pinos e, para cada aresta (u,v) � E, temos um peso w(u,v)

especificando o custo (a quantidade de fio necessária) para conectar u e v. Então,

desejamos encontrar um subconjunto acíclico T está contido ou igual a E que conecte

todos os vértices e cujo peso total w(T) – somatório dos pesos w(u,v) de todas as arestas

pertencentes a T – seja minimizado. Tendo em vista que T é acíclico e conecta todos os

vértices, ele deve formar uma árvore, que é chamada árvore de amplitude (árvore

geradora), pois “se estende” pela amplitude do grafo G. Chama-se ao problema de se

determinar a árvore T de problema da árvore de amplitude mínima – árvore geradora

mínima ([CORMEN et al 2002]).

Seja um grafo não-direcionado conexo G = (V,E). Um subgrafo de G é um grafo

G’ = (V’ ,E’) onde V’ está contido ou é igual a V e E’ está contido ou é igual a E. Um

subgrafo minimal de G é chamado árvore geradora. Uma árvore geradora tem as

seguintes propriedades: i) V’ = V; ii) não tem ciclo; e iii) é conexo.

Ao percorrer um grafo não direcionado e conexo, todos os vértices são visitados,

independente de onde se inicia o percurso. Neste processo, algumas arestas são

percorridas, outras não. O conjunto de arestas percorridas constitui uma árvore

geradora. O custo total de um grafo não direcionado com arestas ponderadas (com peso)

é o somatório dos pesos. Uma árvore geradora de custo mínimo (AGM) de um grafo é

uma árvore geradora desse grafo que possui o menor custo total.

O TBC-GRAFOS apresenta os conceitos e dois ambientes gráficos relacionados

a árvore geradora mínima em grafos. Dentro do menu “Árvore Geradora Mínima”, o

submenu “Árvore Geradora Mínima” apresenta conceitos teóricos sobre o tema, e os

outros dois apresentam os ambientes gráficos para os algoritmos de Kruskal e de Prim.

O TBC-GRAFOS/WEB apresenta os mesmos tópicos de árvore geradora mínima em

grafos tratados no TBC-GRAFOS (algoritmos de Kruskal e de Prim). Os dois ambientes

que relacionam estes algoritmos têm as suas formas de apresentação e funcionamento

semelhantes aos ambientes de buscas em grafos, com algumas adaptações referentes à

execução dos algoritmos.

Page 96: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

88

4.4.2.2.1 Algoritmo de Kruska l

É um algoritmo utilizado para se encontrar a árvore geradora mínima de um

grafo não direcionado e conexo. Seu princípio de funcionamento é o seguinte:

inicialmente, cada vértice do grafo é uma subárvore. Se duas subárvores analisadas não

estão conectadas entre si, elas são fundidas. O algoritmo prossegue até que todos os

vértices estejam pertencentes à mesma subárvore, que é a AGM.

No TBC-GRAFOS e TBC-GRAFOS/WEB, o usuário deverá ponderar as arestas

no ambiente gráfico Algoritmo de Kruskal, em uma escala de 0 a 100 (ao clicar no

botão Opções, na parte inferior da tela do ambiente, uma lista de instruções explica

como fazer a mudança de peso em uma aresta). Além disso, neste algoritmo, não é

necessário informar um nó inicial – ou nó de origem (Figura 49). Nesse algoritmo, é

informado, em um pequeno painel acima da legenda, o resultado do algoritmo, que é o

custo da árvore geradora mínima. Isso pode ser visto na Figura 50.

Figura 49 – Tela Algoritmo de Kruskal do TBC-GRAFOS

4.4.2.2.2 Algoritmo de Prim

É um algoritmo utilizado para se encontrar a árvore geradora mínima de um

grafo não direcionado e conexo. Seu princípio de funcionamento é o seguinte:

Page 97: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

89

inicialmente, cada vértice do grafo tem uma chave (custo) infinito e são colocados em

uma fila de prioridade, onde o primeiro elemento tem sempre a menor chave. A partir

de cada um dos elementos retirados desta fila, são analisados seus adjacentes e

verificados os custos para atingi-los a partir do elemento retirado da fila. O algoritmo

prossegue até que seja encontrada a AGM final.

Figura 50 - Tela Algoritmo de Kruskal do TBC-GRAFOS/WEB

No TBC-GRAFOS e TBC-GRAFOS/WEB, o usuário deverá ponderar as arestas

no ambiente gráfico Algoritmo de Prim, tal como no ambiente gráfico Algoritmo de

Kruskal. Neste algoritmo, é necessário informar um nó inicial. (Figura 51). Nesse

algoritmo, é informado, em um pequeno painel acima da legenda, o resultado do

algoritmo, que é o custo da árvore geradora mínima, tal como no ambiente gráfico

Algoritmo de Kruskal. Isso pode ser visto na Figura 52.

4.4.2.3 Caminho Mínimo

Um motorista deseja encontrar a rota mais curta possível do Rio de Janeiro a São

Paulo. Dado um mapa rodoviário do Brasil no qual a distância entre cada par de

interseções adjacentes esteja marcada, como podemos determinar essa rota mais curta?

Page 98: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

90

Figura 51 - Tela Algoritmo de Prim do TBC-GRAFOS

Figura 52 - Tela Algoritmo de Prim do TBC-GRAFOS/WEB

Page 99: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

91

Um modo possível é enumerar todas as rotas do Rio de Janeiro a São Paulo,

somar as distâncias em cada rota e selecionar a mais curta. Porém, é fácil ver que até

mesmo se deixarmos de lado as rotas que contêm ciclos, haverá milhões de

possibilidades, a maioria das quais simplesmente não valerá a pena considerar. Por

exemplo, uma rota do Rio de Janeiro a Brasília e daí a São Paulo é sem dúvida uma

escolha ruim, porque Brasília está a alguns milhares de qui lômetros fora do caminho.

Nesta seção, é apresentada uma forma de resolver tais problemas de forma

eficiente. Em um problema de caminhos mais curtos, conforme ([CORMEN et al

2002], tem-se um grafo orientado ponderado G = (V,E), com função peso w: E � R

mapeando arestas para pesos de valores reais. O peso do caminho p = <v0, v1, ..., vk> é o

somatório dos pesos de suas arestas. Define-se o peso do caminho mais curto desde u

até v como sendo a menor opção (de menor custo) ou então infinito, caso não haja

caminho entre tais vértices. Um caminho mais curto desde o vértice u até o vértice v é

então definido como qualquer caminho p com peso ��� ������� ��� ��� .

No exemplo da rota desde o Rio de Janeiro até São Paulo, pode-se modelar o

mapa rodoviário como um grafo: os vértices representam interseções, as arestas

representam segmentos de estradas entre interseções e pesos de arestas representam

distâncias rodoviárias. Nossa meta é encontrar um caminho mais curto desde uma dada

interseção no Rio de Janeiro (a esquina da rua México com a rua Santa Luzia, por

exemplo) até uma dada interseção em São Paulo (avenida Paulista com rua Augusta, por

exemplo).

Os pesos de arestas podem ser interpretados como medidas, em vez de

distâncias. Eles são usados com freqüência para representar tempo, custo, penalidades,

perdas ou qualquer outra quantidade que se acumule linearmente ao longo de um

caminho e que alguém deseje minimizar.

O algoritmo de percurso em largura é um algoritmo de caminhos mínimo que

funciona sobre grafos não ponderados, isto é, grafos nos quais cada aresta pode ser

considerada como tendo um peso unitário.

Page 100: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

92

Em síntese, os grafos a serem considerados possuem arestas com peso e são

direcionados. Os pesos são relativos ao custo de atravessar as arestas. O problema de

caminho mínimo pode ser aplicado, por exemplo, para resolver problemas que

envolvem uma rede de aeroportos. Neste caso, os aeroportos são os vértices, e as arestas

correspondem aos vôos entre os aeroportos. Sendo assim, se o interesse é:

• tempo de viagem >>> considerar TEMPO GASTO

• financeiro >>> considerar CUSTO

• distância >>> considerar COMPRIMENTO (km)

• transmissão >>> considerar TAXA DE TRANSMISSÃO

O TBC-GRAFOS apresenta os conceitos e dois ambientes gráficos relacionados

a caminho mínimo em grafos. Dentro do menu “Caminho Mínimo”, o submenu

“Caminho Mínimo” apresenta conceitos teóricos sobre o tema, e os outros dois

apresentam os ambientes gráficos para os algoritmos de Dijkstra e de Bellman-Ford. O

TBC-GRAFOS/WEB apresenta os mesmos tópicos de caminho mínimo em grafos

tratados no TBC-GRAFOS (algoritmos de Dijkstra e de Bellman-Ford). Os dois

ambientes que relacionam estes algoritmos têm as suas formas de apresentação e

funcionamento semelhantes aos ambientes de buscas em grafos, com algumas

adaptações referentes à execução dos algoritmos.

4.4.2.3.1 Algoritmo de Dijks tra

Este algoritmo soluciona o problema de caminho mínimo em um grafo

direcionado com peso não-negativo nas arestas. Ele encontra os caminhos mais curtos

de um vértice inicial a todos os outros vértices do grafo. A característica essencial deste

algoritmo é a ordem na qual os caminhos são encontrados. Estes caminhos são

encontrados na ordem do peso das arestas, começando pelo mais curto até o mais

comprido.

No TBC-GRAFOS e TBC-GRAFOS/WEB, o usuário deverá ponderar as

arestas, tal como nos ambientes relacionados ao tema árvore geradora mínima em

grafos. Entretanto, as arestas agora são direcionadas e deverão ser traçadas do nó de

origem para o nó de destino, ou seja, poderão haver arestas saindo e chegando em um

Page 101: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

93

nó s a partir de um mesmo nó t. Neste algoritmo, também é necessário informar um nó

inicial. (Figura 53). Nesse algoritmo, é informado, em um pequeno painel acima da

legenda, o resultado do algoritmo, que é o caminho mínimo S. Isso pode ser visto na

Figura 54.

Figura 53 - Tela Algoritmo de Dijkstra do TBC-GRAFOS

Figura 54 - Tela Algoritmo de Dijkstra do TBC-GRAFOS/WEB

Page 102: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

94

4.4.2.3.2 Algoritmo de Bellman-Ford

Este algoritmo soluciona o problema de caminho mínimo em um grafo

direcionado no caso mais geral em que as arestas podem ter peso negativo. Dado um

grafo direcionado G = (V,E), com peso nas arestas, o algoritmo retorna um booleano

indicando se existe ou não um ciclo com peso negativo. Caso exista, o algoritmo indica

que não há solução. Caso contrário, ele produz o resultado.

No TBC-GRAFOS e TBC-GRAFOS/WEB, o usuário deverá ponderar as

arestas, direcionadas, e estas deverão ser traçadas do nó de origem para o nó de destino,

tal como no ambiente gráfico Algoritmo de Dijkstra. Nesse caso, no ambiente gráfico

Algoritmo de Bellman-Ford, o usuário poderá ponderar as arestas com pesos negativos.

Também será necessário informar um nó inicial. (Figura 53). Nesse algoritmo, é

informado, em um pequeno painel acima da legenda, o resultado do algoritmo, que é o

caminho mínimo S. Isso pode ser visto na Figura 54.

Figura 55 - Tela Algoritmo de Bellman-Ford do TBC-GRAFOS

4.5 Considerações Finais

Apesar de todas as vantagens alcançadas pelo TBC-AED/WEB, é importante

ressaltar que alguns temas também envolvidos com algoritmos e estruturas de dados não

foram abordados, como listas circulares, balanceamento de árvores binárias e outros

Page 103: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

95

métodos de ordenação. Isso é deixado aos docentes para sugerir aos alunos como

pesquisa, para aprofundar conhecimentos e permitir maior discussão durante as aulas ou

para trabalhos futuros. Isso considerando que haverá uma economia de tempo a ser

utilizada para resolução de aplicações reais e esclarecimento de dúvidas.

Figura 56 - Tela Algoritmo de Bellman-Ford do TBC-GRAFOS/WEB

Com relação ao TBC-GRAFOS e ao TBC-GRAFOS/WEB, não foram

abordados os temas caminho mínimo entre todos os pares de vértices (caminho mínimo

geral – algoritmo de Floyd-Waeshall) e fluxo máximo (método de Ford-Fulkerson). Tais

temas não pertenceram ao escopo desta pesquisa, mas é proposto no capítulo 6 como

trabalhos futuros.

Page 104: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

96

Capítulo 5– Considerações Finai s

Neste capítulo, são apresentados alguns aspectos resultantes da pesquisa. Na

seção 1, é apresentada uma breve conclusão da relevância do trabalho. Na seção 2, são

citadas algumas contribuições que a pesquisa gerou em seu desenvolvimento. Por fim,

na seção 3, é feita uma síntese dos trabalhos a serem desenvolvidos com base nesta

pesquisa.

5.1 Conclusões

Sob todo conjunto de informações obtidas até o presente momento, pode-se

perceber que existe uma gama de recursos que possibilitam o desenvolvimento de

ferramentas computacionais para o auxílio da educação superior em Computação, com

destaque para a linguagem de programação Java, que conta com a portabilidade e forte

suporte para técnicas adequadas de Engenharia de Software. Isso faz com que as novas

tecnologias atinjam mais rapidamente seu público alvo.

Além disso, observou-se que o uso de produtos de software para o ensino de

programação e algoritmos é uma idéia inteligente, se for amadurecida e desenvolvida de

forma cuidadosa e estruturada. Isso fornece novas experiências para professores e

alunos, que se proponham a trabalhar em cima desse tema. Além disso, eles terão sua

qualidade de ensino elevada e poderão ser capazes de avançar mais rapidamente no

campo do conhecimento, através da agil idade de processos didáticos e da participação

ativa do docente da área.

Conclui-se também que uma boa elaboração de produtos tecnológicos que

facil item a transmissão de conhecimentos em Computação deve ser acompanhada de

expressiva pesquisa no campo de novas metodologias de ensino. A principal finalidade

disso é cada vez mais haver contribuições que incorram no aprimoramento do ensino

superior e na formação de profissionais melhor qualificados para o mercado. Isso reflete

principalmente sobre futuros professores, uma vez que aqueles que têm passado por

esse tipo de experiência durante a graduação terão grande interesse em executar o

mesmo processo quando estiverem lecionando.

Page 105: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

97

Dessa forma, compreende-se que a educação precisa ser reavaliada, pois

representa a base da atual sociedade mundial e o único instrumento que pode

desenvolver o ser humano e torná-lo digno de constituir sua vida e seu ambiente. Isso

deve ser acompanhado por uma atitude crítica da comunidade científica formada, que é

a maior interessada em manter e prosseguir com avanços que contribuam para a

melhoria da qualidade de vida.

5.2 Contribuições

Os problemas apresentados na compreensão de conceitos abstratos de

programação encontram sua raiz ainda durante a formação básica, o que caracteriza uma

importante linha de pesquisa na metodologia educacional. Com certeza, sem uma

radical mudança cultural de atitude e comportamento, um indivíduo dif icilmente poderá

ser um profissional de Computação adequado, visto que é preciso desenvolver a

capacidade de buscar respostas através de novas perguntas que levem à resposta da

questão original. A formação do profissional em Computação deve incitar o

desenvolvimento de raciocínio crítico, a solução de problemas, a aplicação de métodos

de pesquisa e o desenvolvimento profissional contínuo.

Uma outra linha de pesquisa realizada é aquela direcionada para a tendência de

utilizar ferramentas computacionais como ambientes de estudo, a partir de observações

dentro de disciplinas de graduação, percebe-se também um melhor resultado no

aprendizado por meio de atividades práticas de desenvolvimento de simuladores e

ferramentas visuais didáticas de representação de conceitos abstratos. Além disso,

acompanhando esse desenvolvimento, a linha acopla contribuições dos pesquisadores

para novas estratégias de transmissão de conhecimentos, promovendo a ampliação do

acervo existente e a melhor organização de currículos para o mercado de trabalho, e

acesso facil itado de tais recursos inovadores através de suporte via web.

Dessa forma, a pesquisa deixa como contribuição produtos de software web,

TBC-AED/WEB e TBC-GRAFOS/WEB, além do TBC-GRAFOS (versão para

download), que englobam temas relacionados a algoritmos, estruturas de dados e grafos.

Além disso, faz uma revisão da literatura envolvendo análi se de metodologias de ensino

Page 106: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

98

em Computação para aprendizagem de algoritmos e programação. A pesquisa aborda

também tópicos de Teoria dos Grafos e Linguagem de Programação Java. Isso tem

como objetivo estimular mudanças na educação de cursos que formam recursos

humanos para a área tecnológica e incentivar docentes a melhorarem sua forma de

pesquisa e ensino envolvendo Computação e Informática.

Com relação ao uso do TBC-AED e TBC-AED/WEB, alguns seminários e

simulações de recursos foram realizados durante o 1° semestre de 2005 aos alunos que

cursaram a disciplina e aos que a estavam cursando no 2° semestre letivo de 2005.

Até o momento, o TBC-AED (e TBC-AED/WEB) atende às expectativas, pois

se notou que os alunos ficaram mais motivados e mais atentos, uma vez que utilizam o

computador diretamente. Além disso, a ferramenta está disponível aos alunos, que

podem acessar exemplos práticos extraclasse, ou seja, em casa ou outro lugar que não

seja no horário da aula.

Foi observado que a ferramenta altera o ânimo dos alunos, pois conceitos

abstratos passam a ser melhor visualizados e compreendidos, melhorando a

dinamização do ensino. Isso contribuiu para um tempo maior reservado à resolução de

exercícios, levando à sedimentação da teoria. Isso resulta em maior expectativa do

aumento do índice de aprovação em uma disciplina importante para a Computação.

Com a apresentação e disponibil ização do TBC-AED (e TBC-AED/WEB), os

alunos que a utilizaram obtiveram êxito, perfazendo um total geral de aprovação

superior àqueles que não a utili zaram. Assim, para melhorar os resultados, pensa-se em

dividir a carga horária da disciplina, antes apenas teórica, em teóricas e de laboratório a

partir de 2006.

O TBC-AED/WEB permite maior acessibilidade, além de possibil itar a troca de

idéias, através da interatividade com usuários diversos. Com relação aos primeiros

resultados da aplicação da ferramenta, estão sendo notadas maior atenção e facil idade

de aprendizagem. Dessa forma, o produto de software educacional desenvolvido

continuará a ser utili zado nas aulas ministradas, incluindo questionários e análise dos

resultados das avaliações.

Page 107: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

99

A partir disso, para o 1º semestre letivo de 2006, o TBC-GRAFOS e o TBC-

GRAFOS/WEB serão apresentados aos alunos através de seminários, para que sejam

utilizados na disciplina Técnicas de Programação, oferecida pelo Departamento de

Ciência da Computação da Universidade Federal de Lavras (DCC/UFLA), para o ensino

de algoritmos em grafos. Dessa forma, serão verificados os primeiros resultados da

aplicação da nova ferramenta e a validação do sistema de informação educacional. Com

isso, novos artigos poderão ser elaborados e submetidos para difundir a pesquisa.

5.3 Trabalhos Futuros

Finalmente, como trabalhos futuros, é interessante realizar um estudo acerca de

algoritmos em grafos mais elaborados, tais como os algoritmos de Floyd-Warshall

(caminho mínimo entre todos os pares de vértices) e de Ford-Fulkerson (fluxo máximo),

além de suas aplicações. Esses algoritmos demandam maior complexidade de

representação, o primeiro por utilizar matrizes durante seu processamento e o segundo

por utilizar mais de um grafo durante o processo e por utilizar outro algoritmo a priori

para obter um caminho no grafo para iniciar sua execução.

Além disso, é importante que, dado este passo em direção às estruturas de dados

e a algoritmos em grafos, deve-se analisar o currículo-base dos cursos de Computação e

Informática, para verificar quais outros tópicos podem ser alvo desse processo de

informatização educacional. Seria viável e bem atrativa a idéia de se montar um CD

com produtos de software que abrangessem as disciplinas da área, ou até mesmo de um

curso específico, como Ciência da Computação, Sistemas de Informação, Engenharia da

Computação ou Licenciatura de Computação. Dessa forma, o curso seria definido em

cima de seu próprio foco de atuação, com a idéia de meta-educação.

Sobre toda essa discussão, percebe-se que ainda há muito que se fazer para a

melhoria do ensino de Computação, não só por se tratar de uma área relativamente

recente, mas por ser amplamente dinâmica e tecnológica. Isso é importante, sobretudo,

para atrair cada vez mais novos aprendizes, visando fortalecer a formação de novos

recursos humanos da área e propiciando o progresso e sucesso do país.

Page 108: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

100

Referências Bibliográficas Alves, A. A. e Costa, M. R. (2004) “algolPUC: Uma Ferramenta de Apoio à

Programação para Iniciantes” , III Workshop de Educação em Computação e Informática do estado de Minas Gerais (WEIMIG’ 2004). Belo Horizonte, MG, Brasil .

Azeredo, P. A. (2000) “Uma proposta de Plano Pedagógico para a Matéria de Programação”, Anais do II Curso: Qualidade de Cursos de Graduação da Área de Computação e Informática (WEI’ 2000). Editora Universitária Champagnat.

Azul, A. A. e Mendes, A. J. “EDDL: Um Programa Didático sobre Estruturas de Dados Dinâmicas Lineares” , 3º Simpósio Investigação e Desenvolvimento de Software Educativo – 1998. Évora, Portugal. Disponível em: http://www.minerva.uevora.pt/simposio/comunicacoes/Mendes/Eddl.html. Acesso: 15 jun 2005.

Bank, D. (1995) “The Java Saga”. Wired Magazine. Disponível em http://www.wired.com/wired/archive/ 3.12/java.saga.html. Acesso: 20 jun 2005.

Black, P. E. “Dictionary of Algorithms and Data Structures” . NIST (National Institute of Standards and Technology). Disponível em http://www.nist.gov/dads/. Acesso: 15 jun 2005.

Borges, K. S. e Filho, H. B. R. (2005) “A Importância dos Grupos de Estudos na Formação Acadêmica”. XIII Workshop de Educação em Computação (WEI’2005). São Leopoldo, RS, Brasil.

Buzin, P. F. W. K. (2001) “A epistemologia da Ciência da Computação: Desafio do Ensino dessa Ciência”, Revista de Educação, Ciência e Cultura, v. 6, nº 2. Centro Universitário La Salle. Canoas, RS, Brasil .

Campos, E. A. V. e Ascencio, A. F. G. (2003) “Fundamentos da Programação de Computadores” . Editora Prentice Hall.

Cormen, T. H., Leiserson, C. E., Rivest, R. L. e Stein, C. (2002) “Algoritmos: Teoria e Prática”. 2ª edição. Editora Campus.

Dagdilelis, V. e Stratzemi, M. (1998) “DIDAGRAPH: Software for Teaching Graph Theory Algoritms” . ITiCSE 1998, Integrating Technology into Computer Science Education. Dublin, Ireland, 1998.

Deitel, H. M. e Deitel, P. J. (2003) “Java Como Programar” . Bookman Companhia ed Informática.

Faria, E. S. J. e Coello, J. M. A. (2005) “Um Estudo Empírico dos Efeitos do Uso de Trabalho Colaborativo no Aprendizado de Programação em Cursos de Graduação em Computação”. XIII Workshop de Educação em Computação (WEI’2005). São Leopoldo, RS, Brasil .

Faria, E. S. J., Vilela, J. M. e Coello, J. M. A. (2005) “Um Sistema de Aprendizado Colaborativo de Programação Baseado em Agentes chamado Learn In Group”. XIII Workshop de Educação em Computação (WEI’2005). São Leopoldo, RS, Brasil .

Page 109: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

101

Fernandes, F. B., Júnior, J. J. L. D., Salvador, E. M., Tanure, C. M. e Bezerra, E.P. (2004) “Biblioteca Digital na Era da TV Interativa”. Trabalho apresentado no II Simpósio Internacional de Bibliotecas Digitais, Campinas, 2004. Disponível em http://libdigi.unicamp.br/document/?code=8296. Acesso: 30 nov 2005.

Flávio, D. “TED - Tutorial de Estruturas de Dados” , desenvolvido durante estágio supervisionado na Universidade do Vale do Itajaí - 2004. Disponível em http://www.tutorialdeestruturadedados.8m.com/. Acesso: 20 jun 2005.

Galvão, L. (2003) “Mapa de Tecnologias” . Java Magazine. 1ª ed., Ano I. Neofício Editora.

Garcia, I. C., Rezende, P. J. e Calheiros, F. C. (1997) “Astral: Um Ambiente para Ensino de Estruturas de Dados através de Animações de Algoritmos” , Revista Brasileira de Informática na Educação (RBIE’1997) nº 01, http://www.inf.ufsc.br/sbc-ie/revista/nr1/garcia.htm, 28 abr 2004.

Giraffa, L., Marczak, S. e Almeida, G. (2003) “O Ensino de Algoritmos e Programação mediado por uma Ambiente Web”, Congresso Nacional da Sociedade Brasileira de Computação (SBC’2003). Campinas, SP, Brasil.

Giraffa, L., Marczak, S. e Prikladnicki, R. (2005) “PSD-E: Em Direção a um Processo para Desenvolvimento de Software Educacional” . XI Workshop de Informática na Escola (WIE’2005). São Leopoldo, RS, Brasil.

Gosling, J. (2001) “Seminar for the Computer Museum”. Disponível em http://today.java.net/jag/old/ Presentations/TheStoryOfJava/. Acesso: 25 jun 2005.

I.F.S. (2003) “Linguagem JAVA”. Artigo escrito e publicado sob autorização de I.F.S. no Info Wester. Disponível em http://www.infowester.com/lingjava.php. Acesso: 30 nov 2005.

Jay (2005) “Java Timeline - 10 years of Java”. Disponível em http://www.javarss.com/java-timeline-10years.html. Acesso: 22 jun 2005.

Júnior, J. C. R. P. e Rapkiewicz, C. E. (2004) “O Processo de Ensino e Aprendizagem de Algoritmos e Programação: Uma Visão Crítica da Literatura”, II I Workshop de Educação em Computação e Informática do estado de Minas Gerais (WEIMIG’ 2004). Belo Horizonte, MG, Brasil.

Júnior, J. C. R. P., Rapkiewicz, C. E., Delgado, C. e Xexeo, J. A. M. (2005) “Ensino de Algoritmos e Programação: Uma Experiência no Nível Médio” . XIII Workshop de Educação em Computação (WEI’2005). São Leopoldo, RS, Brasil.

Khuri, S. e Holzapfel, K. (2001) “An Education Visualization Environment for Graph Algoritms” . Proceedings of ITiCSE 2001, The 6th Annual Conference on Innovation and Technology in Computer Sciene Education. Canterbury, UK, 2001.

Koslowski, S. R. e Nunes, M. A. S. N. (2001) “O Computador como Ferramenta Pedagógica nas Séries Iniciais” , Informática na Educação – Artigos Científicos. Universidade Regional Integrada do Alto Uruguai e das Missões – URI – RS.

Lucas, J. M. e Naps, T. L. (2003) “VisualGraph – A Graph Class Designed for Both Undergraduate Students and Educators” . SIGCSE 2003, Special Interest Group on Computer Science Education. Reno, Nevada, USA, 2003.

Page 110: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

102

Marshall, G. M. M. S. e Herman, I. (2003) “An Object-Oriented Design for Graph Visualization (GVF)” . CWI.

Menezes, C. e Nobre, I. (2002) “Suporte à Cooperação em um Ambiente de Aprendizagem para Programação (SambA)” . XIII Simpósio Brasileiro de Informática na Educação (SBIE’2002). São Leopoldo, RS, Brasil.

Pimentel, E. P., França, V. F. e Omar, N. (2003) “A Caminho de um Ambiente de Avaliação e Acompanhamento Contínuo de Aprendizagem em Programação de Computadores” , II Workshop de Educação em Computação e Informática do Estado de Minas Gerais (WEIMIG’2003). Poços de Caldas, MG, Brasil.

Quinteiro, L. (2005) “História da Linguagem Java”. Disponível em http://www.htmlstaff.org/java/ java15.ph. Acesso: 30 nov 2005.

Raabe, A. L. A. e Silva, J. M. C. (2005) “Um Ambiente para Atendimento das Dificuldades de Aprendizagem de Algoritmos” . XIII Workshop de Educação em Computação (WEI’2005). São Leopoldo, RS, Brasil.

Rodrigues, M. C. (2002) “Como Ensinar Programação?”. Informática – Boletim Informativo Ano I nº 01, ULBRA. Canoas, RS, Brasil .

Santos, J. P. O., Mello, M. P., Muradi, I. T. C. (1995) “Introdução à Análise Combinatória”. Editora da UNICAMP.

Santos, R. P. e Costa, H. A. X. (2005a) “TBC-AED e TBC-AED/WEB: Um Desafio no Ensino de Algoritmos, Estruturas de Dados e Programação”. IV Workshop de Educação em Computação e Informática do estado de Minas Gerais (WEIMIG’2005). Varginha, MG, Brasil.

Santos, R. P. e Costa, H. A. X. (2005b) “TBC-AED: Um Software Gráfico para Apresentação de Algoritmos e Estruturas de Dados aos Iniciantes em Computação e Informática”. I Congresso de Computação do Sul do Mato Grosso (COMPSULMT’2005). Rondonópolis, MT, Brasil.

Santos, R. P. e Costa, H. A. X. (2005c) “Desenvolvimento de um Software Educacional para o Ensino de Algoritmos, Estruturas de Dados e Programação”. Relatório Final apresentado à Universidade Federal de Lavras, como parte das exigências do PBIICT/FAPEMIG, referente ao período de março/2004 a fevereiro/2005. Lavras, MG, Brasil.

Setubal, J. C. (2000) “Uma proposta de Plano Pedagógico para a Matéria de Computação e Algoritmos” , Anais do II Curso: Qualidade de Cursos de Graduação da Área de Computação e Informática (WEI 2000). Editora Universitária Champagnat.

Sherstov, A. A. (2003) “Distributed Visualization of Graph Algoritms” . SIGCSE 2003. Special Interest Group on Computer Science Education. Reno, Nevada, USA, 2003.

Silva, W. (2003) “Apostila do Curso de Extensão – Linguagem de Programação Java e Orientação a Objetos” , DCC – Departamento de Ciência da Computação – UFLA.

Soares, T. C. A. P., Cordeiro E. S., Stefani Í. G. A., Tirelo, F. (2004) “Uma Proposta Metodológica para o Aprendizado de Algoritmos em Grafos Via Animação Não-

Page 111: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

103

Intrusiva de Algoritmos” , III Workshop de Educação em Computação e Informática do Estado de Minas Gerais (WEIMIG’ 2004). Belo Horizonte, MG, Brasil .

Szwarcfiter, J. L., Markenzon, L. (1994) “Estruturas de Dados e seus Algoritmos” . Editora LTC.

Thomas, M. D., Patel, P. R., Hudson, A. D., Ball, D. A. Jr. (1997) “Programando em Java para Internet” . Editora Markron Books.

Tobar, C. M., Rosa, J. L. G., Coelho, J. M. A. e Pannain, R. (2001) “Uma Arquitetura de Ambiente Colaborativo para o Aprendizado de Programação”, XII Simpósio Brasileiro de Informática na Educação (SBIE’2001). Vitória, ES, Brasil.

Veloso, P., Santos, C. dos, Azeredo P., Furtudo, A. (1986) “Estruturas de Dados” . Editora Campus. 4ª edição.

Yamamoto, F. S., Silva, A. F., Zanutto, J. e Zampirolli, F. A. (2005) “Interdisciplinaridade no Ensino de Computação”. XIII Workshop de Educação em Computação (WEI’2005). São Leopoldo, RS, Brasil.

Wirth, N. (1989) “Algoritmos e Estruturas de Dados” . LTC Informática-Programação.

Ziviani, N. (1992) “Projeto de Algoritmos com Implementações em Pascal e C”. Editora Pioneira Thompson.

Page 112: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

104

Anexo A – Artigos Publicados

Como anexos, serão inseridos os quatro artigos (um resumido e três completos),

três destes apresentados em 2005 em congressos nacionais e um publicado em revista.

Page 113: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

105

O resumo a seguir foi publicado no CD de Resumos do XVII Congresso de

Iniciação Científica, XII Seminário de Avaliação do PIBIC/CNPq-UFLA, VII

Seminário de Avaliação do PBIICT/FAPEMIG-UFLA, ocorrido na UFLA/Lavras/MG

em 2005.

DESENVOLVIMENTO DE UM SOFTWARE EDUCACIONAL PARA O ENSINO DE ALGORITMOS, ESTRUTURAS DE DADOS E PROGRAMAÇÃO*

Rodrigo Pereira dos Santos, bolsista do PBIICT/FAPEMIG, 5o módulo de Ciência da Computação; Heitor Augustus Xavier Costa, Orientador – DCC. *Financiado pela FAPEMIG

A busca por melhores métodos de educação para cursos que se embasam em Computação e Informática é uma preocupação constante de professores e coordenadores de curso na área. A cada dia, novas tecnologias são desenvolvidas e novos conceitos precisam ser incorporados à formação universitária, para que sejam formados bons profissionais para o mercado. Um grande desafio que está vinculado à essa formação de novos recursos humanos para a área é a forma de estruturar o ensino de programação e desenvolvimento de algoritmos. Atualmente, o ensino de algoritmos busca nas Ciências Exatas seu pilar de sustentação, pois disciplinas nessa área despertam o raciocínio lógico-matemático para resolução de problemas. Mas isso deve ser mais uma das ferramentas para o estudante e não a sua única fonte, pois a sua formação futura será muito ampla. O conceito de programação é a arte ou técnica de construir algoritmos de uma forma sistemática. Esse conceito induz que o ingresso tem um dom (arte) de programar ou ele pode aprender as técnicas necessárias a aprimorar seu conhecimento. Logo, ao ingressar em um curso superior na área, ele deve ter sua base bem sedimentada, para que fique apto a prosseguir de maneira positiva durante os seus estudos. Com isso, professores de disciplinas relacionadas à programação e coordenadores de curso sentem a grande responsabilidade de estar buscando e aperfeiçoando sua maneira de conduzir a estrutura disciplinar dos graduandos em seus estágios iniciais na universidade. Dessa forma, nesta pesquisa foi realizado um estudo na área de algoritmos e estruturas de dados, para o desenvolvimento de uma ferramenta computacional didática – TBC-AED. Seu objetivo é tornar o ensino desse conteúdo – básico para o estudo em Computação – mais prático e abrangente. Assim, desperta o interesse do aluno, o seu espírito de pesquisa e a busca de informações que possam torná-lo um profissional crítico e de opinião sólida. Seu rendimento ao longo do curso aumenta, melhorando o seu desempenho em disciplinas mais específicas.

Palavras-chave: algoritmos e estruturas de dados; informática na educação; java

Page 114: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

106

O artigo completo a seguir foi publicado no CD de Resumos do IV WEIMIG –

Workshop em Educação em Computação e Informática do Estado de Minas Gerais,

ocorrido no UNIS/Varginha/MG em 2005.

TBC-AED e TBC-AED/WEB: Um Desafio no Ensino de Algor itmos, Estruturas de Dados e Programação *

Rodrigo Pereira dos Santos1, Heitor Augustus Xavier Costa2

Departamento de Ciência da Computação – Universidade Federal de Lavras (UFLA) Caixa Postal 3037 – 37.200-000 – Lavras – MG – Brasil [email protected], [email protected]

Abstract. The paper objective is to present TBC-AED and its evolution, TBC-AED/WEB, an educational information system that contains a lot of themes related to the taught contents to students in Computation, now available in applets-Java for Web. The paper contributes to literature and to teachers concerning the importance of a good teaching of algorithms and programming and of the use of software in the education. Therefore, teaching strategies and computing tools are united, trying to help the improvement of teaching quality of programming, algorithms and data structures in the graduation courses in Computing.

Key-words: algorithms and data structures, programming, computing in education.

Resumo. Este artigo tem o objetivo de apresentar o TBC-AED e sua evolução, o TBC-AED/WEB, que consistem em um sistema de informação educacional que contém vários temas relacionados aos conteúdos lecionados aos iniciantes em Computação, agora disponíveis em applets-Java para Web. Procura também deixar uma contribuição à literatura e aos docentes da área acerca da importância de um bom ensino de algoritmos e programação e do uso de produtos de software na educação. Portanto, estratégias de ensino e ferramentas computacionais são unidas, buscando contribuir para a melhoria da qualidade de ensino de programação, algoritmos e estruturas de dados nos cursos de graduação em Computação e Informática.

Palavras-chaves: algoritmos e estruturas de dados, programação, informática na educação.

1. Introdução

A crescente quantidade de informação e a tecnologia gerada tornam necessária a presença de profissionais de caráter persuasivo e inovador, que sejam capazes de unir inteligência e dinamismo na busca de melhores soluções para o mercado. Isso encontra * Apoio PBIICT/FAPEMIG.

Page 115: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

107

sua principal base nas metodologias de ensino aplicadas durante o estágio universitário, principalmente na área de Computação e Informática, que envolve tecnologias em constante desenvolvimento.

Com o intuito de produzir melhores resultados no processo de aprendizagem nessas áreas, faz-se constante a necessidade do uso de didáticas de ensino de forma geral. O objetivo é procurar transformar processos abstratos em concretos, através de produtos de software que possibil item melhor compreensão dos tópicos abordados e maior interação entre aluno-objeto de trabalho (neste caso, o computador). Isso encontra sua maior barreira nos estágios iniciais dos cursos relacionados, quando do contato com o estudo de algoritmos, o raciocínio lógico e a programação.

Atualmente, o ensino de algoritmos busca nas Ciências Exatas seu pilar de sustentação, pois disciplinas nessa área despertam o raciocínio matemático-lógico para resolução de problemas. A título de exemplo, conforme [Júnior e Rapkiewicz 2004], alguns autores preconizam a necessidade de domínio de habilidades matemáticas prévias ou ao menos integradas, ou pelo menos desejável, sendo considerado até um bom indicador de sucesso para o processo. Para outros, o próprio nível de conhecimento prévio de lógica matemática é discutido. Mas, isso deve ser mais uma das ferramentas para o estudante e não a sua única fonte, pois a sua formação futura será muito ampla.

O conceito de programação, segundo [Wirth 1989], é a arte ou a técnica de construir e formular algoritmos de uma maneira sistemática. Esse conceito induz que o ingresso tem um dom de programar ou ele pode aprender as técnicas necessárias a aprimorar seu conhecimento. Logo, o iniciante deve ter sua base bem sedimentada, para que fique apto a prosseguir de maneira positiva durante os seus estudos. Com isso, professores de disciplinas relacionadas à programação sentem a grande responsabil idade de estar aperfeiçoando sua maneira de conduzir a estrutura disciplinar dos graduandos em seus estágios iniciais da universidade.

Uma linha de pesquisa, visando melhorias no ensino básico em Computação e Informática é direcionada para a tendência de utilizar ferramentas computacionais como ambientes de estudo. Segundo [Soares et al. 2004], a partir de observações dentro de disciplinas de graduação, percebe-se também um melhor resultado no aprendizado por meio de atividades práticas de desenvolvimento de simuladores e ferramentas visuais didáticas de representação de conceitos abstratos. Além disso, a linha acopla contribuições dos pesquisadores a novas estratégias de transmissão de conhecimentos. Isso promove a ampliação do acervo existente, a melhor organização de currículos para o mercado de trabalho e o acesso facilitado destes recursos através de suporte via Web.

Em um estudo anterior, foi desenvolvido o TBC-AED (Treinamento Baseado em Computador para Algoritmos e Estruturas de Dados), que foi utili zado pela primeira vez na turma de 2º período do Curso de Ciência da Computação da Universidade Federal de Lavras (1º semestre de 2005). Ele é um ambiente computacional didático, fruto de um estudo sobre algoritmos, estruturas de dados e programação. O TBC-AED visa tornar o ensino deste conteúdo mais prático e abrangente, de forma a despertar o interesse do aluno e o seu espírito de pesquisa. Assim, seu rendimento ao longo do curso aumentará, melhorando o seu desempenho em disciplinas mais específicas. Pôde-se notar que o TBC-AED despertou a atenção dos alunos de forma inesperada, devido à inovação e à dinamização, que foram injetadas às aulas.

Page 116: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

108

O objetivo deste artigo é apresentar o TBC-AED e sua evolução, o TBC-AED/WEB, além de relatar a importância de construir uma boa base de algoritmos e programação para uma melhor conduta em períodos avançados de cursos de Computação. Também retrata algumas implicações acerca do uso de informática em educação. Dessa forma, pretende-se possibil itar maior disseminação do conhecimento e promover a interatividade entre docentes e graduandos da área, enriquecendo a pesquisa com críticas e sugestões.

O artigo está organizado da seguinte forma: a seção 2 apresenta a importância da programação e dos algoritmos no ensino de Computação; a seção 3 conceitua Informática na Educação e analisa os impactos do uso de produtos de software no ensino; a seção 4 retrata a importância do uso de ferramentas computacionais no ensino e detalha algumas ferramentas disponíveis atualmente para o ensino de algoritmos, estruturas de dados e programação; a seção 5 apresenta o TBC-AED e o TBC-AED/WEB; e a seção 6 inclui resultados iniciais de sua aplicação. Por fim, são apresentadas as conclusões e algumas sugestões de trabalhos futuros.

2. Programação e Algor itmos: a Base da Computação

Segundo a estrutura curricular presente nas Diretrizes Curriculares do MEC [Azeredo 2000], a matéria de Programação faz parte da área de formação básica em Ciência da Computação. Seu conteúdo abrange, além do ensino de linguagens de programação, os conceitos, os princípios e os modelos de programação e o estudo de estruturas de dados e de métodos de classificação e pesquisa de dados. Conforme consta na caracterização da matéria programação de computadores, é uma atividade voltada à solução de problemas. Ela está relacionada com uma variada gama de outras atividades como especificação, projeto, validação, modelagem e estruturação de programas e dados, utilizando-se das linguagens de programação como ferramentas.

Ao contrário do que se apregoava há alguns anos, a atividade de programação deixou de ser uma arte para se tornar uma ciência, envolvendo um conjunto de princípios, técnicas e formalismos que visam à produção de produtos de software bem estruturados e confiáveis. Cite-se, dentre estes, os princípios da abstração e do encapsulamento e as técnicas de modularização e de programação estruturada.

Portanto, o estudo de programação não se restringe ao estudo de linguagens de programação. As linguagens de programação constituem-se em uma ferramenta de concretização de produtos de software, que representa o resultado da aplicação de uma série de conhecimentos que transformam a especif icação da solução de um problema em um programa de computador que efetivamente resolve aquele problema. Deve ser dada ênfase aos aspectos funcionais e estruturais das linguagens, em detrimento aos detalhes de sintaxe. O estudo de linguagens deve ser precedido do estudo dos principais paradigmas de programação, notadamente a programação imperativa, a funcional, a baseada em lógica e a orientada a objetos.

O desenvolvimento de algoritmos e o estudo de estruturas de dados devem receber especial atenção na abordagem do tema programação. Igualmente, deve ser dada ênfase ao estudo das técnicas de especificação, projeto e validação de programas. Deve-se entender que ensinar programação não é apenas ensinar uma linguagem de programação. Este ensino envolve entender problemas e descrever formas de resolução,

Page 117: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

109

de maneira imparcial, para que então sejam codificadas em uma linguagem. Ou seja, somente após o aprendizado dos conceitos de algoritmo e fundamentos de lógica, o estudante pode travar contato com uma linguagem de programação. Além disso, o estudo de programação deve passar efetivamente pelo estudo de estruturas de dados. Ou seja, quando se projeta um programa, deve-se pensar tanto nos algoritmos que manipulam os dados como também na forma de estruturar estes dados. Desta maneira, as duas coisas se complementam.

De acordo com [Azeredo 2000], dentro do ensino de estruturas de dados, deve-se dar destaque à parte conceitual e comportamental das estruturas, antes de pensar em implementação. Por exemplo, no ensino de estruturas lineares, deve-se transmitir ao aluno o seu conceito, através das operações aplicáveis, como criar, acrescentar, consultar e remover elementos. Finalmente, discutem-se formas de implementações ou representações físicas das listas. Deve ser dada ênfase especial no estudo de estruturas encadeadas. Nas estruturas encadeadas, o aluno apresenta maior dificuldade de assimilação do conceito, uma vez que o encadeamento não é um conceito muito freqüente na vida real, dificultando sua compreensão. Dessa forma, é recomendável que as disciplinas de estruturas de dados possuam significativa atividade prática em laboratório.

Quanto ao sistema de avaliação aplicado, é o mesmo adotado tradicionalmente na maioria dos cursos de natureza teórico-prática. Além de provas periódicas, são realizados alguns trabalhos de programação para fixação. Uma sugestão do uso de um produto de software durante as aulas é a redução do peso em provas teóricas, normalmente elaboradas sobre um conteúdo denso.

Com relação aos cursos na área de Computação e Informática, os cursos de licenciatura visam a formação de educadores para o ensino médio. Os cursos de Bacharelado em Ciência da Computação e em Engenharia de Computação são voltados para a formação de recursos humanos para o desenvolvimento científico e tecnológico da computação. Não necessariamente devem sair dos cursos com o perfil de programadores. Os cursos de Sistemas de Informação incluem a formação de programadores entre seus objetivos. Em um curso de Licenciatura em Computação, o aluno poderá ter uma carga de prática de programação menor, sem prejuízo da parte conceitual da matéria. Deve haver uma diferenciação entre os casos de cursos de atividade fim e atividade meio. Para este último, recomenda-se uma ênfase maior no conhecimento de linguagens de programação e atividades práticas.

Assim, a programação é, pois, um dos pontos chaves em um curso de Computação, pois é a atividade que supre o computador com meios para servir ao usuário. Seu uso adequado e o entendimento de conceitos, princípios, teorias e tecnologias podem conduzir à produção de produtos de software de qualidade, objetivo final, tanto quando se tem a computação como um meio como quando a computação é tida como um fim. Com esse intuito, [Setúbal 2000] apresenta algumas recomendações genéricas a serem aplicadas no ensino de disciplinas relacionadas a algoritmos: • coerência com os objetivos fundamentais. Por coerência, entende-se que o

professor deve: i) expressar claramente as idéias, os conceitos e as técnicas perante os alunos (se o professor coloca algoritmos confusos na lousa ou em transparências, ele não pode esperar algoritmos claros nas respostas dos alunos); ii) destacar a

Page 118: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

110

importância dos resultados teóricos e mostrar rigor formal toda vez que isto se fizer necessário; e iii) valorizar o uso de técnicas na resolução de problemas;

• ênfase no pensamento crítico. Deve-se ter um cuidado especial, pois os alunos que têm pouca maturidade matemática tendem a acreditar em qualquer demonstração. Tal comportamento deve ser desestimulado. É essencial que os alunos duvidem daquilo que é apresentado a eles e é com dúvidas saudáveis e sua resolução que a percepção da importância do resultado teórico poderá ser consolidada. Nesse sentido, considera-se um recurso valioso o conjunto de exercícios que pedem para os alunos identificarem falhas de argumentação, erros em algoritmos ou erros em notícias da imprensa;

• a teoria na prática. A experiência mostra que os alunos em geral não se sentem atraídos, por considerarem-na muito abstrata. Por esse motivo, crê-se ser importante usar como recurso didático exemplos reais. A inclusão de projetos de implementação, em disciplinas teóricas ou em disciplinas específicas, torna a matéria menos abstrata. De resto, é importante salientar para os alunos o grande impacto que os resultados teóricos têm alcançado na prática.

3. Informática na Educação e Software Educacional

Informática na Educação é uma das áreas de Computação e Informática, a qual trata da utilização de computadores para o ensino, como forma de ampliar a difusão de conhecimentos e facil itar a assimilação de informações.

Entretanto, conforme [Zambalde e Alves 2002], a incorporação da informática nos ambientes educacionais provoca mudanças. Nesse sentido, deve-se sempre questioná-las e nem sempre adotá-las. O objetivo da introdução da informática no ambiente educacional não deve ser o modismo ou a atualização com relação às inovações tecnológicas e ao mercado. O questionamento é imprescindível, visto que as alterações podem alcançar estrutura física, equipamentos, cultura, forma de aprendizado, modos de comunicação, enfim, processos dos mais variados tipos.

Para [Almeida e Nogueira 2001], a utili zação de computadores na escola pode contribuir muito para um ensino de melhor qualidade, além de facil itar a aprendizagem. Para isso, é necessário que os professores sintam-se estimulados e preparados para enfrentar esta nova realidade. É preciso oferecer subsídios, recursos e capacitação. Com isto, poderão sentir-se capazes de criar seus próprios produtos de software, suas próprias home-pages, conforme sua metodologia e disciplina, visto que é difícil encontrar alunos que não utili zam o computador para realizar tarefas escolares, pesquisa e/ou lazer. Cabe à escola preparar seus docentes para enfrentar esta nova realidade.

De fato, sabe-se que a informática está sendo inserida na educação pela necessidade de transpor barreiras do educar convencional, pois tudo se modernizou na educação. Até o advento da informática se tornou convencional, frente a esta nova forma pedagógica de educação, oportunizando às escolas uma renovação de trabalhar os conteúdos programáticos, propiciando ao aluno eficiência na construção do conhecimento, convertendo a aula em um espaço real de interação, de troca de resultados, adaptando os dados à realidade do educando ([Koslowski e Nunes 2001]).

Entretanto, em [Koslowski e Nunes 2001], o uso da informática na educação não significa a soma da informática e da educação, mas a integração destas duas áreas. Para

Page 119: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

111

haver integração, é necessário o domínio dos assuntos que estão sendo integrados. Seguindo esta linha de pensamento, pensar em computadores na educação não significa pensar na máquina, mas sim na educação. Educação e Informática devem ser consideradas como um todo, visando o benefício da sociedade. Apesar dos aspectos positivos da utilização da informática na escola, percebe-se que a maioria das escolas ainda está a passos lentos e tem dúvidas sobre a real contribuição dos computadores ao ensino.

No entanto, a mesma forma aditiva pela qual tem sido pensada a introdução de computadores na educação também vem se aplicando ao processo de preparação de professores. Tal preparação realiza-se através de cursos ou treinamentos de pequena duração, para exploração de determinados produtos de software. Resta ao professor desenvolver atividades com essa nova ferramenta junto aos alunos, mesmo sem ter a oportunidade de analisar as dificuldades e as potencialidades de seu uso na prática pedagógica. Os alunos, por crescerem em uma sociedade permeada de recursos tecnológicos, são hábeis manipuladores da tecnologia e a dominam com maior rapidez e desenvoltura que seus professores. Mesmo os alunos pertencentes a camadas menos favorecidas têm contato com recursos tecnológicos na rua e na televisão e a sua percepção sobre tais recursos é diferente da percepção de uma pessoa que cresceu em uma época em que o convívio com a tecnologia era muito restrito ([Almeida 2000]). Portanto, deve-se levar em consideração ainda que os professores treinados apenas para o uso de certos recursos computacionais são rapidamente ultrapassados por seus alunos, que têm condições de explorar o computador de forma mais criativa, e isso provoca diversas indagações quanto ao papel do professor e da educação.

Nesse contexto, surge o instrumento computacional a ser utilizado para educar pessoas. Tal recurso é o produto de software educacional. Consoante [Zambalde e Alves 2002], o produto de software educacional é um programa desenvolvido para atender aos objetivos educacionais previamente estabelecidos e, para que ele seja efetivo e esteja à altura das necessidades pedagógicas, é necessário que seu desenvolvimento conte com especialistas das áreas de Educação e Informática. Mas os produtos de software educacionais possuem pontos fortes e limitações. É preciso saber quando ele é adequado para os objetivos curriculares e pode, por isso, ser integrado ao contexto educacional. O professor deve adotar o produto de software que instigue as habil idades cognitivas dos alunos e, acima de tudo, lhes ofereça situações para que possam transferir seus conhecimentos para a solução de novos problemas ([Zambalde e Alves 2002]).

Entende-se que várias são as ferramentas de autoria encontradas para facilitar a criação de aplicações educacionais nas mais diversas áreas do ensino, mas em geral todas buscam a criação de produtos de software multimídia. O uso dessas ferramentas aplicadas à educação teve um elevado crescimento nos últimos anos, mas, apesar da riqueza visual e sonora que comporta, faz com que o aprendiz interaja com o ambiente como se estivesse manuseando um livro eletrônico. Na maioria dos casos, é pouca ou quase nula a possibil idade do aprendiz intervir nesse ambiente para criar ou interagir de forma ativa sobre o objeto de conhecimento. Diante disso, buscou-se um paradigma alternativo, onde o aprendiz interage ativamente na construção de conhecimento, em ambientes tais como o de jogos, nos quais os participantes são personagens de uma história que se desenrola e suas ações vão modificar esta história à medida que ela acontece ([Souza e Wazlawick 1997]).

Page 120: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

112

Dessa forma, existem diferentes formas de utilizar o computador na educação e, infelizmente, é mais comum encontrar a sua utili zação como objeto de estudo, como facil itador na realização de determinadas tarefas ou como máquina de ensinar que repetem os métodos tradicionais de ensino, conhecidos como instrucionistas. Está-se interessado no uso do computador como objeto que contribua no processo de aprendizagem. Isso ocorre por vários motivos. Em primeiro lugar, existe uma exigência muito grande da sociedade para que os indivíduos saibam manipular o computador, pois ele está presente em quase todas as nossas atividades diárias e, portanto, uma pessoa que não consiga conviver com esse objeto ficará inevitavelmente à margem de um mundo cada vez mais dominado por recursos tecnológicos. Esse argumento tem a sua verdade, mas por outro lado, os educadores não podem se preocupar apenas com esse lado da questão, bastante limitada, voltada apenas para o treinamento de indivíduos na utilização de produtos de software. Em segundo lugar, cresce cada vez mais o interesse em conseguir novos mercados de consumidores de produtos de software educativos e esses aparecem com os mais variados atrativos gráficos, porém pobres do ponto de vista pedagógico. Diante da falta de conhecimento por parte da população, essa indústria tem encontrado um campo bastante receptivo a esse tipo de produto.

Ainda assim, não se deve considerar como digno de uso no ambiente escolar apenas os produtos de software construídos especificamente para fins pedagógicos. Além disso, às vezes, eles não possuem uma proposta pedagógica clara. Dentro da visão que se tem de informática educativa, onde o computador deve ser usado com ferramenta cognitiva, entende-se que deve selecionar aplicativos que viabilizem esta forma de uso.

Mas, para usufruir todo o aparato tecnológico disponível, deve-se considerar que uma inovação imposta ou planejada por organismos externos à instituição é incompatível com a concepção dialética de inovação, pois tende a produzir rejeição ou a adicionar quantitativamente o novo instrumento ao arsenal disponível. As práticas impostas visam à otimização do ensino e não deixam espaço para o desenvolvimento de processos criativos. Isso foi observado com a introdução dos recursos audiovisuais nas escolas e, hoje, muitas instituições adotam esse procedimento em relação aos microcomputadores ([Almeida 2000]). Isso leva à necessidade de preparação de pessoal que saiba lidar com a iniciação à tecnologia, sobretudo professores do 2o e 3o graus. Logo, a preocupação com a formação de professores é uma constante nas universidades que desenvolvem trabalhos relacionados ao uso do computador em educação. O desenvolvimento de atividades de formação se faz por caminhos diferentes, que variam desde a criação de disciplinas específicas que tentam integrar informática e educação até a realização de cursos de pós-graduação.

Além disso, deve considerar que a formação não se encerra com a conclusão de cursos, oficinas ou outros eventos, pois deve ter o caráter de continuidade, que se concretiza por meio de reuniões periódicas, seminários, encontros presenciais e oficinas. Quaisquer que sejam as modalidades de formação escolhidas, sua concretização deve ser coerente com as necessidades do grupo em formação e prever espaço para o estabelecimento de conexões entre teoria, prática e domínio de recursos computacionais. Isso promove uma reorganização e uma transformação da prática pedagógica, segundo a reflexão favorecida pelo ciclo descrição-execução-reflexão-depuração.

4. A Impor tância do Uso de Ferramentas Computacionais no Ensino

Page 121: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

113

Nesta seção, são apresentas algumas ferramentas computacionais presentes na literatura e suas contribuições ao ensino de algoritmos, estruturas de dados e programação. Contudo, é importante ter em mente alguns pontos especiais: • a aula de uma disciplina que relaciona programação, algoritmos e estruturas de

dados deve ser realizada em laboratórios para que os alunos possam entender as abstrações apresentadas. Deve ser composta de uma parte teórica, onde conceitos são transmitidos, e uma parte prática, onde são entendidos comandos e tópicos ministrados. Deve também haver questões-desafio, para que os discentes sejam acostumados a usar de agil idade e criatividade na solução de problemas;

• o uso de produtos de software educacionais, que enfatizam animação gráfica, é de extrema importância como facil itador do processo de aprendizagem, uma vez que a apresentação de conceitos abstratos se torna mais viável e didática, melhorando a qualidade do material das aulas;

• normalmente, um aluno se interessa por aulas diferenciadas e isso não só prende sua atenção, como também influenciam positivamente nas avaliações;

• uma economia de tempo pode ser conseguida e esta seria direcionada para maiores explicações e resoluções de exercícios, uma vez que o material didático seria virtual, evitando uma explanação cansativa através do quadro-negro;

• o aluno teria acesso livre ao material virtual para que pudesse estudar em casa. Além disso, ele possuirá um valioso projeto, para consultas futuras, em caso de necessidade – a tendência em abstrair detalhes, com o passar do tempo, sempre leva a dúvidas e estas a novas pesquisas em estruturas básicas ora aprendidas. Além disso, a existência de material via Web para estudos e pesquisas estimula maior contribuição tecnológica para a sociedade e maior alcance ao público. A divulgação das propostas de melhorias de processos educacionais visa injetar e obter informações para ampliação da literatura disponível;

• a transição de educadores seria facil itada, uma vez que existiria uma base pronta para ser apreciada, mantendo a qualidade de ensino e aprendizagem do conteúdo.

A seguir, são apresentados alguns projetos relacionados ao uso do computador para o ensino de algoritmos, estruturas de dados e programação. São eles: • ASTRAL (Animation of Data Structures and Algorithms). É um ambiente de

programação para produção de animações de algoritmos e de estruturas de dados com propósito instrucional. O ambiente foi desenvolvido no Instituto de Computação da UNICAMP. O uso do ASTRAL em disciplinas de graduação sobre estruturas de dados com componente de programação foi muito bem sucedido durante vários semestres ([Garcia et al. 1997]);

• EDDL (Estruturas de Dados Dinâmicas Lineares). Surgiu de uma discussão sobre estratégias de ensino das estruturas de dados e tipos de dados abstratos utilizados em programação. A sua estruturação e a concepção da sua funcionalidade englobam: i) uma abordagem introdutória aos conceitos ou especificação dos tipos de estruturas; ii) as técnicas de implementação; e iii) a utilização dessas estruturas na resolução de problemas. Oferece um conjunto de ferramentas de programação que o revelam ser ao mesmo tempo intuitivo e de fácil manipulação, diversificado, versátil e eficaz para o desenvolvimento de projetos, principalmente quando o aspecto gráfico é uma das componentes importantes a ter em conta ([Azul e Mendes 1998]);

Page 122: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

114

• TED (Tutorial de Estruturas de Dados). É um tutorial para dinamizar o ensino na disciplina de estrutura de dados. Tem o objetivo de permitir uma maior interação entre o professor e o aluno, servindo como uma ferramenta de apoio ao aprendizado. Ele subdivide-se em várias estruturas de dados, permitindo ao aluno ter uma visão individualizada dos conteúdos, sem perder a visão do todo. Através de conceitos de dinamização de aprendizagem, como a visualização dos acontecimentos simultaneamente com o que é executado, o aluno cria uma visão de totalidade do sistema. O tutorial apresenta os algoritmos das estruturas de dados, ao mesmo tempo em que demonstra a sua implementação lógica através de exemplos visuais permitindo ao aluno acompanhar todos os passos simultaneamente ao que é executado ([Flávio 2004]);

• Dictionary of Algorithms and Data Structures. É um site que contém parte do Software Quality Group do Software Diagnostics and Conformance Testing Division, Information Technology Laboratory, que tem um dicionário de algoritmos, técnicas algorítmicas, estruturas de dados, problemas atípicos e definições relativas. Alguns tópicos têm links para implementações ([Black 2005]).

5. TBC-AED e TBC-AED/WEB

Assimilar o conceito e o desenvolvimento de algoritmos é alvo de muitas dificuldades enfrentadas pelos alunos de cursos da área de Computação. Alunos que apresentam deficiências advindas dos ensinos fundamental e médio encontram grandes dificuldades em aprender conceitos simples de programação de computadores [Alves e Costa 2004].

Visando contribuir para a melhora deste quadro, em 2004 foi desenvolvido o TBC-AED, um produto de software que vem ao encontro dos objetivos discutidos até o presente momento. Ele analisa tópicos básicos de programação, englobando um conteúdo teórico sintético e direto, acompanhado de processo gráfico passo a passo. Isso facil ita a visualização e o entendimento das informações apresentadas e disponibiliza maior tempo para a resolução de exercícios de aplicação e fixação. Além disso, pode-se alcançar maior interação entre o professor e os seus alunos, no sentido de aumentar o espaço para questionamentos.

Foi observado que o TBC-AED, mais que uma simples ferramenta, é um verdadeiro material de coleta de informações a respeito de programação, algoritmos e estruturas de dados. Ele representa uma experiência profissional, pois foi desenvolvido para fins de consumo, é gratuito e direcionado para alunos de área de Computação e Informática. Além disso, ele visa atender aos alunos que estudam algoritmos e estruturas de dados básicas. Isso é importante para tornar maior a interação graduando-computador, o que propicia estímulos de curiosidade, atenção e eficácia no desenvolvimento de trabalhos relacionados e do raciocínio lógico.

Durante o processo de embasamento teórico-prático, vários exemplos foram vistos e estudados para que o TBC-AED pudesse ser elaborado com cuidado especial, o que, a priori, não despertava qualquer tipo de receio; além disso, o seu conteúdo era de conhecimento. Com a introdução e a sedimentação de informações, o TBC-AED começou a ser desenvolvido e passou por várias etapas de melhorias, aplicadas tanto à forma de apresentação, quanto ao processamento dos algoritmos propriamente dito.

Page 123: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

115

Enfim, o TBC-AED possui, diferentemente dos demais ambientes de ensino discutidos na seção anterior, algumas características, tais como: i) links explicativos, evitando a necessidade de aprendizagem via tutorial; ii) a usabilidade da interface gráfica é razoável, possibil itando ao professor apresentar conceitos iniciais, conteúdos teóricos e práticos aos poucos, como apresentaria em transparências; iii ) conteúdo teórico simples, de forma a famil iarizar melhor o aluno com o assunto; iv) processo gráfico passo a passo, com elementos numéricos, o que melhora a visualização e o entendimento; e v) legendas explicativas, que ilustram as etapas do processo de apresentação de algoritmos. Estas características facil itam o aprendizado e englobam aulas teóricas e práticas, ao envolver uma nova forma de transmitir conhecimento.

Quanto ao desenvolvimento, o TBC-AED apresenta os seguintes temas: Busca em Vetor (Busca Binária), Métodos de Ordenação (Select Sort, Insert Sort, Boubble Sort, Merge Sort e Quick Sort), Estruturas de Alocação Estática e Dinâmica de Memória (Lista, Fila e Pilha) e Árvores (Árvore Binária de Busca). Ele foi elaborado usando a linguagem de programação Java (devido principalmente à portabilidade) e o ambiente de desenvolvimento NetBeans. A Figura 1 apresenta a tela principal do TBC-AED.

Ao selecionar um desses temas, um submenu é apresentado, contendo um item explicativo do tema (Figura 2) e outros itens de representação gráfica do tema. A Figura 3 mostra uma janela relativa à representação gráfica do tópico Busca Binária, o qual apresenta uma breve introdução a respeito do assunto pesquisado (na parte superior), o algoritmo em Portugol (à esquerda), o painel de animação, onde o algoritmo será executado graficamente (à direita), contendo uma legenda e um conjunto de botões (na parte inferior). Exceto este, os demais tópicos contém uma janela de mensagem interna usada para o efeito de passo a passo na parte inferior à direita (Figura 4).

Figura 1. Tela principal do TBC-AED

Page 124: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

116

Figura 2. Janela de mensagem contendo uma introdução do

tóp ico relacionado

A única tela que se diferencia dos padrões descritos anteriormente é relativa ao tópico Árvore Binária de Busca que, devido à sua peculiaridade de representação perante aos demais temas, demandou maior espaço para o processo gráfico (Figura 5). As mudanças ocorreram no posicionamento interno das informações: o algoritmo em Portugol possui uma área menor contendo na parte inferior uma janela de mensagem interna usada para o efeito de passo a passo, e o painel de animação é exibido em uma área maior, contendo na parte inferior um espaço para a exibição dos elementos quando o usuário requisitar uma das formas de imprimir uma árvore binária (pré-ordem, in-ordem ou pós-ordem) e uma legenda.

Figura 3. Tela Busca Binária

Page 125: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

117

Figura 4. Tela Merge Sort com janela de mensagem interna

Uma característica importante do TBC-AED é ser auto-explicativo, bastando deslizar com o mouse sobre as partes da tela para ver uma breve descrição sobre a região posicionada. Isso deixa o usuário mais à vontade e sem preocupações quanto a quaisquer peculiaridades, também por se tratar de um produto de software direcionado para alunos iniciantes em cursos de Computação.

Dentre as vantagens da abordagem construtiva, estão mecanismos para facil itar o processo de abstração, o fato de a animação refletir a interação com o aprendiz e as várias facilidades para a detecção visual de erros. Com isso, incentiva-se o processo de compreensão e autocorreção [Garcia et al. 1997]. Isso pode ser facilmente percebido em processos recursivos, os quais são de difícil explicação teórica, mas que podem ser vistos facilmente através da animação gráfica disponível em ambientes que utilizam algum algoritmo desse tipo (como merge sort e quick sort).

Com isso, verifica-se que a organização do TBC-AED é amplamente didática e esse fato serve de grande utilidade para o ensino de disciplinas que apresentam como ementa os tópicos relacionados. Além disso, é uma experiência desafiadora de graduandos, mestres e doutores tornar o ensino de Computação mais dinâmico, ao despertar o seu interesse a terem a mesma iniciativa, se possível com igual dedicação e empenho, para melhorar e aprimorar a formação de recursos humanos para a tecnologia.

Figura 5. Tela Árvore Binária com suas peculiaridades

Page 126: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

118

Como conseqüência da evolução, intrínseca a qualquer projeto, o TBC-AED foi disponibil izado via Web, através de applets7, gerando o TBC-AED/WEB (Treinamento Baseado em Computador para Algoritmos e Estruturas de Dados via Web) para que possa ter maior acessibilidade, além de possibil itar a troca de idéias, através da interatividade com usuários diversos. A idéia de criar o TBC-AED/WEB surgiu para evitar que o estudante não precise fazer o download do TBC-AED para estudar, bastando ter uma versão do aplicativo apenas em sua estação de trabalho em casa, para trabalhar offline. Quando estiver em alguma estação conectada à Internet, ele pode executar o programa diretamente no navegador, desde que esta estação possua a JVM (Java Virtual Machine) instalada.

Quanto às características relacionadas à funcionalidade e à aparência, o TBC-AED/WEB não difere do TBC-AED. Dessa forma, a partir do acesso Web, espera-se gerar uma interatividade maior ainda com outros pesquisadores, difusão da pesquisa, contribuição à comunidade científica da área e feedback em relação ao trabalho realizado.

Assim sendo, o TBC-AED e o TBC-AED/WEB é uma ferramenta valiosa para a formação de alunos, pois atende a disciplinas que estão no início do curso e que são pré-requisitos necessários para as disciplinas mais específicas de períodos avançados. Quando feita uma boa base, o rendimento e o desempenho aumentam, proporcionando melhores resultados, melhores currículos e melhores profissionais para o mercado.

6. TBC-AED em Uso

Alguns seminários de apresentação e simulação de recursos disponíveis no programa foram realizados durante o primeiro semestre de 2005 aos alunos que cursavam a disciplina e aos alunos que a util izariam no segundo semestre, agora com a aplicação contínua da ferramenta.

Até o momento, o uso da ferramenta atende às expectativas, pois foi notado que os alunos ficaram mais motivados e mais atentos, uma vez que estão utilizando o computador diretamente. Além disso, a ferramenta foi disponibilizada aos alunos, os quais podem acessar exemplos práticos extraclasse, ou seja, em casa ou em outro lugar que não seja durante o horário da aula.

Foi observado que a ferramenta altera o ânimo dos alunos, devido ao fato de que conceitos abstratos passam a ser melhor visualizados e compreendidos, melhorando a dinamização do ensino. Isso também contribuiu para um tempo maior reservado à resolução de exercícios, levando à sedimentação da teoria. Isso resulta em maior expectativa do aumento do índice de aprovação em uma disciplina importante para a Computação.

A partir da apresentação e disponibil ização da ferramenta aos alunos, aqueles que a utilizaram obtiveram êxito na disciplina, perfazendo um total geral de aprovação superior àqueles que não a utilizaram. Devido a esse fato, para melhorar os resultados, optou-se por dividir a carga horária da disciplina, antes apenas teórica, em aulas

7 Applets são programas Java que podem ser embutidos em documentos HTML. Quando um navegador carrega uma página da Web que contém um applet, o applet é executado ([DEITEL, 2003]).

Page 127: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

119

expositivas (teóricas) e de laboratório (uso da ferramenta, incluindo exercícios de programação) para o segundo semestre de 2005.

7. Conclusões e Trabalhos Futuros

Sob todo conjunto de informações obtidas até o presente momento, pode-se perceber que existe uma gama de recursos que possibil itam o desenvolvimento de ferramentas computacionais para o auxílio da educação superior em Computação, com destaque para a linguagem de programação Java, que conta com a portabilidade. Isso faz com que as novas tecnologias atinjam mais rapidamente seu público alvo.

Além disso, observou-se que o uso de produtos de software para o ensino de programação e algoritmos é uma idéia interessante, se for amadurecida e desenvolvida de forma cuidadosa e estruturada. Isso fornece novas experiências para professores e alunos, que se proponham a trabalhar com esse tema. Além disso, eles terão sua qualidade de ensino elevada e poderão ser capazes de avançar mais rapidamente no campo do conhecimento, através da agil idade de processos didáticos e da participação ativa do docente da área.

Conclui-se também que uma boa elaboração de produtos tecnológicos que facil item a transmissão de conhecimentos em Computação deve ser acompanhada de expressiva pesquisa no campo de novas metodologias de ensino. A principal finalidade disso é cada vez mais haver contribuições que incorram no aprimoramento do ensino superior e na formação de profissionais melhor qualificados para o mercado. Isso reflete principalmente sobre futuros professores, uma vez que aqueles que têm passado por esse tipo de experiência durante a graduação terão grande interesse em executar o mesmo processo quando estiverem lecionando.

Este trabalho deixa como contribuição o TBC-AED e o TBC-AED/WEB que englobam temas relacionados a algoritmos e estruturas de dados. Além disso, faz uma revisão da literatura envolvendo a importância de um bom ensino de algoritmos e programação e tópicos de Informática na Educação. Isso estimula mudanças na educação em cursos que formam profissionais para a área tecnológica e incentivam docentes a melhorarem sua forma de pesquisa e ensino envolvendo Computação e Informática.

Com relação aos primeiros resultados da aplicação da ferramenta, estão sendo notadas maior atenção e facil idade de aprendizagem. Dessa forma, o sistema continuará a ser utilizado ao longo das aulas ministradas para a disciplina Algoritmos e Estruturas de Dados II , oferecida pelo DCC/UFLA, incluindo questionários e análise dos resultados das avaliações.

Com o TBC-AED/WEB, pretende-se alcançar maior acessibil idade e troca de idéias, dada a interatividade com usuários diversos. A partir disso, também é interessante atacar outro assunto de grande importância, a teoria dos grafos, a fim de ampliar o conhecimento e contribuir para a melhoria do ensino na área, através de novas ferramentas para o ensino de Computação.

Page 128: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

120

Referências

Almeida, M. E. (2000) “Informática e Formação de Professores”, Série de Estudos – Educação à Distância (ProInfo). Ministério da Educação. Secretária de Educação à Distância. v. 2

Almeida, M. S. e Nogueira, C. R. D. (2001) “A Internet no Trabalho Pedagógico dos Professores”, Informática na Educação – Artigos Científicos. Universidade Regional Integrada do Alto Uruguai e das Missões – URI – RS.

Alves, A. A. e Costa, M. R. (2004) “algolPUC: Uma Ferramenta de Apoio à Programação para Iniciantes”, III Workshop de Educação em Computação e Informática do estado de Minas Gerais (WEIMIG’ 2004). Belo Horizonte, MG, Brasil .

Azeredo, P. A. (2000) “Uma proposta de Plano Pedagógico para a Matéria de Programação”, Anais do II Curso: Qualidade de Cursos de Graduação da Área de Computação e Informática (WEI 2000). Editora Universitária Champagnat.

Azul, A. A. e Mendes, A. J. “EDDL: Um Programa Didático sobre Estruturas de Dados Dinâmicas Lineares”, 3º Simpósio Investigação e Desenvolvimento de Software Educativo – 1998. Évora, Portugal. Disponível em: http://www.minerva.uevora.pt/ simposio/comunicacoes/Mendes/Eddl.html. Acesso: 15 jun 2005.

Black, P. E. “Dictionary of Algorithms and Data Str uctures”. NIST ( National Institute of Standards and Technology). Disponível em http://www.nist.gov/dads/. Acesso: 15 jun 2005.

Borges, K. S. e Filho, H. B. R. (2005) “A Importância dos Grupos de Estudos na Formação Acadêmica”. XIII Workshop de Educação em Computação (WEI’2005). São Leopoldo, RS, Brasil.

Faria, E. S. J. e Coello, J. M. A. (2005) “Um Estudo Empírico dos Efeitos do Uso de Trabalho Colaborativo no Aprendizado de Programação em Cursos de Graduação em Computação”. XIII Workshop de Educação em Computação (WEI’2005). São Leopoldo, RS, Brasil .

Faria, E. S. J., Vilela, J. M. e Coello, J. M. A. (2005) “Um Sistema de Aprendizado Colaborativo de Programação Baseado em Agentes chamado Learn In Group”. XIII Workshop de Educação em Computação (WEI’2005). São Leopoldo, RS, Brasil .

Flávio, D. “TED - Tutorial de Estruturas de Dados”, desenvolvido durante estágio supervisionado na Universidade do Vale do Itajaí - 2004. Disponível em http://www.tutorialdeestruturadedados.8m.com/. Acesso: 20 jun 2005.

Garcia, I. C., Rezende, P. J. e Calheiros, F. C. (1997) “Astral: Um Ambiente para Ensino de Estruturas de Dados através de Animações de Algoritmos”, Revista Brasileira de Informática na Educação (RBIE’1997) nº 01, http://www.inf.ufsc.br/sbc-ie/revista/nr1/garcia.htm. Ambiente ASTRAL disponível em: http://www.dcc.unicamp.br/~rezende/ASTRAL/. Acesso: 28 abr 2005.

Giraffa, L., Marczak, S. e Prikladnicki, R. (2005) “PSD -E: Em Direção a um Processo para Desenvolvimento de Software Educacional”. XI Workshop de Informática na Escola (WIE’2005). São Leopoldo, RS, Brasil.

Page 129: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

121

Júnior, J. C. R. P. e Rapkiewicz, C. E. (2004) “O Processo de Ensino e Aprendizagem de Algoritmos e Programação: Uma Visão Crítica da Literatura”, III Workshop de Educação em Computação e Informática do estado de Minas Gerais (WEIMIG’ 2004). Belo Horizonte, MG, Brasil.

Júnior, J. C. R. P., Rapkiewicz, C. E., Delgado, C. e Xexeo, J. A. M. (2005) “Ensino de Algoritmos e Programação: Uma Experiência no Nível Médio”. XIII Workshop de Educação em Computação (WEI’2005). São Leopoldo, RS, Brasil.

Koslowski, S. R. e Nunes, M. A. S. N. (2001) “O Computador como Ferramenta Pedagógica nas Séries Iniciais”, Informática na Educação – Artigos Científicos. Universidade Regional Integrada do Alto Uruguai e das Missões – URI – RS.

Raabe, A. L. A. e Silva, J. M. C. (2005) “Um Ambiente para Atendimento das Dificuldades de Aprendizagem de Algoritmos”. XII I Workshop de Educação em Computação (WEI’2005). São Leopoldo, RS, Brasil.

Setúbal, J. C. (2000) “Uma proposta de Plano Pedagógico para a Matéria de Computação e Algoritmos”, Anais do II Curso: Qualidade de Cursos de Graduação da Área de Computação e Informática (WEI 2000). Editora Universitária Champagnat.

Soares, T. C. A. P., Cordeiro E. S., Stefani Í. G. A., Tirelo, F. (2004) “Uma Proposta Metodológica para o Aprendizado de Algoritmos em Grafos Via Animação Não-Intrusiva de Algoritmos”, II I Workshop de Educação em Computação e Informática do Estado de Minas Gerais (WEIMIG’ 2004). Belo Horizonte, MG, Brasil .

Souza, P. C. e Wazlawick, R. S. (1997) “Ferramenta de Autoria para a Criação de Ambientes Construtivistas em Realidade Virtual”. Anais do VIII Simpósio Brasileiro de Informática na Educação. Instituto Tecnológico de Aeronáutica (ITA), v. 1.

Wirth, N. (1989) “Algoritmos e Estruturas de Dados”. LTC Informática-Programação.

Yamamoto, F. S., Silva, A. F., Zanutto, J. e Zampirolli, F. A. (2005) “Interdisciplinaridade no Ensino de Computação”. XIII Workshop de Educação em Computação (WEI’2005). São Leopoldo, RS, Brasil.

Zambalde, A. L. e Alves, R. M. (2002) “Introdução à Informática Educativa”, Textos Acadêmicos para o Curso de Pós-Graduação ‘Lato Sensu’ (Especialização) à Distância – Informática em Educação. UFLA/FAEPE.

Page 130: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

122

O artigo completo a seguir foi publicado em Anais do I COMPSULMT - I

Congresso de Computação do Sul do Mato Grosso, ocorrido na

UFMT/Rondonópolis/MT em 2005.

TBC-AED: Um Software Gráfico para Apresentação de Algor itmos e Estruturas de Dados aos Iniciantes em

Computação e Informática*

Rodrigo Pereira dos Santos1, Heitor Augustus Xavier Costa2

Universidade Federal de Lavras – Departamento de Ciência da Computação – Caixa Postal 3037 – 37.200-000 – Lavras – MG – Brasil

[email protected], [email protected]

Resumo. Este artigo tem o objetivo de apresentar o TBC-AED, um sistema de informação educacional que contem vários temas relacionados aos conteúdos lecionados aos iniciantes em Computação, procurando deixar uma contribuição à literatura e aos docentes da área. Com isso, o TBC-AED busca contribuir para a melhoria da qualidade de ensino de programação, algoritmos e estruturas de dados nos cursos de graduação em Computação e Informática.

Palavras-chaves: algoritmos e estruturas de dados, programação, informática na educação.

Abstract. This paper has the objective to present the TBC-AED, an educational information system that contains a lot of themes related to subjects instructed to beginner students in Computing, and also trying to contribute to literature and to teachers. So, TBC-AED tries to help the improvement of teaching quality of programming, algorithms and data structures in the graduation courses in Computing.

Key-words: algorithms and data structures, programming, computing in education.

1. Introdução

A busca por melhores métodos educacionais para cursos que se embasam em Computação e Informática é uma preocupação constante de professores e coordenadores de curso. A cada dia novas tecnologias são desenvolvidas e novos conceitos precisam ser incorporados à formação universitária, para que sejam formados bons profissionais para o mercado.

* Apoio PBIICT/FAPEMIG.

Page 131: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

123

Um grande desafio que está vinculado a essa formação é a maneira de estruturar o ensino de desenvolvimento de algoritmos, em quaisquer dos cursos escolhidos de Computação e Informática.

Segundo [Ascencio apud Campos et al 2003], algoritmo é a descrição de uma seqüência de passos que deve ser seguida para a realização de uma tarefa, e para [Farrer apud Campos et al 2003], ação é um acontecimento que, a partir de um estado inicial, após um período de tempo finito, produz um estado final previsível e bem definido. Assim, um algoritmo é a descrição de um conjunto de comandos que, obedecidos, resultam em uma sucessão finita de ações.

Atualmente, o ensino de algoritmos busca nas Ciências Exatas seu pilar de sustentação, pois disciplinas nessa área despertam o raciocínio matemático-lógico para resolução de problemas. Mas, isso deve ser mais uma das ferramentas para o estudante e não a sua única fonte, pois a sua formação futura será muito ampla.

O conceito de programação, segundo [Wirth 1989], é arte ou técnica de construir e formular algoritmos de uma forma sistemática. Esse conceito induz que o ingresso tem um dom de programar ou ele pode aprender as técnicas necessárias a aprimorar seu conhecimento. Logo, ao ingressar em um curso superior na área, ele deve ter sua base sedimentada, para que fique apto a prosseguir de maneira positiva durante seus estudos. Com isso, professores de disciplinas relacionadas à programação e coordenadores de curso sentem a grande responsabil idade de buscar e aperfeiçoar sua maneira de conduzir a estrutura disciplinar e curricular dos graduandos em seus estágios iniciais da universidade.

Este artigo tem por objetivo apresentar uma ferramenta computacional didática – TBC-AED (Treinamento Baseado em Computador para Algoritmos e Estruturas de Dados) – fruto de um estudo sobre algoritmos, estruturas de dados e programação. Esta ferramenta visa tornar o ensino deste conteúdo mais prático e abrangente, despertando o interesse do aluno, o seu espírito de pesquisa e a busca de informações que possam torná-lo um profissional crítico e de opinião sólida. Assim, seu rendimento ao longo do curso aumentaria, melhorando o seu desempenho em disciplinas mais específicas.

O artigo está organizado da seguinte forma: seção 2 apresenta um breve relato sobre os problemas acerca do ensino de Computação, algumas soluções e considerações; seção 3 retrata a importância do uso de ferramentas computacionais no ensino; seção 4 detalha algumas ferramentas disponíveis para o ensino de algoritmos, estruturas de dados e programação; e seção 5 apresenta o TBC-AED e alguns resultados iniciais de sua aplicação. Por fim, são apresentadas conclusões e listados trabalhos futuros.

2. Análise de metodologias de ensino de Computação

Dentro da esfera de discussão dos métodos educacionais como ferramentas para a formação de profissionais de qualidade para o mercado, este trabalho se propõe a dar sua contribuição. Entretanto, ele analisa um tema mais abrangente e complexo: as áreas de Computação e Informática, que apresentam inovações constantes e grande transformação de preceitos existentes. Sabe-se que é complicado promover mudanças na educação básica e, ao se tratar de cursos de graduação baseados na produção de tecnologia, o problema é ainda maior. O que se pode perceber são cursos exercendo

Page 132: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

124

grande atração sobre os ingressantes em uma faculdade, o que mostra a concorrência elevada em processos seletivos. No entanto, vencido o obstáculo de entrada, vêm o início da fase universitária e um dos maiores dilemas: contato com disciplinas básicas que prepararão o ingresso para atuar em áreas específicas. Esse contato, sobretudo em cursos de Computação, pode gerar afinidade e repulsa, o que acontece com freqüência expressiva, conforme [Rodrigues 2002; Schultz 2003; Chaves de Castro et al 2003; Delgado et al 2004 apud Júnior e Rapkiewicz 2004].

Dessa forma, a falta de compreensão do raciocínio lógico pode ser a principal razão pelo alto índice de reprovação nas disciplinas de Algoritmos e Programação e, em alguns casos, pela desistência de um curso. Em parte, isso é decorrência da dificuldade encontrada pelos professores para acompanharem as atividades laboratoriais de programação, dado o alto número de estudantes sob sua supervisão [Tobar et al 2001]. Dentro desse paradigma, pode-se destacar a forma como os alunos estudam para a disciplina, memorizando, e a falta de pré-requisitos em conteúdos relacionados [Júnior e Rapkiewicz 2004].

[Rodrigues 2002] relata outros problemas associados a este processo: i) a falta de motivação do aluno criada pelo despreparo e o desânimo quando há a crença de que a disciplina constitui um obstáculo extremamente difícil de ser superado; ii) o processo tradicional de avaliação pode deixar o aluno tenso prejudicando o aprendizado; ii i) o relacionamento entre professor e aluno pode ser um problema quando o primeiro preocupa-se em mostrar o que sabe desconsiderando um ambiente de aprendizagem descontraído e colaborativo; e iv) a didática ou a falta de metodologia de ensino dificulta o aprendizado dos novos e diversos conceitos. Inclui-se a grave falta de comunicação entre professores das várias disciplinas que permitiria identificar conteúdos afins ou superposição de tópicos, auxil iando na integração do trabalho e no processo de ensino e aprendizagem [Giraffa, Marczak e Almeida 2003; Pimentel, França e Omar 2003].

[Rodrigues 2002] ainda afirma que o professor deve ser capaz de fazer o aluno compreender a abstração envolvida com toda a simbologia utilizada. Para isto, deve utilizar sua criatividade e tentar resolver cada problema baseando-se em situações do cotidiano. Assim, o aluno começa a ter raciocínio lógico e ordem de pensamento.

No entanto, para [Buzin 2001], o iniciante do curso superior traz uma bagagem cultural que não apenas não serve para o apropriado desenvolvimento de um estudo acadêmico, mas atrapalha o desenvolvimento desse estudo. Ele vem de uma experiência de estudante de disciplinas desenvolvidas em torno do paradigma de apresentação de resposta e soluções, usualmente da velha e surrada didática diretiva, ao invés de focar no processo de questionamento. Com certeza, sem uma radical mudança cultural de atitude e comportamento, este indivíduo não será um profissional de computação adequado, pois é preciso desenvolver a capacidade de buscar a resposta através de novas perguntas que levem à resposta da questão original. A formação do profissional em computação deve incitar desenvolvimento de raciocínio crítico, solução de problemas, aplicação de métodos de pesquisa e desenvolvimento profissional contínuo. Assim, mais uma das vertentes do problema educacional na área de Computação encontra-se na sua formação básica.

Page 133: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

125

Mas, considerando o campo universitário, o nível de maturidade do aluno é importante para que o professor possa adequar o processo pedagógico no sentido de acompanhar o amadurecimento do aluno, permitindo aplicar técnicas de ensino e aprendizagem [Júnior e Rapkiewicz 2004]. Entretanto, o acompanhamento contínuo do aprendiz e o tratamento personalizado ao estudante, em turma com um número elevado de alunos, serão possíveis se forem apoiados por sistemas inteligentes, ou seja, auxil iados por computador [Pimentel, França e Omar 2003]. Logo, a idéia de usar produtos de software para o ensino de programação é de grande valia e ainda poderá transformar o ensino de disciplinas avançadas em algo mais primoroso e tecnológico.

A partir de todo esse desafio problemático, mudanças passaram a ser consideradas por graduados, mestres e doutores que trabalham com o ensino de algoritmos e programação. A análise da literatura feita por [Júnior e Rapkiewicz 2004] mostrou que há três vertentes na busca de soluções para os problemas apontados: i) Ferramentas, incluem trabalhos que apresentam ferramentas computacionais visando facil itar o processo de ensino e aprendizagem; ii) Estratégias, incluem trabalhos que discutem estratégias de ensino e/ou de avaliação de competências; e iii) Ferramentas e Estratégias, são os trabalhos que discutem alguma estratégia suportada por ferramentas computacionais.

Assim, a linha deste trabalho vem ao encontro com o terceiro tópico. Além do desenvolvimento do produto de software (ferramenta computacional), ocorre também uma discussão a respeito do uso de ferramentas computacionais nas aulas, visando melhorar o ensino de programação, algoritmos e estruturas de dados. Pois, estes são pontos fortes para a formação de profissionais nas áreas de Computação e Informática.

3. A impor tância do uso de ferr amentas computacionais no ensino

É importante salientar alguns pontos especiais: • a aula de uma disciplina que relaciona programação, algoritmos e estruturas de dados

deve ser realizada em laboratórios para que os alunos possam entender as abstrações apresentadas. Deve ser composta de uma parte teórica, onde conceitos são transmitidos, e uma parte prática, onde são entendidos comandos e tópicos ministrados. Deve também haver questões-desafio, para que os discentes sejam acostumados a usar de agil idade e criatividade na solução de problemas [Júnior e Rapkiewicz 2004];

• o TBC-AED, que enfatiza animação gráfica, é de extrema importância como facil itador do processo de aprendizagem, visto que a apresentação de conceitos abstratos se torna mais viável e didática, melhorando a qualidade do material das aulas [Soares et al 2004];

• normalmente, um aluno se interessa por aulas diferenciadas e isso não só prende sua atenção, como também influenciam positivamente nas avaliações [Buzin 2001];

• uma economia de tempo pode ser conseguida e esta seria direcionada para maiores explicações e resoluções de exercícios, uma vez que o material didático seria virtual, evitando uma explanação cansativa através do quadro-negro [Santos e Costa 2005];

• o aluno tem acesso livre ao material virtual para estudar em casa. Além disso, ele possuirá um valioso projeto, para consultas futuras, em caso de necessidade – a tendência em abstrair detalhes, com o passar do tempo, sempre leva a dúvidas e estas

Page 134: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

126

a novas pesquisas em estruturas básicas ora aprendidas [Garcia, Rezende e Calheiros 1996];

• a transição de educadores também seria facil itada, uma vez que existiria uma base pronta para ser apreciada, mantendo a qualidade de ensino e aprendizagem do conteúdo.

Assim, o TBC-AED é um subsídio valioso para a formação de alunos, ajudando-os a concluírem seu curso, pois atende a disciplinas que estão no início do curso e são pré-requisitos necessários para as disciplinas mais específicas de períodos avançados. Quando feita uma boa base, rendimento e desempenho aumentam, proporcionando melhores resultados, melhores currículos e melhores profissionais para o mercado.

4. Ferramentas para o ensino de algor itmos, estruturas de dados e programação

Para o desenvolvimento de qualquer trabalho, faz-se necessário discutir o que realmente há de contribuição ao universo acadêmico. Nesta seção, são citados alguns projetos relacionados. Deve-se ressaltar, contudo, que não houve pretensão de fazer uma análise exaustiva de tais projetos. São eles: • ASTRAL (Animation of Data Structures and Algorithms) [Garcia, Rezende e

Calheiros 1997]. É um ambiente de programação para produção de animações de algoritmos e estruturas de dados com propósito instrucional. O ambiente foi desenvolvido no Instituto de Computação da UNICAMP em 1995-97 para plataforma Macintosh e recentemente portado para Windows. Utilizando o ambiente, um usuário pode implementar uma variedade de estruturas de dados e algoritmos e, através de chamadas de algumas rotinas específicas do ambiente, é possível visualizar graficamente as estruturas de dados bem como animações dos algoritmos. Isso se dá através de uma biblioteca de suporte gráfico que é parte do ASTRAL. A abordagem de animação de algoritmos tem duas vantagens imediatas: aprendizado, beneficia da observação dinâmica do funcionamento das estruturas de dados e proporciona um nível de abstração maior, e depuração, que é facilitada pela visualização gráfica, deixando claro ao usuário-programador, no momento da execução, em que parte da implementação da estrutura ou do algoritmo os erros ocorrem. Estas vantagens são interessantes aos alunos de disciplinas de estruturas de dados e algoritmos. O uso do ASTRAL em disciplinas de graduação sobre estruturas de dados com componente de programação foi muito bem sucedido em vários semestres;

• EDDL (Estruturas de Dados Dinâmicas Lineares) [Azul e Mendes 1998]. Surgiu de uma discussão sobre estratégias de ensino das estruturas de dados e tipos de dados abstratos utili zados em programação. A estruturação do programa EDDL e a concepção da sua funcionalidade englobam as seguintes componentes: 1) abordagem introdutória aos conceitos ou especificação dos tipos de estruturas; 2) técnicas de implementação; 3) utilização dessas estruturas na resolução de problemas. Pode-se utilizar como ferramenta introdutória ou de revisão, exercitação e auto-avaliação. Após o desenvolvimento dos primeiros protótipos, o EDDL adquiriu uma configuração global em que uma tela principal dá acesso aos módulos principais do programa, que são: conceitos introdutórios, pilhas, filas, listas lineares e exercícios. Em cada uma dessas seções, são analisadas em detalhes as operações mais usuais com estes tipos de estruturas, tais como: criação e destruição da estrutura, inserção e

Page 135: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

127

remoção de elementos na estrutura e verificação do estado da estrutura. O processo de avaliação do programa em situações concretas de ensino/aprendizagem está em curso. Oferece um conjunto de ferramentas e recursos de programação que revelam ser ao mesmo tempo intuitivo e de fácil manipulação, diversificado, versátil e eficaz para o desenvolvimento de projetos, principalmente quando o aspecto gráfico é uma das componentes importantes a considerar;

• TED (Tutorial de Estruturas de Dados) [Flávio 2004]. É um tutorial para dinamizar o ensino na disciplina de estrutura de dados e é um software educacional com o objetivo de permitir uma maior interação professor-aluno, servindo como uma ferramenta de apoio ao aprendizado. O tutorial subdivide-se nas várias estruturas apresentadas durante a disciplina, permitindo ao aluno ter uma visão individualizada dos conteúdos, mas sem perder a visão do todo. Através de conceitos de dinamização de aprendizagem, como a visualização dos acontecimentos simultaneamente com o que é executado, o aluno cria uma visão de totalidade do sistema. O tutorial apresenta algoritmos das estruturas de dados, ao mesmo tempo que demonstra a sua implementação lógica através de exemplos visuais permitindo ao aluno acompanhar os passos simultaneamente ao que é executado;

• Dictionary of Algor ithms and Data Structures [Black 2005]. Este site contém uma parte do Software Quality Group do Software Diagnostics and Conformance Testing Division, Information Technology Laboratory. Este é um dicionário de algoritmos, técnicas algorítmicas, estruturas de dados, problemas atípicos e definições relativas. Os algoritmos incluem funções comuns e os problemas incluem alguns como o caixeiro viajante. Alguns tópicos têm links para implementações e mais informações. A página de índice relaciona os tópicos por tipo ou em ordem alfabética. Apresenta o funcionamento dos algoritmos como animações sendo executadas ao se definirem os seus parâmetros.

5. O “ TBC-AED” – Desenvolvimento do produto de software e seus reflexos

O TBC-AED é o produto de software que vem ao encontro dos objetivos discutidos até o momento. Ele procura analisar tópicos básicos de programação, englobando conteúdo teórico sintético e direto, acompanhado de processo gráfico passo a passo, representando um repositório didático com visualização gráfica. Isso facil ita visualização e entendimento das informações apresentadas e economiza o tempo gasto em transcrever explicações do quadro-negro para o caderno para resolução de exercícios de aplicação e fixação. Além disso, pode-se alcançar maior interação professor-aluno, aumentando o espaço para questionamentos.

Foi observado que o TBC-AED, mais que uma simples ferramenta, é um verdadeiro material de coleta de informações a respeito de programação, algoritmos e estruturas de dados. Ele representa uma experiência profissional, pois foi desenvolvido para fins de consumo que, neste caso, é gratuito e direcionado aos alunos de área de Computação e Informática. Além disso, ele visa atender aos alunos que estudam algoritmos e estruturas de dados básicas. Isso é importante, pois aumenta a interação aluno-computador, o que propicia estímulos de curiosidade, atenção e eficácia no desenvolvimento de trabalhos relacionados e do raciocínio lógico.

Durante o processo de embasamento teórico-prático, vários exemplos foram vistos e estudados para que o TBC-AED pudesse ser elaborado com cuidado especial, o que

Page 136: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

128

não despertava qualquer tipo de receio; além disso, o seu conteúdo era de conhecimento. Com a introdução e a sedimentação de informações, o TBC-AED começou a ser desenvolvido e passou por várias etapas de melhorias, aplicadas à forma de apresentação e ao processamento dos algoritmos propriamente dito.

Enfim, o TBC-AED possui, diferentemente dos demais ambientes de ensino discutidos na seção anterior, algumas características, tais como: links explicativos, evitando a necessidade de aprendizagem via tutorial; a usabil idade da interface gráfica é razoável, possibil itando ao professor apresentar conceitos iniciais, conteúdos teóricos e práticos aos poucos, como apresentaria em transparências; conteúdo teórico simples, familiarizando melhor o aluno com o assunto; processo gráfico passo a passo, com elementos numéricos, melhorando a visualização e o entendimento; e legendas explicativas, ilustrando as etapas do processo de apresentação de algoritmos, facil itando o aprendizado e englobando aulas teóricas e práticas, ao envolver uma nova forma de transmitir conhecimento.

Quanto ao desenvolvimento, o TBC-AED apresenta os seguintes temas: Busca Binária, Métodos de Ordenação (Select Sort, Insert Sort, Bubble Sort, Merge Sort e Quick Sort), Alocação Estática e Dinâmica de Memória (Lista, Fila e Pilha) e Árvore Binária de Busca. Ele foi elaborado usando a linguagem de programação Java (devido à portabili dade) e o ambiente de desenvolvimento NetBeans, ambos disponíveis em (www.sun.com). Ele se organiza segundo uma tela principal, contendo uma barra de menu separando os temas, que direcionam o usuário para o assunto de seu interesse (Figura 1).

Figura 1. Tela principal do TBC-AED

Ao selecionar um desses temas, um submenu é apresentado, contendo um item explicativo do tema (Figura 2) e outros itens de representação gráfica do tema. A Figura 3 mostra uma janela relativa à representação gráfica do tópico Busca Binária, o qual apresenta uma breve introdução a respeito do assunto pesquisado (na parte superior), o algoritmo em Portugol8 (à esquerda), o painel de animação, onde o algoritmo será executado graficamente (à direita), contendo uma legenda e um conjunto de botões (na parte inferior).

8 Por tugol ou pseudocódigo consiste em analisar o enunciado do problema e escrever, por meio de regras predefinidas, os passos a serem seguidos para a resolução do problema [Campos et al 2003].

Page 137: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

129

Figura 2. Janela de mensagem exibida contendo uma introduç ão a respeito do tópico relacionado

A única tela que se diferencia dos padrões descritos anteriormente é relativa ao tópico Árvore Binária de Busca que, devido à sua peculiaridade de representação perante aos demais temas, demandou maior espaço para o processo gráfico (Figura 4). As mudanças ocorreram no posicionamento interno das informações: o algoritmo em Portugol possui uma área menor contendo na parte inferior uma janela de mensagem interna usada para o efeito de passo a passo, e o painel de animação é exibido em uma área maior, contendo na parte inferior um espaço para a exibição dos elementos quando o usuário requisitar uma das formas de imprimir uma árvore binária (pré-ordem, in-ordem ou pós-ordem) e uma legenda.

Figura 3. Tela Busca Binária

Page 138: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

130

Figura 4. Tela Árvore Binária com suas peculiaridades

Uma característica importante do TBC-AED é ser auto-explicativo. Para isto, basta deslizar com o mouse nas partes da tela para ver uma breve descrição sobre a região posicionada. Isso deixa o usuário à vontade e sem preocupações quanto a qualisquer peculiaridades, também por se tratar de um produto de software direcionado para alunos iniciantes em cursos de Computação.

Dentre as vantagens da abordagem construtiva definida por [Garcia, Rezende e Calheiros 1996], estão mecanismos para facilitar o processo de abstração, o fato da animação refletir a interação com o aprendiz e as várias facil idades para a detecção visual de erros. Com isso, incentiva-se o processo de compreensão e autocorreção. Isso pode ser facilmente percebido em processos recursivos, os quais são de difícil explicação teórica, mas que podem ser vistos facilmente através da animação gráfica disponível em ambientes que utili zam algum algoritmo desse tipo (como merge sort e quick sort).

Com isso, verifica-se que a organização do TBC-AED é amplamente didática e esse fato serve de grande utilidade para o ensino de disciplinas que apresentam como ementa os tópicos relacionados. Além disso, é uma experiência desafiadora para graduandos, mestres e doutores tornar o ensino de Computação mais dinâmico, ao despertar o seu interesse a terem a mesma iniciativa, se possível com igual dedicação e empenho, para melhorar e aprimorar a formação de recursos humanos para a tecnologia.

6. Conclusões e trabalhos futuros

Sob todo conjunto de informações obtidas até o momento, pode-se perceber que existe uma gama de recursos que possibilitam o desenvolvimento de ferramentas computacionais para o auxílio da educação superior em Computação, com destaque para a linguagem de programação Java, que conta com a portabili dade e forte suporte para técnicas adequadas de Engenharia de Software [Deitel e Deitel 2003]. Isso faz com que novas tecnologias atinjam mais rapidamente seu público alvo.

Além disso, observou-se que o uso de produtos de software para o ensino de programação e algoritmos é uma idéia interessante, se for amadurecida e desenvolvida de forma cuidadosa e estruturada. Isso fornece novas experiências para professores e alunos, que se proponham a trabalhar com esse tema. Além disso, eles terão sua qualidade de ensino elevada e poderão ser capazes de avançar mais rapidamente no

Page 139: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

131

campo do conhecimento, através da agil idade de processos didáticos e da participação ativa do docente da área.

Conclui-se também que uma boa elaboração de produtos tecnológicos que facil item a transmissão de conhecimento em Computação deve ser acompanhada de expressiva pesquisa no campo de novas metodologias de ensino. A principal finalidade é cada vez mais ter contribuições que incorram no aprimoramento do ensino superior e na formação de profissionais qualificados para o mercado. Isso reflete principalmente sobre futuros professores, uma vez que aqueles que têm passado por esse tipo de experiência durante a graduação terão grande interesse em executar o processo quando estiverem lecionando.

Dessa forma, compreende-se que a educação precisa ser reavaliada, pois representa a base da atual sociedade mundial e o único instrumento que pode desenvolver o ser humano e torná-lo digno de constituir sua vida e seu ambiente. Isso deve ser acompanhado por uma atitude crítica da comunidade científica formada, que é a maior interessada em manter e prosseguir com avanços que contribuam para a melhoria da qualidade de vida.

Com relação ao uso do TBC-AED, alguns seminários de apresentação e simulações de recursos foram realizados durante o 1° semestre de 2005 aos alunos que cursavam a disciplina e aos que a utilizariam no 2° semestre, agora com o seu uso contínuo.

Até o momento, o TBC-AED atende às expectativas, pois se notou que os alunos ficaram mais motivados e mais atentos, uma vez que utilizam o computador diretamente. Além disso, a ferramenta está disponível aos alunos, que podem acessar exemplos práticos extraclasse, ou seja, em casa ou outro lugar que não seja no horário da aula.

Foi observado que a ferramenta altera o ânimo dos alunos, pois conceitos abstratos passam a ser melhor visualizados e compreendidos, melhorando a dinamização do ensino. Isso também contribuiu para um tempo maior reservado à resolução de exercícios, levando à sedimentação da teoria. Isso resulta em maior expectativa do aumento do índice de aprovação em uma disciplina importante para a Computação.

Com a apresentação e disponibil ização do TBC-AED, os alunos que a utilizaram obtiveram êxito, perfazendo um total geral de aprovação superior àqueles que não a utilizaram. Assim, para melhorar os resultados, optou-se em dividir a carga horária da disciplina, antes apenas teórica, em teóricas e de laboratório para o 2° semestre de 2005.

Como trabalhos futuros, está-se disponibil izando o TBC-AED/Web, para se ter maior acessibil idade, além de possibil itar a troca de idéias, através da interatividade com usuários diversos. A partir disso, também é interessante atacar outro assunto de grande importância, algoritmos em grafos, a fim de ampliar o conhecimento e contribuir para a melhoria do ensino na área, através de novas ferramentas para o ensino de Computação.

Referências Azul, A. A. e Mendes, A. J. EDDL: Um Programa Didático sobre Estruturas de Dados

Dinâmicas Lineares, 3º Simpósio Investigação e Desenvolvimento de Software

Page 140: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

132

Educativo – 1998. Évora, Portugal. Disponível em: http://www.minerva.uevora.pt/ simposio/comunicacoes/Mendes/Eddl.html. Acesso: 15 jun 2005.

Black, P. E. Dictionary of Algorithms and Data Structures. NIST (National Institute of Standards and Technology). Disponível em http://www.nist.gov/dads/. Acesso: 15 jun 2005.

Buzin, P. F. W. K. (2001) A epistemologia da Ciência da Computação: Desafio do Ensino dessa Ciência, Revista de Educação, Ciência e Cultura, v. 6, nº 2. Centro Universitário La Salle. Canoas, RS, Brasil.

Campos, E. A. V. e Ascencio, A. F. G. (2003) Fundamentos da Programação de Computadores. Editora Prentice Hall.

Deitel, H. M. e Deitel, P. J. (2003) Java Como Programar. Bookman Companhia ed Informática.

Flávio, D. TED - Tutorial de Estruturas de Dados, desenvolvido durante estágio supervisionado na Universidade do Vale do Itajaí - 2004. Disponível em http://www.tutorialdeestruturadedados.8m.com/. Acesso: 20 jun 2005.

Garcia, I. C., Rezende, P. J. e Calheiros, F. C. (1997) Astral: Um Ambiente para Ensino de Estruturas de Dados através de Animações de Algoritmos. Revista Brasileira de Informática na Educação nº 01, http://www.inf.ufsc.br/sbc-ie/revista/nr1/garcia.htm. Ambiente ASTRAL disponível em: http://www.dcc.unicamp.br/~rezende/ASTRAL/. Acesso: 28 abr 2005.

Giraffa, L., Marczak, S. e Almeida, G. (2003) O Ensino de Algoritmos e Programação mediado por uma Ambiente Web, Congresso Nacional da Sociedade Brasileira de Computação (SBC’2003). Campinas, SP, Brasil.

Júnior, J. C. R. P. e Rapkiewicz, C. E. (2004) O Processo de Ensino e Aprendizagem de Algoritmos e Programação: Uma Visão Crítica da Literatura. II I Workshop de Educação em Computação e Informática do estado de Minas Gerais. Belo Horizonte, MG, Brasil.

Pimentel, E. P., França, V. F. e Omar, N. (2003) A Caminho de um Ambiente de Avaliação e Acompanhamento Contínuo de Aprendizagem em Programação de Computadores. II Workshop de Educação em Computação e Informática do Estado de Minas Gerais. Poços de Caldas, MG, Brasil .

Rodrigues, M. C. Como Ensinar Programação?. Informática – Boletim Informativo Ano I nº 01, ULBRA. Canoas, RS, Brasil.

Santos, R. P. e Costa, H. A. X. (2005) TBC-AED e TBC-AED/WEB: Um Desafio no Ensino de Algoritmos, Estruturas de Dados e Programação, IV Workshop de Educação em Computação e Informática do estado de Minas Gerais. Varginha, MG, Brasil

Soares, T. C. A. P., Cordeiro, E. S., Stefani, I. G. A. e Tirelo, F. (2004) Uma Proposta Metodológica para o Aprendizado de Algoritmos em Grafos Via Animação Não-intrusiva de Algoritmos, II I Workshop de Educação em Computação e Informática do estado de Minas Gerais. Belo Horizonte, MG, Brasil .

Tobar, C. M., Rosa, J. L. G., Coelho, J. M. A. e Pannain, R. (2001) Uma Arquitetura de Ambiente Colaborativo para o Aprendizado de Programação, XII Simpósio Brasileiro de Informática na Educação. Vitória, ES, Brasil.

Wirth, N. (1989) Algoritmos e Estruturas de Dados. LTC Informática-Programação.

Page 141: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

133

O artigo completo a seguir foi publicado na Revista INFOCOMP – Journal of

Computer Science, Volume 5, Número 1, edição de março de 2006.

Análise de Metodologias e Ambientes de Ensino para Algor itmos, Estruturas de Dados e Programação aos

iniciantes em Computação e Informática*

Rodr igo Pereira dos Santos1

Heitor Augustus Xavier Costa2

UFLA – Universidade Federal de Lavras

DCC – Departamento de Ciência da Computação Cx Postal 37 – CEP 37200-000 – Lavras (MG)

[email protected]

[email protected]

Resumo. Este artigo tem o objetivo de apresentar a importância de um bom ensino de fundamentos de algoritmos e programação em cursos de graduação em Computação e Informática. Para isso, serão listados alguns problemas de ensino de tais conteúdos, juntamente com algumas estratégias pesquisadas na literatura para tentar saná-los. Dessa forma, tenta deixar uma contribuição à literatura e aos docentes da área.

Palavras-chaves: Metodologias de Ensino de Computação, Algoritmos e Estruturas de Dados, Programação.

Methodologies Analysis and Environment of Teaching for Algor ithms, Data Structures and Programming to beginners in Computing

Abstract. This paper has the objective to present the importance of a good teaching of algorithms and programming foundations in graduation courses in Computing. For that, some problems of teaching of such contents will be presented, together with some strategies researched in the li terature to try solving them. In that way, it tries to leave a contribution to the literature and the teachers of the field.

Key-words: Computing Teaching Methodologies, Algorithms and Data Structures, Programming.

(Received December 07, 2005 / Accepted January 24, 2006)

* Apoio PBIICT/FAPEMIG

Page 142: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

134

1. Introdução

A crescente quantidade de informação e a tecnologia gerada atualmente tornam necessária a presença de profissionais de caráter persuasivo e inovador, que sejam capazes de unir inteligência e dinamismo na busca por melhores soluções de problemas. Isso encontra sua principal base nas metodologias de ensino aplicadas durante o estágio universitário, principalmente na área de Computação e Informática, que envolve tecnologias em constante desenvolvimento.

Com o intuito de produzir melhores resultados no processo de aprendizagem nessas áreas, faz-se constante a necessidade de atualização das didáticas de ensino de forma geral. O objetivo disso é transformar processos abstratos em concretos, através de produtos de software que possibilit em melhor compreensão dos tópicos abordados e maior interação entre aluno-objeto de trabalho (neste caso, o computador). Isso encontra sua maior barreira nos estágios iniciais dos cursos relacionados, quando do contato com o estudo de algor itmos, raciocínio lógico e programação.

Segundo [6], algoritmo é a descrição de uma seqüência de passos que deve ser seguida para a realização de uma tarefa e ação é um acontecimento que, a partir de um estado inicial, após um período de tempo finito, produz um estado final previsível e bem definido. Assim, um algoritmo é a descrição de um conjunto de comandos que, obedecidos, resultam em uma sucessão finita de ações.

Atualmente, o ensino de algoritmos busca nas Ciências Exatas seu pilar de sustentação, pois disciplinas nessa área despertam o raciocínio matemático-lógico para resolução de problemas. A título de exemplo, conforme [14], alguns autores preconizam a necessidade de domínio de habili dades matemáticas prévias ou ao menos integradas, ou pelo menos desejável, sendo considerado até um bom indicador de sucesso para o processo. Para outros, o próprio nível de conhecimento prévio de lógica matemática é discutido. Mas, isso deve ser mais uma das ferramentas para o estudante e não a sua única fonte, pois a sua formação futura será muito ampla.

O conceito de programação, segundo [26], é a arte ou a técnica de construir e formular algoritmos de uma forma sistemática. Esse conceito induz que o ingresso tem um dom (arte) de programar ou ele pode aprender as técnicas necessárias a aprimorar seu conhecimento. Logo, ao ingressar em um curso superior na área, ele deve ter sua base bem sedimentada, para que fique apto a prosseguir de maneira positi va durante os

seus estudos. Com isso, professores de disciplinas relacionadas à programação e coordenadores de curso sentem a grande responsabili dade de buscar e aperfeiçoar sua maneira de conduzir a estrutura disciplinar e curricular dos graduandos em seus estágios iniciais da universidade.

Com toda esta bagagem a ser assimilada, uma linha de pesquisa, visando melhorias no ensino básico em Computação e Informática, é aquela direcionada para a tendência de utilizar ferramentas computacionais como ambientes de estudo. Segundo [24], a partir de observações dentro de disciplinas de graduação, percebe-se também um melhor resultado no aprendizado por meio de atividades práticas de desenvolvimento de simuladores e ferramentas visuais didáticas de representação de conceitos abstratos. Além disso, acompanhando esse desenvolvimento, a linha acopla contribuições dos pesquisadores para novas estratégias de transmissão de conhecimentos. Isso promove a ampliação do acervo existente, a melhor organização de currículos para o mercado de trabalho e o acesso facilit ado de tais recursos inovadores através de suporte via web.

No entanto, a elaboração de uma ferramenta computacional didática deve tornar o ensino do conteúdo abordado mais prático e abrangente, de forma a despertar o interesse do aluno, o seu espírito de pesquisa e a busca de informações que possam torná-lo um profissional crítico e de opinião sólida. Assim, seu rendimento ao longo do curso aumentaria, melhorando o seu desempenho em disciplinas mais específicas. Além disso, deve despertar a atenção dos alunos, pela inovação e dinamização injetadas às aulas, com sua utilização ([20]).

Este artigo tem por objetivo apresentar a importância de um bom ensino de fundamentos de algoritmos e programação em cursos de graduação em Computação e Informática, listando alguns problemas de ensino de tais conteúdos, juntamente com algumas estratégias pesquisadas na literatura para tentar saná-los. Isso possibilit a maior disseminação do conhecimento e promove a interatividade entre docentes e graduandos da área, enriquecendo a pesquisa com críticas e sugestões. Para alcançar este objetivo, são relatados alguns ambientes existentes de ensino a distância.

O artigo está organizado da seguinte forma: a seção 2 apresenta a importância da programação e dos algoritmos no ensino de Computação; a seção 3 apresenta um breve relato sobre os problemas acerca do ensino de Computação, li stando algumas pesquisas, com soluções e considerações; a seção 4 retrata a importância do uso de ferramentas computacionais no ensino, com suas vantagens; e a seção 5 detalha algumas ferramentas disponíveis

Page 143: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

135

atualmente para o ensino de algoritmos, estruturas de dados e programação. Por fim, na seção 6, são apresentadas conclusões. 2. Programação e Algor itmos: a Base da Computação

Segundo a estrutura curricular constante nas

Diretrizes Curriculares do MEC ([1]), a matéria de Programação faz parte da área de formação básica em Ciência da Computação, juntamente com as matérias Computação e Algoritmos e Arquitetura de Computadores. Seu conteúdo abrange, além do ensino de linguagens de programação propriamente ditas, os conceitos, os princípios e os modelos de programação e o estudo de estruturas de dados e de métodos de classificação e pesquisa de dados. Conforme consta na caracterização da matéria programação, entendida como programação de computadores, ela é uma atividade voltada à solução de problemas. Nesse sentido, ela está relacionada com uma variada gama de outras atividades como especificação, projeto, validação, modelagem e estruturação de programas e dados, utilizando as linguagens de programação como ferramentas.

Ao contrário do que se apregoava há alguns anos, a atividade de programação deixou de ser uma arte para se tornar uma ciência, envolvendo um conjunto de princípios, técnicas e formalismos que visam ao desenvolvimento de produtos de software bem estruturados e confiáveis. Cite-se, dentre estes, os princípios da abstração e do encapsulamento e as técnicas de modularização e de programação estruturada.

Portanto, o estudo de programação não se restringe ao estudo de linguagens de programação. As linguagens de programação constituem-se em uma ferramenta de concretização de produto de software, que representa o resultado da apli cação de uma série de conhecimentos que transformam a especificação da solução de um problema em um programa de computador que efetivamente resolve aquele problema.

No estudo de linguagens de programação, deve ser dada ênfase aos seus aspectos funcionais e estruturais, em detrimento aos detalhes de sintaxe. Conceitos como o significado de associação, avaliação, atribuição, chamada de procedimento, envio de mensagens, passagem de parâmetros, herança, polimorfismo e encapsulamento devem ser enfatizados. O estudo de linguagens de programação deve ser precedido do estudo dos principais paradigmas de programação, notadamente a programação imperativa, a funcional, a baseada em lógica e a orientada a objetos.

O desenvolvimento de algoritmos e o estudo de estruturas de dados devem receber especial atenção na abordagem do tema programação. Igualmente, deve ser dada ênfase ao estudo das técnicas de especificação, projeto e validação de programas. Um excelente campo para o exercício da programação é constituído pelo estudo de pesquisa em tabelas e de técnicas de ordenação (deve-se acrescentar o uso de estruturas de dados para o exercício da programação).

Dessa forma, deve-se entender que ensinar programação não é simplesmente ensinar uma linguagem de programação. Este ensino envolve sobretudo entender problemas e descrever formas de resolução, de maneira imparcial, para que então sejam codificadas em uma linguagem de programação. Ou seja, somente após o aprendizado dos conceitos de algoritmos e fundamentos de lógica, o estudante pode travar contato com uma linguagem de programação concreta para experimentar aqueles conceitos.

Além disso, o estudo de programação deve passar efetivamente pelo estudo de estruturas de dados. Assim, quando se projeta um programa, deve-se pensar nos algoritmos que manipulam os dados e na forma de estruturar estes dados. Desta maneira, as duas coisas se complementam.

De acordo com [1], no ensino de estruturas de dados, deve ser dado destaque à parte conceitual e comportamental das estruturas, antes de pensar em implementação. Por exemplo, no ensino de estruturas lineares, deve-se transmitir ao aluno o conceito desta estrutura, através das operações aplicáveis, como criar, acrescentar, consultar e remover elementos de uma lista encadeada. Em um curso de Ciência da Computação, esta parte pode ser apresentada através de uma especificação algébrica, por exemplo. Em seguida, discutem-se formas de implementações ou representações físicas das li stas (contigüidade, encadeamento, circulares, duplamente encadeada, com/sem descritor, etc). Este tópico é onde normalmente o aluno apresenta maior dificuldade de assimilação do conceito, uma vez que o encadeamento não é um conceito muito freqüente na vida real, dificultando sua compreensão. Dessa forma, é recomendável que as disciplinas de estruturas de dados possuam significativa atividade prática em laboratório.

Com relação aos cursos na área de Computação e Informática, os cursos de li cenciatura visam à formação de educadores para o ensino médio. Os cursos de Ciência da Computação e Engenharia de Computação são voltados para a formação de recursos humanos para o desenvolvimento científico e tecnológico da computação. Embora conhecedores da matéria, não necessariamente devem sair dos cursos com o perfil

Page 144: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

136

de programadores. Os cursos de Sistemas de Informação incluem a formação de programadores entre seus objetivos. Nesse sentido, em um curso de Licenciatura em Computação, o aluno poderá ter uma carga de prática de programação menor do que a exigida nos demais cursos, sem prejuízo da parte conceitual da matéria. Deve haver uma diferenciação entre os casos de cursos de atividade fim e de atividade meio. Para este último, recomenda-se uma ênfase maior no conhecimento de linguagens de programação e atividades práticas.

Assim, a programação é, pois, um dos pontos chaves em um curso de Computação, pois é a atividade que supre o computador com meios para servir ao usuário. Seu uso adequado e o entendimento de conceitos, princípios, teorias e tecnologias podem conduzir ao desenvolvimento de produtos de software de qualidade, objetivo final, tanto quando se tem a computação como uma atividade meio como quando a computação é tida como uma atividade fim.

Com esse intuito, [23] apresenta algumas recomendações genéricas a serem aplicadas no ensino de disciplinas relacionadas a algoritmos e computação: • coerência com os objetivos fundamentais. Por

coerência, entende-se que o professor deve: i) expressar claramente as idéias, os conceitos e as técnicas perante os alunos (se o professor coloca algoritmos confusos na lousa ou em transparências, ele não pode esperar algoritmos claros nas respostas dos alunos); ii) destacar a importância dos resultados teóricos e mostrar rigor formal toda vez que isto se fizer necessário; e iii) procurar valorizar o uso de técnicas na resolução de problemas. Esta última coerência pode ser alcançada em particular usando a técnica de descobrir a solução de um problema junto com os alunos, ao invés de simplesmente apresentar e explicar soluções prontas;

• ênfase no pensamento crítico. Este é papel de toda educação, porém, nesta matéria, um cuidado especial deve ser necessário dada sua natureza teórica com forte componente matemático. Em outras palavras, os alunos que têm pouca maturidade matemática tendem a acreditar em qualquer demonstração que lhes é apresentada. Tal comportamento deve ser desestimulado. É essencial que os alunos duvidem daquilo que lhes é apresentado e é com dúvidas saudáveis e sua resolução que a percepção da importância do resultado teórico poderá ser consolidada. Nesse sentido, considera-se um recurso valioso o conjunto de

exercícios que pedem para os alunos identificarem falhas de argumentação (por exemplo, em uma demonstração errada), erros em algoritmos ou erros em notícias da imprensa;

• a teoria na prática. A experiência com o ensino dessas disciplinas de Computação mostra que os alunos, em geral, não se sentem atraídos por elas, por considerarem-nas muito abstratas. Por esse motivo, crê-se ser importante usar como recurso didático sempre que possível um grande número de exemplos da vida real. A inclusão de projetos de implementação, seja dentro das disciplinas teóricas, seja dentro de uma disciplina específica, também visa a tornar a matéria menos abstrata. De resto, é importante salientar para os alunos o grande impacto que os resultados teóricos têm alcançado na prática.

3. Análise de Metodologias de Ensino de Computação abordando problemas e soluções

Dentro da esfera de discussão dos métodos

educacionais como ferramentas para a formação de profissionais de qualidade para o mercado, o presente trabalho se propõe a dar sua contribuição. Entretanto, ele analisará um tema mais abrangente e complexo: as áreas de Computação e Informática, que apresentam inovações constantes e grande transformação de preceitos existentes. Sabe-se que é complicado promover mudanças na educação básica e, ao se tratar de cursos de graduação baseados na produção de tecnologia, o problema é ainda maior. O que se pode perceber é esses cursos exercerem grande atração sobre os futuros ingressos em uma faculdade, o que se mostra pela concorrência elevada em processos seletivos. No entanto, vencido o obstáculo de entrada, vêm o início da fase universitária e um dos maiores dilemas: o contato com disciplinas básicas que vão preparar o ingresso para atuar em áreas específicas. Esse contato, sobretudo em cursos de Computação, pode gerar tanto afinidade quanto repulsa, o que acontece com freqüência expressiva, conforme [14].

Os problemas apresentados na compreensão de conceitos abstratos de programação, conforme [5], encontra sua raiz ainda durante a formação básica, o que caracteriza uma importante linha de pesquisa na metodologia educacional. Com certeza, sem uma radical mudança cultural de atitude e comportamento, um indivíduo dificilmente será um profissional de Computação adequado, visto que é preciso desenvolver a capacidade de buscar respostas através de novas perguntas que levem à resposta da questão original. A formação do profissional em Computação deve incitar o desenvolvimento de raciocínio crítico, a solução de

Page 145: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

137

problemas, a apli cação de métodos de pesquisa e o desenvolvimento profissional contínuo.

Dessa forma, a falta de compreensão do raciocínio lógico pode ser a principal razão pelo alto índice de reprovação nas disciplinas de Algoritmos e Programação e, em alguns casos, pela desistência de um curso. Em parte, isso é decorrência da dificuldade encontrada pelos professores para acompanharem efetivamente as atividades laboratoriais de programação, dado o grande número de estudantes geralmente sob sua supervisão ([25]). Dentro desse paradigma, pode-se destacar a forma como os alunos estudam para a disciplina, geralmente memorizando, e a falta de pré-requisitos em conteúdos relacionados ([14]).

Em [19], são relatados outros problemas associados a este processo: • a falta de motivação do aluno criada pelo

despreparo, citado anteriormente, e o desânimo quando há, principalmente, na crença de que a disciplina constitui um obstáculo extremamente difícil de ser superado;

• o processo tradicional de avaliação pode deixar o aluno tenso prejudicando o aprendizado ([5]);

• o relacionamento entre professor e aluno pode ser um problema quando o primeiro preocupa-se em mostrar o que sabe desconsiderando um ambiente de aprendizagem descontraído e colaborativo;

• a didática ou a falta de metodologia de ensino dificulta o aprendizado dos novos e diversos conceitos. Inclui-se a grave falta de comunicação entre os professores das várias disciplinas que permitiria identificar conteúdos afins ou superposição de tópicos tornando o trabalho realizado mais integrado auxil iando o processo de ensino e aprendizagem ([12 e 17]).

Em [19], afirma-se que o professor deve ser capaz de fazer o aluno compreender a abstração envolvida com toda a simbologia utili zada. Para isto, deve util izar sua criatividade e tentar resolver cada problema baseando-se em situações do cotidiano. Assim, o aluno começa a ter raciocínio lógico e ordem de pensamento.

Segundo [16], algumas das dificuldades vivenciadas pelo professor no processo são: i) reconhecer as habili dades inatas de seus alunos; ii ) apresentar técnicas para soluções de problemas; iii ) trabalhar a capacidade de abstração do aluno, tanto na busca das possíveis soluções como na escolha da estrutura de dados a ser util izada; e iv) promover a cooperação e a colaboração entre os alunos.

No entanto, para [5], o iniciante do curso superior traz uma bagagem cultural que não apenas não serve para o apropriado desenvolvimento de um estudo acadêmico, mas pode atrapalhar o desenvolvimento desse estudo. Ele vem de uma experiência de estudante de disciplinas desenvolvidas em torno do paradigma de apresentação de respostas e soluções, usualmente da velha e surrada didática diretiva, ao invés de focar no processo de questionamento. Assim, mais uma das vertentes do problema educacional na área de Computação encontra-se na sua formação básica.

Mas, considerando o campo universitário, o nível de maturidade do aluno é importante neste ponto para que o professor possa adequar o processo pedagógico no sentido de acompanhar o amadurecimento do aluno, permitindo aplicar técnicas de ensino e aprendizagem ([14]).

O acompanhamento contínuo de cada aprendiz e o tratamento personalizado a cada estudante, principalmente em turma com um número elevado de alunos, serão possíveis se forem apoiados por sistemas inteligentes, ou seja, auxiliados por computador ([17]). Logo, a idéia de usar produtos de software para o ensino de programação é de grande valia e ainda poderá transformar o ensino de disciplinas avançadas em algo mais primoroso e tecnológico.

A partir de todo esse problemático desafio, mudanças passaram a ser consideradas por graduados, mestres e doutores que trabalham com o ensino de algoritmos e programação. A análise da literatura feita por [14], independente de ser nacional ou internacional, mostrou que há três vertentes na busca de soluções para os problemas apontados: • Ferramentas, que incluem trabalhos que

apresentam ferramentas computacionais visando facilit ar o processo de ensino e aprendizagem;

• Estratégias, que incluem trabalhos que discutem estratégias de ensino e/ou de avaliação de competências;

• Ferramentas e Estratégias, que são os trabalhos que discutem alguma estratégia suportada por ferramentas computacionais.

Juntamente com o uso de uma ferramenta computacional, deve-se tentar ajustar algumas propostas pedagógicas de trabalho disciplinar, cada vez mais foco de pesquisas na área de Computação, principalmente no âmbito internacional ([14]). Alguns trabalhos nacionais relacionados aos problemas de ensino de algoritmos e programação estão li stados a seguir: • em [8], percebendo os problemas e procurando

solucioná-los, ou pelo menos amenizá-los, foi proposto o uso de uma abordagem de

Page 146: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

138

aprendizagem baseada na colaboração. Esta abordagem colaborativa parte do princípio de que o conflito sócio-cogniti vo entre os aprendizes pode melhorar o seu aprendizado. Para suportar o aprendizado colaborativo, foi desenvolvido um avaliador de programas em C, chamado Verificador de Diferenças Significativas entre Programas – VDSP. O VDSP avalia os programas dos alunos, pontuando-os. A pontuação é util izada para montar grupos de alunos que deverão refazer o programa, trocando pontos de vista e considerações. O VDSP foi experimentado com alunos do curso de Sistemas de Informação da PUC Minas Arcos, especificamente, alunos da disciplina Algoritmos e Estruturas de Dados, com resultados positi vos em relação à formação de grupos de trabalho homogêneos e heterogêneos sob mediação do professor em detrimento de um trabalho individual;

• em [18], o aprendizado de algoritmos é considerado desafiador pelos estudantes de cursos tecnológicos. Os principais motivos para este fato são: o alto nível de abstração do conteúdo e a dificuldade dos docentes em detectar e atender as dificuldades de aprendizagem dos alunos. Dessa forma, propuseram um ambiente que auxilia no atendimento às dificuldades de aprendizagem da disciplina de Algoritmos utilizando o paradigma de Assistentes Inteligentes de Ensino. Estes assistentes auxiliam o professor em sua tarefa de monitorar, assistir e analisar os alunos. Os resultados da utilização do ambiente apontam para a viabil ização da tarefa de acompanhamento individualizado dos alunos e uma maior eficiência na identificação e atendimento às dificuldades de aprendizagem;

• em [4], discute-se que grupos de estudo têm surgido como uma alternativa para complementar os conteúdos vistos em sala de aula e desenvolver/aprimorar habilidades. Neste contexto, apresentaram a importância dos grupos de estudo na formação dos futuros profissionais da área de computação. Relataram a experiência com o grupo de estudos de Java da Universidade Luterana do Brasil (ULBRA). Ao contrário do que se possa imaginar, a diferença de nível entre os alunos não constituiu obstáculos para o andamento dos trabalhos. Observou-se uma forte interação entre os componentes do grupo e o prazer em dividir o conhecimento adquirido. Relações se estabeleceram a partir da

experiência de pesquisar, aprender e resolver problemas juntos;

• em [9], foram concluídos, após diversos estudos sobre Ambientes de Aprendizado Colaborativo Suportado por Computador, que eles podem trazer melhorias ao processo de aprendizado e contribuir para torná-lo mais prazeroso e socializador. Então, desenvolveram um produto de software verificador de diferenças significativas entre programas e o utilizaram para a montagem de grupos para o aprendizado colaborativo de programação de computadores. Chegaram à conclusão de que o aprendizado colaborativo é viável e eficaz nesse contexto, mas difícil de implantar sem a presença de um mediador. Logo, estudaram o Learn in Group, um sistema baseado na Web para o suporte ao aprendizado colaborativo de programação. O sistema conta com dois agentes mediadores, um para a constituição de grupos de trabalho colaborativo e o outro para acompanhar e estimular a participação dos membros dos grupos;

• em [15], foi citado que o Grupo de Trabalho de Licenciatura em Computação (GT-3) da Sociedade Brasileira de Computação (SBC) estabeleceu, entre as metas para 2004-2005, desenvolver experiências relativas ao ensino de programação no nível médio. Isso visando melhorar o comportamento dos futuros ingressos em cursos de Computação e Informática, tentando sanar os problemas relacionados ao pensamento algorítmico mais cedo. A partir dessa idéia, pesquisadores da área da Universidade Estadual Norte Fluminense (UENF) idealizaram uma proposta para ser aplicada em uma escola pública de Cardoso Moreira – RJ, através de uma oficina que permitiu identificar os pontos de dificuldade no processo e a necessidade de trabalhar mais a informática de modo interdisciplinar. Apesar da elevada evasão, o resultado obtido na avaliação dos concluintes da oficina permite projetar as expectativas da inclusão do tema algoritmos e programação na matriz curricular. A oficina permitiu comprovar que a idéia do GT-3 é factível, ou seja, que alunos do ensino médio são capazes de desenvolver tal conteúdo sem necessariamente estarem inseridos em um curso técnico, o que pode estimular o professor por aproveitar a nova competência do aluno para promover o aprofundamento de conteúdos de sua disciplina e, conseqüentemente, a interdisciplinaridade;

• em [27], foi discutida a experiência do uso de projetos integrados para promover a

Page 147: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

139

interdisciplinaridade no curso de Ciência da Computação. A integração tanto ocorre entre disciplinas de um mesmo período quanto entre disciplinas de diferentes períodos. Esta última integração foi altamente favorável entre as disciplinas que formam os pacotes de disciplinas optativas, ofertadas a partir do sexto semestre. Cada projeto visou transpor as barreiras da fragmentação do conhecimento (não se trata de uma colagem fragmentada de saberes), o aluno foi posto diante de problemas que exigem a apli cação dos conhecimentos de uma disciplina em outra, para posteriormente utilizá-los na resolução dos problemas. Esse processo visou estabelecer o valor das competências e habili dades em converter o conhecimento específico da área de formação para outras áreas de estudo. Os resultados mais expressivos se refletiram no comportamento dos alunos: criou-se uma cultura do ensino-aprendizado pelo próprio esforço, de que o processo de aprendizado deve ser, em grande parte, construído pelo próprio aluno. Para os docentes, ficou claro que devem estar aptos a aceitarem novos papéis e ficarem atentos ao processo dinâmico que é o ensino da Ciência da Computação. Os projetos iniciaram uma série de discussões sobre a fragmentação das disciplinas envolvidas nos projetos. Foram exibidas inúmeras deficiências de disciplinas dos períodos anteriores ao quarto período. Foi proposto um questionamento dos conteúdos programáticos de diversas disciplinas e suas formas de abordagens. Finalmente, foram relevantes nas discussões sobre as novas propostas para uma total reestruturação curricular do curso de Bacharelado em Ciência da Computação, visando melhorar a metodologia de ensino;

• em [13], afirmou-se que os programas educacionais, conforme a metodologia utilizada pelo professor, podem ser explorados de diferentes formas. Neste sentido, estes ambientes requerem um conjunto de funções para atender os aspectos pedagógicos, identificados pelos professores especiali stas. Como esta tarefa não é de fácil execução, dado o perfil diferenciado da equipe interdisciplinar, fez-se necessário a util ização de uma metodologia para guiar e organizar todo o projeto de desenvolvimento do produto de software. Dessa forma, eles apresentaram um relato de experiência em uma disciplina da graduação da Pontifícia Universidade Católi ca do Rio Grande do Sul (PUCRS) no intuito de formalizar as práticas de Engenharia de Software adotadas para o projeto e

desenvolvimento de produtos de software educacionais, através do projeto PDS-E (Processo para Desenvolvimento de Software Educacional). Isso para que sistemas de informação educacionais fossem desenvolvidos de forma estruturada e pedagógica, contendo o assunto a ser tratado. Os resultados obtidos com a apli cação da disciplina em três semestres consecutivos foram muito promissores. Os alunos, em seus depoimentos colhidos através da avaliação formal e no decorrer da disciplina, afirmaram que desta maneira conseguiram dimensionar melhor o trabalho a ser feito e conversar melhor com os programadores. Os programadores, por sua vez, entendem melhor o que deveriam fazer. Enfim, todos ganharam com a formalização e a padronização das idéias. Neste contexto, tem-se buscado formalizar a metodologia de ensino relatada e o uso dos recursos através da proposta do PDS-E.

Para [11], diversos sistemas para implementação de animações de algoritmos e de estruturas de dados foram produzidos. Vários destes sistemas exploram a potencialidade do uso de visualizações gráficas das operações realizadas nas estruturas de dados como ferramenta de ensino. O uso de movimento em tempo real, cores e sons enriquecem ainda mais o poder de comunicação. De fato, algumas experiências positi vas foram relatadas na literatura, principalmente com o uso de sistemas que utilizam a abordagem ativa, na qual o aprendiz interage com as animações na criação de instâncias para testes. Por outro lado, a ênfase na qualidade da animação gráfica para enriquecer a abordagem ativa da maioria dos sistemas levou-os a um grau de complexidade que impede seu uso para fins de criação de animações pelos próprios aprendizes. Deste modo, sua utilização se limita à interação, ainda que ativa, com as animações pré-implementadas, representando as mais novas tendências de trabalhos para o ensino de Computação e Informática.

Em [11], afirmou-se que, do mesmo modo que a experimentação durante a operação das animações enriquece o aprendizado mais do que a mera observação passiva delas, é de se esperar que, com um sistema onde a própria implementação das animações gráficas é facil itada a ponto de poder ser realizada pelo estudante, a absorção do funcionamento dos algoritmos seja ainda mais intensa.

Apesar desta nova tendência dos produtos de software para educação em Computação, ainda é muito util izada a abordagem ativa descrita anteriormente. Isso porque configura uma forma de controle do aprendizado pelo discente, uma vez que quaisquer informações erroneamente assimiladas na

Page 148: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

140

maioria das vezes causam um impacto negativo na evolução do aluno durante o curso. Dessa forma, o produto de software util iza estratégias passo a passo na simulação de estruturas de dados conhecidas e bem sedimentadas. Assim, o aluno realiza uma série de operações ao utilizar o programa, assimilando conceitos básicos sem correr o risco de implementar seus próprios algoritmos de forma incorreta. 4. A impor tância do uso de ferramentas computacionais no ensino

É importante salientar alguns pontos especiais: • a aula de uma disciplina que relaciona

programação, algoritmos e estruturas de dados deve ser realizada em laboratórios para que os alunos possam entender as abstrações apresentadas. Deve ser composta de uma parte teórica, onde conceitos são transmitidos, e uma parte prática, onde são entendidos comandos e tópicos ministrados. Deve haver questões-desafio, para que os discentes sejam acostumados a usar de agilidade e criatividade na solução de problemas ([14]);

• o uso de um produto de software educacional, que enfatize animação gráfica, é de extrema importância como facilit ador do processo de aprendizagem, visto que a apresentação de conceitos abstratos se torna mais viável e didática, melhorando a qualidade do material das aulas ([24]);

• normalmente, um aluno se interessa por aulas diferenciadas e isso não só prende sua atenção, como também influenciam positi vamente nas avaliações ([5]);

• uma economia de tempo pode ser conseguida e seria direcionada para maiores explicações e resoluções de exercícios, uma vez que o material didático seria virtual, evitando uma explanação cansativa através do quadro-negro ([20]);

• o uso de uma boa ferramenta que seja li vre permite ao aluno ter acesso ao material virtual para estudar em casa. Além disso, ele possuiria um valioso projeto, para consultas futuras, em caso de necessidade – a tendência em abstrair detalhes, com o passar do tempo, sempre leva a dúvidas e estas a novas pesquisas em estruturas básicas ora aprendidas ([11]);

• a existência de um material também via web para estudos e pesquisas estimula maior contribuição tecnológica para a sociedade, integração de diferentes ideais através de contatos pela Internet e maior alcance ao

público. Além disso, a divulgação das propostas de melhorias de processos educacionais visa injetar e obter informações para ampliação da literatura disponível ([21]);

• a transição de educadores seria facil itada, uma vez que existiria uma base pronta para ser apreciada, mantendo a qualidade de ensino e aprendizagem do conteúdo.

Assim, o uso de um sistema de informação educacional, o produto de software educacional, é um subsídio valioso para a formação de alunos, ajudando-os a concluírem seu curso, principalmente se atender a disciplinas que estão no início do curso e são pré-requisitos necessários para as disciplinas mais específicas de períodos avançados. Quando feita uma boa base, rendimento e desempenho aumentam, proporcionando melhores resultados, melhores currículos e melhores profissionais para o mercado ([20]). 5. Ferramentas para o ensino de algor itmos, estruturas de dados e programação

Para o desenvolvimento de qualquer trabalho, faz-se necessário discutir o que realmente há de contribuição ao universo acadêmico. Nesta seção, são citados alguns projetos relacionados. Deve-se ressaltar, contudo, que não houve pretensão de fazer uma análise exaustiva de tais projetos. São eles: • ASTRAL (Animation of Data Structures and

Algorithms) [11]. É um ambiente de programação para produção de animações de algoritmos e de estruturas de dados com propósito instrucional. O ambiente foi desenvolvido no Instituto de Computação da Universidade de Campinas (IC/UNICAMP) em 1995-97 para plataforma Macintosh e recentemente portado para Windows. Utili zando o ambiente, um usuário pode implementar uma variedade de estruturas de dados e algoritmos (que atuam sobre essas estruturas) e, através de chamadas de algumas poucas rotinas específicas do ambiente, é possível visualizar graficamente as estruturas de dados bem como animações que mostram a atuação dos algoritmos sobre elas. Isso se dá através de uma biblioteca de suporte gráfico que é parte do ASTRAL. A abordagem de animação de algoritmos tem duas vantagens imediatas: aprendizado e depuração. Aquele se beneficia da observação dinâmica do funcionamento das estruturas de dados e proporciona um nível de abstração maior, enquanto a depuração é facilit ada pela visualização gráfica que deixa claro para o usuário-programador, no momento da execução, em que parte da implementação da estrutura ou

Page 149: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

141

do algoritmo os erros ocorrem. Ambas vantagens são particularmente interessantes para alunos de disciplinas de estruturas de dados e algoritmos. O uso do ASTRAL em disciplinas de graduação sobre estruturas de dados como componente de programação foi muito bem sucedido durante vários semestres;

• EDDL (Estruturas de Dados Dinâmicas Lineares) [2]. Surgiu de uma discussão sobre estratégias de ensino das estruturas de dados e tipos de dados abstratos utili zados em programação. A estruturação do programa EDDL e a concepção da sua funcionalidade englobam os seguintes componentes: i) uma abordagem introdutória aos conceitos ou especificação dos tipos de estruturas; ii ) as técnicas de implementação; e iii ) a util ização dessas estruturas na resolução de problemas. Pode ser util izado quer como ferramenta introdutória como ferramenta de revisão, exercitação e auto-avaliação. Após o desenvolvimento dos primeiros protótipos ou versões experimentais, o EDDL adquiriu uma configuração global em que uma tela principal dá acesso aos módulos principais do programa, que são os seguintes: conceitos introdutórios, pilhas, filas, listas lineares e exercícios. Em cada uma dessas seções, é analisada em detalhe cada uma das operações mais usuais com estes tipos de estruturas, tais como: criação e destruição da estrutura, inserção e remoção de elementos na estrutura e verificação do estado da estrutura (vazia, cheia). Oferece um conjunto de ferramentas e outros recursos de programação que o revelam ser ao mesmo tempo intuitivo e de fácil manipulação, diversificado, versátil e eficaz para o desenvolvimento de projetos, principalmente quando o aspecto gráfico é uma das componentes importantes a ter em conta;

• TED (Tutorial de Estruturas de Dados) [10]. É um tutorial para dinamizar o ensino na disciplina de estrutura de dados. O tutorial desenvolvido é um produto de software educacional com o objetivo de permitir uma maior interação entre o professor e o aluno, servindo como uma ferramenta de apoio ao aprendizado. O tutorial subdivide-se nas várias estruturas apresentadas durante a disciplina, permitindo ao aluno ter uma visão individualizada dos conteúdos, mas sem perder a visão do todo. Através de conceitos de dinamização de aprendizagem, como a visualização dos acontecimentos simultaneamente com o que é executado, o

aluno cria uma visão de totalidade do sistema. O sistema de tutorial apresenta os algoritmos das estruturas de dados, ao mesmo tempo em que demonstra a sua implementação lógica através de exemplos visuais permitindo ao aluno acompanhar todos os passos que são executados;

• Dictionary of Algorithms and Data Structures [3]. Este site contém uma parte do Software Quality Group do Software Diagnostics and Conformance Testing Division, Information Technology Laboratory. Este é um dicionário de algoritmos, técnicas algorítmicas, estruturas de dados, problemas atípicos e definições relativas. Os algoritmos incluem funções comuns e os problemas incluem alguns como o caixeiro viajante. Alguns tópicos têm li nks para implementações e mais informações. A página de índice relaciona os tópicos por tipo ou em ordem alfabética. Apresenta o funcionamento dos algoritmos como animações sendo executadas ao se definirem os seus parâmetros;

• TBC-AED (Treinamento Baseado em Computador para Algoritmos e Estruturas de Dados) [20 e 22]. É um produto de software educacional que analisa tópicos básicos de programação, englobando um conteúdo teórico sintético e direto, acompanhado de processo gráfico passo a passo, representando um repositório didático com visualização gráfica. Isso facilit a a visualização e o entendimento das informações ora apresentadas e disponibili za o tempo que seria gasto em transcrever expli cações do quadro-negro para o caderno para a resolução de exercícios de apli cação e fixação. Além disso, pode-se alcançar maior interação entre o professor e os seus alunos, no sentido de aumentar o espaço para questionamentos. Possui algumas características, tais como: i) links explicativos, evitando a necessidade de aprendizagem via tutorial; ii) a usabilidade da interface gráfica é razoável, possibilit ando ao professor apresentar conceitos iniciais, conteúdos teóricos e práticos aos poucos, como apresentaria em transparências; iii) conteúdo teórico simples, de forma a familiarizar melhor o aluno com o assunto; iv) processo gráfico passo a passo, com elementos numéricos, o que melhora a visualização e o entendimento; e v) legendas explicativas, que ilustram as etapas do processo de apresentação de algoritmos, facilit ando o aprendizado e englobando aulas teóricas e práticas, ao envolver uma nova forma de transmitir conhecimento. O TBC-AED apresenta os seguintes temas: Busca Binária,

Page 150: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

142

Métodos de Ordenação (Select Sort, Insert Sort, Bubble Sort, Merge Sort e Quick Sort), Estruturas de Alocação Estática e Dinâmica de Memória (Lista, Fila e Pilha) e Árvore Binária de Busca. Ele foi elaborado usando Java e o ambiente de desenvolvimento NetBeans. A partir da apresentação e disponibili zação da ferramenta aos alunos, aqueles que a utilizaram obtiveram êxito na disciplina, perfazendo um total de aprovação superior àqueles que não a utilizaram. Devido a esse fato, para melhorar os resultados, optou-se por dividir a carga horária da disciplina, antes apenas teórica, em aulas expositi vas (teóricas) e de laboratório (uso da ferramenta, incluindo exercícios de programação) para o segundo semestre de 2005. Como conseqüência da evolução, intrínseca a qualquer projeto, o TBC-AED foi disponibil izado via web, através de applets9, gerando o TBC-AED/WEB (Treinamento Baseado em Computador para Algoritmos e Estruturas de Dados via Web) para que possa ter maior acessibili dade, além de possibilit ar a troca de idéias, através da interatividade com usuários diversos ([21]). A idéia de criar o TBC-AED/WEB surgiu para evitar que o estudante precise fazer o download do TBC-AED para estudar, bastando ter uma versão do aplicativo apenas em sua estação de trabalho em casa, para trabalhar offline. Quando estiver em alguma estação conectada à Internet, ele pode executar o programa diretamente no navegador, desde que esta estação possua a JVM (Java Virtual Machine) instalada. Quanto às características relacionadas à funcionalidade e à aparência, o TBC-AED/WEB não difere do TBC-AED. Dessa forma, a partir do acesso web, espera-se gerar uma interatividade maior com outros pesquisadores, difusão da pesquisa, contribuição à comunidade científica da área e feedback em relação ao trabalho reali zado.

6. Conclusões

Sob todo conjunto de informações

apresentadas até o presente momento, pode-se perceber que existe uma gama de recursos que possibilit am o desenvolvimento de ferramentas computacionais para o auxílio da educação superior em Computação, com destaque para a

9 Applets são programas Java que podem ser embutidos em documentos HTML. Quando um navegador carrega uma página da Web que contém um applet, o applet é executado ([7]).

linguagem de programação Java, que conta com a portabilidade e forte suporte para técnicas adequadas de Engenharia de Software ([7]). Isso faz com que as novas tecnologias atinjam mais rapidamente seu público alvo.

Além disso, observou-se que o uso de produtos de software para o ensino de programação e algoritmos é uma idéia inteligente, se for amadurecida e desenvolvida de forma cuidadosa e estruturada. Isso fornece novas experiências para professores e alunos, que se proponham a trabalhar com esse tema. Além disso, eles terão sua qualidade de ensino elevada e poderão ser capazes de avançar mais rapidamente no campo do conhecimento, através da agilidade de processos didáticos e da participação ativa do docente da área.

Conclui-se também que uma boa elaboração de produtos tecnológicos que facilit em a transmissão de conhecimentos em Computação deve ser acompanhada de expressiva pesquisa no campo de novas metodologias de ensino. A principal finalidade disso é, cada vez mais, haver contribuições que incorram no aprimoramento do ensino superior e na formação de profissionais melhor quali ficados para o mercado. Isso reflete principalmente sobre futuros professores, uma vez que, aqueles que têm passado por esse tipo de experiência durante a graduação, terão grande interesse em executar o mesmo processo quando estiverem lecionando.

Dessa forma, compreende-se que a educação precisa ser reavaliada, pois representa a base da atual sociedade mundial e o único instrumento que pode desenvolver o ser humano e torná-lo digno de constituir sua vida e seu ambiente. Isso deve ser acompanhado por uma atitude crítica da comunidade científica formada, que é a maior interessada em manter e prosseguir com avanços que contribuam para a melhoria da qualidade de vida.

7. Referências [1] Azeredo, P. A. Uma proposta de Plano

Pedagógico para a Matéria de Programação. Anais do II Curso: Qualidade de Cursos de Graduação da Área de Computação e Informática (WEI 2000). Editora Universitária Champagnat.

[2] Azul, A. A. e Mendes, A. J. EDDL: Um Programa Didático sobre Estruturas de Dados Dinâmicas Lineares. 3º Simpósio Investigação e Desenvolvimento de Software Educativo – 1998. Évora, Portugal. Disponível em: http://www.minerva.uevora.pt/simposio/comu

Page 151: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

143

nicacoes/Mendes/Eddl.html. Acesso: 15 jun 2005.

[3] Black, P. E. Dictionary of Algorithms and Data Structures. NIST (National Institute of Standards and Technology). Disponível em http://www.nist.gov/dads/. Acesso: 15 jun 2005.

[4] Borges, K. S. e Filho, H. B. R. A Importância dos Grupos de Estudos na Formação Acadêmica. XIII Workshop de Educação em Computação (WEI’2005). São Leopoldo, RS, Brasil.

[5] Buzin, P. F. W. K. A epistemologia da Ciência da Computação: Desafio do Ensino dessa Ciência. Revista de Educação, Ciência e Cultura, v. 6, nº 2. Centro Universitário La Salle. Canoas, RS, Brasil, 2001.

[6] Campos, E. A. V. e Ascencio, A. F. G. Fundamentos da Programação de Computadores. Editora Prentice Hall, 2003.

[7] Deitel, H. M. e Deitel, P. J. Java Como Programar. Bookman Companhia ed Informática, 2003.

[8] Faria, E. S. J. e Coello, J. M. A. Um Estudo Empírico dos Efeitos do Uso de Trabalho Colaborativo no Aprendizado de Programação em Cursos de Graduação em Computação. XIII Workshop de Educação em Computação (WEI’2005). São Leopoldo, RS, Brasil.

[9] Faria, E. S. J., Vilela, J. M. e Coello, J. M. A. Um Sistema de Aprendizado Colaborativo de Programação Baseado em Agentes chamado Learn In Group. XIII Workshop de Educação em Computação (WEI’2005). São Leopoldo, RS, Brasil.

[10] Flávio, D. TED - Tutorial de Estruturas de Dados, desenvolvido durante estágio supervisionado na Universidade do Vale do Itajaí – 2004. Disponível em http://www.tutorialdeestruturadedados.8m.com. Acesso: 20 jun 2005.

[11] Garcia, I. C., Rezende, P. J. e Calheiros, F. C. Astral: Um Ambiente para Ensino de Estruturas de Dados através de Animações de Algoritmos. Revista Brasileira de Informática na Educação (RBIE’1997) nº 01, http://www.inf.ufsc.br/sbc-ie/revista/nr1/garcia.htm. Ambiente ASTRAL disponível em: http://www.dcc.unicamp.br/ ~rezende/ASTRAL/. Acesso: 28 abr 2005.

[12] Giraffa, L., Marczak, S. e Almeida, G. O Ensino de Algoritmos e Programação mediado por uma Ambiente Web. Congresso Nacional da Sociedade Brasileira de

Computação (SBC’2003). Campinas, SP, Brasil.

[13] Giraffa, L., Marczak, S. e Prikladnicki, R. PSD-E: Em Direção a um Processo para Desenvolvimento de Software Educacional . XI Workshop de Informática na Escola (WIE’2005). São Leopoldo, RS, Brasil.

[14] Júnior, J. C. R. P. e Rapkiewicz, C. E. O Processo de Ensino e Aprendizagem de Algoritmos e Programação: Uma Visão Crítica da Literatura. III Workshop de Educação em Computação e Informática do estado de Minas Gerais (WEIMIG’ 2004). Belo Horizonte, MG, Brasil.

[15] Júnior, J. C. R. P., Rapkiewicz, C. E., Delgado, C. e Xexeo, J. A. M. Ensino de Algoritmos e Programação: Uma Experiência no Nível Médio. XIII Workshop de Educação em Computação (WEI’2005). São Leopoldo, RS, Brasil.

[16] Menezes, C. e Nobre, I. Suporte à Cooperação em um Ambiente de Aprendizagem para Programação (SambA). XIII Simpósio Brasileiro de Informática na Educação (SBIE’2002). São Leopoldo, RS, Brasil.

[17] Pimentel, E. P., França, V. F. e Omar, N. A Caminho de um Ambiente de Avaliação e Acompanhamento Contínuo de Aprendizagem em Programação de Computadores. II Workshop de Educação em Computação e Informática do Estado de Minas Gerais (WEIMIG’2003). Poços de Caldas, MG, Brasil.

[18] Raabe, A. L. A. e Sil va, J. M. C. Um Ambiente para Atendimento das Dificuldades de Aprendizagem de Algoritmos. XIII Workshop de Educação em Computação (WEI’2005). São Leopoldo, RS, Brasil.

[19] Rodrigues, M. C. Como Ensinar Programação?. Informática – Boletim Informativo Ano I nº 01, ULBRA. Canoas, RS, Brasil, 2002.

[20] Santos, R. P. e Costa, H. A. X. TBC-AED: Um Software Gráfico para Apresentação de Algoritmos e Estruturas de Dados aos Iniciantes em Computação e Informática. I Congresso de Computação do Sul do Mato Grosso (COMPSULMT’ 2005). Rondonópolis, MT, Brasil.

[21] Santos, R. P. e Costa, H. A. X. TBC-AED e TBC-AED/WEB: Um Desafio no Ensino de Algoritmos, Estruturas de Dados e Programação. IV Workshop de Educação em Computação e Informática do estado de Minas Gerais (WEIMIG’ 2005). Varginha, MG, Brasil.

Page 152: UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE …cos.ufrj.br/~rps/ic/2005_arquivos/relatorio_final.pdf · Desenvolvimento de Ambientes Gráficos para o Ensino de Estruturas de Dados

Universidade Federal de Lavras – Relatório Final ao PBII CT/FAPEMIG

Lavras, maio de 2006

144

[22] Santos, R. P. e Costa, H. A. X. Desenvolvimento de um Software Educacional para o Ensino de Algoritmos, Estruturas de Dados e Programação. CD de Resumos XVIII Cicesal – XII Seminário PIBIC/Cnpq – VIII Seminário PBIICT/Fapemig - I Congresso de Extensão, Lavras, MG, v. 1, p. 113-113, 2005.

[23] Setubal, J. C. Uma proposta de Plano Pedagógico para a Matéria de Computação e Algoritmos. Anais do II Curso: Qualidade de Cursos de Graduação da Área de Computação e Informática (WEI 2000). Editora Universitária Champagnat.

[24] Soares, T. C. A. P., Cordeiro E. S., Stefani Í. G. A., Tirelo, F. Uma Proposta Metodológica para o Aprendizado de Algoritmos em Grafos Via Animação Não-Intrusiva de Algoritmos. III Workshop de Educação em Computação e Informática do Estado de Minas Gerais (WEIMIG’ 2004). Belo Horizonte, MG, Brasil.

[25] Tobar, C. M., Rosa, J. L. G., Coelho, J. M. A. e Pannain, R. Uma Arquitetura de Ambiente Colaborativo para o Aprendizado de Programação. XII Simpósio Brasileiro de Informática na Educação (SBIE’2001). Vitória, ES, Brasil.

[26] Wirth, N. Algoritmos e Estruturas de Dados. LTC Informática-Programação, 1989.

[27] Yamamoto, F. S., Sil va, A. F., Zanutto, J. e Zampirolli, F. A. Interdisciplinaridade no Ensino de Computação. XIII Workshop de Educação em Computação (WEI’2005). São Leopoldo, RS, Brasil.