Diagrama Nassi-Shneiderman
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]
![](http://up.wiki.x.io/wikipedia/commons/thumb/e/ef/Multiple_Branching.jpg/480px-Multiple_Branching.jpg)
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
editarBasado 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
editarBloques 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.
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.
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.
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.
Los de testeo final operan al revés.
Una expresión concurrente puede ser dibujada así:[5]
Referencias
editar- ↑ 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.
- ↑ 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.
- ↑ Hans-Georg Fill (2009). Visualisation for Semantic Information Systems. p.32
- ↑ Deutsches Institut für Normung e. V. (DIN): DIN 66261: Informationsverarbeitung; Sinnbilder für Struktogramme nach Nassi-Shneiderman.
- ↑ Weiss, Edmond H.: "Visualizing a Procedure with Nassi-Schneiderman Charts", Journal of Technical Writing and Communication, Vol. 20, Nr. 3 (1990): 237-54.
- Nassi, I.; Shneiderman, B.: Técnicas de diagramas de flujo para programación estructurada, SIGPLAN Notices XII, agosto de 1973.
Enlaces externos
editar- Esta obra contiene una traducción parcial derivada de «Nassi–Shneiderman diagram» de Wikipedia en inglés, concretamente de esta versión del 22 de marzo de 2017, publicada por sus editores bajo la Licencia de documentación libre de GNU y la Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional.
- Wikimedia Commons alberga una categoría multimedia sobre Diagrama Nassi-Shneiderman.
- A short history of structured flowcharts (Nassi-Shneiderman Diagrams), por Ben Shneiderman
Software
editar- Structorizer – Editor de diagramas Nassi-Shneiderman para Linux, Mac OS X & Microsoft Windows, distribuido bajo GNU General Public License
- Nessi – Editor e intérprete de diagramas Nassi-Shneiderman, multiplataforma (Java), distribuido bajo GNU General Public License
- PSeInt – Editor e intérprete de diagramas Nassi-Shneiderman desarrollado en ARGENTINA y uno de los más utilizados instituciones académicas. Distribuido bajo GNU General Public License