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

Tema: Diseño descendente sobre vectores de registros en lenguaje algorítmico · Del examen Prueba de síntesis. Enero de 2021 (2021)

Enunciado

Pregunta 1. Gestión de espacios de coworking mediante diseño descendente

Tomando como base el sistema de administración de un centro de trabajo compartido ( coworking), se definen los siguientes tipos de datos y constantes:

// Valores límite y tarifas base

constante

MAX_SPACES: entero = 50;

MAX_ANNEXES: entero = 3;

PRICE_TABLEFLEX: real = 50.00;

PRICE_TABLEFIX: real = 80.00;

PRICE_OFFICEFIX: real = 140.00;

fin constante

tipo

tRate = {tableFlex, tableFix, officeFix};

tWorkSpace = registro

id: entero;

area: real;

rate: tRate;

fin registro

tContractAnnex = registro

idWorkSpace: entero;

price: real;

fin registro

tContract = registro

idPartner: entero;

month: entero;

year: entero;

annexesSet: vector [1..MAX_ANNEXES] de tContractAnnex;

numAnnex: entero;

fin registro

tCoworking = registro

workSpaceSet: vector [1..MAX_SPACES] de tWorkSpace;

numWorkSpaces: entero;

contractsSet: puntero a tContract;

numContracts: entero;

fin registro

fin tipo

Se dispone del encabezado del siguiente subprograma:

function useless_workspaces (c: tCoworking): integer

El propósito de esta función consiste en computar la cantidad total de puestos de trabajo ( workspaces) que jamás han sido objeto de contratación.

b.

[30%] Diseña e implementa la función useless_workspaces en pseudocódigo algorítmico empleando la técnica de diseño descendente. Se deben codificar todos los módulos auxiliares requeridos en los niveles inferiores, incorporando una breve descripción de 1 a 2 líneas para cada uno de ellos (los métodos que no cuenten con explicación no obtendrán puntuación).

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

Solución

Según los criterios oficiales de corrección

b. [30%] Diseña e implementa la función useless_workspaces en pseudocódigo algorítmico empleando la técnica de diseño descendente.

Solución: ```pseudocode // Nivel 1: Módulo principal // Descripción: Itera a lo largo de los puestos registrados en la empresa y contabiliza cuántos de ellos no constan vinculados a ningún contrato. { Pre: c != NIL y c.numWorkSpaces > 0 } function useless_workspaces (c: tCoworking) : integer var totalLibres: integer; idxEspacio: integer; end var totalLibres := 0; for idxEspacio := 1 to c.numWorkSpaces do if not have_contracts(c, c.workSpaceSet[idxEspacio].id) then totalLibres := totalLibres + 1; end if; end for; return totalLibres; end function // Nivel 2: Comprobación de contrataciones para un puesto // Descripción: Explora la colección de contratos de la entidad para averiguar si un identificador concreto de espacio aparece suscrito en alguno de ellos. function have_contracts (c: tCoworking; wid: integer) : boolean var idxContrato: integer; encontrado: boolean; end var encontrado := FALSE; idxContrato := 1; while (idxContrato <= c.numContracts) and not encontrado do encontrado := find_annex(c.contractsSet[idxContrato], wid); idxContrato := idxContrato + 1; end while; return encontrado; end function // Nivel 3: Búsqueda en los anexos de un contrato // Descripción: Examina secuencialmente los anexos asociados a un contrato específico para verificar si figura la asignación del espacio de trabajo indicado. function find_annex (contrato: tContract; idBuscado: integer) : boolean var idxAnexo: integer; presente: boolean; end var presente := FALSE; idxAnexo := 1; while (idxAnexo <= contrato.numAnnex) and not presente do presente := (contrato.annexesSet[idxAnexo].idWorkSpace = idBuscado); idxAnexo := idxAnexo + 1; end while; return presente; 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 · 2021 · Pregunta 1.b · Juny 2020 ›

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