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
Mi
művelet volt, és a belőle kiinduló pont a a j. pontba vezetett, akkorUi
helyére írjuk az{Mi;pont = j;}
utasításokat. - Ha az i. pontban az
Fi
feltétel volt, és az igennel címkézett él a j., a nemmel címkézett él pedig a k. pontba vezetett, akkorUi
helyé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.