Diagrama Nassi-Shneiderman

(Redirigido desde «Chapin»)

En programación de computadores un diagrama Nassi-Shneiderman (o NSD por sus siglas en inglés), también conocido como diagrama de Chapin[1][2]​ es una representación gráfica que muestra el diseño de un programa estructurado.[3]

Ejemplo de un diagrama Nassi-Shneiderman.

Fue desarrollado en 1972 por Isaac Nassi y Ben Shneiderman. Este diagrama también es conocido como estructograma, ya que sirve para representar la estructura de los programas. Combina la descripción textual del pseudocódigo con la representación gráfica del diagrama de flujo.

Descripción

editar

Basado en un diseño top-down (de lo más complejo a lo más simple), el problema que se debe resolver se divide en subproblemas cada vez más pequeños —y simples— hasta que solo queden instrucciones simples y construcciones para el control de flujo. El diagrama Nassi-Shneiderman refleja la descomposición del problema en una forma simple usando cajas anidadas para representar cada uno de los subproblemas. Para mantener una consistencia con los fundamentos de la programación estructurada, los diagramas Nassi-Shneiderman no tienen representación para las instrucciones GOTO.

Los diagramas Nassi-Shneiderman se utilizan muy raramente en las tareas de programación analítica. Su nivel de abstracción es muy cercano al código de la programación estructurada y ciertas modificaciones requieren que se redibuje todo el diagrama.[4]

Los diagramas Nassi-Shneiderman son (la mayoría de las veces) isomórficos con los diagramas de flujo. Todo lo que se puede representar con un diagrama Nassi-Shneiderman se puede representar con un diagrama de flujo. Las únicas excepciones se dan en las instrucciones GOTO, break y continue.

Tipos de diagramas

editar

Bloques de procesos El bloque de proceso representa el paso más simple y no requiere ningún análisis específico. Cuando un bloque de proceso es encontrado, la acción dentro del bloque se realiza, y pasamos directamente al siguiente bloque.

 
Process blocks

Bloques ramificados hay dos tipos de estos bloques. El primero y más sencillo de ellos es el bloque verdadero-falso el cual ofrece al programa dos caminos para tomar, dependiendo de si una determinada condición ha sido especificada. Estos bloques pueden ser usados como bucles que detienen el programa hasta que una determinada condición se cumpla.

 
True/False branching blocks

El segundo tipo es un bloque ramificado múltiple. Este tipo de bloque es utilizado cuando se necesita la selección de un caso en un programa . El bloque suele contener una pregunta. Además, el bloque le da al programa una cadena de oportunidades y es generalmente usado en las conjunciones con bloques de subprocesos para ahorrar espacio.

 
Multiple branching blocks

Bucles testeadores: este bloque permite al programa repetir un bloque o un conjunto de bloques hasta que una determinada condición se haya cumplido.

Hay dos tipos de estos bloques: de testeo inicial y testeo final. La única diferencia entre los dos es el orden en el cual se completan los pasos involucrados en el proceso. En los de la primera situación, cuando el programa encuentra el bloque, testea si la condición necesaria se cumple, si no, se repite el bucle. El test se repite hasta que se cumpla dicha condición. En el nivel que se cumpla la condición, el programa detiene la ejecución del bucle y pasa a analizar los bloques del siguiente nivel.

 
Test first loop block

Los de testeo final operan al revés.

 
Test last loop block

Una expresión concurrente puede ser dibujada así:[5]


 
parallel processing

Referencias

editar
  1. Molina Marco, A.; Letelier Torres, P.; Sánchez Palma, P.; Sánchez Díaz, J. (1997). «Métodos para especificación de módulos». Metodología y tecnología de la programación. Valencia: Universidad Politécnica de Valencia. p. 50. ISBN 8477215197. Consultado el 26 de agosto de 2013. 
  2. Eslava Muñoz, V.J. (2012). «Diseño de algoritmos». Aprendiendo a programar paso a paso con C. Bubok Publishing. p. 42. ISBN 9788468610610. Consultado el 26 de agosto de 2013. 
  3. Hans-Georg Fill (2009). Visualisation for Semantic Information Systems. p.32
  4. Deutsches Institut für Normung e. V. (DIN): DIN 66261: Informationsverarbeitung; Sinnbilder für Struktogramme nach Nassi-Shneiderman.
  5. Weiss, Edmond H.: "Visualizing a Procedure with Nassi-Schneiderman Charts", Journal of Technical Writing and Communication, Vol. 20, Nr. 3 (1990): 237-54.

Enlaces externos

editar

Software

editar