Está en la página 1de 7

FACULTAD DE INGENIERIA

FUNDAMENTOS DE COMPUTACION Y PROGRAMACION

SERIE A

PRUEBA ESCRITA PROGRAMADA I

ASPECTOS GENERALES DE LA PRUEBA

a)
b)
c)
d)

El estudiante recibir del equipo docente, un set de preguntas y hojas para las respuestas.
El estudiante deber identificarse con su Cdula de Identidad.
Sobre el escritorio slo podr existir lpiz (obligatorio) y goma/lpiz corrector (opcional).
Se recomienda asistir a la prueba sin bolsos, mochilas u otros de similar uso. Los alumnos
que porten estos objetos debern dejarlos al costado de su asiento y no podrn abrirlos
hasta que finalice la prueba.
e) Durante el desarrollo de la prueba queda prohibido hablar con los compaeros(as).
f) Los elementos tecnolgicos deben permanecer apagados y guardados. Queda
absolutamente prohibido el uso todo elemento tecnolgico. Su uso puede significar la nota
mnima.
g) El/La estudiante que se sorprenda en actos deshonestos ser calificado con la nota
mnima.
h) La prueba contiene 12 preguntas de alternativas y 1 pregunta de desarrollo y un total de 30
puntos.
i) La escala de notas a usar ser la siguiente:

j)

La prueba tiene una duracin total de 80 minutos.


Nombre

RUT

10

11

12

A
B
C
D
E

27-NOV-2013

FUNDAMENTOS DE COMPUTACION Y PROGRAMACION


PRUEBA ESCRITA PROGRAMADA I

SERIE A

Parte 1.

Alternativas

Para cada pregunta marque la alternativa correcta en la hoja de respuestas de la pgina de aspectos generales.
El puntaje total de esta parte es de: 23 puntos.
1.

Dado el modelo de Von Neumann, cules de los siguientes dispositivos son considerados de entrada: (1 punto)
I.
II.
III.
IV.
V.

2.

Micrfono [Dispositivo de entrada]


Parlantes [Dispositivo de salida]
Pendrive [Dispositivo de almacenamiento]
Mouse [Dispositivo de entrada]
Impresora [Dispositivo de salida]

a)
b)
c)
d)
e)

I y IV
I y II
I, III y IV
I, II, IV y V
Todas

Segn las buenas prcticas de programacin, el orden en que se declara un buen programa sera: (1 punto)
I.
II.
III.
IV.
V.

3.

Procesamiento [4]
Importacin y definicin de funciones [2]
Salida [5]
Entrada [3]
Importacin y definicin de constantes [1]

a)
b)
c)
d)
e)

V - II - IV - I III
IV - I - V - II - III
IV - II - V - I - III
V - IV - II - I - III
V - II - I - IV III

Indique cual(es) de las siguientes definiciones son correctas: (1 puntos)

I.

Parmetros formales: nombres que se utilizan al definir una funcin para referirse a los argumentos que
se le entregan al invocarla.
Parmetros actuales: nombres que se utilizan al definir una funcin para referirse a los argumentos que
se le entregan al invocarla. [Definicin de parmetro formal]
Parmetros formales: nombres que utilizan al invocar a la funcin, para dar valor a los argumentos que la
definen. [Definicin de parmetro actual]
Parmetros actuales: nombres que utilizan al invocar a la funcin, para dar valor a los argumentos que la
definen.

II.
III.
IV.

4.

a)
b)
c)
d)
e)

I y IV
I y II
II y III
I y III
II y IV

El resultado binario (con palabras de 1 byte) de la operacin (31)2 - (42)2 es: (2 puntos)
a)
b)
c)
d)
e)

5.

11110100
00001011
00110101
11110101
00110100

Opcin 1
00011111 00101010
00101010 11010101 11010110
00011111 + 11010110 11110101

Opcin 2:
31 42 = - 11
(11)10 (00001011)2
(-11)10 (11110100)2 + (00000001)2 (11110101)2

Los siguientes smbolos corresponden a operadores de Pyhton: (2 puntos)

I.
II.
III.
IV.

+ % / [+, % y / son operadores aritmticos]


> == >= [>, == y >= son operadores de comparacin]
Not = [not Operador booleano; - operador aritmtico, = operador de
asignacin]
if elif or and [or y and son operadores booleanos, pero el if y elif no son
operadores]

a)
b)
c)
d)
e)

Slo I
I y II
I, II y III
I, II y IV
Todos

6.

De acuerdo a la siguiente expresin escrita en Python, qu caractersticas debera cumplir la variable X para que
se ejecuten las sentencias del bloque condicional? (2 puntos)
if x % 2 != 0 or x < 10 and x > 0:
...
a) La variable X debe ser un nmero impar
conjunto de sentencias
menor que 10 y mayor que 0
...
b) La variable X puede ser cualquier nmero
x % 2 != 0 : Condicin para que entren nmeros
positivo
impares.
c) La variable X debe ser un nmero positivo de
x < 10 and x > 0: Condicin para que entren
un solo dgito
nmeros entre 0 y 10
d) La variable X debe ser un nmero impar o un
Dado que es un or entrar si es impar, por lo cual
nmero par positivo menor que 10
solo nos queda ver la opcin de los pares, los
e) Nunca se ejecuta el bloque condicional porque
cuales entran siempre y cuando sean mayor que 0
la condicin est, lgicamente, mal escrita
(positivos) y menor que 10.

27-NOV-2013

FUNDAMENTOS DE COMPUTACION Y PROGRAMACION


PRUEBA ESCRITA PROGRAMADA I

SERIE A

7.

Qu valor entrega Python tras ejecutar el cdigo? (2 puntos)

def calculaResultado(x):
resultado = 0
i = 5
while i < x:
if i%2 == 0 :
resultado = x * 2.0 + resultado
x = x - 1
return resultado
calculaResultado(25)

a)
b)
c)
d)
e)

0
500.0
300.0
300
500

La condicin del if se cumple para los valores i pares, pero el valor de i nunca varia y se mantiene en
su valor inicial 5, por lo cual nunca se entra al if, y nunca se actualiza el valor de resultado,
manteniendo el valor inicial de este ltimo (0).
8.

En el siguiente cdigo falta una instruccin marcada como ?. Sabiendo esto es correcto afirmar: (2 puntos)

num=10
if num==10:
print "a",
num += 1
? num ==11:
print "b",
num -= 1
if num == 10:
print "c"

a)
b)
c)
d)
e)

Si ? fuese un elif, el programa muestra por pantalla a c. [Si fuese


elif lo que saldra por pantalla es a]
Si ? fuese un if, el programa muestra por pantalla a. [Si fuese if lo
que saldra por pantalla es a b c]
Si ? fuese un elif, el programa muestra por pantalla a b c. [Si fuese
elif lo que saldra por pantalla es a]
Si ? fuese un else, el programa muestra por pantalla a. [No puede
ser un else ya que este posee una condicin]
Si ? fuese un if, el programa muestra por pantalla a b c.

9.

Cuntas instancias de la funcin calculaMultiplicacion se ejecutan en Python con el siguiente cdigo? (2


puntos)
def calculaMultiplicacion(valor1, valor2):
if valor1 == 1 :
return valor2
if valor2 == 1:
return valor1
if valor1 == 0 or valor2 == 0 :
a) 4
return 0
b) 1
return valor1 + calculaMultiplicacion(valor1, valor2 - 1)
c) 5
d) 6
calculaMultiplicacion(4,5)
e) La funcin no alcanza nunca
un caso base
El llamado recursivo va disminuyendo el segundo parmetro de
entrada de la funcin, de uno en uno hasta llegar a 1, por lo
cual se hacen 4 llamados recursivos, adems hay que contar la
llamada realizada para la ejecucin inicial, por lo cual se
llama 5 veces.
10. Cules deberan ser los valores de X e Y respectivamente para que el cdigo de como resultado la suma de
los nmeros impares?, adems cul es la comparacin que se debe realizar? (2 puntos)
a) X = 2; Y = 1; Comparacin: <=. [La condicin es 20 <= 0, por lo cual
variable = 20
nunca entra al ciclo].
suma = 0
b) X = 1; Y = 2; Comparacin: >=. [Va restando de 2 en dos por lo cual
while variable <comparacin> 0:
variable siempre ser par, por lo cual nunca entrar al if, el cual
if variable%2 == 1:
consulta por los impares]
suma = suma + variable
c) X = 2; Y = 1; Comparacin: >=.
variable -= X
d) X = 1; Y = 2; Comparacin: <=. [La condicin es 20 <= 0, por lo cual
else:
nunca entra al ciclo]
variable -= Y
e) X = 2; Y = 1; Comparacin: == [La condicin es 20 == 0, por lo cual
print suma
nunca entra al ciclo]

27-NOV-2013

FUNDAMENTOS DE COMPUTACION Y PROGRAMACION


PRUEBA ESCRITA PROGRAMADA I

SERIE A

11. En una empresa de videojuegos se est desarrollando un novedoso juego llamado laberinto. Este consiste en
atravesar un laberinto desde una posicin inicial (E) hasta un objetivo (S), tal como se muestra en la figura 1. Los
caminos se representan por un entero que contiene solo los dgitos 2 (avanzar un paso hacia abajo) y 4(avanzar
un paso a la derecha). Para el ejemplo, un posible camino sera 444222 (derecha, derecha, derecha, bajar, bajar,
bajar, comenzando en E para llegar a S).

Figura 1: Laberinto, donde E es la entrada y S el objetivo o salida


Para que el juego funcione, es necesario implementar una funcin que determine si un camino llega o no al objetivo.
Cul de las siguientes funciones determina si un camino que parte en E llega (retorna True) o no llega (retorna False)
a S? Considere caminoCorrecto1 = 444222 y caminoCorrecto2 = 242424 variables globales. (3 puntos)
PREGUNTA NULA DADO QUE NO SALIO LA ALTERNATIVA QUE CORRESPONDIA
NINGUNA DE LAS ANTERIORES.
a)
def comprobarCamino (camino):
return camino == caminoCorrecto1 and camino == caminoCorrecto2
Comprobaba que ambos caminos se cumplieran.
b)
def comprobarCamino (camino):
if camino == caminoCorrecto1:
return True
elif camino != caminoCorrecto2:
return True
return False
No comprueba que el segundo camino sea una opcin vlida de solucin
c)
def comprobarCamino (camino):
resultado = False
if camino == caminoCorrecto1:
resultado = True
if camino == caminoCorrecto2:
resultado = False
return resultado
Si es el segundo camino el que se entrega, retornar false lo cual es incorrecto.
d)
def comprobarCamino (camino):
if camino == caminoCorrecto1:
return caminoCorrecto1
else:
if camino == caminoCorrecto2:
return caminoCorrecto2
return camino
El retorno de esta funcin no corresponde a lo solicitado, que es verdadero o falso.
e)
def comprobarCamino (camino):
cc1 = caminoCorrecto1
cc2 = caminoCorrecto2
contador = 0
while camino != 0:
if camino%10 != cc1%10 and camino%10 != cc2%10:
return False
camino = camino/10
cc1 = cc1/10
cc2 = cc2/10
contador += 1
if contador == 6:
return True
return False
Realiza una comprobacin paso a paso del camino, pero falla al mezclar ambos caminos, por
ejemplo con la entrada 444424, el cual no es un camino correcto da como resultado true.

27-NOV-2013

FUNDAMENTOS DE COMPUTACION Y PROGRAMACION


PRUEBA ESCRITA PROGRAMADA I

SERIE A

12. Se puede estimar la poblacin mundial que habr el siguiente ao con la siguiente frmula:
poblacion_futura = poblacion_actual + (tasa_nacimiento tasa_defunciones)*poblacin_actual
A partir de esta frmula es posible crear una funcin que calcule la poblacin mundial dada la poblacin actual,
las tasas de nacimiento y defuncin y el ao en que se quiere estimar la poblacin. Cul(es) de las siguientes
funciones dado los parmetros anteriores calcula efectivamente la poblacin mundial para un ao
determinado? Considere tNac = Tasa de nacimiento y tMor = Tasa de mortandad y anoActual <= anoFuturo. (3
puntos)
# Ej. De entrada: poblacionFutura (0.0191, 0.00799, 7000000000)
def poblacionFutura (tNac, tMor, poblacionActual):
poblacionFutura = poblacionActual
poblacionFutura += (tNac - tMor)*poblacionActual
return poblacionFutura
I. # Ej. De entrada:
# poblacionFutura (0.0191, 0.00799, 7000000000, 2013, 2025)
# Este ejemplo es vlido para las opciones II, III y IV

II.

III.

Calcula la poblacin futura solo del siguiente ao, no depende de la cantidad de aos que
uno indique.
def poblacionFutura (tNac, tMor, poblacionActual, anoActual, anoFuturo):
poblacionFutura = poblacionActual
ano = anoActual
while ano < anoFuturo:
poblacionFutura += (tNac - tMor)*poblacionActual
ano += 1
return poblacionFutura
def poblacionFutura (tNac, tMor, poblacionActual, anoActual, anoFuturo):
if anoActual == anoFuturo:
return (tNac - tMor)*poblacionActual + poblacionActual
else:
return poblacionFutura (tNac, tMor, poblacionActual, anoActual+1, anoFuturo)

Calcula la poblacin futura solo del siguiente ao, no depende de la cantidad de aos que
uno indique.
def poblacionFutura (tNac, tMor, poblacionActual, anoActual, anoFuturo):
if anoActual == anoFuturo -1:
return (tNac - tMor)*poblacionActual + poblacionActual
IV.
else:
return
(tNac
tMor)*poblacionActual
+
poblacionFutura
(tNac,
tMor,
poblacionActual, anoActual+1, anoFuturo)
a) Solo I
b) III y IV
c) I y III
d) II y IV
e) Solo III

27-NOV-2013

FUNDAMENTOS DE COMPUTACION Y PROGRAMACION


PRUEBA ESCRITA PROGRAMADA I

SERIE A

Parte 2.

Desarrollo
7 puntos

El siguiente programa escrito en Python, est construido considerando las buenas prcticas de la programacin. Se observa
que estn definidas las funciones que permiten calcular la resta entre dos nmeros enteros, compuestos por 0 s y 1s , que
representan un nmero binario.
Se solicita que analice el programa y construya el bloque principal, necesario para invocar/llamar las funciones
realizarn la operacin aritmtica (resta).
Ejemplo : (1000)2 (10)2 = (110)2
############## Encabezado
#### Objetivo: Composicin de funciones
#### Autor: Coordinacin Fundamentos de Computacin y Programacin
#### Fecha: 2-2013
#### Versin: 2.3
###### Constantes
## No hay
###### Funciones
## Definicin
###### Funcion que verifica si la entrada es correcta o no
## Entrada: Nada
## Salida: Numero entero compuesto por 0's y 1's que representa un numero binario
def solicitarEntrada():
numero = input ("Ingrese un numero binario: ")
while (not verificarNumeroBinario(numero)) and contarDigitos(numero) <= 8:
print "Puede ser que el numero tenga ms de 8 bits."
print "Si es que el numero ingresado comienza con 0, por favor no los ingrese."
numero = input ("Ingrese un numero binario: ")
return numero
###### Funcion que cuenta cuantos dgitos tiene un numero
## Entrada: Un numero entero
## Salida: Cantidad de dgitos del numero ingresado
def contarDigitos(n):
contador = 0
while n > 0:
contador += 1
n /= 10
return contador
###### Funcion que verifica si el numero ingresado esta compuesto por 0s y 1s o no
## Entrada: Un numero entero
## Salida: Verdadero si el numero esta compuesto por 0s o 1s o falso en caso contrario
def verificarNumeroBinario(n):
while n > 0:
resto = n%10
if resto != 0 and resto != 1:
return False
n = n/10
return True
###### Funcion que complementa un numero binario, cambiando los 0's por 1's y los 1's por
## 0's
## Entrada: Un numero entero compuesto por 8 0's o 1's
## Salida: Un numero entero compuesto por 8 0's o 1's
def complementarBinario(numero):
respuesta = 0
cont = 7
while cont >= 0:
resto = numero/10**cont
if resto==0:
respuesta = respuesta + 10**cont * 1
else:
respuesta = respuesta + 10**cont * 0
numero = numero-(numero / 10**cont)*10**cont
cont -= 1
return respuesta

27-NOV-2013

FUNDAMENTOS DE COMPUTACION Y PROGRAMACION


PRUEBA ESCRITA PROGRAMADA I

SERIE A

que

###### Funcion que suma dos numeros binarios


## Entrada: Dos numeros enteros compuestos por 8 0's o 1's
## Salida: Un numero entero compuesto por 8 0's o 1's
def sumarBinarios(numero1, numero2):
contador = 1
resultado = 0
acumulador = 0
while contador <= 8:
resto1 = numero1 % 10
resto2 = numero2 % 10
if resto1 + resto2 + acumulador == 1:
resultado = resultado + 10**(contador-1)
acumulador = 0
elif resto1 + resto2 + acumulador == 2:
if acumulador == 1:
acumulador == 0
else:
acumulador = 1
elif resto1 + resto2 + acumulador == 3:
resultado = resultado + 10**(contador-1)
acumulador = 1
numero1 /= 10
numero2 /= 10
contador += 1
return resultado
############## Bloque Principal
## Entrada
#Solicitamos los dos nmeros a operar al usuario
numero1 = solicitarEntrada()
numero2 = solicitarEntrada()
## Procesamiento
# Complementamos el binario (Solo cambia los 0s por 1s y los 1s por 0s
complemento = complementarBinario(numero2)
# Finalizamos el complemento a 2, sumando un 1 a nuestro nmero
complementoA2 = sumarBinarios(complemento,1)
# Ahora sumamos nuestros nmeros, el inicial con el complemento a 2 del segundo
respuesta = sumarBinarios(numero1,complementoA2)
## Salida
# Imprimimos nuestra salida
print respuesta
## Fin del programa

27-NOV-2013

FUNDAMENTOS DE COMPUTACION Y PROGRAMACION


PRUEBA ESCRITA PROGRAMADA I

SERIE A

También podría gustarte