INTRODUCCIÓN A LA PROGRAMACIÓN Segundo Parcial - Marzo 22 de 2014 -AConsideraciones Generales Esta evaluación es estrictamente individual. Cualquier violación a esta norma será considerada como fraude. Solo puede utilizar lapicero, lápiz y borrador. No se permite el uso de ningún tipo de equipo electrónico, como portátiles, celulares, etc. Cualquier violación a esta norma será considerada como fraude. No se permite el préstamo de ningún objeto. El Fraude ocasiona la apertura de proceso disciplinario. Tiempo de Duración: 2 Horas CRITERIOS DE EVALUACIÓN: - El código Python de las funciones y procedimientos propuestos deben dar el resultado esperado, es caso contrario, se “castigaran” con un 30% de su valor. - Si las funciones o procedimiento presentan más de 5 errores de sintaxis o estructura, se disminuirá en un 30% adicional el valor del punto. - Se valorará con un 20% del puntaje de la pregunta, el adecuado manejo de las entradas y salidas (parámetros, valores de retorno, impresiones) de las funciones y procedimientos. - El 20% restante lo evaluará el docente de acuerdo a cada caso particular. “El estudiante de la Pontificia Universidad Javeriana, como agente de su propia formación, es corresponsable de la Identidad Institucional, uno de cuyos cimientos es tener como hábito un comportamiento ético en todos los ámbitos de la vida. En este sentido me comprometo a realizar con total integridad esta evaluación, solamente empleando los recursos autorizados para su desarrollo". Consejo Académico, Acta No. 79, abril 19 de 2004 Nombre: ______________________________________ Código: ____________ Pregunta Puntos Calificación 1 10 2 20 3 10 4 10 Total 50 1. El objetivo de este ejercicio es evaluar su entendimiento en condicionales. Tiberius está buscando su trabajo soñado, pero tiene algunas restricciones. El ama California y le gustaría tomar un trabajo ahí si el pago es mayor a $40.000 al año. El odia Massachusetts y pediría al menos $100.000 para trabajar ahí. En cualquier otro lugar el estaría contento de trabajar por $60.000 al año. El siguiente código muestra su estrategia básica para evaluar una oferta de empleo: INTRODUCCIÓN A LA PROGRAMACIÓN Segundo Parcial - Marzo 22 de 2014 def estrategia_de_tiberius_para_buscar_trabajo(pago, ubicacion): if ubicacion == "U.S.S. Enterprise": print "Lo tomare, es mi gran sueño!" elif ubicacion == "Massachusetts": if pago < 100000: print "De ninguna manera!" else: print "Lo tomare, que mas da!" elif ubicacion == "California" and pago > 40000: print "Lo tomare!" elif pago > 60000: print "Lo tomare, es una buena opción!" else: print "No gracias, yo puedo encontrar algo mejor." Por cada uno de las siguientes ofertas de trabajo, escriba abajo la salida que se generaría: a) (2 Puntos) ubicacion = "Massachusetts" pago = 50000 b) (2 Puntos) ubicacion = "Iowa" pago = 50000 c) (2 Puntos) ubicacion = "California" pago = 50000 d) (2 Puntos) ubicacion = "U.S.S. Enterprise" pago = 1 e) (2 Puntos) ubicacion = "California" pago = 25000 2. La empresa de alimentos XYZ, va a lanzar una promoción sobre sus productos de la siguiente manera: Si el cliente compra menos de 5 productos, y si estos productos tienen un valor total menor a $100.000, entonces se realizará un descuento del 10%. Si la compra es por un valor mayor o igual a $100.000, el descuento es del 15% Si el cliente compra entre 5 a 10 productos, y el valor total de estos es mayor a $500.000 entonces se realizará un descuento del 20%, de lo contrario el descuento es del 18%. Si el cliente compra más de 10 productos y el valor total de la compra es menor a $1'000.000, el descuento será del 30%, en caso contrario el descuento es del 40% INTRODUCCIÓN A LA PROGRAMACIÓN Segundo Parcial - Marzo 22 de 2014 a) Realizar una función en Python llamada calcularDescuento, que reciba como parámetros un valor y un porcentaje de descuento. La función debe aplicar el descuento sobre el valor ingresado y retornar el valor final. Ejemplo: Si el valor inicial es 100.000, el descuento es el 20%, entonces, el valor final a retornar es 80.000. a.1) (3 Puntos). Contrato (análisis) a.2) (5 Puntos). Código Python de la función b) Realizar un procedimiento en Python que reciba una cantidad de productos comprados y el valor total de la compra, y le indique al cliente cuál es el valor final a cancelar dependiendo de los descuentos especificados. Este procedimiento debe de hacer uso de la función realizada en el punto anterior calcularDescuento, para indicarle al usuario el valor final a pagar. b.1) (4 Puntos). Contrato (análisis) b.2) (8 Puntos). Código Python del procedimiento 3. Un orientador de actitud vocacional formula a un grupo de estudiantes un conjunto de preguntas, con el propósito de ubicarlos por grupos de tal manera que en un ejercicio posterior, los grupos tengan algunas características comunes y los estudiantes puedan conversar tranquilamente. El orientador entrega a cada estudiante una hoja con las siguientes preguntas y les invita a seguir las indicaciones para que al final queden ubicados por grupos. Las posibles ubicaciones son: “Centro del Salón”, “Puerta Principal”, “Tablero” y “Escritorio” 1. 2. 3. 4. 5. Si soy mayor de edad: me coloco de pie. Si estoy de pie y soy nacido en Cali: en el mismo sitio, me ubico mirando hacia atrás. Si no estoy de pie y soy nacido en Cali: me dirijo hacia el Centro del salón. Si estoy mirando hacia atrás y no me gusta bailar: me siento en el piso. Si estoy mirando hacia atrás y no estoy sentado en el piso y me gusta la leer: me ubico al lado de la puerta principal. 6. Si no me he movido durante todas las preguntas: me ubico al lado del tablero. 7. Si la persona no se encuentra aun en una ubicación valida, se debe ubicar al lado del escritorio del orientador. Simultáneamente, el orientador busca un programador para analizar el problema y le pide que le ayude a realizar el contrato (análisis) de una función que simule las indicaciones dadas, y que al ingresar los datos del estudiante que suponen las preguntas, la función retorne, mediante una cadena de texto, el lugar en el cual debe estar ubicado el estudiante al final de las preguntas. a) (10 Puntos) Usted es el programador, por consiguiente debe elaborar el contrato (análisis) completo (definir entradas y salidas con sus tipos de datos, dominios y/o restricciones, y el algoritmo) para este problema. INTRODUCCIÓN A LA PROGRAMACIÓN Segundo Parcial - Marzo 22 de 2014 4. A continuación se muestra un programa en Python que contiene errores, es decir, si se ejecuta en Python el programa no mostrará un resultado ya que fallará en varias partes del código escrito. def convertir(t, r): c = t - r f = c return c def muchosErrores(a, b, c): x = a + b x = c + convertir(x) y = f w = 0 if esImpar(x): w = c + b r = (b - c) elif (x = 0) and (x < a): w = c - a r = w else: r = -1 x = x ** 2 (x != 24): r = r - (x % 10) return r r = -1 return r e = muchosErrores(5, -1, 0) print e a. (5 Puntos) Analice detalladamente el programa completo, identifique los errores y márquelos encerrándolos en un círculo. b. (5 Puntos) Escriba nuevamente el programa pero sin errores, de tal manera que si se ejecuta en Python, esta vez sí debe mostrar un resultado por pantalla. Nota: No puede eliminar (quitar) completamente las sentencias con error, debe corregirlas, es decir, la función muchosErrores tiene 18 sentencias o instrucciones que la definen y así mismo debe quedar cuando usted la corrija. Puede recurrir a cualquier solución siempre y cuando corrija el error.