Gyakorlati alapok

Folytassa béka! (a break és a continue utasítás)

 

A számítógép gyakran dolgozik ismétlődő adatokkal, metódusokkal, ennek során valamilyen tevékenységet ismétel (idegen szóval iterál - iteration) valamennyi ideig vagy addig, amíg valami más meg nem szakítja. Erről részletesen írok a következő fejezetekben:

Tételezzük fel, hogy belekerültünk egy ciklusba, ám egy bizonyos idő vagy valamilyen feltételváltozás hatására ki kéne lépnünk belőle. Ennek szabványos utasításcsomagja a következőképpen néz ki:

 

if(feltétel){

    break;

}

 

Demonstrációképpen vegyük elő rettegett végtelen ciklusunkat, amely jelenség mindig komoly programozási hibát jelez. A végtelen ciklus elszabadulása megakadályozható egy feltétel és a break utasítás beiktatásával, persze ez nem oldja meg magát a rossz programozást (ettől a végtelen ciklus még végtelen marad), következésképpen:

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

EZ CSAK DEMONSTRÁCIÓ, NEM PEDIG HIBAMEGOLDÁS!

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
    public static void main(String[] args) {
    int a = 100;
    for(int i = 0; i < a; i++){
        a++;
        System.out.println(i);
        if(i > 1000000){
            break;
            }
        }
    }
}

 

Végeredmény:

megállás 1000001-nél

 

A kódból leolvasható, hogy ha i nagyobb lesz 1 milliónál, akkor a végtelen ciklus le fog állni, mert a break hatására kiugrunk a ciklusból (az 1000001 még ki lesz írva).

 

Nézzünk egy másik, kissé egyszerűbb példát. Az alábbi kódban a for ciklus addig pörög, amíg i < 6, utána azonban a break hatására leáll. Ezt a végeredmény kiírása is igazolja nekünk :

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    for (int i = 1; i <= 10; i++){
        if(i < 6){
            System.out.println(i);
        }
        else
            break;
        }
    }
}

 

Végeredmény:

1

2

3

4

5

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Hivatalos megfogalmazásban a break utasítás feltétel nélküli vezérlésátadást jelent. A continue feltétel esetén azonban a ciklus futása ugyan megszakad, de a vezérlés a léptetőérték növelésével (általában i++) a ciklus elejére ugrik, majd onnan folytatódik.

 

if(feltétel){

    continue;

}

 

Az alábbi végtelen ciklusba az if else utasításokkal egy 2 ajtós választási lehetőség lett beiktatva. Az egyikbe a ciklusnak mindenképpen be kell lépnie. Az egyetlen beállított feltétel (1. ajtó), hogy i kisebb a-nál (i < a). A 2. ajtón csakis kizárólag akkor lép be, ha ez a feltétel már nem teljesül, ekkor a ciklus futása is megáll (break). Látható tehát, hogy amíg a feltétel igaz, az else ág soha nem fut le:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
    public static void main(String[] args) {
    int a = 1000000;
    for(int i = 0; i < i + 1; i++){
        System.out.println(i);
            if(i < a){
                continue;
            }
            else
                break;
            }
        }
    }
}

 

Végeredmény:

megállás 1000000-nál

 

Zárógondolatként fontos megjegyeznünk, hogy sem a break, sem a continue nem használható fel önálló metódusból vagy inicializáló blokkból való kilépéshez. Bármelyik esetet erőltetve fordítási hibával fogunk szembesülni.

 

www.informatika-programozas.hu - Házi feladat

 

Házi feladat - Az ismertetett vezérlő utasítások esetleges felhasználásával találjuk meg a 3-mal VAGY 5-tel osztható számokat és töltsük bele egy 10 elemű tömbbe!

 

A megoldás fejezete a képre kattintva érhető el.