A Nassi- Shneiderman diagram a Ben Schneiderman és Isaac Nassi amerikai végzős hallgatók által 1972 -ben kifejlesztett strukturált algoritmusok és programok grafikus ábrázolása .
Mivel a strukturált programozás nem használ feltétel nélküli ugrásokat , Ben Schneiderman úgy döntött, hogy a folyamatábrákban használt nyilak nem szükségesek strukturált algoritmusok írásához. Miután a főbb irányítási struktúrák (szekvenciák, ágak és ciklusok ) különböző ábrázolási módokat talált ki, Isaac Nussey-vel együtt részletesen kidolgozta az ötletét. Együtt írták meg a "Flowchart Technique for Structured Programming" című cikket, amely a SIGPLAN Notices tudományos folyóiratban jelent meg 1973 augusztusában.
A Nassi-Schneiderman diagramok széles körben elterjedtek néhány országban, különösen Németországban , ahol a Német Szabványügyi Intézet hivatalos szabványt is kidolgozott számukra : DIN 66261.
A Nassi-Schneiderman diagramok számos előnnyel rendelkeznek a folyamatábrákhoz képest a strukturált algoritmusok és programok fejlesztésében:
A Nassi-Schneiderman diagram minden eleme téglalap alakú, és csak belső tartalmukban különbözik egymástól.
A végrehajtandó műveletet (beleértve a nyelvi parancsot egy programban vagy egy részfeladatot egy algoritmusban) a Nassi-Schneiderman diagramok téglalapként ábrázolják, amelybe a művelet (parancs) jelölése vagy a részfeladat megfogalmazása van írva.
Példa egy részfeladat bejegyzésre:
Keresse meg a legkisebb elemet a tömbben |
Példa egy végrehajtható parancs rögzítésére (a program Pascal nyelven írásakor ):
writeln('Szia világ!') |
Egy szekvenciális végrehajtási struktúra írásakor az elemek egymás után függőlegesen rajzolódnak ki. Ebben az esetben a sorozat minden elemének azonos szélességűnek kell lennie - ennek köszönhetően a teljes sorozat téglalap alakú is. Például:
Nyissa meg a fájlt olvasásra |
Olvassa el a fájl első sorát |
Nyomtassa ki a kiolvasott értéket a képernyőre |
fájl bezárása |
Ugyanennek az algoritmusnak a felírása Nassi-Schneiderman diagram formájában a Pascal nyelv használatával :
reset(f) |
readln(f, str) |
writeln(str) |
bezár (f) |
Egy egyszerű ág szerkezete egy vízszintes vonallal két részre osztott téglalapként látható. Felül az ág fejléce, alul pedig két elágazás található, amelyeket függőleges sáv választ el egymástól. A fejléc két vonalat rajzol a felső sarkoktól az ágakat elválasztó vonal elejéig. A felül kapott háromszögbe az elágazási feltételt írjuk, az ágak feletti két alsó háromszögbe pedig az ezeknek az ágaknak megfelelő feltételértékeket írjuk alá, például „igaz” és „hamis”, ill. "igen és nem".
A feleletválasztós struktúra felépítése az egyszerű ág szerkezetéhez hasonlóan van ábrázolva, csak a főágat és a felette lévő háromszöget függőleges vonalak osztják sok részre. A kapcsoló kifejezés a felső háromszögbe, a megfelelő kapcsolóértékek az ágak fölé vannak írva.
Az elején feltétellel ismétlődő szerkezetet téglalapként rajzolunk meg, amelyen belül a jobb alsó részbe egy másik téglalapot rajzolunk. A belső téglalap fölé a ciklus címe, belül pedig a ciklus törzse van írva.
Példa egy ciklus írására előfeltétellel (ebben a példában a ciklus törzse két művelet sorozata):
Az előfeltételes huroktól csak annyiban tér el, hogy a belső téglalap a külső jobb felső részébe van berajzolva, alá pedig a címet írjuk.
Példa ciklus írására utófeltétellel (ebben a példában a ciklus törzse két művelet sorozata):
A belső téglalap a jobb oldalon van megrajzolva, és nem érinti a külső téglalap tetejét és alját. A hurokfeltétel felül van írva.