Bucle infinito

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda

Bucle infinito en programación es un error que consiste en realizar un ciclo que se repite de forma indefinida ya que su condición para finalizar nunca se cumple.[1]


Por definición un bucle debe contener condiciones que establezcan cuándo empieza y cuándo acaba, de manera que, mientras las condiciones se cumplan, ejecute una secuencia de código de manera repetitiva. En el caso de ciclo infinito, como la condición de finalización no se alcanza, el bucle sigue ejecutando el segmento de código indefinidamente.

Ejemplo de ciclo infinito en C (while)[editar]

#include <stdio.h>
#include <iostream>
 
int main {
	int x = 0;
	while(x < 10) {
		printf("\x¡No acabaré nunca!\n");
	} 
	return 0;
}

Se observa que la sentencia printf("\x¡No acabaré nunca!\n"); siempre se ejecuta porque la condición del bucle while() siempre es cierta, no existe una condición de salida que obligue al bucle a finalizar. Exactamente, no se alcanza la condición de salida. Si en el ejemplo anterior, dentro del bloque de código del bucle while, se encontrase la instrucción

x++;

El bucle hubiera ejecutado 10 veces y hubiera terminado.

También existe esta posibilidad con el while(true). En C:

#include <stdio.h>
#include <iostream>
 
int main(void) {
	while(1) {
		printf("\xadNo acabar\x82 en algún momento!\n");
	}
	return 0; /*De todas maneras no llega nunca a ejecutarse esta l\xd6nea*/
}

Lo mismo en c++[editar]

#include <iostream>
using namespace std;
 
int main(void) {
	while(true){
		cout << "Se repite" << endl;
	}
	return 0;
}

Condición == en for. C++[editar]

#include <iostream>
using namespace std;
 
int main(int argc, char *argv[]) {
 
	for(int i=0;i==i;i++){
		cout << "Se repite" << endl;
	}
 
	return 0;
}

Como siempre la variable i va a ser igual a ella misma, se incrementa e itera infinitas veces.

++ -- en for. C++[editar]

#include <iostream>
using namespace std;
 
int main(int argc, char *argv[]) {
	int h=0;
	for(int i=0;i<5;i++){
		i--;
		h++;
		cout << "Se repitio: " << h << " Veces." << endl;
	}
 
return 0;
}

En este caso, por cada vez que se incrementa la variable, como es menor a 5 se decrementa dentro del cuerpo del bucle. Luego se vuelve a incrementar y de esa manera infinitas veces.

Ejemplo de ciclo infinito en C (for)[editar]

#include <stdio.h>
 
int main(void) {
	int cont;
	for (cont = 0; cont < 5; cont++) {
		cont = cont%4;
		printf("%d\n",cont);
	}
	return 0;
}

En la sentencia "printf" se muestra en pantalla 0,1,2,3,0,1,2,3,0,.... infinitamente y mientras no llegue a 5 no se cerrará el programa.

Y también podemos crear un ciclo infinito con el for de esta forma:

#include <stdio.h>
 
int main(void) {
	for (;;)
		printf("Bucle infinito\n");
	return 0;
}

Bucle infinito en Visual Basic (while)[editar]

Public function suma2(a, b) As Double
 
suma2 = a + b
 
While (suma2 >= 10)
suma2 = suma2 + 1
Wend

Siempre que la suma de a y b sea superior o igual a 10.

Bucle infinito en Visual Basic (do - loop)[editar]

Dim Suma
	Suma = 0
	Do
		Suma = Suma + 1
	Loop

La variable "Suma" se sumará infinitamente 1 unidad.

Bucle infinito en Pascal (repeat)[editar]

Una forma de hacer un bucle infinito en Pascal es con un ciclo repeat como se muestra a continuación:

program HASTAELINFINITO;
begin
	repeat
		writeln('Nunca termina!');
	until 2=3;
end.

Ya que 2 nunca es igual a 3, el código se repite hasta el infinito.

Bucle infinito en Pascal (while)[editar]

program HASTAELINFINITO;
 
begin
	while 2<>3 do
		writeln('Nunca termina!');
	end;
end.

Véase también[editar]

Referencias[editar]

  1. Llanos Ferraris, Diego Rafael (2010). Fundamentos de informática y programación en C. Paraninfo. p. 64. ISBN 9788497327923.