You are on page 1of 8

PONTIFICIA UNIVERSIDAD CATLICA DEL PER ESTUDIOS GENERALES CIENCIAS

INTRODUCCIN A LA COMPUTACIN
5ta. Prctica 2do. Perodo del 2008

1. (1.00 punto) Complete las siguientes afirmaciones: (0.25 puntos cada uno) a. Si se necesita personalizar los programas que se usan y no se quiere pagar por una licencia se usara un software libre o de cdigo abierto b. RAID es un arreglo redundante de discos independientes c. En su forma ms bsica un sistema de informacin o dbms es un mecanismo que ayuda a coleccionar, almacenar, organizar y usar informacin. d. Un sistemas experto es un tipo de SI, que por ejemplo, podra hacer un diagnstico mdico, o aprobar un prstamo. 2. (2.00 puntos) En los siguientes casos, diga qu tipo de sistema de informacin usara y por qu lo escogera. a) Una cadena de supermercados ha notado que uno de sus productos ms vendidos ha sufrido una baja del 30% en sus ventas y desea encontrar por qu. b) El gerente de una empresa comercial desea analizar si debe lanzar una campaa promocional para aumentar sus ingresos del prximo semestre. c) Un hospital desea apoyar el trabajo de los mdicos en la especialidad de medicina general para diagnosticar las enfermedades. d) Una cadena de boticas quiere mantener un registro completo de las ventas hechas tanto por atencin en los locales como por entrega a domicilio. Solucin: a) Sistema de administracin de informacin o sistema de apoyo a la toma de decisiones. Permiten resumir datos en informes que son analizados para estudiar el comportamiento del negocio. b) Sistema de administracin de informacin o sistema de apoyo a la toma de decisiones. Permiten resumir datos en informes que son analizados para estudiar el comportamiento del negocio. c) Sistema experto: el sistema puede dar una opinin alternativa a la de los doctores recibiendo los sntomas de los pacientes e indicando las posibles enfermedades. d) Sistema de procesamiento de transacciones o sistema transaccional. El sistema transaccional permitira guardar la descripcin y el detalle de cada transaccin realizada Criterio: Cada caso vale 0.5 puntos, 0.25 puntos por mencionar el sistema a usar y 0.25 por justificar por qu. 3. (1.00 punto) Explique la diferencia entre DBMS y una base de datos. Mencione 2 operaciones comunes que puede hacer con ellas. Solucionario: Una base de datos es un conjunto de datos o hechos relacionados. Un DBMS es una herramienta de software que permite almacenar, acceder y procesar datos. El DBMS maneja la base de datos. Posibles tareas: Introducir datos Actualizar datos Eliminar registros Hacer copias de seguridad Ordenar datos Obtener subconjuntos de datos, encontrar datos.

Criterio: 0.5 puntos por explicar la diferencia o indicar qu son o para qu sirven, y 0.25 puntos

por cada operacin mencionada. No tienen que explicar en qu consiste la accin.


4. (6.00 puntos) Pizza Simone es una nueva empresa que entrar al mercado en la venta de pizzas por entrega a domicilio. La siguiente tabla muestra los precios da cada una de las pizzas que ofrece (en S/.), en sus dos tamaos: Grande y Familiar.

TAMAOS PIZZAS GRANDE FAMILIAR AMERICANA 37 43 PEPPERONI 37 43 HAWAIANA 36 42

Debe considerar que la diferencia entre la pizza Grande y la Familiar es de S/. 6.00. Adems como oferta de inauguracin los das martes, jueves y sbado se ofrecen dos pizzas (Grande o Familiar) por el precio de una. Se desea conocer el precio de una pizza y el pago total del pedido, para ello implemente en VBA: a) (1.50 puntos) Un subprograma VerificaDatos que reciba como parmetros el da de la semana, una pizza, el tamao de la pizza y la cantidad de pizzas, y devuelva si son vlidos o no. NOTA: La cantidad de pizzas deber ser positiva. Represente el da de la semana mediante las 3 primeras letras del da. b) (2.00 puntos) Un subprograma CalculaPrecio que reciba como parmetros el da de la semana, una pizza y el tamao de la pizza, y devuelva el precio de la pizza. Defina y utilice constantes para los pecios de las pizzas grandes. c) (2.50 puntos) Un subprograma que: Lea de las celdas C3, C5, C6 y C8, el da de la semana, la pizza, el tamao de la pizza y la cantidad de pizzas, respectivamente. Usando un subprograma anterior, evale si los datos ledos son vlidos. Si no lo son, mostrar un mensaje de error en la celda C13. Por otro lado, si los datos s son vlidos: Halle el precio de la pizza usando uno de los subprogramas anteriores. Calcule cul sera el pago total por las pizzas solicitadas. Muestre los resultados obtenidos en las celdas C10 y C11.

Criterios de calificacin:
Por definir correctamente los parmetros y el tipo de retorno 0.25 puntos Por correcto tipo de subprograma y devolucin de resultado: 0.25 puntos Por lgica, operacin correcta 1.0 punto b) Por definir correctamente los parmetros y el tipo de retorno 0.25 puntos Por escoger el tipo de subprograma correcto y devolver el resultado: 0.25 puntos Por calcular el precio sin descuento: 1.0 punto Por calcular el descuento por oferta: 0.5 puntos c) Por declarar variables y definir constantes: 0.25 puntos Por uso correcto de condicional (incluida la llamada a VerificaDatos): 0.5 puntos Por mostrar mensaje de error; 0.25 puntos Por llamada a CalculaPrecio: 0.5 puntos Por clculo del pago: 0.5 puntos Por lectura de datos que no estarn necesariamente en un subprograma aparte: 0.25 puntos Por mostrar resultados que tampoco estar necesariamente en un subprograma aparte: 0.25 puntos a)

Nota: Puesto que en el problema se pide mostrar el precio unitario de la pizza y el total a pagar, algunos alumnos pueden agregar el parmetro cantidad a la funcin que calcula el precio. Por ende, tendran que dividir dicho precio en el mdulo principal para hallar el precio por pizza. Considerar tambin esta variante como solucin del problema.
Solucin: Const precAMERICANA = 37 Const precPEPPERONI = 37 Const precHAWAIANA = 36 Const incremento = 6

Sub principal() Dim dia As String Dim pizza As String Dim tamao As String Dim cantidad As Integer Dim precio As Single Dim pago As Single dia = Cells(3, 3) pizza = Cells(5, 3) tamao = Cells(6, 3) cantidad = Cells(8, 3) If VerificaDatos(dia, pizza, tamao, cantidad) Then precio = CalculaPrecio(dia, pizza, tamao)

pago = precio * cantidad Cells(10, 3) = precio Cells(11, 3) = pago Else Cells(13, 3) = "Datos no son vlidos" End If End Sub

Function VerificaDatos(ByVal dia As String, ByVal pizza As String, ByVal tamao As String, ByVal cantidad As Integer) As Boolean Dim verdia As Boolean Dim verpizza As Boolean Dim vertamao As Boolean Dim vercantidad As Boolean verdia = (dia = "LUN") Or (dia = "MAR") Or (dia = "MIE") Or (dia = "JUE") Or (dia = "VIE") Or (dia = "SAB") Or (dia = "DOM") verpizza = (pizza = "AMERICANA") Or (pizza = "PEPPERONI") Or (pizza = "HAWAIANA") vertamao = (tamao = "GRANDE") Or (tamao = "FAMILIAR") vercantidad = cantidad > 0 VerificaDatos = verdia And verpizza And vertamao And vercantidad End Function

Function CalculaPrecio(ByVal dia As String, ByVal pizza As String, ByVal tamao As String) As Single Dim precio As Single Select Case pizza Case "AMERICANA": precio = precAMERICANA Case "PEPPERONI": precio = precPEPPERONI Case "HAWAIANA": precio = precHAWAIANA End Select If tamao = "FAMILIAR" Then precio = precio + incremento End If If (dia = "MAR") Or (dia = "JUE") Or (dia = "SAB") Then precio = precio / 2 End If CalculaPrecio = precio End Function

5. (4.50 puntos) Se tiene un mvil que se desplaza sobre el plano cartesiano en direcciones paralelas a los ejes de coordenadas. Para cada desplazamiento se conoce la direccin y la distancia avanzada. Las direcciones se identifican por las palabras Arriba, Abajo, Izquierda y Derecha, mientras que la distancia siempre ser un nmero real positivo. Se conoce adems la posicin inicial del mvil representada como una coordenada en el plano, un par (X0, Y0). Debido a que la cantidad de desplazamientos puede variar, para sealar el trmino de los desplazamientos se utilizar la cadena Fin en lugar de la direccin. Se pide implementar un programa en VBA que lea la posicin inicial del mvil, calcule su posicin final, la distancia total recorrida (la suma de todos los desplazamientos) y la distancia entre la posicin de partida del mvil y su posicin final. Muestre las salidas segn como indica el ejemplo de la figura.

Nota: En la figura se muestra un ejemplo donde el mvil hace 6 desplazamientos, recuerde que esa cantidad no ser la misma en todos los casos. 'Criterios: 'Por declarar variables en general(podran usar constantes para las direcciones): 0.50 puntos 'Por leer los datos en el mdulo principal: 0.25 puntos 'Por inicializar las variables necesarias del bucle: 0.50 puntos 'Por condicin del bucle: 0.50 puntos 'Por leer correctamente la direccion y la distancia en cada iteracion: 0.25 puntos 'Por decidir qu coordenada se debe modificar (uso de condicional): 1.0 punto 'Por modificar correctamente la coordenada escogida: 0.50 puntos 'Por calcular la distancia total del desplazamiento: 0.25 puntos 'Por calcular la distancia directa entre el punto inicial y final del movil: 0.50 puntos 'Por escribir los resultados pedidos: 0.25 puntos

'solucion Sub movil() Dim x0 As Single Dim y0 As Single Dim dir As Single Dim dist As Single Dim x As Single Dim y As Single

Dim distDirecta As Single Dim distRecorrida As Single x0 = Range("c3") y0 = Range("c4") x = x0 y = y0 Call procesarDesplazamientos(x, y, distRecorrida) distDirecta = calcularDistanciaRecorrida(x0, y0, x, y) 'escribir: 0.25 Range("f3") = x Range("f4") = y Range("f5") = distRecorrida Range("f6") = distDirecta End Sub Sub procesarDesplazamientos(ByRef x As Single, ByRef y As Single, ByRef dd As Single) Dim fila As Integer dd = 0 fila = 7 Do While (Cells(fila, 2) <> "Fin") desp = Cells(fila, 3) Select Case Cells(fila, 2) Case "Arriba": y = y + desp Case "Abajo": y = y - desp Case "Derecha": x = x + desp Case "Izquierda": x = x - desp End Select dd = dd + desp fila = fila + 1 Loop End Sub Function calcularDistanciaRecorrida(ByVal x0 As Single, ByVal y0 As Single, _ ByVal x As Single, ByVal y As Single) As Single calcularDistanciaRecorrida = Sqr((x0 - x) ^ 2 + (y0 - y) ^ 2) End Function

6. (3.50 puntos) En la teora de nmeros se define el concepto de nmeros amigos. Dos nmeros son amigos si son diferentes y si adems la suma de sus divisores son iguales. La suma incluye al nmero 1 como divisor pero no al mismo nmero. Desarrolle un programa en VBA que lea dos nmeros enteros positivos, determine si son amigos e imprima la suma de divisores de ambos nmeros as como la cadena Si si son amigos o No en caso contrario.

Criterios: 'por declarar variables: 0.25 puntos 'por leer los dos nmeros: 0.25 puntos 'Por calcular la suma de los divisores (la mayora de los alumnos lo harn en una funcin, pero no todos): 2 puntos, distribuidos de la siguiente manera: ' - por inicializar variables antes del bucle: 0.5 puntos ' - por condicin de fin del bucle: 0.5 puntos ' - por determinar si un nmero es divisor del nmero dado: 0.5 puntos ' - por actualizar las variables dentro del bucle: 0.5 puntos 'por condicional para saber si los nmeros son amigos: 0.75 puntos 'por escribir los resultados: 0.25 puntos Solucin: Sub numamigos() Dim n1 As Integer Dim n2 As Integer n1 = Range("c2") n2 = Range("c3") sumaDiv1 = sumarDivisores(n1) sumaDiv2 = sumarDivisores(n2) Range("c4") = sumaDiv1 Range("c5") = sumaDiv2 If (sumaDiv1 = sumaDiv2) Then Range("c6") = "Si" Else Range("c6") = "No" End If End Sub Function sumarDivisores(ByVal n As Integer) As Integer Dim fin As Single Dim suma As Single Dim col As Integer suma = 0 fin = n \ 2 For i = 1 To fin If (n Mod i = 0) Then suma = suma + i

End If Next sumarDivisores = suma End Function


7. (2.00 puntos) Evaluaciones realizadas en clase del libro Introduccin a la computacin de Peter Norton, Sexta edicin, McGraw-Hill, 2006, ISBN 9701051084, Biblioteca de EEGGCC: INF 117 N82 2006. Captulo 8. Trabajar con Software de Aplicaciones Captulo 11. Administracin de Bases de Datos Captulo 12. Desarrollo de sistemas de informacin

San Miguel, 18 de Noviembre de 2008