Web viewmain(String[] args) {/* La ... * método de Montecarlo se basa en repetir muchas veces...

12
DIAGRAMA DE WARNIER ORR METODOLOGIA ~ 1 ~ DIAGRAMAS DE WARNIER/ORR Los diagramas de Warnier/Orr (también conocidos como construcción lógica de programas/construcción lógica de sistemas) fueron desarrollados inicialmente en Francia por Jean Dominique Warnier y en los Estados Unidos por Kenneth Orr. Este método ayuda al diseño de estructuras de programas identificando la salida y resultado del procedimiento, y entonces trabaja hacia atrás para determinar los pasos y combinaciones de entrada necesarios para producirlos. Los sencillos métodos gráficos usados en los diagramas de Warnier/Orr hacen evidentes los niveles en un sistema y más claros los movimientos de los datos en dichos niveles. ELEMENTOS BASICOS Los diagramas de Warnier/Orr muestran los procesos y la secuencia en que se realizan. Cada proceso se define de una manera jerárquica ; es decir, consta de conjuntos de subprocesos que lo definen, en cada nivel, el proceso se muestra en una llave que agrupa a sus componentes. Puesto que un proceso puede tener muchos subprocesos distintos, un diagrama de Warnier/Orr usa un conjunto de llaves para mostrar cada nivel del sistema. Conjuntos: { Subconjuntos: Cardinalidad: (1,n) Condicionalidad: (0,1) Secuencia de acciones mutuamente excluyentes: + USO DE DIAGRAMAS DE WARNIER/ORR La capacidad de mostrar la relación entre procesos y pasos de un proceso no es exclusiva de los diagramas de Warnier/Orr, así como tampoco lo es el uso de la iteración, selección de alternativas o el tratamiento de casos individuales. Tanto los diagramas de flujo estructurado y los métodos del español estructurado logran eso también. Sin embargo, el enfoque que se usa para desarrollar las definiciones de un sistema por medio de estos diagramas es distinto y se adapta y se adaptan bien a los que se usan en el diseño de sistemas lógicos.

Transcript of Web viewmain(String[] args) {/* La ... * método de Montecarlo se basa en repetir muchas veces...

Page 1: Web viewmain(String[] args) {/* La ... * método de Montecarlo se basa en repetir muchas veces * un resultado aleatorio, contando cuántas de esas * veces es

DIAGRAMA DE WARNIER ORR METODOLOGIA ~ 1 ~

DIAGRAMAS DE WARNIER/ORR

Los diagramas de Warnier/Orr (también conocidos como construcción lógica de programas/construcción lógica de sistemas) fueron desarrollados inicialmente en Francia por Jean Dominique Warnier y en los Estados Unidos por Kenneth Orr. Este método ayuda al diseño de estructuras de programas identificando la salida y resultado del procedimiento, y entonces trabaja hacia atrás para determinar los pasos y combinaciones de entrada necesarios para producirlos. Los sencillos métodos gráficos usados en los diagramas de Warnier/Orr hacen evidentes los niveles en un sistema y más claros los movimientos de los datos en dichos niveles.

ELEMENTOS BASICOS

Los diagramas de Warnier/Orr muestran los procesos y la secuencia en que se realizan. Cada proceso se define de una manera jerárquica ; es decir, consta de conjuntos de subprocesos que lo definen, en cada nivel, el proceso se muestra en una llave que agrupa a sus componentes. Puesto que un proceso puede tener muchos subprocesos distintos, un diagrama de Warnier/Orr usa un conjunto de llaves para mostrar cada nivel del sistema.

Conjuntos: {Subconjuntos: Cardinalidad: (1,n)Condicionalidad: (0,1)Secuencia de acciones mutuamente excluyentes: +

USO DE DIAGRAMAS DE WARNIER/ORR

La capacidad de mostrar la relación entre procesos y pasos de un proceso no es exclusiva de los diagramas de Warnier/Orr, así como tampoco lo es el uso de la iteración, selección de alternativas o el tratamiento de casos individuales. Tanto los diagramas de flujo estructurado y los métodos del español estructurado logran eso también. Sin embargo, el enfoque que se usa para desarrollar las definiciones de un sistema por medio de estos diagramas es distinto y se adapta y se adaptan bien a los que se usan en el diseño de sistemas lógicos.

Para desarrollar un diagrama de Warnier/Orr , el analista trabaja hacia atrás, empezando con la salida del sistema y usando un análisis orientado hacia la salida. En el papel el desarrollo se mueve de izquierda a derecha. En primer lugar, se definen la salida o resultados esperados del procedimiento. En el nivel siguiente, mostrado mediante la inclusión por medio de una llave, se definen los pasos necesarios para producir la salida. A su vez, cada paso se define un poco más. Las llaves adicionales agrupan los procesos requeridos para producir el resultado en el siguiente nivel.

Los diagramas de Warnier/Orr ofrecen a los expertos en sistemas algunas ventajas distintivas. Son simples en apariencia y fáciles de entender. Aun así, son poderosas herramientas de diseño. Tienen la ventaja de mostrar agrupaciones de procesos y los datos que deben transferirse de nivel a nivel. Además, la secuencia del trabajo hacia atrás garantiza que el sistema estará orientado hacia el resultado.

Page 2: Web viewmain(String[] args) {/* La ... * método de Montecarlo se basa en repetir muchas veces * un resultado aleatorio, contando cuántas de esas * veces es

DIAGRAMA DE WARNIER ORR METODOLOGIA ~ 2 ~

Ejemplo:

Page 3: Web viewmain(String[] args) {/* La ... * método de Montecarlo se basa en repetir muchas veces * un resultado aleatorio, contando cuántas de esas * veces es

DIAGRAMA DE WARNIER ORR METODOLOGIA ~ 3 ~

Ejemplo de un robot encargado de dar la bienvenida a los invitados de una fiesta

Nota.

Se utiliza para disyuntivas

Se utiliza en el caso de concurrencia de sentencias

Dar la bienvenida(1,N)

Saludar invitado

Por la mañana?(1,N)

Decir “Buenos días”

Por la tarde?(1,N)

Decir “Buenas tardes”(1,N)

Por la noche?(1,N)

Decir “Buenas noches”(1,N)

Coger el abrigo del invitado Colgar el abrigo en el perchero

(1,N)

Ayudar al invitado a quitarse el abrigo(1,N)

Acompañar invitado al salón

+

+

+

+

+

Page 4: Web viewmain(String[] args) {/* La ... * método de Montecarlo se basa en repetir muchas veces * un resultado aleatorio, contando cuántas de esas * veces es

DIAGRAMA DE WARNIER ORR METODOLOGIA ~ 4 ~

EJEMPLO. Para el ejemplo de Pi-Montecarlo cuyo código pongo a continuación, crear el diagrama de Warrier Orr

/* Importamos la clase externa Random para utilizarla luego. La * clase Random sirve para generar números pseudoaleatorios. */import java.util.Random;

/** * La clase PiMontecarlo tan solo contiene una rutina para * estimar el número PI según una variante del método de * Montecarlo. * @author Curso_programador * */public class PiMontecarlo {

/** * El método main() sirve para poder ejecutar el programa; * es, por lo tanto, obligatorio ponerlo. * @param args No se utilizan. */public static void main(String[] args) {

/* La variable entera cont servirá para contabilizar * el número de veces que repetimos la operación. Es * el número de disparos que hacemos. */int cont;/* La variable dentro servirá para contabilizar aquellos * puntos que caigan dentro del cuadrante. */int dentro = 0;/* La variable gna es un objeto de la clase Random, que * nos permitirá generar números pseudoaleatorios. */Random gna = new Random(System.currentTimeMillis());

/* Repetición de las operaciones 100000 veces. El * método de Montecarlo se basa en repetir muchas veces * un resultado aleatorio, contando cuántas de esas * veces es favorable. */for (cont = 0; cont < 100000; cont++) {

/* Generamos dos valores pseudoaleatorios entre * 0 y 1. Deben ser valores con decimales, de modo * que escogemos el tipo double para sendas * variables. * Los números pseudoaleatorios los produce el * objeto gna mediante su método nextDouble(); son * valores con decimales comprendidos entre 0 y 1. * */double x = gna.nextDouble();double y = gna.nextDouble();

/* Hacemos el cálculo de la raíz cuadrada de la * suma de los cuadrados de x e y, que se * corresponde con la distancia del punto (x,y) al * origen de coordenadas. El resultado lo metemos * en la variable d, de tipo double. */double d = Math.sqrt(x*x + y*y);

/* Aquí decidimos si el resultado es favorable o no * para el método de Montecarlo. El criterio es que * la distancia d debe ser menor que 1, en cuyo

Page 5: Web viewmain(String[] args) {/* La ... * método de Montecarlo se basa en repetir muchas veces * un resultado aleatorio, contando cuántas de esas * veces es

DIAGRAMA DE WARNIER ORR METODOLOGIA ~ 5 ~

* caso se considera que el punto cayó dentro del * cuadrante. */if (d < 1.0) {

// Si cayó dentro del cuadrante, contabilizamos.

dentro++;}

}

/* Ya fuera del bucle y después de contabilizar los * puntos, hacemos el cálculo de la estimación de PI.*/double pi = 4.0 * dentro / cont;/* Imprimimos por pantalla el resultado obtenido. */System.out.println(pi);

}}

Calcularpi

Inicialización

Cont = 0(1,N)

Dentro = 0(1,N)Inicializar operador de números pseudoaleatorios

Semilla. Valor del reloj des sistema(1,N)

Disparar punto(100000) d= +√ ¿¿+y2)

(1,N)

Calcular coordenadas(1,N)

Cálculo final

+

X=random(0,1)(1,N)y=random(0,1)(1,N)

Punto dentro??(1,N)

d<=1(1,N)d>=1(1,N)

Incrementar dentro

Incrementar cont

Pi=4*(dentro/cont)

Mostrar resultado pi

Page 6: Web viewmain(String[] args) {/* La ... * método de Montecarlo se basa en repetir muchas veces * un resultado aleatorio, contando cuántas de esas * veces es

DIAGRAMA DE WARNIER ORR METODOLOGIA ~ 6 ~

EJEMPLO. Realizar el diagrama de Warnier Orr para una máquina de café (sencilla), como la vista en el Diagrama de actividad siguiente

Page 7: Web viewmain(String[] args) {/* La ... * método de Montecarlo se basa en repetir muchas veces * un resultado aleatorio, contando cuántas de esas * veces es

DIAGRAMA DE WARNIER ORR METODOLOGIA ~ 7 ~

Nota. En este diagrama se añaden algunos elementos como el del azúcar y el descafeinado

Máquina de café

Insertar monedas (1…*)

Teclear artículo

Selección y cobro

Preparación

Recogida

SelecciónSaldo suficiente??

si Preparacion= true

No Mostrar importeAjustar cantidad de azúcar(1….*)

Más azúcar

Menos azúcar

+

+

Preparación==true?

Colocar vaso

Preparar mezcla

Calentar agua

Moler café

Filtrar cafe

Calentar leche

Añadir leche

Añadir agitador

Café

Café c/ leche

Moler café

Calentar agua

Filtrar cafe

Desbloquear puerta

Aviso acústico

+

Descafeinado ………….

+

Page 8: Web viewmain(String[] args) {/* La ... * método de Montecarlo se basa en repetir muchas veces * un resultado aleatorio, contando cuántas de esas * veces es

DIAGRAMA DE WARNIER ORR METODOLOGIA ~ 8 ~

2010-07-21

El punto de entrada:

En Java método main( )

En C/C++función main( )

EJEMPLO Así para el caso del cálculo de factores primos tendríamos un Diagrama como el que sigue:

Estructura de un programa “sencillo”

Estructura de datos

Procesamiento de los datos

Generación de los resultados

Main ( )

Solicitar número

esPrimo( )

FactoresPrimos( )

Mostrar resultados

+