Pregunta 1.a · Prácticas de programación UOC 2023

Tema: Especificación: precondiciones y postcondiciones · Del examen Examen de síntesis. Prácticas de programación (Enero 2023) (2023)

Enunciado

En el marco del software desarrollado para la administración de entidades sin ánimo de lucro (ONG), considérense exclusivamente las siguientes estructuras de datos:

type

tPerson = record

document: string;

name: string;

surname: string;

email: string;

address: string;

city: string;

birthday: tDate;

end record

tStaff = record

elems: pointer to tPerson;

count: integer;

end record

tAvailability = record

person: tPerson;

start: tDate;

end: tDate;

end record

tAvailabilityData = record

elems: pointer to tAvailability;

count: integer;

end record

tONG = record

code: string;

name: string;

projects: tProjectData;

staff: tStaff;

campaigns: tCampaignData;

staffAvailability: tAvailabilityData;

end record

end type

Se plantea la especificación de la siguiente operación:

function available_people_city (ong: tONG, city: string): integer

Su cometido es contabilizar cuántos integrantes adscritos a ong residen en la localidad indicada por city y cuentan, además, con algún registro de disponibilidad.

a)

[10%] Redacta formalmente las precondiciones que debe satisfacer la rutina. Se parte de la premisa de que la plantilla no se encuentra vacía y que a cada uno de sus miembros le corresponde como mínimo un intervalo de disponibilidad registrado en el sistema. Acompaña la expresión formal con una breve aclaración explicativa (1 o 2 líneas).

Enunciado: Pregunta 1.a · Prácticas de programación UOC 2023

Solución

Según los criterios oficiales de corrección

a. [10%] Redacta formalmente las precondiciones que debe satisfacer la rutina. Se parte de la premisa de que la plantilla no se encuentra vacía y que a cada uno de sus miembros le corresponde como mínimo un intervalo de disponibilidad registrado en el sistema. Acompaña la expresión formal con una breve aclaración explicativa (1 o 2 líneas).

Solución: {ong=ONG∧ONG.staff.count>0∧∀i:1≤i≤ONG.staff.count:(∃j:1≤j≤ONG.staffAvailability.count:ONG.staffAvailability.elems[j].person.document=ONG.staff.elems[i].document)}\{ong = ONG \land ONG.staff.count > 0 \land \forall i : 1 \le i \le ONG.staff.count : (\exists j : 1 \le j \le ONG.staffAvailability.count : ONG.staffAvailability.elems[j].person.document = ONG.staff.elems[i].document)\} Justificación: La primera cláusula garantiza que la lista de personal alberga al menos un integrante. La cuantificación posterior asegura que todo miembro censado en el personal posee correspondencia directa (mediante su documento identificador) con al menos una de las entradas almacenadas en la colección de disponibilidades.

La explicación paso a paso, hecha con IA, es Premium. Premium

Resuélvelo aquí mismo: corrección automática, pistas y solución paso a paso.

Pregunta 1.a - Especificación: precondiciones y p… · 2023 ›

Más ejercicios de Especificación: precondiciones y postcondiciones