logo

Bucles de Java

Prova-ho a GfG Practice Progrés' title=

Els bucles de programació permeten que un conjunt d'instruccions s'executi diverses vegades en funció d'una condició. A Java hi ha tres tipus de bucles que s'expliquen a continuació:

1. per bucle

El bucle for s'utilitza quan sabem el nombre d'iteracions (sabem quantes vegades volem repetir una tasca). La instrucció for inclou la condició d'inicialització i l'increment/disminució en una línia. 

Exemple: El programa Java següent mostra un bucle for que imprimeix nombres del 0 al 10 en una sola línia.



Java
// Java program to demonstrates the working of for loop import java.io.*; class Geeks {  public static void main(String[] args)  {  for (int i = 0; i <= 10; i++) {  System.out.print(i + ' ');  }  } } 

Sortida
0 1 2 3 4 5 6 7 8 9 10 

Sintaxi:

per a (inicialització; condició; increment/disminució) {

// codi a executar

}

La imatge següent mostra el diagrama de flux d'un bucle for:

Bucle while' title=Diagrama de flux del bucle for
  • Condició d'inicialització : Aquí inicialitzem la variable en ús. Marca l'inici d'un bucle for. Es pot utilitzar una variable ja declarada o una variable es pot declarar local només per al 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 comprova abans de l'execució de les instruccions del bucle.
  • Execució de la declaració : Una vegada que la condició s'avalua com a certa, s'executen les declaracions del cos del bucle.
  • Increment/ Disminució : S'utilitza per actualitzar la variable per a la següent iteració.
  • Terminació del bucle : Quan la condició es fa falsa, el bucle s'acaba marcant el final del seu cicle de vida.

Nota : Hi ha una altra forma de bucle for coneguda com Millora per a bucle o (per a cada bucle).

char + int en java

Bucle for millorat (per a cadascun)

Aquest bucle s'utilitza per iterar sobre matrius o col·leccions.

Exemple : El programa Java següent mostra un bucle for millorat (per a cada bucle) per iterar a través d'una matriu i imprimir noms.

Java
// Java program to demonstrate  // the working of for each loop import java.io.*; class Geeks {  public static void main(String[] args)  {  String[] names = { 'Sweta' 'Gudly' 'Amiya' };  for (String name : names) {  System.out.println('Name: ' + name);  }  } } 

Sortida
Name: Sweta Name: Gudly Name: Amiya 

Sintaxi:

per a (variable DataType: arrayOrCollection) {

// codi a executar

}

2. while Loop

S'utilitza un bucle while quan volem comprovar la condició abans d'executar el cos del bucle.

Exemple: El programa Java següent mostra un bucle while que imprimeix nombres del 0 al 10 en una sola línia.

Java
// Java program to demonstrates  // the working of while loop import java.io.*; class Geeks {  public static void main(String[] args)  {  int i = 0;  while (i <= 10) {  System.out.print(i + ' ');  i++;  }  } } 

Sortida
0 1 2 3 4 5 6 7 8 9 10 

Sintaxi:

mentre (condició) {

// codi a executar

}

La imatge següent mostra el diagrama de flux d'un bucle while:

què és el rusc
Do-while-loop' loading='lazy' title=Diagrama de flux del bucle while
  • 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 certa, 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ó es fa falsa, el bucle s'acaba, cosa que marca el final del seu cicle de vida.

3. do-while Loop

El bucle do-while assegura que el bloc de codi s'executa almenys una vegada abans de comprovar l'estat.

Exemple : El programa Java següent mostra un bucle do-while que imprimeix nombres del 0 al 10 en una sola línia.

Java
// Java program to demonstrates  // the working of do-while loop import java.io.*; class Geeks {  public static void main(String[] args)  {  int i = 0;  do {  System.out.print(i + ' ');  i++;  } while (i <= 10);  } } 

Sortida
0 1 2 3 4 5 6 7 8 9 10 

Sintaxi:

fer {

// codi a executar

} mentre (condició);

La imatge següent mostra el diagrama de flux d'un bucle do-while:

' loading='lazy' title=Diagrama de flux del bucle do-while
  • el bucle do while comença amb l'execució de la instrucció. 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ó es fa 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.

Errors de bucle comuns i com evitar-los

Si els bucles no s'utilitzen correctament, poden introduir inconvenients i errors que afecten la llegibilitat i la funcionalitat del rendiment del codi. A continuació es mostren alguns inconvenients comuns dels bucles:

1. Bucles infinits

Aquest és un dels errors més comuns durant la implementació de 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.

Tipus de bucles infinits:

  • infinit for Loop
  • bucle while infinit

Exemple: Aquí els dos exemples mostren els bucles infinits.

Infinite For Loop
// Java program to demonstrate  // the infinite for loop import java.io.*; class Geeks {  public static void main(String[] args)  {  for (int i = 0; i < 5; i--) {  System.out.println(  'This loop will run forever');  }  } } 
Infinite While Loop
// Java Program to demonstrate  // the infinite while loop import java.io.*; class Geeks {  public static void main(String[] args)  {  while(true)  {  System.out.println(  'Basic example of infinte loop');  }  } } 

Sortida: Quan executeu els dos codis anteriors, obtindreu un error TLE (Límit de temps superat).

2. Errors desactivats

Els errors d'off-by-One es produeixen quan el bucle s'executa una vegada més o una menys del que volíeu. Bàsicament passa quan la condició del bucle no s'estableix correctament.

Exemple : El programa Java següent mostra un error Off-by-One on el bucle s'executa 6 vegades i esperàvem que s'executi 5 vegades.

Java
// Java Program to demonstrates Off-by-One Errors import java.io.*; class Geeks {  public static void main(String[] args)  {  for (int i = 0; i <= 5; i++) {  System.out.print(i + ' ');  }  } } 

3. Modificació de variables de bucle dins del bucle

Quan canviem la condició del bucle (com i) dins del bucle, pot provocar que el bucle salti determinades iteracions o es comporti d'una manera que no esperàvem. Això pot provocar errors o comportaments inesperats.

Exemple : El programa Java a continuació mostra la modificació de la variable de bucle dins del bucle, cosa que fa que el bucle salti determinades iteracions i es comporti de manera inesperada.

Java
// Java program demonstrates  // modification in i variable import java.io.*; class Geeks {  public static void main(String[] args)  {  for (int i = 0; i < 5; i++) {  if (i == 2) {    // Modifies the loop variable and skips  // the next iteration  i++;  }  System.out.println(i);  }  } } 

4. Cos de bucle buit

Un cos de bucle buit es produeix quan s'escriu un bucle per iterar però no realitza cap operació dins del bucle. Executar un bucle sense cap operació útil dins pot ser confús.

Exemple: El programa Java següent mostra el cos del bucle buit.

Java
// Java program to demonstrates Empty loop body import java.io.*; class Geeks {  public static void main(String[] args)  {  for (int i = 0; i < 10; i++) {    // Empty body no operations  }  } } 

No es generarà cap sortida perquè el cos del bucle està buit.

Taula resum

Tipus de bucle

Quan utilitzar

matriu de bytes a cadena

Comprovació de l'estat

S'executa almenys una vegada?

per bucle

Quan vulgueu iteracions exactes

Abans del cos del bucle S'anomena controlat per entrada.

no

bucle while

Quan necessitis revisar l'estat primer.

Abans del cos del bucle S'anomena controlat per entrada.

java agitant a int

no

bucle do-while

Quan necessites córrer almenys una vegada

Després del cos del bucle S'anomena Exit-controlled.

per a cada bucle

Quan processeu tots els articles de recollida

Manejat internament

no

Publicacions relacionades:

  • per bucle
  • bucle while
  • bucle do-while
Crea un qüestionari