Capítulo 02

40
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

description

Visual Basic

Transcript of Capítulo 02

Page 1: Capítulo 02

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

Page 2: Capítulo 02

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

Page 3: Capítulo 02

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

Page 4: Capítulo 02

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:

Page 5: Capítulo 02

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

Page 6: Capítulo 02

Estructuras de control

42

Formulario

Diagrama de flujo

Nota>10.5SI

NO

Inicio

Nota

“Aprobado”

Fin

Page 7: Capítulo 02

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

Page 8: Capítulo 02

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

Page 9: Capítulo 02

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

Page 10: Capítulo 02

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,

Page 11: Capítulo 02

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

Page 12: Capítulo 02

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:

Page 13: Capítulo 02

Programación con Visual Basic

49

Nota>10.5

Inicio

Nota

“Aprobado”

Fin

SI

“Reprobado”

NO

Formulario

Page 14: Capítulo 02

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

Page 15: Capítulo 02

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

Page 16: Capítulo 02

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

Page 17: Capítulo 02

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

Page 18: Capítulo 02

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

Page 19: Capítulo 02

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:

Page 20: Capítulo 02

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

Page 21: Capítulo 02

Programación con Visual Basic

57

Dato>0

Inicio

Dato

Fin

SI NO

“Par”

Dato % 2 == 0

“Impar”

SI NO “Dato no valido”

Formulario

Page 22: Capítulo 02

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

Page 23: Capítulo 02

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

Page 24: Capítulo 02

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

Page 25: Capítulo 02

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"

Page 26: Capítulo 02

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

Page 27: Capítulo 02

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.

Page 28: Capítulo 02

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.

Page 29: Capítulo 02

Programación con Visual Basic

65

Diagrama de flujo

Suma = 0

Gasto <> -1

Inicio

Suma

Fin

Gasto

NO

Suma = Suma + Gasto

SI

Gasto

Page 30: Capítulo 02

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

Page 31: Capítulo 02

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

Page 32: Capítulo 02

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

Page 33: Capítulo 02

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

Page 34: Capítulo 02

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

Page 35: Capítulo 02

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

Page 36: Capítulo 02

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

Page 37: Capítulo 02

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

Page 38: Capítulo 02

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()

Page 39: Capítulo 02

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.

Page 40: Capítulo 02

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