Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porAgustín Camacho Quintero Modificado hace 10 años
1
Tipos compuestos Ejercicios simples Algoritmos y Estructura de Datos I 27 de marzo de 2009
2
Tipo Racional Sea el tipo de datos Racional que representa a los números racionales. tipo Racional { observador numerador(r: Racional) : observador denominador(r: Racional) : invariante denominador(r) 0 }
3
Tipo Racional Especifiquemos la igualdad para el tipo Racional. ¿Cuándo dos racionales son iguales? 2/3 y 5/4 7/5 y 7/5 12/8 y 6/4 Por lo tanto: es correcta la siguiente definición? problema iguales(r1,r2: Racional) = res : Bool { asegura res == (numerador( r1 ) = numerador(r2) denominador(r1) = denominador(r2)); }
4
Tipo Racional ¿Cuál sería una definición correcta? problema iguales(r1,r2: Racional) = res : Bool { asegura res == (numerador( r1 ) * denominador(r2) == denominador(r1) * numerador(r2)); }
5
Tipo Racional problema iguales(r1,r2: Racional) = res : Bool { asegura res == (numerador(r1) / mcd_r1 == numerador(r2) / mcd_r2 denominador(r1) / mcd_r1 == denominador(r2) / mcd_r2); aux mcd_r1 = mcd(numerador(r1), denominador(r1)); aux mcd_r2 = mcd(numerador(r2), denominador(r2)); } O también: aux mcd(a,b : ) : = max[x | x divisores(a), y divisores(b), x=y]
6
Tipo Tablero Un tablero de juegos tipo juego de la Oca o la vida o Monopoly, consta de una secuencia de casillas ordenadas e identificadas con números enteros positivos, las cuales pueden poseer o no prendas. Además todos los tableros poseen una casilla inicial de la cual parten los jugadores, y una longitud determinada. No puede haber dos casillas con la misma identificación. Podemos pensar el tablero como una secuencia de casillas. Las casillas deberán poseer la identificación y la prenda que corresponda.
7
Tipo Tablero Modelando casillas. tipo Casilla { observador identificacion(c: Casilla) : observador prenda(c: Casilla) : [char] invariante idPositivo: identificacion(c) >= 0; }
8
Tipo Tablero Modelando casillas. problema crearCasilla(id: ,p:[char] ) = res : Casilla{ requiere id >= 0; asegura identificacion(res) == id; asegura prenda(res) == p; } crearCasilla : dada una identificación y una prenda, crea una casilla con esas propiedades.
9
Tipo Tablero Modelando el tablero tipo TableroRaro { observador casillas(t: Tablero) : [Casilla] observador longitud(t: Tablero) : invariante alMenosUnaCasilla: …. invariante cantidadDeCasillasCorrecta: …. invariante noHayCasillasRepetidas: … invariante estaOrdenada: … }
10
Tipo Tablero Modelando el tablero tipo TableroRaro { observador casillas(t: Tablero) : [Casilla] observador longitud(t: Tablero) : invariante alMenosUnaCasilla: |casillas(t)| > 0; invariante cantidadDeCasillasCorrecta: |casillas(t)| ≤ longitud(t) invariante noHayCasillasRepetidas: ( i,j [0..|casillas(t)|), i!=j ) identificiacion(casillas(t)[i]) != identificiacion(casillas(t)[j]) invariante estaOrdenada: estaOrdenada( casillas(t) ) } aux estaOrdenada(cs: [Casilla]) : Bool = ( i ( 0.. |cs| )) identificiacion(cs[i -1]) ≤ identificiacion(cs[i])
11
Tipo Tablero Modelando el tablero problema crearTablero(l: ) = res : Tablero{ requiere l > 0; asegura longitud(res) = l; asegura |casillas(res)| == 1; asegura identificacion(casillas(res)[0] ) == 0; asegura prenda(casillas(res)[0] ) == “vacía”; } crearTablero : dada una longitud de tablero, crea uno con casilla inicial de identificación 0 y con la descripción de la prenda "vacía" (dado que representa la casilla de la cual parten los jugadores)
12
problema agregarCasilla(c: Casilla, t: Tablero) { requiere noHayUnaConEseId: ¬( ∃ c’ casillas(t) ) identificacion(c’) == identificacion(c) requiere hayLugar: |casillas(t)| < longitud(t); modifica t; asegura longitud(t) = longitud(pre(t)); asegura mismos(casillas(t),c:casillas(pre(t)); } Tipo Tablero Modelando el tablero agregarCasilla : agregar la casilla ‘c’ al tablero ‘t’
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.