miércoles, 23 de marzo de 2016

Capitulo 10: Small Basic ciclo While. Parte 1

Diario de un programador.- Dia 27

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.





Gustavo J. Cerda Nilo

Agosto 2015, última modificación Marzo 2016






No hay comentarios:

Publicar un comentario

C++ El apuntador This

El apuntador This En C++, cada objeto tiene acceso a su propia dirección a través de un puntero o apuntador denominado This. Lo...