Nassi–Shneiderman-diagram
Ett Nassi–Shneiderman-diagram (NSD) i datorprogrammering är en grafisk designrepresentation för strukturerad programmering . Denna typ av diagram utvecklades 1972 av Isaac Nassi och Ben Shneiderman som båda var doktorander vid Stony Brook University . Dessa diagram kallas också structograms , eftersom de visar ett programs strukturer.
Översikt
Efter en top-down design reduceras problemet till mindre och mindre delproblem, tills endast enkla påståenden och kontrollflödeskonstruktioner återstår. Nassi–Shneiderman-diagram återspeglar denna uppifrån-och-ned-nedbrytning på ett enkelt sätt, med hjälp av kapslade rutor för att representera delproblem. I överensstämmelse med filosofin om strukturerad programmering har Nassi–Shneiderman-diagram ingen representation för en GOTO- sats.
Nassi–Shneiderman-diagram används endast sällan för formell programmering. Deras abstraktionsnivå ligger nära strukturerad programkod och ändringar kräver att hela diagrammet ritas om, men grafiska redaktörer tog bort den begränsningen. De förtydligar algoritmer och design på hög nivå, vilket gör dem användbara i undervisningen. De ingick i Microsoft Visio och dussintals andra programvaruverktyg, som den tyska EasyCODE.
I Tyskland standardiserades Nassi–Shneiderman-diagram 1985 som DIN 66261. De används fortfarande i tyska introduktioner till programmering, till exempel Böttcher och Kneißls introduktion till C, Baeumle-Courth och Schmidts introduktion till C och Kirchs introduktion till C#.
Nassi–Shneiderman-diagram kan också användas i teknisk skrivning .
Diagram
Processblock: Processblocket representerar de enklaste stegen och kräver ingen analys. När ett processblock påträffas utförs åtgärden inuti blocket och vi går vidare till nästa block.
Förgreningsblock: det finns två typer av förgreningsblock. Först är det enkla True/False eller Yes/No-grenblocket som erbjuder programmet två vägar att ta beroende på om ett villkor har uppfyllts eller inte. Dessa block kan användas som en loopprocedur som stoppar programmet från att fortsätta tills ett villkor har uppfyllts.
Den andra typen av grenblock är ett multipelgrenblock. Detta block används när ett urvalsfall behövs i ett program. Blocket innehåller vanligtvis en fråga eller ett val. Blocket förser programmet med en rad valmöjligheter och används ofta i samband med underprocessblock för att spara utrymme.
Testa loopar: detta block tillåter programmet att loopa en eller en uppsättning processer tills ett visst villkor är uppfyllt. Processblocken som täcks av varje slinga är underuppsättningar med en sidostång som sträcker sig ut från tillståndet.
Det finns två huvudtyper av testslingor, test först och test sista block. Den enda skillnaden mellan de två är i vilken ordning de involverade stegen slutförs. I den första testsituationen, när programmet stöter på blocket testar det för att se om villkoret är uppfyllt, sedan, om det inte är slutfört, blockeras processblocken och går sedan tillbaka. Testet utförs igen och, om villkoret fortfarande inte är uppfyllt, bearbetas det igen. Om villkoret i något skede är uppfyllt, hoppar programmet över processblocken och fortsätter till nästa block.
Det sista testblocket vänds helt enkelt om, processblocken slutförs innan testet utförs. Testets sista loop tillåter att processblocken utförs minst en gång före det första testet.
Parallellt utförande kan ritas så här:
Se även
Publikationer
- Nassi, I.; Shneiderman, B.: Flödesschematekniker för strukturerad programmering , SIGPLAN Notices XII, augusti 1973.
externa länkar
- En kort historia av strukturerade flödesdiagram (Nassi–Shneiderman Diagrams) , av Ben Shneiderman, utkast, 27 maj 2003.
- Nicholas Hebb: " Hur man skapar ett Nassi-Shneiderman-diagram i Excel " (inget datum).
- Jülich Supercomputing Center (JSC): " Generering av Nassi-Shneiderman-diagram under Unix med nassi ", 30 oktober 2012.
- Yoder, Cornelia M; Schrag, Marilyn L.: " Nassi-Shneiderman-diagram: ett alternativ till flödesscheman för design ". Proceedings, ACM SIGSOFT/BIGMETRICS Software and Assurance Workshop, november 1978.