Introdução


= Introdução =

Esse documento tem a intenção de ser um tutorial para se trabalhar com o **GRAFO - graph editor**.
O **GRAFO** é uma ferramenta de ensino e de testes para trabalhos com //grafos//.
Ele proporciona a construção, edição, manipulação de //grafos// e testes de algoritmos. 
Através da sua interface de //plugins// pode-se facilmente construir um novo algoritmo e testa-lo. 
O usuário não precisa se preocupar com a interface gráfica, esta é fornecida pelo **GRAFO**.
Com isso ganha-se em tempo e produtividade. Também neste trabalho foi introduzido a possibilidade
de construção de algoritmos //passo a passo//. Esta funcionalidade fornece ao usuário a possibilidade
de interagir e depurar os algoritmos por ele construídos. 

== Histórico ==

O **GRAFO** surgiu em 2003 com uma idéia de //Murilo Vicente Goncalves da Silva//
de construir um programa que facilitasse os testes de algoritmos. A primeira versão
do programa possuía uma interface OpenGL e alguns poucos algoritmos nativos.
 
Algum tempo depois a idéia foi encampada por //Oliver Matias van Kaick//. Nesta época o //Murilo Vicente//
e o //Oliver Matias// eram do PET (Programa de Educação Tutorial) do curso de Ciência da computação da
UFPR (Universidade Federal do Paraná). A dedicação dos dois somadas a tutoria e
experiência do professor //André Luiz Pires Guedes// permiti-os a construção de toda base
que existe atualmente: Interface GTK e OpenGL, comunicação com o GraphViz, 
utilização de plugins, diferentes layouts para desenho de //grafos//, rótulos e pesos
em vértices e arestas, entre outros.

Em 2008, motivado por esse trabalho e junto com o professor //André Guedes// decidimos
colocar o **GRAFO** de novo em ação realizando algumas manutenções e implementando
as estruturas que possibilitassem a execução de algoritmos //Passo a Passo//.
Entretanto as primeiras investigações sobre o **GRAFO** abriram outras possibilidades
até então não exploradas que se refletem na parte de documentação que também está
sendo coberta por este trabalho.

== Organização deste trabalho ==

O que veremos nos próximos capítulos dará ao leitor 
uma noção de teoria de grafos, um detalhamento da interface e funcionalidades e
um //HowTo - Como Fazer// para construir plugins e implementar algoritmos //passo a passo//.
Além disso esta documentação serve como ponto de referência para futuras manutenção e ou implementações
nas funcionalidades do **GRAFO**.

Este trabalho está organizado em 7 capítulos:

- Introdução

Este capítulo

- Conceitos

Os conceitos introduzem um pouco de teoria de grafos ao leitor com o intuito de contextualizá-lo
em nomenclaturas e conceitos para que melhor consiga utilizar os recursos do **GRAFO**.

- Interface

O capítulo de interface detalha todas as opções, configurações, menus, barra de ferramentas e recursos existentes no **GRAFO**.

- Plugins

O capítulo de plugins mostra através de exemplos práticos e evolutivos como construir plugins e como faze-los interagir com 
a interface do **GRAFO**.

- Passo a Passo

Complementando a construção de plugins o capítulo de //passo a passo// detalha como o
usuário pode tirar proveito deste novo recurso.

- Considerações finais

Este capítulo detalha o que foi realizado por este trabalho e expõem algumas idéias na intenção de convidar ao leitor a novas possibilidades de
implementações e/ou manutenções.



