En esta sesión repasaremos las estructuras cíclicas o bucles, orientándonos al proyecto que posteriormente se implementará como parte de sus proyectos.
Exactamente examinaremos las sentencias While, Do Until y For, pero antes de empezar recordemos la forma de implementar un inputBox que necesitaremos, en su forma básica es:
variable = InputBox(cadena_mensaje, cadena_título)
En donde variable debe ser una cadena por defecto.
Para pasar a la vista de código si damos doble clic en el formulario en realidad estamos dando los clics en el label (se carga el evento Label1_ParentChange()) que ocupa todo el espacio disponible, así que en la lista sobre el código seleccionamos “(Form1 eventos)”:
Luego a la derecha hay otra lista con los eventos del elemento seleccionado, clic en “Load” si es que no se hubiese seleccionado automáticamente, con eso ya tenemos el “Sub Form1_Load()”.
Dim x As Integer = 1
While x <= 5
Si la evaluación “x <= 5” devuelve “verdadero” se ejecutan dos sentencias, primero se agrega al label la cadena “¡Hola mundo!” y un salto de línea, luego se incrementa el contador (aquí muchas veces podríamos cometer el error de olvidar incrementar el contador y obtener un bucle infinito, que nunca dará falso):
Label1.Text += "¡Hola Mundo!" + vbCrLf
x += 1
Así que la implementación completa es:
Dim x As Integer = 1
While x <= 5
Label1.Text += "¡Hola Mundo!" + vbCrLf
x += 1
End While
Otra cosa a tener presente es que se imprime 5 veces el saludo ya que inicia en 1 y se detiene luego de llegar a 5, pero, el resultado será otro si iniciamos elcontador en 0, o si el operador de comparación es “<” en vez de “<=”, el resultado al ejecutar es:

Igualmente agregamos un label, borramos el texto de la propiedad Text y Dock lo pasamos a Fill (vea el ejercicio anterior), para el evento Form2_Load() implementamos:
Dim mensaje As String
mensaje = "¿Cuántos saludos desea imprimir?"""
Dim x = 1, num As Byte
num = Byte.Parse(InputBox(mensaje, "¿Continuar?"))
While x <= num
Label1.Text += "¡Hola Mundo!" + vbCrLf
x += 1
End While
En resumen, Do Until se continuará ejecutando hasta que la condición llegue a devolver “Verdadero”, si a la primera la condición es verdadera, el bucle no se ejecutará. La sntaxis:
Do Until condición_evaluar
sentencias_mientras_faso
Loop
Por ejemplo, para solicitar el ingreso de un valor iniciaremos un bucle, este bucle no se detendrá hasta que se ingrese el valor solicitado (debe ingresar la cadena “18”).
Así que agregamos un cuadro de texto (dejaré su nombre por defecto TextBox1) en donde el usuario ingresará un valor, también agregamos un ítem en el mainMenu1 y le implementamos:
Private Sub MenuItem1_Click()
Dim cadena As String = TextBox1.Text
Do Until cadena = "18"
cadena = InputBox("Ingrese su edad", "Su edad")
Loop
TextBox1.Text = cadena
MessageBox.Show("El dato ingresado es correcto", "OK")
End Sub
Si el usuario a la primera ingresa “18” el bucle Until nunca se ejecutará ya que la evaluación devolverá “verdadero”.
Nota: Si desea evitar errores con los espacios en blanco revise la función Trim que usamos en el ejercicio anterior.
For valor_inicial To valor_final [Step paso]
sentencias_mientras_no_se_cumpla_valor_final
Next
Por ejemplo, la sentencia:
For x As Integer = 1 To x <=10 Step 1
Label1.Text = “Saludo “ + x.ToString
Next
Ímprimirá desde “Saludo 1” hasta "Saludo 10”, y si “Step = 1” entonces podría omitirse, este es el incremento por defecto, pero si desea dar los pasos de 2 en 2 entonces esa línea obligatoriamente sería:
For x As Integer = 1 To x <=10 Step 2
Preparemos el diseño anterior, tres TextBox para pedir que ingrese el número de inicio, el número final y el incremento (salto), agregamos un ítem al mainMenu1 e implementamos:
Label4.Text = ""
Dim inicio, fin, paso As Integer
inicio = Integer.Parse(TextBox1.Text)
fin = Integer.Parse(TextBox2.Text)
paso = Integer.Parse(TextBox3.Text)
For x As Integer = inicio To fin Step 3
Label4.Text += x.ToString + " "
Next
Esto nos llevará a encontrar otras situaciones (la impredictibilidad del usuario) y otras soluciones.
Exactamente examinaremos las sentencias While, Do Until y For, pero antes de empezar recordemos la forma de implementar un inputBox que necesitaremos, en su forma básica es:
variable = InputBox(cadena_mensaje, cadena_título)
En donde variable debe ser una cadena por defecto.
El Proyecto
He iniciado un nuevo proyecto SmartDevice con el lenguaje VisualBasic al que he nombrado “Semana03” con todas las otras opciones por defecto y agregamos un label al que establecemos las siguientes propiedades:- Text: Lo dejamos en blanco
- Dock: Fill (clic en el centro de la imagen desplegable)
Para pasar a la vista de código si damos doble clic en el formulario en realidad estamos dando los clics en el label (se carga el evento Label1_ParentChange()) que ocupa todo el espacio disponible, así que en la lista sobre el código seleccionamos “(Form1 eventos)”:
Luego a la derecha hay otra lista con los eventos del elemento seleccionado, clic en “Load” si es que no se hubiese seleccionado automáticamente, con eso ya tenemos el “Sub Form1_Load()”.
Trabajando con While
Recordemos mostrar el clásico “Hola mundo” un número determinado de veces (5 por ejemplo), así que en el evento Load del Form1 implementamos la variable “x” que nos servirá como contador y la iniciamos en el valor entero: 1, mientras el valor almacenado en esta variable sea menor o igual a 5:Dim x As Integer = 1
While x <= 5
Si la evaluación “x <= 5” devuelve “verdadero” se ejecutan dos sentencias, primero se agrega al label la cadena “¡Hola mundo!” y un salto de línea, luego se incrementa el contador (aquí muchas veces podríamos cometer el error de olvidar incrementar el contador y obtener un bucle infinito, que nunca dará falso):
Label1.Text += "¡Hola Mundo!" + vbCrLf
x += 1
Así que la implementación completa es:
Dim x As Integer = 1
While x <= 5
Label1.Text += "¡Hola Mundo!" + vbCrLf
x += 1
End While
Otra cosa a tener presente es que se imprime 5 veces el saludo ya que inicia en 1 y se detiene luego de llegar a 5, pero, el resultado será otro si iniciamos elcontador en 0, o si el operador de comparación es “<” en vez de “<=”, el resultado al ejecutar es:

Form2, pidiendo datos
Ahora usaremos un InputBox para solicitar que el usuario ingrese el número de veces que desea imprimir el saludo, menú “Proyecto” clic en “Agregar WindowsForm…”, le dejaré el nombre por defecto y clic en “Agregar”.Igualmente agregamos un label, borramos el texto de la propiedad Text y Dock lo pasamos a Fill (vea el ejercicio anterior), para el evento Form2_Load() implementamos:
Dim mensaje As String
mensaje = "¿Cuántos saludos desea imprimir?"""
Dim x = 1, num As Byte
num = Byte.Parse(InputBox(mensaje, "¿Continuar?"))
While x <= num
Label1.Text += "¡Hola Mundo!" + vbCrLf
x += 1
End While
- Variable mensaje de tipo cadena
- Iniciamos mensaje asignándole un valor
- Dos variable de tipo Byte: x y num
- Pedimos un número y lo asignamos a num
- Mientras x sea menor o igual a num
- Agregamos al label un saludo y un salto de línea
- Incrementamos el contador x += 1
- Finaliza el bucle y vuelve a evaluar la condición
Usando Do Until
Do Until sería el antagónico de While en el tema de evaluar la condición. Mientras un bucle con While se detendrá cuando la condición devuelva “False”, Do Until se detendrá cuando la condición devuelva “True”.En resumen, Do Until se continuará ejecutando hasta que la condición llegue a devolver “Verdadero”, si a la primera la condición es verdadera, el bucle no se ejecutará. La sntaxis:
Do Until condición_evaluar
sentencias_mientras_faso
Loop
Por ejemplo, para solicitar el ingreso de un valor iniciaremos un bucle, este bucle no se detendrá hasta que se ingrese el valor solicitado (debe ingresar la cadena “18”).
Así que agregamos un cuadro de texto (dejaré su nombre por defecto TextBox1) en donde el usuario ingresará un valor, también agregamos un ítem en el mainMenu1 y le implementamos:
- Recuperamos la cadena ingresada en el TextBox1
Dim cadena As String = TextBox1.Text - Iniciamos el bucle Do Until que se ejecutará mientras el valor ingresado no sea la cadena “18”:
Do Until cadena = “18” - Si resulta falso, pedimos que ingrese su edad:
cadena = InputBox(“Ingrese su edad”, “Su edad”) - El bucle se detendrá cuando el usuario llegue a ingresar la cadena “18”, entonces la edad correcta la escribimos en el TextBox1 y mostramos un mensaje de bienvenida:
TextBox1.Text = cadena
MessageBox.Show(El dato ingresado es correcto”; “OK”)
Private Sub MenuItem1_Click()
Dim cadena As String = TextBox1.Text
Do Until cadena = "18"
cadena = InputBox("Ingrese su edad", "Su edad")
Loop
TextBox1.Text = cadena
MessageBox.Show("El dato ingresado es correcto", "OK")
End Sub
Si el usuario a la primera ingresa “18” el bucle Until nunca se ejecutará ya que la evaluación devolverá “verdadero”.
Nota: Si desea evitar errores con los espacios en blanco revise la función Trim que usamos en el ejercicio anterior.
Usando For
La estructura “For” es una de las más usadas en la mayoría (si no en todos) de los lenguajes de programación, su sintaxis es:For valor_inicial To valor_final [Step paso]
sentencias_mientras_no_se_cumpla_valor_final
Next
Por ejemplo, la sentencia:
For x As Integer = 1 To x <=10 Step 1
Label1.Text = “Saludo “ + x.ToString
Next
Ímprimirá desde “Saludo 1” hasta "Saludo 10”, y si “Step = 1” entonces podría omitirse, este es el incremento por defecto, pero si desea dar los pasos de 2 en 2 entonces esa línea obligatoriamente sería:
For x As Integer = 1 To x <=10 Step 2
Preparemos el diseño anterior, tres TextBox para pedir que ingrese el número de inicio, el número final y el incremento (salto), agregamos un ítem al mainMenu1 e implementamos:
Label4.Text = ""
Dim inicio, fin, paso As Integer
inicio = Integer.Parse(TextBox1.Text)
fin = Integer.Parse(TextBox2.Text)
paso = Integer.Parse(TextBox3.Text)
For x As Integer = inicio To fin Step 3
Label4.Text += x.ToString + " "
Next
Esto nos llevará a encontrar otras situaciones (la impredictibilidad del usuario) y otras soluciones.
No hay comentarios.:
Publicar un comentario
Tu comentario