ferramenta didática aplicada a estrutura de dados

Propaganda
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
1
Figura 1 - Operações básicas da pilha .
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
2
Figura 3 – Representação de Fila Circular .
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
Mecanismo de Design
Análise
Front-End
Mecanismo de
Implementação
Interface de comunicação com o usuário
ASP.NET, Silverlight 4 e
JavaScript
44
Mecanismo de
Mecanismo de Design
Análise
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
Pilha_PadrãoG
Descrição
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
Representação de Árvore de Busca Binária
Arvore_BuscaBinaria
Arvore_AVL
na forma Abstrata e Vetor (ES_Vetor).Utiliza
a classe Arvore_Bin.
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
Node_Arvore
Descrição
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
Rect_LDE_End
Descrição
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
Astral
Facilidade de uso
Um pouco confusa quando se trata de um novo
usuário.
AGEDUnifor
Bem flexível, muito boa e prática. Um pouco
confusa a uma primeira vista por não ser muito
explicativa
Animação de
Árvore-B
Front-End
Desktop, mas é
necessário baixar os
executáveis de cada
estrutura para utilizála. Linguagem Pascal.
Desktop, Linguagem
Java
Modo de Exibição
É apresentada apenas a animação da
estrutura. Não é uma apresentação muito
didática, pois é toda em preto e branco.
É 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.
Web, linguagem Java. É apresentado de forma didática, porém nem
tanto quanto a demonstração da estrutura
Não é muito amigável as definições aplicadas na
poderia ter cores para ajudar na
ferramenta e existe algumas falhas como citado
visualização.
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ó.
Nome
Spyke
Facilidade de uso
Front-End
Modo de Exibição
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.
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.
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
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.
aplicação.
É 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.
É uma ferramenta bastante explicativa e de fácil
entendimento, porém falha na abordagem de
TBC-AED
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.
Nome
Facilidade de uso
Front-End
Modo de Exibição
É mostrado apenas a animação da estrutura.
ADTTool
Razoável.
JSave
Muito boa, permite observar por exemplo o
Desktop, C/C++.
algoritmo de uma lista ligada de diversas formas,
na forma de um vetor, na forma de pequenas
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.
caixas interligadas.
JVALL
Muito boa, de fácil utilização.
Linked List
É de fácil utilização.
WEB,Java
Teaching System
WEB,Java
JDSL Visualizer
Tem uma utilização não muito didática.
Desktop, Java
Tem uma apresentação gráfica muito boa,
com vários recursos na execução das
operações.
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).
A visualização da estrutura não é muito rica.
Nome
Opsis
Facilidade de uso
Front-End
Para sua utilização é necessário uma leitura no
manual, pois a sua utilização não é muito
WEB,Java
Modo de Exibição
Tem uma demonstração básica não muito
detalhada da estrutura de dado e visualmente
um pouco desorganizada.
simples, sendo até mesmo um pouco confusa.
Binary Search Tree
É uma ferramenta bem explicativa. De fácil
Visualization
utilização.
ISVL
Tem uma razoável facilidade no seu uso.
EVEGA
De fácil manipulação.
VisualGraph
Não é muito amigável.
WEB,Java
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.
É possível ver a execução passo a passo
podendo parar, reiniciar dentre outras
opções na execução.
Desktop, Java.
O usuário pode explorar os algoritmos
durante a execução.
Desktop, Java
É exibida apenas a execução gráfica do
algoritmo.
A apresentação da estrutura é básica .
PILOT
Tem uma interface boa.
Web, Java
Nome
JAWAA
Facilidade de uso
É uma ferramenta bastante prática e de fácil
utilização.
LINK
Tem uma interface de entendimento razoável.
FD-AED
Os critérios serão descritos no final desta sessão.
Front-End
Web, linguagem
Java..
Desktop, linguagem
C++.
Modo de Exibição
É exibida apenas a visualização das
estruturas geradas.
É exibida apenas a visualização das
estruturas geradas.
Tabela 4 – Quadro Comparativo Parte 2.
Nome
Disponibilidade
ED Implementadas
Interação com o usuário
Astral
Boa, porém é necessário
Array, Linked List, Doubly
O usuário apenas inclui os parâmetros e utiliza os botões
baixar os executáveis de cada
Linked List, Binary Tree,
para ver a execução dos algoritmos não é possível
Estrutura para utilizá-la.
AVLTree, Graph, Hash e o Sort
mudanças.
onde são aplicados os algoritmos
do Heap-Sort, Insertion-Sort,
Merger Sort
AGEDUnifor
Boa, porém para conseguir a
Pilha, Fila, Deque, Lista, Árvore
Muito interessante, é possível alterar as configurações de
ferramenta, só foi possível
de Busca e Árvore AVL
exibição da estrutura como cor, tamanho, posição dentre
através do orientador deste
projeto por se tratar de um
trabalho de conclusão de
curso da Unifor.
outras opções.
Nome
Disponibilidade
ED Implementadas
Interação com o usuário
Árvore B
Não é possível nenhum tipo de alteração.
Pilha e Fila
É possível o usuário definir qual linguagem ele deseja ver a
Animação de Foi um pouco complicado de
Árvore-B
obter a ferramenta, mas foi
possível via WEB.
Spyke
Não foi possível obter a
ferramenta para testes, porém
demonstração da estrutura escolhida.
ela se enquadra em algumas
definições que foram
aplicadas na ferramenta
desenvolvida.
Ring’G
Não foi possível obter a
Grafos de acordo com o
O usuário interage diretamente com ferramenta na geração
ferramenta para testes.
algoritmo gerado pelo usuário.
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
Busca Binária, Métodos de
O usuário não tem a opção de nenhum tipo de alteração na
aplicação Desktop não foi
Ordenação (Select Sort, Insert
aplicação, e ela só permite seguir para um próximo passo
possível, porém é de fácil
Sort, Bubble Sort, Merge Sort e
após ter passado por um obrigatório o que nem sempre é
acesso a versão Web.
Quick Sort), Alocação Estática e
necessário.
Dinâmica de Memória (Lista,
Fila e Pilha) e Árvore Binária de
Busca.
ADTTool
Não foi possível obter a
Pilha, Fila e Lista Linear.
ferramenta para testes.
JSave
Não foi possível obter a
ferramenta para testes.
O usuário pode gerar os algoritmos e executar na aplicação
e pode acompanhá-la passo a passo.
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
Lista e Pilha.
O usuário pode utilizar seu próprio código e permite
ferramenta para testes.
Linked
List Foi possível encontrar a
Teaching
aplicação, porém é uma
System
aplicação toda em inglês o
controle sobre a execução.
Lista.
Não permite interação do usuário do tipo como geração do
seu próprio código.
que para alguns estudantes
pode não ser bem entendida.
JDSL
Foi possível acesso a
Árvore, Grafos, Ordenação e
Permite que o usuário gere seus próprios códigos. É uma
Visualizer
ferramenta, é necessário
Busca.
ferramenta um pouco complexa para criação e execução dos
baixar o aplicativo e é
necessário seguir um manual
para sua utilização e
conforme a anterior é uma
ferramenta toda em inglês.
algoritmos.
Nome
Disponibilidade
ED Implementadas
Interação com o usuário
Opsis
Foi possível encontrar a
Árvore
Permite que os usuários gerem seus próprios códigos.
Árvore
O usuário não tem permissões de alteração na aplicação,
aplicação, porém é uma
aplicação toda em inglês o
que para alguns estudantes
pode não ser bem entendida.
Binary
Foi possível encontrar a
Search
Tree aplicação, porém é uma
Visualization
apenas segui-la passo a passo.
aplicação toda em inglês o
que para alguns estudantes
pode não ser bem entendida.
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
Grafos
O usuário apenas pode acompanhar o passo a passo na
ferramenta para testes.
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
Grafos
O usuário pode executar seus próprios algoritmos.
Grafos e Árvore
Permite que o usuário crie seus algoritmos e a aplicação
ferramenta para testes.
PILOT
JAWAA
Não foi possível obter a
ferramenta para testes.
informa se o algoritmo possui algum erro.
JAWAA é uma linguagem Grafos, Pilha, Lista e Árvore
Permite ao usuário a inserção de seus próprios algoritmos.
script a qual é utilizada na
construção de animações de
estruturas.
Nome
Disponibilidade
LINK
Não foi possível obter a Grafos
Permite que o usuário gere seus algoritmos, ou execute os já
ferramenta para testes.
existentes.
FD-AED
ED Implementadas
Os critérios serão descritos no final desta sessão.
Interação com o usuário
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
1) Compreensão do TAD: Pilha
2) Compreensão do TAD: Fila
3) Compreensão do TAD: Lista
4) Compreensão do TAD: Árvore
5) Design do Software
6) Compreensão da Ferramenta
Critérios
Avaliar o grau de compreensão do aluno referente a
estrutura de dados Pilha.
Avaliar o grau de compreensão do aluno referente a
estrutura de dados Fila.
Avaliar o grau de compreensão do aluno referente a
estrutura de dados Lista.
Avaliar o grau de compreensão do aluno referente a
estrutura de dados Árvore.
Avaliar se a ferramenta traz um design amigável e
agradável.
Obter se a ferramenta é de fácil leitura para o usuário.
Tem por objetivo avaliar a utilização da ferramenta
7) Utilização
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%
36%
50%
14%
0%
21%
72%
7%
0%
8) Navegação entre as Estruturas de Dados 36%
57%
7%
0%
6) Compreensão da Ferramenta
7) Utilização
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.
Download