Gyakorlati alapok

Algoritmusvezéreltség - eseményvezéreltség

 

Az előző, Ami már eddig is nagyon hiányzott: az adatbekérés című fejezet nagyon fontos mozzanatot vezetett be a programozásba: a felhasználó képes volt beavatkozni a program futásába. Kissé humorosan fogalmazva: ez volt az 1. alkalom, amikor a program kíváncsi volt a felhasználó véleményére. A vélemény kérése persze sokszor kényszer eredménye, hiszen a program olyan további, bemeneti adatokat vár, amelynek nincs birtokában.

 

A felhasználó beavatkozásának jellege szempontjából a programok 2 csoportba oszthatók:

Algoritmusvezéreltség

Ebbe a típusba tartozó programok algoritmusai szabályszerűen futnak, végrehajtva kiszabott feladatukat és ha szükséges, kérdeznek valamit a felhasználótól, ezután pedig futnak tovább, mint Forest Gump kocogásőrületének kellős közepén. Látható, hogy lényegében a felhasználó csakis akkor tud a program futásába beavatkozni, ha a program erre „engedélyt ad”, azaz ha a programozó által adatbekérés vagy beavatkozási pont lesz implementálva. A vezérlés ilyen módon teljesen algoritmikus, ellene a felhasználó igen keveset tehet, kivéve, ha lecsapja a biztosítékot, ami ugye nem egy elegáns programleállítás.

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Úgy is fogalmazhatunk: az algoritmus a főnök (közvetve valójában a programozó), a felhasználó csak a néha megkérdezett beosztott.

 

Eseményvezéreltség

Az eseményvezérelt programozással a későbbiekben, a grafikus felületek programozásánál fogunk találkozni, bár ha ezeket a sorokat képesek vagyunk elolvasni, akkor bizonyos, hogy számítógépünk (vagy mobileszközünk) operációs rendszerének indításával egyúttal már sok eseményvezérelt programot indítottuk be.

 

Vegyük például az MS Word szövegszerkesztő programot!

A program indítása után egy olyan jól ismert felhasználói felület áll fel...

 

www.informatika-programozas.hu - Word szövegszerkesztő

Forrás - Source: www.microsoft.com

 

...amely a felhasználó beavatkozásainak tucatjait engedi meg.

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

A beavatkozás mozzanatának talán legfontosabb tulajdonsága az, hogy ezt a felhasználó bármikor és bármelyik dedikált pontban megteheti. Ezáltal a program funkcionális működését már nem algoritmus, hanem maga a felhasználó irányítja. Úgy is fogalmazhatunk: a felhasználó a főnök, a sok algoritmus csak végrehajtja a felhasználó által kért eseményeket.

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Nyilvánvaló, hogy programozási feladattól függően néha az egyik, máskor a másik megoldásra van szükségünk.

 

Maradva a "klasszikus" szövegszerkesztő funkcionalitásnál, meglehetősen nehéz volna egy szövegszerkesztő programot algoritmusvezérelten megírni. De továbblépek és megkockáztatom a kijelentést, miszerint funkcionális értelmetlenség lenne. Talán éppen egy szövegszerkesztő program az, amely leginkább igényli a felhasználói szabadságot:

...és mindezt tetszőleges időben, sorrendtől függetlenül.

 

Ezzel párhuzamosan az is káoszba és így balesetbe fulladna, ha útkereszteződés jelzőlámpa-vezérlő algoritmusa...

 

www.informatika-programozas.hu

Forrás - Source: Google Play

 

...eseményvezérelten működne, hiszen akkor (az elvet szigorúan követve) minden érkező autó eseményt jelentene. Ha van tipikus algoritmusvezérelt program, akkor a jelzőlámpa-vezérlés az. A vezérlést teljes egészében és abszolút determináltan az algoritmus irányítja, a felhasználó nem, vagy csak nagyon korlátozottan képes működésébe beavatkozni. Ez utóbbi már az algoritmusvezéreltség "enyhén eseményvezérelt" változata: gondoljunk csak olyan útkereszteződésekre, ahol a gyalogos jelezheti átkelési szándékát, amely persze nem jelenti azt, hogy a megnyomás pillanatában minden azonnal pirosra fog váltani:

 

www.informatika-programozas.hu

 

Eseményvezérelt programokkal először majd a Gyakorlati alapok IV. - Végre ablakozunk! (AWT, Swing, JavaFX) című fejezetcsomagban fogunk találkozni.