A mindennapi életünkben a környezetünkből érkező jeleket értelmezve problémákkal, feladatokkal találkozunk, amiket meg kell oldanunk.
Problémának tekinthető, ha éhesek vagyunk, fázunk, házi feladatot kell készítenünk, koszos edényeket látunk. Ezek a feladatok és megoldásuk természetesek számunkra; nem is kell nagyon végiggondolnunk, milyen lépések sorozatán kell végighaladnunk, hogy megoldjuk őket.
A probléma megszüntetéséhez, a kívánt eredményt eléréséhez különböző műveleteket végzünk, lépéseket hajtunk végre, feltételeket értékelünk ki, amelyek alapján döntünk a következő cselekvésünkről. A feladatok elemzésével meghatározzuk azt a művelet- vagy tevékenységsorozatot, amely a legkisebb erőfeszítéssel jár számunkra, és elvezet a kívánt eredményhez.
Egy feladat nagyon sokféleképpen megoldható. A cselekvéseink előtt mindig célszerű átgondolni a lehetséges megoldásokat és felmerülő problémaforrásokat. Ezt a folyamatot nevezzük tervezésnek.
Például, ha el kell jutnunk a város egy pontjára, megtervezzük az utunkat. Figyelembe vesszük, hogy melyik útvonal a legrövidebb, vannak-e útakadályok, milyen közlekedési eszközzel menjünk, milyen az időjárás. A felmerült problémákat kiértékeljük, és döntést hozunk.
Egy lépéssorozat kigondolásánál törekednünk kell a lehető legjobb megoldás megtalálására. Minél több lépésből áll egy tevékenység, annál tovább tart a megoldás, és nő a hibalehetőségek száma is.
Az algoritmus fogalma
Azt a folyamatot, amikor egy probléma megoldása érdekében meghatározott lépések sorozatát hajtjuk végre, algoritmizálásnak nevezzük.
Az algoritmus a legáltalánosabb értelemben tervszerűséget jelent. Ha egy elvégzendő cselekvéssorozatot lépésről lépésre átgondolunk, akkor algoritmust készítünk egy adott cél elérésére. A lépéseket egyesével, pontos szabályok szerint hajtjuk végre. Egy másik megfogalmazás szerint: egy algoritmusban megadjuk egy feladat véges számú lépésben végrehajtható megoldását. A feladat megoldásánál felmerülő ötleteinket utasításokká alakítjuk, melyek összessége algoritmust eredményez.
Az algoritmizálás során a tevékenységeinket apró elemi lépésekre bontjuk. Például arra a problémára, hogy éhesek vagyunk, nem elégséges megoldás, ha azt mondjuk, eszünk. Amíg az evésig eljutunk, több lépést kell átgondolnunk. Van-e ennivaló a lakásban, vagy főzni kell? Hol találunk ennivalót, ha van? Hogy jutunk oda? Ha többféle étel is van, mit szeretnénk enni? Van-e edény, amiből ehetünk? Hol van az edény? Összegezve, számos kérdés felmerülhet. A probléma megoldására lehetséges algoritmus: kimegyünk a konyhába, kinyitjuk a hűtőszekrényt, előveszünk egy tányért a szekrényből, kiszedjük az ételt a tányérba, szükség esetén megmelegítjük, leülünk a székre az asztalhoz és eszünk.
Az algoritmus elemei
Az algoritmusok különböző típusú lépésekből állnak. Először is meg kell határoznunk a problémát, a kezdőpontot és a célt, azaz a végpontot. Ezek az algoritmusunkat egységbe foglaló lépések.
Például: a probléma, hogy koszos a tányér, cél, hogy tiszta legyen. A tervezés során egyértelműen végrehajtható általános műveleteket határozunk meg, amelyek az előző lépést figyelembe véve megvalósíthatóak. Például: annak érdekében, hogy tiszta legyen a tányér, kinyitom a vízcsapot, mosogatószert öntök a szivacsra, elmosom a tányért.
A végrehajtható lépések megtervezése után át kell gondolni a felmerülő probléma- és hibalehetőségeket, majd meg kell határozni a lehetséges lépéseket abban az esetben, ha a problémát kiküszöböltük, és abban az esetben is, ha nem. Az ilyen lépéstípust feltételnek nevezzük. A feltételvizsgálatkor minden lehetséges megoldást figyelembe kell venni, és ha szükséges, új lépéseket kell beiktatni, vagy vissza kell térni egy előző lépéshez.
Például: a tányér elmosásához adottak-e a feltételek, van-e víz vagy mosogatószer. Ha van minden, akkor mosogathatunk, ha nincs mosogatószer, akkor le kell mennünk a boltba vásárolni, és csak utána mosogathatunk. Másik feltétel lehet, hogy a mosogatás végeztével tiszta lett-e a tányér. Ha igen, befejezzük a mosogatást, ha nem, akkor még egy kicsit dörzsölgetjük.
Egy probléma megoldásához algoritmust készíthetünk. Bármely, a hétköznapokban előforduló tevékenység felbontható olyan lépésekre, amit az algoritmusban használhatunk.
Egy tevékenység felbontásakor meghatározzuk azokat a lépéseket, amelyeket már nem bontunk tovább. Az ilyen lépéseket elemi lépéseknek nevezzük. Egy cselekvés vagy művelet nagyszámú elemi lépésre bontható, ezért a tervezésnél figyelnünk kell, hogy ne vesszünk el a részletekben. Az elemi lépéseknek egymás után kell következniük, és figyelembe kell venni, hogy az előtte álló lépés végrehajtása után megvalósíthatóak-e.
Például a levélírás problémája, folyamata is felbontható elemi lépésekre. Először is szükségünk van íróeszközre és papírra, ezután megírjuk a levelet. A levelet megírás után beletesszük a borítékra, lezárjuk, majd ezután megcímezzük.