0% encontró este documento útil (0 votos)
31 vistas5 páginas

Examen Posible Exemplo 20180508

El documento es un examen de informática para la Ingeniería que incluye un test sobre programación en Python y un desarrollo de aplicación informática. Los alumnos deben responder a preguntas de opción múltiple y, dependiendo de su elección sobre evaluación continua, realizar diferentes partes del examen. Se detallan las instrucciones, la estructura del examen y los criterios de puntuación.

Cargado por

Claudia
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
31 vistas5 páginas

Examen Posible Exemplo 20180508

El documento es un examen de informática para la Ingeniería que incluye un test sobre programación en Python y un desarrollo de aplicación informática. Los alumnos deben responder a preguntas de opción múltiple y, dependiendo de su elección sobre evaluación continua, realizar diferentes partes del examen. Se detallan las instrucciones, la estructura del examen y los criterios de puntuación.

Cargado por

Claudia
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Examen de Informática para la Ingeniería (T1) 08/5/2018 Escuela de Ingeniería Industrial de Vigo

Apellidos Nombre DNI Grupo


Si has renunciado a la evaluación continua marca la casilla
Nota: Este examen era originalmente para Visual Basic y ha sido adaptado a Python
INSTRUCCIONES
• Todas las preguntas del test se han de contestar en la tabla a pie de página de esta primera hoja en MAYÚSCULAS.
• Las respuestas fuera de la tabla o poco claras no serán tenidas en cuenta.
• Sólo hay una respuesta válida en cada pregunta de test.
• Las preguntas de la 1 a la 10 puntúan todas igual.
• Las respuestas correctas del test puntúan 1. Las incorrectas restan 0,4. Las no contestadas no puntúan.
• El alumno que no haya renunciado a la evaluación continua sólo tiene que hacer las preguntas de la 1 a la 10. (se recuerda que es
necesario obtener al menos un 3 sobre 10 para optar a aprobar)
• El alumno que ha renunciado a la evaluación continua tiene que hacer el test y el desarrollo en papel de la aplicación informática.
• La duración del examen es de 50 minutos para los alumnos que no han renunciado a la evaluación continua
• Para los alumnos que han renunciado a la evaluación continua el examen se divide en:
o 1ª parte (teoría) (35% de la nota): 50 minutos para realizar las preguntas de la 1 a la 10. (se recuerda que es necesario
obtener al menos un 3 sobre 10 para optar a aprobar)
o 2ª parte (práctica) (65% de la nota): 70 minutos para el desarrollo de la aplicación informática.

Test (tienen que realizarlo todos los alumnos)


s=[0,0,0]
1 ¿Qué muestra por pantalla el siguiente programa? for i in range(1,len(s)-1):
s[i]=s[i-1]+i
A 0
B 3 print(s[i])
C 1
D Se produce un error

2 ¿Cuál de estos dispositivos no se destina a almacenar información de forma permanente (persistente)?


A Memoria principal (RAM)
B Disco duro
C Pen Drive
D DVD

3 ¿qué afirmación es correcta respecto del código que se muestra a la derecha?


data='HOLA'
Se leen todos los datos uno a uno del fichero nombreFichero='datos.txt'
A
datos.txt y se van mostrando. file=open(nombreFichero,'w')
char=''
Se escribe el valor de dato en el fichero datos.txt y while char!='':
B char=file.read(1)
se muestra en pantalla HOLA.
print(char.rstrip())
file.close()
C El programa sólo crea el fichero. Ni lee ni escribe en él.

El programa da un error pues se usa la función


D
nombrefichero antes de abrir el fichero.

4 Indicar cuál de las afirmaciones siguientes es correcta


A La función open() permite determinar si un fichero está abierto.
B Es posible abrir un fichero de texto sólo para leer, pero en este caso si el fichero no existe se producirá un error.
C Para leer un determinado dato en un fichero de texto es necesario especificar la posición del dato.
D La instrucción eof(idfichero) devuelve el valor TRUE si existe un fichero de texto con identificador de fichero idfichero.

Pregunta 1 2 3 4 5 6 7 8 9 10
Respuesta C A C B B C A D 2.5 => 0 3.0 => 7

1
5 Sabiendo que el método isdigit() devuelve un valor de tipo Boolean que indica si el correspondiente texto solo tiene dígitos,
¿Qué afirmación es correcta respecto al código de la derecha?
A El bucle acaba cuando el usuario introduce una letra valor=''
while not valor.isdigit():
B El bucle acaba cuando el usuario introduce un entero positivo valor=input('introduce valor ')
C El bucle no acaba nunca pues la variable valor está definida como
string y la condición de finalización del bucle es que sea numérica
D El programa dará un error si el usuario introduce un número ya que
la variable valor está definida como string

6 ¿qué mensaje visualiza por pantalla el código que se muestra a la derecha?


A 2 s=0
limite=3
B 0 for i in range(1,limite+1,2):
C 6 for j in range(i,limite-i,limite-i-1):
if j<3:
D No visualiza ningún mensaje ya que el programa dará un error s = s + 1
por utilizar la variable j dentro de su propio bucle for else:
s = s + i
print(s)

7 Respecto al código que se muestra a la derecha, indicar cuál de las afirmaciones siguientes es incorrecta
A existe es una función que devuelve un def dardealta(nombre, dni):
String if not existe(dni):
fichero=abrefichero(nombre,'a')
B abrefichero es un procedimiento que fichero.write(nombre,identificacion,dni)
recibe dos parámetros fichero.close()
C A la función abrefichero se le pasa el return(True)
modo de apertura de ficheros de texto else:
return(False)
que permite añadir datos al final del
fichero
D La variable fichero representa un fichero
de texto.

8 ¿Cuántos elementos tiene la matriz definida a continuación? m=[]


A 8 for i in range(5):
m.append([0]*2)
B 12
C 15
D 10

9 En el programa de la siguiente página, indica que muestra primer MsgBox

10 En el programa de la siguiente página, indica que muestra segundo MsgBox

2
maxfila=3
maxcolumna=2
d=0

def funcion_A(data, d):


i=0
s=0
if d>=1 and d<=maxfila-1:
for i in range(1,maxfila+1):
s = s + data[i][d]
return(s/maxcolumna)
else:
return(-1)

def procedimiento_A(data, d):


i=0
j=0

for i in range(1,maxfila+1):
for j in range(1,maxcolumna+1):
if i>j:
data[i][j] = j % i
d[0]=(i+1)+(j+1)

M=[]
for i in range(maxfila+1):
row=[]
for j in range(maxcolumna+1):
row.append(0)
M.append(row)

for i in range(maxfila+1):
for j in range(maxcolumna+1):
M[j][j] = i+j

print(str(funcion_A(M,maxfila-1)) + ' => ' + str(d))


j=[0]
procedimiento_A(M, j)
print(str(funcion_A(M, maxfila % maxcolumna)) + ' => ' + str(j[0]))

3
Desarrollo de una aplicación informática (tienen que realizarlo los alumnos que NO van por evaluación continua)
Se pretende tratar los datos de tiempos en diferentes carreras de un conjunto de atletas. Para ello se seguirán los siguientes pasos:
1. Preguntar al usuario por el total de atletas a controlar y el total de carreras en las que van a participar.
2. Crear una matriz que permita guardar los datos de tiempos de cada atleta en cada carrera. Tanto los atletas como las carreras se
identifican por un número entero creciente empezando por 0.
3. Solicitar al usuario los datos de tiempos de cada atleta en cada carrera y guardarlos en la matriz.
4. Crear una función que reciba la matriz de los tiempos y un número de atleta y devuelva la media de sus tiempos.
5. Crear un procedimiento que reciba la matriz de los tiempos y devuelva cuál fue el atleta más lento, el tiempo mayor de todos, el
atleta más rápido y el tiempo menor de todos. No mostrará nada por pantalla y no pedirá información al usuario.
6. Mostrar en el Main las informaciones devueltas por la función (apartado 4) (solicitar nº de atleta al usuario) y el procedimiento
(apartado 5).
7. Crear un vector de estructuras y guardar en cada una de ellas, el número de atleta, la media de sus tiempos y el mínimo de sus
tiempos.
8. Crear procedimiento que, pasándole el vector anterior y el nombre del fichero, guarde la información en un fichero

apartado (puntos) 1 (0,5) 2 (0,5) 3 (1) 4 (1,5) 5 (2,5) 6 (1) 7 (2) 8 (1)
puntos
from random import uniform

def tiempoMedio(tiempos, atleta):


'''
tiempos es una matriz 2D con 1 fila de tiempos por atleta
atleta es número de atleta, empezando en 0
'''
return(round(sum(tiempos[atleta])/len(tiempos[atleta]),3))

def estadisticasTiempo(tiempos):
'''
tiempos es una matriz 2D con 1 fila de tiempos por atleta
devuelve una tupla indicando:
el atleta con el tiempo total mas alto (atletaMasLento)
el tiempo total mas alto en la matriz(tiempoMasAlto)
el atleta con el tiempo total mas bajo (atletaMasRapido)
el tiempo total mas bajo en la matriz (tiempoMasBajo)
'''
atletaMasLento=0
tiempoMasAlto=0
atletaMasRapido=0
tiempoMasBajo=0
for n in range(len(tiempos)):
tiempoTotal=sum(tiempos[n]) # tiempo total para este atleta
if n==0 or tiempoTotal>tiempoMasAlto:
tiempoMasAlto = tiempoTotal
atletaMasLento = n
if n==0 or tiempoTotal<tiempoMasBajo:
tiempoMasBajo = tiempoTotal
atletaMasRapido = n

return((atletaMasLento,round(tiempoMasAlto,3),atletaMasRapido,round(tiempoMasBajo,3)))

def estadisticasAtleta(tiempos, atleta):


'''
tiempos es una matriz 2D con 1 fila de tiempos por atleta
atleta es número de atleta, empezando en 0
devuelve una tupla indicando:
número de atleta
tiempo medio
tempo máximo
'''
media = round(sum(tiempos[atleta])/len(tiempos[atleta]),3)
maximum = round(max(tiempos[atleta]),3)
return((atleta,media,maximum))

def guardaEstadisticas(estad, nombreFichero):


'''
estad es usa lista de tuplas (número atleta, tiempo medio, tiempo máximo)
nombreFichero es el nombre del fichero donde guardar la información en formato CSV
'''
plantilla='{};{};{}\n'
file = open(nombreFichero,'w')
for e in estad:
file.write(plantilla.format(e[0],e[1],e[2]))
file.close()

num=int(input('Numero de atletas: '))


4
pruebas=int(input('Numero de pruebas: '))

tiempos=[]
for n in range(num):
row = [0]*pruebas
tiempos.append(row)

for n in range(num):
for t in range(pruebas):
tiempos[n][t] = round(uniform(50,100),3) # precision ms

num=int(input('Dame un número de atleta de 0 a '+str(num-1)+': '))


print('El tiempo medio para este atleta es:',tiempoMedio(tiempos, num))
estad=estadisticasTiempo(tiempos)
print('El atleta más lento es {} con un tiempo de {}'.format(estad [0], estad [1]))
print('El atleta más rápido es {} con un tiempo de {}'.format(estad [2], estad [3]))

atletaEstad=[]
for n in range(len(tiempos)):
atletaEstad.append(estadisticasAtleta(tiempos,n))

guardaEstadisticas(atletaEstad,'estadisticas.csv')

También podría gustarte