0% encontró este documento útil (0 votos)
10 vistas2 páginas

PROG GISD 14nov22 Enunciado

El documento describe un ejercicio académico que involucra la modelación de un climatizador y un termostato inteligente en programación. Se especifican los requisitos para definir clases y métodos, así como la implementación de un enumerado para los modos del climatizador. Además, se detallan las funcionalidades que deben implementarse en cada clase, incluyendo la gestión de temperaturas y el registro histórico de datos.

Cargado por

jredrejo
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)
10 vistas2 páginas

PROG GISD 14nov22 Enunciado

El documento describe un ejercicio académico que involucra la modelación de un climatizador y un termostato inteligente en programación. Se especifican los requisitos para definir clases y métodos, así como la implementación de un enumerado para los modos del climatizador. Además, se detallan las funcionalidades que deben implementarse en cada clase, incluyendo la gestión de temperaturas y el registro histórico de datos.

Cargado por

jredrejo
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

ETSIT-UPM. PROG-GISD. 2022-2023.

Fecha: 14 de noviembre de 2022


Calificación de la prueba: de 0 a 10 puntos
Peso en la nota global de la asignatura: 20%

Preámbulo:

Se quiere modelar el comportamiento de una máquina de aire acondicionado/bomba de calor, dispositivo al que
llamaremos climatizador, para integrar dicho sistema dentro de un termostato inteligente.

En los siguientes ejercicios, se solicitará escribir ciertas partes de una versión simplificada de las clases
involucradas en este escenario.

Todas las variables, parámetros y resultado de las funciones deberán ser correctamente anotadas (typing).

Ejercicio 1 (0.5 puntos):

Defina un enumerado llamado ModoClimatizador, que estará formado por 3 elementos: FAN, COOL y HEAT.

Ejercicio 2 (2.5 puntos):

Defina una clase llamada Climatizador que tendrá un constructor y un método llamado comando para recibir
órdenes sobre su funcionamiento.

1. (0.5 puntos) El constructor de la clase Climatizador recibirá 3 parámetros opcionales:


a. encendido, un booleano con valor por defecto False, para representar el estado del dispositivo. Su
valor deberá guardarse en un atributo homónimo.
b. temperatura, un número entero con valor por defecto 20, para representar la temperatura a la que
esté configurado el dispositivo. Su valor deberá guardarse en un atributo homónimo.
c. modo, un elemento del enumerado ModoClimatizador con valor por defecto FAN, para representar
el modo de operación del dispositivo. Su valor deberá guardarse en un atributo homónimo.
Nota: Si no ha desarrollado el enumerado en el Ejercicio 1, puede considerar que modo es un string, pero la
calificación máxima de este apartado será reducida a 0.25 puntos.

2. (1 punto) El método comando recibirá 2 parámetros opcionales:


a. modo, un elemento del enumerado ModoClimatizador con valor por defecto None. Si el parámetro
no es None, debe actualizar el valor del atributo. En caso contrario, no debe hacer nada.
b. temperatura, un número entero con valor por defecto None. Si el parámetro no es None, debe
actualizar el valor del atributo. En caso contrario, no debe hacer nada.
Nota: Si no ha desarrollado el enumerado en el Ejercicio 1, puede considerar que modo es un string, pero la
calificación máxima de este apartado será reducida a 0.75 puntos.

3. (1 punto) Escriba el código necesario para crear al menos un objeto Climatizador y llamar al método
comando con varias pruebas (al menos 3 pruebas diferentes).

Ejercicio 3 (7 puntos):

Defina una clase llamada Termostato que tendrá un constructor, un método actualiza, un método
fecha_temp_max y un método media_historica.

1. (1 punto) El constructor de la clase Termostato recibirá 3 parámetros, uno obligatorio y 2 opcionales:


a. climatizador, un objeto de la clase Climatizador, parámetro obligatorio, que será el dispositivo
controlado por el termostato. Su valor deberá guardarse en un atributo homónimo.
b. temp_min, un número real con valor por defecto 16.0, que será la temperatura mínima que se
permite en el termostato. Su valor deberá guardarse en un atributo homónimo.
c. temp_max, un número real con valor por defecto 30.0, que será la temperatura mínima que se
permite en el termostato. Su valor deberá guardarse en un atributo homónimo.
Además, el constructor deberá inicializar un atributo llamado historico que será un diccionario, que tendrá
como claves y como valores números reales. El histórico tomará un valor de diccionario vacío.
2. (1.5 puntos) El método actualiza recibirá un parámetro obligatorio llamado temp_actual que será un
número real que representa la temperatura registrada por el termómetro del termostato.
a. Este método debe registrar la temperatura en el histórico (diccionario). Para ello, usará la sentencia
time.time() que devuelve un número real que representa el instante de tiempo en el que se llama la
función. Dicho valor, se usará como clave en el histórico y el valor del parámetro temp_actual como
valor asociado a dicha clave. Así se registrará un instante de tiempo y la temperatura medida en
dicho instante.
b. Además, este método tendrá que modificar el estado del climatizador dependiendo de la
temperatura mínima y máxima.
i. Si la temperatura actual es menor que la mínima permitida, deberá poner el climatizador en
modo HEAT con una temperatura 2 grados por encima de la mínima y encender el
dispositivo.
ii. Si la temperatura actual es mayor que la máxima permitida, deberá poner el climatizador
en modo COOL con una temperatura 2 grados por debajo de la máxima y encender el
dispositivo.
iii. Por último, si la temperatura está en el rango permitido, deberá apagar el climatizador
(para minimizar el consumo de energía).

3. (1.5 puntos) El método fecha_max_temp devuelve un número real que representa la fecha en la que se
registró la máxima temperatura en el histórico del termostato (es decir, la clave del diccionario para el valor
de temperatura máximo).
a. Si hay varios instantes de tiempo con la misma temperatura (la máxima), puede devolver cualquier
de dichos instantes.
b. Si no hay registros en el histórico, simplemente devuelve None.

4. (2 puntos) El método media_historica devuelve la temperatura media de los registros en una ventana de
tiempo. El método recibe dos parámetros opcionales, inicio y fin, ambos números reales con valor por
defecto None.
a. Si no hay registros en el histórico, debe devolver None.
b. Si ninguno de los dos parámetros es None, debe calcular la media de las temperaturas registradas
únicamente entre esos dos instantes de tiempo.
c. Si cualquier de los dos parámetros es None, debe calcular la media de todos los registros
existentes.

5. (1 puntos) Escriba el código necesario para crear al menos un objeto Termostato y llamar a sus tres
métodos con varias pruebas. Puede considerar que las pruebas del Ejercicio 2 ya se han ejecutado (para
así disponer de un objeto Climatizador ya creado.

También podría gustarte