A programozás menetének vázlata
A számítógépes programok elkészítésénél az alábbi sorrendet szokás betartani.
Egy program ötlete => Gondolatok => A program megvalósításának vázlata (algoritmus) => A program kódolása egy kiválasztott programozási nyelven => A program futtatása => Hibajavítások => Kész
Ez a vázlat persze nem minidg igaz, mert
- néha olyan egyszerű a program, hogy nem írunk külön algoritmust,
- a program futtatása előtt is rájöhetünk hibákra és akkor már korábban van hibajavítás,
- a hibajavítás akár az algoritmus módosítását is jelentheti, de jelentheti a program kód módosítását is.
A programozás tanulása során azonban mindenképpen az algoritmusok megtanulásával kell kezdeni, mert
- ekkor nem kell foglalkozni a különböző programozási nyelvek eltérő szintaktikájával (nyelvtani szabályaival),
- a programozási nyelvek szigorú kötöttségeivel,
- a tanuló számára megérthető, felfogható gondolatok átültetése algoritmussá egyszerűbb, mint konkrét programmá,
- az algoritmusok nyelvfüggetlenek, tehát ekkor még nem kell dönteni a használandó programozási nyelvről.
Az algoritmus
Megengedett utasításokból, lépésekből álló sorozat, amely egy probléma, feladat megoldásához vezet. Az algoritmus egy probléma megoldásának gondolatmenete.
Mivel a számítógépes problémák gyakran annyira összetettek, hogy a programozó nem látja őket teljességgel át, ezért az algoritmusok gyakran csak a megoldás vázlatát jelentik, egyes részletkérdésekkel elnagyoltan, vagy egyáltalán nem foglalkoznak, azoknak megoldását elhalasztják.
A számítógépes algoritmusok minden esetben előre lerögzített (megengedett) utasításokból állnak. Az algoritmus a programozásban gyakran programozási nyelv független és arra szolgál, hogy a programozó képes legyen a programozási nyelvtől elvonatkoztatva gondolkozni a feladatok megoldásáról.
Az algoritmus leíró nyelvek
Az algoritmusleíró nyelvek célja az, hogy a programozási feladat megoldását jelentő algoritmust programozási nyelv független módon tudjuk leírni.
Az algoritmus leíró nyelvek tulajdonságai
- Mindig csak néhány utasítást rögzít le előre definiált módon
- Nem tartalmaznak programozási nyelv függő utasításokat
- Korlátlanul bővíthető, hiszen a programozási nyelvek is bővíthetők sokféle módon
- többféle algoritmusleíró nyelv is létezik
Folyamatábra
A folyamatábrák használatakor grafikai jelekkel jelöljük az egyes programozási egységeket. A grafikai jeleket nyilakkal kötjük össze, a program futásának megfelelő módon. Általában egy program vagy egy eljárás fentről lefelé vagy balról jobbra hajtódik végre, legalábbis a folyamatábra rajzolásánál erre kell törekedni. A szokásos feldolgozási lépéseket az alábbi módon szimbólumokkal jelöljük:
Az algoritmus kezdetét egy Start feliratú körrel ábrázoljuk.
A Program végét egy Vége vagy End feliratú körrel ábrázoljuk.
Egy tevékenységet a téglalapba beírt tevékenység nevével ábrázoljuk.
Az utasítások egymásutánját a különböző jelek közé írt vonalak és a vonalak végén lévő nyilak jelzik.
Ha egy döntést más néven elágazást hozunk létre az algoritmusban, akkor egy rombuszba beírjuk az eldöntendő kérdést és igen / nem feliratot helyezünk a megfelelő kimenet felé.
Szokás, hogy a folyamatábra rajza a rajz tetején indul és az alján végződik.
Előnyei
- Vizuálisan jól megjeleníthető egy algoritmus
- Az egyszerűbb algoritmusok könnyen megérthetők.
Hátrányai
- Nem támogat minden ismert adatszerkezetet és programozási struktúrát
- Ciklust körülményesen lehet benne írni
- Bonyolultabb algoritmusokat nehéz benne írni.
- Összetettebb algoritmusok esetén a vonalak irányítása átfedheti egymást, ezért áttekinthetetlen lehet az ábrázolt algoritmus
- Word dokumentumokban nehéz előállítani
Kezdő programozók, egyszerű feladatok megoldásához érdemes használni.
Struktogram
Az algoritmusokat téglalapokkal jelöljük. az elemi programlépés is egy téglalap.
A feltételes elágazást így jelöljük:
A ciklusokat így jelöljük
Előnyei
- Ciklusokat is lehet benne ábrázolni
- Rendkívül egzakt, pontos
- Rendkívül tömör, azaz kis méretben lehet algoritmusokat leírni.
- Egy szövegszerkesztővel is könnyen elő lehet állítani
Hátrányai
- Nem túl áttekinthető, ezért csak a professzionális programozók használják
- Nagyobb algoritmusok áttekinthetetlenek lehetnek
Mondatszerű leírás
A mondatszerű leírás egy elképzelt programozási nyelv, amelynek az utasításait az anyanyelven kell megírni. Ilyen módon az idegen nyelv megértési nehézségeit kiküszöböljük. A mondatszerű leírásnak akkor van értelme, ha a programozó egy kicsit tisztában van egy számítógépes program működésével, érti az utasítások egymásutániságának, az értékadásnak, az elágazásoknak, a ciklusoknak a fogalmát. Érti azt, hogy mit jelent egy eljárás hívása és mit jelent egy függvény hívása. Mint látjuk majd, az algoritmus-leíró nyelv egyfajta magyar nyelvű programozási nyelv.
A leírás szabályai
A leírásban egy utasítást egy sorba írunk.
Értékadás
i:= 10; - A két oldalon azonos típusú értékek vannak
Feltételes elágazás
Ha feltétel igaz akkor Utasítás
vagy
Ha feltétel igaz akkor
Utasítások …
Elágazás vége
vagy
Ha feltétel igaz akkor
Utasítások …
Különben
Utasítások
Elágazás vége
Ciklusok
Ciklus cv :=kezdőértéktől végértékig lépésközzel
……utasítások
Ciklus vége
vagy
Ciklus amíg feltétel igaz
.... utasítások; ……
Ciklus vége
vagy
Ciklus
……
amíg feltétel
Ciklus vége
Kezdőérték adás, inicializálás
Ki: Kiíró utasítás
Be: Adatbeviteli utasítás
Tömb: Tömb definiálása
Inicializálás(kezdőérték) Bizonyos adatok kezdőértékének megadása
Program struktúrák
Program Név
……
Program vége
Eljárás Név(paraméterlista)
……
Eljárás vége
Függvény Név(paraméterlista)
......
Nev := visszatérési érték
Függvény vége
Az eljárásokat és függvényeket az alábbi módon hívhatjuk meg a programokból:
Név( paraméterlista )
vagy
Érték := Név( paraméterlista
Az algoritmusok dokumentálása
Az algoritmus vagy feladat specifikációja
Egy program vagy algoritmus specifikációja az alábbiakat tartalmazza:
- Milyen bemenő adatokat vár a program,
- Milyen feltételek érvényesek a bemenő adatokra
- Milyen kimenő adatokat várunk, és azokra milyen feltételeket várunk, azaz mikor tekintjük helyesnek és mikor hibásnak az eredményt.
Eljárások, függvények dokumentálása
Minden esetben szükséges a programban meghívott, nem triviális eljárások esetén leírni, hogy mit várunk a meghívott eljárástól. Az eljárás kifejtésekor pedig célszerű leírni az eljárás fejléceként, hogy az eljárás mit végez el, milyen típusú bemenő adatokat produkál és milyen kimenő adatokat várunk tőle.
Algoritmusok dokumentálása általában
A folyamatábrák és struktogramok használata során az algoritmusokat célszerű bő magyarázattal ellátni tekintve, hogy az előbbi két leírás meglehetősen absztrakt. Az algoritmusleíró nyelv használata során a dokumentálás hozzávetőlegesen ugyanolyan mértékű kell, hogy legyen, mint a programok írásánál. Az nem teljesen magától értetődő zárt programrészek előtt tömören le kell írni a feladataikat, esetleg annak magyarázatát, hogy miért pont úgy, azokkal az eszközökkel valósítjuk meg a folyamatot.