Vous êtes sur la page 1sur 8

DIAGRAMA DE WARNIER ORR

METODOLOGIA DIAGRAMAS DE WARNIER/ORR

~1~

Los diagramas de Warnier/Orr (tambin conocidos como construccin lgica de programas/construccin lgica de sistemas) fueron desarrollados inicialmente en Francia por Jean Dominique Warnier y en los Estados Unidos por Kenneth Orr. Este mtodo ayuda al diseo de estructuras de programas identificando la salida y resultado del procedimiento, y entonces trabaja hacia atrs para determinar los pasos y combinaciones de entrada necesarios para producirlos. Los sencillos mtodos grficos usados en los diagramas de Warnier/Orr hacen evidentes los niveles en un sistema y ms 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 jerrquica ; 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 relacin 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 iteracin, seleccin de alternativas o el tratamiento de casos individuales. Tanto los diagramas de flujo estructurado y los mtodos del espaol estructurado logran eso tambin. 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 diseo de sistemas lgicos. Para desarrollar un diagrama de Warnier/Orr , el analista trabaja hacia atrs, empezando con la salida del sistema y usando un anlisis 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 inclusin por medio de una llave, se definen los pasos necesarios para producir la salida. A su vez, cada paso se define un poco ms. 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 fciles de entender. Aun as, son poderosas herramientas de diseo. Tienen la ventaja de mostrar agrupaciones de procesos y los datos que deben transferirse de nivel a nivel. Adems, la secuencia del trabajo hacia atrs garantiza que el sistema estar orientado hacia el resultado.

DIAGRAMA DE WARNIER ORR Ejemplo:

METODOLOGIA

~2~

DIAGRAMA DE WARNIER ORR

METODOLOGIA

~3~

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

Saludar invitado

Por la maana? (1,N) + Por la tarde? (1,N) + Por la noche? (1,N)

Decir Buenos das (1,N) Decir Buenas tardes (1,N) Decir Buenas noches (1,N)

Dar la bienvenida (1,N)

Coger el abrigo del invitado

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

Acompaar invitado al saln

Nota. + Se utiliza para disyuntivas

Se utiliza en el caso de concurrencia de sentencias

DIAGRAMA DE WARNIER ORR

METODOLOGIA

~4~

EJEMPLO . Para el ejemplo de Pi-Montecarlo cuyo cdigo pongo a continuacin, crear el diagrama de Warrier Orr
/* Importamos la clase externa Random para utilizarla luego. La * clase Random sirve para generar nmeros pseudoaleatorios. */ import java.util.Random; /** * La clase PiMontecarlo tan solo contiene una rutina para * estimar el nmero PI segn una variante del mtodo de * Montecarlo. * @author Curso_programador * */ public class PiMontecarlo { /** * El mtodo 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 nmero de veces que repetimos la operacin. Es * el nmero 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 nmeros pseudoaleatorios. */ Random gna = new Random(System.currentTimeMillis()); /* Repeticin de las operaciones 100000 veces. El * mtodo de Montecarlo se basa en repetir muchas veces * un resultado aleatorio, contando cuntas 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 nmeros pseudoaleatorios los produce el * objeto gna mediante su mtodo nextDouble(); son * valores con decimales comprendidos entre 0 y 1. * */ double x = gna.nextDouble(); double y = gna.nextDouble(); /* Hacemos el clculo de la raz 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 mtodo de Montecarlo. El criterio es que * la distancia d debe ser menor que 1, en cuyo

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 despus de contabilizar los * puntos, hacemos el clculo de la estimacin de PI.*/ double pi = 4.0 * dentro / cont; /* Imprimimos por pantalla el resultado obtenido. */ System.out.println(pi); } }

Inicializacin

Cont = 0 (1,N) Dentro = 0 (1,N)


Inicializar operador de nmeros pseudoaleatorios Semilla. Valor del reloj des sistema

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

Calcular pi

Disparar punto (100000)

Calcular coordenadas (1,N) d= + (1,N) +y2)

Punto dentro?? (1,N) Incrementar cont

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

Incrementar dentro

Pi=4*(dentro/cont) Clculo final Mostrar resultado pi

DIAGRAMA DE WARNIER ORR

METODOLOGIA

~6~

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

DIAGRAMA DE WARNIER ORR

METODOLOGIA

~7~

Insertar monedas (1*) Teclear artculo Seleccin Seleccin y cobro Ajustar cantidad de azcar (1.*) Saldo suficiente?? si + No Ms azcar + Menos azcar Mostrar importe

Preparacion= true

Colocar vaso Moler caf Caf Calentar agua Filtrar cafe Mquina de caf Preparacin Preparacin==true? Caf c/ leche + Preparar mezcla Moler caf Calentar agua Calentar leche Filtrar cafe Aadir leche Descafeinado Aadir agitador .

Desbloquear puerta Recogida Aviso acstico

Nota. En este diagrama se aaden algunos elementos como el del azcar y el descafeinado

DIAGRAMA DE WARNIER ORR

METODOLOGIA

~8~

2010-07-21 Estructura de un programa sencillo Estructura de datos Procesamiento de los datos + Generacin de los resultados

El punto de entrada: En Java mtodo main( ) En C/C++funcin main( ) EJEMPLO As para el caso del clculo de factores primos tendramos un Diagrama como el que sigue: Solicitar nmero esPrimo( ) Main ( ) FactoresPrimos( ) Mostrar resultados

Vous aimerez peut-être aussi