Examen de Fundamentos de Programación UOC 2018 · Prueba de Síntesis. Enero 2018

Examen de Fundamentos de Programación de la UOC (Grado en Ingeniería Informática) 2018, Prueba de Síntesis. Enero 2018: 4 problemas con solución. Gratis.

Temas del examen: Esquemas de recorrido y búsqueda sobre tablas · Tipos estructurados y modularidad: declaraciones, cabeceras y paso de parámetros · Tipos abstractos de datos: pilas y colas

Pregunta 1.a - Definición de tipos · Tipos estructurados y modularidad: declaraciones, cabeceras y paso de parámetros

Con el objetivo de gestionar el censo y control sanitario en una entidad protectora de animales, se requiere modelar la información propia de cada ejemplar albergado.

a. [15%] Escriba en lenguaje algorítmico las definiciones de tipos necesarias para representar a un ejemplar (registro tAnimal), teniendo en cuenta los siguientes datos:

typeID: categoría de la especie, restringida a cuatro opciones: perro, gato, pájaro o reptil. Debe definirse formalmente el enumerado tAnimalType.

chip: identificador numérico entero del microchip (adoptará el valor -1 en caso de no poseerlo).

age: edad del animal expresada en número de meses (entero).

isVaccinated: variable booleana que refleja si cuenta con su pauta de vacunación completa.

idAnimalShelter: código entero del refugio concreto en el que se encuentra asignado.

price: coste económico asociado al animal en euros (número real).

Pregunta 1.b - Especificación de cabeceras · Tipos estructurados y modularidad: declaraciones, cabeceras y paso de parámetros

Con el objetivo de gestionar el censo y control sanitario en una entidad protectora de animales, se requiere modelar la información propia de cada ejemplar albergado.

b. [15%] Escriba exclusivamente la declaración de cabecera (sin desarrollar su cuerpo) en notación algorítmica de los siguientes subprogramas:

•

La acción printAnimal, encargada de recibir un elemento del tipo tAnimal y mostrar sus campos por pantalla.

•

La función isVaccinatedCat, que admita un parámetro de tipo tAnimal y retorne TRUE si el animal resulta ser un gato vacunado, o FALSE en cualquier otra circunstancia.

Pregunta 2 · Esquemas de recorrido y búsqueda sobre tablas

Pregunta 2 (50% de la nota total). Algoritmos de recorrido y conteo sobre vectores

A fin de almacenar y administrar la colección de todos los animales que acoge una protectora determinada, se ha formalizado la estructura siguiente para albergar como máximo a 1000 ejemplares:

const

MAX_ANIMALS: integer = 1000;

end const

type

tAnimalShelter = record

animals: vector[MAX_ANIMALS] of tAnimal;

numAnimals: integer;

end record

end type

Tomando como base esta estructura, resuelva en lenguaje algorítmico los dos apartados siguientes:

a)

[30%] Diseñe e implemente la función animalCatCounting, la cual recibe una estructura de tipo tAnimalShelter y calcula el número total de gatos con vacunas al día. Es imperativo declarar e implementar también la función auxiliar isVaccinatedCat planteada en el ejercicio anterior y realizar su llamada dentro del bucle.

b)

[20%] Desarrolle la función animalCounting, a la cual se le suministran la estructura tAnimalShelter y un tipo específico de animal (parámetro de clase tAnimalType), devolviendo la cantidad de ejemplares registrados que coinciden con dicho tipo.

Pregunta 3 · Tipos abstractos de datos: pilas y colas

Pregunta 3 (20% de la nota total). Traza y manipulación de pilas de libros

Se dispone de una estructura abstracta de tipo pila denominada tStackBook, en la que cada componente representa una obra modelada mediante el tipo tBook. En el estado inicial de una jornada, todos los ejemplares se sitúan en una primera pila (P1), mientras que una segunda y una tercera pila (P2 y P3) se encuentran desprovistas de elementos:

Para interactuar con estas colecciones se cuenta con las primitivas clásicas:

action push(inout s: tStackBook, in b: tBook): introduce un libro en la cima de la pila s.

action pop(inout s: tStackBook): retira el elemento ubicado en la cima de s.

function top(s: tStackBook): tBook: consulta y retorna el elemento situado en la cúspide de s sin extraerlo.

Ejemplo de comportamiento: la ejecución conjunta de las sentencias push(P2, top(P1)); pop(P1); extraería el elemento superior de P1 y lo insertaría en P2, produciendo la configuración:

Indique la disposición y el orden resultante de los libros en las tres pilas (P1, P2 y P3) tras completar secuencialmente el siguiente bloque de órdenes:

push(P3, top(P1));

pop(P1);

push(P2, top(P1));

pop(P1);

push(P3, top(P1));

pop(P1);

push(P2, top(P3));

pop(P3);

push(P3, top(P1));

pop(P1);

Escriba el identificador de cada libro (por ejemplo, BOOK_1) en cada posición de la pila. Si una posición queda vacía, déjela en blanco o escriba un guion (-).

Posición

Pila P1

Pila P2

Pila P3

Cima

Base

También puedes estudiar por temas

Practica un tema con ejercicios de los exámenes de todos los años, mezclados.

Ver los 7 temas