9.1. A szekvencia

iDevice ikon

A számítógép a program által tartalmazott utasításokat egymás után, a leírás sorrendjében hajtja végre, hacsak a programozó másképpen nem rendelkezik. Az utasítások lineáris sorrendje azonban nagyon leszűkíti a megoldható feladatok halmazát. Alapvető elvárás, hogy bizonyos adatok értékétől függően a végrehajtás a program más-más pontján folytatódhasson, és az is, hogy bizonyos programrészeket - szükség esetén más-más adatokkal - többször végrehajthassunk. 

Utasítás1
Utasítás2
Utasítás3
...
UtasításN
...

A vezérlés átadásának legegyszerűbb módjaként az első magas szintű nyelvekben a feltétel nélküli vezérlésátadó utasítást a GOTO utasítást alkalmazták, amelynek paramétereként megadtak egy hivatkozást arra az utasításra, ahol a végrehajtásnak folytatódnia kell. A paraméter az utasítás sorszáma, vagy szöveges azonosítója volt.

100 Utasítás1
Utasítás1
110 GOTO 200  
GOTO szamol
120 Utasítás3
Utasítás3
.... ....
200 UtasításN  
szamol:
210 Utasítás N+1   
UtasításN
....
....

A feltétel nélküli ugrások teljesen átláthatatlanná, kuszává tették a programot. A strukturált programozás elveinek kidolgozása éppen az ilyen zavaros programszerkezet kiküszöbölése volt. A strukturált programozás alaptételét Corrado Böhm és Giuseppe Jacopini olasz tudósok fogalmazták meg 1966-ban megjelent cikkükben: 

Minden kiszámítható függvény implementálható olyan programnyelven, amely az alprogramokat csak az alábbi módszer alkalmazásával kombinálja: 

  1. az alprogramokat egymás után hajtja végre (szekvencia)
  2. egy logikai változó értéke alapján dönti el, hogy két alprogram közül melyiket hajtsa végre (szelekció)
  3. egy alprogram végrehajtását addig ismétli, amíg egy logikai változó értéke igaz. (iteráció)

A szekvenciát, szelekciót és iterációt vezérlő szerkezetnek nevezzük. A vezérlő szerkezet határozza meg, hogy az algoritmusban leírt utasításokat a program milyen sorrendben hajtsa végre. 

A szekvencia utasítások egymásutánja.

 

 25. ábra Szekvencia


A szelekció (választás) olyan vezérlő szerkezet, amelyben egy kifejezésként megadott feltétel határozza meg, hogy a végrehajtás hol folytatódjon. Ha a feltétel logikai kifejezés, amelynek eredménye igaz vagy hamis, akkor egy- vagy kétirányú, egyébként többirányú elágazásról beszélünk.

26. ábra Egyirányú elágazás

 

27. ábra Kétirányú elágazás

 

Az iteráció vagy más néven ciklus olyan vezérlő szerkezet, amely egy szekvencia végrehajtását ismétli. A ciklus magját az ismételten végrehajtandó utasítások, egy szekvencia alkotja. Az ismétlések számát vagy egy feltétel teljesüléséhez kötjük, vagy előre rögzítjük. Az előbbi megoldásban iteratív, az utóbbiban taxatív ciklusról beszélünk.

 

Az iteratív ciklusokat további két csoportra osztjuk aszerint, hogy a feltétel teljesülését a program a ciklusmag előtt, vagy az után vizsgálja.

 

28. ábra Elöltesztelő ciklus

29. ábra Hátultesztelő ciklus

Elöltesztelő ciklus: a feltétel a ciklus elején van, vizsgálata a ciklusba való belépéskor megtörténik. Előfordulhat (ha belépéskor a feltétel hamis), hogy a program a ciklusmagot egyszer sem hajtja végre.

Hátultesztelő ciklus: a feltételt a ciklusmag után adjuk meg. A ciklusba való belépéskor a ciklusmag egyszer végrehajtódik, függetlenül attól, hogy a feltétel igaz, vagy hamis.