Está en la página 1de 4

Prueba de Evaluación Marzo Final 23/24

Programación de Servicios y Procesos

(11 Mar 2024)

Tiempo: 2h

Primer Trimestre

Ejercicio 1

Tenemos un baño público en el que cabe un número ilimitado de personas.


Cada cierto tiempo un empleado realiza la limpieza del baño, actuando de
la siguiente forma:

pone un letrero para impedir que entren personas al baño, se espera a que
quienes están dentro acaben y salgan, y una vez que el recinto está vacío
realiza la limpieza.

Cuando termina de limpiar, retira el letrero y se marcha, quedando el baño


libre para que entren nuevos usuarios.

Se quiere implementar un código que simule este baño, con VARIOS hilos que
implementan a las personas que interactúan con él y UN hilo limpiador.

void usar_baño () { ... esperar a que el baño esté libre ... y llegados a
este punto... ... hacer lo habitual en un baño ... y salir del baño }

void limpiar_baño() { ... poner letrero «baño cerrado» ... esperar a que
se quede vacío ...limpiar el baño ... quitar letrero }

Tendremos que añadir al código las acciones de sincronización necesarias


para cumplir con las especificaciones descritas arriba
Ejercicio 2
Se desea crear un programa que procese ficheros aprovechando el
paralelismo de la máquina. Se tienen cinco ficheros con los siguientes
nombres:
* informatica.txt
* gerencia.txt
* contabilidad.txt
* comercio.txt
* rrhh.txt
En cada fichero hay una lista de cantidades enteras que representa
las contabilidades de distintos departamentos. Hay una cantidad en
cada línea.
Se desea que el programa creado sume la cantidad total que suman
todas las cantidades ENTRE DOS determinados números introducidos
como parámetros en los cinco ficheros haciendo uso del paralelismo.

Es imprescindible poner como comentario en la cabecera de los


ficheros cuales son el o los parámetros a introducir para poder ser
ejecutados.

SEGUNDO TRIMESTRE

Ejercicio 1

Prepare un servicio UDP que permita la introducción en el cliente de un


NÚMERO ENTERO DE MAS DE 3 CIFRAS que se enviará al servidor para realizar
la comprobación de si dicho número es CAPICUA o NO.
El servidor enviará la respuesta con formato (Ej: “El número 1221 es
capicúa” || “El número 1122 no es capicúa”).

Se le pedirá al usuario la introducción de otro NÚMERO, hasta que decida


cortar la conexión mediante la introducción de un asterisco (*)
Un número es capicúa si se puede leer igual de derecha a izquierda que de
izquierda a derecha. Ejemplos de números capicúas: 121, 3003, 1234321,
333, 445544, etc.

Filtre cualquier posibilidad de enviar erróneamente caracteres

Ejercicio 2 (completo no)

Prepare un servicio TCP de Objetos que acepte un objeto casa enviada desde
un cliente y prepare la devolución de una valoración sobre el valor del
alquiler de dicha casa desde un servidor.
Las variables del objeto casa serán:
• número de habitaciones (int)
• número de baños (int)
• si tiene trastero (boolean)
La valoración de dichas características será 75€ por habitación, 50€ por
numero de baños y 100€ si tiene trastero, el valor será devuelto con el
formato:
(Ej: “El alquiler de la casa con 2 habitaciones, 1 baño y sin trastero
vale: 200€” || “El alquiler de la casa con 7 habitaciones, 4 baño y con
trastero vale: 825€” )

Ejercicio 3 (completo no)

Crear un servidor multihilo para implementar un chat SIN INTERFAZ


GRAFICA, donde los mensajes se mostrarán directamente en consola.

El servidor proporcionara un hilo para atender a cada uno de los


clientes que se identificaran mediante un nombre de usuario.

Ante la imposibilidad de probar dos clientes contra su propio


servidor en modo local, el programa cliente TAMBIEN proporcionara un
hilo para chatear con el servidor, de modo que podrá correr cuantas
veces desee el programa cliente.
Necesitará por lo tanto cuatro clases: Servidor, Cliente,
HiloServidor e HiloCliente.

Ejercicio 4

Prepare un Servidor TCP que acepte UNA FRASE (de como mínimo tres
palabras) enviada desde un cliente y que compruebe si dicha frase es
palíndroma. Ejemplo: Yo hago yoga hoy

El cliente mostrará el resultado de dicha comprobación y permitirá


la introducción de una nueva cadena hasta que el usuario pulse el
carácter asterisco (*).

También podría gustarte