Post on 12-Jan-2016
description
Capítulo II
Estructuras de
Control
Es este capítulo utilizaremos las estructuras de control del lenguaje de programación Visual Basic. Estructuras secuenciales Estructuras selectivas Estructuras repetitivas
Estructuras de control
38
Capítulo 2
Estructuras de control
2.1. Estructuras secuenciales
Una estructura es secuencial cuando no existen
bifurcaciones en el código de programación de las
aplicaciones de Visual Basic.
Por ejemplo
La siguiente aplicación es una estructura secuencial,
debido a que se el algoritmo no tiene bifurcaciones, es
decir no existe una condición para que se ejecute el
programa.
Diagrama de flujo
Programación con Visual Basic
39
Formulario
Codificación
Botón Calcular
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim base, altura, area As Integer base = TextBox1.Text altura = TextBox2.Text area = base * altura TextBox3.Text = area
End Sub
Estructuras de control
40
Botón Salir
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.Close()
End Sub
2.2. Estructuras selectivas
2.2.1. Estructura if…then (Selección simple)
La estructura selectiva if…then (Si…entonces)
permite que el flujo del diagrama siga por un
camino especifico, si se cumple una condición o un
conjunto de condiciones.
Si al evaluar la condición (ó condiciones) el
resultado es verdadero, entonces se ejecutan
ciertas operaciones.
La sintaxis para esta estructura es:
Programación con Visual Basic
41
if (condición) then
Grupo de instrucciones;
End if
El diagrama de flujo de la estructura condicional
simple es:
Si la condición es verdadera ejecuta las
sentencias, caso contrario no ejecuta ninguna
sentencia.
Ejemplo
Diseñe un algoritmo y su programa en Visual
Basic, tal que dado como dato la calificación de un
alumno en un examen escriba “Aprobado”, en
caso de que la calificación fuese mayor que 10.5
Estructuras de control
42
Formulario
Diagrama de flujo
Nota>10.5SI
NO
Inicio
Nota
“Aprobado”
Fin
Programación con Visual Basic
43
Codificación
Botón Aceptar
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim nota As Integer nota = TextBox1.Text If nota >= 10.5 Then TextBox2.Text = "Aprobado" End If
End Sub
En la codificación, podemos ver que primero
solicita que se ingrese una nota, luego evalúa si la
condición es verdadera, entonces muestra en un
cuadro de texto el mensaje de Aprobado, como se
muestra en la figura anterior.
Botón Salir
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.Close()
End Sub
Estructuras de control
44
Ejemplo
Dado como dato el sueldo de un trabajador,
aplíquele un aumento del 17% si su sueldo es
inferior a S/. 1000. Muestre en pantalla nuevo
sueldo del trabajador.
Diagrama de flujo
Sueldo<1000SI
NO
Inicio
Sueldo
Sueldo
Fin
Sueldo=Sueldo*1.17
Programación con Visual Basic
45
Formulario
Codificación
Botón Aceptar
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim sueldo As Decimal sueldo = TextBox1.Text If sueldo < 1000 Then sueldo = sueldo * 1.17 End If TextBox2.Text = sueldo
End Sub
Estructuras de control
46
Botón Salir
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.Close()
End Sub
En este caso, convertimos la variable sueldo, en un
tipo de dato Decimal, debido a que la variable
sueldo asume valores que incluyen decimales.
Si ingresamos el sueldo del trabajador en S/. 999,
entonces nos mostrara el nuevo sueldo en 1168.83
soles.
2.2.2. Estructura if…then … else
Podemos ver que la estructura selectiva simple es
limitada, aunque muchas veces necesaria, por
otro lado la alternativa doble nos permite tomar
decisiones en ambos sentidos, es decir cuando la
condición es verdadera ó cuando es falsa, en otras
palabras cuando el resultado de la condición es
verdaderas se ejecutan una ó más instrucciones,
Programación con Visual Basic
47
así mismo si la condición es falsa, entonces se
ejecutan otras instrucciones.
La sintaxis para esta estructura es:
if (condición) then
Grupo de instrucciones 1
else
Grupo de instrucciones 2
End if
El diagrama de flujo de la estructura condicional
doble es:
¿Condición?
Sentencias 1 Sentencias2
SI NO
Estructuras de control
48
Si la condición es verdadera ejecuta las
instrucciones1 (sentencias 1), caso contrario se
ejecutan las instrucciones 2 (sentencias 2).
Ejemplo:
Escriba una aplicación, que permita el ingreso de
la nota de un alumno en un examen, el programa
debe mostrar “Aprobado” si su calificación es
mayor que 10.5, caso contrario muestre
“Reprobado”.
Diagrama de flujo
En esta aplicación vamos a asumir que la nota
ingresada es válida, entiéndase como una nota
valida si está entre 0 y 20 puntos. Entonces el
diagrama de flujo es el siguiente:
Programación con Visual Basic
49
Nota>10.5
Inicio
Nota
“Aprobado”
Fin
SI
“Reprobado”
NO
Formulario
Estructuras de control
50
Codificación
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim nota As Decimal nota = TextBox1.Text If nota > 10.5 Then MsgBox("Aprobado", 1, "Respuesta") Else
MsgBox("Reprobado", MsgBoxStyle.OkOnly, "Respuesta")
End If
End Sub
Botón Salir
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.Close()
End Sub
En la codificación, ahora tenemos la palabra
“else”, que remplaza al “Sino ó Caso contrario” del
Programación con Visual Basic
51
algoritmo, por lo tanto se ejecutará else solo si la
condición no se cumple.
Si la nota ingresada es mayor a 10.5, entonces
muestra “Aprobado”, caso contrario muestra
“Reprobado.
Ejemplo
Escriba una aplicación, que dado como dato el
sueldo de un trabajador, le aplique un aumento
del 17%, si su sueldo es inferior a S/. 1000 y 12%
en caso contrario. El programa debe mostrar el
nuevo sueldo del trabajador.
Formulario
Estructuras de control
52
Diagrama de flujo
Sueldo<1000
Inicio
Sueldo
Fin
SI NO
Sueldo=Sueldo * 1.17 Sueldo=Sueldo * 1.12
Sueldo
Codificación
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim sueldo As Decimal
sueldo = InputBox("Ingrese sueldo actual", "Sistema")
If sueldo < 1000 Then
TextBox1.Text = sueldo * 1.17
Programación con Visual Basic
53
Else TextBox1.Text = sueldo * 1.12 End If End Sub
La ejecución de la aplicación se muestra en las
siguientes figuras:
Si la condición es verdadera entonces
incrementa el sueldo en 17%.
Si la condición es falsa entonces incrementa el
sueldo en 12%.
Otro ejemplo
Implementando la validación del ejemplo anterior
que consiste en ingresar una nota. En el ejemplo
anterior, mencionamos que se suponía una nota
valida, en la práctica se ve que nada se supone,
todo ingreso de dato debe estar correctamente
validado. Para esto las estructuras condicionales
nos ayudan en esta tarea.
Diagrama de flujo
Estructuras de control
54
Nota>=0 y
Nota <= 20
Inicio
Nota
Fin
SI NO
“Aprobado”
Nota>=10.5
“Reprobado”
SI NO “Nota no valida”
Formulario
Codificación
Programación con Visual Basic
55
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim nota As Integer nota = TextBox1.Text If nota >= 0 And nota <= 20 Then If nota >= 10.5 Then TextBox2.Text = "Aprobado" Else TextBox2.Text = "Reprobado" End If Else MsgBox("Nota No valida", , "Sistema") End If
End Sub
Los resultados se muestran, según las condiciones
dadas:
Si se ingresa una nota menor a 0 ó mayor a 20,
entonces se muestra el siguiente cuadro de
diálogo:
Estructuras de control
56
Ejemplo: Par o impar
Implemente una aplicación, que permita el
ingreso de un numero entero positivo mayor que
cero y de cómo resultado si dicho número es par o
impar.
Diagrama de flujo
Programación con Visual Basic
57
Dato>0
Inicio
Dato
Fin
SI NO
“Par”
Dato % 2 == 0
“Impar”
SI NO “Dato no valido”
Formulario
Estructuras de control
58
Codificación
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim dato As Integer dato = TextBox1.Text If dato >= 0 Then If dato Mod 2 = 0 Then TextBox2.Text = "Número Par" Else TextBox2.Text = "Número Impar" End If Else
MsgBox("Dato ingresado no es válido", , "José Luis Morales")
End If
End Sub
Si ingresamos un número par el programa nos
muestra “Número Par”.
Si ingresamos un número impar el programa nos
muestra “Número Impar”.
Programación con Visual Basic
59
2.2.3. La estructura de selección múltiple
Una alternativa a if...then…else, es la sentencia
Select case, la cual evalúa y compara cada
expresión de la sentencia Case con la expresión
que evaluamos, si llegamos al final de la lista de
case y encuentra una condición Verdadera,
ejecuta el código de bloque que haya en Case else.
Veamos un ejemplo.
La sintaxis es:
Select case <Expresión de Prueba>
Case exp1
Sentencias1
Case exp2
Sentencias2
Case exp3
Sentencias3
.
.
.
Case else
Otras sentencias
End select
Estructuras de control
60
Ejemplo: Día de la Semana
El siguiente ejemplo utiliza la estructura Select
case, que solicita el número de un día de la
semana, evalúa la estructura y visualiza el día de
la semana en letras.
Formulario
Codificación
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim num As Integer num = TextBox1.Text
Programación con Visual Basic
61
Select Case num Case 1
TextBox2.Text = "El día 1 es Domingo" Case 2 TextBox2.Text = "El día 2 es Lunes" Case 3 TextBox2.Text = "El día 3 es Martes" Case 4 TextBox2.Text = "El día 4 es Miércoles" Case 5 TextBox2.Text = "El día 5 es Jueves" Case 6 TextBox2.Text = "El día 6 es Viernes" Case 7 TextBox2.Text = "El día 7 es Sábado" Case Else
TextBox2.Text = "Para ese número no hay día de la semana"
End Select
End Sub
Cuando el usuario ingresa el número 4
muestra "El día 4 es Miércoles".
Cuando el usuario ingresa un número
diferente a los numero de los días de la
semana, entonces mostrara el siguiente
mensaje: "Para ese número no hay día de la
semana"
Estructuras de control
62
Ejemplo: Edades
El siguiente ejemplo solicita la edad de una
persona, evalúa su edad y muestra un mensaje de
acuerdo al siguiente detalle:
Si la edad es menor a 12 Años es un niño
Si la edad es de 13 a 18 es un adolescente
Si la edad es de 19 a 30 es un joven
Si la edad es de 31 a 60 es un adulto
Si la edad es más de 60 es un viejito
Formulario
Programación con Visual Basic
63
Codificación
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim edad As Integer edad = TextBox1.Text Select Case edad Case 1 To 12 TextBox2.Text = "Eres un niño" Case 13 To 18 TextBox2.Text = "Eres un adolescente" Case 19 To 30 TextBox2.Text = "Eres un joven" Case 31 To 60 TextBox2.Text = "Eres un adulto" Case Is > 60 TextBox2.Text = "Eres un viejito" Case Else TextBox2.Text = "Esa edad no es válida" End Select
End Sub
2.3. Estructuras repetitivas
2.3.1. Estructura do…while
Es una estructura adecuada para utilizar en un
ciclo que se ejecutara un número definido de
veces. Esta estructura se ejecuta mientras que la
condición sea verdadera, caso contrario termina
el ciclo o bucle.
Estructuras de control
64
La sintaxis para esta estructura es la siguiente:
Do while <condición>
Sentencias
loop
El diagrama de flujo de esta estructura se muestra
a continuación:
¿Condición?
Sentencias
SI
NO
Ejemplo
Se desea determinar la suma de los gastos que
hicimos en nuestro último viaje, pero no sabemos
exactamente cuántos fueron.
Programación con Visual Basic
65
Diagrama de flujo
Suma = 0
Gasto <> -1
Inicio
Suma
Fin
Gasto
NO
Suma = Suma + Gasto
SI
Gasto
Estructuras de control
66
Formulario
Codificación
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim suma, gasto As Decimal suma = 0 gasto = InputBox("Ingrese gasto", "Jose Luis") Do While gasto <> -1 ListBox1.Items.Add(gasto) suma = suma + gasto gasto = InputBox("Ingrese gasto", "José Luis") Loop TextBox1.Text = suma
End Sub
Programación con Visual Basic
67
Ejemplo: Cubo
Escriba un programa que dado un grupo de
números positivos calcule e imprima el cubo de
estos números.
Diagrama de flujo
Num > 0
Inicio
Num ^ 3
Fin
Num
NO
SI
Num
Estructuras de control
68
Formulario
Codificación
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim num As Integer num = InputBox("Ingrese un múmero", "José Luis") Do While num > 0 ListBox1.Items.Add(num ^ 3) num = InputBox("Ingrese un múmero", "Jose Luis") Loop
End Sub
Ejemplo: Compras
En un supermercado una ama de casa pone en su carrito
los artículos que va tomando de los estantes. La señora
Programación con Visual Basic
69
quiere asegurarse de que el cajero le cobre bien lo que ella
ha comprado, por lo que cada vez que toma un artículo
anota su precio junto con la cantidad de artículos iguales
que ha tomado y determina cuánto dinero gastara en ese
artículo; a esto le suma lo que ira gastando en los demás
artículos, hasta que decide que ya tomo todo lo que
necesitaba. Ayúdele a esta señora a obtener el total de
sus compras.
Diagrama de flujo
Inicio
Total = 0
C,P
Total = Total + ( P * C )
C > 0 y P > 0
Total
Fin
NO
SI
Estructuras de control
70
Formulario
Codificación
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim precio, cant, total As Decimal total = 0 Do
cant = InputBox("Ingrese la cantidad del producto", "Jose Luis") precio = InputBox("Ingrese el precio", "Jose Luis")
total = total + (precio * cant) Loop While (cant > 0 And precio > 0) TextBox1.Text = total End Sub
Programación con Visual Basic
71
2.3.2. Estructura for .. next
El ciclo for… next resulta muy útil cuando debemos
ejecutar un bloque de código a condición de que
una variable se encuentre entre un valor mínimo y
otro máximo. El ciclo for también se puede romper
mediante la sentencia Exit for.
La sintaxis para esta estructura es la siguiente:
For expr1=inicio to expr2 =final Step expr3
Sentencias;
Next expr1
Ejemplo: Contar desde el número 1 hasta el 10
Codificación
Estructuras de control
72
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
For i As Integer = 10 To 1 step -1 Debug.Write(i.ToString & " ") Next Debug.WriteLine("")
End Sub
El resultado se muestra en la ventana inmediato,
como se visualiza en la siguiente figura:
Ejemplo: Calcular el factorial de un número
ingresado por el teclado.
Formulario
Programación con Visual Basic
73
Código del botón Aceptar
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim num, f As Integer num = Val(TextBox1.Text) f = 1 For i = 1 To num f = f * i Next
MsgBox("El factorial del número " & num & " es : " & f)
End Sub
Estructuras de control
74
Ejemplo
Diseñe un algoritmo, que dados como datos los
sueldos de los 10 trabajadores de una empresa,
obtenga el total de la nómina de la misma.
Formulario
Código del botón Aceptar
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim sueldo, suma As Decimal suma = 0 ListBox1.Items.Clear()
Programación con Visual Basic
75
For i = 1 To 10 sueldo = InputBox("Ingrese el sueldo del trabajador " & i, "Sistema") ListBox1.Items.Add(sueldo) suma = suma + sueldo
Next TextBox1.Text = suma
End Sub
Ejemplo
Escriba un programa, que dados como datos N
números enteros, obtenga el número de ceros que
hay entre estos números.
Estructuras de control
76
Código del botón Aceptar
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim N, num, contador As Integer N = Val(TextBox1.Text) contador = 0 ListBox1.Items.Clear() For i = 1 To N
num = InputBox("Ingrese el número " & i, "Sistema")
ListBox1.Items.Add(num) If num = 0 Then contador = contador + 1 End If Next TextBox2.Text = contador
End Sub