inf117 - material de laboratorio - sesion 05 - 20122

Upload: marco-raskolnikov-allcca-tocas

Post on 06-Jul-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/18/2019 INF117 - Material de Laboratorio - Sesion 05 - 20122

    1/15

    PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ

    ESTUDIOS GENERALES CIENCIAS

    INTRODUCCIÓN A LA COMPUTACIÓN

    QUINTO LABORATORIO

    DESARROLLO DE PROGRAMAS III

    Coordinadores del Laboratorio

    2012 - 2

  • 8/18/2019 INF117 - Material de Laboratorio - Sesion 05 - 20122

    2/15

    INF117 – Introducción a la computación Quinta Sesión de Laboratorio - Desarrollo de Programas III

    TABLA DE CONTENIDO

    1. ESTRUCTURAS ALGORÍTMICAS SELECTIVAS .............................................................................. 3 

    1.1. CONTROL DE SECUENCIA DE PROGRAMA  ............................................................................................ 3 1.2. SENTENCIAS COMPUESTAS  .................................................................................................................. 3 

    1.3. SENTENCIAS CONDICIONALES  ............................................................................................................. 3 

    1.3.1. Estructura Selectiva Simple: If ... Then ........... .............. ............ .............. ............. ............ .......... 3 

    1.3.2. Estructura Selectiva Doble: If ... Then … Else .......................................................................... 5 

    1.3.3. Estructura Selectiva Anidada ..................................................................................................... 6  

    1.3.4. Sentencias de Selección Múltiple: Select Case .......................................................................... 8 

    2.  EJERCICIOS ............................................................................................................................................. 10 

    2.1. DETERMINAR DÍA DE LA SEMANA  ...................................................................................................... 10 2.1.1. Definición ................................................................................................................................. 11

     

    2.1.2. Implementación (Codificación) ................................................................................................ 11 

    2.2. SUELDOS EN UNA EMPRESA** ........................................................................................................... 12 2.2.1. Definición ................................................................................................................................. 12 

    2.2.2. Implementación (Codificación) ................................................................................................ 13 

    3. EJERCICIOS PROPUESTOS: ................................................................................................................ 14 

    4.  BIBLIOGRAFÍA ....................................................................................................................................... 15 

    5. FECHA DE ACTUALIZACIÓN: ............................................................................................................ 15 

  • 8/18/2019 INF117 - Material de Laboratorio - Sesion 05 - 20122

    3/15

    INF117 – Introducción a la computación Quinta Sesión de Laboratorio - Desarrollo de Programas III

    1. Estructuras Algorítmicas Selectivas

    Las estructuras selectivas nos permiten realizar bifurcaciones. Esto es, escoger las instrucciones que se ejecutaránsegún se cumpla o no una determinada condición.

    1.1. Control de Secuencia de Programa

    Los lenguajes de programación proveen un conjunto de enunciados o sentencias para expresar las formas básicasde control de secuencia que siguen los algoritmos, que ya hemos visto anteriormente.

    Estas formas básicas las podemos agrupar en:•  Sentencias compuestas.•  selección alternativa o estructuras algorítmicas selectivas•  iteración o estructuras iterativas 

    1.2. Sentencias Compuestas

    Una sentencia compuesta está formada por una serie de sentencias, que se pueden tratar como una sola, en laconstrucción de sentencias más grandes.Se suele escribir:

    (palabra reservada de inicio de estructura de control)sentencia1

    sentencia2

    ….

    (palabra reservada de fin de estructura de control) 

    Un programa en VBA está formado por una serie de sentencias, y se ejecutan en el orden que se declaran.

    1.3. Sentencias Condicionales

    Una sentencia condicional  expresa alternancia de dos o más sentencias, es decir, se ejecutará sólo una de ellas, enbase a la veracidad de alguna expresión booleana o un valor lógico (verdadero o falso).La sentencia a ejecutar, puede ser una sentencia simple o una compuesta.La elección de la alternativa es controlada por una prueba sobre cierta condición, la cual es una expresión lógica obooleana.

    1.3.1. Estructura Selectiva Simple: If ... Then

    Sintaxis:

    sentencia-x

    If  expresión booleana Then 

    sentencia (simple o compuesta)

    End If

    sentencia-y

  • 8/18/2019 INF117 - Material de Laboratorio - Sesion 05 - 20122

    4/15

    INF117 – Introducción a la computación Quinta Sesión de Laboratorio - Desarrollo de Programas III

    En lenguaje natural, diríamos:Si  la (expresión booleana) es verdadera, entonces ejecutar la (sentencia).

    Expresión booleana  puede ser cualquier expresión que de cómo resultado un valor numérico. Cero es False  yTrue cualquier valor distinto de cero.

    Explicación:

    Si expresión booleana es True, se ejecutan todas las instrucciones que siguen a la palabra clave Then. Si la condiciónes False (=0) entonces el programa continua con la siguiente instrucción después del End if .

    Por ejemplo:

    Sub principal()Dim numero as integer, resto as integer

    numero = Range("A1")resto = numero Mod 2If (resto = 0) Then

    Range("A3") = "Es par"End If

    End Sub

    Caso práctico 1:

    Calcular el área de un triángulo de lados a, b y c. El programa leerá el valor de cada lado y verificará que formenun triángulo.

     Análisis:

    •  Datos de entrada: a, b, c•  Solicitar los datos.•  Calcular el semiperímetro.

    •  Verificar con el semiperímetro que los 3 lados sí formen un triángulo, es decir, probar que: (sp>a) y(sp>b) y (sp>c)•  Si se cumple lo anterior: Calcular el área usando la fórmula del semiperímetro.•  Imprimir resultado.

    Solución:

    Sub leer_lados(ByRef a As single, ByRef b As Single, ByRef c As Single)

    a = Range("c1")b = Range("c2")c = Range("c3")

    End Sub

    Function semiperimetro(ByVal a As Single, ByVal b As Single, ByVal c As Single) As Single

    semiperimetro = (a + b + c) / 2

    End Function

    Function area_triangulo(ByVal a As Single, ByVal b As Single, ByVal c As Single, ByVal sp As Single)

    As Single

  • 8/18/2019 INF117 - Material de Laboratorio - Sesion 05 - 20122

    5/15

    INF117 – Introducción a la computación Quinta Sesión de Laboratorio - Desarrollo de Programas III

    area_triangulo = Sqr(sp * (sp - a) * (sp - b) * (sp - c))

    End Function

    Sub imprimirarea(ByVal areaT As Single)

    Range("c4") = areaTEnd Sub

    Const mensaje = "los lados no forman un triangulo"Sub areatriangulo()

    Dim a As Single, b As Single, c As SingleDim sp As SingleDim area As Single

    Call leer_lados(a, b, c)sp = semiperimetro(a, b, c)

    If sp > a And sp > b And sp > c Then

    area = area_triangulo(a, b, c, sp)imprimirarea (area)

    Else

    Range("c4") = mensajeEnd If

    End Sub

    1.3.2. Estructura Selectiva Doble: If ... Then … Else

    Sintaxis:

    If  expresión booleana Then 

    sentencia-1Else

    sentencia-2

    End If

    En lenguaje natural, diríamos:Si  la (expresión booleana) es verdadera,

    entonces ejecutar la (sentencia1),en caso contrario  ejecutar la (sentencia2)

    Explicación:

    Si la expresión booleana es True, se ejecutan todas las instrucciones que siguen a la palabra clave Then. Si lacondición es False (=0) entonces se ejecutan las instrucciones que siguen a la palabra clave Else.

    Por ejemplo:

    If  (resto = 0) Then Range("A3") = " Es par"

    Else

    Range("A3") = " No es par"End If

    Caso práctico 2:

  • 8/18/2019 INF117 - Material de Laboratorio - Sesion 05 - 20122

    6/15

    INF117 – Introducción a la computación Quinta Sesión de Laboratorio - Desarrollo de Programas III

    Modificar el programa del Caso práctico 2, para calcular el área de un triángulo, de modo que indique al usuariocuando los datos ingresados no forman un triángulo.

    Const mensaje = “los lados no forman un triangulo”……………

    sp = semiperimetro(a, b, c)

    If sp > a And sp > b And sp > c Then

    area = area_triangulo(a, b, c, sp)imprimirarea (area)

    ElseRange("c4") = mensaje

    End If

    1.3.3. Estructura Selectiva Anidada

    Sintaxis:

    …If  expresión booleana 1 Then 

    sentencia 1

    ElseIf  expresión booleana 2 Then 

    sentencia 2

    ElseIf  expresión booleana N Then 

    sentencia N

    [ Else 

    sentencia P ]

    End If

    … 

    Explicación:

    Evalúa primero expresión booleana 1. Si es False, evalúa expresión booleana 2  y así sucesivamente, hasta queencuentre una condición True. Entonces ejecuta el bloque de instrucciones del número correspondiente.Si ninguna condición es True se ejecuta el bloque de instrucciones de Else (si existiera).

    Recuerde: El bloque de sentencias que está entre [ ] es opcional.

    Caso práctico 3: Escriba un programa en VBA que muestre en pantalla si un valor de voltaje que se ingresa por teclado, seencuentra en escala ALTA, NORMAL, o está fuera del límite superior o inferior, de acuerdo a:

    •  Mayor que 300 Voltios, fuera de límite superior•  Entre 240 y 300 Voltios, en escala ALTA•  Entre 190 y 240 Voltios, en escala NORMAL•  Menor que 190 Voltios, fuera de límite inferior

    Solución:

    Sub verificarEscala()

    Dim volt As Single

    'leer datosvolt = Range("C3")

    Sentencia compuesta

  • 8/18/2019 INF117 - Material de Laboratorio - Sesion 05 - 20122

    7/15

    INF117 – Introducción a la computación Quinta Sesión de Laboratorio - Desarrollo de Programas III

    'verificar escala del voltajeIf volt < 300 Then

    If volt < 240 ThenIf volt < 190 Then

    Range(“C6”)= "Voltaje menor que el limite inferior!"Else

    Range(“C6”)= "Escala Normal "End If

    Else

    Range(“C6”)= "Escala Alta"End If

    Else

    Range(“C6”)= "Voltaje mayor al limite superior"End If

    End Sub

    Caso práctico 4: Escriba un subprograma en VBA que muestre el número mayor de 3 números ingresados en las celdas de la hojade Excel.

    •  Leer datos desde la hoja de Excel.•  Evaluar número mayor•  Imprimir resultados o mostrar resultados

    Solución

    Sub leerDatos(ByRef a As Single, ByRef b As Single, ByRef c As Single)

    a = Range("b1")b = Range("b2")

    c = Range("b3")End Sub

    Sub imprimir_resultado(ByVal mayor As Single)

    Range("b5") = "El mayor es " & mayorEnd Sub

    Function calcular_mayor(ByVal num1 As Single, ByVal num2 As Single, ByVal num3 As Single) AsSingle

    If num1 > num2 ThenIf num1 > num3 Thencalcular_mayor = num1

    Else

    calcular_mayor = num3End IfElse

    If num2 > num3 Thencalcular_mayor = num2

    Elsecalcular_mayor = num3

    End IfEnd IfEnd Function

  • 8/18/2019 INF117 - Material de Laboratorio - Sesion 05 - 20122

    8/15

    INF117 – Introducción a la computación Quinta Sesión de Laboratorio - Desarrollo de Programas III

    'programa principal

    Sub mayor()

    Dim num1 As Single, num2 As Single, num3 As SingleDim mayor As Single

    Call leerDatos(num1, num2, num3)

    mayor = calcular_mayor(num1, num2, num3)imprimir_resultado (mayor)

    End Sub

    1.3.4. Sentencias de Selección Múltiple: Select Case

    La sentencia Select Case se tiene en VBA para las situaciones en las que el número de alternativas es mayor quedos.Según el valor de una expresión que puede tomar n  valores distintos, se ejecutará una de la n sentenciasalternativas. Se debe de considerar que el valor de la expresión y los n valores distintos deben de ser delmismo tipo.

    Sintaxis:

    Select Case expresión

    Case lista 1 : sentencias 1

    Case lista 2 : sentencias 2

    Case lista 3 : sentencias 3…

    Case lista n : sentencias n-1

    [Case Else  : sentencias n ]

    End Select

    Lista 1, lista 2, lista 3, … lista n, son un conjunto de distintos valores de la expression, separados por comas.

    Explicación:

    •  Cuando se ejecuta este tipo de estructura de control, se procesa la sentencia indicada por la lista que contieneel dato que evalúa la expresión; y, se termina, no evaluándose otra lista (otro case).

    •  Cada lista contiene un dato constante, o varios separados por comas, pudiendo ser cada una de ellas:o  Un valor.o  Un rango de la forma: valor1 to valor2. o  Una condición de la forma: Is operador-de-relación valor  

    •  El tipo de dato de la expresión puede ser: entero, carácter, cadena, lógico y real.•  Cabe mencionarse que el final de un case  lo define el siguiente case, pudiendo dar lugar a sentencias

    compuestas.

    Nota: Se debe tener cuidado de poner valores reales (de punto flotante) en la lista del case.

    Por ejemplo:

    Select Case Numero ' Se evalúa la variable Numero.Case 1 To 5: ' Numero está entre 1 y 5.resultado = "Se encuentra entre 1 y 5"Case 6, 7, 8: ' Numero es uno de los tres valores.resultado = "Se encuentra entre 6 y 8"Case 9 to 10: ' Numero es mayor que 9resultado = "El valor es 9 o más grande"Case Else: ' Resto de valores.resultado = "El número es 0 o negativo"

    End Select

  • 8/18/2019 INF117 - Material de Laboratorio - Sesion 05 - 20122

    9/15

    INF117 – Introducción a la computación Quinta Sesión de Laboratorio - Desarrollo de Programas III

    Caso práctico 5:

    Escribir un subprograma en VBA que lea un entero positivo N y determine el mes del ano que corresponda alnúmero ingresado.

    Solución:

    Sub Imprimir_nombremes()

    Dim num As Integer, Mensaje as string

    'leer datosnum = Range("B3")'seleccionar el nombre del mes

    Select Case num

    Case 1: Mensaje= "El mes es " & "Enero"Case 2: Mensaje= "El mes es " & "Febrero"Case 3: Mensaje= "El mes es " & "Marzo"Case 4: Mensaje= "El mes es " & "Abril"Case 5: Mensaje= "El mes es " & "Mayo"Case 6: Mensaje= "El mes es " & "Junio"Case 7: Mensaje= "El mes es " & "Julio"Case 8: Mensaje= "El mes es " & "Agosto"Case 9: Mensaje= "El mes es " & "Setiembre"Case 10: Mensaje= "El mes es " & "Octubre"Case 11: Mensaje= "El mes es " & "Noviembre"Case 12: Mensaje= "El mes es " & "Diciembre"

    End Select Range("D3")=Mensaje 

    End Sub

    Caso práctico 6:

    Escribir un programa en VBA que lea un entero positivo N y según termine en el dígito 0,1 ó 3 se cambie por eldoble del número; si termina en 4 ó 5 se cambie por su décima parte y en otro caso se deje tal cual.

    Solución:

    Sub conviertenumero()

    Dim n As Integer, digito As Integer

    'leer datosn = Range("C3")

    'validar si es positivo

    If n > 0 Then

    'obtener el último dígitodigito = n Mod 10'seleccion múltiple

    Select Case dígitoCase 1, 0, 3:

    n = n * 2Range("E3")= "nuevo valor " & n

  • 8/18/2019 INF117 - Material de Laboratorio - Sesion 05 - 20122

    10/15

    INF117 – Introducción a la computación Quinta Sesión de Laboratorio - Desarrollo de Programas III

    10 

    Case 4, 5:n = n \ 10 'division enteraRange("E3")= "nuevo valor " & n

    Case 2, 6, 7, 8, 9: 'case else

    End SelectElse

    Range("E3")= "debe ingresar numero mayor que cero"

    End IfEnd Sub

    2. Ejercicios

    2.1. Determinar día de la semana

    Un método para determinar qué día de la semana correspondiente a un día, mes y año determinado es el siguiente:1.- Tome los dos últimos dígitos del año y divídalo entre 4, quedándose con la parte entera como resultado.2.- Añada el día ingresado.3.- Luego, añada uno de los siguientes valores, de acuerdo al mes ingresado:

    - Abril, julio: 0- Enero, octubre: 1- Mayo: 2- Agosto: 3- Febrero, marzo, noviembre: 4- Junio: 5- Septiembre, diciembre: 6

    4.- Reste 1 si el mes ingresado es enero o febrero y el año ingresado es bisiesto.5.- De acuerdo al año ingresado (asuma que el año ingresado se encuentra en alguno de los rangos anteriores),añada:

    - Para los 1700 - 1799 4- Para los 1800 - 1899 2- Para los 1900 - 1999 0- Para los 2000 - 2999 6

    6.- Añada al resultado los últimos dos dígitos del año.7.- Por último, divida entre 7 y tome el resto.

    El resultado será un número entre 0 y 6, que corresponderá a un día de la semana: 0 sábado, 1 domingo, 2 lunes, 3martes, 4 miércoles, 5 jueves, 6 viernes.NOTA:Un año es bisiesto si ocurre que:

    1.- es divisible por 4 y no por 100ó

    2.- es divisible por 400.

    Implementar un programa en VBA, que nos diga el día de la semana que corresponda a una fecha ingresada en lasceldas de la hoja de Excel así:

    día mes año día de la semana

    21 5 2007 lunes

  • 8/18/2019 INF117 - Material de Laboratorio - Sesion 05 - 20122

    11/15

    INF117 – Introducción a la computación Quinta Sesión de Laboratorio - Desarrollo de Programas III

    11 

    2.1.1. DefiniciónCalcular el día de la semana que corresponda a una fecha ingresada en las celdas de la hoja de Excel, los datos sonel día, mes y año (cada uno en una celda).

    2.1.2. Implementación (Codificación)

    Se creará el procedimiento principal llamado Principal, un procedimiento para la lectura de datos, una función paracalcular el coeficiente (0,1, 2, 3, 4, 5, 6 ó 7), una función que nos permite obtener el día de la semana (lunes,martes, etc.), de acuerdo al coeficiente obtenido en la función anterior y un procedimiento mostrar resultado quenos permita escribir el resultado en la celda en Excel.

    Sub leer_datos(ByRef dia As Byte, ByRef mes As Byte, ByRef anho As Integer)dia = Range("a3")mes = Range("b3")anho = Range("c3")

    End Sub

    Function calcular_coeficiente(ByVal dia As Byte, ByVal mes As Byte, ByVal anho As Integer) AsByte

    Dim resultado As Integerresultado = (anho Mod 100) \ 4resultado = resultado + diaSelect Case mesCase 7, 4: resultado = resultado + 0Case 1, 10: resultado = resultado + 1Case 5: resultado = resultado + 2Case 8: resultado = resultado + 3Case 2, 3, 11: resultado = resultado + 4Case 6: resultado = resultado + 5Case 9, 12: resultado = resultado + 6

    End Select

    If (mes = 1 Or mes = 2) And (((anho Mod 4 = 0) And (anho Mod 100 0)) Or (anho Mod 400 = 0)) Then'es bisiesto si es divisible por 4 y no por 100, ¢ si es divisible por 400

    resultado = resultado - 1

    End If

    Select Case anhoCase 1700 To 1900: resultado = resultado + 4Case 1800 To 1899: resultado = resultado + 2Case 1900 To 1999: resultado = resultado + 0Case 2000 To 2999: resultado = resultado + 6

    End Select

    resultado = resultado + (anho Mod 100)resultado = resultado Mod 7calcular_coeficiente = resultado

    End Function

    Function obtener_dia_semana(ByVal coeficiente As Byte) As String

    Dim nombre_dia_semana As StringSelect Case coeficienteCase 0: nombre_dia_semana = "Sabado"Case 1: nombre_dia_semana = "Domingo"Case 2: nombre_dia_semana = "Lunes"Case 3: nombre_dia_semana = "Martes"Case 4: nombre_dia_semana = "Miercoles"Case 5: nombre_dia_semana = "Jueves"Case 6: nombre_dia_semana = "Viernes"

    End Selectobtener_dia_semana = nombre_dia_semana

    End Function

  • 8/18/2019 INF117 - Material de Laboratorio - Sesion 05 - 20122

    12/15

    INF117 – Introducción a la computación Quinta Sesión de Laboratorio - Desarrollo de Programas III

    12 

    Sub mostrar_resultado(ByVal dia_semana)Range("b5") = dia_semana

    End Sub

    Sub principal()Dim dia As Byte, mes As Byte, anho As IntegerCall leer_datos( dia, mes, anho)

    coeficiente = calcular_coeficiente(dia, mes, anho)dia_semana = obtener_dia_semana(coeficiente)mostrar_resultado dia_semana

    End Sub

    2.2. Sueldos en una Empresa****Practica Nº03- 2009-1Se tiene la siguiente tabla de sueldos para cada uno de los cargos de la empresa MiEmpresita S.A.

    Cargo Sueldo

    Soporte 1100

    Análisis 2800

    Desarrollo 2400Práctica 750

    Se sabe que si el trabajador posee grado de ingeniero, su sueldo se incrementa en un 4%, grado deMagíster le corresponde un incremento de 7%, y grado de Doctor se incrementa en 11%. Se cuenta con lasiguiente información:

    Se pide calcular el sueldo con aumento correspondiente a los tres empleados mostrados en la figuraanterior.

    Para ello se pide implementar en VBA lo siguiente:

    a)  Un subprograma CalculaAumento que teniendo como parámetros el grado del empleado devuelva elporcentaje de aumento correspondiente, si es un grado no válido el porcentaje a devolver debe ser cero.

    b)  Un subprograma Valido  que verifique si el cargo del empleado es correcto. Los únicos cargos válidosson: Soporte, Análisis, Desarrollo y Práctica.

    c)  Un subprograma CalcularSueldo que teniendo como parámetros el cargo y el grado, calcule y devuelvael sueldo con aumento del empleado. Utilice los subprogramas anteriores.

    d)  Un subprograma principal PP  que lea los datos de los empleados, calcule y muestre los sueldos con

    aumentos tal como se muestra en la Hoja en Excel.

    2.2.1. DefiniciónCalcular el monto del sueldo con aumento correspondiente a los tres empleados.

  • 8/18/2019 INF117 - Material de Laboratorio - Sesion 05 - 20122

    13/15

    INF117 – Introducción a la computación Quinta Sesión de Laboratorio - Desarrollo de Programas III

    13 

    2.2.2. Implementación (Codificación)

  • 8/18/2019 INF117 - Material de Laboratorio - Sesion 05 - 20122

    14/15

    INF117 – Introducción a la computación Quinta Sesión de Laboratorio - Desarrollo de Programas III

    14 

    3. Ejercicios propuestos:

    1.  Se desea determinar si un punto de coordenadas x e y se encuentra dentro de un círculo de radio r concentro en el origen, o fuera de él.

    .P (x2,y2).Q(x1,y1)

     Para ello se pide implementar en VBA lo siguiente:

    a.  Un subprograma leer que permita leer el punto P, cuyas coordenadas son X, Y, y el radio del círculo, delas celdas A1, A2 y A3, respectivamente.

    b.  Un subprograma Encuentra que permita determinar si el punto X,Y se encuentra o no se encuentradentro del círculo, teniendo como parámetros X ,Y y el radio del círculo.

    c.  Un subprograma principal que haciendo uso de los subprogramas anteriores, según sea el caso haga:

    •  Lea los datos.•  Determine si el punto X, Y se encuentra dentro del círculo.

    Si el punto se encuentra dentro del círculo, envíe el mensaje: “El punto P se encuentra dentro delcirculo de radio r”. Y si el punto no se encuentra dentro del círculo envíe el mensaje: “El punto P nose encuentra dentro del circulo de radio r”. El mensaje se muestra en la celda D1.Asigne este subprograma principal a un botón: Verifique punto.

    2.  Dado un valor de x, calcular el valor de y=f(x) según la siguiente función:

    Para ello se pide implementar en VBA lo siguiente:

    a.  Un subprograma leer que permita leer el valor de x desde la celda F1.b.  Un subprograma calculary que permita calcular el valor de y, según las condiciones de la función, y

    recibirá como parámetro el valor de x. Nota: analice todos los rangos de x.c.  Un subprograma principal que haciendo uso de los subprogramas anteriores, según sea el caso haga:

    •  lea los datos.•  Halle el valor de Y.•  Muestre el resultado en la celda D2.

    3.  Se tiene una diana (“bull”) para el juego de dardos, formada por 5 zonas delimitadas por circunferenciasconcéntricas de radio 2, como se observa en la figura. Cada punto Px, está conformado por (x, y).

    Además se cuenta con la siguiente información en una hoja en Excel, tal como se muestra a continuación:

  • 8/18/2019 INF117 - Material de Laboratorio - Sesion 05 - 20122

    15/15

    INF117 – Introducción a la computación Quinta Sesión de Laboratorio - Desarrollo de Programas III

    15 

    x

    y

       r  a  d    i  o

    2 4 6 8 10

    P1

    P4

    P2

    P3

     

    Además se cuenta con la tabla con la zona y puntaje y la hoja en Excel:

    Ejemplos: Observe el gráfico y la tabla mostrados anteriormente  El punto P1 está en la zona 1, circunferencia de radio 2, entonces el puntaje será 50 puntos.  El punto P2 está en la zona 3, limitada por la circunferencia de radio 4 y 6, entonces el puntaje será 30 puntos.  El punto P3 está en el límite de la zona 4 y 5 (se considera la menor zona, la zona 4), entonces el puntaje será

    20 puntos.

      El punto P4 está fuera de la diana, entonces el puntaje será 0 (cero) puntos.

    Para ello se pide implementar en VBA lo siguiente:

    a. Un subprograma LeeDato, que reciba como parámetro el punto dado.b. Un subprograma Informe, que reciba como parámetros las coordenada de un punto (x, y), y que valide los

    datos recibidos y nos devuelva el mensaje correspondiente, según los siguientes criterios:Si x e y son números positivos, nos devuelva “las coordenadas ingresadas pertenecen al primercuadrante”.Si x e y son números negativos, nos devuelva “las coordenadas ingresadas pertenecen al tercercuadrante”.Si x es un número positivo e y es un número negativo, nos devuelva “las coordenadas ingresadaspertenecen al cuarto cuadrante”.

    Si y es un número positivo y x es un número negativo, nos devuelva “las coordenadas ingresadaspertenecen al segundo cuadrante”.

    c. Un subprograma CalculePuntaje que reciba como parámetro el punto dado y devuelva el puntaje obtenidode acuerdo a la tabla anterior.

    d. Un subprograma principal que haga lo siguiente:

    o  Usando el subprograma LeerDatos, obtenga los datos del punto dado.o  Usando el subprograma Informe, obtenga el mensaje correspondiente.o  Usando el subprograma CalculePuntaje, obtenga el puntaje según el punto ingresado.o  Muestre el puntaje y el mensaje correspondiente en las celdas E6 y E7, respectivamente.

    4. Bibliografía

    - Marcela Genero Bocco. Excel con Visual Basic Para Aplicaciones (VBA).Noviembre 2002.- CAIRÓ, Osvaldo. Metodología de la programación. 2a edición. México: Alfaomega, 2003.- Excel VBA Programming for Dummies. John Walkenbach – Wiley Publishing, Inc. (2004).- Sitio web de Microsoft Office Online: http://office.microsoft.com (2010)

    5. Fecha de Actualización:

    05/11/2012