Petrik tananyagtár: Algoritmusok, algoritmus-leíró eszközök Petrik Lajos Vegyipari, Környezetvédelmi és Informatikai Szakközépiskola Szoftverfejlesztő szak, 14. évfolyam, OKJ szám: 54 481 02 0010 54 04
___________________________________________________________________________
ALGORITMUSOK, ALGORITMUS-LEÍRÓ ESZKÖZÖK 1.
ALGORITMUS FOGALMA ÉS JELLEMZŐI Az algoritmus egyértelműen végrehajtható tevékenység-, vagy utasítássorozat, amely véges sok lépés után befejeződik.
1.1
Fajtái: -
Hétköznapi algoritmusok (pl. ping-pongozás, udvarlás stb.)
-
Matematikai algoritmusok (pl. Euklideszi algoritmus, háromszög szerkesztése három oldalból)
-
Számítógépes algoritmusok, amelyek alapvető feladata az adatfeldolgozás. Jellemző tevékenységei: o adatbekérés, kiírás (I/O műveletek), o értékadás, o feltételek kiértékelése, o vezérlés átadás
1.2
1.3
Jellemzői: -
Egyértelműség: azonos feltételek között mindig pontosan ugyanúgy kell végrehajtódnia.
-
Végesség: az algoritmusnak véges sok lépés után be kell fejeződnie, különben a gyakorlatban használhatatlan.
-
Olyan utasításokat, tevékenységeket tartalmazzon, amelyeket a végrehajtója - legyen az ember, vagy számítógép – megért, és képes is végrehajtani. Az algoritmusok megfogalmazásának eszközei
1.3.1 Hétköznapi nyelv Egy algoritmus megfogalmazásának a legtermészetesebb módja az, hogy egyszerűen a saját szavainkkal elmondjuk a végrehajtandó tevékenységeket. án! E megoldást alkalmazva viszonylag egyszerű tevékenységeket is hosszasan „el kell magyaráznunk”! Ennek az oka az, hogy a hétköznapi nyelvben nincsenek kész kifejezéseink az algoritmusokban megszokott fordulatokra.
1
Petrik tananyagtár: Algoritmusok, algoritmus-leíró eszközök Petrik Lajos Vegyipari, Környezetvédelmi és Informatikai Szakközépiskola Szoftverfejlesztő szak, 14. évfolyam, OKJ szám: 54 481 02 0010 54 04
___________________________________________________________________________ 1.3.2 Folyamatábra A folyamatábra az algoritmusok leírásának klasszikus eszköze. A tevékenységek végrehajtásának a sorrendjét különféle geometrikus alakzatok, illetve nyilak segítségével határozzuk meg. A folyamatábra alapelemei: A program kezdete:
START
Adatbevitel, kiírás:
művelet
Elágazás:
i
A program vége:
Egyéb művelet:
STOP
művelet
h feltétel
-
A folyamatábra-készítésnek többféle jelrendszere is létezik, melyek alapelemeikben megegyeznek. Alegegyszerűbb jelrendszer csak kevés grafikus elemet használ, az összetettebb algoritmikus szerkezeteket – pl. ciklusokat – ezek segítségével írja le.
-
A grafikus elemek alkalmazása miatt folyamatábránk már rövid program esetében is terjedelmes lehet, akár több oldalas is, ami nehézkessé teheti az ábrázolást.
-
A nyilakat körültekintően kell alkalmaznunk, nehogy áttekinthetetlenné váljon az algoritmusunk! Ha „össze-vissza” nyilazgatunk, akkor programunk strukturálatlan és javíthatatlan lesz.
1.3.3 Stuktogram A stuktogram egymás alá, illetve egymásba rajzolt téglalapok segítségével írja le algoritmusainkat. Előnye, hogy támogatja a szabályos struktúrák használatát. Elemei:
2
Petrik tananyagtár: Algoritmusok, algoritmus-leíró eszközök Petrik Lajos Vegyipari, Környezetvédelmi és Informatikai Szakközépiskola Szoftverfejlesztő szak, 14. évfolyam, OKJ szám: 54 481 02 0010 54 04
___________________________________________________________________________ -
A stuktogramban nincs a program kezdetét és végét jelző szimbólum, valamint nincsenek nyilak. A program végrehajtása felülről lefelé haladva történik.
-
A stuktogram a folyamatábránál tömörebb és biztonságosabb algoritmus-leíró eszköz, mivel csak szabályos struktúrák ábrázolását teszi lehetővé.
Példa: korábban specifikált feladat (háromszög terület) feladat megoldása: a., Folyamatábrával:
START
Be: a h a>0 i Be: b h b>0 i Be: c h c>0 i h
a+b>c a+c>b b+c>a i
s : = (a+b+c)/2
T : s(s a)(s b)(s c) Ki: T
STOP
3
Petrik tananyagtár: Algoritmusok, algoritmus-leíró eszközök Petrik Lajos Vegyipari, Környezetvédelmi és Informatikai Szakközépiskola Szoftverfejlesztő szak, 14. évfolyam, OKJ szám: 54 481 02 0010 54 04
___________________________________________________________________________ b., Stuktogrammal: Be: a a>0 Be: b b>0 Be: c c>0 a+b>c a+c>b b+c>a s : = (a + b + c ) / 2
T : s(s a)(s b)(s c) Ki: T
1.3.4 Mondatszerű leírás A mondatszerű leírás segítségével grafikus szimbólumok nélkül, magyar nyelvű, a programozási nyelvek kulcsszavaira emlékeztető speciális kifejezésekkel fogalmazhatjuk meg algoritmusainkat. Az előző példa mondatszerű leírással megoldva:
Program HaromszogTerulet: Ciklus Ciklus Be: a amíg nem ( a > 0 ) Ciklus Be: b amíg nem ( b > 0 ) Ciklus Be: c amíg nem ( c > 0 ) amíg nem ( a+b>c és a+c>b és b+c>a) s:=(a+b+c)/2 T : s(s a)(s b)(s c) Ki: T Program vége.
-
A mondatszerű leírás nyilvánvaló előnye, hogy nem kell grafikus jelekkel bajlódnunk az algoritmus készítésekor.
4
Petrik tananyagtár: Algoritmusok, algoritmus-leíró eszközök Petrik Lajos Vegyipari, Környezetvédelmi és Informatikai Szakközépiskola Szoftverfejlesztő szak, 14. évfolyam, OKJ szám: 54 481 02 0010 54 04
___________________________________________________________________________ -
Megfigyelhető, hogy az alkalmazott kifejezések megfelelői a legtöbb programozási nyelvben megtalálhatók. Ezért az ilyen módon megírt algoritmust könnyű bármely programozási nyelven kódolni.
-
Az előző pontban leírtak miatt szokás a mondatszerű leírást pszeudo-kódnak is nevezni. Látnunk kell persze, hogy ez nem „igazi” programozási nyelv, hiszen utasításkészlete lényegében az adatbekérésre, kiíratásra, valamint az algoritmikus szerkezetek leírására szorítkozik. De éppen e tulajdonsága teszi alkalmassá arra, hogy segítségével tömören meg tudjuk fogalmazni programjaink lényegét.
5