[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