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
....
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