6.1. Feladat megoldása: algoritmus

iDevice ikon

A program valamilyen feladat végrehajtására szolgál - a végrehajtásnak mindig van valamilyen módja, menete: ezt nevezzük a feladat megoldási algoritmusának. Az algoritmus mindig logikai szintű megoldást ír le, vagyis nem kötődik a végrehajtó személyéhez - az lehet ember is, gép is (az már más kérdés, hogy melyik milyen sebességgel, pontossággal végezné el a feladatot).

Példa

Amikor a matematikában feladatként jelentkezett a másodfokú egyenletek megoldása, megalkották az ismert képletet:

Hogyan állapítjuk meg ennek segítségével a gyökök értékét? A megoldás ugyanis nem csak a képlet automatikus alkalmazását jelenti - több buktató is felmerülhet. Ezek elkerülése érdekében, a feladatmegoldás általános szabályai szerint, először elemezzük a szituációt, vagyis:

  1. Az a együttható nem 0? Mert ha igen, akkor nem másodfokú az egyenlet, és nem alkalmazzuk a képletet.
  2. A gyökjel alatti nem negatív? Mert ha igen, nincs valós megoldás. Ha nem negatív, akkor 0? Ha igen, akkor módosított képletet fogunk használni, és a két gyök értéke megegyezik:

Mivel a feladat a gyökök értékének megállapítása, ezért a tetszőleges, másodfokúnak mondott egyenlet megoldásának menete - vagyis algoritmusa - az alábbiak szerint alakul:

 

Ha a fenti algoritmus-leírást odaadjuk bárkinek, aki tud írni-olvasni és számolni (alapvető technikai ismeretek), és mellékeljük hozzá az a, b és c értékeket, akkor az algoritmust követve meg fogja mondani az eredményt - függetlenül attól, hogy tudja-e egyáltalán, hogy mit csinál, vagy nem. Ez a lényeg: az ilyen algoritmust ugyanis ember és gép egyaránt végrehajthatja - utóbbi azért, mert az algoritmus úgy van megfogalmazva, hogy végrehajtójának nem kell intuícióval, gondolkodási képességgel rendelkeznie (ellentétben az algoritmus írójával!).

Vegyük észre azt is, hogy a fenti algoritmus nem csak a képlet alkalmazásából áll: adatokat definiáltunk (a, b és c); a körülmények, adatok elemzéséből adódó következtetéseket feltételek formájában alkalmazva leírtunk egy folyamatot, amely adatok vizsgálatából, a vizsgálat eredményétől függő elágazásokból és számításokból tevődik össze. Az algoritmus kialakításánál semmit nem bízunk sem a véletlenre (az adatok számok-e?), sem a végrehajtó értelmére, belátására (a = 0?).