Mindennapi életünkben problémákkal, feladatokkal találkozunk, amiket meg kell oldanunk. A probléma kifejezés arra utal, hogy ezeknek a felvetéseknek még nincs megoldásuk.
Problémának tekinthető, ha kiégett a villanykörte a lakásban, de az is, ha fel kell sorolunk a tizennyolccal osztható számokat kétezerig. A második probléma bonyolultabbnak tűnhet, de mindkettőre alkotható egy lépéssorozat, amely végül a megoldást adja.
A lépések során végre kell hajtanunk valamit, ezért ezeket a lépéseket utasításoknak is hívják. Azt a véges számú lépésből álló utasítássorozat, amely megadja egy probléma megoldását, algoritmusnak nevezzük.
Az algoritmizálás során vesszük a kiindulópontot, a problémát, majd megkeressük a végső megoldást, az utolsó lépést. Például a probléma: kiégett a villanykörte a szobában, melynek megoldása után ismét ég a villany a szobában. Az algoritmus megtervezésekor tevékenységeinket, cselekedeteinket apró, tovább már nem bontható utasításokra, úgynevezett elemi lépésekre bontjuk, és ezekből állítjuk össze a lépéssorozatot.
A villanykörte algoritmusában a közbeeső elemi lépések a következők lehetnek: kicsavarjuk a kiégett villanykörtét, kidobjuk a szemetesbe, előveszünk egy új villanykörtét, becsavarjuk az új villanykörtét a foglalatba. Ezek a lépések alkotják az algoritmus vázát.
Az alaptevékenység lépésekké alakítása után a különböző problémaforrásokat kell sorra venni, például: mi történik, ha nincs új villanykörténk; mi történik, ha nem a villanykörte volt a probléma és továbbra sem ég a villany; vagy mi történik, ha az új égő nem jó a foglalatba. A problémaforrásokat megvizsgáljuk, kiértékeljük és beépítjük az algoritmusba feltételként vagy ismétlésként, az adott lépéstől függően.
Problémamegoldás
Az algoritmizálás során problémákat, feladatokat oldunk meg úgy, hogy a megoldáshoz vezető tevékenységet elemi lépésekre bontjuk és megvizsgáljuk, milyen problémaforrások merülhetnek föl. Az algoritmuskészítés során gyakran találkozhatunk olyan jellegű problémákkal, amelyre több jó megoldást is elő tudunk állítani.
Például legyen a problémánk az, hogy kifogyott a tollunk, de még szeretnénk írni. A megoldás az, hogy valami mással írunk. A probléma és a megoldása között azonban a lépések teljesen eltérőek lehetnek. Például: előveszünk egy másik tollat, és azzal írunk; a szomszédtól kérünk kölcsön; elmegyünk a boltba, és veszünk egy másik tollat; előveszünk egy ceruzát, és azzal írunk.
Mindegyik megoldás másféle algoritmust eredményez. Hogy melyik megoldást választjuk, azt az algoritmus tervezésénél kell eldöntenünk.
A lépéssorozatnak egyértelműnek kell lennie és az utasításoknak meghatározott sorrendben kell követniük egymást. Ha olyan algoritmussal találkozunk, amelyre több megoldást is találunk, akkor érdemes a legkevesebb vagy legegyszerűbb lépéssorozatból állót választanunk, mert a több lépés több hibalehetőséget rejt magában .dat jobb lenne!
Az algoritmizálás hibái
Az algoritmus megadja egy problémalépésekre bontott megoldását. Amikor saját magunk alkotunk algoritmusokat, akkor a probléma és a cél közötti lépések meghatározása a mi kezünkben van. Egy problémának több jó megoldása is lehet, de érdemes átgondolni, majd kiválasztani a legcélszerűbb megoldást.
Lehet a probléma az, hogy elfogyott fogkrémünk. A cél, hogy legyen fogkrémünk, vagyis venni kell egyet. Ehhez el kell mennünk a boltba. A lakásunktól a boltig többféle úton eljuthatunk. Mehetünk a legrövidebb úton, de a város megkerülésével is elérjük a célunkat, csak sokkal több lépést kell megtennünk. Ilyen esetben válasszuk a lehető legkevesebb lépésből álló megoldást, mert így kevesebb a hibalehetőség.
Másik probléma lehet, ha az algoritmust alkotó tevékenységet túl sok, feleslegesen elaprózott lépésre bontjuk.
Problémaként vegyük azt a sűrűn előforduló tevékenységet, hogy ki kell dobni a szemetet. Ezt néhány utasítással megoldhatjuk. Egy helytelen megközelítés: levegőt veszünk, megmozdítjuk a jobb lábunkat, kifújjuk a levegőt, letesszük a jobb lábunkat, stb.
Az algoritmus felépítésénél a felesleges lépéseket töröljük, az ismétléseket pedig ciklusba foglaljuk.
Az is problémát jelenthet, ha túl kevés lépésben akarunk megoldást találni. Ha a probléma az, hogy éhesek vagyunk, a megoldáshoz nem elégséges annyi, hogy eszünk, mert ez megoldatlan problémaforrásokat hagy az algoritmusunkban. Igyekezzünk mindig az adott problémához mérten az optimális számú lépéssorozatot meghatározni.