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

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

Enunciado

Pregunta 1. Gestión de personal en campañas de una ONG

En el marco del sistema informático destinado a la administración de ONGs, se definen las siguientes constantes y estructuras de datos:

// Capacidad máxima permitida para los equipos de personal

const MAX_PEOPLE: integer = 100; end const;

// Ficha de una persona vinculada a la organización

type tPerson = record

document: string;

name: string;

surname: string;

email: string;

address: string;

city: string;

birthday: tDate;

end record;

// Conjunto de miembros que forman un equipo de trabajo

type tStaff = record

elems: vector [MAX_PEOPLE] of tPerson;

count: integer;

end record;

// Identificación y pertenencia de un proyecto

type tProject = record

code: string;

ongCode: string;

end record;

// Información relativa a una campaña concreta

type tCampaign = record

project: tProject;

detail: tProjectDetail;

staff: tStaff;

end record;

// Almacén dinámico con el registro de campañas

type tCampaignData = record

elems: pointer to tCampaign;

count: integer;

end record;

// Registro general representativo de la ONG

type tONG = record

code: string;

name: string;

projects: tProjectData;

staff: tStaff;

campaigns: tCampaignData;

staffAvailability: tAvailabilityData;

end record;

Se desea implementar la siguiente acción:

action delete_person_project(inout ong: tONG, in doc: string, in projCode: string)

Dicho subprograma debe dar de baja al voluntario o trabajador cuyo documento coincida con doc en todas aquellas campañas asociadas al código de proyecto projCode dentro de la ong indicada. Asimismo, cada vez que se suprima una persona del equipo de una campaña, el vector de personal correspondiente debe mantenerse debidamente compactado (sin huecos libres intermedios).

a.

[10%] Formula en lógica de predicados la precondición para esta acción. Debe asumirse que la ONG cuenta con al menos una campaña registrada y que no existen duplicidades de personal dentro de una misma campaña (ninguna persona está repetida en el equipo de la misma campaña). Añade una breve justificación en una o dos frases.

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

Solución

Según los criterios oficiales de corrección

Precondición formal en lógica de predicados:

Solución: {ong∈tONG∧doc∈DOC∧projCode∈PROJCODE∧ong.campaigns.count>0∧∀i,0<i≤ong.campaigns.count:[∀m,n,0<m,n≤ong.campaigns.elems[i].staff.count:m≠n  ⟹  ong.campaigns.elems[i].staff.elems[m].document≠ong.campaigns.elems[i].staff.elems[n].document]}\{ong \in \mathrm{tONG} \wedge doc \in \mathrm{DOC} \wedge projCode \in \mathrm{PROJCODE} \wedge ong.campaigns.count > 0 \wedge \forall i, 0 < i \le ong.campaigns.count : [\forall m, n, 0 < m, n \le ong.campaigns.elems[i].staff.count : m \neq n \implies ong.campaigns.elems[i].staff.elems[m].document \neq ong.campaigns.elems[i].staff.elems[n].document]\}

Justificación:

Solución: La primera condición estipula que el número de campañas activas debe superar a cero. La segunda cláusula cuantifica sobre cada campaña para asegurar que no coexistan dos integrantes distintos con el mismo documento identitario.

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 · Pregunta 1.a · 2021 ›

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