Especificación de Problemas

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Especificación de Problemas"

Transcripción

1 Especificación de Problemas Eduardo Bonelli Departamento de Ciencia y Tecnología, UNQ ebonelli@unq.edu.ar 12 de septiembre de 2007

2 Especificación de Problemas Ejemplos

3 Ejemplo de Problema ordenar, en orden creciente, una lista de 3 números enteros Posible dato de entrada [7,1,-3] Posible dato de salida [-5,6,7] Nota: El dato de salida [-5,6,7] es una salida válida aunque no para el dato de entrada [7,1,-3]

4 Qué es un problema? Un problema se describe o especifica exhibiendo: 1. Cuáles son los posibles datos de entrada 2. Cuáles son los posibles datos de salida o resultados 3. Cuáles son las condiciones que debe satisfacerse para que una salida particular sea aceptable para una cierta entrada relación entre datos de entrada y datos de salida Vamos a dar un ejemplo usando listas

5 Ejemplo de especificación de problema Entrada (s): listas de enteros de longitud 3 Salida (t): listas de enteros de longitud 3 Relación de E/S: 1. t es permutación de s 2. Para todo 1 i, j s tal que i < j se cumple que t(i) t(j)

6 Partes de una especificación 1. Encabezado 2. Precondición 3. Poscondición

7 Partes de una especificación - Encabezado problema nombre(parametros) = nombreres:tipores Nombre Parámetros nombreres tipores Nombre del problema Nombre y tipo de cada parámetro Nombre del resultado Tipo del resultado Ejemplo: problema ordenar (s:[int]) = t:[int]

8 Partes de una especificación - Precondición Se refiere a los parámetros de la especificación (i.e. la entrada) Establece condiciones que el usuario (de la especificación) debe cumplir Es lo que requiere el método, programa, algoritmo para hacer su tarea Ejemplo: la lista de entrada s tiene longitud 3

9 Partes de una especificación - Poscondición Condición sobre el resultado Establece condiciones que el programador (o quien construya la solución) debe cumplir Es lo que el método, programa, algoritmo asegura después de su ejecución, siempre que se cumple la precondición Ejemplo: la salida t es una permutación, ordenada de la lista de entrada s

10 Ejemplo completo de especificación problema ordenar(s:[int]) = t:[int] requiere: length s == 3 asegura: perm(s, t) y para todo 1 i,j length s con i < j se cumple que t(i) t(j)

11 Especificación de Problemas Ejemplos

12 Ejemplos de especificaciones Vamos a exhibir una serie de ejemplos de especificaciones de problemas El objetivo es familiarizarse con Formato de presentación Lenguaje de especificación

13 Raíz cuadrada problema raizcuadrada(x:float) = res:float requiere: x >= 0 asegura: res^2 == x

14 Raíz cuadrada Qué sucede si el usuario de la función raizcuadrada, por error, le pasa un número negativo como argumento? En ese caso el contrato entre usuario y programador queda anulado raizcuadrada puede devolver un resultado sin sentido raizcuadrada puede colgarse raizcuadrada puede devolver un error Una alternativa: especificación defensiva

15 Especificación defensiva Puede que el usuario tenga previsto usar la función en un ambiente hostil En ese caso es de preferencia una especificación que se defiende de argumentos erróneos problema raizcuadradadefensiva(x:float) = res:float requiere: nada asegura: (x<0 && se reporta error) (x>=0 && res^2 == x)

16 Mínimo Obtener el mínimo entre dos números reales problema min(x,y:float) = res:float requiere: nada asegura: (res <= x && res <= y) Es correcta la especificación?

17 Mínimo Obtener el mínimo entre dos números reales problema min(x,y:float) = res:float requiere: nada asegura: (res = x res = y) && (res <= x && res <= y)

18 Mínimo - Solución min x y x<=y = x otherwise = y

19 Máximo común divisor Obtener el máximo común divisor de dos números enteros problema mcd(x,y:int) = res:int requiere: nada asegura: (res x && res y) && ( z:int)((z x && z y) => z <= res) aux: (u,v:int):bool = v mod u == 0 Observar el uso de la cláusula aux para definir funciones auxiliares

20 Máximo común divisor - Solución mcd x y x==y = x x>y = mcd (x-y) y x<y = mcd x (y-x)

21 Lookup Buscar un elemento en una lista problema lookup(el:a,lista:[a]) = res:bool requiere: elem el lista asegura: (res <=> elem el lista) Obs: elem es una función de Haskell que determina si el primer argumento es un elemento de la lista dada como segundo argumento Es correcta?

22 Lookup Buscar un elemento en una lista problema lookup(el:a,lista:[a]) = res:bool requiere: nada asegura: (res <=> elem el lista)

23 Mínimo elemento de una lista de enteros Obtener el mínimo elemento de una lista de enteros problema minlistint(l:[int]) = res:int requiere: nada asegura: ( y:int)(elem y l => res <= y) Es correcta?

24 Mínimo elemento de una lista de enteros Obtener el mínimo elemento de una lista de enteros problema minlistint(l:[int]) = res:int requiere: nada asegura: ( y:int)(elem y l => res <= y) && elem res l Si la lista es vacía?

25 Mínimo elemento de una lista de enteros Obtener el mínimo elemento de una lista de enteros problema minlistint(l:[int]) = res:int requiere: length l > 0 asegura: ( y:int)(elem y l => res <= y) && elem res l

26 Indice del máximo elemento de una lista de enteros problema maxindinlistint(l:[int]) = res:int requiere: length l > 0 asegura: 0 <= res < length l && ( i:int)(elem i [0..(length l)-1] => l!!i <= res) Es correcta?

27 Indice del máximo elemento de una lista de enteros problema maxindinlistint(l:[int]) = res:int requiere: length l > 0 asegura: 0 <= res < length l && ( i:int)(elem i [0..(length l)-1] => l!!i <= l!!res)

28 Indice del primer máximo elemento de una lista de enteros Variante del ejemplo anterior problema fstmaxindinlistint(l:[int]) = res:int requiere: length l > 0 asegura: 0 <= res < length l && ( i:int)(elem i [0..(length l)-1] => (l!!i < l!!res (l!!i == l!!res && i >= res)) )

29 Ejercicio Grupos de dos 20 minutos Parte a Parte b Especificar el problema problema prefijo(p:[a],l:[a]) = res:bool que retorna verdadero en caso de que p sea prefijo de l. Especificar el problema problema maxsumprefijo(l:[int]) = res:[int] que retorna un prefijo de l tal que la suma de sus elementos sea mayor que la de cualquier otro prefijo. El resultado res no tiene por qué ser único

30 Ejercicio - Una respuesta posible problema prefijo(p:[a],l:[a]) = res:bool requiere: nada asegura: ( l :[a])(p++l == l) problema maxsumprefijo (l:[int]) = res:[int] requiere: nada asegura: prefijo(res,l) && ( p :[Int])(prefijo(p,l) => sum p <= sum l)

Especificación de programas. Algoritmos y Estructuras de Datos I. Correctitud de ciclos

Especificación de programas. Algoritmos y Estructuras de Datos I. Correctitud de ciclos Especificación de programas Algoritmos y Estructuras de Datos I Segundo cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Simulacro Coloquio Final - clase 1 Sean dos programas, cada uno recibe

Más detalles

Práctica 4 Especificación de problemas

Práctica 4 Especificación de problemas Práctica 4 Especificación de problemas Algoritmos y Estructura de Datos I Primer Cuatrimestre 2011 Ejercicio 1. Las siguientes especificaciones no son correctas. Indicar por qué, y corregirlas para que

Más detalles

Introducción a la Computación

Introducción a la Computación Introducción a la Computación Primer Cuatrimestre de 2012 Corrección de Algoritmos 1 Especificación, algoritmo y programa Especificación de un problema: Qué problema tenemos? Lenguaje formal (ej. lógica

Más detalles

Arreglos. Algoritmos y Estructuras de Datos I. Arreglos en C++ Arreglos y listas

Arreglos. Algoritmos y Estructuras de Datos I. Arreglos en C++ Arreglos y listas Arreglos Algoritmos y Estructuras de Datos I Primer cuatrimestre 2007 Teórica de imperativo 3 Algoritmos de búsqueda secuencias de una cantidad fija de variables del mismo tipo se declaran con un nombre,,

Más detalles

Especificación Clase 2

Especificación Clase 2 Especificación Clase 2 Lenguaje de especificación Departamento de Computación, FCEyN, Universidad de Buenos Aires. 27 de marzo del 2015 Menú del día Especificación Repaso del lenguaje de especificación

Más detalles

Manos a la obra: Recursión, división y listas

Manos a la obra: Recursión, división y listas Manos a la obra: Recursión, división y listas Taller de Álgebra I Cuatrimestre de verano de 2015 Calentando motores La clase pasada vimos ejemplos de definiciones recursivas. Hoy vamos a continuar con

Más detalles

Laboratorio 4 Tema 6. Procedimientos: Acciones, Funciones y Pase de Parámetros

Laboratorio 4 Tema 6. Procedimientos: Acciones, Funciones y Pase de Parámetros Laboratorio 4 Tema 6. Procedimientos: Acciones, Funciones y Pase de Parámetros Procedimientos El paradigma de programación basado en procedimientos se basa en la posibilidad de crear procedimientos computacionales

Más detalles

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos Algoritmos y Estructuras de Datos I 1 cuatrimestre de 009 Departamento de Computación - FCEyN - UBA Programación funcional - clase Tipos algebraicos Tipos algebraicos y abstractos ya vimos los tipos básicos

Más detalles

Práctica N o 1 - Programación Funcional

Práctica N o 1 - Programación Funcional Práctica N o 1 - Programación Funcional Para resolver esta práctica, recomendamos usar el Hugs 98, de distribución gratuita, que puede bajarse de http://www.haskell.org/hugs/. Ejercicio 1 Dado el siguiente

Más detalles

Programación Funcional

Programación Funcional Alberto Pardo Marcos Viera Instituto de Computación, Facultad de Ingeniería Universidad de la República, Uruguay Operaciones sobre listas Listas El tipo de las listas es uno de los más usados en PF Su

Más detalles

Complejidad computacional. Algoritmos y Estructuras de Datos I. Complejidad computacional. Notación O grande

Complejidad computacional. Algoritmos y Estructuras de Datos I. Complejidad computacional. Notación O grande Complejidad computacional Algoritmos y Estructuras de Datos I Segundo cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Algoritmos - clase 10 Introducción a la complejidad computacional y

Más detalles

Algoritmos y Estructuras de Datos I. Algoritmos y Estructuras de Datos I. Algoritmos y Estructuras de Datos I. Algoritmos y Estructuras de Datos I

Algoritmos y Estructuras de Datos I. Algoritmos y Estructuras de Datos I. Algoritmos y Estructuras de Datos I. Algoritmos y Estructuras de Datos I Algoritmos y Estructuras de Datos I Algoritmos y Estructuras de Datos I Objetivo: Aprender a programar en lenguajes imperativos. Primer cuatrimestre de 2017 Departamento de Computación - FCEyN - UBA Especificación

Más detalles

Informática de 1 o de Matemáticas. Ejercicios de Introducción a Haskell. Ejercicio 1 Consideremos la siguiente definición:

Informática de 1 o de Matemáticas. Ejercicios de Introducción a Haskell. Ejercicio 1 Consideremos la siguiente definición: Ejercicios de Introducción a Haskell Informática de 1 o de Matemáticas Ejercicio 1 Consideremos la siguiente definición: doble x = x + x El valor de doble(doble 3) se puede calcular usando distintos métodos

Más detalles

Trabajo Práctico 4: Testing Funcional

Trabajo Práctico 4: Testing Funcional Trabajo Práctico 4: Testing Funcional 1) Explique claramente cuáles son los objetivos de la Validación y de la Verificación. Qué técnicas usaría para llevar a cabo cada una de estas actividades? 2) Qué

Más detalles

Tipos de datos algebraicos

Tipos de datos algebraicos Tipos de datos algebraicos Taller de Álgebra I Segundo cuatrimestre de 2013 Programación funcional Recordemos que un tipo de datos es un conjunto dotado con una serie de operaciones sobre los elementos

Más detalles

Listas y Recursión. Taller de Álgebra I. Primer Cuatrimestre de 2015

Listas y Recursión. Taller de Álgebra I. Primer Cuatrimestre de 2015 Listas y Recursión Taller de Álgebra I Primer Cuatrimestre de 2015 Un nuevo tipo: Listas Tipo Lista Las listas pueden contener elementos de cualquier tipo (incluso listas) [1] :: [Integer] [1, 2] :: [Integer]

Más detalles

Informática Haskell Matemáticas Curso Pepe Gallardo Universidad de Málaga. Tema 8. Listas

Informática Haskell Matemáticas Curso Pepe Gallardo Universidad de Málaga. Tema 8. Listas Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Tema 8. Listas 8.1 Secuencias aritméticas 8.2 Algunas funciones predefinidas 8.3 Listas por comprensión Ejemplo: QuickSort

Más detalles

Tema 13: Aplicaciones de programación funcional

Tema 13: Aplicaciones de programación funcional Tema 13: Aplicaciones de programación funcional Programación declarativa (2010 11) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de

Más detalles

Esquema. Condicionales. Ejemplo de condicional. Demostración. P { if (B) uno else dos } Q. P { while (B) cuerpo } Q

Esquema. Condicionales. Ejemplo de condicional. Demostración. P { if (B) uno else dos } Q. P { while (B) cuerpo } Q Esquema Teórica Imperativo 2 Estructuras de control Instrucción de asignación P{v=e Q // estado 1; vale P: true v:=e; // vale Q: v == e@1 && para toda vi: vi == vi@1 Instrucciones de Control de Flujo P

Más detalles

Divisibilidad y congruencia

Divisibilidad y congruencia Divisibilidad y congruencia Taller de Álgebra I Verano 2017 Algoritmo de la división Teorema Dados a, d Z, d 0, existen únicos q, r Z tales que a = qd + r, 0 r < d. Idea de la demostración: (caso a 0,

Más detalles

1.1 Define un operador ( ) que devuelva True si y solo si tan solo uno de sus argumentos es True. Por ejemplo:? (3 > 2) (2 > 5)

1.1 Define un operador ( ) que devuelva True si y solo si tan solo uno de sus argumentos es True. Por ejemplo:? (3 > 2) (2 > 5) 1 Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Práctica 1 1.1 Define un operador ( ) que devuelva True si y solo si tan solo uno de sus argumentos es True. Por ejemplo:?

Más detalles

Slide 1. ordenación de tres números en forma. creciente.

Slide 1. ordenación de tres números en forma. creciente. Slide 1 Slide 2 EsTriangulo := (a < b+c) and (b < a+c) and (c < a+b) ; EsEquilatero := (a = b) and (b = c); EsIsosceles := (a = b) and (a c) or (a = c) and (a b) or (b = c) and (a b); EsEscaleno

Más detalles

Tipos en Haskell. Cecilia Manzino

Tipos en Haskell. Cecilia Manzino Tipos Tipo: conjunto de valores asociados a operaciones. Ejemplos: enteros, caracteres, booleanos, funciones de enteros a enteros. Sirven para: detectar errores antes de la evaluación especificar programas

Más detalles

n! = 1 2 n 0! = 1 (n+1)! = (n + 1) n!

n! = 1 2 n 0! = 1 (n+1)! = (n + 1) n! Capítulo 3 Recursión La recursión es un estilo autoreferencial de definición usado tanto en matemática como en informática. Es una herramienta de programación fundamental, particularmente importante para

Más detalles

5. ESTRUCTURAS DE REPETICIÓN

5. ESTRUCTURAS DE REPETICIÓN 5. ESTRUCTURAS DE REPETICIÓN Las estructuras de repetición, permiten la ejecución de una lista o secuencia de instrucciones () en varias ocasiones. El número de veces que el bloque

Más detalles

Aritmética en Haskell

Aritmética en Haskell Aritmética en Haskell Taller de Álgebra I Primer cuatrimestre de 2014 Algoritmo de división Para obtener el cociente y resto entre dos números enteros, tenemos las funciones div y mod, respectivamente.

Más detalles

ALGORITMICA Y PROGRAMACION POR OBJETOS I

ALGORITMICA Y PROGRAMACION POR OBJETOS I ALGORITMICA Y PROGRAMACION POR OBJETOS I Nivel 1 Problemas, Soluciones y Programas Marcela Hernández Hoyos Solucionar un Problema = Construir un Programa Problema Programador Herramientas y Lenguajes Análisis

Más detalles

Programación Declarativa Haskell Informática Sistemas Curso Pepe Gallardo Universidad de Málaga. Tema 8. Listas

Programación Declarativa Haskell Informática Sistemas Curso Pepe Gallardo Universidad de Málaga. Tema 8. Listas Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 8. Listas 8.1 Secuencias aritméticas 8.2 Algunas funciones predefinidas 8.3 Listas por comprensión

Más detalles

Divide-y-vencerás, backtracking y programación dinámica

Divide-y-vencerás, backtracking y programación dinámica Divide-y-vencerás, backtracking y programación dinámica Diseño y Análisis de Algoritmos Cátedra de Programación Carrera de Ingeniería de Sistemas Prof. Isabel Besembel Carrera Noviembre, 2012 Prof. Isabel

Más detalles

Práctica 5. Contenido: Subprogramas (funciones y procedimientos). Parámetros por valor y por referencia.

Práctica 5. Contenido: Subprogramas (funciones y procedimientos). Parámetros por valor y por referencia. CI-2125 Computación I Práctica 5 Contenido: Subprogramas (funciones y procedimientos). Parámetros por valor y por referencia. 1. Especifique y escriba el diagrama de flujo de una función de nombre mcd,

Más detalles

Para entender la recursividad primero tenemos que entender la recursividad

Para entender la recursividad primero tenemos que entender la recursividad Para entender la recursividad primero tenemos que entender la recursividad Funcional Clase 1 Matias Reparaz, Agustín Nieto Departamento de Computación, FCEyN,Universidad de Buenos Aires. 20 de Septiembre

Más detalles

Lenguajes de programación. Algoritmos y Estructuras de Datos I. Lenguajes compilados. Lenguajes compilados

Lenguajes de programación. Algoritmos y Estructuras de Datos I. Lenguajes compilados. Lenguajes compilados Lenguajes de programación Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Teórica - clase 3 Introducción a la programación imperativa Las computadoras

Más detalles

Algoritmos y Estructuras de Datos: Introducción a la Recursión de Programas. Guillermo Román Díez

Algoritmos y Estructuras de Datos: Introducción a la Recursión de Programas. Guillermo Román Díez Algoritmos y Estructuras de Datos: Introducción a la Recursión de Programas Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2015-2016 Guillermo Román, UPM AED: Introducción

Más detalles

Práctico 2: Especificación, derivación y verificación de programas funcionales

Práctico 2: Especificación, derivación y verificación de programas funcionales Práctico 2: Especificación, derivación y verificación de programas funcionales Algoritmos y Estructuras de Datos I 1 er cuatrimestre 2015 Esta guía tiene como objetivo obtener las habilidades necesarias

Más detalles

El sistema de clases de Haskell. Introducción

El sistema de clases de Haskell. Introducción Capítulo 5. El sistema de clases de Haskell 56 El sistema de clases de Haskell Introducción Función monomórfica: sólo se puede usar para valores de un tipo concreto not :: Bool Bool not True = False not

Más detalles

Tipos paramétricos y recursivos

Tipos paramétricos y recursivos Tipos paramétricos y recursivos Taller de Álgebra I Verano 2017 Tipos paramétricos Tipos paramétricos Podemos hacer que los constructores de un tipo de datos reciban parámetros. A los tipos construidos

Más detalles

Divisibilidad y congruencia

Divisibilidad y congruencia de los ejercicios de la clase 8 Divisibilidad y congruencia Taller de Álgebra I Segundo cuatrimestre de 2016 Introducción A continuación les presentamos algunas soluciones para los ejercicios de la clase

Más detalles

Guardas y Tipos de datos

Guardas y Tipos de datos Guardas y Tipos de datos Taller de Álgebra I 1er Cuatrimestre 2017 Definiciones de funciones por casos Podemos usar guardas para definir funciones por casos: f (n) = { 1 si n = 0 0 si no f n n == 0 = 1

Más detalles

Algoritmos de Búsqueda

Algoritmos de Búsqueda Introducción a la Computación Algoritmos de Búsqueda Esteban E. Mocskos (emocskos@dc.uba.ar) Facultad de Ciencias Exactas y Naturales, UBA CONICET 11/10/2017 E. Mocskos (UBA CONICET) Algoritmos de Búsqueda

Más detalles

PRÁCTICO N o 7. Lenguaje de Diseño (Tercera Parte): Modularización. Ejercicio 1: Teniendo en cuenta la resolución del ejercicio 7 del Práctico 6:

PRÁCTICO N o 7. Lenguaje de Diseño (Tercera Parte): Modularización. Ejercicio 1: Teniendo en cuenta la resolución del ejercicio 7 del Práctico 6: PRÁCTICO N o 7 Lenguaje de Diseño (Tercera Parte) Modularización Ejercicio 1 Teniendo en cuenta la resolución del ejercicio 7 del Práctico 6 a Analice su solución identificando las distintas tareas que

Más detalles

Bloque 1. Conceptos y técnicas básicas en programación

Bloque 1. Conceptos y técnicas básicas en programación Bloque 1. Conceptos y técnicas básicas en programación 1. Introducción 2. Datos y expresiones. Especificación de algoritmos 3. Estructuras algorítmicas básicas 4. Iteración y recursión 5. Iteración y recursión

Más detalles

Tema II: Introducción al Lenguaje Funcional

Tema II: Introducción al Lenguaje Funcional Tema II: Introducción al Lenguaje Funcional Características de Haskell Lenguaje funcional de o. superior fuertemente tipificado. Clasifica los entes de un programa en: objetos (constantes y funciones)

Más detalles

Criterios de evaluación. Tema 1. Matemáticas. 6º Primaria

Criterios de evaluación. Tema 1. Matemáticas. 6º Primaria Criterios de evaluación. Tema 1. Matemáticas. 6º Primaria Leer, escribir y descomponer números de hasta nueve cifras Aproximar números naturales a distintos órdenes. Comparar y ordenar números de hasta

Más detalles

Partes de un Tipo Abstracto de Datos. Introducción a la Computación (Matemática) TAD Fecha

Partes de un Tipo Abstracto de Datos. Introducción a la Computación (Matemática) TAD Fecha Partes de un Tipo Abstracto de Datos Introducción a la Computación (Matemática) Primer Cuatrimestre de 2015 Tipos Abstractos de Datos Parte pública: Disponible para el usuario externo. Nombre y tipos paramétricos

Más detalles

Demostrando cotas inferiores: Arboles de decisión

Demostrando cotas inferiores: Arboles de decisión Demostrando cotas inferiores: Arboles de decisión De la misma forma que la técnica basada en la mejor estrategia del adversario, vamos a utilizar los árboles de decisión para establecer una cota inferior

Más detalles

Introducción a la computación. Carlos Lopez Pombo

Introducción a la computación. Carlos Lopez Pombo Introducción a la computación Carlos Lopez Pombo Estado Se denomina estado en un modelo de cómputo a un punto en la ejecución de un programa en dicho modelo. En el modelo de Von Neumann esto responde al

Más detalles

UNIDAD 1. Números naturales y enteros 1º ESO. Contenidos, objetivos y criterios de evaluación DEPARTAMENTO DE MATEMÁTICAS

UNIDAD 1. Números naturales y enteros 1º ESO. Contenidos, objetivos y criterios de evaluación DEPARTAMENTO DE MATEMÁTICAS UNIDAD 1 Números naturales y enteros 1º ESO Contenidos, objetivos y criterios de evaluación ÍNDICE DE LA UNIDAD 1. Los números naturales. Definición y propiedades. 2. Un ejemplo de sistema de numeración.

Más detalles

a) Si ch tiene el valor X y numero el valor 5, cuál sería el efecto de ejecutar cada una de las siguientes llamadas al procedimiento:

a) Si ch tiene el valor X y numero el valor 5, cuál sería el efecto de ejecutar cada una de las siguientes llamadas al procedimiento: RELACION 2 DPTO. LENGUAJES Y CIENCIAS DE LA COMPUTACIÓN ESCCUELA TÉCNICA SUPERIOR DE INGENIEROS EN TELECOMUNICACIONES UNIVERSIDAD DE MÁLAGA SUBALGORITMOS 1- Considera el siguiente procedimiento: Algoritmo

Más detalles

UE#03 PROBLEMAS DE SOLUCIÓN DIRECTA FUNCIONES

UE#03 PROBLEMAS DE SOLUCIÓN DIRECTA FUNCIONES UE#03 PROBLEMAS DE SOLUCIÓN DIRECTA FUNCIONES Índice Taxonomía de problemas Problemas como funciones Concepto de función Especificación de una función. Cláusulas PRE/POST Funciones de usuario en Java Parámetros

Más detalles

Análisis y Diseño de Algoritmos (AyDA) Isabel Besembel Carrera

Análisis y Diseño de Algoritmos (AyDA) Isabel Besembel Carrera Análisis y Diseño de Algoritmos (AyDA) Isabel Besembel Carrera RECURSIÓN La recursión es una técnica fundamental en el diseño de algoritmos, que está basada en la solución de versiones más pequeñas del

Más detalles

Algoritmos y Estructuras de Datos I. Algoritmos y Estructuras de Datos I. Algoritmos y Estructuras de Datos I. Algoritmos y Estructuras de Datos I

Algoritmos y Estructuras de Datos I. Algoritmos y Estructuras de Datos I. Algoritmos y Estructuras de Datos I. Algoritmos y Estructuras de Datos I Algoritmos y Estructuras de Datos I Algoritmos y Estructuras de Datos I Objetivo: Aprender a programar en lenguajes imperativos. Segundo cuatrimestre de 2017 Departamento de Computación - FCEyN - UBA Especificación

Más detalles

Introducción a la Programación Orientada a Objetos DCIC - UNS 2018

Introducción a la Programación Orientada a Objetos DCIC - UNS 2018 2018 EJERCICIO 1. Procesar un número natural N a. Dadas las siguientes definiciones: PRACTICO N 3 Diseño de algoritmos iterativos y planteos recursivos Patrones de algoritmos Implementación en Java o La

Más detalles

Complejidad computacional. Algoritmos y Estructuras de Datos I. Complejidad computacional. Notación O grande

Complejidad computacional. Algoritmos y Estructuras de Datos I. Complejidad computacional. Notación O grande Complejidad computacional Algoritmos y Estructuras de Datos I Segundo cuatrimestre de 2015 Departamento de Computación - FCEyN - UBA Algoritmos - clase 10 Introducción a la complejidad computacional y

Más detalles

Informática Haskell Matemáticas Curso Pepe Gallardo Universidad de Málaga. Temario

Informática Haskell Matemáticas Curso Pepe Gallardo Universidad de Málaga. Temario Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Temario 1 Introducción y semántica operacional 2 Tipos predefinidos 3 Patrones y Definiciones de Funciones 4 Funciones

Más detalles

Curso de Estadística Básica

Curso de Estadística Básica Curso de SESION 3 MEDIDAS DE TENDENCIA CENTRAL Y MEDIDAS DE DISPERSIÓN MCC. Manuel Uribe Saldaña MCC. José Gonzalo Lugo Pérez Objetivo Conocer y calcular las medidas de tendencia central y medidas de dispersión

Más detalles

DISEÑO ESTRUCTURADO USANDO HERRAMIENTAS DE

DISEÑO ESTRUCTURADO USANDO HERRAMIENTAS DE DISEÑO ESTRUCTURADO USANDO HERRAMIENTAS DE REPRESENTACIÓN DE ALGORITMOS PSEUDOCÓDIGO El pseudocódigo es una herramienta de programación en la que las instrucciones se escriben en palabras similares al

Más detalles

Algoritmos y Estructuras de Datos Curso 04/05. Ejercicios

Algoritmos y Estructuras de Datos Curso 04/05. Ejercicios 35. Sean A= {1, 2, 3, 7, 8} y B= {3, 4, 5, 7, 9}, mostrar la ejecución y los resultados de las siguientes operaciones, suponiendo una representación con arrays de booleanos y con listas de elementos (ordenadas

Más detalles

23. Ordenación de vectores (tablas) Diego Gutiérrez

23. Ordenación de vectores (tablas) Diego Gutiérrez 23. Ordenación de vectores (tablas) 1 O cómo evitar tener que buscar una aguja en un pajar Ordenación 3 Ordenación O cómo evitar tener que buscar una aguja en un pajar Cómo buscamos una palabra en un diccionario?

Más detalles

Tema 1. ORDENACIÓN, BÚSQUEDA E INTERCALACIÓN INTERNA (Algoritmos)

Tema 1. ORDENACIÓN, BÚSQUEDA E INTERCALACIÓN INTERNA (Algoritmos) Tema 1. ORDENACIÓN, BÚSQUEDA E INTERCALACIÓN INTERNA (Algoritmos) 1. Declaraciones previas Para los algoritmos que aparecen a continuación se supone que se han realizado las siguientes declaraciones globales:

Más detalles

Tipos de datos y clases de tipos

Tipos de datos y clases de tipos Tipos de datos y clases de tipos Taller de Álgebra I Verano 2017 Tipos de datos Tipo de dato Un conjunto de valores a los que se les puede aplicar un conjunto de funciones. Ejemplos 1 Integer = (Z, {+,,,

Más detalles

Abstracción de Datos y

Abstracción de Datos y Capítulo 3 Abstracción de Datos y Números El cómputo numérico ha sido tradicionalmente ignorado por la comunidad de Lisp. Hasta antes del Common Lisp nadie había ideado una estrategia detallada para ordenar

Más detalles

Práctica 4. Contenido: Estructuras de control iterativas (while, do-while, for). Sentencias break y continue.

Práctica 4. Contenido: Estructuras de control iterativas (while, do-while, for). Sentencias break y continue. CI-2125 Computación I Práctica 4 Contenido: Estructuras de control iterativas (while, do-while, for). Sentencias break y continue. 1. Suponga que un estudiante cambia 5 barajitas en un día. Cada día siguiente

Más detalles

SOLUCIONES DE LOS EJERCICIOS DE APLICACIÓN

SOLUCIONES DE LOS EJERCICIOS DE APLICACIÓN SOLUCIONES DE LOS EJERCICIOS DE APLICACIÓN UNIDAD TEMÁTICA : ARITMÉTICA Y ÁLGEBRA Ejercicio de Aplicación. (Potencias y Raíces) En la cubierta de un portacontenedores, se sitúan un cierto número de contenedores

Más detalles

Bloque 1. Conceptos y técnicas básicas en programación

Bloque 1. Conceptos y técnicas básicas en programación Bloque 1. Conceptos y técnicas básicas en programación 1. Introducción 2. Datos y expresiones. Especificación de algoritmos 3. Estructuras algorítmicas básicas 4. Iteración y recursión 5. Iteración y recursión

Más detalles

Qué es una computadora? Qué es un algoritmo? Bibliografía. Dispositivo para manipulación simbólica que ejecuta cualquier algoritmo.

Qué es una computadora? Qué es un algoritmo? Bibliografía. Dispositivo para manipulación simbólica que ejecuta cualquier algoritmo. Algoritmos y Estructuras de Datos I Algoritmos y Estructuras de Datos I Segundo cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Especificación - clase 1 Introducción a la especificación

Más detalles

Algoritmo de Euclides y ecuaciones de congruencia

Algoritmo de Euclides y ecuaciones de congruencia Algoritmo de Euclides y ecuaciones de congruencia Taller de Álgebra I Primer cuatrimestre de 2017 Algoritmo de Euclides El algoritmo de Euclides calcula el máximo común divisor entre dos números a, b Z.

Más detalles

Práctica 8 Programación Funcional - Tipos Compuestos

Práctica 8 Programación Funcional - Tipos Compuestos Práctica 8 Programación Funcional - Tipos Compuestos Algoritmos y Estructura de Datos I Segundo Cuatrimestre 2010 1 Tipos Compuestos En los ejercicios de tipos compuestos NO TIENEN que definir los tipos

Más detalles

Ordenamiento de un arreglo. Algoritmos y Estructuras de Datos I. Demostración. Cota inferior de complejidad tiempo para sorting

Ordenamiento de un arreglo. Algoritmos y Estructuras de Datos I. Demostración. Cota inferior de complejidad tiempo para sorting Ordenamiento de un arreglo Algoritmos y Estructuras de Datos I Segundo cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Algoritmos - clase 12 Algoritmos de ordenamiento, segunda parte Tenemos

Más detalles

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Algoritmos y programas. Algoritmos y Estructuras de Datos I Algoritmos y programas Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2012 Departamento de Computación - FCEyN - UBA Programación funcional - clase 1 Funciones Simples - Recursión - Tipos de

Más detalles

Especificación de TAD. Lección 2

Especificación de TAD. Lección 2 Especificación de TAD Lección 2 Esquema Características generales de una especificación Especificación algebraica Especificación no formal Lectura recomendada: sección 1.3 del libro de Z.J. Hernández et

Más detalles

Primer Cuatrimestre 2018 Resolución de Problemas y Algoritmos

Primer Cuatrimestre 2018 Resolución de Problemas y Algoritmos Lenguaje de Diseño Primer Cuatrimestre 2018 Resolución de Problemas y Algoritmos 1 Programación Modular Programación Estructurada Programas fáciles de leer y modificar Técnicas de Diseños Dividir y Conquistar

Más detalles

Tema 2. Algoritmos y programas. Informática Grado en Física Universitat de València.

Tema 2. Algoritmos y programas. Informática Grado en Física Universitat de València. Francisco Grimaldo Moreno Ariadna Fuertes Seder Tema 2 Algoritmos y programas Informática Grado en Física Universitat de València Ariadna.Fuertes@uv.es Francisco.Grimaldo@uv.es 1 Concepto de algoritmo

Más detalles

Estructuras de Datos. 14 de junio de Apellidos

Estructuras de Datos. 14 de junio de Apellidos Ejercicio 1) (3 puntos). Dado el TAD Pila de Números Enteros con las siguientes operaciones: boolean pilavacia (); void apilar (int x); int desapilar () throws PilaVacia; SE PIDE: Codificar un método estático

Más detalles

Programación imperativa. Algoritmos y Estructuras de Datos I. Lenguaje C. Segundo cuatrimestre de 2014

Programación imperativa. Algoritmos y Estructuras de Datos I. Lenguaje C. Segundo cuatrimestre de 2014 Programación imperativa Algoritmos y Estructuras de Datos I Segundo cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Programación imperativa - clase 4 Modelo de cómputo: Un programa consta

Más detalles

Tema 2: Introducción a Scheme. Sesión 4: Introducción a Scheme (2)

Tema 2: Introducción a Scheme. Sesión 4: Introducción a Scheme (2) Tema 2: Introducción a Scheme Sesión 4: Introducción a Scheme (2) Referencias DrRacket (http://racket-lang.org/) A brief tour of DrScheme (http://www.plt-scheme.org/software/drscheme/ tour/) Structure

Más detalles

UNIDAD 8 Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros.

UNIDAD 8 Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros. Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros. Procedimientos para asignación y liberación de memoria. Tipos de datos recursivos.

Más detalles

Ejercicios Scheme. Para cada función escriba su contrato, descripción, ejemplos y los tests necesarios, antes de su implementación.

Ejercicios Scheme. Para cada función escriba su contrato, descripción, ejemplos y los tests necesarios, antes de su implementación. Ejercicios Scheme Para cada función escriba su contrato, descripción, ejemplos y los tests necesarios, antes de su implementación. 1 Para soltar la mano 1. Represente la siguiente expresión en Scheme:

Más detalles

DISEÑO ESTRUCTURADO. Herramientas de representación de algoritmos

DISEÑO ESTRUCTURADO. Herramientas de representación de algoritmos DISEÑO ESTRUCTURADO Herramientas de representación de algoritmos DISEÑO ESTRUCTURADO Técnica para desarrollar algoritmos Fáciles de escribir Leer Verificar Modificar ALGORITMO ESTRUCTURADO Tiene un solo

Más detalles

Estructuración del programa en partes más pequeñas y sencillas

Estructuración del programa en partes más pequeñas y sencillas Introducción Estructuración del programa en partes más pequeñas y sencillas Modularización Propósito único Identificable Reusable Mayor claridad: programación, depuración, etc. Construcción de librerías

Más detalles

1) Indique los primeros elementos de los siguientes conjuntos numéricos: Números Naturales: IN = {

1) Indique los primeros elementos de los siguientes conjuntos numéricos: Números Naturales: IN = { Clase-04 Temas: Operatoria entre números naturales (IN) y enteros (Z), múltiplos, divisores, mínimo común múltiplo (M.C.M.) y máximo común divisor (M.C.D.). 1) Indique los primeros elementos de los siguientes

Más detalles

Tema 3. Patrones y Definiciones de Funciones

Tema 3. Patrones y Definiciones de Funciones Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 3. Patrones y Definiciones de Funciones 3.1 Comparación de Patrones Patrones constantes Patrones

Más detalles

01. Identifica, en un conjunto de números, los que son enteros.

01. Identifica, en un conjunto de números, los que son enteros. 3.3.4 Criterios específicos de evaluación. 01. Identifica, en un conjunto de números, los que son enteros. 02. Coloca distintos números naturales y enteros en un diagrama que representa a los conjuntos

Más detalles

EJERCICIOS DE POLINOMIOS

EJERCICIOS DE POLINOMIOS EJERCICIOS DE POLINOMIOS NOMBRE:... Nº:... º....- Escribe el grado, el número de términos y el nombre (monomio, binomio, trinomio, polinomio) que recibe cada una de las siguientes expresiones algebraicas:

Más detalles

Conjuntos y combinatoria

Conjuntos y combinatoria Conjuntos y combinatoria Taller de Álgebra I 2do Cuatrimestre 2017 Conjuntos type Definamos un renombre de tipos para conjuntos: type Set a = [a] Otra forma de escribir lo mismo pero más descriptivo. Podemos

Más detalles

Ejercicio 2 Considere la representación para Lista de Naturales y Árbol Binario de Naturales de la Figura 1.

Ejercicio 2 Considere la representación para Lista de Naturales y Árbol Binario de Naturales de la Figura 1. Ejercicios Resueltos del Práctico 4 Ejercicio 2 Considere la representación para Lista de Naturales y Árbol Binario de Naturales de la Figura 1. 1 2 struct NodoLista { 3 int elem ; 4 NodoLista * sig ;

Más detalles

Lista de problemas: ciclos y funciones en el lenguaje MATLAB

Lista de problemas: ciclos y funciones en el lenguaje MATLAB Lista de problemas: ciclos y funciones en el lenguaje MATLAB Esta lista de problemas está compuesta para probar si el estudiante tiene ciertas habilidades básicas de programación con arreglos, funciones

Más detalles

Algoritmos y Estructuras de Datos Ingeniería en Informática

Algoritmos y Estructuras de Datos Ingeniería en Informática 2.1.Sean A= {1, 2, 3, 7, 8} y B= {3, 4, 5, 7, 9}, mostrar la ejecución y los resultados de las siguientes operaciones, suponiendo una representación con arrays de booleanos y con listas de elementos (ordenadas

Más detalles

Tema 3. Patrones y Definiciones de Funciones

Tema 3. Patrones y Definiciones de Funciones Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Tema 3. Patrones y Definiciones de Funciones 3.1 Comparación de Patrones Patrones constantes Patrones para listas Patrones

Más detalles

Tecnología de la Programación

Tecnología de la Programación Tecnología de la Programación Diseño por contrato David Cabrero Souto Facultad de Informática Universidade da Coruña Curso 2007/2008 Introducción Pruebas de unidad Especificación formal de las propiedades?

Más detalles

Guía 2: Listas, recursión e inducción

Guía 2: Listas, recursión e inducción Introducción a los Algoritmos - 2do cuatrimestre 2014 Guía 2: Listas, recursión e inducción Docentes: Walter Alini, Luciana Benotti En esta guía comenzaremos a trabajar con listas Para familiarizarnos

Más detalles

Algoritmos y Estructuras de Datos I. Especificar problemas versus definir funciones auxiliares. Auxiliares

Algoritmos y Estructuras de Datos I. Especificar problemas versus definir funciones auxiliares. Auxiliares Lenguaje de especificación Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2012 Departamento de Computación - FCEyN - UBA Especificación - clase 3 Lenguaje de especificación Sirve para especificar

Más detalles

Introducción a la Computación (Matemática)

Introducción a la Computación (Matemática) Introducción a la Computación (Matemática) Primer Cuatrimestre de 2016 Tipos Abstractos de Datos 1 Problema: Agenda Queremos programar una agenda de contactos. De cada persona nos interesa guardar: Nombre

Más detalles

Y LOS ELEMENTOS QUE FORMAN UN POLINOMIO. Nombre: Curso: Fecha: F Cómo es el polinomio, completo o incompleto?

Y LOS ELEMENTOS QUE FORMAN UN POLINOMIO. Nombre: Curso: Fecha: F Cómo es el polinomio, completo o incompleto? REPASO Y APOYO OBJETIVO 1 3 RECONOCER EL GRADO Y LOS ELEMENTOS QUE ORMAN UN POLINOMIO Nombre: Curso: echa: Un polinomio es una expresión algebraica formada por la suma algebraica de monomios, que son los

Más detalles

Programación Dinámica

Programación Dinámica , Algoritmos y Programación 6 de Abril de 2010 Alejandro Deymonnaz Definiciones Divide and Conquer Deiniciones previas Problema recursivo Un problema recursivo es un problema que se puede resolver en base

Más detalles

Tema 2. Tipos predefinidos

Tema 2. Tipos predefinidos Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 2. Tipos predefinidos 2.1 Tipos simples predefinidos El tipo Bool El tipo Int El tipo Integer

Más detalles