You are on page 1of 6

Ferramenta Computacional para o Ensino de Algoritmos de Pesquisa e Ordenao

Romuere R. V. e Silva, Flvio H. D. Arajo, Rodrigo M. S. Veras Departamento de Informtica e Estatstica Universidade Federal do Piau (UFPI) Teresina PI Brasil
{romuere, flavio86, rveras}@ufpi.edu.br

Abstract. Search and sorting are some of the fundamental problems in algorithmic computation. About 25% of all CPU cycles are spent on searching and sorting data, which encourages further study of the issues. In addition, there are a number of other tasks (calculating the average, removing duplicate data, etc..) That can be implemented more efficiently if the search is efficient and the data is sorted. However, the learning process of these algorithms is considered a challenge for students of computing. This paper presents a tool to support the teaching of search and sorting algorithms that is facilitating the learning of the issues involved in the disciplines of Data Structure and Design and Analysis of Algorithms. Key-words. searching, sorting, learning, performance Resumo. Pesquisa e ordenao so problemas algortmicos fundamentais em Computao. Cerca de 25% de todos os ciclos da CPU so gastos com pesquisa e ordenao de dados, o que incentiva estudos mais aprofundados dos temas. Alm disso, h um grande nmero de outras tarefas (clculo da mdia, remoo de dados duplicados, etc.) que podem ser implementadas mais ecientemente caso a pesquisa seja eficiente e os dados estejam ordenados. Contudo, o processo de aprendizagem destes algoritmos considerado um desao para estudantes de Computao. Este trabalho apresenta uma ferramenta de apoio ao ensino de algoritmos de pesquisa e ordenao que vem facilitando o aprendizado dos temas em questo nas disciplinas de Estrutura de Dados e Projeto e Anlise de Algoritmos. Palavras-chave. pesquisa, ordenao, aprendizado, desempenho.

1. Introduo
O estudo de algoritmos e estruturas de dados uma rea fundamental no campo da Cincia da Computao, Engenharia da Computao, Bacharelado em Sistemas de Informao, entre outros cursos. Cada vez mais a necessidade de alta performance de sistemas computacionais torna-se indispensvel tanto para o bom funcionamento, quanto para sua aceitao no mercado [Celes et al. 2004]. Todavia, a aprendizagem de algoritmos e estruturas de dados constitui um dos grandes problemas enfrentados pelos alunos que ingressam nestes cursos visto que as disciplinas que abordam tais conhecimentos esto entre as que possuem maior ndice de reprovao [Barcelos e Tarouco 2009].

Com o intuito de produzir melhores resultados no processo de aprendizagem em cursos da rea de Computao, faz-se constante a necessidade de atualizao das didticas de ensino de forma geral, procurando transformar processos abstratos em concretos atravs do uso de softwares e possibilitando melhor compreenso dos tpicos abordados e maior interao entre aluno e objeto de trabalho [Santos et al. 2008]. As Tecnologias da Informao e Comunicao auxiliam a educao na relao do ensino com a aprendizagem [Amen and Nunes 2006] e vem forando que educadores e pesquisadores utilizem novos mtodos e paradigmas na educao. Neste trabalho apresentamos a segunda verso do SEED1 (Software de Ensino de Estruturas de Dados). No estgio atual, o SEED prov ao aluno, meios de estudo e comparao dos principais algoritmos de pesquisa e ordenao de dados, e pode ser utilizado como ferramenta de ensino-aprendizagem nas disciplinas de Estrutura de Dados e Projeto e Anlise de Algoritmos (PAA). Na disciplina de PAA, os alunos da rea de Computao devem aprender as principais tcnicas de programao (diviso e conquista, algoritmos gulosos e programao dinmica) e a analisar a complexidade assinttica dos algoritmos. A complexidade de um algoritmo pode ser definida como uma medida de seu desempenho que, na maioria dos casos, dada em funo do tempo gasto para se chegar soluo. Desta forma, faz-se necessrio a incluso de um mdulo para que o aluno possa visualizar e comparar, na prtica, o desempenho dos algoritmos estudados. Na Seo 2 so listados alguns trabalhos relacionados encontrados na literatura. A Seo 3 reservada para a apresentao da ferramenta proposta e na Seo 4 apresentamos as concluses e as perspectivas de trabalhos futuros.

2. Trabalhos Relacionados
H diversas ferramentas construdas para o ensino de algoritmos e programao. Cada trabalho apresenta um foco relacionado s necessidades de seus desenvolvedores e professores interessados. Podem ser citados: ASTRAL (Animation of Data Structures and Algorithms) [Garcia et al. 1997], EDDL (Estruturas de Dados Dinmicas Lineares) [Azul and Mendes 1998], TCB-AED (Treinamento Baseado em Computador para Algoritmos e Estruturas de Dados) [Santos and Costa 2005] e TCB-GRAFOS (Treinamento Baseado em Computador para Algoritmos em Grafos) [Santos and Costa 2006]. De maneira geral, essas ferramentas consistem em ambientes nos quais possvel a visualizao grfica da atuao de algoritmos sobre as estruturas de dados. Seus objetivos so apresentar uma abordagem inicial dos algoritmos e mostrar suas tcnicas de implementao.

3. Apresentao da Ferramenta
O SEED, foi desenvolvido utilizando-se linguagem de programao JAVA (visando a portabilidade e futura utilizao na web) e o ambiente de desenvolvimento NetBeans. Na verso atual, a ferramenta possibilita o ensino-apredizagem dos principais mtodos de pesquisa:
1

Um artigo resumido apresentando a primeira verso foi submetido para publicao no Simpsio Brasileiro de Informtica na Educao, 2010.

1. Pesquisa Linear. 2. Pesquisa Binria; E tambm os seguintes mtodos de ordenao: 1. 2. 3. 4. 5. 6. Ordenao por Insero (InsertionSort); Ordenao por Seleo (SelectionSort); Ordenao pelo Mtodo da Bolha (BubbleSort); Ordenao por Intercalao (MergeSort); Ordenao por Montes (HeapSort); Ordenao Rpida (QuickSort).

O SEED dividido em dois mdulos: Pesquisa e Ordenao. Alm disso, cada mdulo dividido em dois submdulos: Aprendizagem e Comparao. 3.1 Mdulo Pesquisa A operao de pesquisa encontrada com muita frequncia em aplicaes computacionais, sendo, portanto, importante estudar estratgias distintas para efetu-las. Tal operao aplicada a uma lista de elementos, do qual desejamos saber se um dado valor est ou no presente nesta lista. Na pesquisa linear, o valor ser procurado de forma linear, ou seja, seqencialmente. Os valores so comparados de forma seqencial at que o valor desejado seja encontrado. Se a busca chega ao ltimo elemento da lista conclui-se que o valor buscado no est contido na lista. J na pesquisa binria a idia bsica consiste em diminuir a cada passo o intervalo de busca e para isso necessrio que a lista de entrada esteja ordenada. O valor buscado obtido comparando-o com o elemento central da lista, se o valor for menor esse passo ser repetido na primeira metade da lista, se for maior ser repetido na outra metade. O algoritmo termina quando o valor procurado for igual ao elemento central (elemento encontrado) ou o elemento central se repetir (o elemento procurado no esta na lista). No submdulo Aprendizagem o usurio ter a oportunidade de conhecer os algoritmos mais profundamente, clicando nos botes Falar sobre a Pesquisa binria e Falar sobre a Pesquisa linear, ele tambm poder calcular os tempos de pesquisa de um elemento em um vetor. O usurio ter que definir o tamanho do vetor em que ser pesquisado e o valor que deseja procurar. Alm disso, ele pode escolher o tipo de vetor (aleatrio, crescente, decrescente) a ser gerado. Ainda no submdulo Aprendizagem, o usurio ter a possibilidade de escolher o mtodo de ordenao (para a pesquisa binria), a disposio dos dados, o tamanho do vetor, o valor a ser pesquisado, lembrando que quando a opo crescente for escolhida o usurio no precisar escolher o mtodo de ordenao. Os resultados do submdulo Aprendizagem so apresentados em forma de tabela com os tempos e a posio onde o valor foi encontrado. Por padro utilizamos no SEED o valor -1 quando o valor procurado no estiver no vetor. A Figura 1 apresenta o submdulo Aprendizagem do SEED. Ainda no mdulo Pesquisa temos o submdulo Comparao, onde o usurio ter que escolher somente o tipo de vetor que deseja ordenar, j que os tamanhos j so definidos na prpria ferramenta. O resultado do submdulo Comparao dado em

tabela e grfico relacionando o tempo de processamento com a quantidade de elementos como mostrado na Figura 2.

Figura 1. Submdulo Aprendizagem do SEED: escolha dos valores e resultado do algoritmo.

Figura 2. Submdulo Comparao do SEED

3.2 Mdulo Ordenao Da mesma forma que a Pesquisa, a Ordenao uma das tarefas bsicas em processamento de dados. Ordenar uma lista de elementos significa fazer com que os elementos sejam posicionados de acordo com algum critrio de ordenao. Assim como no mdulo Pesquisa, o mdulo Ordenao tambm dividido em dois submdulos: Aprendizagem e Comparao. No submdulo Aprendizagem, o usurio tem a possibilidade de escolher um dos mtodos disponveis e poder visualizar as suas principais informaes: principio do mtodo, pseudocdigo e anlise de complexidade. Alm disso, o usurio pode optar por executar o algoritmo, escolhendo a quantidade e a disposio (ordem crescente, decrescente ou aleatria) dos elementos, e visualizar o tempo de execuo e a quantidade de comparaes realizadas. A Figura 3 apresenta o submdulo Aprendizagem do mdulo Ordenao do SEED.

Figura 3. Submdulo Aprendizagem do SEED.

No submdulo Comparao, o usurio tem a possibilidade de avaliar o desempenho de dois ou mais mtodos de ordenao. Ele pode selecionar quais mtodos deseja comparar para uma determinada disposio dos dados. Selecionada essas duas informaes, o SEED analisar o desempenho dos algoritmos selecionados para entradas de diferentes tamanhos: 1000, 5000, 10000, 20000, 30000 elementos. Os resultados so apresentados em formato de tabela e grfico relacionando o tempo ou a quantidade de comparaes com a quantidade de elementos a ser ordenado. Dessa forma o usurio poder visualizar qual mtodo funciona melhor para uma determinada entrada de dados. Alm disso, a representao grfica dos resultados fornece uma visualizao do comportamento assinttico (complexidade) dos algoritmos. A Figura 4 apresenta o submdulo Comparao do mdulo Ordenao do SEED.

Figura 4. Submdulo Comparao do SEED: escolha e resultado da execuo do algoritmo.

4. Concluso e Trabalhos Futuros Para minimizar as dificuldades de ensino-aprendizagem, novas metodologias vm sendo estudadas, principalmente no que diz respeito ao uso de recursos da tecnologia na educao. Dessa forma, estamos apresentando a segunda verso do SEED, a qual alm dos mtodos de ordenao presentes na primeira verso, tambm traz consigo os

mtodos de pesquisa. Tal ferramenta tem como objetivo maior o auxlio ao aluno de computao na compreenso de tais mtodos. Os testes preliminares foram realizados na disciplina de PAA oferecida pelo Departamento de Informtica e Estatstica ao curso de Bacharelado em Cincia da Computao na Universidade Federal do Piau, na cidade de Teresina. A ferramenta foi utilizada nas atividades de monitoria e no auxlio ao ensino em PAA. Seu uso se mostrou satisfatrio e foi bem aceito pelos alunos. Durante o perodo de uso da ferramenta, foi observado um aumento do interesse e da compreenso dos alunos no estudo dos algoritmos de pesquisa e ordenao. Portanto, a ferramenta pedaggica desenvolvida apresenta um impacto positivo no aprendizado do referido tema. Essa verso da ferramenta uma aplicao standalone. No entanto, futuramente possuir recursos web, que possibilitem o acesso remoto, alm de permitir troca de idias, atravs da interatividade com usurios diversos. As prximas verses incluram ainda mais algoritmos clssicos em Cincia da Computao como algoritmos de manipulao de rvores.

Referncias
Amen, B. e Nunes, L. (2006). Tecnologias de informao e comunicao: contribuies para o processo interdisciplinar no ensino superior. Revista Brasileira de Educao Mdica, 30(3): 171-180. Celes, V., Cerqueira, R., e Rangel, J. L. (2004). Introduo a Estruturas de Dados: Com tcnicas de programao em C. Rio de Janeiro: Elsevier. Azul, A. A. and Mendes, A. J. (1998). Addl: Um programa didtico sobre estruturas de dados dinmicas lineares. In 3 Simpsio Investigao e Desenvolvimento de Software Educativo, vora, Portugal. Barcelos, R. J. e Tarouco, L. (2009). O uso de mobile learning no ensino de algoritmos, RENOTE, 7(3). Garcia, I. C., Rezende, P.J., e Calheiros, F.C. (1997). Astral: Um ambiente para ensino de estruturas de dados atravs de animaes de algoritmos. RBIE, (1). Santos, R. P e Costa, H. A. X. (2005). TCB-AED e TCB-AED/web: Um desafio no ensino de algoritmos, estruturas de dados e programao. In Anais do IV WEIMIG, Varginha/MG. Santos, R. P e Costa, H. A. X. (2006). Um software grfico educacional para o ensino de algoritmos em grafos. In Proc. of the IADIS/CIAWI 2006, pages 358-362, Murcia/Espanha. Santos, R. P e Costa, H. A. X., Resende, A. M. P., and Souza, J. M. (2008). O uso de ambientes grficos para ensino e aprendizagem de estruturas de dados e de algoritmos em grafos. In Anais do XXVIII Congresso da SBC-WEI, pages 157-166, Belm/PA.