Fundamentos de informática
Escuela de Ingenierı́as Industriales
2a convocatoria, 2 de julio de 2024
Normas a atender durante el examen:
• Se valorará el correcto uso de los conceptos tratados en la asignatura, especialmente el diseño de subprogramas con
interfaces de e/s correctas.
• No está permitido el uso de elementos que no hayan sido tratados en la asignatura, tanto del lenguaje como bibliotecas.
• Solo puede usarse el entorno de desarrollo. El navegador solo se puede usar para los accesos imprescindibles al campus
virtual al comenzar y terminar el examen, o en los momentos que explı́citamente lo indique el profesor. Cualquier otro
acceso a otras aplicaciones, páginas web, o correo electrónico, está prohibido.
• Tampoco está permitido el uso de ningún dispositivo externo hardware ni teléfonos móviles.
Ejercicio 1 (3.5 puntos)
En este ejercicio se exige que el programa no tenga errores de compilación, y se valorará que el programa
se ejecute correctamente.
Implementa un subprograma, encontrarPatron, que reciba como entrada 2 listas de un máximo de 20
números enteros y devuelva el número de veces que la secuencia de números de la segunda lista aparece en
la primera (sin solapamientos). Vemos el resultado que debe producirse en varios ejemplos.
Lista 1: 4 1 2 4 1 1 2 3 1 2 3 5 3 1
→ 2 veces
Lista 2: 1 2 3
Lista 1: 4 1 2 4 1 1 2 3 1 2 3 5 3 1
→ 0 veces
Lista 2: 4 1 2 1
Lista 1: 1 2 1 2 1 2 1 2 1 2
→ 2 veces
Lista 2: 1 2 1
Prueba el subprograma con un programa principal que inicialice las listas de los ejemplos y muestre en
pantalla los correspondientes resultados. No se pide leer por teclado ninguna lista durante la ejecución.
Ejercicio 2 (6.5 puntos)
1. Define un tipo de datos, Teatro, para almacenar la ocupación de una sala de teatro que tiene una
capacidad de 8 filas y 12 asientos por fila. La fila 1 es la que está más cerca del escenario y la fila 8 la
que está más lejos. Sólo hay que almacenar si cada asiento está libre (true) u ocupado (false).
2. Implementa un subprograma, mostrarReservas, que muestre en pantalla el contenido de un Teatro
de forma que los asientos ocupados se vean con asteriscos, y los libres con guiones. A continuación se
muestra un teatro donde, por ejemplo, la fila 1 tiene ocupados los asientos 4, 5, 7, 8; la fila 4 sólo tiene
ocupado el último asiento; y la fila 6 tiene todos sus asientos libres.
Fila 1: |---**-**----|
Fila 2: |*--****----*|
Fila 3: |*****-------|
Fila 4: |-----------*|
Fila 5: |---**-**----|
Fila 6: |------------|
Fila 7: |---*--------|
Fila 8: |--***------*|
3. Realiza otro subprograma, intentarReserva, que reciba un Teatro y el número de asientos consecu-
tivos que se desea reservar en una sola fila. Se deberá atender la reserva intentando encontrar la fila
más cercana al escenario. El subprograma debe devolver un valor lógico que indique si se ha podido
atender la solicitud. Además, si éste es el caso, se actualizará convenientemente los asientos ocupados
del teatro y se devolverá el número de fila donde se ha realizado la reserva. En el ejemplo anterior, si
se desea hacer una reserva de 13 asientos, obviamente no es posible porque sólo hay 12 asientos por
fila, pero si se desea 4 asientos, se hará la reserva en la fila 1 (a partir del asiento 8).
4. Prueba ambos subprogramas con un programa principal que muestre la ocupación inicial del teatro
según los datos suministrados en la plataforma virtual. A continuación se atenderá 3 peticiones de
reserva, pidiendo por teclado el número de asientos consecutivos deseados y, cuando sea posible la
reserva, mostrando en pantalla la nueva ocupación del teatro. Por ejemplo, dada la inicialización
suministrada, si se solicitan reservas para 4, 13 y 8 asientos, el usuario verá en pantalla
Cuantos asientos? 4
Asientos ocupados:
Fila 1: |---**-******|
Fila 2: |*--****----*|
Fila 3: |*****-------|
Fila 4: |-----------*|
Fila 5: |---**-**----|
Fila 6: |------------|
Fila 7: |---*--------|
Fila 8: |--***------*|
Reserva hecha en fila 1
Cuantos asientos? 13
La reserva no es posible
Cuantos asientos? 8
Asientos ocupados:
Fila 1: |---**-******|
Fila 2: |*--****----*|
Fila 3: |*****-------|
Fila 4: |********---*|
Fila 5: |---**-**----|
Fila 6: |------------|
Fila 7: |---*--------|
Fila 8: |--***------*|
Reserva hecha en fila 4