PROGRAMACION EN VISUAL BASIC 31 GUIA DE LABORATORIO N° 05 Aplicación N° 10 Se desea hacer una aplicación que permita evaluar el valor de la función definida por el gráfico mostrado a continuación. En esta aplicación se debe hacer uso de una function que al ser llamada nos devuelva el valor de la función dada definida por el gráfico. Y 3a a X a 5a 6a El diseño del formulario de entrada y salida para la aplicación indicada es la que se muestra seguidamente. En el diseño del formulario se necesitaron crear los siguientes controles: 6 etiquetas Elaborado por José L. Chuquillanqui Suárez jlchs@uni.edu.pe PROGRAMACION EN VISUAL BASIC 32 3 cajas de texto 3 botones de commando Las propiedades de cada uno de los controles ubicados en el formulario, son indicados a continuación: Form1 Nombre Caption frm_e_x EVALUACION DE UNA FUNCION Nombre Caption autosize font lbltitulo FUNCIÓN DE 3 TRAMOS true MS Sans Serif-negrita-12 Nombre Caption autosize lbla a true Nombre text txta Nombre Caption autosize lblx x true Nombre text txtx Label1 Label2 Text1 Label3 Text2 Command1 Nombre Caption cmdejecutar EJECUTAR Command2 Nombre Caption cmdlimpiar LIMPIAR Elaborado por José L. Chuquillanqui Suárez jlchs@uni.edu.pe PROGRAMACION EN VISUAL BASIC Command3 Nombre Caption 33 cmdsalir SALIR Label4 Nombre Caption autosize lblfx f(x) true Nombre text alignment txtfx Nombre Caption autosize lblobs OBSERVACION true Nombre caption backcolor lblobservacion Text3 2-center Label5 Label6 fondo de la ventana A continuación escribimos el código correspondiente a la function en este caso denominada y, cuyos argumentos de entrada son a y x Option Explicit Function y(a As Double, x As Double) As Double If (x >= 0 And x <= a) Then lblobservacion = "x pertenece al intervalo 1: [0, a]" y = Sqr(a ^ 2 - (x - a) ^ 2) End If If x >= a And x <= 5 * a Then lblobservacion = "x pertenece al intervalo 2: [a, 5a]" y = Sqr(4 * a ^ 2 - (x - 3 * a) ^ 2) + a End If If x >= 5 * a And x <= 6 * a Then lblobservacion = "x pertenece al intervalo 3: [5a, 6a]" y = Sqr(a ^ 2 - (x - 5 * a) ^ 2) Elaborado por José L. Chuquillanqui Suárez jlchs@uni.edu.pe PROGRAMACION EN VISUAL BASIC 34 End If If (x < 0 Or x > 6 * a) Then lblobservacion = "x no pertenece al intervalo [0, 6a]" End If End Function Seguidamente hacemos doble clic en el botón de comando EJECUTAR y procedemos a ingresar el siguiente código teniendo presente que debemos hacer uso de la function creada anteriormente Private Sub cmdejecutar_Click() Dim a As Double, x As Double a = txta x = txtx lblobservacion.Alignment = 2 lblobservacion.FontSize = 12 txtfx = Round(y(a, x), 5) End Sub Luego, hacemos doble clic en el botón de comando LIMPIAR e ingresamos el siguiente código: Private Sub cmdlimpiar_Click() txta = "" txtx = "" txtfx = "" lblobservacion = "" txta.SetFocus End Sub Luego, hacemos doble clic en el botón de comando SALIR e ingresamos el siguiente código: Private Sub cmdsalir_Click() End End Sub A continuación ejecutamos la aplicación con diversos datos para cada uno de los tramos, confirmando por consiguiente el funcionamiento correcto de la aplicación. Elaborado por José L. Chuquillanqui Suárez jlchs@uni.edu.pe PROGRAMACION EN VISUAL BASIC 35 Aplicación N° 11 Se desea hacer una aplicación que nos permita mostrar las raíces de una ecuación cuadrática a.x^2 + b.x + c = 0; dando como datos de entrada los coeficientes a, b y c. Crear un procedimiento Sub que evalúe dichas raíces y las presente en el formulario creado para esta aplicación. El diseño del formulario creado para esta aplicación es el mostrado a continuación: Para crear este formulario se ubicaron los siguientes controles: 8 etiquetas 5 cajas de texto 3 botones de comando cuyas propiedades son las que se muestran a continuación. Form1 Nombre Caption frminicio RAICES DE ECUACIÓN CUADRATICA Nombre Caption autosize lbltitulo a.x^2 + b.x + c = 0 true Label1 Elaborado por José L. Chuquillanqui Suárez jlchs@uni.edu.pe PROGRAMACION EN VISUAL BASIC 36 font MS Sans Serif-negrita-12 Nombre Caption autosize lbldatos DATOS true Nombre Caption autosize lbla a true Nombre text alignment txta Nombre Caption autosize lblb b true Nombre text alignment txtb Nombre Caption autosize lblc c true Nombre text alignment txtc Label2 Label3 Text1 2-center Label4 Text2 2-center Label5 Text3 Command1 Nombre Caption 2-center cmdejecutar EJECUTAR Elaborado por José L. Chuquillanqui Suárez jlchs@uni.edu.pe PROGRAMACION EN VISUAL BASIC Command2 Nombre Caption cmdlimpiar LIMPIAR Command3 Nombre Caption cmdsalir SALIR 37 Label6 Nombre Caption autosize lblresultados RESULTADOS true Nombre Caption autosize lblx1 x1 true Nombre text alignment font txtx1 Nombre Caption autosize lblx2 x2 true Nombre text alignment font txtx2 Label7 Text4 2-center MS Sans Serif-negrita-10 Label8 Text5 2-center MS Sans Serif-negrita-10 A continuación escribimos el código correspondiente al procedimiento Sub raíces_ec_cuadrática cuyos argumentos de entrada son a, b, c; y cuyos argumentos de salida son x1 y x2 Option Explicit Elaborado por José L. Chuquillanqui Suárez jlchs@uni.edu.pe PROGRAMACION EN VISUAL BASIC 38 Dim a As Double, b As Double, c As Double Dim x1 As Variant, x2 As Variant Sub raices_ec_cuadratica(a, b, c, x1, x2) ' Procedimiento Sub ' Determina las raices de a.x^2 + b.x + c = 0 ' Datos de entrada: a, b, c ' Valores devueltos: x1, x2 Dim real As Double, dis As Double dis = b ^ 2 - 4 * a * c real = -b / (2 * a) Select Case dis Case Is < 0 x1 = Round(real, 5) & " + " & Round(Sqr(-dis) / (2 * a), 5) & " i" x2 = Round(real, 5) & " - " & Round(Sqr(-dis) / (2 * a), 5) & " i" Debug.Print a; b; c, x1, x2, "las raices son complejas" Case 0 x1 = Round(real, 5) x2 = x1 Debug.Print a; b; c, x1, x2, "las raices son iguales" Case Is > 0 x1 = Round(((-b + Sqr(dis)) / (2 * a)), 5) x2 = Round(((-b - Sqr(dis)) / (2 * a)), 5) Debug.Print a; b; c, x1, x2, "las raices son reales" End Select End Sub Seguidamente hacemos doble clic en el botón de comando EJECUTAR y escribimos el siguiente código teniendo en cuenta que debemos llamar al procedimiento Sub raíces_ec_cuadrática con sus respectivos argumentos Private Sub cmdejecutar_Click() Dim raiz1 As Variant, raiz2 As Variant a = txta b = txtb c = txtc 'Call raices_ec_cuadratica(a, b, c, raiz1, raiz2) ‘ Es otra forma de llamar a raices_ec_cuadratica raices_ec_cuadratica a, b, c, raiz1, raiz2 'Llama al procedimiento Sub raices_ec_cuadratica Elaborado por José L. Chuquillanqui Suárez jlchs@uni.edu.pe PROGRAMACION EN VISUAL BASIC 39 txtx1 = raiz1 txtx2 = raiz2 End Sub Luego, hacemos doble clic en el botón de comando LIMPIAR y escribimos el siguiente código: Private Sub cmdlimpiar_Click() txta = "" txtb = "" txtc = "" txtx1 = "" txtx2 = "" txta.SetFocus End Sub Por último, haciendo doble clic en el botón de comando SALIR escribimos el siguiente código: Private Sub cmdsalir_Click() End End Sub Estamos listos para ejecutar nuestra aplicación y observar los resultados correspondientes previamente verificados en forma manual. Elaborado por José L. Chuquillanqui Suárez jlchs@uni.edu.pe