Está en la página 1de 6

FACULTAD DE INGENIERIA

FUNDAMENTOS DE COMPUTACION Y PROGRAMACION


SERIE A
PEP N1

ASPECTOS GENERALES DE LA PRUEBA

Queda prohibido hablar con los compaeros(as) durante el desarrollo de la PEP.


La PEP contiene 5 preguntas de alternativas y 2 de desarrollo, con un total de 45 puntos y una
exigencia del 60%
Tiene un lmite de tiempo de 90 minutos para responder.
El equipo docente tiene la prohibicin de responder consultas.
El/La estudiante que se sorprenda en actos deshonestos ser calificado con la nota mnima.
Los elementos tecnolgicos deben permanecer apagados y guardados. Queda absolutamente
prohibido el uso todo elemento tecnolgico. Su uso puede significar la nota mnima o sanciones
mayores.
El alumno recibir del equipo docente, un set de preguntas y hojas para las respuestas.
El alumno deber identificarse con su Cdula de Identidad.
Sobre el escritorio slo podr existir lpiz (obligatorio) y goma/lpiz corrector (opcional).
Lea atentamente la prueba antes de comenzar a desarrollarla.
Complete sus datos personales antes de comenzar la evaluacin.

SECCIN
NOMBRE RUT
CTEDRA LAB

Marque con una X la casilla correspondiente a su eleccin en cada pregunta de seleccin mltiple.

1 2 3 4 5
A
B
C
D
E
SERIE A 15 de Mayo de 2015

PARTE I SELECCIN MLTIPLE


1. (3 puntos) Dada la siguiente funcin en Python:
Cdigo Alternativas
def suma(x):
if (x == 0): a) La llamada suma(5) devuelve 0
b) La llamada suma(5) devuelve 5
return 0
c) La llamada suma(5) devuelve 10
else : d) La llamada a suma devuelve 14
return x + suma(x-1) -1 e) La llamada suma(5) devuelve 15

2. (3 puntos) Considerando la siguiente funcin, a la que intencionalmente se le han removido


las buenas prcticas de programacin. Qu valor entrega si es invocada como T(3,4)?
Cdigo
def T(p,q):
x = 1 a) 12
i = 1 b) 81
if p == 0 : c) 64
d) 27
x = 0 e) 243
elif p == 1:
x = 1
else:
while i <= q :
x = p * x
i = i + 1
return x

3. (3 puntos) Cul de las siguientes opciones indica el orden correcto en que se evalan los
operadores booleanos:
Alternativas
a) disyuncin, conjuncin, negacin
b) negacin, disyuncin, conjuncin
c) negacin, conjuncin, disyuncin
d) conjuncin, disyuncin, negacin
e) conjuncin, negacin, disyuncin

4. (3 puntos) Al ejecutar el siguiente cdigo en Python, este informa de un error. Cul de las
siguientes opciones explica mejor el motivo del error?
Cdigo
1 x = 0
2
3 def funcion(a):
4 z = x * a
5 x = 2
6 return z
7
8 b = 20
9 print funcion(b)

2
SERIE A 15 de Mayo de 2015

Alternativas
a) El programa falla porque no est comentado.
b) El programa falla porque los nombres de variables y funciones no son representativos.
c) El error est en la lnea 5 pues se est asignando un valor a una variable ya definida.
d) El programa falla porque la variable b, definida en la lnea 8, debera llamarse a.
e) El error est en la lnea 4 pues la variable local x se define despus de ser utilizada.

5. (3 puntos) Si a = True, b = True, y c = True, cul de las siguientes expresiones se evala


como verdadera?
Alternativas
a) a and not (not c or not b)
b) not(not a or c or not b)
c) not (not c or b and a)
d) a and not(a or not c)
e) not(not a or b and c)

PARTE II DESARROLLO PYTHON

6. Con la finalidad de probar suerte, y entretenerse entre clases y clases, un grupo de alumnos
del curso de Fundamentos de Computacin y Programacin del presente semestre decidi
generar una aplicacin en Python que simulara el siguiente juego al azar:

El jugador debe indicar un nmero al azar entre 1 y 6, y lanzar dos dados, tantas veces
como sea necesario para lograr en un tiro tener el par del nmero indicado

Por ejemplo:
Entrada:
Nmero indicado por el jugador: 3
Proceso:
Simulacin de los lanzamientos al azar: (1,5), (6,3), (2,2), (3,4), (6,6), (1,2), (3,3)
Salida:
Se necesitaron 7 lanzamientos de ambos dados para obtener el par de 3.

Los ayudantes del curso, interesados en contar con este juego lo ms pronto posible,
disearon:
a) La funcin lanzarDado() que retorna un valor aleatorio entre 1 y 6.
b) El bloque principal

Se le solicita a Ud. participar en el concurso entre los alumnos de FCyP del presente semestre,
diseando:

a) (5 puntos) La funcin validarEntrada(numero) que recibe como parmetro formal un


nmero y retorna True si el nmero es un entero entre 1 y 6, y False en caso contrario.

b) (10 puntos) La funcin jugarDados(numero), que recibe como parmetro formal un


nmero entero entre 1 y 6, ya validado, y realiza la simulacin del juego, lanzando un par
de dados hasta lograr el par del nmero indicado y retornando la cantidad de
lanzamientos realizados.

3
SERIE A 15 de Mayo de 2015

# -*- coding: cp1252 -*-


#Simulacin Juego al Azar

from random import randint


#Funcin que simula el lanzamiento de un dado
#Entrada: ninguna
#Salida: nmero aleatorio entre 1 y 6
def lanzarDado():
num=randint(1, 6)
return num

#Funcin que valida el ingreso del dato entre 1 y 6


#Entrada: nmero
#Salida: valor booleano

def validarEntrada(numero):
rango = numero >=1 and numero <=6
entero = numero - int(numero) == 0
return rango and entero

#Funcin que simula el juego al azar de lanzar dos dados hasta


#obtener el par de valores solicitado
#Entrada: nmero solicitado (valor ente 1 y 6)
#Salida: Cantidad de lanzamientos realizados

def jugarDados(numero):
lanzamiento=1
#Realiza el primer lanzamiento
dado1= lanzarDado()
dado2= lanzarDado()

#Simulacin de los siguientes lanzamientos, si el primero NO es


el par solicitado
while dado1!=numero or dado2!= numero:
lanzamiento= lanzamiento + 1
dado1= lanzarDado()
dado2= lanzarDado()

return lanzamiento

#BLOQUE PRINCIPAL
#ENTRADA
numero= input("ingrese un valor entre 1..6: ");
valido = validarEntrada(numero)
while (not valido):
numero= input("ingrese un valor entre 1..6: ");
valido = validarEntrada(numero)

4
SERIE A 15 de Mayo de 2015

#PROCESO
intentos= jugarDados(numero)

#SALIDA
print "Obtuvo el par de valores en ", intentos, " intentos"

7. (15 puntos) Un edificio de 9 pisos de altura tiene solamente un ascensor. Considere que este
tarda 3 segundos en subir un piso y 2 segundos en bajar un piso. Adems, cada detencin
toma 5 segundos. Construya una funcin en Python que determine cunto tiempo tarda el
ascensor en recorrer una secuencia de llamadas, entregada como un string (en el orden dado),
considerando que al comienzo se encuentra en el primer piso.

Por ejemplo:
Entrada:
Ingrese la secuencia de llamadas: 315128
Salida:
El ascensor tarda 81 segundos en hacer el recorrido por los pisos 315128

Considere que la entrada siempre ser correcta y que su solucin debe ser consistente con el
bloque principal entregado a continuacin.

# Supuestos:
# 1.- El ascensor parte en el piso N1
# 2.- Si se presiona dos veces consecutivas un piso, se aaden 5
segundos al tiempo de espera
def calculaAscensor(llamadas):
# Se calcula el tiempo de la primera llamada
tiempo = (int(llamadas[0])- 1) * 3 + 5
# Se inicia el contador en 1
i = 1
# Se inicia el ciclo para recorrer el string, hasta alcanzar el
largo de este
while i < len(llamadas):
# Se calcula la diferencia que hay entre los pisos adyacentes
en el string
diferencia = int(llamadas[i]) - int(llamadas[i-1])
# Si el ascensor debe subir
if diferencia > 0 :
# Se suma el tiempo de subida y parada
tiempo = tiempo + diferencia * 3 + 5
# Si el ascensor debe bajar
elif diferencia < 0 :
# Se suma el tiempo de bajada y parada
tiempo = tiempo + abs(diferencia) * 2 + 5
# Si existen nmeros repetidos
else :
# Se aade 5 segundos extra de espera
tiempo = tiempo + 5

5
SERIE A 15 de Mayo de 2015

# Se incrementa el iterador
i = i + 1
# Se retorna el tiempo
return tiempo

# BLOQUE PRINCIPAL

# ENTRADA
llamadas = raw_input("Ingrese la secuencia de llamadas llamadas: ")

# PROCESAMIENTO
tiempo = calculaAscensor(llamadas)

# SALIDA
print "El ascensor tarda",tiempo,"segundos en hacer el recorrido por
los pisos", llamadas

También podría gustarte