SlideShare una empresa de Scribd logo
1 de 3
Descargar para leer sin conexión
Listo
Total
public static int busqBin (int[] v,int ini,
int fin, int n)
{
if (ini==fin)
return v[ini] == n ? ini : -1;
else
{
int medio=(ini+fin)/2;
if (n<v[medio])
return busqBin(v,ini,medio-1,n);
else if (n>v[medio])
return busqBin(v,medio+1,fin,n);
else
return medio;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Código Pasos Frecuencia Contribución
ALAN – MiClase.java – busqBin (int[] v, int ini, int fin, int n) -> int
La ventana que se ve en la página anterior está compuesta de:
- Barra de título: contiene el nombre de la aplicación, ALAN (ALgorithm
ANalyzer), y el nombre de la clase cargada, en caso de que haya alguna; si no la
hay, sólo el nombre de la aplicación
- Barra de herramientas: habrá al menos dos grupos diferenciados, uno para el
manejo general del programa y otro para los botones que se utilicen cuando se
está trabajando con un algoritmo ya cargado
o Primer grupo de botones:
Cargar clase Java: tras pulsarlo, la aplicación abre un selector de
ficheros (*.java) y puede cargar la clase Java deseada
Seleccionar Método, la aplicación abre un cuadro de diálogo con
un desplegable* que contiene las cabeceras de los métodos que
contiene la clase cargada para que el usuario pueda elegir el que
desea analizar (* quizá sea mejor de otra forma, tienes libertad
aquí)
Configuración general, abre un cuadro de diálogo para la
configuración del programa (colores de código, opciones
varias…), de momento no lo implementes hasta que no esté bien
definido todo lo que tendrá, aunque puedes ir jugando con
selectores de color.
… podrían surgir otros botones a medida que avance el desarrollo
o Segundo grupo de botones
Ver/ocultar datos, abre un cuadro de diálogo que permite mostrar
u ocultar los datos de cada una de las columnas de análisis o el
total. El cuadro de diálogo ofrecerá las siguientes posiblidades:
• “Mostrar dato de celda activa” (celda con cursor)
• “Mostrar datos de columna Pasos”
• “Mostrar datos de columna Frecuencia”
• “Mostrar datos de columna Contribución”
• “Mostrar total”
Verificar: el usuario puede escribir en las celdas de la tabla de
profiling para insertar la que él cree que es la solución correcta;
tras pulsar el botón, se colorearán de verde o rojo las celdas co
contenido correcto o incorrecto
… podrían surgir otros botones a medida que avance el desarrollo
- Panel general: contiene el código del algoritmo y la tabla de profiling, que será
la vía para hacer llegar al usuario la información que pretende proporcionar el
programa. Hay una parte que es fija, que es la cabecera, mientras que el resto
forman parte de un panel de scroll vertical para permitir el caso de que haya
algoritmos largos. Dentro del panel hay cinco columnas: código (para el código
del método), línea (muestra el número de línea), pasos (que muestra los pasos
por instrucción), la frecuencia (número de veces que se ejecuta esa sentencia) y
contribución (que es la multiplicación de las dos columnas justo anteriores). Las
columnas tienen ancho variable, los bordes deben ser tiradores para permitir
- Panel de total: permanece en la parte inferior de la ventana, para mostrar, sólo
cuando el usuario quiera, el total del análisis.
- Barra de estado: contiene una barra de progreso y una etiqueta de texto para
indicar al usuario que la aplicación está haciendo algo (por ejemplo cargando y
analizando una clase).
Tras el arranque de la aplicación, la ventana se muestra con los paneles vacíos. El
usuario debe poder elegir cargar una clase Java (pulsando el primer botón de la barra de
herramientas) y, a continuación la aplicación debe analizar el contenido de la misma
para determinar:
- qué métodos hay (teniendo en cuenta su signatura completa)
- qué sentencias tiene cada método (estructuras de control de flujo, operaciones
aritméticas, asignaciones, bucles…)
El análisis se realiza transformando el código Java a un documento XML (te
proporciono un paquete de clases que hace esto). A continuación, la aplicación debe
cargar el documento XML recién generado para almacenar (de la forma que mejor
creas) toda la información necesaria para proceder al análisis de cada método. La carga
y manipulación del documento XML se realiza fácilmente con DOM y SAX, Java
proporciona librerías de DOM y SAX, yo te paso algún código de ejemplo. Facilita
mucho hacer así las cosas, es la razón por la cual se traduce desde Java a XML.
Una vez que la clase está cargada, el usuario debe poder elegir qué método quiere
visualizar en la pantalla para ver su análisis (pulsando el segundo botón de la clase de
herramientas). En la ventana nunca se visualiza la clase completa.
Esbozo de algunos paquetes que tendrá el código de la aplicación:
- Interfaz (ventanas, cuadros de diálogo…)
- Java a XML, JavaML en realidad (te lo doy)
- Procesamiento código JavaML para obtención de los datos específicos
- Complejidad (cálculo de complejidad desde datos proporcionados por paquete
anterior)

Más contenido relacionado

La actualidad más candente

Dce0 Fundamentos De Programacion1
Dce0 Fundamentos De Programacion1Dce0 Fundamentos De Programacion1
Dce0 Fundamentos De Programacion1Hector Gomez
 
Dce0 Fundamentos De Programacion
Dce0 Fundamentos De ProgramacionDce0 Fundamentos De Programacion
Dce0 Fundamentos De Programacionyave
 
Fundamentos deprogramacion
Fundamentos deprogramacionFundamentos deprogramacion
Fundamentos deprogramacionKevin Reaño
 
D5E-E0: Fundamentos de la programacion
D5E-E0: Fundamentos de la programacionD5E-E0: Fundamentos de la programacion
D5E-E0: Fundamentos de la programacionEllyster
 
Programación Algoritmos - Tipos de Datos y Estructuras de Control Básicas
Programación Algoritmos - Tipos de Datos y Estructuras de Control BásicasProgramación Algoritmos - Tipos de Datos y Estructuras de Control Básicas
Programación Algoritmos - Tipos de Datos y Estructuras de Control Básicasaveas01
 
Estructuras basicas
Estructuras basicasEstructuras basicas
Estructuras basicasjuandavid846
 
Funciones y subrutinas
Funciones y subrutinasFunciones y subrutinas
Funciones y subrutinasFelipe Rivera
 
Programación III (Java) - 06 Ventanas
Programación III (Java) - 06 VentanasProgramación III (Java) - 06 Ventanas
Programación III (Java) - 06 VentanasAndoni Eguíluz Morán
 
Diagramas de flujo DFD
Diagramas de flujo DFDDiagramas de flujo DFD
Diagramas de flujo DFDHanny
 
Semana2 3 introducción_labview
Semana2  3 introducción_labviewSemana2  3 introducción_labview
Semana2 3 introducción_labviewdagar71
 
Practica 2 Funciones de Comparación en LabView
Practica 2 Funciones de Comparación en LabViewPractica 2 Funciones de Comparación en LabView
Practica 2 Funciones de Comparación en LabViewSaul Olaf Loaiza Meléndez
 

La actualidad más candente (19)

Dce0 Fundamentos De Programacion1
Dce0 Fundamentos De Programacion1Dce0 Fundamentos De Programacion1
Dce0 Fundamentos De Programacion1
 
Dce0 Fundamentos De Programacion
Dce0 Fundamentos De ProgramacionDce0 Fundamentos De Programacion
Dce0 Fundamentos De Programacion
 
Fundamentos deprogramacion
Fundamentos deprogramacionFundamentos deprogramacion
Fundamentos deprogramacion
 
Fundamentos de Programacion
Fundamentos de ProgramacionFundamentos de Programacion
Fundamentos de Programacion
 
D5E-E0: Fundamentos de la programacion
D5E-E0: Fundamentos de la programacionD5E-E0: Fundamentos de la programacion
D5E-E0: Fundamentos de la programacion
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Programación Algoritmos - Tipos de Datos y Estructuras de Control Básicas
Programación Algoritmos - Tipos de Datos y Estructuras de Control BásicasProgramación Algoritmos - Tipos de Datos y Estructuras de Control Básicas
Programación Algoritmos - Tipos de Datos y Estructuras de Control Básicas
 
Estructuras basicas
Estructuras basicasEstructuras basicas
Estructuras basicas
 
016tutorlabview
016tutorlabview016tutorlabview
016tutorlabview
 
Cuestionario
Cuestionario Cuestionario
Cuestionario
 
Graficas matlab
Graficas matlabGraficas matlab
Graficas matlab
 
Tabla de la metodologia
Tabla de la metodologiaTabla de la metodologia
Tabla de la metodologia
 
Que es dfd
Que es dfdQue es dfd
Que es dfd
 
Funciones y subrutinas
Funciones y subrutinasFunciones y subrutinas
Funciones y subrutinas
 
Programación III (Java) - 06 Ventanas
Programación III (Java) - 06 VentanasProgramación III (Java) - 06 Ventanas
Programación III (Java) - 06 Ventanas
 
Diagramas de flujo DFD
Diagramas de flujo DFDDiagramas de flujo DFD
Diagramas de flujo DFD
 
Dfd
DfdDfd
Dfd
 
Semana2 3 introducción_labview
Semana2  3 introducción_labviewSemana2  3 introducción_labview
Semana2 3 introducción_labview
 
Practica 2 Funciones de Comparación en LabView
Practica 2 Funciones de Comparación en LabViewPractica 2 Funciones de Comparación en LabView
Practica 2 Funciones de Comparación en LabView
 

Destacado

Clasificacion de los enunciados
Clasificacion de los enunciadosClasificacion de los enunciados
Clasificacion de los enunciadosBANDERILLA
 
Charity_STANDARD_PRESENTATION
Charity_STANDARD_PRESENTATIONCharity_STANDARD_PRESENTATION
Charity_STANDARD_PRESENTATIONChristian Charity
 
Despacho aduaneiro e dicas importantes para economizar tempo e dinheiro
Despacho aduaneiro e dicas importantes para economizar tempo e dinheiroDespacho aduaneiro e dicas importantes para economizar tempo e dinheiro
Despacho aduaneiro e dicas importantes para economizar tempo e dinheiroROIT Consultoria e Contabilidade
 
Email Marketing 09
Email Marketing 09Email Marketing 09
Email Marketing 09Gene Sower
 
Avanceon Capabilities - Feb. 2015
Avanceon Capabilities - Feb. 2015Avanceon Capabilities - Feb. 2015
Avanceon Capabilities - Feb. 2015Ali Omer
 
Presentation_ANSI_SQL_Isolation_Levels
Presentation_ANSI_SQL_Isolation_LevelsPresentation_ANSI_SQL_Isolation_Levels
Presentation_ANSI_SQL_Isolation_LevelsRaees Afridi
 

Destacado (11)

Uxue
UxueUxue
Uxue
 
CB204 - INFOGRAPHIC
CB204 - INFOGRAPHICCB204 - INFOGRAPHIC
CB204 - INFOGRAPHIC
 
Clasificacion de los enunciados
Clasificacion de los enunciadosClasificacion de los enunciados
Clasificacion de los enunciados
 
Charity_STANDARD_PRESENTATION
Charity_STANDARD_PRESENTATIONCharity_STANDARD_PRESENTATION
Charity_STANDARD_PRESENTATION
 
1 River angina versus coronary angina
1 River angina versus coronary angina1 River angina versus coronary angina
1 River angina versus coronary angina
 
Despacho aduaneiro e dicas importantes para economizar tempo e dinheiro
Despacho aduaneiro e dicas importantes para economizar tempo e dinheiroDespacho aduaneiro e dicas importantes para economizar tempo e dinheiro
Despacho aduaneiro e dicas importantes para economizar tempo e dinheiro
 
Email Marketing 09
Email Marketing 09Email Marketing 09
Email Marketing 09
 
las app
las applas app
las app
 
Introducing
IntroducingIntroducing
Introducing
 
Avanceon Capabilities - Feb. 2015
Avanceon Capabilities - Feb. 2015Avanceon Capabilities - Feb. 2015
Avanceon Capabilities - Feb. 2015
 
Presentation_ANSI_SQL_Isolation_Levels
Presentation_ANSI_SQL_Isolation_LevelsPresentation_ANSI_SQL_Isolation_Levels
Presentation_ANSI_SQL_Isolation_Levels
 

Similar a Espec alan001

Programa
ProgramaPrograma
Programapau
 
Guia rapida-spss-windows-6704
Guia rapida-spss-windows-6704Guia rapida-spss-windows-6704
Guia rapida-spss-windows-6704educarte_07
 
diapositivas de matlab
diapositivas de matlabdiapositivas de matlab
diapositivas de matlabsarahy4625
 
diapositivas de matlab
diapositivas de matlabdiapositivas de matlab
diapositivas de matlabsarayenque
 
Manual de herramienta de arena unidad 4
Manual de herramienta de arena unidad 4Manual de herramienta de arena unidad 4
Manual de herramienta de arena unidad 4Sisney Gonzalez
 
Minimanual r commander
Minimanual r commanderMinimanual r commander
Minimanual r commanderJavito Ramirez
 
Manual de-herramienta-de-arena
Manual de-herramienta-de-arenaManual de-herramienta-de-arena
Manual de-herramienta-de-arenaBerenice Velazquez
 
Visual basic
Visual basicVisual basic
Visual basicjosser96
 
Solucion de problemas por medio de computadoras
Solucion de problemas por medio de computadorasSolucion de problemas por medio de computadoras
Solucion de problemas por medio de computadorasJorge Ñauñay
 
Luis fabio xammar manual statgraphics plus 5.1 ejemplos en castellano
Luis fabio xammar manual statgraphics plus 5.1 ejemplos en castellanoLuis fabio xammar manual statgraphics plus 5.1 ejemplos en castellano
Luis fabio xammar manual statgraphics plus 5.1 ejemplos en castellanodaesel
 
Presentación interfaz gráfica_matlab
Presentación interfaz gráfica_matlabPresentación interfaz gráfica_matlab
Presentación interfaz gráfica_matlabXavier Maita
 

Similar a Espec alan001 (20)

Programa
ProgramaPrograma
Programa
 
Guia rapida-spss-windows-6704
Guia rapida-spss-windows-6704Guia rapida-spss-windows-6704
Guia rapida-spss-windows-6704
 
diapositivas de matlab
diapositivas de matlabdiapositivas de matlab
diapositivas de matlab
 
diapositivas de matlab
diapositivas de matlabdiapositivas de matlab
diapositivas de matlab
 
Manual de herramienta de arena unidad 4
Manual de herramienta de arena unidad 4Manual de herramienta de arena unidad 4
Manual de herramienta de arena unidad 4
 
Parte 1
Parte 1Parte 1
Parte 1
 
Sophia leonzio tarea4
Sophia leonzio tarea4Sophia leonzio tarea4
Sophia leonzio tarea4
 
Minimanual r commander
Minimanual r commanderMinimanual r commander
Minimanual r commander
 
Manual de-herramienta-de-arena
Manual de-herramienta-de-arenaManual de-herramienta-de-arena
Manual de-herramienta-de-arena
 
Visual basic
Visual basicVisual basic
Visual basic
 
Solucion de problemas por medio de computadoras
Solucion de problemas por medio de computadorasSolucion de problemas por medio de computadoras
Solucion de problemas por medio de computadoras
 
Luis fabio xammar manual statgraphics plus 5.1 ejemplos en castellano
Luis fabio xammar manual statgraphics plus 5.1 ejemplos en castellanoLuis fabio xammar manual statgraphics plus 5.1 ejemplos en castellano
Luis fabio xammar manual statgraphics plus 5.1 ejemplos en castellano
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Guia de uso del software arena
Guia de uso del software arenaGuia de uso del software arena
Guia de uso del software arena
 
Algoritmos y programas ing civil
Algoritmos y programas ing civil Algoritmos y programas ing civil
Algoritmos y programas ing civil
 
andrea
andreaandrea
andrea
 
Algoritmo diagrama de_flujo
Algoritmo diagrama de_flujoAlgoritmo diagrama de_flujo
Algoritmo diagrama de_flujo
 
Secuencial
SecuencialSecuencial
Secuencial
 
Taw de accesibilidad web
Taw de accesibilidad webTaw de accesibilidad web
Taw de accesibilidad web
 
Presentación interfaz gráfica_matlab
Presentación interfaz gráfica_matlabPresentación interfaz gráfica_matlab
Presentación interfaz gráfica_matlab
 

Espec alan001

  • 1. Listo Total public static int busqBin (int[] v,int ini, int fin, int n) { if (ini==fin) return v[ini] == n ? ini : -1; else { int medio=(ini+fin)/2; if (n<v[medio]) return busqBin(v,ini,medio-1,n); else if (n>v[medio]) return busqBin(v,medio+1,fin,n); else return medio; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Código Pasos Frecuencia Contribución ALAN – MiClase.java – busqBin (int[] v, int ini, int fin, int n) -> int
  • 2. La ventana que se ve en la página anterior está compuesta de: - Barra de título: contiene el nombre de la aplicación, ALAN (ALgorithm ANalyzer), y el nombre de la clase cargada, en caso de que haya alguna; si no la hay, sólo el nombre de la aplicación - Barra de herramientas: habrá al menos dos grupos diferenciados, uno para el manejo general del programa y otro para los botones que se utilicen cuando se está trabajando con un algoritmo ya cargado o Primer grupo de botones: Cargar clase Java: tras pulsarlo, la aplicación abre un selector de ficheros (*.java) y puede cargar la clase Java deseada Seleccionar Método, la aplicación abre un cuadro de diálogo con un desplegable* que contiene las cabeceras de los métodos que contiene la clase cargada para que el usuario pueda elegir el que desea analizar (* quizá sea mejor de otra forma, tienes libertad aquí) Configuración general, abre un cuadro de diálogo para la configuración del programa (colores de código, opciones varias…), de momento no lo implementes hasta que no esté bien definido todo lo que tendrá, aunque puedes ir jugando con selectores de color. … podrían surgir otros botones a medida que avance el desarrollo o Segundo grupo de botones Ver/ocultar datos, abre un cuadro de diálogo que permite mostrar u ocultar los datos de cada una de las columnas de análisis o el total. El cuadro de diálogo ofrecerá las siguientes posiblidades: • “Mostrar dato de celda activa” (celda con cursor) • “Mostrar datos de columna Pasos” • “Mostrar datos de columna Frecuencia” • “Mostrar datos de columna Contribución” • “Mostrar total” Verificar: el usuario puede escribir en las celdas de la tabla de profiling para insertar la que él cree que es la solución correcta; tras pulsar el botón, se colorearán de verde o rojo las celdas co contenido correcto o incorrecto … podrían surgir otros botones a medida que avance el desarrollo - Panel general: contiene el código del algoritmo y la tabla de profiling, que será la vía para hacer llegar al usuario la información que pretende proporcionar el programa. Hay una parte que es fija, que es la cabecera, mientras que el resto forman parte de un panel de scroll vertical para permitir el caso de que haya algoritmos largos. Dentro del panel hay cinco columnas: código (para el código del método), línea (muestra el número de línea), pasos (que muestra los pasos por instrucción), la frecuencia (número de veces que se ejecuta esa sentencia) y contribución (que es la multiplicación de las dos columnas justo anteriores). Las columnas tienen ancho variable, los bordes deben ser tiradores para permitir - Panel de total: permanece en la parte inferior de la ventana, para mostrar, sólo cuando el usuario quiera, el total del análisis.
  • 3. - Barra de estado: contiene una barra de progreso y una etiqueta de texto para indicar al usuario que la aplicación está haciendo algo (por ejemplo cargando y analizando una clase). Tras el arranque de la aplicación, la ventana se muestra con los paneles vacíos. El usuario debe poder elegir cargar una clase Java (pulsando el primer botón de la barra de herramientas) y, a continuación la aplicación debe analizar el contenido de la misma para determinar: - qué métodos hay (teniendo en cuenta su signatura completa) - qué sentencias tiene cada método (estructuras de control de flujo, operaciones aritméticas, asignaciones, bucles…) El análisis se realiza transformando el código Java a un documento XML (te proporciono un paquete de clases que hace esto). A continuación, la aplicación debe cargar el documento XML recién generado para almacenar (de la forma que mejor creas) toda la información necesaria para proceder al análisis de cada método. La carga y manipulación del documento XML se realiza fácilmente con DOM y SAX, Java proporciona librerías de DOM y SAX, yo te paso algún código de ejemplo. Facilita mucho hacer así las cosas, es la razón por la cual se traduce desde Java a XML. Una vez que la clase está cargada, el usuario debe poder elegir qué método quiere visualizar en la pantalla para ver su análisis (pulsando el segundo botón de la clase de herramientas). En la ventana nunca se visualiza la clase completa. Esbozo de algunos paquetes que tendrá el código de la aplicación: - Interfaz (ventanas, cuadros de diálogo…) - Java a XML, JavaML en realidad (te lo doy) - Procesamiento código JavaML para obtención de los datos específicos - Complejidad (cálculo de complejidad desde datos proporcionados por paquete anterior)