A mindennapi életünkben, tevékenységeink során lépten-nyomon megoldandó feladatokkal, problémákkal találjuk szemben magunkat. Egy feladat megoldásának pontos leírását megadó véges számú lépések sorozata az algoritmus.
Amikor egy probléma megoldásához kezdünk, elsőként a célt kell meghatároznunk. Ha ez megvan, akkor megtervezzük a szükséges lépéseket, és megfogalmazzuk egy adott leíróeszköz segítségével. Ez a folyamat az algoritmuskészítés.
A probléma megoldásánál indulhatunk a problémától és a céltól is. A cél eléréséhez szükséges tevékenységeket meg kell határozni.
Amikor testvérünknek vagy barátunknak örömet szeretnénk szerezni a születésnapjára, kiindulhatunk abból, hogy készítjük vagy vásároljuk az ajándékot, és innen építjük fel az algoritmust. Úgy is gondolkodhatunk, hogy elképzeljük, minek örülne, és azt próbáljuk megvalósítani.
A bonyolultabb tevékenységek leírása hosszadalmas lehet, és sok hibalehetőséget rejt magában. Az áttekinthetőség érdekében a tevékenységeket kis részekre, eljárásokra bonthatjuk. A folyamatok tervezésénél célszerű átgondolni a lehetséges megoldásokat és felmerülő problémaforrásokat. Ezeket elemezzük, majd kiválasztjuk a legoptimálisabb megoldást.
Problémamegoldás
Egy probléma megoldásának pontos leírását megadó véges számú lépések sorozata az algoritmus. Az algoritmus jellemző tulajdonsága a végesség, amely azt jelenti, hogy a folyamat véges számú utasítással, azaz véges számú lépés végrehajtása után befejeződik vagy eredményt szolgáltat.
Az algoritmusnak ugyanakkor meg kell felelni általánosság tulajdonságának is, amely azt jelenti, hogy ne csak egy konkrét esetre legyen használható, hanem az összes azonos jellegű feladatra. Például két szám összeadásánál ne csak két előre megadott számra legyen értelmezhető a feladat, hanem tetszőleges számok esetén is eredményt adjon. Ilyenkor az algoritmus nem számokkal, hanem változókkal dolgozik. Ebben tárolódnak azok a számok, amelyekkel a műveleteket végezzük. A változót neve alapján azonosítjuk, értéke mindig változik.
Egyszerű algoritmusok esetén a nevek az ábécé betűi, például: a, b, c. Bonyolultabb, többváltozós algoritmusnál beszédesebb nevet adunk, amely utal a tartalmára, például: összeg, hányados. A változók különböző típusú adatot tárolhatnak, ennek értelmében megkülönböztetünk szám típust, szöveg típust és logikai típust. A változókkal csak olyan művelet végezhető, ami a bennük tárolt adattal is végrehajtható. Például, két változót nem oszthatunk el egymással, ha abban szöveges adat van.
Az algoritmus fontos elemei közzé tartoznak a bemeneti és a kimeneti adatok. Bemeneti adatok például az általunk megadott számok, amiket az algoritmus összead. Ilyenkor az értékadás folyamatán az üres változókat feltöltjük adattal. A változókkal műveleteket végzünk, majd kimeneti adatként megkapjuk az eredményt. Az algoritmus készítésekor biztosítanunk kell, hogy az adatok bevihetők legyenek, és az eredmény megjelenhessen. Ez az adatbevitel és az adatkivitel művelete.
Algoritmizálás
Egy adott probléma megszüntetéséhez, a kívánt eredmény 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, amely alapján döntünk a következő cselekvésünkről.
Az algoritmizálás során a tevékenységeinket apró elemi lépésekre bontjuk. Az algoritmusok különböző típusú lépésekből állnak. Először is meghatározzuk a problémát, vagyis a kezdőpontot és a célt, vagyis a végpontot. Ezek az algoritmust egységbe foglaló lépések. Ezek között 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.
Az esetlegesen felmerülő problémák kezelésére feltételeket iktatunk be, melyek kiértékelésével különböző irányokban folytatódhat az algoritmus. Egy tevékenység felbontásakor meghatározzuk azokat a lépéseket, amelyeket már nem bontunk tovább, ezek az elemi lépések. A többször egymás után végrehajtandó lépéseket nem adjuk meg többször ugyanabban a formában, helyette ismétlésbe foglaljuk.
Az algoritmus egyik jellemzője az egymásutániság, idegen szóval szekvencia. Ez azt jelenti, hogy az egyes lépéseknek meghatározott sorrendben kell egymás után következniük. Minden lépés után következnie kell egy másik lépésnek, kivéve az utolsót. Minden egyes lépésnek végrehajthatónak kell lennie és ezek sorozatát, úgy kell meghatározni, hogy bármely végrehajtott lépés után egyértelműen adódjon a következő. Egy folyamat lépésekre bontásakor nem lehet nyitott, eldöntetlen feltételeket hagyni, minden szóbajöhető lehetőséget végig kell gondolni. Ellenkező esetben nem kapunk megoldást a problémára. Például, ha egy kerékpáros kirándulást akarunk szervezni, hiába bontjuk le a túra részleteit lépésekre, ha nem vesszük számításba hogy leengedhet a kerék, és abban az esetben mit kell csinálni.
Egyértelműség
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. Egy adott problémára több jó algoritmust is lehet készíteni, ám törekedni kell arra, hogy a lehető legkevesebb lépésből oldjuk meg a feladatot, figyelembe véve a felmerülő problémaforrásokat.
Egy algoritmusnak meg kell felelni az egymásutániság kitételének. Ez azt jelenti, hogy minden lépést követnie kell egy másik lépésnek, kivéve az utolsót és ezek a lépések meghatározott sorrendben kövessék egymást.
Egyes problémák megoldására készített algoritmusokban, ha néhány lépést felcserélünk, vagy más lépésekkel helyettesítjük, a végeredmény akkor is ugyanaz lesz. Ezek a nem egyértelmű algoritmusok. Például az a problémánk, hogy kifogyott a tollunk, és feltétlenül le kell írnunk valamit. A megoldás az, hogy szerzünk egy tollat, ami ír. Ez történhet úgy, hogy elmegyünk és veszünk a boltban, kérhetünk kölcsön egyet, vagy előveszünk egy másikat, stb.
Egy nem egyértelmű folyamat lépésekre bontásakor nem lehet nyitott, eldöntetlen feltételeket hagyni. Nem lehet egy feltétel kiértékelését vagy a következő lépés meghatározását a végrehajtóra bízni, ezt az algoritmusban kell meghatározni.
Például az írásbeli házi feladat elkészítésére vonatkozó algoritmusban néhány lépés sorrendje felcserélhető a tervezés fázisában. A lépések: leülni az íróasztalhoz, elővenni a tolltartót, elővenni a füzetet, megírni a leckét. A két középső lépés felcserélhető, a végeredményt nem fogja befolyásolni, hogy melyiket hajtjuk végre hamarabb.