Bucle infinit

Bucle infinit en programació d'ordinadors és aquell bucle que es repeteix de forma indefinida, ja que la seva condició per finalitzar mai es compleix. Per definició un bucle ha de contenir condicions que estableixin quan comença i quan acaba, de manera que, mentre les condicions es compleixin, executi una seqüència de codi de manera repetitiva. En el cas de cicle infinit, com la condició de finalització no s'aconsegueix, el bucle segueix executant el segment de codi indefinidament.

Exemple de cicle infinit en C (WHILE)

 # Include <stdio.h>

 int main (void)
{
 int x = 0;
 while (x <10)
 {
 printf ("No acabaré mai ! \n");
 }
 return 0;
}

S'observa que la sentència printf ("No acabaré mai ! \n"); sempre s'executa perquè la condició del bucle while () sempre és certa, no existeix una condició de sortida que obligui al bucle a finalitzar. Exactament, no s'arriba a la condició de sortida. Si en l'exemple anterior, dins del bloc de codi del bucle while, es trobés la instrucció

x++;

el bucle hagués executat 10 vegades i hagués acabat.

També existeix aquesta possibilitat amb el while (true). En C:

 # Include <stdio.h>

 int main (void)
{
 while (1)
 {
 printf ("No acabaré en algun moment ! \n");
 }
 return 0;/* De tota manera no arriba mai a executar aquesta línia */
}

Exemple de cicle infinit en C (FOR)

 # Include <stdio.h>

 int main (void)
{
 int cont;
 for (cont = 0; cont <5; cont++)
 {
 if (cont == 4)
 cont = 0;
 printf ("% d \n", cont);
 }
 return 0;
}

En la sentència "printf" es mostra en pantalla 0,1,2,3,0,1,2,3,0,.... infinitament i mentre no arribi a 5 no es tancarà el programa.

I també podem crear un cicle infinit amb el for d'aquesta manera:

 # Include <stdio.h>

 int main (void)
{
 for (;;)
 printf ("Bucle infinit \n");
 return 0;
}

Bucle infinit en Visual Basic (While)

Public function suma2 (a, b) As Double

suma2 = a+b

While (suma2> = 10)
suma2 = suma2+1
Wend

Sempre que la suma de aib sigui superior o igual a 10

En Pascal Una forma de fer un bucle infinit en pascal és amb un cicle repeat és la següent

program FINS-INFINIT;
begin
repeat
writeln ('mai acabés !?);
until 2 = 3;
end.

clar aquesta que 2 mai és igual a 3. I repeteix fins a l'infinit un altre amb un cicle while

program FINS-INFINIT;
begin
while 2 <> 3 do
writeln ('mai acabés !?)
end;
end.

és el mateix que l'anterior.

Vegeu també