La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Tipos compuestos Ejercicios simples Algoritmos y Estructura de Datos I 27 de marzo de 2009.

Presentaciones similares


Presentación del tema: "Tipos compuestos Ejercicios simples Algoritmos y Estructura de Datos I 27 de marzo de 2009."— Transcripción de la presentación:

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’


Descargar ppt "Tipos compuestos Ejercicios simples Algoritmos y Estructura de Datos I 27 de marzo de 2009."

Presentaciones similares


Anuncios Google