Apúntate...


Consultas, desarrollo de programas y petición de presupuestos:

miércoles, 22 de agosto de 2012

Bucles Infinitos.


Cuando en un ciclo la condición siempre es verdadera se dice que es un ciclo infinito, pues nunca saldrá del ciclo y el programa no termina. 

Ejemplo:
While TRUE
....
....
Wend


Para evitarlos hay que estar seguros que en el bloque de ordenes haya una orden que modifique el valor de la condición de tal modo que llegue a ser falsa, o que haya una orden  BREAK que se ejecute aunque sea una vez o en determinadas circunstancias.


Ejemplo:
Este del bucle While-Wend nunca saldremos...
Dim cont As Integer = 6
Dim a As Integer = 10
Dim suma As Integer


While (cont > 1)
suma = suma + cont
a -= 1
cont += 1 'cada vez el contador es mayor, por lo tanto siempre sera mayor que 1 (se va acumplir la condicion siempre)
Print suma, a, cont
Wend

¿cual sería la forma  de corregirlo?
Podíamos incluir una condición que al cumpliese salga del bucle:

Dim cont As Integer = 6
Dim a As Integer = 10
Dim suma As Integer


While (cont > 1)
suma = suma + cont
a -= 1
cont += 1 'cada vez el contador es mayor, por lo tanto siempre sera mayor que 1 (se va acumplir la condicion siempre dentro (cont>1)
Print suma, a, cont
If cont = 25 Then 'condicion que si se cumple...
Break ' salimos del bucle
Endif
Wend

 De esta forma  convertimos el bucle infinito, en un bucle normal, de que el programa saldrá al ejecutarse varios ciclos.

Otra forma de corregir el bucle, es usar la variable a, en la condicion del bucle (cont<1) cambiarlo a (a<1), con el cual llegará un momento en que se salga del bucle.

 Descarga del ejemplo completo: Enlace

No hay comentarios:

Publicar un comentario en la entrada

A falta de donativos... un poco de publicidad