Sentències de ramificació

Les sentències de ramificació permeten alterar el fluxe d'execució estàndard d'un mètode, un bucle, o un switch.

Aprendràs:

A utilitzar la sentència break A utilitzar la sentènciea continue A utilitzar la sentència return

Sentència break

La sentència break té dos usos

A la secció 5 ja vam veure el seu ús a la sentència switch. En aquesta ocasió veurem el seu ús per a finalitzar loops.

El següent exemple és una demostració d'un loop que inclou un break. La condició per a continuar el loop sempre és true, però s'aturarà quan la variable i sigui 5 amb l'ús de la sentència break que hi ha a dintre del condicional.

int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } System.out.print("Final"); int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } System.out.print("Final"); Aquest bucle, en principi, no pararia mai, ja que la seva condició sempre és true. int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } System.out.print("Final"); i: 10 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } System.out.print("Final"); i: 10 10 no és igual a 5 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } System.out.print("Final"); i: 10 10 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } System.out.print("Final"); i: 10 10 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } System.out.print("Final"); i: 9 10 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } System.out.print("Final"); i: 9 10 9 no és igual a 5 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } System.out.print("Final"); i: 9 10 9 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } System.out.print("Final"); i: 9 10 9 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } System.out.print("Final"); i: 8 10 9 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } System.out.print("Final"); i: 8 10 9 8 no és igual a 5 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } System.out.print("Final"); i: 8 10 9 8 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } System.out.print("Final"); i: 8 10 9 8 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } System.out.print("Final"); i: 7 10 9 8 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } System.out.print("Final"); i: 7 10 9 8 7 no és igual a 5 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } System.out.print("Final"); i: 7 10 9 8 7 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } System.out.print("Final"); i: 7 10 9 8 7 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } System.out.print("Final"); i: 6 10 9 8 7 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } System.out.print("Final"); i: 6 10 9 8 7 6 no és igual a 5 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } System.out.print("Final"); i: 6 10 9 8 7 6 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } System.out.print("Final"); i: 6 10 9 8 7 6 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } System.out.print("Final"); i: 5 10 9 8 7 6 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } System.out.print("Final"); i: 5 10 9 8 7 6 En aquest punt, i sí és igual a 5 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } System.out.print("Final"); i: 5 10 9 8 7 6 5 El break trencarà el bucle int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } System.out.print("Final"); i: 5 10 9 8 7 6 5 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } System.out.print("Final"); i: 5 10 9 8 7 6 5 int i = 10; while (true) { System.out.print(i + " "); if (i == 5) { break; } i--; } System.out.print("Final"); i: 5 10 9 8 7 6 5 FINAL

La sentència break només finalitza el bucle en el qual està col·locada. Si aquest bucle està dintre d'un altre bucle, el bucle exterior no s'aturarà.

El següent programa exemplifica aquest comportament:

for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } Com i és menor que 5 iterem el bucle extern. for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 0 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 0 j < 5 és true, s'itera el bucle intern for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 0 j: 0 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 0 j: 0 Com 0 == 0 s'entra en el if for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 0 j: 0 0 El break finalitza el bucle intern for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 0 j: 0 0 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 0 0 El bucle extern encara no ha finalitzat for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 0 0 ⏎ Es fa una altra iteració del bucle extern. for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 1 0 ⏎ El bucle intern torna a començar de nou for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 1 0 ⏎ for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 1 j: 0 0 ⏎ for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 1 j: 0 0 ⏎ Aquesta vegada la i és diferent de j, per tant no es farà el break, i el bucle intern encara no finalitza. for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 1 j: 0 0 ⏎ 0 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 1 j: 0 0 ⏎ 0 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 1 j: 1 0 ⏎ 0 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 1 j: 1 0 ⏎ 0 Ara sí que es farà el break. for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 1 j: 1 0 ⏎ 0 1 El bucle intern finalitza. for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 1 j: 1 0 ⏎ 0 1 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 1 0 ⏎ 0 1 L'extern encara no ha finalitzat... for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 1 0 ⏎ 0 1 ⏎ Es fa una altra iteració de l'extern for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 2 0 ⏎ 0 1 ⏎ Torna a començar de zero l'intern for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 2 0 ⏎ 0 1 ⏎ for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 2 j: 0 0 ⏎ 0 1 ⏎ for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 2 j: 0 0 ⏎ 0 1 ⏎ No es farà el break for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 2 j: 0 0 ⏎ 0 1 ⏎ 0 No es farà el break for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 2 j: 0 0 ⏎ 0 1 ⏎ 0 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 2 j: 1 0 ⏎ 0 1 ⏎ 0 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 2 j: 1 0 ⏎ 0 1 ⏎ 0 Encara no es fa el break. Continua el bucle intern. for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 2 j: 1 0 ⏎ 0 1 ⏎ 0 1 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 2 j: 1 0 ⏎ 0 1 ⏎ 0 1 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 2 j: 2 0 ⏎ 0 1 ⏎ 0 1 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 2 j: 2 0 ⏎ 0 1 ⏎ 0 1 Ara sí que es farà el break for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 2 j: 2 0 ⏎ 0 1 ⏎ 0 1 2 Finalitza el bucle intern for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 2 j: 2 0 ⏎ 0 1 ⏎ 0 1 2 Finalitza el bucle intern for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 2 0 ⏎ 0 1 ⏎ 0 1 2 Segueix el bucle extern for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 2 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 3 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 3 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 3 j: 0 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 3 j: 0 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 3 j: 0 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 3 j: 0 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 3 j: 1 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 3 j: 1 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 3 j: 1 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 3 j: 1 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 3 j: 2 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 3 j: 2 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 3 j: 2 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 3 j: 2 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 3 j: 3 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 3 j: 3 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 3 j: 3 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 3 j: 3 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 3 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 3 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 ⏎ for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 4 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 ⏎ for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 4 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 ⏎ for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 4 j: 0 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 ⏎ for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 4 j: 0 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 ⏎ for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 4 j: 0 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 ⏎ 0 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 4 j: 0 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 ⏎ 0 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 4 j: 1 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 ⏎ 0 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 4 j: 1 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 ⏎ 0 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 4 j: 1 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 ⏎ 0 1 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 4 j: 1 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 ⏎ 0 1 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 4 j: 2 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 ⏎ 0 1 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 4 j: 2 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 ⏎ 0 1 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 4 j: 2 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 ⏎ 0 1 2 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 4 j: 2 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 ⏎ 0 1 2 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 4 j: 3 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 ⏎ 0 1 2 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 4 j: 3 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 ⏎ 0 1 2 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 4 j: 3 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 ⏎ 0 1 2 3 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 4 j: 3 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 ⏎ 0 1 2 3 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++>) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 4 j: 4 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 ⏎ 0 1 2 3 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++>) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 4 j: 4 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 ⏎ 0 1 2 3 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++>) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 4 j: 4 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 ⏎ 0 1 2 3 4 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++>) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 4 j: 4 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 ⏎ 0 1 2 3 4 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++>) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 4 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 ⏎ 0 1 2 3 4 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++>) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 4 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 ⏎ 0 1 2 3 4 ⏎ S'ha arribat a i: 5, i com no és menor a 5 el bucle extern finalitza for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++>) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } i: 5 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 ⏎ 0 1 2 3 4 ⏎ S'ha arribat a i: 5, i com no és menor a 5 el bucle extern finalitza for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++>) { System.out.print(j + " "); if (i == j) { break; } } System.out.println(); } // el programa continua per aqui... 0 ⏎ 0 1 ⏎ 0 1 2 ⏎ 0 1 2 3 ⏎ 0 1 2 3 4 ⏎

Etiquetar loops

Hem vist que el break només finalitza el bucle més interior; on está col·locat el break.

També és possible finalitzar un bucle més extern amb break, però és necessari posar una etiqueta al bucle que volem finalitzar.

Per a posar una etiqueta a un bucle, es posa el nom de la etiqueta seguit de dos punts :, just abans del bucle.

nometiqueta: for (...) { }

Després, podem indicar al break quin bucle volem finalitzar indicant el nom de la etiqueta just després de la paraula break.

bucleX: for (...) { for (...) { for (...) { break bucleX; // finalitza el bucle etiquetat amb 'bucleX' } } }

El següent exemple mostra com finalitzar un bucle etiquetat:

bucle_de_la_i: for (int i = 0; i < 10; i++) { bucle_de_la_j: for (int j = 0; j < 10; j++) { System.out.print(j + " "); if (i == j) { break bucle_de_la_i; } } System.out.println(); } bucle_de_la_i: for (int i = 0; i < 10; i++) { bucle_de_la_j: for (int j = 0; j < 10; j++) { System.out.print(j + " "); if (i == j) { break bucle_de_la_i; } } System.out.println(); } bucle_de_la_i: for (int i = 0; i < 10; i++) { bucle_de_la_j: for (int j = 0; j < 10; j++) { System.out.print(j + " "); if (i == j) { break bucle_de_la_i; } } System.out.println(); } i: 0 bucle_de_la_i: for (int i = 0; i < 10; i++) { bucle_de_la_j: for (int j = 0; j < 10; j++) { System.out.print(j + " "); if (i == j) { break bucle_de_la_i; } } System.out.println(); } i: 0 bucle_de_la_i: for (int i = 0; i < 10; i++) { bucle_de_la_j: for (int j = 0; j < 10; j++) { System.out.print(j + " "); if (i == j) { break bucle_de_la_i; } } System.out.println(); } i: 0 j: 0 bucle_de_la_i: for (int i = 0; i < 10; i++) { bucle_de_la_j: for (int j = 0; j < 10; j++) { System.out.print(j + " "); if (i == j) { break bucle_de_la_i; } } System.out.println(); } i: 0 j: 0 bucle_de_la_i: for (int i = 0; i < 10; i++) { bucle_de_la_j: for (int j = 0; j < 10; j++) { System.out.print(j + " "); if (i == j) { break bucle_de_la_i; } } System.out.println(); } i: 0 j: 0 0 Aquest break finalitzarà el bucle etiquetat amb bucle_de_la_i, és a dir, l'extern. bucle_de_la_i: for (int i = 0; i < 10; i++) { bucle_de_la_j: for (int j = 0; j < 10; j++) { System.out.print(j + " "); if (i == j) { break bucle_de_la_i; } } System.out.println(); } i: 0 j: 0 0 Aquest break finalitzarà el bucle etiquetat amb bucle_de_la_i, és a dir, l'extern. bucle_de_la_i: for (int i = 0; i < 10; i++) { bucle_de_la_j: for (int j = 0; j < 10; j++) { System.out.print(j + " "); if (i == j) { break bucle_de_la_i; } } System.out.println(); } // el programa continua aquí... i: 0 j: 0 0

Sentència continue

La sentència continue fa que un bucle se salti la iteració actual i vagi a la següent.

Es pot utilitzar amb tots els tipus de bucles:

Al següent exemple, només els nombres parells s'imprimeixen. Els senars se salten:

int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } System.out.print("Final"); int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } System.out.print("Final"); int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } System.out.print("Final"); n: 5 int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 0 El 0 és parell, no s'entra a l'if int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 0 int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 0 int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 0 0 int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 1 0 L'1 és senar, sí que s'entra a l'if int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 1 0 El continue fa que se salti la iteració actual i vagi directament a la modificació int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 1 0 int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 1 0 int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 2 0 El 2 és parell int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 2 0 int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 2 0 int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 2 0 2 int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 3 0 2 El 3 és senar int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 3 0 2 Directament a la modificació int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 3 0 2 int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 3 0 2 int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 4 0 2 El 4 és parell. No s'entra a l'if int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 4 0 2 int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 4 0 2 int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 4 0 2 4 El bucle acaba quan i: 5 ja no és menor a n: 5 int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 5 0 2 4 int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } System.out.print("Final"); n: 5 0 2 4 int n = 5; for (int i = 0; i < n; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); } System.out.print("Final"); n: 5 0 2 4 FINAL

En la pràctica la sentència continue s'utilitza molt poc. Normalment es pot reescriure el bucle per a que se salti la iteració sense utilitzar continue. L'anterior programa es podria haver escrit així:

int n = 5; for (int i = 0; i < n; i++) { if (i % 2 == 0) { System.out.print(i + " "); } }

Què imprimeix el següent codi?

for (int i = 0; i < 11; i++) { if (i % 2 != 0) { continue; } System.out.print(i + " "); }
0 2 4 6 8 10 1 3 5 7 9 0 2 4 6 8 10 11 0

Quants números imprimex el següent programa?

for (int i = 0; i < 5; i++) { System.out.println(i); if (i < 3) { continue; } else { for (int j = 0; j < 5; j++) { System.out.println(j); } } }
15

Gàlib

Sentència return

La sentència return finalitza l'execució del programa i es pot utilitzar a qualsevol lloc del codi font.

Al següent exemple, s'imprimeixen tots els nombres fins a trobar el número 3, moment en el que no finalitza només el bucle sinó el programa sencer:

int n = 5; for (int i = 0; i < n; i++) { if (i == 3) { return; } System.out.print(i + " "); } System.out.print("Final"); int n = 5; for (int i = 0; i < n; i++) { if (i == 3) { return; } System.out.print(i + " "); } System.out.print("Final"); int n = 5; for (int i = 0; i < n; i++) { if (i == 3) { return; } System.out.print(i + " "); } System.out.print("Final"); n: 5 int n = 5; for (int i = 0; i < n; i++) { if (i == 3) { return; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 0 El 0 no és 3, no s'entra a l'if int n = 5; for (int i = 0; i < n; i++) { if (i == 3) { return; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 0 int n = 5; for (int i = 0; i < n; i++) { if (i == 3) { return; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 0 int n = 5; for (int i = 0; i < n; i++) { if (i == 3) { return; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 0 0 int n = 5; for (int i = 0; i < n; i++) { if (i == 3) { return; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 1 0 L'1 no és igual a 3, no entra a l'if int n = 5; for (int i = 0; i < n; i++) { if (i == 5) { return; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 1 0 int n = 5; for (int i = 0; i < n; i++) { if (i == 5) { return; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 1 0 int n = 5; for (int i = 0; i < n; i++) { if (i == 3) { return; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 1 0 1 int n = 5; for (int i = 0; i < n; i++) { if (i == 3) { return; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 2 0 1 El 2 no és igual a 3, no entra a l'if int n = 5; for (int i = 0; i < n; i++) { if (i == 3) { return; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 2 0 1 int n = 5; for (int i = 0; i < n; i++) { if (i == 3) { return; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 2 0 1 int n = 5; for (int i = 0; i < n; i++) { if (i == 3) { return; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 2 0 1 2 int n = 5; for (int i = 0; i < n; i++) { if (i == 3) { return; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 3 0 1 2 El 3 és el número que estem buscant int n = 5; for (int i = 0; i < n; i++) { if (i == 3) { return; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 3 0 1 2 Per tant executem la instrucció de retorn i el programa finalitza inmediatament int n = 5; for (int i = 0; i < n; i++) { if (i == 3) { return; } System.out.print(i + " "); } System.out.print("Final"); n: 5 i: 3 0 1 2

En la pràctica la sentència return no es sol utilitzar dins de bucles. Normalment es pot reescriure el bucle per a que se salti les execucions amb break i s'acabi el programa per si sol. L'anterior programa es podria haver escrit així:

int n = 5; for (int i = 0; i < n; i++) { if (i == 3) { break; } else if (i % 2 == 0) { System.out.print(i + " "); } } if(i != 3) System.out.print("Final");

Què imprimeix el següent codi?

for (int i = 0; i < 11; i++) { if (i % 2 != 0) { return; } System.out.print(i + " "); }
0 2 4 6 8 10 1 3 5 7 9 0 2 4 6 8 10 11 0

Quants números imprimex el següent programa?

for (int i = 0; i < 5; i++) { System.out.println(i); if (i < 3) { continue; } else { return; } }
4