Tipos compuestos Práctica 1: Ejercicios simples Algoritmos y Estructuras de Datos 1 31 de marzo de 2008.

Slides:



Advertisements
Presentaciones similares
El juego del ajedrez ES BUENO JUGAR PORQUE
Advertisements

Arreglos Unidimensionales y Bidimensionales ESTRUCTURAS DE DATOS I
UNIDAD 3 Clase 3.3 Tema: Vectores en R2 y R3
Concepto de programa. Directorio Concepto de programa. Analisis del problema. Resolucion del problema. Desarroollo de un programa. Partes constitutivas.
Cinemática de una Pelota
L ENGUAJE DE E SPECIFICACIÓN Algoritmos y Estructuras de Datos I Especificación – Práctica 2 AEDI Especificación – Práctica 2 1.
Polinomios Definiciones.
UNIVERSIDAD AUTONOMA METROPOLITANA
UNIVERSIDAD DE MANAGUA I CUATRIMESTRE INTRODUCCION A LA PROGRAMACION
Fundamentos de Programación
CONDICIONES INICIALES t
Matemáticas 2º Bachillerato C.S.
Situaciones y operaciones
Población y Muestra.
Desarrollo Comunitario
TIPOS DE DATOS ABSTRACTOS
Descomposición Factorial Unidad 5
Introducción a los ángulos
Puesta en común Racionales.
El tipo de proyectos puede utilizar una metodología específica
MATEMÁTICA FINANCIERA
RAÍCES.
Graficación II. Algoritmos.
EJERCICIO Nº 2 Construcción de un Juego de Mesa Didáctico Didáctica General.
Por: Lic. Jeisson Gustin
Tipos compuestos Ejercicios simples Algoritmos y Estructura de Datos I 27 de marzo de 2009.
Algoritmo Ing. Maria Rosana Heredia
Tema 2: Base de datos relacionales
Matrices Departamento de Computación Escuela de Ingeniería de Sistemas
Sucesiones Numéricas Martes 05/05/2015.
Introducción a la Programación “El lenguaje C” Semestre de Otoño 2006 Claudio Gutiérrez-Soto.
Ejercicio en equipo A partir de la siguiente ecuación de una hipérbola, determina los elementos que la constituyen y traza su gráfica.
AJEDREZ Carlos A. Alsina.
Flujo en redes Def: una red N es un grafo orientado conexo que tiene dos nodos distinguidos una fuente s con grado de salida positivo y un sumidero t con.
FUNCION LINEAL.
Términos algoritmo diseñar algoritmo implementar algoritmo
 Lucha entre zombis y humanos.  Tablero de juego.  Casa con ventanas y puertas (barricadas).  Casillas de búsqueda (cartas).
Potencias Propiedad Intelectual Cpech.
Matemáticas Aplicadas CS I
UNIDAD 7.
 Un lenguaje se puede definir como un conjunto de palabras y formas de expresión por medio de las cuales se comunican y relacionan miembros de una comunidad.
Situaciones y operaciones. = – =  Observa cómo puedes dibujar un camino que pase por cada casilla.
El proceso de compilación
Presente un cuestionario con los aspectos mas importantes sobre los
Los números 1,2,15,36 son de tipo Reales Naturales Racionales Enteros Reales Naturales Racionales Enteros.
Metodología de la programación
Lic. Carla Aguirre Montalvo
Programación de Computadores
AQUABALANCE Trabajo Final. Reglas Es grupal Cada participante realiza una ronda y consta de 3 tiros por turno. Cada participante lanza la pelota apuntando.
Un dato de tipo entero es aquel que puede tomar por valor un número perteneciente al conjunto de los números enteros (Z), el cual está formado por los.
Conjunto numérico Números Reales Números Racionales
L ENGUAJE DE E SPECIFICACIÓN Algoritmos y Estructuras de Datos I Especificación – Práctica 4 AEDI Especificación – Práctica 4 1.
L ENGUAJE DE E SPECIFICACIÓN Algoritmos y Estructuras de Datos I Especificación – Práctica 2 AEDI Especificación – Práctica 2 1.
Gabriela Araya Baez Estudiante Ingenieria Civil Industrial.
Documento en el que se identifican todos los aspectos ambientales de una actividad, los impactos que causan o pueden causar, el control que se va a ejercer.
3. Listas Lic. En C.C. Ann Margareth Meza Rodríguez.
El Conjunto de los Números Complejos (Más allá de los números reales) En el Conjunto de los Números Reales, no todos los números tienen raíz cuadrada...,
Introducción Matemática Nivelatoria
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) V. GESTIÓN DE TIPOS Y GENERACIÓN DE CÓDIGOS.
Nociones Inclusión Igualdad
Un hombre de negocios acababa de apagar las luces de la tienda cuando un hombre apareció y demandó dinero. El dueño abrió una caja registradora. El contenido.
Geometría Analítica.
LIMITES. CÁLCULO DE LÍMITES POR MEDIO DE LOS MÉTODOS GRÁFICO Y NÚMERICO.
Se llama fracción algebraica al cociente de dos polinomios.
UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO FACULTAD DE INGENIERÍA COORDINACIÓN DE MATERIAS PROPEDÉUTICAS LICENCIATURA DE INGENIERÍA CIVIL ASIGNATURA: PROGRAMACIÓN.
Implementación de Iterables Construcción de Iterables virtuales o basados en otros iterables Fundamentos de Programación Departamento de Lenguajes y Sistemas.
Ejercicio VI En los ejercicios siguientes, marca con una “x” la casilla que corresponda con tu respuesta. Realiza las operaciones con seis cifras decimales.
PPTCES022MT21-A16V1 Clase Orden y aproximación en los irracionales MT-21.
Paso de parámetros Diseño de programas iterativos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 7 Versión.
EJERCICIOS Objetivo: Resolver ejercicios y problemas en el conjunto de los números enteros.
Transcripción de la presentación:

Tipos compuestos Práctica 1: Ejercicios simples Algoritmos y Estructuras de Datos 1 31 de marzo de 2008

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 }

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)); }

Tipo Racional ¿Cuál sería la definición correcta? problema iguales(r1,r2: Racional) = res : Bool { asegura res == (numerador( r1 ) * denominador(r2) == denominador(r1) * numerador(r2)); }

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]

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.

Tipo Tablero Modelando casillas. tipo Casilla { observador identificacion(c: Casilla) :  observador prenda(c: Casilla) : [char] } problema crearCasilla(id: ,p:[char] ) = res : Casillaproblema crearCasilla(id: ,p:[char] ) = res : Casilla{ requiere id > 0; asegura identificacion(res) == id; asegura prenda(res) == p; }

Tipo Tablero Modelando el tablero tipo Tablero { observador casillas(t: Tablero) : [Casilla] observador longitud(t: Tablero) : 

Tipo Tablero Modelando el tablero tipo Tablero { observador casillas(t: Tablero) : [Casilla] observador longitud(t: Tablero) :  invariante longitud(t) > 0 invariante estaOrdena(filtrarId(casillas(t))) invariante cantidadDeCasillasCorrecta invariante noHayCasillasRepetidas tipo Tablero { observador casillas(t: Tablero) : [Casilla] observador longitud(t: Tablero) :  invariante longitud(t) > 0 invariante estaOrdena(filtrarId(casillas(t))) invariante cantidadDeCasillasCorrecta invariante noHayCasillasRepetidas aux cantidadDeCasillasCorrecta : Bool = |casillas(t)|  ≤ longitud(t)

Tipo Tablero Modelando el tablero tipo Tablero { observador casillas(t: Tablero) : [Casilla] observador longitud(t: Tablero) :  invariante longitud(t) > 0 invariante estaOrdena(filtrarId(casillas(t))) invariante cantidadDeCasillasCorrecta invariante noHayCasillasRepetidas aux cantidadDeCasillasCorrecta : Bool = |casillas(t)|  ≤ longitud(t) aux noHayCasillasRepetidas : Bool = (  i  casillas(t)) cuenta(identificacion(i), filtraId(casillas(t)))==1

tipo Tablero { observador casillas(t: Tablero) : [Casilla] observador longitud(t: Tablero) :  invariante longitud(t) > 0 invariante estaOrdena(filtrarId(casillas(t))) invariante cantidadDeCasillasCorrecta invariante noHayCasillasRepetidas aux cantidadDeCasillasCorrecta : Bool = |casillas(t)|  ≤ longitud(t) aux noHayCasillasRepetidas : Bool = (  i  casillas(t)) cuenta(identificacion(i), filtraId(casillas(t)))==1 aux filtrarId(cs:[Casilla]) : [  ] = [identificacion(c) | c  cs ] Tipo Tablero Modelando el tablero

tipo Tablero { observador casillas(t: Tablero) : [Casilla] observador longitud(t: Tablero) :  invariante longitud(t) > 0 invariante estaOrdena(filtrarId(casillas(t))) invariante cantidadDeCasillasCorrecta invariante noHayCasillasRepetidas aux cantidadDeCasillasCorrecta : Bool = |casillas(t)|  ≤ longitud(t) aux noHayCasillasRepetidas : Bool = (  i  casillas(t)) cuenta(i, filtraId(casillas(t))) == 1 aux filtrarId(cs:[Casilla]) : [  ] = [identificacion(c) | c  cs ] aux estaOrdena(ids: [  ]) : Bool = (  i  [0..|ids|-1)) (ids i ≤ ids i+1 ) } Tipo Tablero Modelando el tablero

problema agregarCasilla(Casilla c, Tablero t ) { requiere cuenta(identificacion(c),filtrarId(casillas(t))) == 0; requiere |casillas(t)|<longitud(t); problema agregarCasilla(Casilla c, Tablero t ) { requiere cuenta(identificacion(c),filtrarId(casillas(t))) == 0; requiere |casillas(t)|<longitud(t); modifica t; problema agregarCasilla(Casilla c, Tablero t ) { requiere cuenta(identificacion(c),filtrarId(casillas(t))) == 0; requiere |casillas(t)|<longitud(t); modifica t; asegura longitud(t) = longitud(pre(t)); asegura mismosElementos(casillas(t),c:casillas(pre(t)); } problema agregarCasilla(Casilla c, Tablero t ) { problema crearTablero(l:  ) = res : Tablero{ requiere l > 0; asegura longitud(res) = l; Tipo Tablero Modelando el tablero problema crearTablero(l:  ) = res : Tablero{ requiere l > 0; asegura longitud(res) = l; asegura casillas(res) = [nuevaCasilla(1,”Comienzo”)]; }