Documente Academic
Documente Profesional
Documente Cultură
!!!
Esta prueba sólo la pueden realizar los
estudiantes que han aprobado la Evaluación
Continua
Página 1 de 15
Prueba de Síntesis 2017/18-1
Asignatura Código Fecha Hora inicio
Prácticas de programación 75.555 13/01/2018 13:30
Enunciados
Página 2 de 15
Prueba de Síntesis 2017/18-1
Asignatura Código Fecha Hora inicio
Prácticas de programación 75.555 13/01/2018 13:30
Pregunta 1 [30%]
const
NUM_ROOMS : integer := 200;
end const
type
{ datos de la dosis de un medicamento }
tDose = record
idMed : integer; {el código del medicamento es un entero positivo
diferente de cero}
units : integer;
timesPerDay : integer;
end record
Observa que para almacenar las dosis de un tratamiento, se ha introducido una lista de la
que se desconoce la implementación interna. Esto quiere decir que sólo puedes utilizar las
operaciones del TAD lista para trabajar con ella.
Página 3 de 15
Prueba de Síntesis 2017/18-1
Asignatura Código Fecha Hora inicio
Prácticas de programación 75.555 13/01/2018 13:30
Dada la función:
Se pide:
Solución:
a)
Pre: { idMed > 0 }
b)
Nivel 1:
count := 0;
for j:=1 to h.numAdm do
if is_patient_taking_medicament (h.admissions[j], idMed) then
count := count + 1;
end if
end for
return count;
end function
Nivel 2:
found := FALSE;
Página 4 de 15
Prueba de Síntesis 2017/18-1
Asignatura Código Fecha Hora inicio
Prácticas de programación 75.555 13/01/2018 13:30
first(adm.treatment);
while not end(adm.treatment) and not found do
d := get(adm.treatment);
if d.idMed = idMed then
found := TRUE;
else
next(adm.treatment);
end if
end while
return found;
end function
Nivel 3
Las operaciones de la lista: first, end, get y next.
Página 5 de 15
Prueba de Síntesis 2017/18-1
Asignatura Código Fecha Hora inicio
Prácticas de programación 75.555 13/01/2018 13:30
Pregunta 2 [70%]
Dada la siguiente implementación de un método, donde el parámetro x es un número
entero que cumple x > 0
a) [10%] Explica que hace este método. Asumiendo que la variable res ya está definida,
muestra paso a paso el funcionamiento de la siguiente llamada:
Página 6 de 15
Prueba de Síntesis 2017/18-1
Asignatura Código Fecha Hora inicio
Prácticas de programación 75.555 13/01/2018 13:30
Para analizar la complejidad computacional de esta función, hay que observar que
a cada llamada recursiva el valor del parámetro x se reduce a la mitad.
T(x) = k1 , si x = 1
T(x) = k2 + T(x/2) , si x > 1
T(x) = k2 + T(x/2) =
= k2 + (k2 + T((x/2)/2) = 2·k2 + T(x/4) =
= 2·k2 + (k2 + T((x/2)/4) = 3·k2 + T(x/8) =
= ... =
= i·k2 + T(x/2i)
x/2i = 1
x = 2i
log(x) = i
Página 7 de 15
Prueba de Síntesis 2017/18-1
Asignatura Código Fecha Hora inicio
Prácticas de programación 75.555 13/01/2018 13:30
Página 8 de 15
Prueba de Síntesis 2017/18-1
Asignatura Código Fecha Hora inicio
Prácticas de programación 75.555 13/01/2018 13:30
Página 9 de 15
Prueba de Síntesis 2017/18-1
Asignatura Código Fecha Hora inicio
Prácticas de programación 75.555 13/01/2018 13:30
Página 10 de 15
Prueba de Síntesis 2017/18-1
Asignatura Código Fecha Hora inicio
Prácticas de programación 75.555 13/01/2018 13:30
Página 11 de 15
Prueba de Síntesis 2017/18-1
Asignatura Código Fecha Hora inicio
Prácticas de programación 75.555 13/01/2018 13:30
Página 12 de 15
Prueba de Síntesis 2017/18-1
Asignatura Código Fecha Hora inicio
Prácticas de programación 75.555 13/01/2018 13:30
Página 13 de 15
Prueba de Síntesis 2017/18-1
Asignatura Código Fecha Hora inicio
Prácticas de programación 75.555 13/01/2018 13:30
Página 14 de 15
Prueba de Síntesis 2017/18-1
Asignatura Código Fecha Hora inicio
Prácticas de programación 75.555 13/01/2018 13:30
Página 15 de 15