Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Examen fundamentos programacion, Exámenes de Programación Informática

Examen con soluciones de f. programacion

Tipo: Exámenes

2022/2023

Subido el 03/02/2023

Kawaii_bd
Kawaii_bd 🇪🇸

5

(1)

5 documentos

1 / 8

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Fundamentos de la programación, Curso 2022-23
Grado en Ingeniería Informática
PEC1 - Grupo B Tarde - Teoría
Nombre:
Ejercicio 1 [0,75punto] ¿Qué resultado se obtiene al evaluar las siguientes expresiones en
Python? Escriba el resultado a la derecha o indique si se produce algún error.
45 % 10 + 45.0 // 10 + 1 10.0
f'{"123" * int("2")}-22' 123123-22
False != True or a==2 #a no inicializado True
Ejercicio 2 [1,5 puntos] Escriba en el recuadro la salida que produce el programa:
def procedimiento(m, n):
""" Documentación: Se ha perdido """
for a in sec:
r = n % 10
for k in range(r, 0, -1):
print(m, end='')
print()
n = n // 10
return 'hola'
sec=''
procedimiento('**', 1234321)
****
********
********
Ejercicio 3 [1punto]: Escriba una instrucción que cambie el 4º carácter de una cadena
de caracteres cad por una ‘z’, con len(cad)>=4 sea cual sea su contenido. Ej:
pactospaczos.
>>> cad='pactos'
>>> cad=cad[0:4-1]+'z'+cad[4:] esta es la instrucción pedida
>>> cad
'paczos'
Errores frecuentes y comentarios
Se pretendía valorar el conocimiento del operador segmentador. Muchos alumnos
no han experimentado que las cadenas son inmutables. No se pueden modificar
sus componentes de forma individual. Hay que modificar el elemento completo, es
decir: cad=…… y no cad[3]=….
Unos pocos dicen que como es inmutable No se puede hacer lo que se ha
solicitado. Si no se pudiera modificar, cad no sería una variable.
Demasiados proponen soluciones con varias instrucciones. Cuando el resultado
solicita solo 1.
pf3
pf4
pf5
pf8

Vista previa parcial del texto

¡Descarga Examen fundamentos programacion y más Exámenes en PDF de Programación Informática solo en Docsity!

Grado en Ingeniería Informática PEC1 - Grupo B Tarde - Teoría Nombre: Ejercicio 1 [0,75punto] ¿Qué resultado se obtiene al evaluar las siguientes expresiones en Python? Escriba el resultado a la derecha o indique si se produce algún error.  45 % 10 + 45.0 // 10 + 1  10.  f'{"123" * int("2")}-22' 123123-  False != True or a==2 #a no inicializado True Ejercicio 2 [1,5 puntos] Escriba en el recuadro la salida que produce el programa: def procedimiento(m, n): """ Documentación: Se ha perdido """ for a in sec: r = n % 10 for k in range(r, 0, -1): print(m, end='') print() n = n // 10 return 'hola' sec='' procedimiento('**', 1234321)

Ejercicio 3 [1punto]:** Escriba una instrucción que cambie el 4º carácter de una cadena de caracteres cad por una ‘z’, con len(cad)>=4 sea cual sea su contenido. Ej: pactospaczos. >>> cad='pactos' >>> cad=cad[0:4-1]+'z'+cad[4:] esta es la instrucción pedida >>> cad 'paczos' Errores frecuentes y comentarios  Se pretendía valorar el conocimiento del operador segmentador. Muchos alumnos no han experimentado que las cadenas son inmutables. No se pueden modificar sus componentes de forma individual. Hay que modificar el elemento completo, es decir: cad=…… y no cad[3]=….  Unos pocos dicen que como es inmutable No se puede hacer lo que se ha solicitado. Si no se pudiera modificar, cad no sería una variable.  Demasiados proponen soluciones con varias instrucciones. Cuando el resultado solicita solo 1.

Grado en Ingeniería Informática PEC1 - Grupo B Tarde - Teoría Nombre: Ejercicio 4 [1,25 puntos] Complete el siguiente código como una función que determina si la cadena completa podría ser interpretada como un entero: def es_entero(cadena): """str OBJ:¿es entero cadena? PRE: """ try: except: Errores frecuentes y comentarios  Poner como precondición que la cadena debe ser un entero, implica no haber entendido en el enunciado ¿para qué vamos a validarlo si ya sabemos que lo cumple?  Queriendo expresar lo anterior, algún alumno ha escrito cosas muy raras, por ejemplo “cad es int”, cuando en la primera línea la habéis declarado como str. O “int(cadena)”, lo cual no es una afirmación. Incluso, lo habéis puesto en cuerpo ejecutable, pero es una expresión NO una instrucción  El enunciado pide expresamente que sea una función. Hacer un procedimiento no es lo pedido.  Las funciones tienen un y solo un return. Poner 2 no sería programación estructurada. Estructurada implica que cada porción de código tiene un único punto de entrada, y 1 de salida. Todo el código va de arriba abajo.  Las instrucciones dentro del try se han de ejecutar dos veces (el intento y el real), NO deben introducirse instrucciones que estamos seguros que NO VAN A def es_entero(cadena): """str-->bool OBJ:¿es entero cadena? PRE:nada """ try: n=int(cadena) except:lo_es=False else: lo_es=True return lo_es #Probadores print(es_entero('hola 33'), ‘No puede’) print(es_entero('1234'), ‘SI puede’)

Grado en Ingeniería Informática PEC1 - Grupo B Tarde - Teoría Nombre: mismo, excepto en cargar a la pila las constantes  algo menor eficiencia V2, pero es poco trascendente. EN resumen: Usaría V2 solo si ninguna otra pieza de código requiere la constante. En el resto de situaciones, diseñaría una consulta global (V1). Existe una tercera versión en que pasamos la constante como argumento a la función. Es teóricamente más correcta que V1, pero más farragosa de usar y algo más consumidora de memoria y tiempo, especialmente si la constante es una tupla muy voluminosa, porque hay que copiar los argumentos de entrada en la pila. Ejercicio 6 [2 puntos] Dado el siguiente código: def gestion0 (jara,girasol): print('en gestion0', jara) c=girasol+ girasol=2 #'''0''' print('en gestion0', girasol,jara,c, sep='guapo') def gestion2 (): print(jara,end='')

jara=2 '''1'''

print('en gestion2', girasol,jara) #Programa principal jara= girasol= gestion0(girasol,jara) print('en pp', girasol,jara) gestion2() print('en pp', girasol,jara) A. Indique la salida, explicando el motivo en cada uno de los print. B. Indique que variables hay en memoria cuando se ejecuta la línea marcada con '''0'''. Especifique el ámbito, visibilidad y valor de cada una de ellas. Ámbito pp: jara=1, girasol =5 NO VISIBLES en la función por existir otras del mismo nombre en la función. Ámbito gestion0: jara=5, girasol=1, c= C. Indique el comportamiento si quita la # de la línea '''1'''. Justifique la respuesta. en gestion0 5 #argumentos cambiados de orden en gestion0_guapo_2_guapo_5_guapo_3 #separados por el sep en pp 5 1 #las variables del subp murieron con el 1en gestion2 5 1 #no definidas var locales, usa las globales en pp 5 1 #las del pp siguen inalteradas

Grado en Ingeniería Informática PEC1 - Grupo B Tarde - Teoría Nombre: Aborta porque jara global ha sido consultada y ya no puede crear una variable local con el mismo nombre. Errores frecuentes y comentarios Para los alumnos que han hecho mal este ejercicio recomiendo hacer el ejercicio, solicitado en la unidad 4, que consiste en ejecutar “centrar rótulo” con Python tutor línea a línea. En el libro hay un apéndice “como funciona un programa con subprogramas acompañando al estudiante en este paseo por el programa, ejecutándolo paso a paso. Solo 1 alumno ha detectado el aborto de 6C. Repasad el concepto de modificación global.

Ejercicio 7 [2 puntos] Un alumno subió al foro el siguiente código para imprimir

un número en letra, apoyándose en 3 constantes que contienen los nombres de las centenas, de las decenas y de los números menores de 30 que son irregulares. 1 def muestra_cardinal (n): (^2) """int -> nada 3 OBJ: escribe el cardinal de n 4 PRE: 1<=número<999 """ 5 palabra = "" 6 if ((n>=100) and (n%100 != 0)): 7 palabra = palabra + CENTENAS [n//100] + " " 8 n = n% 9 if((30<=n<100) and (n%10 != 0)): 10 palabra = palabra + DECENAS[n//10] + UNIDADES[n%10] 11 else: 12 palabra = palabra + DECENAS[(n//10)-1] 13 elif ((n>=100) and (n%100 == 0)): 14 palabra= palabra + CENTENAS[(n//100)-1] 15 elif ((30<=n<100) and (n%10 != 0)): 16 palabra = palabra + DECENAS[n//10] + UNIDADES[n%10] 17 elif ((30<=n<100) and (n%10 == 0)): 16 palabra = palabra + dec[(n//10)-1] 19 elif (n<30): 20 palabra = UNIDADES[n] a) [0,5] Construya el probador para 814 e indica la salida print(muestra_cardinal(814),'concateno irregular814') Al final palabra vale: Ochocientos Diez Es un error de lógica que afecta a la eficacia. Pero, no hay salida porque falta una línea con print b) [1,5] Indique, justificadamente, para cada error presente su tipo y el criterio de calidad al que afecta. Línea (valor) error Tipo error Criterio calidad 4 (0,1) n mejor que numero Estilo mantenibilidad

Grado en Ingeniería Informática PEC1 - Grupo B Tarde - Teoría Nombre:

  1. El siguiente gráfico muestra el porcentaje del importe de la energía eléctrica que es consecuencia del propio suministro (verde), del mantenimiento de la red (amarillo)y e impuestos (rojo). A efectos anotar la gráfica se ha redondeado a dos dígitos y por ello algunas veces no suma exactamente cien. La gráfica se ha generado a partir de una tabla que contiene los importes totales de cada país consumidos en cada uno de los tres conceptos (suministro, del mantenimiento de la red y e impuestos) expresados en millones de euros. Los datos calculados NO SE ALMACENAN. El enunciado no solicita que propongas el código adecuado. Pero si te pica la curiosidad, nuestra propuesta para una función (el enunciado pide expresamente procedimiento) sería, como ves, mucho mas simple con solo 4 alternativas y solo 8 operaciones booleanas: #Seccion constantes: para paso a texto de los números naturales IRREGs=('uno','dos','tres','cuatro','cinco','seis','siete','ocho','nueve', 'diez','once','doce','trece','catorce','quince','dieciséis','diecisiete', 'dieciocho','diecinueve','veinte','veintiuno','veintidós','veintitrés', 'veinticuatro','veinticinco','veintiseis','veintisiete','veintiocho', 'veintinueve') DECs=('diez','veinte','treinta','cuarenta','cincuenta','sesenta','setenta', 'ochenta','noventa') CENs=('ciento','doscientos','trescientos','cuatrocientos','quinientos', 'seiscientos','setencientos','ochocientos','novecientos') def enTextoNum(n): """int-->str OBJ: texto cardinal de n PRE: 1<=n<=999""" c,n=divmod(n, 100 ) t='' if c>= 1 : if c== 1 and n== 0 : t+='cien' else: t+= CENs[c- 1 ] if n> 0 : t+=' ' #print('en centenas',t,n) if 1 <=n<= 29 : t+=IRREGs[n- 1 ] else: d,n=divmod(n, 10 ) t+=DECs[d- 1 ] if n> 0 :t+=' y '+IRREGs[n- 1 ] return t #PROBADOR ''' print(enTextoNum(1),'extremo inf irregulares') print(enTextoNum(29),'extremo sup irregulares') print(enTextoNum(30),'primero regular 30', sep='') print(enTextoNum(31),'primero concatenado31', sep='') print(enTextoNum(100),'primero de centenas100', sep='') print(enTextoNum(814),'concateno irregular814', sep='') print(enTextoNum(841),'concateno regular841', sep='') print(enTextoNum(999),'ultimo 999', sep='')

Grado en Ingeniería Informática PEC1 - Grupo B Tarde - Teoría Nombre: ¡APAGA LA LUZ Desglose del coste de la energía y el suministro, la red y las tasas en algunos países europeos Fuente: dígittoshttps://elordenmundial.com/mapas-y-graficos/precio-electricidad-hogares-union-europea/ (0,75 puntos) Diseñe las estructuras de datos necesarias para almacenar los datos primarios (los importes totales de cada país consumidos en cada uno de los tres conceptos: suministro, del mantenimiento de la red y e impuestos, expresados en millones de euros). A partir de los datos contenidos en la estructura que diseñe se podrá generar la gráfica mostrada (calculando los porcentajes). Los países participantes en la estadística no varían, pero los consumos se van reflejando en la tabla conforme se producen. Razone su propuesta. SOLUCIÓN NOM_PAISES=('P1','P2','P3','P4') #tPais = lista de 3 float>=0 correspondientes a suministro, red y tasa de un pais #tEnergia = tuple de tPais paralela a NOM_Paises caso_prueba=([12.2,12.2,12.2],[1.0,2.0,0.3],[19.53,4.34,3.24], [8.0,1.0,1.0]) Los países participantes no cambian, por tanto, diseñamos dos tuplas. Los importes cambian, por lo que las secuencias interiores son listas. Errores frecuentes y comentarios Con frecuencia, falta de lectura del enunciado que indica, y en mayúsculas que los porcentajes NO se almacenan.