Folyamatábra és struktúradiagram kapcsolata
Folyamatábra és struktúradiagram¶
Az eddigiekben minden vezérlési szerkezetre megadtuk azt a folyamatábrát, amely megadta, hogy a vezérlési folyam információ hogyan adódik át egyik utasításról a másikra. A struktúradiagramban pedig megadtuk azt, hogy az adott feladat hogyan darabolható fel részproblémákra.
A két diagram az adott probléma megoldását két külön nézőpontból írja le, ugyanakkor be lehet bizonyítani, hogy egyenértékűek olyan szempontból, hogy minden algoritmus, amely szerkezeti ábrával leírható, az leírható folyamatábrával is, és fordítva.
Szerkezeti ábrához folyamatábra¶
Minden vezérlési szerkezetet meg tudtunk adni folyamatábrával is.
Ezek után viszont egy szerkezeti ábrát a hierarchia mentén át lehet írni folyamatábrává: amikor a szerkezeti ábrán egy P problémát valamilyen vezérlés szerint részproblémákra bontunk, akkor a folyamatábrán a P-hez tartozó egyetlen M műveletet helyére a vezérlési szerkezetnek megfelelő folyamatábrát kötjük be, az M bemenő éleit a részletező folyamatábra Start utáni első, azM kimenő éleit pedig a Stop előtti utolsó elemhez hozzákötve.
Mivel egy-egy eljárás szerkezeti ábrája megadható csupán a szekvenciális, egyszerű szelekciós és kezdőfeltételes ismétléses vezérlések használatával (ahogy azt korábban láttuk), elegendő lenne ehhez a háromhoz megadni a megfelelő folyamatábrát. Ezt pedig megtettük mindhárom esetben.
A szekvenciális vezérlés folyamatábrája:

A szelekciós vezérlés folyamatábrája:

Az ismétléses vezérlés folyamatábrája:

Folyamatábrához szerkezeti ábra¶
Megmutatjuk, hogy fordítva is igaz, tehát a folyamatábrával leírt algoritmusok megadhatók a megismert vezérlési módokat használva, vagyis készíthető hozzájuk szerkezeti ábra.
Legyen G egy folyamatábra (M, F) felett, amely pontjainak száma n. Azaz G egy olyan gráf, amely csomópontjait az M műveletei és az F feltételei alkotják.
Sorszámozzuk meg a gráf pontjait úgy, hogy a Start pont sorszáma 0, a Stop pont sorszáma n legyen legyen, és a Start pontból kivezető él az 1. pontba vezessen.
A pont legyen egy, a leírt algoritmusban nem használt új, egész típusú változó.
Tekintsük az alábbi C programot:
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Az Ui utasítás alakja legyen a következő!
- Ha az i. pontban a folyamatábrán egy
Miművelet volt, és a belőle kiinduló pont a a j. pontba vezetett, akkorUihelyére írjuk az{Mi;pont = j;}utasításokat. - Ha az i. pontban az
Fifeltétel volt, és az igennel címkézett él a j., a nemmel címkézett él pedig a k. pontba vezetett, akkorUihelyére azif (Fi§) { pont = j; } else { pont = k; }utasítás kerüljön.
Ezzel az átírással a G gráffal megadott algoritmussal ekvivalens kódot kapunk, amire felírható a megfelelő szerkezeti ábra.