[elektro] C csodálkozás
Móczik Gábor
pm_levlista at progzmaster.hu
Tue Oct 1 20:28:07 CEST 2013
2013.10.01. 19:57 keltezéssel, Kovács József írta:
> for (;;) {
>
> }
>
>
> Ez a fő program, ami végtelen ciklusban fut
>
> Az érdemi munkát pedig a magszakítás rutinok végzik...
Van ilyen megoldás, de a konkrét példa nem ez.
Az simán egy függvény, amiben kellett egy olyan ciklus aminek nem pont
az elején, nem is pont a végén (amikre vannak vezérlési szerkezetek),
hanem valahol a közepén kell eldönteni, hogy mikor kell kilépni, netán
több helyen, több feltétel alapján.
Ezeket a problémákat többnyire úgy oldod meg, hogy készítesz egy
végtelen ciklust, és valahol kiugrasz belőle.
Erre jó a 'break' utasítás, ami a ciklus utánra ugrik, vagy a 'return',
ami visszatér a komplett függvényből, meg persze ha valaki szükségét
érzi, használható a 'goto'.
Itt érdemes még megemlíteni a 'continue' utasítást, ami nem lép ki,
hanem a további utasításokat átugorva a következő iterációra lépteti a
ciklust.
Ezek a megoldások, ha túlzásba viszik, elég kibogozhatatlanná tudják
tenni a kódot. Csak akkor érdemes alkalmazni ha annyira egyszerű, hogy
átlátható marad (mint a példa), vagy a megoldandó feladat olyan, ami a C
vezérlési szerkezeteivel nehezen emészthető (állapotgépek) és szebb
megoldással végülis nyakatekert lesz és/vagy megengedhetetlen hátrány
keletkezik (pl. segédváltozók a RAM-ban, futásidő növekedés).
More information about the Elektro
mailing list