Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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.
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:
3
SERIE A 15 de Mayo de 2015
def validarEntrada(numero):
rango = numero >=1 and numero <=6
entero = numero - int(numero) == 0
return rango and entero
def jugarDados(numero):
lanzamiento=1
#Realiza el primer lanzamiento
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