# El manual de &rocs;

## Introducción

&rocs; es un Entorno de desarrollo integrado de teoría de grafos para todos aquellos interesados en el diseño y el análisis de algoritmos, entre ellos,

- los profesores universitarios que quieran demostrar los algoritmos a sus estudiantes,

- los estudiantes que quieran entender y ver como funciona un algoritmo

- y todos aquellos que tengan que diseñar algoritmos de grafos y necesiten una herramienta para la prueba de prototipos.

Para todos esos usuarios, &rocs; proporciona un editor de grafos fácil de utilizar para definir grafos, un potente motor de scripts de Qt para ejecutar algoritmos y varias herramientas de asistente para configurar grafos y estructuras de datos para hacer experimentos. Así que el flujo de trabajo habitual es escribir un algoritmo, crear un grafo y ver en tiempo real cómo funciona el algoritmo en el grafo.

Una captura de pantalla de &rocs;. Una captura de pantalla de &rocs;.

## La interfaz de usuario de &rocs;

### Elementos generales de la interfaz de usuario

La interfaz de usuario se divide en varias partes lógicas tal como se presentan en la captura de pantalla de más abajo.

Elementos de la interfaz gráfica de usuario de &rocs;. Elementos de la interfaz gráfica de usuario de &rocs;.

Barra de herramientas del editor visual de grafos

- para poder dibujar o modificar grafos en la pizarra el editor visual de grafos, primero es necesario seleccionar aquí una herramienta.

Editor visual de grafos

- Esta es la parte en la que se pueden dibujar los grafos. Al hacer clic con el botón derecho en la pizarra, en los elementos de grafo o en los elementos de grafo seleccionados se abre un menú de contexto que depende de donde haya hecho clic.

Propiedades de grafo

- Esto ofrece una lista completa de todos los grafos diferentes que hay actualmente en la pizarra del editor visual de grafos. Aquí se pueden hacer modificaciones, por ejemplo, en el nombre del grafo o en las propiedades visibles, como los nombres o los valores de los nodos, o bien definir colores predeterminados para los elementos de grafo.

Editor de scripts

- En este editor de texto se puede escribir algoritmos en scrips Qt (para nuestros propósitos, esto es prácticamente lo mismo que el JavaScript). Se puede trabajar en varios algoritmos al mismo tiempo abriendo o creando nuevas pestañas de script en el menú principal. Si los cambios actuales de una pestaña no están grabados, aparece un símbolo con un pequeño disco.

Depuración de errores y resultado del algoritmo

- Esta zona de texto muestra información sobre la depuración de errores, o bien el resultado del algoritmo, dependiendo de la selección de preferencias del resultado. Si el script da un error, automáticamente se selecciona el resultado de la depuración de errores. Además, el resultado de la depuración de errores también presenta mensajes sobre el resultado del programa.

Ejecución del script

- Esta zona controla la ejecución de los algoritmos. Se puede ejecutar el script que esté abierto actualmente en el editor de scripts del grafo de la pizarra del editor visual de grafos pulsando Ejecutar. Mientras se ejecuta el script, se puede detener la ejecución pulsando el botón Detener.

### Barras de herramientas

Hay diferentes barras de herramientas posibles para el editor visual de grafos que permiten acceder a las características con solo un clic. En las preferencias predeterminadas, se muestran las siguientes barras de herramientas:

- Barra de herramientas principal

- Barra de herramientas principal

#### Barra de herramientas principal

La Barra de herramientas principal se compone de las siguientes acciones. Al hacer clic en una acción, el puntero del ratón aplica dicha acción a la pizarra del editor visual de grafos:

- Mover: para seleccionar elementos, hay dos alternativas: bien pulsar en un espacio sin utilizar en la pizarra, mantener el ratón pulsado y dibujar un rectángulo que contenga nodos o aristas para seleccionar dichos elementos, o bien hacer clic directamente en un elemento sin seleccionar para seleccionar dicho elemento. Si se pulsa un elemento seleccionado o un conjunto de elementos seleccionados, respectivamente, se pueden mover dichos elementos manteniendo el ratón pulsado y moviéndolo. También se pueden mover los elementos seleccionados mediante las teclas de flecha.

- Añadir nodo: haga clic en cualquier posición en la pizarra del editor visual de grafos para crear un nuevo nodo que pertenezca al grafo seleccionado actualmente.

- Añadir arista: haga clic en un nodo, mantenga pulsado el ratón y dibuje una línea hacia el otro nodo al cual apuntará la arista o el puntero. Esta acción solo se podrá realizar correctamente si el grafo actual permite añadir dicha arista (por ejemplo, en un grafo no dirigido, no se pueden añadir varias aristas entre dos nodos).

- Borrar: haga clic en un elemento para borrarlo. Si borra un nodo, todas las aristas adyacentes también se borran.

- Escala: haga clic en la pizarra, mantenga pulsado el botón izquierdo del ratón y dibuje un rectángulo. La pizarra mostrará aumentada la zona seleccionada. Mediante la rueda del ratón también se podrá acercar o alejar la pizarra. Haciendo doble clic con el botón izquierdo del ratón se vuelve a la escala original.

La barra de herramientas principal. La barra de herramientas principal.

#### Barra de herramientas de alineación

Se puede añadir la Barra de herramientas de alineación adicional. Pulsar una acción en dicha barra de herramientas tiene un efecto directo sobre los nodos seleccionados actualmente:

- Alinear arriba: alinear los nodos de forma vertical según el nodo superior. Esto solo afecta a las posiciones verticales.

- Alinear al centro: alinea los nodos de forma vertical según el centro de las posiciones verticales de todos los nodos seleccionados. Solo afecta a las posiciones verticales.

- Alinear a la base: alinea los nodos de forma vertical según el nodo inferior. Esto solo afecta a las posiciones verticales.

- Alinear a la izquierda: alinea los nodos de forma horizontal según el nodo más a la izquierda. Esto solo afecta a las posiciones horizontales.

- Alinear al centro: alinea los nodos de forma horizontal según el nodo superior. Esto solo afecta a las posiciones horizontales.

- Alinear a la derecha: alinear los nodos de forma horizontal según el nodo más a la derecha. Esto solo afecta a las posiciones horizontales.

- Alinear en círculo: alinea los nodos en un círculo cuyo diámetro es la máxima distancia entre los nodos. Los nodos se colocan en la misma secuencia en la que se verían desde el centro de gravedad de dichos nodos.

- Minimizar aristas cruzadas: aplica el algoritmo de Fruchterman-Reingold para minimizar (de forma aproximada) el número de aristas que se cruzan.

Barra de herramientas de alineación Barra de herramientas de alineación

### Propiedades de grafo

En el panel lateral de la izquierda, se encuentran las opciones para cada grafo abierto. Todas estas opciones son globales para cada grafo y se pueden modificar para cada nodo y arista usando los cuadros de diálogo «Propiedades del nodo» y «Propiedades de la arista».

- Nombre: este es el nombre que debe utilizar el algoritmos para acceder al grafo.

- Color de los datos se usa para los nodos creados recientemente; se puede modificar el color de todos los nodos actuales pulsando el botón Todos.

- Color del puntero

La última fila de opciones se compone de una serie de botones conmutables:

- Muestra nombres en: Datos o Punteros.

- Muestra valores en: Nodos o Aristas.

## Uso de &rocs;

Con frecuencia, el primer paso es crear un grafo con el editor visual de grafos.Esto se puede hacer de manera manual, añadiendo nodos y conectándolos, o bien utilizando uno de los algoritmos de asistente que se pueden encontrar enHerramientas Generar gráfico. También hay que utilizar las herramientas de ayuda de Herramientas Asignar valores para asignar valores iniciales a los nodos y aristas del grafo. Finalmente, es necesario dar un nombre al grafo. Dicho nombre será el identificador que se deberá utilizar para el motor de scripts.

### Creación de scripts

&rocs; utiliza un lenguaje de programación similar a JavaScript. Esto básicamente significa que la definición de variables y funciones y su uso se hacen exactamente igual que en JavaScript. Además, &rocs; proporciona un conjunto de funciones que permiten acceder a los grafos de la pizarra del editor visual de grafos y a sus elementos.

#### Acceso a un grafo

En la interfaz de scripts, se puede acceder a un grafo simplemente escribiendo su nombre y utilizándolo como objeto con una de las siguientes funciones. Para acceder a un nodo o a una arista hay que obtener un identificador desde el objeto grafo.

Objetos del grafo

-     // functions
           array list_nodes();
           array list_edges();
           node add_node(name);
           edge add_edge(from, to);
           node node_byname(QString& name);
           node begin_node();
           array end_nodes();

      // variables
           bool directed
           bool automate
           string name
           string nodeDefaultColor // in HEXA
           string edgeDefaultColor  // in HEXA

Objetos de nodo

-     // functions
           array adj_nodes();
           array adj_edges();
           array input_edges();
           array output_edges();
           array loop_edges();
           array connected_edges(Node *n);
           void self_remove();

      // variables
          double x
          double y
          double width
          string value
          string name
          string color  // in HEXA
          bool begin
          bool end

Objetos de arista

-     string color ( em hexa )
          string value
          string name
          double width
          string style ( dot, dash, dash dot, solid )

          node start();
          node  end();

          void self_remove();

#### Algoritmos de grafo

En ocasiones, esto resulta útil si se pueden utilizar funciones para tareas habituales, como calcular la distancia más corta entre dos nodos. Actualmente, se admiten los siguientes algoritmos, los cuales se pueden invocar desde el motor de scripts con nodos del mismo grafo.

Cálculo del camino más corto

- Calcula el camino más corto entre los nodos inicio y fin. Ambos nodos deben ser del mismo grafo. Este cálculo tiene en cuenta si el grafo es dirigido o no dirigido.

      	array dijkstra_shortest_path Node* start Node* end

### Ejemplo

Aquí tiene un escript sencillo que determina el color de los 4 primeros nodos en el primer grafo:

    /* Un ejemplo sencillo que determina el color de los 4 primeros nodos en el primer grafo: */

    var colors = new Array("red", "green", "blue", "yellow");

    /* graphs is an array of graphs, you can access a graph by its index in the
    array or by its name, so if the first graph's name is Untitled0, the following
    sentence are right  */
    var list1= graphs[0].list_nodes(); //  1st form.
    var list2=Untitled0.list_nodes();              // 2nd form

     for ( var i = 0; i < colors.length; i++){
            if (i
    > list2.length) break;
            list2[i].color = colors[i]
     }

### Importar y exportar

Actualmente, &rocs; admite la importación y la exportación de los siguientes formatos de archivo:

- Archivos DOT, también conocidos como archivos Graphviz.

- Archivos GML

- Archivos de texto sin formato.

Actualmente, para la mayoría de dichos tipos de archivo, solo se importan unos cuantos valores. Los valores importados incluyen los nodos y sus correspondientes conexiones, los nombres de todos los elementos, los valores también coordenadas, si se proporcionan.

## Créditos y licencia

&rocs;

Copyright del programa:

- Copyright 2008 Ugo Sangiori (ugorox EN gmail.com)

- Copyright 2009 Tomaz Canabrava (tcanabrava en kde punto org).

- Copyright 2008-2011 Wagner Reck (wagner.reck EN gmail.com)

- Copyright 2011 Andreas Cord-Landwehr (cordlandwehr EN googlemail.com)

Copyright de la documentación:

- Copyright de la documentación 2009 &Anne-Marie.Mahfouf; &Anne-Marie.Mahfouf.mail;

- Copyright de la documentación 2009 Tomaz Canabrava (tcanabrava en kde punto org).

- Copyright de la documentación 2011 Andreas Cord-Landwehr (cordlandwehr EN googlemail.com)

Traducido por Leticia Martín Hernández leticia.martin@gmail.com.

Traducido por Rocío Gallegotraducciones@rociogallego.com .

&underFDL; &underGPL;

## Instalación

### Cómo obtener &rocs;

&install.intro.documentation;

### Compilación e instalación

&install.compile.documentation;
&documentation.index;