Un diagrama de Nassi-Shneiderman (NSD) en programación de computadoras es una representación de diseño gráfico para programación estructurada . [1] Este tipo de diagrama fue desarrollado en 1972 por Isaac Nassi y Ben Shneiderman , ambos estudiantes graduados en la Universidad de Stony Brook . [2] Estos diagramas también se denominan estructogramas , [3] ya que muestran las estructuras de un programa.
Descripción general
Siguiendo un diseño de arriba hacia abajo , el problema en cuestión se reduce a subproblemas cada vez más pequeños, hasta que solo quedan declaraciones simples y construcciones de flujo de control . Los diagramas de Nassi-Shneiderman reflejan esta descomposición de arriba hacia abajo de una manera sencilla, utilizando cajas anidadas para representar subproblemas. De acuerdo con la filosofía de la programación estructurada, los diagramas de Nassi-Shneiderman no tienen representación para una declaración GOTO .
Los diagramas de Nassi-Shneiderman se utilizan raramente para la programación formal. Su nivel de abstracción está cerca del código de programa estructurado y las modificaciones requieren que se vuelva a dibujar todo el diagrama, pero los editores gráficos eliminaron esa limitación. Aclaran algoritmos y diseños de alto nivel, lo que los hace útiles en la enseñanza. Se incluyeron en Microsoft Visio y en docenas de otras herramientas de software, como el EasyCode alemán .
En Alemania, los diagramas de Nassi-Shneiderman se estandarizaron en 1985 como DIN 66261. [4] Todavía se utilizan en las introducciones alemanas a la programación, por ejemplo, la introducción de Böttcher y Kneißl a C, [5] la introducción de Baeumle-Courth y Schmidt a C [6 ] y la introducción de Kirch a C #. [7]
Los diagramas de Nassi-Shneiderman también se pueden utilizar en la redacción técnica . [8]
Diagramas
Bloques de proceso: el bloque de proceso representa el paso más simple y no requiere análisis. Cuando se encuentra un bloque de proceso, se realiza la acción dentro del bloque y pasamos al siguiente bloque.
Bloques de ramificación: existen dos tipos de bloques de ramificación. Primero está el bloque de ramificación simple Verdadero / Falso o Sí / No que ofrece al programa dos caminos a seguir dependiendo de si se ha cumplido o no una condición. Estos bloques se pueden utilizar como un procedimiento de bucle que impide que el programa continúe hasta que se cumpla una condición.
El segundo tipo de bloque de ramificación es un bloque de ramificación múltiple. Este bloque se usa cuando se necesita un caso seleccionado en un programa. El bloque generalmente contiene una pregunta o un caso seleccionado. El bloque proporciona al programa una serie de opciones y, a menudo, se utiliza junto con bloques de subproceso para ahorrar espacio.
Lazos de prueba: este bloque permite que el programa realice un ciclo de uno o un conjunto de procesos hasta que se cumpla una condición particular. Los bloques de proceso cubiertos por cada bucle son un subconjunto con una barra lateral que se extiende desde la condición.
Hay dos tipos principales de bucles de prueba, probar primero y probar los últimos bloques. La única diferencia entre los dos es el orden en que se completan los pasos involucrados. En la primera situación de prueba, cuando el programa encuentra el bloque, prueba para ver si se cumple la condición, luego, si no se completa, completa los bloques del proceso y luego vuelve a realizar un bucle. La prueba se vuelve a realizar y, si la condición aún no se cumple, se procesa nuevamente. Si en cualquier etapa se cumple la condición, el programa salta los bloques del proceso y continúa con el siguiente bloque.
El último bloque de prueba simplemente se invierte, los bloques de proceso se completan antes de realizar la prueba. El último ciclo de prueba permite que los bloques de proceso se realicen al menos una vez antes de la primera prueba.
La ejecución concurrente se puede dibujar así:
Ver también
Publicaciones
- Nassi, I .; Shneiderman, B .: Técnicas de diagrama de flujo para programación estructurada , SIGPLAN Notices XII, agosto de 1973.
Referencias
- ^ Hans-Georg Fill (2009). Visualización para sistemas de información semántica . p.32
- ^ Una breve historia de los diagramas de flujo estructurados (diagramas de Nassi-Shneiderman) . Borrador de Webdoc: 27 de mayo de 2003. ( Fuente )
- ^ Rolf Isermann (1988). Control automático: artículos seleccionados del congreso mundial trienal de la Federación Internacional de Control Automático: Múnich, República Federal de Alemania, 27 a 31 de julio de 1987, volumen 10; volumen 14 . p.89
- ^ Deutsches Institut für Normung e. V. (DIN): DIN 66261: Informationsverarbeitung; Sinnbilder für Struktogramme nach Nassi-Shneiderman .
- ^ Böttcher, Axel; Kneißl, Franz: Informatik für Ingenieure: Grundlagen und Programmierung en C . 3ª edición. München: Oldenbourg, 2012. ISBN 978-3-486-70527-0 . Ver especialmente el Capítulo 10: "Kontrollstrukturen" (flujo de control).
- ^ Baeumle-Courth, Peter; Schmidt, Torsten: Praktische Einführung in C . München: Oldenbourg, 2012. ISBN 978-3-486-70799-1 . Ver especialmente el Capítulo 6: "Kontrollstrukturen" (flujo de control).
- ↑ Kirch, Ulla: C # lernen und professionell anwenden . Heidelberg: mitp, 2009. ISBN 978-3-8266-5915-7 . Véase especialmente el capítulo 5: "Schleifen und Verzweigungen" (bucles y ramificaciones).
- ^ Weiss, Edmond H .: "Visualización de un procedimiento con gráficos de Nassi-Schneiderman", Revista de redacción técnica y comunicación , vol. 20, Nr. 3 (1990): 237-54.
enlaces externos
- Una breve historia de los diagramas de flujo estructurados (diagramas de Nassi-Shneiderman) , por Ben Shneiderman, borrador, 27 de mayo de 2003.
- Nicholas Hebb: " Cómo crear un diagrama Nassi-Shneiderman en Excel " (sin fecha).
- Jülich Supercomputing Center (JSC): " Generación de diagramas Nassi-Shneiderman en Unix con nassi ", 30 de octubre de 2012.
- Yoder, Cornelia M; Schrag, Marilyn L .: " Gráficos de Nassi-Shneiderman: una alternativa a los diagramas de flujo para el diseño ". Actas, ACM SIGSOFT / BIGMETRICS Software and Assurance Workshop , noviembre de 1978.