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

Tema: Diseño descendente sobre vectores de registros en lenguaje algorítmico · 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.

b. [40%] Desarrolla la solución en lenguaje algorítmico empleando una estrategia de diseño modular descendente. Descompón el problema en los subalgoritmos que consideres precisos y documenta cada módulo con un conciso comentario sobre su propósito funcional (1 o 2 líneas por procedimiento o función).

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

Solución

Según los criterios oficiales de corrección

b. [40%] Desarrolla la solución en lenguaje algorítmico empleando una estrategia de diseño modular descendente. Descompón el problema en los subalgoritmos que consideres precisos y documenta cada módulo con un conciso comentario sobre su propósito funcional (1 o 2 líneas por procedimiento o función).

Solución: ```pseudocode /* Rutina principal: computa los miembros del equipo que habitan en la urbe dada y disponen de franjas horarias */ function available_people_city (ong: tONG, city: string): integer var idx: integer; totalCount: integer; member: tPerson; end var totalCount := 0; for idx := 1 to ong.staff.count do member := ong.staff.elems[idx]; if lives_in(member, city) then if has_any_availability(ong.staffAvailability, member) then totalCount := totalCount + 1; end if; end if; end for; return totalCount; end function /* Comprueba si la persona indicada tiene fijada su residencia en la localidad objetivo */ function lives_in (p: tPerson, city: string): boolean return (p.city = city); end function /* Determina si un integrante concreto posee al menos un registro de disponibilidad asignado */ function has_any_availability (ad: tAvailabilityData, p: tPerson): boolean var k: integer; existsRecord: boolean; end var k := 1; existsRecord := false; while (k <= ad.count) and not existsRecord do if ad.elems[k].person.document = p.document then existsRecord := true; else k := k + 1; end if; end while; return existsRecord; end function ```

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.b - Diseño descendente en lenguaje alg… · 2023 ›

Más ejercicios de Diseño descendente sobre vectores de registros en lenguaje algorítmico