Ismétléses utasítások – A For Ciklus
Az előző cikkben már megnéztük az egyik legalapvetőbb programozási eszközt, a feltétel vizsgálatot. Most ehhez hasonlóan szeretnék bemutatni egy szintén nagyon alapvető elemet, az ismétléses utasítás végrehajtást. Gyakran találkozunk olyan feladattal, amikor van egy nagyobb bemeneti adathalmaz és annak minden elemén ugyanazt az utasítást kell végrehajtani.
Ha a mostani ismereteinkkel közelítenénk meg ezt a problémát és feltesszük, hogy ismerjük, hogy pontosan mennyi bemeneti adatunk van, akkor minden feldolgozási lépést leprogramoznánk minden bemenetre. Ez a módszer maximum 5-10 adat esetén még esetleg működőképes lehet, de el lehet képzelni, hogy több száz vagy akár még több adat esetén már kivitelezhetetlen. Pontosan ilyen problémákra találták ki az utasításismétlést, ami az alábbiak szerint épül fel:
- Meddig kell ismételni az utasításmagot
- Maga az utasításmag
Addig hajtja végre a program újra és újra ugyan azt a blokkot, ameddig a megadott feltétel teljesül. Tehát mondjuk, ha ötvenszer kell végrehajtani egy kiírató utasítást, akkor az valahogy így nézne ki:
i := 0
[i < 50]
{
Kiíratás
}
Ennek megvalósítására több szintaktikai eszköz létezik C-ben és Java-ban is, de ezek egyenértékűek, átjárhatóak. Én azt gondolom, hogy a legismertebb az úgynevezett FOR Ciklus, ami az alábbiak szerint épül fel:
for(inicializálás; feltételvizsgálat; paraméter kezelés)
{
utasításmag
}
- Egy FOR Ciklusnak 3 bemenete van:
- inicializálás – az első ciklus előtt egyszer fog megtörténni
- feltételvizsgálat – minden ciklus után egyszer fog megtörténni a paraméter kezelés után
- paraméter kezelés – minden ciklus után egyszer fog megtörténni a feltételvizsgálat előtt
- Utasítás mag – minden ciklusban végrehajtódik egyszer
Ez egy nagyon tömör és nagyon hatékony módszer, hogyha ugyanazokat az utasításokat kell egymás után többször is végrehajtanunk. A 3 bemeneti paraméter között nem kötelező, hogy szoros összefüggés legyen, de itt ténylegesen csak olyan adatokat szabad megadni, ami a végrehajtás számát befolyásolja. Illetve a mostani feltételvizsgálat hasonlóképen működik, mint a múltkor bemutatott feltételvizsgálat, lehet egyszerű vagy komplex. Ez a rész tetszőleges feltételt tartalmazhat, figyelhet eseményeket vagy határokat egy bemeneti adathalmazon. Amit még fontos kiemelni, hogy az inicializáló részben definiált változó, az utasításmagban is elérhető.
Az előbbi pszeudokód megvalósítása FOR Ciklussal:
for(int i=0; i<50; i++)
{
System.out.println(„Hello_” + i);
}
Nézzünk egy nagyon egyszerű gyakorlati példát:
Kérjünk be a felhasználótól számokat, vesszővel elválasztva, majd adjuk meg a számok átlagát.