02. Programokban lévő vezérlési szerkezetek

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.