A vezérlési szerkezetek olyan konstrukicók, amelyek megmondják, hogy egy program utasításait milyen sorrendben kell végrehajtani. Négy féle vezérlési szerkezetet különböztetünk meg.
Szekvencia (sorozat)
ebben az esetben a program utasításait sorban, egymás után hajtjuk végre. Egy utasítás lehet utasítások egybefüggő, zárt sorozata is.
Ha egy utasítás valójában egy utasítás blokk, akkor a blokk tartalmát függvény vagy eljáráshívással máshol ki lehet bontani.
Szelekció (Elágazás)
Olyan vezérlési szerkezet, amely egy logikai feltétel hatására a program végrehajtása két vagy több irányra szétbomlik és a feltétel eredményétől függően különböző szekvenciát hajt végre a progra
Ha a feltétel eredménye igaz vagy hamis, akkor egy vagy két különböző szekvencia végrehajtása között dönt a program. Ilyenkor kétirányú elágazásról beszélünk.
Ha a feltétel eredményeinek összessége (eredményhalmaza) egymástól jól megkülönböztethető értékeket jelent, akkor több irányú elágazásról beszélünk. Ekkor a lehetséges eredményekhez hozzárendelünk szekvenciákat, amelyeket a program végrehajt, és ha a megjelölt eredmények egyike sem jön létre, akkor az alapértelmezett szekvenciát hajtjuk végre.
Iteráció (ciklus)
A ciklus olyan programszerkezet, amely egy szekvenciát ismétel.
A ciklusnak bizonyos utasítások sorozatát ismétli. A ciklus az alábbi részekből áll:
- Ciklus fej – A ciklusfejben határozzuk meg azokat a feltételeket, amelyek teljesülése esetén a program végrehajtja a ciklus magot.
- Ciklus mag – Az a szekvencia, amelyet a program ismételten végrehajt.
- ciklus vége - akkor jelöljük, hogyha a ciklus magja több utasításól áll
Ciklusok fajtái:
Elöltesztelő ciklus – a ciklusmag végrehajtását meghatározó feltétel a ciklusfejben van. A feltétel vizsgálata egyszer mindenképpen lezajlik. A ciklusfejbe a ciklus végrehajtásának a feltételét írjuk (a bentmaradás feltétele), vagyis ha a feltétel éppen igaz, akkor végrehajtjuk a ciklusmagot. Lehetséges olyan helyzet, hogy a program végrehajtása során a ciklus feltétele eleve hamis, ekkor a ciklus mag sohasem hajtódik végre.
Ciklus amíg (a feltétel igaz)
.....ciklus mag...
ciklus vége
Az alábbi példában a ciklus magban csak az i változó értékének a növelése van. A ciklusfej pedig a kiértékelésből áll csak.
i=0
ciklus amíg i<1000
i = i+1
ciklus vége
Hátultesztelő ciklus – a ciklusfej nem tartalmaz feltételt, a ciklusmag mindenképpen lefut egyszer, és a ciklusmag lefutása után vizsgáljuk meg a feltétel teljesülését. Itt általában szintén a bennmaradás feltételét írjuk le.
Ciklus
.....ciklus mag...
amíg (a feltétel igaz)
ciklus vége
Megszámlálásos ciklus – A ciklus fejben a ciklusmag ismétlésének számát határozzuk meg. Ez is elöltesztelő ciklus, tehát ha az ismétlések száma 0 lenne, akkor a ciklusmag nem fut le egyszer sem. Ebben a ciklus fajtában a ciklusváltozó a ciklus végén automatikusan változik +1- gyel. Ha más lépésközt akarunk, akkor azt oda kell írni, hogy mekkora lépésközzel változik. A lépésköz lehet negatív is!
Ciklus i=kezdőértéktől végértékig
.....ciklus mag...
ciklus vége
pl.
Ciklus i=0-tól 99-ig
.....ciklus mag...
ciklus vége
Érdekesség
Egyes ciklusokban lehet olyan feltételt állítani, hogy a ciklusmag végtelenszer fusson le. Ekkor végtelen ciklusról beszélünk. Az alábbi példában ilyet látunk:
i=0
Ciklus amíg i=i
i = i+1
ciklus vége
Feltétel nélküli vezérlés átadás (GOTO)
Ebben a szerkezetben az utasítások végrahajtási sorozata megszakad és a vezérlés a szerkezet által megadott helyen folytatódik.
A procedurális nyelvek kezdetén gyakran hasznlált, ma már tulajdonképpen meghaladott vezérlési szerkezet. Használatával áttekinthetetlen, nehezen érthető programokat lehet írni.