Segédlet 4.5.6. osztálynak - Programok & algoritmusok

Programok és algoritmusok

1. Mi az algoritmus?
Algoritmuson olyan módszert, utasítás(sorozato)t, részletes útmutatást, értünk, amely egy felmerült probléma megoldására alkalmas.
Algoritmussal az élet számos területén találkozhatunk, algoritmus pl. egy recept, vagy egy összeszerelési útmutató is.
A számítógépes programok is általában tartalmaznak algoritmusokat, ezekkel utasítják a gépet az adott feladat végrehajtására.

Bármilyen tevékenységünket, feladatunkat (Pl. főzés, az iskolába való eljutás, stb.) átgondolhatjuk úgy, hogy részekre bontjuk és a részeket egymáshoz kapcsoljuk. Fontos hogy milyen lépéseket végzünk és fontos a sorrend is. (Pl. ha busszal mész iskolába, el kell érned az indulást, felszállsz, jegyet veszel, leülsz, stb... Ezen lépések egyike sem kihagyható vagy felcserélhető.)

A számítógépes programok is így működnek, pl. a játékok, vagy az olyan komolyabb programok, mint a Comenius Logo, vagy a szövegszerkesztő.
Nézzünk erre egy nagyon egyszerű példát!
pl.
1. Kattintás a program ikonján
2. A program betöltése
3. Elindul a program (bejön pl. egy menü)
4. Foglalkozunk a programmal
5. Kilépés

Ezek a példák is mutatják, hogy minden lépés fontos, egyik sem kihagyható, vagy felcserélhető! Fontos megjegyezni, hogy minden program más, de lehetnek azonos részeik.

Nézzünk egy másik példát:

Tegyük fel, hogy én ezeket írom fel a táblára!


 

Ha ezt kérném, hogy állítsuk sorrendbe a táblára írt lépéseket, ez lenne a helyes megoldás:
1. indítsd el a rajzprogramot
2. készítsd el a rajzot!
3. mentsd el a munkát!
4. nyomtasd ki!
5. lépj ki!

Ha ez a sorrend megváltozna, nem tudnánk elvégezni a feladatot. Hiszen nem rajzolhatunk anélkül, hogy megnyitnánk a rajzprogramot, de nem is léphetünk ki valamiből, mielőtt megnyitottuk volna. Ez teljesen logikus.
A számítógépes programok is ugyanígy működnek. Fontos, hogy mi miután történik, és persze nem lehetnek a programba nem illő elemek. A programnak kell hogy legyen elje és vége, ép úgy mint a való életben. Képzeljétek el, hogy egy tanóra elején becsöngetnek, és kicsengetésig tart. Ezt azonban valaki elfelejti használni, így az örökkévalóságig tanulni fogunk... rossz lenne ugye? :)

A tennivalók, a tevékenységek leírását algoritmusnak nevezzük. A programok pedig algoritmusokból állnak.

2. Az algoritmus leírása
Az algoritmusban megfogalmazott lépéseket rögzíteni kell, hogy mindenki megérthesse. Két módszer is van, amivel egy algoritmust leírhatunk.
1. folyamatábra
2. szöveges leírás

Hozzunk egy-egy példát mindkettőre!
Kezdjük a szöveges leírással, hiszen az előző példái is majdnem ilyenek voltak.
A példánk legyen egy tanóra, mert azt mindenki ismeri.

Becsöngetés
    Jelentés
    Új anyag feldolgozása
    Gyakorlás
    Ismétlés-vázlat
Kicsengetés

Így néz ki egy szöveges módszerrel ábrázolt algoritmus. A kezdő és végpontot előbbre írjuk, a lépéseket pedig közéjük. Ezeket természetesen bővíthetjük, hiszen lépés lehet az, hogy a tanár a naplóba ír, vagy hogy feleltet.

Ennél a folyamatábra kicsit bonyolultabb, mert itt rajzolnunk kell!




 

Látható, hogy a kezdő- és végpontot be kell karikázni, a lépéseket, utasításokat pedik be kell keretezni. Ezeket össze kell kötni a logikai irányt mutató nyilakkal.










Ezek eddig egyszerűek voltak, de természetesen bonyolítjuk egy kicsit. Nézzük meg, milyen algoritmusok fordulhatnak még elő!

3. Az elágazás
Előfordulhat, hogy egy algoritmusban a lépések nem egyértelműen követik egymást. Túl ideális lenne ez pl.

 

 

 









Ti is tudjátok, hogy a számítógépek nem mindig működnek ennyire megbízhatóan. Éppen ezért ez az algoritmus sokkal helytállóbb lenne:
























Az ábra a START felirattal indul, és a logikai irány egy csúcsára állított négyzet felé vezet. Ebbe kell beírni azt a feltételezést, ami lehet I mint IGAZ, vagy H mint HAMIS. Említettem, hogy a számítógépek nem mindig működnek megfelelően (sajnos), épp ezért azt a feltételezést választottam, hogy: A gép hibátlanul működik.  Ez értelem szerűen lehet Igaz vagy Hamis. Ha Igaz, akkor az ábrán is láthatjuk, hogy lehet pl. játszani. De írhattam volna azt is, hogy lehet internezetni, vagy gyakorolni számítástechnika órára. DE! ha a ez a feltétel Hamis, akkor bizony nem fogunk se játszani, se internetezni, hanem el kell hárítanunk a hibát. Pl. újraindítunk, vagy ha nagyobb a baj, az is lehet hogy a gép szervízben fog kikötni.
Az ábra végén pedig ott a STOP, ez zárja le az algoritmusunkat.

Másik példa:


 

 

 

 

 

 

 

 

 

 

 

 

 

Ezt az Igaz vagy Hamis feltételt tartalmazó algoritmust nevezzük elágazásnak. Látható a páldákból is, hogy akkor van elágazás, ha nem egyértelmű hogy mit kell tenni, vagy ha valamitől függ az algoritmus végkimenetele.

4. Az ismétlés
Egy algorimtusban akkor van ismétlés, ha ugyanazt a mozzanatot többször, egymás után végre kell hajtanunk.


















Értelmezzük az ábrát! A bejelölt logikai irány segít! Azt feltételezzük (az van a csúcsára állított négyszögben), hogy számítógépünk egy hibaüzenetet ad ki. Ez is lehet Igaz vagy Hamis. Ha Igaz, akkor újra kell indítani a gépet. Ám láthatjuk, hogy a nyilak visszatérnek a feltételezéshez, tehát újra meg kell néznünk hogy még mindig kidobja-e a gép a hibát. Ha újra Igaz a válasz, akkor megint újraindítjuk, és visszatérünk a kiindulópontra, azaz a feltételezésünkhöz. Ezt egészen addig folytatjuk, míg a válasz Hamis nem lesz. Hiszen ha Hamis, tehát ha nem ad ki hibaüzenetet a gép, akkor mehetünk játszani, vagy netezni, stb.
Tehát láthatjuk, hogy egy ismétlés szerepel az algoritmusunkban. Jelen esetben az, hogy addig indítgatjuk újra a gépet, míg tevékenységünket siker nem koronázza.
(Az persze más kérdés, hogy az újraindítás nem mindig oldja meg a hibát, de ezt most tartozik szervesen a példánkhoz!)

Nézzünk egy másik példát!

















Ezen a példán is jól szemléltethető az ismétlési szerkezet! A postásunk addig megy missza a címzettekhez, míg otthon nem találja őket. (Bizonyára nagyon fontos levélről volt szó.) 

5. A számítógép és az algoritmusok

A számítógép is algoritmusok szerint dolgozik. A gép ezeket csak akkor értheti meg, ha az algoritmust megfelelően ("a gép nyelvén") kódolták. A kódolás során az algoritmus lépéseit a programozási nyelvnek megfelelő kifejezésekkel írjuk le. A programnyelv az a "nyelv", amit a számítógép megért. Sok programnyelv van, a legismertebbek pl. a Turbo pascal, a Delphi, vagy a Visual basic. 
Természetesen ne gondoljuk, hogy ez az emberi nyelvhez nagyban hasonló. A "gép nyelve" valójában logikai műveletekre, és utasításokra bontható. Minden programnyelvnek adott szintaktikája van, ami azt jeleni, hogy nem írhatunk be csak úgy semmit. Gondoljunk a Comenius Logo Teknőcére!
Teknőc is csak azt értette meg, amit gyárilag belekódoltak. Értette pl. az előre utasítást, vagy a jobbra, balra, hátra parancsokat. De például azt nem értette, hogy: menj ferdén balra fel... Persze ha mi irányba állítottuk a szögmérővel, és előre küldtük, akkor képes volt a fenti példára is. Sőt, négyzetet sem tudott csak úgy a semmiből rajzolni, nekünk kellett megadni a négyzet oldalait! De ezt sem úgy ahogy mi akartuk, hanem úgy, ahogy teknőc megértette! Erre mondják azt, hogy követtük a szintaktikát, azaz azt a módszert, amit a gép (vagy Teknőc) megért.


Ha majd a Comenius Logo-val végzünk, Ti is elmondhatjátok, hogy értitek az egyik programnyelvet, hiszen a Comenius Logo is az.