Sunteți pe pagina 1din 9

Oficina de Apoyo al Alumno Taller 6 2012-1

Estudios Generales Ciencias Introduccin a la Computacin

Ejercicio 1 Encuesta de opinin (basada en Pc2 INF144) Se realiza una encuesta de opinin para determinar las preferencias de los televidentes de Lima. En la encuesta se pregunta a cada una de las personas encuestadas el sexo, la edad, los dos canales que ve ms frecuentemente y el intervalo de horas en que usualmente ve televisin. Los datos se encuentran en la hoja del Excel como se muestran a continuacin:

En este ejemplo, el primer televidente es un hombre de 23 aos que prefiere ver los canales 73, 32, y los ve entre las 20 y 23 horas (8 p.m. a 11 p.m.) Elabore un programa en VBA que a partir de la hoja de clculo mostrada permita determinar: Evaluacin 1: Cuntas mujeres ven la televisin al menos entre las 16 y 17 horas? Evaluacin 2: Cuntos personas menores de 35 aos que ven los canales 73,15 o 30? Evaluacin 3: El porcentaje de mujeres que cumplen la evaluacin 1.

Se le pide: a) Elaborar la definicin y el del problema (mnimo cuatro mdulos). b) Elaborar el diseo en pseudocdigo o diagrama de flujo del anlisis propuesto.

Oficina de Apoyo al Alumno Taller 6 2012-1

Estudios Generales Ciencias Introduccin a la Computacin

INICIO LeerDatosEncuestado(sexo,edad,C1,C2,H1,H2) Leer sexo,edad,C1,C2,H1,H2 fin inicio EvalCondEv1(sexo,h1,h2) si sexo="F" y h1<=16 y h2>=17 entonces EvalCondEv1<-VERDADERO sino EvalCondEv1<-FALSO fin si fin inicio EvalCondEv2(edad,c1,c2) Si (edad<35) y ( c1=73 o c1=15 o c1=30 o c2=73 o c2=15 o c2=30) entonces EvalCondEv2<-VERDADERO sino EvalCondEv2<-FALSO fin si fin inicio Leer CantEnc i<-1 ContEv1<-0 ContEv2<-0 CantMuj<-0 Hacer mientras i<=CantEnc LeerDatosEncuestado(sexo,edad,C1,C2,H1,H2) Cond1<-EvalCondEv1(sexo,h1,h2) cond2<-EvalCondEv2(edad,c1,c2) Si cond1=VERDADERO entonces ContEv1<-ContEv1+1 fin si si cond2=VERDADERO entonces ContEv2<-ContEv2+1 fin si Si sexo="F" entonces CantMuj<-CantMuj+1 fin si i<-i+1 fin hacer porc<-ContEv1/CantMuj Escribir ContEv1,ContEv2,porc fin

Oficina de Apoyo al Alumno Taller 6 2012-1

Estudios Generales Ciencias Introduccin a la Computacin

Ejercicio 2 Campeonato escolar (basada en Ex2 preg 6 2012-1) Un colegio organiz un campeonato deportivo entre alumnos y padres de familia. Los deportes en los que compitieron son: Vley, Ftbol y Bsquet nicamente. El premio lo obtendra el equipo que obtenga el mayor puntaje final. Con el objetivo de fomentar la participacin tanto de padres como de alumnos, fue necesario evaluar la cantidad de personas que asistieron por equipo e incluir dicha participacion en el calculo del puntaje final. Se conoce la cantidad de equipos que participaron. A continuacin se muestra un resumen de la informacin por equipo, en el cual se detalla el nombre del equipo, la cantidad de alumnos por aula, el nmero de participantes que asistieron al campeonato por aula y si gan el partido del deporte correspondiente. Con el fin de hallar el puntaje final de cada equipo se ha colocado una X si es que el equipo gan en cierto deporte. Adems se sabe que cada alumno deba llevar al campeonato a sus 2 padres o apoderados.

Puntaje Para el clculo del puntaje final, se utiliza la siguiente frmula:


0.3 0.25 0.25 0.2

Participacin Futbol Vley Bsquet

100 80 60 60

Donde: PV=Puntaje de vley, PB=Puntaje de bsquet PF=Puntaje de futbol, PP=Puntaje de participacin. Se sabe tambin que un partido ganado en cierto deporte tiene un puntaje relacionado, el cual se incluye en la tabla correspondiente.

Para el clculo del puntaje de participacin deber tomar en cuenta el porcentaje correspondiente. Asi por ejemplo el equipo verde obtuvo unicamente el 98% del puntaje de participacion, osea 98 puntos. Se necesita calcular la cantidad de participantes que debieron asistir, el porcentaje de participacin (debido a que no todos los alumnos ni apoderados asistieron al evento), el puntaje final para cada equipo y el nombre del equipo ganador del campeonato. Tome en cuenta que en la hoja de clculo mostrada son pocos equipos pero que se podran incluir cientos de equipos adicionales, y que su desarrollo debe seguir siendo vlido.

Oficina de Apoyo al Alumno Taller 6 2012-1

Estudios Generales Ciencias Introduccin a la Computacin

Se le pide: a) Elaborar la definicin y el anlisis necesario para solucionar el problema (mnimo cuatro mdulos). b) Elaborar la codificacin del anlisis planteado en la pregunta a).

Definicion Explicacion D.Entrada:cant de aulas, para cada aula: nombre, cant alum,part asis, ResV,ResB,ResF Salidas:Equipo ganador Para cada aula: part deben,porcPart,PFinal Formulas: part deben=cant alum*(2+1) porcPart=part asis/partDeben 'calc puntajes PB,PV,PF PFinal=0.3*PP+0.25*PF+0.25*PB+0.2*PV

Const CANTAP = 2, PUNTV = 60, GANOX = "X", PUNTPART = 100, PUNTF = 80, PUNTB = 60 Sub LeerDatosUnEq(ByRef nomb As String, ByRef cantAl As Byte, ByRef _ PartAs As Byte, ByRef ResV As String, ByRef ResF As String, ByRef ResB _ As String, ByVal fila As Byte) nomb = Cells(fila + 3, 1) cantAl = Cells(fila + 3, 2) PartAs = Cells(fila + 3, 4) ResV = Cells(fila + 3, 6) ResF = Cells(fila + 3, 7) ResB = Cells(fila + 3, 8) End Sub Function CalcPorcPart(ByVal PartAs As Byte, ByVal partDeb As Byte) _ As Single CalcPorcPart = PartAs / partDeb End Function Sub HallarPuntajes(ByVal ResV As String, ByVal ResF As String, ByVal _ ResB As String, ByVal PorcPart As Single, ByRef PV As Byte, ByRef PB As Byte, ByRef PF As Byte, ByRef PP As Byte) If ResV = GANOX Then PV = PUNTV End If

Oficina de Apoyo al Alumno Taller 6 2012-1

Estudios Generales Ciencias Introduccin a la Computacin

If ResB = GANOX Then PB = PUNTB End If If ResF = GANOX Then PF = PUNTF End If PP = PorcPart * PUNTPART End Sub Function CalcPuntFinal(ByVal PV As Byte, ByVal PB As Byte, ByVal PF As _ Byte, ByVal PP As Byte) As Single CalcPuntFinal = 0.3 * PP + 0.25 * PF + 0.25 * PB + 0.2 * PV End Function Sub EvaluarCampeonato() 'dim .... completar cantAulas = Range("c1") EqGan = "" MaxPunt = 0 For fila = 1 To cantAulas Call LeerDatosUnEq(nomb, cantAl, PartAs, ResV, ResF, ResB, fila) partDeb = cantAl * (CANTAP + 1) PorcPart = CalcPorcPart(PartAs, partDeb) Call HallarPuntajes(ResV, ResF, ResB, PorcPart, PV, PB, PF, PP) PFinal = CalcPuntFinal(PV, PB, PF, PP) If PFinal > MaxPunt Then MaxPunt = PFinal EqGan = nomb End If Cells(fila + 3, 9) = PFinal Cells(fila + 3, 3) = partDeb Cells(fila + 3, 5) = PorcPart Next Range("h1") = EqGan End Sub

Ejercicio 3 Arreglos florales(basada en Ex2 preg 7 2012-1) Azucena ha decidido ayudar a su mam en el negocio familiar: una tienda que realiza envo de arreglos florales a varios distritos de Lima. Durante todo un da observ que la mayor cantidad de pedidos se realizan por telfono, siendo la mayor dificultad brindar al cliente el monto total de la compra de manera inmediata para poder cancelar este pedido usando tarjeta de crdito. Las operadoras han manifestado que el mayor problema no es el costo de los arreglos florales, sino el clculo de los costos de los complementos, el costo por comisin de servicio y el costo de envo.

Oficina de Apoyo al Alumno Taller 6 2012-1

Estudios Generales Ciencias Introduccin a la Computacin

Azucena ha propuesto que el pedido se tome en una hoja de clculo como la siguiente:

Al tomar el pedido el cliente indica la direccin de entrega, el cdigo, la descripcin y el precio unitario del arreglo floral que desean enviar, datos que obtienen de la web de la tienda, y la cantidad de arreglos que desea enviar. La direccin de entrega (destino) siempre se tendr de la siguiente forma: direccin especfica seguida de un Tabla de complementos Cdigo Descripcin Precio guin, seguido del nombre de distrito. Adems, cada unitario($.) pedido puede incluir como mximo 2 complementos, COMCHO21 Chocolates 10 detalles adicionales al arreglo floral. La informacin de COMPEL34 Peluche 20 Globo 5 los complementos se muestra en la tabla COMGLO43 COMCUP12 Cupcakes 15 correspondiente. Las operadoras slo digitan la descripcin del complemento, sin embargo, es necesario que el cdigo y el precio en soles figuren en el detalle del pedido. Si bien los precios unitarios de los complementos estn en dlares se sabe que la florera trabaja con un tipo de cambio estndar de 1dlar=2.60 soles. El costo de envo corresponde al servicio de reparto a domicilio del pedido efectuado en la florera, tiene tarifas fijas segn el distrito de destino de acuerdo a la tabla correspondiente. El costo por comisin de servicio es un pago que se carga a la tarjeta de crdito por la transaccin realizada. Ver tabla correspondiente.

Costo de envo de acuerdo al distrito Distrito Precio (S/.) San Borja 10 Jesus Maria 12 Magdalena 13 Pueblo Libre 15

Subtotal <= 120 >120

Costo comisin de servicio (S/.) 20 0

Se le pide implementar utilizando VBA sobre Excel:

Oficina de Apoyo al Alumno Taller 6 2012-1

Estudios Generales Ciencias Introduccin a la Computacin

a) Un subprograma CambiarMoneda, que reciba por parmetro un monto en dlares, y calcule y devuelva su equivalente en soles. b) Un subprograma ObtenerDatosComplemento, que reciba por parmetro la descripcin de un complemento, y calcule y devuelva el cdigo y el precio unitario en soles de dicho complemento. Utilice el subprograma anterior. c) Un subprograma CalcularCostoComisionServicio, que reciba por parmetro el subtotal del pedido en soles, y calcule y devuelva el costo por comisin de servicio correspondiente. d) Un subprograma CalcularCostoEnvio, que reciba por parmetro la cadena que contiene la direccin completa de destino del pedido, y calcule y devuelva el costo de envo correspondiente. e) Un subprograma CalcularEnvioArreglosFlorales, que usando los subprogramas anteriores lea los datos de entrada, calcule y muestre el detalle de un pedido de arreglos florales como se muestra en la figura. f) (0.5 punto) Elaborar el diagrama de mdulos de la codificacin anterior. Este anlisis debe coincidir exactamente con la codificacin solicitada.
NOTA: No debe crear mdulos adicionales a los solicitados.

Const TC = 2.6, CODCH = "COMCHO21", CODPEL = "COMPEL34", CODGLO = "COMGLO43" Const CODCUP = "COMCUP12", PRECIOCOM = 20 Const PD1 = 10, PD2 = 12, PD3 = 13, PD4 = 15 Function CambiarMon(ByVal monDol As Single) As Single CambiarMon = monDol * TC End Function Sub ObtDatComp(ByVal desc As String, ByRef cod As String, ByRef _ precio As Single) Dim monDol As Single If desc = "Chocolates" Then cod = CODCH monDol = 10 ElseIf desc = "Peluche" Then cod = CODPEL monDol = 20 ElseIf desc = "Globo" Then cod = CODGLO monDol = 5 Else cod = CODCUP monDol = 15 End If precio = CambiarMon(monDol) End Sub Function CalcCostoComServ(ByVal subtotal As Single) As Single

Oficina de Apoyo al Alumno Taller 6 2012-1

Estudios Generales Ciencias Introduccin a la Computacin

If subtotal <= 120 Then CalcCostoComServ = PRECIOCOM Else CalcCostoComServ = 0 End If End Function Function CalcCostoEnvio(ByVal direc As String) As Single posG = InStr(1, direc, "-") dist = Mid(direc, posG + 1, Len(direc) - posG) If dist = "San Borja" Then CalcCostoEnvio = PD1 ElseIf dist = "Jesus Maria" Then CalcCostoEnvio = PD2 ElseIf dist = "Magdalena" Then CalcCostoEnvio = PD3 ElseIf dist = "Pueblo Libre" Then CalcCostoEnvio = PD4 End If End Function Sub EvaluarArreglos() direc = Range("b1") pu = Range("d4") cant = Range("c4") descC1 = Range("b5") descC2 = Range("b6") VVentaArr = pu * cant Call ObtDatComp(descC1, codC1, precioC1) Call ObtDatComp(descC2, codC2, precioC2) vventaC1 = cantC1 * precioC1 vventaC2 = cantC2 * precioC2 subtotal = VVentaArr + vventaC1 + vventaC2 costServ = CalcCostoComServ(subtotal) costoEnv = CalcCostoEnvio(direc) Range("e4") = VVentaArr Range("d5") = precioC1 Range("d6") = precioC2 Range("e7") = subtotal Range("e8") = costServ Range("e5") = vventaC1 Range("e6") = vventaC2 Range("e9") = costoEnv Range("e10") = costoEnv + costServ + subtotal Range("a5") = codC1 Range("a6") = codC2 End Sub

Oficina de Apoyo al Alumno Taller 6 2012-1

Estudios Generales Ciencias Introduccin a la Computacin

26 de noviembre al 1 de diciembre del 2012

S-ar putea să vă placă și