Ficha de trabajo # 3 y Apellido : Grado : 5to Área : Fecha : / / Profesor : Nro de Or. : Estructuras de Control Estructuras de Control Las estructuras de control le permiten controlar el flujo de ejecución del programa. Tenemos dos tipos de estructuras de control: Estructuras de decisión Estructuras de bucle * Estructuras de Decisión Los procedimientos de Visual Basic pueden probar condiciones y, dependiendo de los resultados, realizar diferentes operaciones. Entre las estructuras de decisión que acepta Visual Basic se incluyen las siguientes: IfThen IfThen Select Case IfThen Use la estructura IfThen para ejecutar una o más instrucciones basadas en una condición. Puede utilizar la sintaxis de una línea o un bloque de varias líneas: If condición Then Sentencias If condición Then Sentencias Condición normalmente es una comparación, pero puede ser cualquier expresión que dé como resultado o False; Si condición es, Visual Basic ejecuta todas las sentencias que siguen a la palabra clave Then. Puede utilizar sintaxis de una línea o de varias líneas para ejecutar una sentencia basada en una condición, los siguientes dos ejemplos son equivalentes: Emprender acciones diferentes cuando el valor de una condición es true y cuando es false Pág.: 1
If val(txtsalario) < 800 Then txtdescuento = 10 If val(txtsalario) < 800 Then txtdescuento = 10 Observe que el formato de una única línea de IfThen no utiliza la instrucción. Si se desea ejecutar más de una línea de código cuando condición sea, debe utilizar la sintaxis de bloque de varias líneas IfThen. If val(txtprecio) < 50 Then txtigv = Val(txtPrecio) * 0.18 If chkalumnouni.value=1 Then txtcosto = Val(txtCosto) * 0.7 txtcódigo.enabled = IfThen Utilice un bloque IfThe para definir varios bloques de sentencias, uno de los cuales se ejecutará: If condición1 Then [bloque de sentencias 1] [If condición2 Then [ [bloque de sentencias 2]] [bloque de sentencias n]] Pág.: 2
Visual Basic evalúa primero condición1. Si es False, Visual Basic procede a evaluar condición2 y así sucesivamente, hasta que encuentre una condición. Cuando encuentra una condición, Visual Basic ejecuta el bloque de instrucciones correspondientes y después ejecuta el código que sigue a. Opcionalmente, puede incluir un bloque de instrucciones, que Visual Basic ejecutará sin ninguna de las condiciones es. IfThenIf es un caso especial de IfThen. Observe que puede tener cualquier número de cláusula If o ninguna. Puede incluir una cláusula sin tener en cuenta si tiene o no cláusula If. Por ejemplo, la aplicación podría realizar distintas acciones dependiendo del control en que se haya hecho clic de una matriz de controles de menú: Private Sub mnucut_click (Index As Integer) If Index = 0 Then Comando Cortar CopyActiveControl Llama a procedimientos generales ClearActiveControl If Index = 1 Then Comando Copiar CopyActiveControl If Index = 2 Then Comando Borrar ClearActiveControl Comando Pegar PasteActiveControl End Sub If ClaveUsuario= DSI Then Permite al usuario entrar al sistema Mostrar un mensaje advirtiendo error en la clave Private Sub DeterminaCondición ( ) If Val (txtpromedio) >=13 Then txtcondición = Aprobado If Val (txtpromedio) >= 10 Then txtcondición = Asistente txtcondición = Desaprobado End Sub Observe que siempre puede agregar más cláusulas If a la estructura IfThen. Sin embargo, esta sintaxis puede resultar tediosa de escribir cuando cada If compara la misma expresión con un valor distinto. Para estas situaciones, puede utilizar la estructura de decisión Select Case. Pág.: 3
Select Case Visual Basic proporciona la estructura Select Case como alternativa a IfThen para ejecutar selectivamente un bloque de sentencias entre varios bloques. La sentencia Select Case ofrece posibilidades similares a la instrucción IfThen, pero hace que el código sea más legible cuando hay varias opciones. La estructura Select Case funciona con una única expresión de prueba que se evalúa una vez solamente, al principio de la estructura. Visual Basic compara el resultado de esta expresión con los valores de cada Case de la estructura. Si hay una coincidencia, ejecuta el bloque de sentencias asociado a ese Case: Selec Case expresión_prueba [Case lista_expresiones1 [bloque de sentencias 1]] [Case lista_expresiones2 [bloque de sentencias 2]]... [Case [bloque de sentencias n]] End Select Cada lista_expresiones es una lista de uno a más valores. Si hay más de un valor en una lista, se separan los valores con comas. Cada bloque de sentencias contiene cero o más instrucciones. Si más de un Case coincide con la expresión de prueba, sólo se ejecutará el bloque de instrucciones asociado con la primera coincidencia. Visual Basic ejecuta las instrucciones de la cláusula (opcional) Case si ningún valor de la lista de expresiones coincide con la expresión de prueba. Por ejemplo, suponga que agrega otro comando al menú Edición en el ejemplo IfThen. Podría agregar otra cláusula If o podría escribir la función con Select Case: Private Sub mnucut_click (Index As Integer) Select Case Index Case 0 Comando Cortar CopyActiveControl Llama a procedimientos generales ClearActiveControl Case 1 Comando copiar. CopyActiveControl Case 2 Comando borrar. ClearActiveControl Case 3 Comando Pegar. PasteActiveControl Case frmfind.show Muestra el cuadro de diálogo Buscar. End Select End Sub Pág.: 4
Select Case TipoUsuario Case Supervisor Proporciona al usuario privilegios de Supervisor Case Usuario Proporciona al usuario privilegios de Usuario Case Proporciona al usuario privilegio de invitado End Select Observe que la estructura Select Case evalúa una expresión cada vez que al principio de la estructura. Por el contrario, la estructura IfThen puede evaluar una expresión diferente en cada sentencia If. Sólo puede sustituir una esructura IfThen con una estructura Select Case si la intrucción If y cada instrucción If evalúa la misma expresión. Otros Ejemplos If Ventas > 100000 Then strdscto = Format (0.10, Fixed ) If Ventas > 50000 Then strdscto = Format (0.05, Fixed ) strdscto = Format (0.02, Fixed ) Select Case Val(txtCantidad) Case 1 txtdscto = 0.0 Case 2,3 txtdscto = 0.05 Case 4 To 6 sngdscto = 0.10 Case txtdscto = 0.20 End Select Pág.: 5
Ejercicio - 1: Cuatro notas entre 0 y 20 representan las calificaciones de un estudiante de un curso de programación. Elaborar una aplicación para obtener el promedio de esas calificaciones y visualizar su puntuación de acuerdo al siguiente cuadro: Promedio Puntuación 19-20 A 16-18 B 11-15 C 6-10 D 0-5 E El diseño de la interfaz deberá ser similar a la figura mostrada: Para el desarrollo de esta aplicación, proceda a ubicar los siguientes controles en el formulario: 7 etiquetas 7 cajas de texto 3 botones de comando Luego, proceda a establecer las propiedades según se indica a continuación: Form1 BorderStyle FrmNotas 3-Fixed Dialog Puntuación de un estudiante Label1 LblAlumno Alumno: Pág.: 6
Label2 LblN1 Nota 1: Label3 LblN2 Nota 2: Label4 LblN3 Nota 3: Label5 LblN4 Nota 4: Label6 LblPromedio Promedio: Label7 LblPuntuacion Puntuación: 1 TxtAlumno 2 TxtN1 Pág.: 7
3 TxtN2 4 TxtN3 5 TxtN4 6 BackColor Locked TxtPromedio &H80000004& 7 BackColor Locked TxtPuntuacion &H80000004& Command1 Default CmdAceptar &Aceptar Command2 CmdLimpiar &Limpiar Command3 Cancel CmdSalir &Salir Una vez establecidas las propiedades, proceda a ingresar el código que se indica: Pág.: 8
Botón Aceptar Private Sub CmdAceptar_Click() N1 = Val(TxtN1) N2 = Val(TxtN2) N3 = Val(TxtN3) N4 = Val(TxtN4) Promedio = Int((N1 + N2 + N3 + N4) / 4) TxtPromedio = Str(Promedio) If Promedio >= 19 And Promedio <= 20 Then TxtPuntuacion = A If Promedio >= 16 And Promedio <= 18 Then TxtPuntuacion = B If Promedio >= 11 And Promedio <= 15 Then TxtPuntuacion = C If Promedio >= 6 And Promedio <= 10 Then TxtPuntuacion = D If Promedio >= 0 And Promedio <= 5 Then TxtPuntuacion = B MsgBox Error de datos, vbcritical, Mensaje End Sub Botón Limpiar Asigar un espacio en blanco todos los cuadros de texto, ejemplo: TxtN1= o también puede usar: TxtN1 = Empty Boton Salir END Pág.: 9
Ejercicio 2: Se desea elaborar la boleta de pago de los trabajadores de una fábrica. Para ello se cuenta con los siguientes datos de entrada: Apellidos y nombres del trabajador Sueldo básico Horas extras trabajadas Además, se sabe que los trabajadores laboran en dos turnos: diurno y nocturno. Y que la tarifa por las horas extras diurnas es de 10 soles y por las horas extras nocturnas es de 15 soles. Los descuentos a aplicar son sobre el sueldo básico y se obtienen de la siguiente manera: Renta = SueldoBasico * 0.1 Fonavi = SueldoBasico * 0.07 AFP = SueldoBasico * 0.03 Finalmente el sueldo neto del trabajador se calcula mediante las siguientes expresiones: Ingresos = SueldoBasico + HorasExtras * PagoHoraExtra Egresos = Renta + Fonavi + AFP SueldoNeto = Ingresos - Egresos El diseño de la interfaz deberá ser similar a la figura mostrada: Pág.: 10
Para el desarrollo de esta aplicación, proceda a ubicar los siguientes controles en el formulario: 2 marcos 5 etiquetas 8 cajas de texto 2 botones de opción 3 casillas de verificación 3 botones de comando Luego, proceda a establecer las propiedades según se indica a continuación: Form1 BorderStyle Moveable FrmBoletaDePago 3-Fixed Dialog Boleta de pago False Label1 LblTrabajador Trabajador: Label2 LblSueldoBasico Sueldo Bruto S/. Label3 LblHorasExtras Horas extras: Label4 LblPagoHoraExtra Pago hora extra S/. Label5 LblSueldoNeto Sueldo neto S/. Pág.: 11
Pág.: 12 1 TxtTrabajador 2 TxtSueldoBasico 3 TxtHorasExtras 4 TxtPagoHoraExtra BackColor &H80000004& 5 TxtRenta BackColor &H80000004& Locked 6 TxtFonavi BackColor &H80000004& Locked 7 TxtAFP BackColor &H80000004& Locked 8 TxtSueldoNeto BackColor &H80000004& Locked
Option1 Value OptDiurno Diurno Option2 Value OptNocturno Nocturno False Check1 ChkRenta Renta Check2 ChkFonavi Fonavi Check3 ChkAFP AFP Command1 Default CmdAceptar &Aceptar Command2 CmdLimpiar &Limpiar Command3 Cancel CmdSalir &Salir Una vez establecidas las propiedades, proceda a ingresar el código que se indica a continuación: Private Sub CmdAceptar_Click() Dim SueldoBasico As Double Dim HorasExtras As Integer, PagoHoraExtra As Double Dim Renta As Double, Fonavi As Double, AFP As Double Pág.: 13
Dim Ingresos As Double, Egresos As Double Dim SueldoNeto As Double SueldoBasico = Val(TxtSueldoBasico) HorasExtras = Val(TxtHorasExtras) If OptDiurno Then PagoHoraExtra = 10 If OptNocturno Then PagoHoraExtra = 15 If ChkRenta.Value Then Renta = SueldoBasico * 0.1 Renta = 0 If ChkFonavi.Value Then Fonavi = SueldoBasico * 0.07 Fonavi = 0 If ChkAFP.Value Then AFP = SueldoBasico * 0.03 AFP = 0 Ingresos = SueldoBasico + HorasExtras * PagoHoraExtra Egresos = Renta + Fonavi + AFP SueldoNeto = Ingresos - Egresos TxtPagoHoraExtra = Str(PagoHoraExtra) TxtRenta = Str(Renta) TxtFonavi = Str(Fonavi) : TxtAFP = Str(AFP) TxtSueldoNeto = Str(SueldoNeto) End Sub Private Sub CmdSalir_Click() End End Sub Pág.: 14