Ya
voy en día 27 y si bien es cierto, han pasado 27 días en el diario, pero han
sido muchos más días fuera de él. Ya que hay días en que no escribo ni una
simple palabra, por lo que no hay que asumir que son 27 días de recorrido.
El
ciclo While
El
ciclo while (mientras) es otra instrucción para crear ciclos, pero a diferencia
del ciclo for, necesita de una condición para poder iniciar o dicho de otra
manera, necesita de una condición para poder repetir su ciclo. Debido a esta
característica es que en ocasiones, no se sabe cuándo va a finalizar el ciclo,
ya que muchas veces, la condición dependerá de lo que indique el usuario. Con
los ciclos while, es muy frecuente que se produzcan ciclos infinitos si no
ponemos atención a las condiciones que hacen que éste finalice.
La
sintaxis de un ciclo while, es la siguiente:
While condicion
Instrucciones...
endWhile
Ejemplo
TextWindow.Write("Ingresa un cinco para continuar
")
numero = TextWindow.ReadNumber()
While
numero <> 5
TextWindow.Write("Debes ingresar el cinco para continuar ")
numero =
TextWindow.ReadNumber()
EndWhile
TextWindow.WriteLine("Gracias, ahora podemos continuar")
La línea “While numero <> 5” se leería
como "Mientras que la variable numero
sea distinto a 5..." Esta condición se ejecutará si el usuario ingresa un
número distinto a 5, que es el número que estamos solicitando. Si el usuario
ingresa cualquier otro número, entonces se cumplirá la condición y se
ejecutarán las líneas que siguen, "Debes
ingresar el cinco para continuar" y continuará ejecutándese el bucle
hasta que el usuario ingrese el número 5.
Por casos como este, es que
a veces no sabemos cuantas veces se va a ejecutar el ciclo, porque depende
exclusivamente de lo que escriba el usuario.
Hay que tener cuidado con
las condiciones que coloquemos, como dije porque podríamos tener un ciclo
infinito, como en el siguiente ejemplo
TextWindow.Write("Ingresa un numero ")
numero = TextWindow.ReadNumber()
While
numero > 0
TextWindow.WriteLine(numero)
EndWhile
En
este caso, si se ingresa cualquier número positivo se ejecutará el ciclo, pero
no hay nada que lo detenga, por lo que se produce un ciclo infinito.
Con
el ciclo while, también podemos hacer ciclos con resultados similares a los
obtenidos con el ciclo for, por ejemplo, aquí mostraré como quedaría la tabla
de multiplicar que antes había hecho con el ciclo for, pero esta vez será hecha
con el ciclo while.
TextWindow.Write("Ingresa un numero ")
num1 = TextWindow.ReadNumber()
num2 = 0
While num2 < 10
num2 = num2 + 1
TextWindow.WriteLine(num1 + " x " + num2 + " = " +
num1 * num2 )
EndWhile
En
este caso, hice una variable llamada num2, la cual inicié con valor cero. Esta
variable irá aumentando de valor en cada ciclo, esto se logró debido a la
variable num2 = num2 + 1. El ciclo
terminará cuando esta variable alcance un valor de 10.
Ocupando
la instrucción while, se puede hacer que un programa continúe realizando tareas
si es que el usuario así lo desea. Colocaré un ejemplo utilizado en el capítulo
7, pero esta vez un poco mejorado añadiendo la instrucción while
opcion =
"s"
While opcion =
"s"
TextWindow.Write("Cual es tu edad? ")
edad = TextWindow.ReadNumber()
If edad >= 18 Then
TextWindow.WriteLine("Eres
mayor de edad")
EndIf
If edad < 18 Then
TextWindow.WriteLine("Eres menor de
edad")
EndIf
TextWindow.Write("Continuar?
s/n ")
opcion = TextWindow.Read()
EndWhile
TextWindow.WriteLine("Hasta
luego")
En este caso, para poder entrar en el bucle, tuve que
crear una variable que lo permita, en este caso fue la variable “opcion” a la cual le di un valor de “s”, entonces, la instrucción while validó que la variable “opción” tuviese ese valor y al ser la
condición verdadera, se inició el bucle. Casi llegando al final del código se
pregunta si se desea continuar. Entonces se ocupó nuevamente a la variable “opción”, a la cual si se escribe una “s”, el programa se volverá a ejecutar,
esto es porque así fue declarada en un principio, donde el bucle se repetirá si
la variable “opción" es igual a
“s”. Por supuesto, el programa
solamente es sensible a la letra “s”
y cualquier otra letra o número, hará que este finalice (aunque en la opción
aparece s/n), pero arreglar eso, es algo que seguramente aprenderé a controlar
en otro capítulo.
Un nuevo ejemplo donde se creará una especie de login
a un sistema
Un nuevo ejemplo
donde se creará una especie de login a un sistema
usuario =
"@"
While usuario
<> "estudiante"
TextWindow.Write("Ingresa tu nombre de
usuario ")
usuario = TextWindow.Read()
If usuario = "estudiante" Then
TextWindow.WriteLine("Bienvenido al
sistema!!!")
Else
TextWindow.WriteLine("Nombre de
usuario no valido")
EndIf
EndWhile
Aquí, nuevamente se creó una variable al inicio del
programa (variable usuario) a la
cual se le asignó un valor de “@” (aunque pudo ser cualquier otro, es solo para
inicializarla) luego, la siguiente línea se podría leer como “mientras usuario sea distinto a estudiante…” Y como efectivamente, la
variable usuario es distinta, entonces se ingresa al bucle, donde solo se podrá
finalizar el programa si se ingresa el login establecido “estudiante”.
Como se puede apreciar, se pueden hacer muchas cosas
con los bucles, pero esto aún no termina porque aún falta ver otro tipo de
bucle, muy parecido a este, pero eso será en el próximo capítulo.
No hay comentarios:
Publicar un comentario