Está en la página 1de 6

FACULTAD DE INGENIERÍA

FUNDAMENTOS DE COMPUTACION Y PROGRAMACION

PEP N°1

ASPECTOS GENERALES DE LA PRUEBA

● Queda prohibido hablar con los compañeros(as) durante el desarrollo de la PEP.


● La PEP contiene 3 preguntas de desarrollo, con un total de 45 puntos y una exigencia del 60%
● Tiene un límite de tiempo de 90 minutos para responder.
● El equipo docente tiene la prohibición de responder consultas.
● El/La estudiante que se sorprenda en actos deshonestos será calificado con la nota mínima.
● Los elementos tecnológicos deben permanecer apagados y guardados. Queda absolutamente
prohibido el uso todo elemento tecnológico. Su uso puede significar la nota mínima o sanciones
mayores.
● El alumno deberá identificarse con su Cédula de Identidad.
● Sobre el escritorio sólo podrá existir lápiz (obligatorio) y goma/lápiz corrector (opcional).
● Lea atentamente la prueba antes de comenzar a desarrollarla.
● Complete sus datos personales antes de comenzar la evaluación.
● Considere que la evaluación contempla el código, los comentarios y el seguimiento de las buenas
prácticas de programación.
● Responda cada pregunta, a continuación de su enunciado, en el espacio que se le entrega para
ello.

NOMBRE RUT SECCIÓN


12 de diciembre de 2015

1. (15 puntos) Genere el diagrama de abstracción para una implementación del juego de cartas
del blackjack, considerando que:

El objetivo del juego es que uno de los jugadores obtenga la puntuación más cercana a 21, a
partir de una mano de cartas.
● El juego considera un jugador y al computador (Que a su vez, hace de croupier, es decir,
reparte las cartas).
● Se reparten inicialmente dos cartas por jugador.
● El jugador revisa sus cartas, puede escoger entre plantarse (quedarse con las cartas que
tiene), o solicitar otra carta.
● El croupier tiene reglas rígidas: si su puntuación inicial fuera 16 o menor está obligado a
tomar otra carta, y si su puntuación alcanza 17 o más, debe plantarse.
● Cuando un jugador tiene más de 21 puntos sumados en su mano, automáticamente
pierde.
● Si el jugador alcanza el valor de 21, gana automáticamente, sino, el jugador que tenga un
valor más cercano a 21 desde abajo gana.

selección mazo

mano mano
escogerOpcion repartirCartas jugadaCroupier

mano

opción mano
opción
repartirCarta plantarse

mano

puntaje
mano
calcularPuntaje determinarGanador calcularPuntaje
puntaje

ganador

2
12 de diciembre de 2015

2. (15 puntos) Un importante compositor nacional, solicitó a un programador que construya un


programa que, a partir de una palabra, Python entregue todas las palabras que rimen con ella.
Para ello, el programador definió una lista de strings llamada vocabulario que contiene todas
las palabras en español. El programador diseñó el siguiente diagrama de abstracción para
resolver el problema:

palabra
(string)
verificarEntrada revisarRimas imprimirPalabras
palabrasQueRiman
(lista de strings)

boolean
vocabulario
(lista de strings)
palabra
(string) vocabulario
(lista de strings)
eliminarPalabra

La idea del programador es:


● Que la función verificarEntrada solicite la palabra al usuario y revise que sea una
palabra válida (sólo con caracteres alfabéticos), si la palabra es válida la función la
retornará, de lo contrario la solicitará de nuevo.
● Luego para evitar que se sugiera como rima la misma palabra al usuario, la función
eliminarPalabra, quita la palabra de la lista vocabulario.
● A continuación, la función revisarRimas selecciona las palabras que riman con la
palabra ingresada (Para ello revisa que los tres últimos caracteres de la palabra y de
cada palabra sean iguales) y retorna una lista de rimas.
● Finalmente, una función imprimirPalabras muestra cada palabra en una línea
separada en Python y retorna True cuando termina dicho proceso.

Teniendo en cuenta que nuestro programador ya implementó verificarEntrada,


eliminarPalabra e imprimirPalabras, implemente la función revisarRimas y construya
el bloque principal del programa en Python. Considere para su desarrollo que todas las
palabras tienen a lo menos tres caracteres.

3
12 de diciembre de 2015

Función revisarRimas

# Función que busca las palabras que rimen con una palabra en particular
# Entrada: palabra a revisar (string), vocabulario (lista de strings)
# Salida: palabras que riman (lista de strings)
def revisarRimas(palabra, vocabulario):
palabrasQueRiman = []
# Genero un substring con las tres últimas letras de la palabra
rima = palabra[len(palabra) - 3] +palabra[len(palabra) - 2] +\
palabra[len(palabra) - 1]
# Ciclo para revisar todas las palabras
for e in vocabulario :
# Genero un substring con las tres últimas letras de cada
# palabra del vocabulario
tresUltimas = e[len(e) - 3] + e[len(e) - 2]+ e[len(e) - 1]
# Si las palabras riman
if rima == tresUltimas :
# Agrego la palabra a la lista de palabrasQueRiman
palabrasQueRiman.append(e)

# Retorno las palabras que riman


return palabrasQueRiman

Bloque principal

# BLOQUE PRINCIPAL

# ENTRADA
# Solicito la entrada con la función para ello
palabra = verificarEntrada()

# PROCESAMIENTO
# Elimino la palabra a buscar del vocabulario
vocabulario = eliminarPalabra(palabra, vocabulario)
# Busco las palabras que riman
palabrasQueRiman = revisarRimas(palabra, vocabulario)

# SALIDA
# Imprimo las palabras y reviso si la función terminó
exito = imprimirPalabras(palabrasQueRiman)
if exito:
print "El programa ha finalizado con éxito"

4
12 de diciembre de 2015

3. (15 puntos) Una empresa tiene el registro de cada uno de sus empleados en una lista con
tres elementos: nombre, sexo y edad. La totalidad de los empleados se agregan a una lista
de listas llamada listaEmpleados. Para su desarrollo considere que esta lista se le entregará
directamente en la entrada del bloque principal, a través de un input().

Por ejemplo, cada empleado se almacena de esta forma:


empleado = ['Carlos Marambio','M', 34]

Y la lista de empleados completa, queda en una estructura de estas características:

listaEmpleados = [['José Cordero,'M', 41],['Cecilia Rojas', 'F', 62],


['Claudia Reyes','F', 26]]

A partir de la entrada listaEmpleados, se requiere que construya un programa en Python que


entregue dos listas:
● Una con los nombres de los empleados en edad de jubilar.
● Una con todos los datos de los empleados menores a 20 años.

Tenga en cuenta que la edad de jubilación de los hombres es de 65 años y de las mujeres es
de 60 años.

# Programa que determina las personas en edad de jubilar


# y menores a 20 años de una lista de empleados
# Autor: Coordinación FCYP

# BLOQUE DE DEFINICIÓN

# Función que determina las personas en edad de jubilar


# Entrada: lista de empleados (lista de listas)
# Salida: lista de empleados en edad de jubilar (lista de strings)
def obtenerJubilados(listaEmpleados):
personasAJubilar = []
for persona in listaEmpleados :
if persona[1] == "M" and persona[2] >= 65 :
personasAJubilar.append(persona[0])
if persona[1] == "F" and persona[2] >= 60 :
personasAJubilar.append(persona[0])

return personasAJubilar

# Función que determina las personas en edad de jubilar


# Entrada: lista de empleados (lista de listas)
# Salida: lista de empleados en edad de jubilar (lista de strings)
def obtenerJovenes(listaEmpleados):
personalJoven = []
for persona in listaEmpleados :
if persona[2] < 20 :
personalJoven.append(persona)
return personalJoven
5
12 de diciembre de 2015

# BLOQUE PRINCIPAL

# ENTRADA
# Se solicita la lista de empleados
listaEmpleados = input("Ingrese lista de empleados: ")
# PROCESAMIENTO
# Se obtienen los empleados en edad de jubilar
listaJubilados = obtenerJubilados(listaEmpleados)
# Se obtienen los empleados jóvenes
listaJovenes = obtenerJovenes(listaEmpleados)

#SALIDA

print "Los empleados en edad de jubilar son: "


print listaJubilados, "\n"
print "Los empleados menores de 20 años son:"
print listaJovenes

También podría gustarte