Pregunta 1.a - Especificación de precondiciones · Prácticas de programación UOC Juny 2020

Tema: Especificación: precondiciones y postcondiciones · Del examen Juny (2020)

Enunciado

A partir del modelado de datos de un torneo de ajedrez, considérense las siguientes definiciones de tipos y constantes en lenguaje algorítmico:

const

MAX_PAIRINGS: integer:= 5;

MAX_ROUNDS: integer:= 9;

end const

type

tLevel = {master, advanced, medium, novice};

tResult = {whiteWins, blackWins, draw};

tDate = record

day: integer;

month: integer;

year: integer;

end record

tPlayer = record

id: integer;

name: string;

age: integer;

nacionality: string;

elo: integer;

level: tLevel;

end record

tPairing = record

idPairing: integer;

idWhitePlayer: integer;

idBlackPlayer: integer;

result: tResult;

end record

tRound = record

number: integer;

pairings: vector [MAX_PAIRINGS] of tPairing;

numPairings: integer;

numWhiteWins: integer;

numBlackWins: integer;

numDraws: integer;

end record

tChessTournament = record

name: string;

location: string;

date: tDate;

players: pointer to tPlayer;

numPlayers: integer;

rounds: vector [MAX_ROUNDS] of tRound;

numRounds: integer;

end record

end type

Se dispone de la cabecera de la función:

function level_loosers (c: tChessTournament): integer

Su propósito es computar y devolver el número total de partidas en las que el participante derrotado poseía un nivel estrictamente superior al vencedor.

a. [10%] Especifica las precondiciones formales asociadas a la función, asumiendo que el campeonato cuenta como mínimo con una ronda disputada y que cada contrincante figura debidamente registrado en el torneo.

Enunciado: Pregunta 1.a - Especificación de precondiciones · Prácticas de programación UOC Juny 2020

Solución

Según los criterios oficiales de corrección

a. [10%] Especifica las precondiciones formales asociadas a la función, asumiendo que el campeonato cuenta como mínimo con una ronda disputada y que cada contrincante figura debidamente registrado en el torneo.

Solución: Pre: {c = C ∧ 1 ≤ C.numRounds ≤ MAX_ROUNDS ∧ (∀i ∈ [1, C.numRounds] : 0 ≤ C.rounds[i].numPairings ≤ MAX_PAIRINGS) ∧ C.numPlayers > 0}

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 · Juny 2020

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