logo

Loops en Java

El bucle en llenguatges de programació és una característica que facilita l'execució d'un conjunt d'instruccions/funcions de manera repetida mentre alguna condició s'avalua com a vertadera. Java ofereix tres maneres d'executar els bucles. Tot i que totes les maneres ofereixen una funcionalitat bàsica similar, es diferencien en la seva sintaxi i el temps de comprovació de les condicions.

java proporciona tres tipus d'instruccions condicionals, aquest segon tipus és la instrucció de bucle.



  • bucle while: Un bucle while és una instrucció de flux de control que permet executar codi repetidament en funció d'una condició booleana determinada. El bucle while es pot pensar com una declaració if que es repeteix.

Sintaxi:

while (boolean condition) { loop statements... }>

Java








/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main (String[] args) {> >int> i=>0>;> >while> (i<=>10>)> >{> >System.out.println(i);> >i++;> >}> >}> }>

>

>

Sortida

0 1 2 3 4 5 6 7 8 9 10>
  • Diagrama de flux: for-loop-en-java
    • El bucle while comença amb la comprovació de la condició booleana. Si s'avalua com a cert, s'executen les declaracions del cos del bucle, en cas contrari s'executa la primera instrucció que segueix el bucle. Per aquest motiu també s'anomena Bucle de control d'entrada
    • Una vegada que la condició s'avalua com a vertadera, s'executen les declaracions del cos del bucle. Normalment, les declaracions contenen un valor d'actualització per a la variable que s'està processant per a la següent iteració.
    • Quan la condició esdevé falsa, el bucle s'acaba, cosa que marca el final del seu cicle de vida.
  • bucle per: for loop proporciona una manera concisa d'escriure l'estructura del bucle. A diferència d'un bucle while, una instrucció for consumeix la inicialització, la condició i l'increment/decrement en una línia, proporcionant així una estructura de bucle més curta i fàcil de depurar.

Sintaxi:

for (initialization condition; testing condition;increment/decrement) { statement(s) }>

Java




/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main (String[] args) {> >for> (>int> i=>0>;i<=>10>;i++)> >{> >System.out.println(i);> >}> >}> }>

>

>

Sortida

0 1 2 3 4 5 6 7 8 9 10>
  • Diagrama de flux:
    Fer mentre
      Condició d'inicialització: aquí inicialitzem la variable en ús. Marca l'inici d'un bucle for. Es pot utilitzar una variable ja declarada o es pot declarar una variable, només local per bucle. Condició de prova: s'utilitza per provar la condició de sortida d'un bucle. Ha de retornar un valor booleà. També és un Bucle de control d'entrada ja que la condició es verifica abans de l'execució de les instruccions de bucle. Execució de la declaració: un cop s'avalua la condició com a vertadera, s'executen les declaracions del cos del bucle. Increment/Decrement: s'utilitza per actualitzar la variable per a la següent iteració. Finalització del bucle: quan la condició esdevé falsa, el bucle s'acaba marcant el final del seu cicle de vida.
  • Fer mentre: el bucle while és similar al bucle while amb l'única diferència que comprova la condició després d'executar les instruccions i, per tant, és un exemple de Sortida del bucle de control.

Sintaxi:

do { statements.. } while (condition);>

Java




/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main (String[] args) {> >int> i=>0>;> >do> >{> >System.out.println(i);> >i++;> >}>while>(i<=>10>);> >}> }>

>

>

Sortida

0 1 2 3 4 5 6 7 8 9 10>
  • Diagrama de flux:
    • el bucle do while comença amb l'execució de les sentències. No es comprova cap condició per primera vegada.
    • Després de l'execució de les declaracions i l'actualització del valor de la variable, la condició es comprova si hi ha un valor vertader o fals. Si s'avalua com a cert, s'inicia la següent iteració del bucle.
    • Quan la condició esdevé falsa, el bucle s'acaba, cosa que marca el final del seu cicle de vida.
    • És important tenir en compte que el bucle do-while executarà les seves declaracions almenys una vegada abans de comprovar qualsevol condició i, per tant, és un exemple de bucle de control de sortida.

Paranys de bucles

    Bucle infinit: un dels errors més comuns en implementar qualsevol tipus de bucle és que és possible que no surti mai, és a dir, el bucle s'executa durant un temps infinit. Això passa quan la condició falla per algun motiu. Exemples: bucle for infinit:

Java




/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >for> (;;) {> >}> >}> }>

>

>

bucle while infinit:

Java




/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main (String[] args) {> >while> (>true>)> >{> >// statement> >}> > >}> }>

>

>

Java




//Java program to illustrate various pitfalls.> public> class> LooppitfallsDemo> {> >public> static> void> main(String[] args)> >{> >// infinite loop because condition is not apt> >// condition should have been i>0.> >for> (>int> i =>5>; i !=>0>; i -=>2>)> >{> >System.out.println(i);> >}> >int> x =>5>;> >// infinite loop because update statement> >// is not provided.> >while> (x ==>5>)> >{> >System.out.println('In the loop');> >}> >}> }>

>

>

Un altre inconvenient és que podeu afegir alguna cosa al vostre objecte de col·lecció mitjançant un bucle i us podeu quedar sense memòria. Si proveu d'executar el programa següent, després d'un temps, es llançarà l'excepció de falta de memòria.

Java




//Java program for out of memory exception.> import> java.util.ArrayList;> public> class> Integer1> {> >public> static> void> main(String[] args)> >{> >ArrayList ar =>new> ArrayList();> >for> (>int> i =>0>; i { ar.add(i); } } }>

>

>

Sortida:

Exception in thread 'main' java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Unknown Source) at java.util.Arrays.copyOf(Unknown Source) at java.util.ArrayList.grow(Unknown Source) at java.util.ArrayList.ensureCapacityInternal(Unknown Source) at java.util.ArrayList.add(Unknown Source) at article.Integer1.main(Integer1.java:9)>

Bucle imbricat:

Bucle imbricat significa una instrucció de bucle dins d'una altra instrucció de bucle.

Hi ha diferents combinacions d'ús de bucle per bucle, mentre bucle, Fer mentre bucle.

Ex.1 bucle for imbricat

Java




/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main (String[] args) {> >for>(>int> i =>0>; i <>3>; i++){> >for>(>int> j =>0>; j <>2>; j++){> >System.out.println(i);> >}> >System.out.println();> >}> >}> }>

>

>

Sortida

0 0 1 1 2 2>

Ex.2 Bucle while niat

Java




import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >int> i =>1>, j =>1>;> >while> (i <=>3>) {> >while> (j <=>3>) {> >System.out.print(j);> >j++;> >}> >i++;> >System.out.println(>''>);> >j =>1>;> >}> >}> }>

>

>

Sortida

123 123 123>

Ex.3 bucle do while anidat

Java




/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >int> row =>1>, column =>1>;> >int> x;> >do> {> >x =>4>;> >do> {> >System.out.print(>''>);> >x--;> >}>while> (x>= fila);> >column =>1>;> >do> {> >System.out.print(column +>' '>);> >column++;> >}>while> (column <=>5>);> >System.out.println(>' '>);> >row++;> >}>while> (row <=>5>);> >}> }>

>

>

Sortida

1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5>

Ex.4 bucle while i for anidats

Java




/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >int> weeks =>3>;> >int> days =>7>;> >int> i =>1>;> >// outer loop> >while> (i <= weeks) {> >System.out.println(>'Week: '> + i);> >// inner loop> >for> (>int> j =>1>; j <= days; ++j) {> >System.out.println(>' Days: '> + j);> >}> >++i;> >}> >}> }>

>

matriu java per llistar
>

Sortida

Week: 1 Days: 1 Days: 2 Days: 3 Days: 4 Days: 5 Days: 6 Days: 7 Week: 2 Days: 1 Days: 2 Days: 3 Days: 4 Days: 5 Days: 6 Days: 7 Week: 3 Days: 1 Days: 2 Days: 3 Days: 4 Days: 5 Days: 6 Days: 7>