FD-AED FERRAMENTA DIDÁTICA APLICADA A ESTRUTURA DE DADOS · Nesta seção, serão apresentadas as...

85
FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃO DIEGO DE QUEIROZ CARNEIRO DOURADO FD-AED FERRAMENTA DIDÁTICA APLICADA A ESTRUTURA DE DADOS Fortaleza 2012

Transcript of FD-AED FERRAMENTA DIDÁTICA APLICADA A ESTRUTURA DE DADOS · Nesta seção, serão apresentadas as...

FACULDADE FARIAS BRITO

CIÊNCIA DA COMPUTAÇÃO

DIEGO DE QUEIROZ CARNEIRO DOURADO

FD-AED – FERRAMENTA DIDÁTICA APLICADA A

ESTRUTURA DE DADOS

Fortaleza 2012

DIEGO DE QUEIROZ CARNEIRO DOURADO

FD-AED – FERRAMENTA DIDÁTICA APLICADA A

ESTRUTURA DE DADOS

Monografia apresentada para obtenção dos créditos da disciplina

Trabalho de Conclusão do Curso da Faculdade Farias Brito,

como parte das exigências para graduação no Curso de Ciência

da Computação.

Orientador: MSc. Maikol Magalhães Rodrigues.

Fortaleza 2012

D739f Dourado, Diego de Queiroz Carneiro FD – AED – Ferramenta didática aplicada a estrutura de dados / Diego de Queiroz Carneiro Dourado 84 f. Monografia (Graduação) – Faculdade Farias Brito, Fortaleza, 2012. Orientador: Prof. Ms. Maikol Magalhães Rodrigues

1. Estrutura de dados. 2. Ferramenta. I. Rodrigues, Maikol Magalhães. (orient.) II. Faculdade Farias Brito. Graduação em Ciência da Computação. III. Título.

CDD 005

FD-AED – FERRAMENTA DIDÁTICA APLICADA A

ESTRUTURA DE DADOS

Diego de Queiroz Carneiro

Dourado

NOTA: FINAL (0-10): ______

Data: ____/____/_______

BANCA EXAMINADORA

______________________________

MSc. Maikol Magalhães Rodrigues

(Orientador)

______________________________

MSc

(Examinador)

______________________________

MSc

(Examinador)

5

RESUMO

As Estruturas de Dados são de grande importância no âmbito da Ciência da Computação, por

isso se torna necessário o entendimento básico dos conceitos e aplicações dos algoritmos

durante o curso de Ciência da Computação. Este projeto tem por objetivo a criação de uma

ferramenta aplicada à Estrutura de Dados, com o fim de possibilitar um melhor entendimento

do comportamento das Estruturas de Dados, auxiliando o professor na passagem do

conhecimento e o aluno em seu entendimento. O foco maior está em ter uma aplicação de

fácil entendimento e de simples manipulação, buscando conceitos de ferramentas já

existentes, através de comparativos, para avaliar quais deles se enquadram melhor na

realidade da Faculdade Farias Brito.

6

SUMÁRIO

INTRODUÇÃO ........................................................................................................................ 12

1 BASE TEÓRICA ................................................................................................................. 14

1.1 Estrutura de Dados Básicas ........................................................................................... 14

1.1.1 Pilha ....................................................................................................................... 15

1.1.2 Fila ......................................................................................................................... 16

1.1.3 Lista ....................................................................................................................... 18

1.1.4 Árvore.................................................................................................................... 21

1.2 Ferramentas Didáticas já Existentes ............................................................................. 24

1.2.1 Astral ..................................................................................................................... 24

1.2.2 AGEDUnifor ......................................................................................................... 28

1.2.3 Animação de Árvore-B ......................................................................................... 34

1.2.4 Spyke ..................................................................................................................... 35

1.2.5 TBC-AED.............................................................................................................. 36

1.2.6 Outras Ferramentas ............................................................................................... 42

2. DESENVOLVIMENTO DA APLICAÇÃO ...................................................................... 43

2.1 Documentação ................................................................................................................ 43

2.1.1 Mecanismos Arquiteturais..................................................................................... 43

2.1.2 Modelagem do Sistema ......................................................................................... 46

2.1.3 Arquitetura e Diagrama de Caso de Uso ............................................................... 47

2.2 Apresentação das Telas e Funcionalidades ................................................................... 53

2.2.1 Funcionalidades em Comum ................................................................................. 53

2.2.2 Pilha – Aplicações ................................................................................................. 54

2.2.3 Fila - Abstrata ....................................................................................................... 56

2.2.4 Fila - Aplicações.................................................................................................... 56

2.2.5 Lista - Abstrata ...................................................................................................... 57

7

2.2.6 Lista - Aplicações .................................................................................................. 58

2.2.7 Árvore – Abstrata/Vetor ........................................................................................ 59

2.2.8 Árvore AVL .......................................................................................................... 59

2.2.9 Árvore N-Ária – Sistema de Arquivos .................................................................. 61

2.2.10 Algoritmos Clássicos aplicados a Estrutura de Dados ........................................ 62

3 COMPARATIVO E AVALIAÇÃO DA FERRAMENTA ................................................. 63

3.1 Comparativo .................................................................................................................. 63

3.2 Avaliação da Ferramenta .............................................................................................. 77

3.2.1 Questionário ................................................................................................................. 78

3.2.2 Resultados ................................................................................................................. 79

CONCLUSÃO .......................................................................................................................... 81

REFERÊNCIAS BIBLIOGRÁFICAS ..................................................................................... 83

8

LISTA DE FIGURAS

Figura 1 - Operações básicas da pilha. .................................................................. 16

Figura 2 - Operações básicas da fila. ..................................................................... 17

Figura 3 – Representação de Fila Circular. ........................................................... 18

Figura 4 - Operações básicas da lista..................................................................... 19

Figura 5 – Apresentação de uma lista simplesmente encadeada. .......................... 20

Figura 6 - Apresentação de uma lista duplamente encadeada. .............................. 20

Figura 7 - Apresentação de uma árvore de busca binária. ..................................... 22

Figura 8 – Representação de Árvore AVL. ........................................................... 23

Figura 9 – Representação de Árvore N-Ária. ........................................................ 23

Figura 10 – Representação do módulo ARRAY. .................................................. 25

Figura 11 – Representação do módulo LINKED LIST. ........................................ 25

Figura 12 – Representação do módulo DOUBLY LINKED LIST. ...................... 26

Figura 13 – Representação do módulo BINARY TREE. ...................................... 26

Figura 14 – Representação de construção de árvores no módulo BINARY TREE

que tem como saída um resultado incorreto para as definições do algoritmo. ..... 27

Figura 15 – Representação do módulo AVL TREE. ............................................. 28

Figura 16 – Representação da aplicação da Estrutura de Pilha na Ferramenta. .... 29

Figura 17 – Representação da aplicação da Estrutura de Fila na Ferramenta ....... 30

Figura 18 – Representação da aplicação da Estrutura de Lista na Ferramenta. .... 31

9

Figura 19 – Representação da aplicação da Estrutura de Árvore Busca na

Ferramenta com a aplicação do caminho Pré-Ordem Esquerda como exemplo. .. 32

Figura 20 – Representação da aplicação antes e depois da alteração das

configurações visuais da ferramenta. .................................................................... 33

Figura 21 – Representação da aplicação para Árvore-N-Ária. .............................. 34

Figura 22 – Representação da aplicação para Árvore-B. ...................................... 35

Figura 23 – Tela de representação da Busca Binária. ............................................ 37

Figura 24 – Tela de representação de Árvore Binária de Busca. .......................... 38

Figura 25 – Passo a passo inclusão de um elemento na Pilha parte 1. .................. 40

Figura 26 – Passo a passo inclusão de um elemento na Pilha parte 2. .................. 41

Figura 27 – Diagrama de Deploy. ......................................................................... 45

Figura 28 – Árvore de Navegação. ........................................................................ 46

Figura 29 – Diagrama de classes. .......................................................................... 48

Figura 30 - Tela de apresentação da Estrutura de Dados Pilha. ............................ 54

Figura 31 – Tela de apresentação da Estrutura de Dados Pilha após botão Topo

clicado. .................................................................................................................. 55

Figura 32 – Tela de apresentação da Estrutura de Dados Pilha após botão

Tamanho clicado. .................................................................................................. 55

Figura 33 – Tela de apresentação da Estrutura de Dados Fila Abstrata. ............... 56

Figura 34 – Tela de apresentação da Estrutura de Dados Fila – Aplicações. ........ 56

Figura 35 – Tela de apresentação da Estrutura de Dados Lista Abstrata. ............. 57

Figura 36 – Tela de apresentação da Estrutura de Dados Lista – Aplicações. ...... 58

10

Figura 37 – Tela de apresentação da ED Árvore de Busca Binária. ..................... 59

Figura 38 – Tela de apresentação da Estrutura de Dados Árvore AVL ................ 60

Figura 39 – Tela de apresentação da Estrutura de Dados Árvore AVL balanceada

após a inserção do valor 90. .................................................................................. 60

Figura 40 – Resultado da operação Tamanho do nó 7. ......................................... 61

Figura 41 – Tela de apresentação da Estrutura de Dados Pilha Inverte. ............... 62

Figura 42 – Tela de apresentação da Estrutura de Dados Fila – Fura. .................. 62

11

LISTA DE TABELAS

Tabela 1 – Mecanismos Arquiteturais ................................................................... 43

Tabela 2 – Descrição das Classes .......................................................................... 49

Tabela 3 – Quadro Comparativo Parte 1. .............................................................. 64

Tabela 4 – Quadro Comparativo Parte 2. .............................................................. 69

Tabela 5 – Perguntas x Critérios ............................................................................ 78

Tabela 6 - Resultado da avaliação do software ..................................................... 79

12

INTRODUÇÃO

As ferramentas didáticas na disciplina de Estrutura de Dados vêm trazendo

grandes contribuições ao aprendizado do aluno, por proporcionar uma melhor visão do

funcionamento dos algoritmos aplicados à disciplina e até mesmo por facilitar a memorização

destes, como veremos adiante.

Nas referências seguintes (GARCIA et al, 2008), (SIMÕES et al, 2006),

(LAUREANO, 2003), (MARSHALL et al, 2003), (SANTOS e COSTA, 2005), (NETO,

2007), é possível ver que essa abordagem traz diversas vantagens ao aprendizado dos alunos.

Dentre elas, a possibilidade de ter uma visão mais real do algoritmo, enquanto que, sem a

utilização destas ferramentas, os alunos têm apenas uma visão abstrata do seu funcionamento

(GOMES e MENDES, 1999). Nesta pesquisa, realizamos alguns estudos para demonstrar as

facilidades já alcançadas com a utilização dessa ferramenta em ambientes práticos de

aprendizado.

Um desses estudos foi realizado pelo Georgia Institute of Technology, que teve

como finalidade medir a eficácia da utilização de animações para a demonstração dos

algoritmos (GOMES e MENDES, 1999). Outro estudo foi feito durante a realização de alguns

seminários para apresentação do TBC-AED (ferramenta que será vista mais a frente na sessão

6.2.6). Com o TBC-AED foram realizadas simulações com estudantes das disciplinas de

Estrutura de Dados I e II. Nestas experiências, a ferramenta ficou disponível para os alunos

durante o curso, onde foi comprovado o aumento da motivação e da atenção dos alunos pelas

atividades (SANTOS e COSTA, 2005).

No estudo citado acima, ficou comprovado que os alunos saíram de uma visão

abstrata dos algoritmos, para uma visão mais real, prática e dinâmica. Com isso, foi realizada

a divisão do curso, que antes era apenas teórico, em teórico-prático, o que teve o sucesso da

13

experiência confirmado, por exemplo, no aumento do índice de aprovação dos alunos nas

disciplinas (SANTOS e COSTA, 2005).

Como visto nas referencias anteriores, já foram criados muitos sistemas

utilizando-se da animação para a representação de algoritmos e estruturas de dados, muitos

exploraram bem a questão da visualização na execução das operações sobre as estruturas no

auxílio para o ensino (GOMES e MENDES, 1999). Indo além da animação, a participação

ativa do usuário na execução é também de grande relevância para a compreensão destes. É

importante assim não só a utilização da animação, mas também permitir a interação do

usuário no processo de aprendizado, possibilitando com isso o melhor entendimento do

algoritmo (GARCIA et al, 2008).

O propósito deste trabalho é definir e implementar uma ferramenta Web voltada

para Estrutura de Dados que venha facilitar o trabalho dos professores, como um instrumento

adicional a ser utilizado em sala de aula e para os alunos, uma ferramenta para exercitar os

conhecimentos adquiridos e que possa ser acessada sempre que preciso por se tratar de uma

ferramenta Web.

O trabalho está dividido em três capítulos.

No primeiro capítulo, encontramos definições teóricas sobre as Estruturas de

Dados abordadas na ferramenta e a apresentação de algumas ferramentas existentes, avaliando

os pontos positivos e negativos de cada uma, informações que serviram como base para a

construção da ferramenta FD-AED.

No segundo capítulo, será apresentada a documentação referente a ferramenta,

onde será apresentada a arquitetura usada e à mesma será descrita, apresentando as telas de

navegação junto as suas funcionalidades e alguns exemplos.

O terceiro e último capítulo ficou o comparativo entre as ferramentas existentes e

a aplicação desenvolvida, apresentando os pontos fortes e fracos de cada ferramenta. Será

apresentado por fim os resultados do questionário de avaliação aplicado em sala.

14

1. BASE TEÓRICA

Neste capítulo, serão apresentados os conceitos básicos das estruturas de dados

que foram implementadas na ferramenta proposta e uma breve descrição das ferramentas já

existente, aplicadas com o mesmo fim, citando algumas vantagens e desvantagens.

1.1 Estrutura de Dados Básicas

Nesta seção, serão apresentadas as Estruturas de Dados básicas, de maneira

objetiva e com o auxílio de alguns exemplos e o conceito de Estrutura de Dados.

Inicialmente, para entendermos o que é uma estrutura de dados, definiremos o

que são dados, tipo de dado e tipo abstrato de dado.

Dado: pode ser definido como um elemento em que serão

efetuadas operações, podendo ser ele variável ou constante (SCHILDT, 1997).

Tipo de Dado: pode ser definido como “um conjunto de valores

e um conjunto de operações sobre estes valores” (TENENBAUM et al, 1995).

Tipo Abstrato de Dado: é um tipo de dado em que não há a

preocupação com a sua implementação, sendo sua implementação escondida

para quem a utiliza. Por isso a expressão “abstrato”, por se tratar de um tipo de

dado em que fazemos operações sem que haja a necessidade de saber como

elas ocorrem realmente (TENENBAUM et al, 1995).

Estrutura de dados é, por sua vez, a maneira de organizar e manipular os dados

que são utilizados em diferentes situações, para que haja de fato acesso e controle sobre esses

dados da maneira mais eficiente e segura possível (LAFORE, 2004).

15

Existem diversas estruturas de dados aplicadas a diferentes problemas,

dependendo da necessidade quanto à forma de acesso e de manipulação do dado (LAFORE,

2004). Cada uma dessas estruturas possuem suas vantagens e desvantagens, cabe a quem for

utilizá-las escolher a que melhor se encaixa para a atividade e a necessidade de desempenho

desejada.

A seguir, serão descritas as estruturas de dados implementadas na ferramenta

proposta neste trabalho.

1.1.1 Pilha

A Pilha é caracterizada pela expressão "Last In First Out" (Último a Entrar,

Primeiro a Sair), pois se trata de um conjunto dinâmico onde o elemento que será sempre

retirado na execução da operação de remoção será o último que foi incluído. O último dado

que foi incluído é conhecido como o topo da pilha (CORMEN et al, 2002).

Um exemplo de funcionamento de uma pilha é imaginar uma pilha de pratos que

tenha como topo o último prato colocado na pilha e este é o único que pode ser retirado. Então

se quisermos acessar algum prato (elemento) da pilha, este deverá estar no topo, não estando,

é preciso a execução do método de desempilhar para chegar até o prato de destino.

Os métodos básicos da pilha são Push, o método de empilhar elementos, e Pop, de

desempilhar o elemento do topo, onde são utilizados métodos como Topo, que retorna o

elemento do topo, assim como outros (CORMEN et al, 2002).

16

Figura 1 - Operações básicas da pilha1.

Na Figura 1, tem uma pilha com os elementos 2, 7 e 1, em que 1 é o topo. E em

seguida, é realizada a execução do método Push (8), que passa como parâmetro o valor 8,

deixando a pilha com os seguinte elementos: 2, 7, 1 e 8, onde 8 é o novo topo.

Logo em seguida, é realizada outra execução do método Push (2), dessa vez para

a inclusão do elemento 2, fazendo com que a pilha fique da seguinte maneira: 2, 7, 1, 8 e 2,

onde 2 é o topo, após a execução do método Push (2) é realizado a execução do método Pop()

três vezes, que deixa a pilha com o seguinte aspecto: 2 e 7, onde 7 é o topo.

1.1.2 Fila

A Fila é uma estrutura de dados que tem o conceito diferenciado de pilha, pois,

como dito anteriormente, a pilha é definida como LIFO (Last In First Out – Último a entrar,

Primeiro a Sair). Já a fila é conhecida como FIFO (First In First Out – Primeiro a entrar,

Primeiro a Sair). Assim podemos exemplificar a Fila como uma fileira de pessoas em um

posto de atendimento, em que a primeira pessoa que chegar será a primeira a ser atendida

(CORMEN et al, 2002).

1 Fonte (http://www.brpreiss.com/books/opus7/html/img658.gif ). Acesso em: 12 Ago. 2012.

17

Uma fila possui basicamente dois métodos: 1. para enfileirar o elemento, no caso

o Enqueue; e 2. para desenfileirar o elemento que é o Dequeue, onde a operação de

desenfileirar só pode ser realizada se a fila não estiver vazia. Assim, usando o exemplo

anterior, a chegada de uma pessoa à fila representaria a operação de Enqueue e a operação de

saída da fila seria o Dequeue na fila (CORMEN et al, 2002).

Figura 2 - Operações básicas da fila.

Na Figura 2, é apresentado uma fila com os seguintes elementos 4, 5 e 2, que após

a execução do método Enqueue (7), é realizada a inclusão do elemento 7 no final da fila,

deixando-a assim com 4, 5, 2 e 7.

Logo em seguida, ocorre a execução de um novo Enqueue (9), o qual inclui o

elemento 9 no final da fila e posteriormente é executado o método Dequeue(), que retira o

primeiro elemento da fila. Assim, a fila fica com os seguintes elementos: 5, 2, 7 e 9.

Existe outra aplicação de fila, conhecida como Fila circular, a qual é utilizada com

o objetivo de tornar a fila com menos gastos computacionais. Pois o conceito de circular é

utilizado para evitar o deslocamento dos elementos para a esquerda sempre que houver a

execução de desenfileirar (WIRTH, 1989) como vista na Figura 2, em que após a operação de

dequeue é removido o elemento 4, porque é o primeiro elemento da fila, com isso após a

exclusão ocorre o deslocamento dos elementos da fila para a esquerda, pois o primeiro

elemento da fila sempre deverá estar na posição 0.

Se tivéssemos um vetor com 1000 elementos e ocorresse a exclusão do primeiro

elemento seria necessário o deslocamento de todos para a esquerda, tornando assim como dito

anteriormente o gasto computacional significativo.

18

Figura 3 – Representação de Fila Circular2.

Como visto na Figura 3 é possível observar que primeiro é igual à posição 6 e

fim é igual à posição 1, o que significa que o fim da fila sempre irá apontar para uma posição

vazia e não será necessário o deslocamento citado anteriormente.

1.1.3 Lista

Diferente das estruturas apresentadas até o momento, na Lista é possível realizar a

inclusão de um elemento em qualquer posição da lista. Os elementos são incluídos de forma

sequencial ou aleatória e o acesso a estes elementos difere também das estruturas de dados

apresentadas anteriormente, pois qualquer elemento pode ser acessado aleatoriamente.

Um exemplo de lista é o de uma lista de tarefas, onde se pode incluir ou retirar um

elemento na posição desejada (GOODRICH e TAMASSIA, 2004).

2 Fonte (http://editthis.info/images/takai/2/28/EDI_Aula09.pdf). Acesso em: 05 Ago. 2012.

19

Uma lista possui dois métodos básicos: 1. responsável pela inclusão de um

elemento, que é o Insert, que recebe como parâmetro a posição e o elemento que será

inserido; e 2. Remove, que é responsável pela remoção e recebe como parâmetro a posição do

elemento que será retirado da lista.

Temos também o Search, o método de busca na lista, onde é colocado o elemento

a ser buscado (GOODRICH e TAMASSIA, 2004).

Figura 4 - Operações básicas da lista.

Na figura 3, pode ser visto uma lista com os seguintes dados: 4, 5 e 2. Após a

execução do método Insert (1,7), tem a inclusão do elemento 7 na posição um, deslocando

para direita o elemento que estiver nesta posição. Com isso, a lista ficará da seguinte maneira:

4, 7, 5 e 2.

Novamente é visto a execução de um Insert (4,9), que incluirá o elemento 9 na

posição 4, deixando a lista com os seguintes dados: 4, 7, 5, 2 e 9. Em seguida, ocorre a

execução do método Remove (2) que irá realizar a remoção do elemento na posição 2 da lista,

ficando, após a execução, com os valores: 4, 7, 2 e 9.

Dentre as implementações de listas existem as listas encadeadas que são divididas

em Lista Simplesmente Encadeada e Lista Duplamente Encadeada, as quais foram

implementadas na ferramenta criada e serão definidas.

Uma lista simplesmente encadeada pode ser definida como uma estrutura a qual

seus nós são ligados em apenas um sentido, essa ligação ocorre com o uso de ponteiro, onde o

ponteiro de um nó aponta para o próximo elemento da lista ou para nulo se o no for o último

20

como pode ser visto o nó 2 na figura 5. Vale ressaltar que a busca na lista simplesmente

encadeada ocorre em um único sentido, pois como dito anteriormente a ligação entre os nós

ocorre por ponteiro e em um único sentido (CORMEN et al, 2002).

Figura 5 – Apresentação de uma lista simplesmente encadeada.

Já a lista duplamente encadeada é uma estrutura semelhante a lista simplesmente

encadeada, diferenciando na conexão entre os nós que ocorre com o uso de dois ponteiros,

onde um ponteiro aponta para o elemento seguinte e o outro para o elemento anterior. Assim

como dito anteriormente a busca na lista simplesmente encadeada ocorre em um único

sentido, já na duplamente encadeada a busca pode ocorrer em qualquer sentido, sendo assim o

ponteiro anterior do primeiro nó apontará para nulo e o ponteiro seguinte do ultimo nó

apontará para nulo, como visto na Figura 6 (CORMEN et al, 2002).

Figura 6 - Apresentação de uma lista duplamente encadeada.

21

1.1.4 Árvore

Árvore pode ser definida como sendo uma TAD onde os elementos são

organizados de forma hierárquica. Há um elemento chamado de raiz, que se difere dos outros

elementos por não possuir pai, somente filhos. Diferentemente dos outros elementos (nós),

que sempre possuíram pai e possíveis filhos, no caso de um nó não ser raiz e não conter filhos

ele é nomeado de nó folha. O número de filhos permitido e o que será armazenado em cada nó

são diferentes para os diversos tipos de árvores conhecidas (CORMEN et al, 2002).

Na ferramenta desenvolvida foi abordado três tipos de árvores: árvores de busca

binária, árvore binária AVL e árvores multicaminhos3.

Na aplicação de Árvores Binárias, as implementações utilizadas foram Árvore de

Busca Binária e Árvore AVL, a seguir será apresentado o que é uma árvore binária e então

irão ser apresentados os tipos implementados na aplicação.

Árvore Binária pode ser definida como um conjunto finito de nós, que pode ser

vazio, ou possuir um nó raiz e dois conjuntos separados de nós, a subárvore esquerda e a

subárvore direita, as operações básicas de árvore são de inserção, deleção, busca (CORMEN

et al, 2002).

Das aplicações de árvores binárias foram implementadas na ferramenta as Árvore

de busca binária e Árvore AVL.

A árvore de busca binária segue as regras da árvore binária, difere apenas na

operação de inserção, pois na árvore de busca binária toda subárvore a direita será maior que

o nó raiz e a subárvore a direita será menor (CORMEN et al, 2002). Assim a inserção deve

ocorrer respeitando esse conceito. Um exemplo de árvore de busca binária pode ser visto na

Figura 7.

Na Figura 7 é apresentado uma árvore que tem como raiz o nó 8, os nós folhas são

os nós 1, 4, 7 e 14 e como dito anteriormente os nós a direita de 8 são maiores e a esquerda

menores, o que faz dessa uma árvore de busca binária.

3 Também conhecida como árvore N-Ária.

22

Figura 7 - Apresentação de uma árvore de busca binária.

Outra árvore binária implementada nesse projeto como dito anteriormente foi a

árvore AVL, essa é uma árvore que segue como regra manter um balanceamento, no qual a

altura da subárovre a direita e a esquerda a partir de cada nó só poderá diferir de no máximo

uma unidade, essa unidade é dada como fator de balanceamento (GOODRICH e TAMASSIA,

2002).

O balanceamento ocorre por rotações, sendo definidas por rotação simples

(quando um nó desbalanceado tem seu filho no mesmo sentido da inclinação, formando uma

linha reta) ou dupla (quando um nó desbalanceado tem seu filho inclinado no sentido inverso

ao pai, dando uma forma de joelho). Para que seja respeitado o FB (Fator de Balanceamento),

as execuções dessas rotações só irão balancear a árvore sem afetar a ordenação dela. Podemos

ver um exemplo de Árvore AVL na Figura 8 (GOODRICH e TAMASSIA, 2002).

23

Figura 8 – Representação de Árvore AVL.

Foi implementado na aplicação também a árvore N-ária, que é uma árvore de

multicaminho, isso é pode ser vazia ou possui um nó chamado raiz, o qual um nó raiz ou seus

filhos poderão ter n nós filhos (CORMEN et al, 2002), conforme a Figura 9, que apresenta o

nó de valor 4 com três filhos. Neste projeto a árvore n-ária foi aplicada representando um

sistema de arquivo como será apresentado no capítulo 2.

Figura 9 – Representação de Árvore N-Ária.

24

1.2 Ferramentas Didáticas já Existentes

Nesta sessão, serão apresentadas algumas ferramentas já existentes e que utilizam

animação na representação dos algoritmos de Estruturas de Dados. Serão apresentados

também alguns de seus algoritmos, com o auxílio de telas, procurando mostrar o seu

funcionamento e alguns pontos como a disponibilidade, facilidade de uso, estruturas de dados

implementadas, interação com o usuário e como é o front-end, modo de exibição da aplicação,

que serão vistos na sessão 3.1, além de vantagens e desvantagens da utilização destas telas

para visualização dos algoritmos.

As ferramentas que serão abordadas nesta sessão foram escolhidas, por se

tratarem de ferramentas que possuem alguns aspectos que utilizamos na ferramenta proposta,

aspectos esses como a forma com que é apresentada a animação da estrutura de dado, como

ocorre a interação do usuário, organização das informações na tela (ex: botões, menu).

1.2.1 Astral

Astral é uma ferramenta desenvolvida para a arquitetura Macintosh, utilizando a

plataforma de programação Think Pascal. Logo depois foi desenvolvida para o ambiente

Windows. Essa ferramenta tem como objetivo explorar o entendimento dos algoritmos

aplicados nas disciplinas de estrutura de dados com o auxílio de animações gráficas

(GARCIA et al, 2008).

25

Serão descritos alguns módulos utilizados pelo Astral.

I. Execução do módulo ARRAY (Vetor): É possível criar uma lista ordenada e

não ordenada, existem as operações básicas de fila (inserir, remover e pesquisar) é possível

também criar um array com tamanho máximo de 40. Pode ser visto na Figura 10 um exemplo

de como é apresentado um array de tamanho 10.

Figura 10 – Representação do módulo ARRAY.

II. Execução do módulo LINKED LIST: É possível criar uma lista ordenada ou

não ordenada. Existem as operações de inserir, remover, inserir no final, pesquisar e inverter

a lista, a tela de exibição de uma lista encadeada (linked list) pode ser visto na Figura 11.

Figura 11 – Representação do módulo LINKED LIST.

26

III. Execução do módulo DOUBLY LINKED LIST: É possível criar uma lista

duplamente encadeada do tipo ordenada ou não ordenada e aplicar as operações de inserção,

remoção do elemento escolhido, buscar elemento, inserir no final, inverter a lista, remover

todos da lista. Na Figura 12 é apresentado um exemplo da estrutura lista duplamente

encadeada (doubly linked list).

Figura 12 – Representação do módulo DOUBLY LINKED LIST.

IV. Execução do módulo BINARY TREE: Na execução desse módulo tem,

conforme a Figura 13, as operações básicas para árvore: inclusão, exclusão, busca o elemento

e realiza também as operações de caminho na árvore os quais são o Pós-Ordem, In-Ordem e o

Pré-Ordem. É possível criar uma árvore com a inclusão de valores de 1 a 10, mantendo a

ordem correta, conforme é apresentado na Figura 13.

Figura 13 – Representação do módulo BINARY TREE.

27

Porém, com a inclusão de valores acima de 10, a ordenação fica falha, conforme a

Figura 14(b), mas sendo eficiente com a utilização de letras, conforme a Figura 14(a), existem

as operações de árvore: inserir, remover e pesquisar.

A falha ocorre porque a ferramenta utiliza comparação ASCII, tornando-a assim

muito eficiente com a manipulação de letras. Essa abordagem também é seguida nos demais

módulos existentes, como o AVLTree, Graph, Hash e o Sort, onde são aplicados os

algoritmos do Heap-Sort, Insertion-Sort, Merger Sort, dentre outros.

Figura 14 – Representação de construção de árvores no módulo BINARY TREE que tem como

saída um resultado incorreto para as definições do algoritmo.

28

V. Execução do módulo AVL TREE: Na execução desse módulo, tem conforme a

Figura 15, as operações básicas para árvore são: inclusão, exclusão, busca do elemento.

O balanceamento é identificado através dos caracteres “-” , “/” e “\”, o que

torna a apresentação desta estrutura não muito didática, pois para um usuário novo, essa

abordagem ira confundi-lo até que o mesmo entenda a utilização desses caracteres .

Nas definições de árvore AVL, o caractere “/” é equivalente ao +1, o “\” equivale

ao -1, e o caractere “-” é a representação do zero, isto é, a árvore ou subárvore está

balanceada.

Da mesma forma que no módulo BINARY TREE, o módulo AVL TREE também

realiza as operações de caminho na árvore, que são o Pós-Ordem, In-Ordem e o Pré-Ordem.

Figura 15 – Representação do módulo AVL TREE.

1.2.2 AGEDUnifor

Essa é uma aplicação desenvolvida sobre a linguagem Java. As Estruturas de

dados abordadas nesta aplicação são Pilha, Fila, Deque, Lista, Árvore de Busca e Árvore

AVL.

São possíveis também a realização das operações de percursos como o In-Ordem,

Pré-Ordem, dentre outros, nas Estruturas de Dados de Árvore (NETO, 2007). A aplicação

trabalha apenas com inteiros, ficando assim sem aplicação na utilização de letras ou palavras.

29

Na abordagem da Pilha, temos as operações básicas de Push, Pop e Top. Para

auxiliar na escolha do elemento, existe a opção de gerar um elemento através da opção

Random, aplicada também nas outras estruturas abordadas

Na Figura 16, pode se ver a aplicação sobre Pilha.

Figura 16 – Representação da aplicação da Estrutura de Pilha na Ferramenta.

Na abordagem de Fila, é utilizado as operações de Enqueue (insere na fila),

Dequeue (remove o primeiro elemento da fila) e Front (indica o primeiro elemento da fila). A

Fila é representada pela estrutura de uma lista duplamente encadeada conforme a Figura 17.

30

Figura 17 – Representação da aplicação da Estrutura de Fila na Ferramenta

Na abordagem de Lista, conforme a Figura 18, tem as operações de Add After

(Adiciona o elemento após o índice passado), Add Before (Adiciona antes do índice passado),

Remove (Remove o primeiro elemento da Lista).

31

Figura 18 – Representação da aplicação da Estrutura de Lista na Ferramenta.

Na abordagem de Árvore de Busca, tem as operações Add (Adiciona o elemento

na árvore), Remove (Remove o elemento passado no campo de texto) e Caminhar, em que são

possíveis aplicar os percursos de Pré-Ordem Esquerda, Pré-Ordem Direita, Pós-Ordem

Esquerda, Pós-Ordem Direita, In-Ordem Esquerda, In-Ordem, Euler Esquerda, Euler Direita e

o algoritmo de Largura.

Podem ser vistas na Figura 19, as operações citadas anteriormente e um exemplo

de aplicação do caminho Pré-Ordem Esquerda, aplicado à árvore montada no exemplo.

32

Figura 19 – Representação da aplicação da Estrutura de Árvore Busca na Ferramenta com a

aplicação do caminho Pré-Ordem Esquerda como exemplo.

A ferramenta aborda as estruturas de dados de Deque e Árvore AVL, onde o

módulo Deque difere do módulo Fila apenas nas operações, porque na estrutura de Deque é

possível incluir no começo ou no final e na remoção a temos a mesma opção, tirando assim o

elemento do começo ou do final.

As operações aplicadas são: de AddFirst (Adiciona no começo), AddLast

(Adiciona no Final), RemoveFirst (Remove o primeiro), RemoveLast (Remove o último),

First (Retorna o Primeiro da Fila) e Last (Retorna o último da Fila).

33

É possível escolher a posição em que o elemento será apresentando, tanto como a

cor da letra; a cor da caixa, quando selecionada e não selecionada; a cor da seta; tamanho da

caixa em que o elemento é apresentado, assim como as bordas; o tamanho da letra; o sentido

da representação, dentre outras opções, que podem ser vistos na Figura 20.

Na Figura 20 (a), é apresentado o modelo padrão da ferramenta. Na Figura 20 (b),

tem as tela de configuração e, na Figura 20 (c), tem o resultado após aplicar as configurações

da Figura 20 (b).

Figura 20 – Representação da aplicação antes e depois da alteração das configurações visuais

da ferramenta.

A ferramenta em alguns momentos foge da questão didática, como por exemplo,

na representação de pilha que ocorre de forma direta, em que é realizado o acesso da pilha

através de Lista Simplesmente Encadeada, ao invés da representação na forma de vetor. A

mesma observação aplica-se na representação de Fila, que ocorre com a utilização de Lista

Duplamente Encadeada.

34

No entanto, há um fator interessante na aplicação que é a apresentação do Código

Fonte ao lado, o que facilita o aprendizado.

1.2.3 Animação de Árvore-B

Na ferramenta Animações de Árvore-B, tem as opções de representação de

Árvore-B ou Árvore-N-Ária, dependendo de como ocorre à inserção, conforme as Figuras 21

e 22.

Nas Árvores N-Ária, como citado na sessão 6.2, tem a quantidade de elementos

suportada por um nó. No caso dessa ferramenta, é possível definir esse valor como será

apresentado mais na frente.

Esta aplicação permite as operações de inserir, remover, alterar o valor de M (o

valor de M é a quantidade de elementos que pode conter em nó, como citado anteriormente

para Árvores-N-Ária) e inserir N objetos (insere a quantidade de elementos de acordo com o

valor passado no campo texto), conforme as Figuras 21 e 22.

Figura 21 – Representação da aplicação para Árvore-N-Ária.

35

Esta aplicação não tem a opção de remover todos os nós, o que a torna não muito

interessante neste sentido. A única forma de realizar tal operação é utilizando a opção de

alterar o valor de M, assim foi possível excluir todos os elementos.

Figura 22 – Representação da aplicação para Árvore-B.

1.2.4 Spyke

O Spyke é uma ferramenta baseada nas linguagens C++, Pascal e Java, onde são

abordadas as estruturas de dados de Pilha e Fila que podem ser vistas na forma de Pilha

dinâmica ou estática e Fila visualizada de maneira dinâmica ou estática.

A aplicação busca além do resultado visual na execução das operações sobre os

TADs (Tipos abstratos de dados), também trazer o comparativo na execução entre as

linguagens utilizadas.

O Spyke é dividido em quatro telas, que apresentam a aplicação das

possibilidades de executar Pilha estática ou dinâmica e Fila estática ou dinâmica.

Além de poder escolher essas opções, é possível também escolher a linguagem em

que será demonstrado o resultado do TAD. Na tela de representação do TAD, é possível ver a

implementação das operações (SIMÕES et al, 2006).

Junto com a estrutura de dados escolhida é demonstrado também os algoritmos

das operações possíveis nas estruturas, o qual aparece a implementação de acordo com a

36

linguagem escolhida, o que torna a ferramenta mais abrangente, exatamente por abordar

linguagens diferentes.

São apresentados diversos quadros, que se referem às funções primitivas da pilha,

como por exemplo: topo, insere, remove dentre outros, e ficando ao lado direito a

representação gráfica (SIMÕES et al, 2006).

1.2.5 TBC-AED

O TBC-AED é uma ferramenta desenvolvida em JAVA, essa aplicação aborda 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.

O TBC-AED é uma ferramenta desktop bastante explicativa, que apresenta a tela

de introdução, ao selecionar uma das opções no menu da aplicação. Além dessa introdução, a

estrutura selecionada contém diversos pontos positivos quanto à apresentação das estruturas

de dados como por exemplo o uso de legendas, a demonstração do algoritmo e o fato de o

TBC-AED ser autoexplicativo (o que é um dos pontos mais fortes da ferramenta). Ao passar o

mouse em partes da tela, será possível ter uma breve descrição da parte selecionada

(SANTOS e COSTA, 2005).

Na Figura 23, tem um exemplo da ferramenta na execução de Busca Binária, que

se divide em quatro partes. Na parte superior, tem uma introdução com relação a opção

selecionada, a Busca Binária. Abaixo, do lado esquerdo, tem a demonstração do algoritmo em

Portugol, assim do lado direito tem a representação gráfica do algoritmo e, por fim, na parte

inferior existem a legenda e os botões (SANTOS e COSTA, 2005).

37

Figura 23 – Tela de representação da Busca Binária.

A única tela em que ocorre uma pequena mudança nos padrões aplicados para as

outras opções é a tela para a Árvore Binária de Busca, pois, para representação dessa

estrutura, foi necessário aumentar a área da animação e diminuir a área de demonstração do

algoritmo em Portugol.

Na Figura 24, pode ser observado que foi incluída uma janela de mensagem que

se refere ao passo-a-passo da aplicação e, por fim, foi deixado um espaço na parte inferior,

acima dos botões, para demonstração do resultado da execução dos métodos de caminho pré-

ordem, in-ordem ou pós-ordem na árvore gerada (SANTOS e COSTA, 2005).

38

Figura 24 – Tela de representação de Árvore Binária de Busca.

Também foi realizada a implementação do TBC-AED para Web, para com isso

trazer uma maior Disponibilidade e ajudar na distribuição do conhecimento, contribuindo com

a melhoria do ensino das Estruturas de Dados (SANTOS e COSTA, 2005).

Uma falha nessa aplicação é a forma como é realizada a abordagem quanto as

informações explicativas da ferramenta, pois sempre é necessário clicar no botão informações

para se ter acesso aos outros botões, sendo assim repetida informações de forma

desnecessária para um usuário já conhecedor da ferramenta, ficando somente habilitados os

botões de “informações” e “conceito”.

Como citado anteriormente, cada vez que o usuário executar a aplicação, será

necessário clicar no botão “informações”, depois clicar em “introdução”, depois em “iniciar”,

para só em fim poder executar as operações, clicando no botão “passos do processo”, que

apresenta as opções de operação a ser executada na Pilha e só depois inserir o valor que será

incluído.

39

Com isso, para cada operação na Pilha, será necessário clicar no botão “passos do

processo”, escolher a operação e só depois incluir o valor ou executar um Pop. E assim será

toda vez que quiser fazer alguma operação na Pilha.

O TBC-AED/Web é uma ferramenta bem explicativa, porém prende o usuário

com a forma de abordagem de só poder ir para um próximo passo se tiver executado um passo

anterior, o que na maioria das vezes não é necessário.

Isso ocorre, por exemplo, quando, sempre que a aplicação for executada, faz-se

necessário que o usuário veja a introdução novamente, dentre outras informações, também

repetitivas e desnecessárias.

A abordagem de Pilha no TBC-AED/Web traz, como na aplicação desktop, o

seguinte padrão na tela: no topo, a introdução referente a estrutura escolhida; logo abaixo, no

lado esquerdo, o algoritmo em portugol, à direita, a demonstração gráfica da estrutura de Pilha

e, abaixo, os botões. A seguir, será apresentado como ocorre a inclusão de um elemento na

pilha, vistos nas Figuras 25 e 26.

40

Figura 25 – Passo a passo inclusão de um elemento na Pilha parte 1.

41

Figura 26 – Passo a passo inclusão de um elemento na Pilha parte 2.

42

Na Figura 25 e 26, como descrito anteriormente, para uma simples operação de

inclusão, são necessários vários passos, o que acaba por tornar cansativo o uso da ferramenta.

Na Figura 25(a), ao clicar no botão “passos do processo”, é exibida a caixa de

dialogo, informando as opções de operações sobre a Pilha. Após a escolha, é apresentado na

caixa da Figura 25(b), o elemento 3 e, em seguida, na Figura 26(c), uma janela de

confirmação, abaixo da legenda, onde é necessário realizar três cliques, pois mostra passo a

passo a inclusão do valor 3, o que resulta na Figura 26(d).

1.2.6 Outras Ferramentas

Nos itens anteriores foi realizada a abordagem de algumas ferramentas. Nesta

seção, serão citadas outras, mas sem muitos detalhes. Algumas dessas ferramentas que serão

citadas também foram testadas, mas ou não se encaixaram no modelo que foi utilizado na

ferramenta implementada e descrita na sessão 2.2 implementada ou se encaixavam, mas não

iriam agregar nenhum novo conceito. Com isso, não foi feito um maior detalhamento delas.

Temos a ADTTool, JSave, JVALL, Linked List Teaching System, JDSL

Visualizer, Opsis, Binary Search Tree Visualization, ISVL, EVENGA, VisualGraph, PILOT,

JAWAA, LINK, dentre outras (SOUZA, 2004).

Será apresentado no Capítulo 3 um quadro comparativo entre as ferramentas

citadas e apresentadas com a ferramenta criada, buscando trazer uma visão geral das

aplicações existentes e a criada.

43

2. DESENVOLVIMENTO DA APLICAÇÃO

Neste capítulo, será abordada a documentação que trará como se deu a montagem

da arquitetura da aplicação e tem por objetivo apresentar a ferramenta funcionalmente e, para

tanto, será mostrado o software implementado, juntamente com os algoritmos e estruturas de

dados desenvolvidas.

2.1 Documentação

Procurando criar uma ferramenta com fácil usabilidade e entendimento para a

utilização em sala de aula e também acesso dos alunos através da Web, a qual foi

desenvolvida utilizando a arquitetura em camadas será apresentada nas seções 2.1.1, 2.1.2 e

2.1.3 uma visão da arquitetura da aplicação, trazendo assim uma visão geral do seu

desenvolvimento.

2.1.1 Mecanismos Arquiteturais

Na tabela a seguir, serão apresentados os mecanismos utilizados no

desenvolvimento da aplicação, junto com a apresentação da interação entre eles.

Tabela 1 – Mecanismos Arquiteturais

Mecanismo de

Análise

Mecanismo de Design Mecanismo de

Implementação

Front-End Interface de comunicação com o usuário ASP.NET, Silverlight 4 e

JavaScript

44

Mecanismo de

Análise

Mecanismo de Design Mecanismo de

Implementação

Back-End Lógica da Aplicação (Camada de Negócio) C# .Net

Build IDE de desenvolvimento e depuração Visual Studio 2010 com a

.Net Framework 4

Deploy Disponibilizar a ferramenta para teste. Visual Studio 2010, IIS 7

e No-ip.

Conforme a Tabela 1, observa-se que a aplicação foi desenvolvida com a

utilização do Visual Studio 2010 (rodando a .Net Framework 4), sendo aplicado para o

desenvolvimento da interface o Silverlight 4 e o ASP.NET. Com isso para a lógica da

ferramenta, foi utilizada a linguagem de programação C#.

Foi aplicado na disponibilização da ferramenta o Visual Studio, responsável por

gerar os arquivos a serem disponibilizados no IIS (Internet Information Service), responsável

pela publicação local. Para a publicação na rede, foi empregado o No-IP4.

Na Figura 27, será apresentado como ocorre a interação entre os mecanismos

citados anteriormente.

4 Em: http://www.no-ip.com/ - Acesso em: 12 de nov. de 2012.

45

Figura 27 – Diagrama de Deploy.

Conforme a Figura 27, pode ser observado que a IDE utilizada foi o Visual

Studio, nele foi utilizada para construção da interface a tecnologia ASP.NET com Silverlight,

onde ocorre a interação entre essas duas tecnologias através do arquivo XAP, que é criado por

padrão na pasta ClienteBin da aplicação Web gerada.

Assim, tem a aplicação Web utilizando ASP.NET e, nela, o arquivo XAP, que

referencia a aplicação Silverlight. Temos assim, como linguagem de programação, o C# .Net,

que é o Code Behind de ambas tecnologias.

É visto que a interação do Visual Studio com o IIS (Internet Information Service)

ocorre através dos arquivos gerados no momento da publicação da aplicação pelo Visual

46

Studio, assim, com esses arquivos referenciados pelo IIS, foi utilizado o No-IP para

disponibilizar a ferramenta na Web.

2.1.2 Modelagem do Sistema

Será apresentado a seguir como se encontra a modelagem da ferramenta

desenvolvida, procurando trazer uma visão geral da sua estrutura.

Figura 28 – Árvore de Navegação.

Na Figura 28, é apresentada a árvore de navegação da ferramenta distribuída por

TAD. Assim, temos Pilha, Fila, Lista e Árvore.

A estrutura de Pilha está dividida em TAD Pilha e Pilha/Aplicação, onde TAD

Pilha pode ser visualizada como uma Pilha Abstrata, uma Pilha usando Vetor e uma Pilha

usando Lista Simplesmente Encadeada. E na opção de Pilha/Aplicação, é visto na forma de

animação como ocorre uma inversão dos valores da Pilha.

47

Já a estrutura de Fila está dividida em TAD Fila, Fila/Aplicações e Fila/Fura.

Assim, em TAD Fila é apresentada uma Fila de maneira abstrata na forma de uma fila de

pessoas. Em Fila/Aplicações, a Fila pode ser visualizada utilizando Fila Circular, Vetor e

Lista Simplesmente Encadeada. Acessando Fila/Fura, pode ser vista a aplicação de Fila

utilizando a opção de furar a fila, o que ocorre com a passagem da posição e o elemento a ser

inserido nela.

Na aplicação de Lista, tem o TAD Lista e Lista/Aplicações, seguindo uma

estrutura similar às anteriores. No TAD Lista, é possível ter a visão abstrata da estrutura,

sendo apresentada como um caderno conforme a Figura 35, no qual podemos escrever

seguindo as regras de lista. Em Lista/Aplicações, vemos a aplicação de Lista utilizando Vetor,

Lista Simplesmente Encadeada e Lista Duplamente Encadeada.

Por fim, em Árvore tem Árvore de Busca Binária, Árvore AVL e Árvore N-

Ária/Aplicação. Tendo assim, em Árvore de Busca Binária e Árvore AVL, a visão abstrata na

aplicação de árvore. Já a Árvore N-Ária é representada como sendo um sistema de arquivos

conforme Figura 40.

2.1.3 Arquitetura e Diagrama de Caso de Uso

A ferramenta foi desenvolvida utilizando a arquitetura em duas camadas, onde

temos a Camada de Apresentação e a Camada de Negócio. Assim, a Camada de Apresentação

contém a interface da aplicação desenvolvida; e a Camada de Negócio, a lógica da ferramenta

e suas operações. Como a ferramenta não tem acesso a banco de dados, não foi implementada

a camada de persistência.

Na Figura 29, é apresentado o Diagrama de Classe da aplicação. Assim, tem na

linha superior as classes responsáveis pela interface. Na linha do meio, temos as classes

responsáveis pela apresentação da Estrutura de Dados, por exemplo, no caso de Pilha temos

pilha usando Vetor e LSE. Já na ultima linha, temos os objetos utilizados na criação da LSE e

da LDE. São os elementos de início, intermediários e o último. Sendo no canto direito tem a

classe Fila_Padrao que refere-se a uma interface que usa para montagem da fila a classes

ligadas a ele conforme Figura 29. Será melhor descrito cada classe e seus relacionamentos na

Tabela 2.

48

Figura 29 – Diagrama de classes.

49

Na Tabela 2, será apresentada a descrição junto com a interação das classes

apresentadas anteriormente, de forma a trazer uma melhor visão da função de cada classe.

Tabela 2 – Descrição das Classes

Classe Descrição

Pilha_PadrãoG Apresentação de Pilha Abstrata, Vetor

(Es_vetor) e LSE (Es_LSE).

Pilha_Invert Representação da inversão de Pilha na forma

de uma animação.

Fila_Padrao Traz a forma abstrata de Fila, porém utiliza

as classes Fila_Ini, Fila_El e Fila_End para a

sua visualização.

Fila Apresenta Fila na forma de Fila Circular,

Vetor (Es_Vetor) e LSE (ES_LSE).

Fila_Fura Demonstração da operação de Fura Fila,

utilizando LSE (Es_LSE).

Lista_Padrão Aplicação de Lista na forma de um caderno.

Lista Apresentação de Lista na forma de Vetor

(Es_vetor), LSE (Es_LSE) e LDE (Es_LDE).

50

Classe Descrição

Arvore_BuscaBinaria

Representação de Árvore de Busca Binária

na forma Abstrata e Vetor (ES_Vetor).Utiliza

a classe Arvore_Bin.

Arvore_AVL Apresenta Árvore AVL na forma abstrata.

Utiliza a classe Arvore_AVL.

Arvore_NAria Traz Árvore N-Ária na representação de um

sistema de arquivo.

Es_Vetor Classe responsável pela lógica do vetor.

Es_LSE Classe responsável pela lógica e construção

de uma LSE, utiliza para construção da LSE

as classes RectLSE_Ini, RectLSE,

RectLSE_End.

Es_LDE Classe responsável pela lógica e construção

de uma LDE, utiliza para construção da LDE

as classes Rect_LDE_Ini, Rect_LDE,

Rect_LDE_End.

Arvore_Bin Classe com manipulações para Árvore

Binária. Utiliza a classe Node_Arvore.

Arvore_AVL_cls Classe com manipulação para Árvore AVL.

Utiliza a classe Node_Arvore.

51

Classe Descrição

Node_Arvore Classe de criação e manipulação do node da

árvore.

Fila_Ini Responsável pela apresentação gráfica do

primeiro elemento da fila abstrata.

Fila_El Responsável pela apresentação gráfica do

elemento da fila abstrata.

Fila_End Responsável pela apresentação gráfica do

último elemento da fila abstrata.

RectLSE_Ini Responsável pela apresentação gráfica do

primeiro elemento da LSE.

RectLSE Responsável pela apresentação gráfica do de

um elemento da LSE.

RectLSE_End Responsável pela apresentação gráfica do

último elemento da LSE.

Rect_LDE_Ini Responsável pela apresentação gráfica do

primeiro elemento da LDE.

Rect_LDE Responsável pela apresentação gráfica de um

elemento da LDE.

52

Classe Descrição

Rect_LDE_End Responsável pela apresentação gráfica do

último elemento da LDE.

Pode ser visto no Diagrama de Classe e na Tabela de Descrição das Classes que

existem dez classes responsáveis pela manipulação das páginas de apresentação das Estruturas

de Dados. As páginas são Pilha_Padrao, Pilha_Invert, Fila_Padrao, Fila, Fila_Fura,

Lista_Padrao, Lista, Arvore_BuscaBinaria, Arvore_AVL e Arvore_N-Aria, onde a classe

Pilha_Padrao utiliza a visualização de Pilha Abstrata junto com a representação de Pilha com

Vetor atráves da instância da classe Es_Vetor, e Pilha com LSE através da instância da classe

Es_LSE. Na classe Pilha_Invert, ocorre a apresentação da inversão de Pilha Abstrata na forma

de animação.

Já na classe Fila_Padrao, que apresenta a fila de forma abstrata, é possível

observar que se tem a instância de três classes: a Fila_Ini, Fila_El e Fila_End, que são

responsáveis pela apresentação dos elementos na fila, na forma de pessoas em uma fila. Na

classe Fila, temos a representação de Fila na forma de Fila Circular, Fila usando Vetor através

da classe Es_Vetor e Fila com LSE através da classe Es_LSE. Temos ainda em Fila a classe

Fila_Fura, que é responsável pela apresentação da operação de furar a fila, utilizando para

isso LSE com a instância do Es_LSE.

Existem duas classes que nos trazem a aplicação de Lista. De forma abstrata, no

caso a classe Lista_Padrao; na forma de Vetor, com a Es_Vetor, na forma de LSE, com a

Es_LSE e utilizando LDE, com a instância da classe Es_LDE.

Por fim, tem a representação de Árvore que nos traz três aplicações, são elas a

Árvore de Busca Binária com a classe Arvore_BuscaBinaria que utiliza a instância da classe

ArvoreBin para controle das operações da árvore e temos a mesma representada na forma de

Vetor com a Es_Vetor. Por seguinte, se tem a Árvore AVL que utiliza a classe Arvore_AVL

na qual temos a instância da Arvore_AVL_cls, responsável pelas operações da árvore AVL.

53

Ambas utilizam a classe Node_Arvore, que é onde ocorrem as operações básicas e

armazenamento dos nodes da árvore. Já a representação de Árvore N-Ária ocorre com o uso

da classe Arvore_N-Aria.

2.2 Apresentação das Telas e Funcionalidades

Veremos nessa seção as telas apresentadas para as Estrutura de Dados abordadas

na ferramenta proposta neste trabalho, tentando trazer um entendimento geral da usabilidade

da ferramenta com o auxilio de exemplos.

2.2.1 Funcionalidades em Comum

Temos algumas funcionalidades em comum nas telas, por exemplo é possível

fazer a apresentação isolada de cada uma das implementações, pois temos a opção de ocultar

cada quadro, clicando na opção Show/Hide que está localizado na parte superior a esquerda do

quadro, vide figura 30.

Outra função em comum é o quadro apresentado à direita da tela contendo o

código referente a estrutura que é aplicado em sala, trazendo como ideal a possibilidade do

aluno fazer a análise visual da estrutura de dados e possibilitar, apenas copiando e colando no

compilador, fazer a execução do código e ver como se comporta a estrutura.

54

2.2.2 Pilha – Aplicações

Figura 30 - Tela de apresentação da Estrutura de Dados Pilha.

Na Figura 30, é apresentada a tela referente à Pilha, a qual possui três abordagens

de Pilha, sendo elas, Pilha Abstrata no quadro superior à esquerda, Pilha com Vetor no quadro

superior à direita e Pilha com Lista Simplesmente Encadeada no quadro inferior.

As operações possíveis para Pilha são Empilhar, Desempilhar, Topo (deixa em

vermelho o topo, vide Figura 31, Tamanho, onde se tem uma caixa de mensagem para cada

implementação de Pilha, menos para a Pilha com LSE ,que tem o tamanho já disponível, por

exemplo, se clicar em tamanho, surgirá duas caixas de mensagem informando o tamanho,

conforme Figura 32, porém se tivemos com alguns dos quadros ocultos a mensagem referente

ao quadro também não será visualizada. Isso se aplica as demais telas.

55

Figura 31 – Tela de apresentação da Estrutura de Dados Pilha após botão Topo clicado.

Figura 32 – Tela de apresentação da Estrutura de Dados Pilha após botão Tamanho clicado.

56

2.2.3 Fila - Abstrata

Figura 33 – Tela de apresentação da Estrutura de Dados Fila Abstrata.

Na Figura 33, é apresentada a implementação de Fila Abstrata, onde é passada na

forma de uma fila de pessoas. As operações possíveis para essa implementação são Enfileirar,

Desenfileirar, Primeiro e Último.

2.2.4 Fila - Aplicações

Figura 34 – Tela de apresentação da Estrutura de Dados Fila – Aplicações.

57

Na Figura 34, se tem a implementação de Fila Circular, Fila com Vetor e Fila

usando Lista Simplesmente Encadeada. Existem as mesmas operações aplicada à Fila

Abstrata, porém se diferencia apenas na opção de tamanho, que se assemelha a de Pilha, onde

o tamanho só aparecerá para Fila Circular e Fila com Vetor, pois a Fila com LSE já é

apresentado essa informação dinamicamente.

A inserção, conforme as outras aplicações da ferramenta, é realizada em todas as

estruturas implementadas, alterando assim dinamicamente as estruturas apresentadas. Ao

clicar em inserir, é feita a inserção na cauda da Fila Circular que é preenchida no sentido

horário. No caso da LSE, a inserção é feita no Fim e da mesma forma no vetor, porém na LSE

é indicado a cabeça e a cauda como Inicio e Fim, já no vetor é apresentado como legenda

dentro do quadro que contém a implementação de Vetor.

2.2.5 Lista - Abstrata

Figura 35 – Tela de apresentação da Estrutura de Dados Lista Abstrata.

58

Para a apresentação de Lista Abstrata, é utilizada na forma de um caderno,

conforme a Figura 35, onde ao inserir um dado é apresentada uma visão bem simples de como

se comporta uma lista, que contém as operações de Inserir_Pos (inserir na posição escolhida),

Remove_Pos, Inserir_Primeiro, Inserir_Utlimo, Remover_Primeiro, Remover_Ultimo e

Elemento_Pos (retorna na caixa de mensagem o elemento da posição infirmada).

2.2.6 Lista - Aplicações

Figura 36 – Tela de apresentação da Estrutura de Dados Lista – Aplicações.

Na apresentação de Lista vista na Figura 36, possui Lista com Lista Simplesmente

Encadeada, Lista com Lista Duplamente Encadeada e Lista com Vetor, no que difere da

visualização anterior quanto às operações e à opção de tamanho, que é mostrada para no caso

de Lista com Vetor.

59

2.2.7 Árvore – Abstrata/Vetor

Figura 37 – Tela de apresentação da ED Árvore de Busca Binária.

Na exibição de Árvore de Busca Binária, tem, conforme a Figura 37, a visão da

árvore abstrata e utilizando Vetor no quadro abaixo da árvore abstrata. Temos a operações de

Inserir, Remover, Buscar (colore o valor buscado), Tamanho (apresentado na forma de uma

caixa de mensagem) e Caminhar, no qual temos os caminhos Pré-Ordem Esquerda, Pré-

Ordem Direita, Pós-Ordem Esquerda, Pós-Ordem Direita, Em-Ordem Esquerda, Em-Ordem

Direita, Euler Direita, Euler Esquerda e Largura. O retorno da opção Caminhar é uma caixa

de mensagem com o resultado do percurso.

2.2.8 Árvore AVL

Pode ser visto na Figura 38 a apresentação de Árvore AVL, onde tem as mesmas

operações existentes em Árvore de Busca Binária e opções de percurso.

Na implementação de Árvore AVL, temos as operações de Inserir, Remover,

Buscar (colore o valor buscado) e Tamanho (é definido como a quantidade de nós da árvore).

Não é possível a inserção de valores já existentes em todas as implementações de árvore.

60

Nas Figuras 38 e 39, é apresentado o balanceamento realizado na árvore AVL

após a inserção do valor 90.

Figura 38 – Tela de apresentação da Estrutura de Dados Árvore AVL

Figura 39 – Tela de apresentação da Estrutura de Dados Árvore AVL balanceada após a inserção

do valor 90.

61

2.2.9 Árvore N-Ária – Sistema de Arquivos

Já na Figura 40, temos a visualização de Árvore N-Ária, sendo representada na

forma de um sistema de arquivo, em que o valor do no é referente ao seu tamanho como

arquivo. Essa apresentação possui as operações de Inserir, Remover, Buscar (colore o valor

buscado) e Tamanho. O resultado do clique no botão tamanho pode ser visto na Figura 40,

onde o resultado refere-se à soma dos elementos do no solicitado com os seus descendentes,

assim o tamanho do nó 7 será 7(nó selecionado) + 22 + 13 resultando assim fica tamanho

igual a 42.

Figura 40 – Resultado da operação Tamanho do nó 7.

62

2.2.10 Algoritmos Clássicos aplicados a Estrutura de Dados

Figura 41 – Tela de apresentação da Estrutura de Dados Pilha Inverte.

Na ferramenta, foram implementadas animações de algoritmos clássicos de

Estruturas de Dados, conforme podemos ver na Figura 41 onde ocorre à inversão de uma

Pilha. Para tanto, é utilizada uma animação, onde ao clicarmos no botão Inverter é iniciado a

animação de inversão podendo ser acelerada ou desacelerada nos botões com sinal de “+” e “-

“.

Já na Figura 42, podemos ver outro algoritmo clássico, sendo o de Fila, utilizando

a opção de Furar a Fila. Assim, temos as operações de Enfileirar e Desenfileirar, porém, se

quisermos usar o fura fila, devemos indicar a posição e utilizar o botão Fura Fila.

Figura 42 – Tela de apresentação da Estrutura de Dados Fila – Fura.

63

3. COMPARATIVO E AVALIAÇÃO DA FERRAMENTA

Este capítulo tem por objetivo apresentar um comparativo entre a ferramenta

proposta nesse trabalho e as mostradas no capítulo 1. Por fim, será apresentado a avaliação

que foi realizada em sala com os alunos da disciplina de Estrutura de Dados. A avaliação terá

seus resultados expostos neste capítulo, junto com uma explanação dos resultados obtidos.

3.1 Comparativo

Nesta seção, será apresentado um quadro comparativo entre as ferramentas

abordadas, utilizando os seguintes aspectos: disponibilidade, facilidade de uso, Estruturas de

dados implementadas, interação com o usuário, como é o front-end da ferramenta, modo de

exibição da ferramenta.

Disponibilidade: Será levada em consideração a facilidade de obter a

ferramenta para utilização.

Facilidade de uso: Será vista a dificuldade em utilizar a ferramenta, como por

exemplo, na execução das Estruturas de Dados.

Estrutura de Dados Implementadas: Serão apresentadas quais são as estruturas

abordadas pela ferramenta.

Interação com o usuário: Será levado em consideração o quanto o usuário pode

alterar parâmetros dos algoritmos, alterar a demonstração da estrutura, dentre

outros fatores.

Como é o front-end da ferramenta: Mostrará se a ferramenta foi desenvolvida

para “WEB” ou “DESKTOP” e em que linguagem foi desenvolvida.

Modo de exibição da ferramenta: O que é apresentado na tela de demonstração

da estrutura.

Tabela 3 – Quadro Comparativo Parte 1.

Nome Facilidade de uso Front-End Modo de Exibição

Astral Um pouco confusa quando se trata de um novo

usuário.

Desktop, mas é

necessário baixar os

executáveis de cada

estrutura para utilizá-

la. Linguagem Pascal.

É apresentada apenas a animação da

estrutura. Não é uma apresentação muito

didática, pois é toda em preto e branco.

AGEDUnifor Bem flexível, muito boa e prática. Um pouco

confusa a uma primeira vista por não ser muito

explicativa

Desktop, Linguagem

Java

É apresentado o código fonte utilizado pela

aplicação e a animação da estrutura de

maneira bem explicativa. Utilizando

bastante cores para diferenciar o passo a

passo da estrutura.

Animação de

Árvore-B

Não é muito amigável as definições aplicadas na

ferramenta e existe algumas falhas como citado

anteriormente, no caso de tentar excluir todos os

elementos da Árvore só é possível se definir

novamente um valor para a quantidade de

elementos suportados por em cada nó.

Web, linguagem Java. É apresentado de forma didática, porém nem

tanto quanto a demonstração da estrutura

poderia ter cores para ajudar na

visualização.

Nome Facilidade de uso Front-End Modo de Exibição

Spyke De acordo com as referencias se trata de uma

ferramenta muito boa de utilizar pois alem de

abranger mais de uma linguagem, ela é bem

explicativa.

Desktop, linguagens

C++, Pascal e Java

Tem uma apresentação bem amigável, com

a demonstração da estrutura de maneira bem

excplicativa e os algoritmos de cada

operação possível sobre a estrutura

escolhida.

Ring’G A aplicação é definida como Difícil ou Regular

a usa utilização, pois é necessário a criação do

algoritmo em Java para ser executado na

aplicação.

Desktop, linguagem

Java.

Tem a animação de representação do

algoritmo bem didática e como o algoritmo

é gerado pelo o usuário isso permite utilizá-

lo em vários testes.

TBC-AED

É uma ferramenta bastante explicativa e de fácil

entendimento, porém falha na abordagem de

como a aplicação é explicativa. Ela torna

obrigatório seguir passos desnecessários para

uma segunda utilização da ferramenta, isso é a

segue uma mesma sequência de apresentação.

Desktop/Web,

linguagem Java.

É apresentado de uma forma bem didática,

mas há didática demais, que prende o

usuário a explicações desnecessárias depois

da primeira utilização da ferramenta.

Nome Facilidade de uso Front-End Modo de Exibição

ADTTool Razoável. Desktop, C/C++.

É mostrado apenas a animação da estrutura.

JSave Muito boa, permite observar por exemplo o

algoritmo de uma lista ligada de diversas formas,

na forma de um vetor, na forma de pequenas

caixas interligadas.

Desktop,Java

Muito interessante, pois permite ao usuário

controlar a execução, podendo pausar a

apresentação e durante a execução é

apresentado várias explicações sobre as

operações.

JVALL Muito boa, de fácil utilização. WEB,Java

Tem uma apresentação gráfica muito boa,

com vários recursos na execução das

operações.

Linked List

Teaching System

É de fácil utilização.

WEB,Java

Sua apresentação é bem definida e divida

em quatro partes: uma com o código onde

enquanto ocorre a execução a linha que está

sendo processada é grifada, outra a

representação das estruturas em caixas

ligadas, uma outra que serve para entrada de

dados e a ultima que possui alguns controles

sobre o fluxo de execução, por exemplo

parar, reiniciar, avançar).

JDSL Visualizer Tem uma utilização não muito didática. Desktop, Java

A visualização da estrutura não é muito rica.

Nome Facilidade de uso Front-End Modo de Exibição

Opsis Para sua utilização é necessário uma leitura no

manual, pois a sua utilização não é muito

simples, sendo até mesmo um pouco confusa.

WEB,Java

Tem uma demonstração básica não muito

detalhada da estrutura de dado e visualmente

um pouco desorganizada.

Binary Search Tree

Visualization

É uma ferramenta bem explicativa. De fácil

utilização. WEB,Java

Na execução da estrutura é possível ver o

passo a passo com explicações textuais do

que está ocorrendo durante a execução.

ISVL Tem uma razoável facilidade no seu uso. WEB, Java.

É possível ver a execução passo a passo

podendo parar, reiniciar dentre outras

opções na execução.

EVEGA De fácil manipulação. Desktop, Java.

O usuário pode explorar os algoritmos

durante a execução.

VisualGraph Não é muito amigável. Desktop, Java

É exibida apenas a execução gráfica do

algoritmo.

PILOT Tem uma interface boa. Web, Java

A apresentação da estrutura é básica .

Nome Facilidade de uso Front-End Modo de Exibição

JAWAA É uma ferramenta bastante prática e de fácil

utilização.

Web, linguagem

Java..

É exibida apenas a visualização das

estruturas geradas.

LINK Tem uma interface de entendimento razoável. Desktop, linguagem

C++.

É exibida apenas a visualização das

estruturas geradas.

FD-AED

Os critérios serão descritos no final desta sessão.

Tabela 4 – Quadro Comparativo Parte 2.

Nome Disponibilidade ED Implementadas Interação com o usuário

Astral Boa, porém é necessário

baixar os executáveis de cada

Estrutura para utilizá-la.

Array, Linked List, Doubly

Linked List, Binary Tree,

AVLTree, Graph, Hash e o Sort

onde são aplicados os algoritmos

do Heap-Sort, Insertion-Sort,

Merger Sort

O usuário apenas inclui os parâmetros e utiliza os botões

para ver a execução dos algoritmos não é possível

mudanças.

AGEDUnifor Boa, porém para conseguir a

ferramenta, só foi possível

através do orientador deste

projeto por se tratar de um

trabalho de conclusão de

curso da Unifor.

Pilha, Fila, Deque, Lista, Árvore

de Busca e Árvore AVL

Muito interessante, é possível alterar as configurações de

exibição da estrutura como cor, tamanho, posição dentre

outras opções.

Nome Disponibilidade ED Implementadas Interação com o usuário

Animação de

Árvore-B

Foi um pouco complicado de

obter a ferramenta, mas foi

possível via WEB.

Árvore B

Não é possível nenhum tipo de alteração.

Spyke Não foi possível obter a

ferramenta para testes, porém

ela se enquadra em algumas

definições que foram

aplicadas na ferramenta

desenvolvida.

Pilha e Fila É possível o usuário definir qual linguagem ele deseja ver a

demonstração da estrutura escolhida.

Ring’G Não foi possível obter a

ferramenta para testes.

Grafos de acordo com o

algoritmo gerado pelo usuário.

O usuário interage diretamente com ferramenta na geração

do algoritmo a ser executado na ferramenta. É possível

depurar o algoritmo em tempo de criação na própria

ferramenta, o que a torna interativa porém não da melhor

maneira.

Nome Disponibilidade ED Implementadas Interação com o usuário

TBC-AED A opção de executar a

aplicação Desktop não foi

possível, porém é de fácil

acesso a versão Web.

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.

O usuário não tem a opção de nenhum tipo de alteração na

aplicação, e ela só permite seguir para um próximo passo

após ter passado por um obrigatório o que nem sempre é

necessário.

ADTTool Não foi possível obter a

ferramenta para testes.

Pilha, Fila e Lista Linear.

O usuário pode gerar os algoritmos e executar na aplicação

e pode acompanhá-la passo a passo.

JSave Não foi possível obter a

ferramenta para testes.

Lista e Pilha.

O usuário pode criar sua própria aplicação.

Nome Disponibilidade ED Implementadas Interação com o usuário

JVALL Não foi possível obter a

ferramenta para testes.

Lista e Pilha.

O usuário pode utilizar seu próprio código e permite

controle sobre a execução.

Linked List

Teaching

System

Foi possível encontrar a

aplicação, porém é uma

aplicação toda em inglês o

que para alguns estudantes

pode não ser bem entendida.

Lista. Não permite interação do usuário do tipo como geração do

seu próprio código.

JDSL

Visualizer

Foi possível acesso a

ferramenta, é necessário

baixar o aplicativo e é

necessário seguir um manual

para sua utilização e

conforme a anterior é uma

ferramenta toda em inglês.

Árvore, Grafos, Ordenação e

Busca.

Permite que o usuário gere seus próprios códigos. É uma

ferramenta um pouco complexa para criação e execução dos

algoritmos.

Nome Disponibilidade ED Implementadas Interação com o usuário

Opsis Foi possível encontrar a

aplicação, porém é uma

aplicação toda em inglês o

que para alguns estudantes

pode não ser bem entendida.

Árvore

Permite que os usuários gerem seus próprios códigos.

Binary

Search Tree

Visualization

Foi possível encontrar a

aplicação, porém é uma

aplicação toda em inglês o

que para alguns estudantes

pode não ser bem entendida.

Árvore

O usuário não tem permissões de alteração na aplicação,

apenas segui-la passo a passo.

ISVL Foi possível acesso a

ferramenta, é uma ferramenta

toda em inglês.

Árvore e Busca

O usuário não tem opções de alteração da ferramenta.

Nome Disponibilidade ED Implementadas Interação com o usuário

EVEGA Não foi possível obter a

ferramenta para testes.

Grafos

O usuário apenas pode acompanhar o passo a passo na

ferramenta. Permite a execução de comparação entre os

vários algoritmos junto com gráficos de desempenho.

VisualGraph Não foi possível obter a

ferramenta para testes.

Grafos

O usuário pode executar seus próprios algoritmos.

PILOT Não foi possível obter a

ferramenta para testes.

Grafos e Árvore

Permite que o usuário crie seus algoritmos e a aplicação

informa se o algoritmo possui algum erro.

JAWAA JAWAA é uma linguagem

script a qual é utilizada na

construção de animações de

estruturas.

Grafos, Pilha, Lista e Árvore

Permite ao usuário a inserção de seus próprios algoritmos.

Nome Disponibilidade ED Implementadas Interação com o usuário

LINK Não foi possível obter a

ferramenta para testes.

Grafos Permite que o usuário gere seus algoritmos, ou execute os já

existentes.

FD-AED Os critérios serão descritos no final desta sessão.

76

Das ferramentas apresentadas no quadro anterior, só foi possível efetuar testes completos nas

ferramentas Astral, AGEDUnifor, Animação de Árvore-B e TBC-AED. Foi possível o acesso

a algumas citadas no quadro, porém não foram muito detalhadas, como citado anteriormente,

por não se enquadrarem no modelo buscado para a ferramenta desenvolvida e as restantes não

foi possível o acesso, o que mostra que, com relação a Disponibilidade, ainda há grande

dificuldade para a maioria das ferramentas. Foi realizada a comparação das que não se

encaixam no modelo, para apresentar que existem mais ferramentas com essa abordagem e

mostrar também as desvantagens para que não fosse repetida na aplicação construída.

Já com relação à facilidade de uso, pode-se observar que poucas são satisfatórias.

Vendo as estruturas implementadas, é possível ver que temos aplicações que abordam muitas

estruturas, enquanto outras chegam a se dedicar apenas a uma estrutura, como é o caso da

ferramenta Animação de Árvore-B.

A maioria deixa a desejar na interação com o usuário, algumas, por exemplo,

interagem demais com o usuário, obrigando-o a executar passos na aplicação que não são

mais desejáveis como, por exemplo, o TBC-AED.

Pode-se observar que a maioria das ferramentas foram desenvolvidas para Web, porém

a maioria delas ainda são de difícil acesso ao usuário, pois uma parte dos links não puderam

ser encontrados. Dentre as analisadas, poucas puderam ser testadas e a maioria dessas

ferramentas encontram-se em inglês, o que para alguns alunos pode ser uma barreira para o

entendimento.

A maioria das ferramentas tem uma apresentação da estrutura de dados corretamente,

no entanto muitas poderiam melhorar sua didática utilizando-se, por exemplo, de recursos

como a aplicação de cores, legendas, dentre outros.

A ferramenta desenvolvida foi baseada nas ferramentas que foram abordadas com

mais detalhes na sessão 1.2 e na realidade das disciplinas de Estrutura de Dados da Faculdade

Farias Brito. Buscou-se obter o melhor de cada uma, para se implementar uma aplicação

simples, porém bastante didática. Foi utilizado como base principal a ferramenta

AGEDUnifor que tem uma abordagem boa das estruturas, mas se teve basicamente um pouco

de cada ferramenta apresentada. Seja na apresentação da estrutura até a sua usabilidade como,

por exemplo, posição dos botões, operações possíveis dentre outras coisas.

77

Nos critérios escolhidos para comparativo realizado na Tabela 3 e 4, serão

apresentados a seguir os pontos referentes a ferramenta criada, sendo desta forma para uma

melhor visualização desses critérios:

Disponibilidade: Será disponibilizada no site da Faculdade Farias Brito,

tornando assim o acesso possível para todos alunos e professores.

Facilidade de uso: É uma aplicação que busca ser clara na sua navegação.

Estrutura de Dados Implementadas: Para Pilha, temos as abordagens de Pilha

Padrão, Pilha Vetor, Pilha LSE e Inverter. Já em Fila, temos Fila Abstrata, Fila

Circular, Fila Vetor, Fila LSE e o Fura Fila. Na implementação de Lista, temos

LSE, LDE e Lista com Vetor, por fim Árvore com Árvore de Busca Binária,

Árvore de Busca Binária com Vetor, Árvore AVL e Árvore N-Ária

(Exemplificando um sistema de arquivos).

Interação com o usuário: É possível a visualização das estruturas de forma

independente das estruturas de dados e suas diferentes aplicações, por

exemplo, Pilha Abstrata, Pilha com Vetor e Pilha com LSE podem ser vista

todas ao mesmo tempo na tela ou uma de cada vez, apenas ocultando o quadro

a não ser visualizado como citado anteriormente.

Como é o front-end da ferramenta: É uma aplicação Web desenvolvida em

Silverlight com ASP.NET para interface e, como código base, foi utilizado o

C#.

Modo de exibição da ferramenta: É apresentada a estrutura em sua forma

abstrata ou sendo implementada com outra estrutura, procurando trazer uma

visão didática da Estrutura de Dados em estudo.

3.2 Avaliação da Ferramenta

Neste capítulo, serão apresentados os resultados da pesquisa realizada com os

alunos da disciplina de Estrutura de Dados 1 da Faculdade Farias Brito, para se verificar o

comportamento da ferramenta diante dos alunos, buscando assim ver sua aceitação pelos

usuários. Está dividida em duas seções: questionário e resultados.

78

3.2.1 Questionário

Foi elaborado um questionário com oito perguntas para que fosse realizada a

avaliação da ferramenta pelos alunos da disciplina, como um meio de se obter o feedback dos

alunos. Na Tabela 5, encontram-se as perguntas utilizadas no questionário.

Tabela 5 – Perguntas x Critérios

Pergunta Critérios

1) Compreensão do TAD: Pilha Avaliar o grau de compreensão do aluno referente a

estrutura de dados Pilha.

2) Compreensão do TAD: Fila Avaliar o grau de compreensão do aluno referente a

estrutura de dados Fila.

3) Compreensão do TAD: Lista Avaliar o grau de compreensão do aluno referente a

estrutura de dados Lista.

4) Compreensão do TAD: Árvore Avaliar o grau de compreensão do aluno referente a

estrutura de dados Árvore.

5) Design do Software Avaliar se a ferramenta traz um design amigável e

agradável.

6) Compreensão da Ferramenta Obter se a ferramenta é de fácil leitura para o usuário.

7) Utilização

Tem por objetivo avaliar a utilização da ferramenta

tendo em vista seu comportamento no browser e sua

resposta para as suas funções essenciais.

8) Navegação entre as Estruturas de

Dados

Avaliar se a navegação entre as páginas e as

estruturas de dados ocorre de maneira simples na

aplicação.

79

3.2.2 Resultados

A ferramenta desenvolvida neste projeto foi apresentada para uma turma da

disciplina de Estrutura de Dados 1 do curso de Ciência da Computação da Faculdade Farias

Brito, composta por 14 alunos. Os alunos receberam instruções sobre o funcionamento da

ferramenta através de uma breve apresentação e acompanhamento para algum tipo de dúvida

com relação a tecnologia utilizada. Em seguida, os alunos utilizaram a aplicação e

responderam a um questionário, com o objetivo de se avaliar a ferramenta e sua aceitação. Foi

realizado, também, um teste de carga com os alunos da disciplina Estruturas de Dados da

Universidade de Fortaleza, onde aproximadamente 20 alunos acessaram a ferramenta,

simultaneamente, e executaram funcionalidades diferentes sem ocorrer problema de

desempenho da ferramenta ou falta de acesso, tendo como única ressalva o acesso via o

browser Google Chrome, que não renderizou os componentes corretamente. Na tabela 6, são

apresentados os resultados referentes à avaliação.

Tabela 6 - Resultado da avaliação do software

Excelente Bom Regular Insuficiente

1) Compreensão do TAD: Pilha 50% 43% 7% 0%

2) Compreensão do TAD: Fila 43% 50% 7% 0%

3) Compreensão do TAD: Lista 43% 50% 7% 0%

4) Compreensão do TAD: Árvore 50% 43% 7% 0%

5) Design do Software 36% 28% 36% 0%

6) Compreensão da Ferramenta 36% 50% 14% 0%

7) Utilização 21% 72% 7% 0%

8) Navegação entre as Estruturas de Dados 36% 57% 7% 0%

80

Conforme visto na Tabela 6, a primeira questão recebeu uma avaliação bastante

satisfatória, o que podemos concluir pela excelência em 50%. Na segunda questão, o nivel

também se manteve alto, com um percentual de 43%. Na terceira, repetiu-se o índice de 43%

e na quarta novamente 50%. As quatro primeiras questões se referem à compreensão dos

alunos com relação às estruturas de dados após o uso, buscando o mensurar a importancia da

ferramenta no seu entendimento da estrutura estudada.

Na quinta questão, foi obtido uma média de 36% para excelente e 28% para bom,

o que mostra que o design do software , um ponto mais delicado, também foi bem aceito pela

maioria dos alunos.

Na sexta questão, é pode ser observado que a compreensão da ferramenta que

procura avaliar o quão simples é a compreensão de informações e comportamentos da

aplicação, onde mantivemos um nível muito bom para os quesitos excelente 36% e bom 50%.

Na sétima questão, foi vista a utilização da ferramenta, como a sua

disponibilização e comportamento no browser, onde tivemos um percentual de 72% para

bom.

Na oitava questão, avaliou-se como é a navegação da ferramenta entre as

estruturas, buscando trazer sua interatividade com o usuário na compreensão ao navegar, isto

é, tornar a informação e o acesso simples de se entender. Neste quesito, obtivemos 36% para

execelente e 57% para bom.

Nenhuma das questões aplicadas no questionario obteve percentual para a

ferramenta como insuficiente e teve uma média maior no quesito bom, com 49%, e em

seguida excelente, com 40%.

Assim com essa avaliação, a ferramenta criada teve uma aceitação boa e sendo

uma ferramenta que atende a realidade e as necessidades da Faculdade Farias Brito. Trazendo,

como visto na tabela 6, uma compreensão das estruturas de dados com uma média entre 40%

e 50%, fazendo com que o objetivo principal da ferramenta fosse alcançado.

81

CONCLUSÃO

Para melhor entendimento da utilidade e das vantagens da ferramenta

desenvolvida, foram apresentados e analisados alguns exemplos de ferramentas didáticas

aplicadas no âmbito das Estruturas de Dados. Ao se estudar essas ferramentas, foi observado

seu funcionamento conforme execução e apresentação dos algoritmos abordados, procurando

perceber a didática aplicada e a forma como o algoritmo é apresentado, sua usabilidade e

também o grau de interatividade alcançado com as ferramentas.

Com essa abordagem, foi possível estudar as ferramentas já existentes e criar

nossa ferramenta FD-AED com mais eficiência, para ser aplicada na Faculdade Farias Brito e

disponibilizada no site da faculdade, com o fim de proporcionar um melhor aproveitamento

aos alunos da disciplina. Outra vantagem da ferramenta é a sua democratização, por se tratar

de um software livre e de fácil acesso.

Com o objetivo de validar a ferramenta, foram realizados testes com os alunos da

turma de Estrutura de Dados 1 da Faculdade Farias Brito, com ótima aceitação, de acordo os

resultados apresentados nessa monografia. Já os testes com os alunos da Universidade de

Fortaleza tiveram o objetivo de verificar o funcionamento da ferramenta em um momento de

estresse, com acesso de mais de 20 alunos ao mesmo tempo e a ferramenta comportou-se bem

nesse cenário.

Diante disso, acredita-se que os objetivos do trabalho foram alcançados com

êxito, uma vez que tivemos não só a FD-AED disponibilizada via web, com os principais

TADs e Estruturas de dados referenciados na literatura, a partir de um estudo analítico das

ferramentas semelhantes disponíveis, mas também foi possível avaliar sua performance em

um ambiente de prática educacional com resultados concentrados em sua maioria entre

excelente e bom.

82

Cientes de que este foi um trabalho inicial, onde cabem expansões e desdobramentos, vemos

algumas possibilidades para um trabalho futuro, entre elas a possibilidade de migrar o código

para dispositivos móveis; a possibilidade de fazer uma ferramenta mais customizável, onde o

usuário possa alterar as estruturas de dados ou a linguagem e a possibilidade de tornar a

ferramenta mais extensível, onde os alunos possam acrescentar algoritmos e estruturas de

dados, através, por exemplo, de um gerenciador de conteúdo.

83

REFERÊNCIAS BIBLIOGRÁFICAS

CORMEN, Thomas H.; LEISERSON, Charles E.; RIVEST, Ronald L.; STEIN, Clifford.

Algoritmos: Teoria e Prática. 2ª .ed. Rio de Janeiro, 2002..

GARCIA, I. C.; Rezende, P. J.; CALHEIROS, F. C. Astral: Um Ambiente para Ensino de

Estrutura de Dados Através de Animações de Algoritmos. Disponível em:

<http://www.ic.unicamp.br/~rezende/garcia.htm>. Acesso em 01 de mar. de 2012 .

GOMES, Anabela de Jesus; MENDES, António José: A animação na aprendizagem de

conceitos básicos de programação. Disponível em: <

http://161.67.140.29/iecom/index.php/IECom/article/viewFile/113/108 >. Acesso em 20

de mar. 2010.

GOODRICH, Michael T.; TAMASSIA, Roberto. Projeto de Algoritmos. 1ª.ed.Porto

Alegre, 2004.

GOODRICH, Michael T.; TAMASSIA, Roberto. Estrutura de Dados e Algoritmos em

Java. 2ª.ed.Porto Alegre, 2002.

LAFORE, Robert. Estrutura de dados & algoritmos em Java. 2.ed. Rio de Janeiro: Ciência

Moderna LTDA. 2004.

84

LAUREANO, Gabriel Reanaldo; Uma animação de Árvore-B para auxílio no ensino de

estruturas de dados. UFSC, 2003.

MARSHALL, M. S.; HERMAN, I.; MELANÇON, G; An Object-Oriented Design for

Graph Visualization, 2003. Disponível em:

<http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.25.7440&rep=rep1&type=pdf

> . Acesso em 14 de out. de 2012.

NETO, José de Sousa Rebouças; Ferramenta Didática de Estruturas de Dados, UNIFOR,

Monografia desenvolvida para o Curso de Ciências da Computação, 2007.

SANTOS, Rodrigo Pererira e COSTA, Heitor Augustus Xavier; Um Software Gráfico

para Apresentação de Algoritmos e Estruturas de Dados aos Iniciantes em Computação e

Informática, 2005. Disponível em: <

http://www.cos.ufrj.br/~rps/pub/completos/2005/COMPSULMT.pdf >. Acesso em: 15 de

out. de 2012.

SCHILDT, Herbert; C Completo e Total. 3ª ed. São Paulo, 1997 .

SIMÕES, Priscyla Waleska Targino de Azevedo; BALDESSAR, Luciano Dagostin;

MARTINS, Paulo João; BARBOSA, Ana Cláudia Garcia; Spyke - Ferramenta de Apoio

ao Ensino de Pilhas e Filas, 2006. Disponível em:

<http://www.dcc.unesc.net/sulcomp/06/artigos/sessaoPoster /22164.pdf>. Acesso em: 10

de out. de 2012.

SOUZA, Daniel Filippi; Catálogo de Algumas Ferramentas de Apoio ao Ensino de

Computação, 2004. Disponível em: < http://docentes.puc-

campinas.edu.br/ceatec/angela/RT012004.pdf>. Acesso em 17 de nov. de 2012.

85

TENENBAUM, Aaron M; LANGSAN, Yedidyah; AUGENSTEIN, Moshe J. Estruturas

de Dados Usando C. 1ª.ed. São Paulo, 1995.

WIRTH, Niklaus. Algoritmos e Estruturas de Dados. Rio de Janeiro: Prentice-Hall do

Brasil, 1989.