Java - While i do...while petlja


U programiranju, petlje se koriste za ponavljanje određenog bloka koda dok se ne ispuni određeni uslov (testni izraz - netočan). Na primjer:

Zamislite da trebamo ispisati rečenicu 50 puta na vašem ekranu. To možemo učiniti tako što ćemo ga ispisati 50 puta (bez upotrebe petlje). Kako bi bilo da ispisujete rečenicu milion puta? Da biste to izbjegli koristićemo petlje. Uz petlje, možemo jednokratno napisati izjavu o ispisu i pokrenuti je bilo koji broj puta. To je samo jednostavan primjer koji pokazuje važnost petlje u programiranju. U Javi postoje 3 vrste petlje: for, while i do-while petlja.



Java while petlja

Sintaksa while petlje u Javi je:

while (testExpression) {
    // kod unutar tijela while petlje
}



Kako while petlja radi?

U gornjoj sintaksi, testni izraz unutar zagrade je logički izraz. Ako se testni izraz ocijeni istinitim:

  • izjave unutar while petlje se izvršava.
  • tada se testni izraz ponovo procjenjuje.

Ovaj postupak traje sve dok se testni izraz ne ocijeni lažnim (false). Ako se testni izraz ocijeni lažnim (false):

  • while petlja prekida radom.


Dijagram toka while petlja




Primjer 1: While petlja

// Program za ispis linije 10 puta

class Loop {
    public static void main(String[] args) {
      
        int i = 1;
     
        while (i <= 10) {
            System.out.println("Line " + i);
            ++i;
        }
    }
}

U gornjem primjeru imamo testni izraz (i <= 10). Provjerava se da li je vrijednost i manja ili jednaka 10. U početku vrijednost i iznosi 1. Dakle, testni izraz se prvi put procjenjuje istinitim (true). Dakle, izjava ispisa unutar while petlje se izvršava. Primjetimo izjavu unutar while petlje:

 ++i;

Ova izjava povećava vrijednost i za 1 u svakoj iteraciji. Nakon 10 iteracija, vrijednost i će biti 11. Zatim, testni izraz (i <= 10) procjenjuje se lažnim (false) i while petlja prestaje.


Primer 2: Java while petlja

// Program za pronalaženje zbira prirodnih brojeva od 1 do 100.

class AssignmentOperator {
    public static void main(String[] args) {
      
        int sum = 0, i = 100;
     
        while (i != 0) {
            sum += i;     // sum = sum + i;
            --i;
        }
     
        System.out.println("Sum = " + sum);
    }
}

Ovdje imamo dvije varijable nazvane sum i i čije su početne vrijednosti 0 i 100. U svakoj iteraciji while petlje:

  • varijabli sum je dodijeljena vrijednost: sum + i
  • vrijednost i smanjuje se za 1

Petlja se nastavlja sve dok vrijednost i ne bude jednaka 0. Za bolju razumjevanje pogledajmo pojednostavljeni primjer:

1-va iteracija: i = 100, sum = 0+100 = 100, i  --i = 99
2-ga iteracija: i = 99, sum = 100+99 = 199, i --i = 98
3-ća iteracija: i = 98, sum = 199+98 = 297, i --i = 97
... .. ...
... .. ...
99-ta iteracija: i = 2, sum = 5047+2 = 5049, i --i = 1
100-ta iteracija: i = 1, sum = 5049+1 = 5050, i --i = 0


Java do...while petlja

Petlja do...while je slična petlji while s jednom ključnom razlikom. Tijelo do...while petlje se izvršava jednom prije provjere testnog izraza. Ovo je sintaksa do...while petlje.

do {
   // kod unutar tijela do while petlje
} while (testExpression);


Kako do...while petlja radi?

Tijelo do...while petlje se jednom izvršava (prije provjere testnog izraza). Tek nakon toga provjerava se testni izraz. Ako se testni izraz ocijeni istinitim (true), izvršavaju se kodovi u tijelu petlje, a testni se izraz ponovno procjenjuje. Ovaj postupak traje sve dok se testni izraz ne procijeni lažnim (false). Kad je testni izraz lažan (false), do...while petlja prestaje.



Dijagram toka do...while petlje




Primjer 3: do...while petlja

Program u nastavku izračunava zbir brojeva koje je korisnik unio dok korisnik ne unese 0. Da bismo preuzeli unos od korisnika, koristili smo objekt Scanner.

import java.util.Scanner;

class Sum {
    public static void main(String[] args) {
     
        Double number, sum = 0.0;
        // stvara objekt klase Scanner
        Scanner input = new Scanner(System.in);

        do {

            System.out.print("Upišite broj: ");
            number = input.nextDouble();
            sum += number;
        } while (number != 0.0);  // testni izraz
     
        System.out.println("Sum = " + sum);
    }
}


Beskonačna while petlja

Uvijek treba biti oprezan dok radimo s petljama. To je zato što ako pogrešno postavimo testni izraz na takav način da nikada nije lažan (false), petlja će se pokretati zauvijek. To se naziva beskonačno while i do...while petljom. Na primjer:

// Beskonačna while petlja
while (true) {
   // tijelo while petlje
}

Uzmimo još jedan primjer:

// Beskonačna while petlja
int i = 100;
while (i == 100) {
   System.out.print("Hey!");
}

Beskonačna do...while petlja radi na sličan način kao i while petlja.