Algoritmusleíró eszközök
A programfejlesztés lépései
A számítógépes programok készítése összetett folyamat, mely általában az alábbi részekre bontható:
a feladat pontos meghatározása (specifikáció);
a feladat megoldásának kitalálása, majd a megoldás lépéseinek meghatározása (algoritmuskészítés);
a készült algoritmus alapján a program elkészítése egy adott programozási nyelven (kódolás);
az elkészült programkód fordítása és futtatása, a futási eredmények vizsgálata (tesztelés, hibakeresés);
a program használatához és továbbfejlesztéséhez szükséges leírások elkészítése (dokumentáció).
A fent leírt pontok a legegyszerűbb esetben időben egymás után következnek, de sokszor van eltérés. Például a dokumentáció mindegyik lépés tanulságait tartalmazza, így a programkészítés során folyamatosan bővül. Vagy a tesztelés során talált hibák néha a specifikáció pontosítását, az algoritmus és a program módosítását is magukkal hozzák. Ezután persze ismételten tesztelni kell a programot, vajon az az elvárásoknak megfelelően működik-e, és ha nem, akkor ismét változtatni kell.
Az egyszerűbb feladatok megoldásakor a fenti lépések közül néhány elmarad, vagy csak gondolatban történik meg. Előfordul, hogy nem készül dokumentáció, csak a forrásprogramba kerül néhány sor, ami röviden ismerteti az egyes kódrészleteket. Sok esetben az algoritmus nem kerül leírásra, csak a forrásprogram készül el. Ez egyszerűsíti a fejlesztő munkáját, kiolvasható belőle a megoldás gondolatmenete, mégis vannak hátrányai. Például a programozó felhasználja az adott programozási nyelv sajátosságait, ezért a megoldás nem lesz általános, nehezen átültethető más programozási nyelvre.
Az összetett programok készítése során ezért javasolják az algoritmus lejegyzését. Az algoritmus leírása a programozás tanulása során is fontos, segíti az algoritmikus gondolkodás fejlődését, az egyes gondolati lépések jobb megértését.
A továbbiakban néhány algoritmusleíró eszközt mutatunk be az Euklideszi algoritmus segítségével, amely két pozitív egész szám legnagyobb közös osztójának kiszámítását végzi. Az algoritmus bemenete a két pozitív egész szám, eredménye a legnagyobb közös osztó.
Folyamatábra
Az egyik legkorábban kialakult algoritmusleíró eszköz. Neumann János és Herman Goldstine munkáiban találjuk meg először, ők fejlesztették és javasolták a használatát munkatársaiknak az első számítógépek építése idején, az 1940-es években. A lépések folyamatát egy irányított vonal jelzi, mely egy kezdő elemből indul és egy záró elemben végződik. Az egyszerű utasítások egy-egy téglalap alakú dobozban találhatók, míg a bejövő vagy kimenő adatokat egy paralelogramma jelzi. A folyamat döntési pontok segítségével több ágra bontható, így létrehozhatók elágazások és ismétlések.
Struktogram
Az 1960-as években kialakult a strukturált programozás, amely egyik alapvetése, hogy csak bizonyos programszerkezetek használatát javasolja:
szekvencia - az utasítások egymás utáni végrehajtása
elágazás - egy feltétel értékétől függően különböző utasítások hajthatók végre, a programvezérlés több ágra bontható
iteráció - egy feltétel értékétől függően az utasítások egy csoportja újra és újra végrehajtható
Sikerült igazolni, hogy a nem strukturált programszerkezetek használatával elkészített programoknak van strukturált megfelelője, így a megoldható problémák körét nem szűkíti, ha csak strukturált elemeket alkalmazunk. Így a '70-es évektől a strukturált programozást egyre szélesebb körben alkalmazták. Mivel a folyamatábra nem strukturált elemek létrehozását is lehetővé teszi, ezért létrehozták a csak strukturált elemeket tartalmazó algoritmusleíró eszközt, a struktogramot.
Mondatszerű leírás
A forrásprogramhoz hasonlóan az algoritmusok is leírhatók szöveggel. Ebben az esetben is a strukturált programozásnál alkalmazott programszerkezeteket alkalmazzuk, tehát szekvencia, elágazás és iteráció fordul elő. A tagolás és a jobb olvashatóság érdekében általában egy sorban egy utasítást helyezünk el, valamint az elágazások ágait és a ciklusok magját tagolással is jelezzük.
Be: a, b
m := a MOD b
Ciklus amíg m > 0
a := b
b := m
m := a MOD b
Ciklus vége
Ki : b
https://hu.wikipedia.org/wiki/Euklideszi_algoritmus