Manos a la obra: Recursión, división y listas
|
|
- Germán Coronel Gómez
- hace 6 años
- Vistas:
Transcripción
1 Manos a la obra: Recursión, división y listas Taller de Álgebra I Cuatrimestre de verano de 2015
2 Calentando motores La clase pasada vimos ejemplos de definiciones recursivas. Hoy vamos a continuar con el tema. Recordemos un ejemplo: reverso :: [ Integer ] -> [ Integer ] reverso [] = [] reverso xs = ( reverso ( tail xs)) ++ [ head xs] Truco, cómo pensar recursivamente con listas Dada una lista cualquiera: [1,2,3,4,5] Si ya tengo el resultado recursivo sobre la cola de la lista, es decir el reverso de [2,3,4,5], cómo puedo combinarlo con la cabeza de la lista (1) para obtener el resultado que quiero? Implementar la siguiente función potencia :: Float -> Integer -> Float que calcule la potencia: potencia a n a n (n 0). Debe utilizarse el producto y no ** ni ^ ni ^ ^
3 Algoritmo de división Teorema: Dados a, d Z, d 0, existen únicos q, r Z tales que a = qd + r, 0 r < d. Demostración: (caso a 0, d > 0). Por inducción en a. Si 0 a < d, tomamos q = 0, r = a. Si no, dividimos a d por d. Eso da un cociente q y un resto r. Tomamos r = r, q = q + 1. Implementar la siguiente función division :: Integer -> Integer -> (Integer, Integer) division a d (q, r) Debe funcionar para a 0, d > 0 y no se pueden usar div, mod ni /.
4 Algoritmo de división division :: Integer -> Integer -> ( Integer, Integer ) division a d a < d = (0, a) otherwise = ( fst ( division (a- d) d) + 1, snd ( division (a-d) d)) Se puede no poner dos veces division (a-d) d? Sí: division :: Integer -> Integer -> ( Integer, Integer ) division a d a < d = (0, a) otherwise = ( fst qr + 1, snd qr ) where qr = division (a- d) d
5 Primos Un número p Z es primo si tiene 4 divisores. Un entero p > 1 es primo si ningún natural k tal que 1 < k < p divide a p. Se puede hacer una función esprimo :: Integer -> Bool que diga si un número es primo o no? Una posibilidad sería buscar todos los divisores. Algo como divisores(n) = {k Z 1 k n y k n} Esto se puede hacer en Haskell de forma directa, aunque todavía no vimos cómo. Podemos sin embargo definir una lista parcial de divisores: divparcial(n, m) = {k Z 1 k m y k n} Implementar las siguientes funciones divparcial :: Integer -> Integer -> [Integer] Tiene que funcionar bien divparcial n m cuando m n. Utilizando divparcial, programar divisores :: Integer -> [Integer] Utilizando divisores, programar esprimo :: Integer -> Bool
6 Primos divparcial :: Integer -> Integer -> [ Integer ] divparcial n 1 = [1] divparcial n m mod n m == 0 = m : divparcial n (m -1) otherwise = divparcial n (m -1) divisores :: Integer -> [ Integer ] divisores n = divparcial n n esprimo :: Integer -> Bool esprimo n = length ( divisores n) == 2
7 Ejercicios Implementar mult, que sirve para multiplicar matrices de 2 2; mult :: ( Float, Float, Float, Float ) -> ( Float, Float, Float, Float ) -> ( Float, Float, Float, Float ) Usando mult, implementar una función que sirva para calcular potencias de matrices de 2 2. Adaptar esprimo para todo p Z. Adaptar division para a < 0 y/o d < 0. Observación: las funciones div y mod de Haskell no coinciden con el algoritmo de división cuando d < 0. Ver también quot y rem. Implementar notienedivisoreshasta :: Integer -> Integer -> Bool notienedivisoreshasta m n da True sii ningún número entre 2 y m divide a n. Utilizando notienedivisoreshasta, programar esprimo :: Integer -> Bool
8 Algoritmo de Euclides El Algoritmo de Euclides calcula el máximo común divisor entre dos números a, b Z +. Se basa en que si a, b Z y q Z es un número cualquiera, entonces (a : b) = (a + qb : b). Si q y r son el cociente y el resto de la división de a por b, tenemos a = qb + r, entonces a qb = r. Por lo tanto, (a : b) = (a qb : b) = (r : b) = (b : r) Por ejemplo, para calcular (108 : 30), se hace: 1 = (108 : 30) -- Dividimos 108 por 30, q = 3, r = 18 2 = (30 : 18) -- Dividimos 30 por 18, q = 1, r = 12 3 = (18 : 12) -- q = 1, r = 6 4 = (12 : 6) -- q = 2, r = 0 5 = (6 : 0) 6 = 6
9 Algoritmo de Euclides Para hacer Programar en Haskell mcd :: Integer -> Integer -> Integer que dé el mcd. El peor caso del algoritmo se obtiene cuando a y b son dos números consecutivos de la sucesión de Fibonacci (Lamé, 1844). El número de divisiones que realiza el algoritmo nunca supera 5 veces el número de dígitos de a y b, con lo cual la cantidad de llamadas recursivas está acotada por 5 log 10 (max{ a, b }).
10 Ejercicios sobre Listas Implementar las siguientes funciones pertenece :: Integer -> [Integer] -> Bool que indica si un elemento aparece en la lista. Implementar la función hayrepetidos :: [Integer] -> Bool que indica si una lista tiene elementos repetidos. menores :: Integer -> [Integer] -> [Integer] que calcula los elementos de la lista que son menores al primer parámetro. Últimas quitar :: Integer -> [Integer] -> [Integer] elimina la primera aparición del elemento en la lista. maximo :: [Integer] -> Integer que dada una lista no vacía calcula el mayor elemento de la misma.
11 Cambio de base en Haskell Problema: Dados a, b Z + con b > 1, escribir el número a en base b. Por ejemplo... 1 Si a = 10 y b = 2, entonces la respuesta es Si a = 17 y b = 3, entonces la respuesta es Si a = 145 y b = 10, entonces la respuesta es Implementar en Haskell La función enbase :: Integer -> Integer -> [Integer] Esta función toma un número y lo transforma a la base pasada como segundo parámetro. Para ello devuelve una lista representando al número. Ejemplo: enbase 3 17 [1,2,2]. La función debase :: Integer -> [Integer] -> Integer que toma una base y un número en forma de la lista de sus dígitos y devuelve el número. debase 3 [1,2,2] 17.
12 Ejercicios Parte 1: La conjetura del 196 Los números de Lychrel ( Tomemos un número natural cualquiera, por ejemplo el 180 Si damos vuelta sus cifras (081) y lo sumamos al original nos queda = 261 Ahora repetimos el proceso con el 261: = 423 Lo mismo con el 423: = 747. Un número capicúa! Será verdad que para cualquier natural, siempre llegamos a un número capicúa? Los llamados números de Lychrel son los números naturales en base 10 que no llegan a dar un número capicúa como resultado del proceso. Implementar La función capicuapara :: [Integer] -> [Integer] Que toma un número y realiza el proceso hasta que se consiga su número capicua asociado. Ejemplo: capicuapara [1,8,0] [7,4,7]. Preparar el ctrl+c y ejecutar capicuapara [1,9,6], qué ocurre?
13 Ejercicios Parte 2 1 Consideremos la sucesión t 1, t 2,..., tal que t n es la cantidad de llamadas recursivas del Algoritmo de Euclides cuando se ejecuta con a = F n y b = F n 1 (donde F n representa el n-ésimo número de Fibonacci). Escribir una función que tome como parámetro un entero n y que retorne t n. Como función preliminar, analizar cómo cambia la función mcd si uno quiere contar la cantidad veces que se llama a la recursión. 2 Escribir una función que cambie de base un número. Debe tomar dos enteros b1 y b2 y un entero a representado en base b1 (expresado como una lista de enteros) y retornar a en base b2 (también como una lista de enteros). 3 Escribir una función similar a maximo pero que retorne el mínimo. 4 (*) Escribir una función que indique si una lista está ordenada. 5 Escribir una función que elimine los repetidos, dejando sólo la última aparición de cada uno. 6 (*) Idem anterior pero dejando la primera aparición de cada uno. 7 Escribir una función que reciba dos listas ordenadas en forma no-decreciente, y que retorne una lista que contenga la unión de los elementos de las dos listas recibidas, y que también esté ordenada en forma no-decreciente. Por ejemplo, al pasarle [2, 3, 7] y [1, 3, 3, 9], debería reducir a [1, 2, 3, 3, 3, 7, 9]. 8 (difícil) Escribir una función que, dada una lista, retorne la misma pero ordenada de menor a mayor.
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 detallesDivisibilidad 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 detallesListas 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 detallesAlgoritmo 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 detallesDivisibilidad 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 detallesTipos 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 detallesNúmeros primos y criterios de divisibilidad
Números primos y criterios de divisibilidad Taller de Álgebra I 1er cuatrimestre de 2014 Verificando si un número es primo Ejercicio: ( para hacer ahora!) Escribir una función que determine si un número
Más detallesTipos 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 detallesEuclides Extendido y Teorema Chino del Resto
Euclides Extendido y Teorema Chino del Resto Taller de Álgebra I Segundo cuatrimestre de 2013 Lema de Bézout Recordemos este lema: Lema (Étienne Bézout) Sean a, b Z, alguno distinto de 0. Entonces existen
Más detallesGuardas 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 detallesTipos 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 detallesTest de primalidad probabiĺıstico
Test de primalidad probabiĺıstico Taller de Álgebra I Segundo cuatrimestre de 2013 Pequeño Teorema de Fermat Teorema (Pierre de Fermat, 1640) Sea p N primo, y a Z, tal que p a. Entonces a p 1 1 (mod p).
Más detallesProgramació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 detallesConjuntos 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 detallesProgramació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 detallesNúmeros primos en Haskell
Números primos en Haskell Taller de Álgebra I Segundo cuatrimestre de 2014 Logo data Direccion = Norte Sur Este Oeste deriving Show type Tortuga = ( Pos, Direccion ) type Pos = (Int, Int ) Ejercicios 1
Más detallesEl Algoritmo de Euclides
El Algoritmo de Euclides Pablo L. De Nápoli Departamento de Matemática Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires 25 de abril de 2014 Pablo L. De Nápoli (Departamento de Matemática
Más detallesPara 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 detallesInformá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 detalles1.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 detallesInformá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 detallesAlgoritmos 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 detallesMecanismo de Reducción
Mecanismo de Reducción Taller de Álgebra I 1er Cuatrimestre 2017 Repaso: Qué vimos hasta ahora? Programar para qué? Implementar algoritmos que solucionen problemas. Pensamiento algorítmico Ver los problemas
Más detallesÁlgebra y Matemática Discreta
Álgebra y Matemática Discreta Sesión de Teoría 1 (c) 2013 Leandro Marín, Francisco J. Vera, Gema M. Díaz 16 Sep 2013-22 Sep 2013 Los Números Enteros El Conjunto Z Vamos a empezar por la aritmética más
Más detallesPolinomios. Taller de Álgebra I. Segundo cuatrimestre de 2013
Polinomios Taller de Álgebra I Segundo cuatrimestre de 2013 Polinomios Vamos a pensar en un polinomio como una serie de coeficientes. Para hacerlo más fácil, vamos a pensar específicamente en Z[X ]. Es
Más detallesn! = 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 detallesTema 6: Funciones recursivas
Tema 6: Funciones recursivas Programación declarativa (2009 10) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla Tema 6: Funciones
Más detallesComplejidad de algoritmos recursivos
Tema 3. Complejidad de algoritmos recursivos 1. INTRODUCCIÓN... 1 CLASIFICACIÓN DE FUNCIONES RECURSIVAS... 1 DISEÑO DE FUNCIONES RECURSIVAS... 2 2. VENTAJAS E INCONVENIENTES DE LA RECURSIVIDAD... 4 3.
Más detalles3er Encuentro de Educación en
3er Encuentro de Educación en Cienciadela 3er Encuentro de Educación en Cienciadela Formación de Profesores de Ciencia i de la 3er Encuentro de Educación en Cienciadela Formación de Profesores Vinculo
Más detallesPattern matching + Tipos enumerados
Pattern matching + Tipos enumerados Taller de Álgebra I Verano 2017 Pattern matching Pattern matching El pattern matching es un mecanismo que nos permite asociar una definición de una función solo a ciertos
Más detallesPolinomios. Taller de Álgebra I. Verano 2017
Polinomios Taller de Álgebra I Verano 2017 Polinomios En esta clase vamos a trabajar con polinomios. Para hacer las cosas fáciles, trabajaremos en R[x]. Es decir, en Float[x]. Hay muchas maneras de representar
Más detallesPrá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 detallesAlgoritmos 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 detallesIntroducción a la Teoría de Números
Introducción a la Teoría de Números Elaborado por: Jeff Maynard Guillén Eliminatoria II Julio, 2011 Introducción a la Teoría de Números A manera de repaso vamos a recordar algunos conjuntos N = {1, 2,
Más detallesTema 3: Tipos y clases
Tema 3: Tipos y clases Informática (2016 17) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla 2 / 32 IM Tema 3: Tipos y clases
Más detallesTema 3: Tipos y clases
Tema 3: Tipos y clases Informática (2017 18) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla 2 / 32 IM Tema 3: Tipos y clases
Más detallesTema 3: Tipos y clases
Tema 3: Tipos y clases 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 Sevilla Tema 3: Tipos y clases
Más detallesPráctica 5.- Recursividad
Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Computación Programación Avanzada en Java Prim. 2009 Práctica 5.- Recursividad Datos de la práctica Fecha 6 de marzo de 2009 Conceptos
Más detallesTema 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 detallesCapitulo 4. Introducción a Haskell. Instalación de Haskell. Primeros pasos con Haskell.
Capitulo 4 Introducción a Haskell Es un software libre, fácil de obtener y de instalar, y que además tiene muchísimo material de lectura para descarga gratuita en Internet. Es por estos motivos que fue
Más detallesTema 1 Aritmética entera
Tema 1 Aritmética entera Tema 1 Aritmética entera 1.1 Los números enteros 1.1.1 Relaciones de orden Una relación en un conjunto A es un subconjunto R del producto cartesiano AxA. Se dice que dos elementos
Más detallesTema 3: Tipos y clases
Tema 3: Tipos y clases Programación declarativa (2009 10) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla Tema 3: Tipos y clases
Más detallesALGEBRA I - Práctica N 4 (Primera parte) - Primer cuatrimestre de Números enteros
ALGEBRA I - Práctica N 4 (Primera parte) - Primer cuatrimestre de 2002 Números enteros Ejercicio. Dados a, b y c números enteros, decidir cuáles de las siguientes afirmaciones son verdaderas y cuáles son
Más detallesBloque 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 detallesEnteros Primera parte.
Capítulo 3 Enteros Primera parte. Die ganzen Zahlen hat der liebe Gott gemacht, alles andere ist Menschenwerk. (Dios hizo los números enteros, todo lo demás es obra del hombre.) Leopold Kronecker (1823-1891),
Más detallesPrá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 detallesEstructura de datos y de la información Boletín de problemas - Tema 9
Estructura de datos y de la información Boletín de problemas - Tema 9 1. Dada la siguiente función recursiva: void F(char c) { if (( A
Más detallesLa recursividad forma parte del repertorio para resolver problemas en Computación y es de los métodos más poderosos y usados.
RECURSIVIDAD La recursividad forma parte del repertorio para resolver problemas en Computación y es de los métodos más poderosos y usados. Los algoritmos recursivos ofrecen soluciones estructuradas, modulares
Más detallesEuclides extendido y Test de primalidad probabiĺıstico
Euclides extendido y Test de primalidad probabiĺıstico Taller de Álgebra I Verano de 2014 Lema de Bézout Recordemos este lema: Lema (Étienne Bézout) Sean a, b Z, alguno distinto de 0. Entonces existen
Más detallesGuí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 detallesTipos 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 detallesESCUELA PREPARATORIA OFICIAL NO.16 MATERÍA: PENSAMIENTO NUMÉRICO Y ALGEBRAICO I
ARITMÉTICA 1. Números naturales 2. Divisibilidad 3. Números enteros 4. Números decimales 5. Fracciones y números racionales 6. Proporcionalidad 7. Sistema métrico decimal 8. Sistema sexagesimal 9. Números
Más detallesTipos de datos en S. Lógica y Computabilidad. Codificación de variables y etiquetas de S. Codificación de programas en S
Tipos de datos en S Lógica y Computabilidad Verano 2011 Departamento de Computación - FCEyN - UBA Computabilidad - clase 5 Codificación de programas, Halting problem, diagonalización, tesis de Church,
Más detallesIntroducción a la Matemática Discreta
Introducción a la Matemática Discreta Aritmética Entera Luisa María Camacho Camacho Introd. a la Matemática Discreta 1 / 36 Introducción a la Matemática Discreta Temario Tema 1. Teoría de Conjuntos. Tema
Más detallesTEORÍA DE DIVISIBILIDAD
TEORÍA DE DIVISIBILIDAD MÚLTIPLOS Y DIVISORES.- Dados dos números naturales a y b, con a b, se dice que a es divisible por b o que a es múltiplo de b o que b es divisor de a, si la división de a : b es
Más detallesAlgoritmos en teoría de números
Algoritmos en teoría de números IIC2283 IIC2283 Algoritmos en teoría de números 1 / 92 Para recordar: aritmética modular Dados dos números a, b Z, si b > 0 entonces existen α, β Z tales que 0 β < b y a
Más detallesDivide & Conquer. Herman Schinca. Clase de Junio de 2011
Divide & Conquer Herman Schinca Clase 20 7 de Junio de 2011 Divide y vencerás Idea aplicable a muchas situaciones de la vida. Origen histórico atribuído a Julio César en relación a sus estrategias militares.
Más detallesSecuencias Calculadas
Secuencias Calculadas Estructuras de Iteración y Recursividad Prof. Hilda Contreras Programación 1 hildac.programacion1@gmail.com Secuencias Calculadas Se aplican a los problemas donde los elementos de
Más detallesEnteros Primera parte.
Capítulo 3 Enteros Primera parte. Die ganzen Zahlen hat der liebe Gott gemacht, alles andere ist Menschenwerk. (Dios hizo los números enteros, todo lo demás es obra del hombre.) Leopold Kronecker (1823-1891),
Más detalles1. Escribir un algoritmo que resuelva A-B*((B+C) / (C-C 2 ). Considerar que no es posible la división por 0, detectar este caso y salvar el error.
T.P ALGORITMOS 1. Escribir un algoritmo que resuelva A-B*((B+C) / (C-C 2 ). Considerar que no es posible la división por 0, detectar este caso y salvar el error. 2. Escribir un algoritmo que lea tres números
Más detallesTrabajo Práctico 6 Funciones, Procedimientos y División de Problemas
Trabajo Práctico 6 Funciones, Procedimientos y División de Problemas Ejercicio 1: Considere definida la función Invertir. function Invertir( num: integer ):integer; {Objetivo: Invierte el orden de los
Más detallesAlgoritmo de Euclides
Algoritmo de Euclides Melanie Sclar Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires AED III Melanie Sclar (UBA) Algoritmo de Euclides AED III 1 / 21 Ejercicio 2.8 de la práctica Ejercicio
Más detallesRecursión. Capítulo 4
Recursión Capítulo 4 Introducción La recursión o recursividad es un concepto amplio, con muchas variantes, y difícil de precisar con pocas palabras.. Actividades Cotidianas; fotografía donde se observa
Más detallesÁlgebra I Práctica 3 - Números enteros (Parte 1)
Divisibilidad Álgebra I Práctica 3 - Números enteros (Parte 1 1. Decidir cuáles de las siguientes afirmaciones son verdaderas para todo a, b, c Z i a b c a c y b c, ii 4 a a, iii a b a ó b, iv 9 a b 9
Más detallesGuía 2: Funciones, listas, recursión e inducción
Introducción a los Algoritmos - 1er cuatrimestre 2013 Guía 2: Funciones, listas, recursión e inducción El objetivo de los siguientes ejercicios es introducirnos en la programación funcional, es decir,
Más detallesExámenes de Programación funcional con Haskell ( )
Exámenes de Programación funcional con Haskell (2009 2014) José A. Alonso (coord.) y Gonzalo Aranda, Antonia M. Chávez, Andrés Cordón, María J. Hidalgo, Francisco J. Martín Miguel A. Martínez, Ignacio
Más detallesTema 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 detallesAbstracción de procedimientos
Abstracción de procedimientos 1.- Consideremos ABN (árboles binarios numéricos) sin nodos repetidos. Denimos los siguientes conceptos: Se pide: Dados dos ABN, A y B, decimos que B es SUBARBOL PRINCIPAL
Más detallesEl algoritmo de Euclides con residuos de menor valor absoluto
Miscelánea Matemática 6 05) -9 SMM El algoritmo de Euclides con residuos de menor valor absoluto Jesús Efrén Pérez Terrazas, Luis Felipe Solís Sansores, Emmanuel Vázquez Cetina Facultad de Matemáticas
Más detallesPrácticas de Programación Declarativa ( )
Prácticas de Programación Declarativa (2007 08) José A. Alonso Jiménez Grupo de Lógica Computacional Dpto. de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Sevilla, 16 de
Más detallesAritmética entera. AMD Grado en Ingeniería Informática. AMD Grado en Ingeniería Informática (UM) Aritmética entera 1 / 15
Aritmética entera AMD Grado en Ingeniería Informática AMD Grado en Ingeniería Informática (UM) Aritmética entera 1 / 15 Objetivos Al finalizar este tema tendréis que: Calcular el máximo común divisor de
Más detallesÁlgebra Lineal y Estructuras Matemáticas. J. C. Rosales y P. A. García Sánchez. Departamento de Álgebra, Universidad de Granada
Álgebra Lineal y Estructuras Matemáticas J. C. Rosales y P. A. García Sánchez Departamento de Álgebra, Universidad de Granada Capítulo 2 Aritmética entera y modular 1. Los números enteros Dado un entero
Más detallesGuia para el exámen parcial 1 - unas soluciones
Matemáticas elementales, Demat-UG, ago-dic, 2017 Guia para el exámen parcial 1 - unas soluciones Fecha del exámen: miercoles, 4 oct, 2017. Profesor: Gil Bor, CIMAT. Definiciones: La representación de a
Más detallesDivisibilidad (en N = N {0})
Divisibilidad (en N = N {0}) Dados dos números naturales a y c, se dice que c es un divisor de a si existe q N tal que a = q c (es decir, si en la división a c el resto es 0). c a significa que c es divisor
Más detallesEspecificación de Problemas
Especificación de Problemas Eduardo Bonelli Departamento de Ciencia y Tecnología, UNQ ebonelli@unq.edu.ar 12 de septiembre de 2007 Especificación de Problemas Ejemplos Ejemplo de Problema ordenar, en orden
Más detallesTema 11. Listas infinitas
Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 11. Listas infinitas 11.1 Listas infinitas 11.2 La criba de Eratóstenes 11.3 Redes de procesos
Más detallesEstructuras de Datos y de la Información Ingeniería Técnica en Informática de Gestión. Curso 2007/2008 Ejercicios del Tema 2
Estructuras de Datos y de la Información Ingeniería Técnica en Informática de Gestión. Curso 2007/2008 Ejercicios del Tema 2 Diseño de algoritmos recursivos 1. Dado un vector de enteros de longitud N,
Más detallesÁrboles generales. Un árbol es una estructura no lineal acíclica utilizada para organizar información de forma eficiente. La definición es recursiva:
Capítulo 9. Programación con Árboles 107 Árboles Árboles generales Un árbol es una estructura no lineal acíclica utilizada para organizar información de forma eficiente. La definición es recursiva: Un
Más detallesTemario. Tipos de recursión. Eficiencia y recursión
RECURSION Temario Tipos de recursión Eficiencia y recursión Tipos de RECURSION Según desde donde se realice el llamado recursivo: Directa: la función se llama a sí misma. Indirecta: la función A llama
Más detallesIntroducción a Haskell. Cecilia Manzino
Paradigmas de programación Un paradigma de programación representa un estilo particular o filosofía para la construcción del software. Los más comunes dan lugar a los siguientes tipos de programación:
Más detallesDIVISIBILIDAD NÚMEROS NATURALES
DIVISIBILIDAD NÚMEROS NATURALES MÚLTIPLOS Un número a es múltiplo de otro b cuando es el resultado de multiplicarlo por otro número c. a = b c Ejemplo: 12 es múltiplo de 2, ya que resulta de multiplicar
Más detalles1. NUMEROS REALES a. Los Números Reales
1. NUMEROS REALES a. Los Números Reales Los números reales comprenden todo el campo de números que utilizamos en las matemáticas, a excepción de los números complejos que veremos en capítulos superiores.
Más detallesFUNDAMENTOS DE PROGRAMACIÓN TALLER No. 1 Profesor: Alvaro Ospina Sanjuan
FUNDAMENTOS DE PROGRAMACIÓN TALLER No. 1 Profesor: Alvaro Ospina Sanjuan 1. Escriba un programa que cambie cualquier suma de dinero hasta de 99 ctvs usando las monedas de denominación de 1 ctvs, 5 ctvs,
Más detalles11 Secuencias, Series y Probabilidad
Programa Inmersión, Verano 06 Notas escritas por Dr. M Notas del cursos. Basadas en los prontuarios de MATE 300 y MATE 303 Clase #0: lunes, 7 de junio de 06. Secuencias, Series y Probabilidad. Continuación:
Más detallesANÁLISIS Y DISEÑO DE ALGORITMOS. PRACTICAS
ANÁLISIS Y DISEÑO DE ALGORITMOS. PRACTICAS 2004-2005 PRACTICA 1: MEDICIÓN DEL TIEMPO. ALGORITMOS DE ORDENACIÓN Crear un conjunto de funciones que permitan la medición del tiempo de ejecución de los programas,
Más detalles#include <stdio.h> float cubica(float numero) { float cubica; cubica = numero * numero * numero; return cubica; }
/*1. Crear una función que calcule el cubo de un número real (float). El resultado deberá ser otro número real. Probar esta función para calcular el cubo de 3.2 y el de 5. */ float cubica(float numero)
Más detallesValentín Moreno Programación en FORTRAN ESQUEMA DE SELECCIÓN
ESQUEMA DE SELECCIÓN EJERCICIO 1 Escribir un programa en Fortran que permita introducir dos enteros, A y B, por teclado, y calcule y muestre en pantalla su suma y su producto, con un texto explicativo.
Más detallesRECORDAR TIPOS DE DATOS
RECORDAR TIPOS DE DATOS VARIABLES: OBJETO CUYO valor cambia: A510 nombres NOTAS Int A=0; float B=1; CONSTANTES: OBJETO cuyo valor no cambia PI= 3.14159 LAS COMAS NO SE PERMITEN Int PI=3.1415 EXPRESIONES:
Más detallesNúmeros primos y compuestos
Números primos y compuestos Jorge Tipe Villanueva Sabemos que cualquier entero positivo n tiene como divisores a 1 y n. Si asumimos que n > 1 entonces n tendrá al menos dos divisores pues 1 y n son diferentes.
Más detallesSemana 14. Carlos Hernandez. Helena de Oteyza. Alfredo.
Semana 4 Carlos Hernandez Los apuntes los encuentran en: http://wwwcimatmx/especialidadseg/documentos/algoritmospdf Helena de Oteyza http://wwwcimatmx/especialidadseg/documentos/desigualdadespdf Alfredo
Más detallesCapítulo 2: Inducción y recursión Clase 3: Definiciones recursivas e Inducción estructural
Capítulo 2: Inducción y recursión Clase 3: Definiciones recursivas e Inducción estructural Matemática Discreta - CC3101 Profesor: Pablo Barceló P. Barceló Matemática Discreta - Cap. 2: Inducción y Recursión
Más detallesAritmética Entera MATEMÁTICA DISCRETA I. F. Informática. UPM. MATEMÁTICA DISCRETA I () Aritmética Entera F. Informática.
Aritmética Entera MATEMÁTICA DISCRETA I F. Informática. UPM MATEMÁTICA DISCRETA I () Aritmética Entera F. Informática. UPM 1 / 18 Estructura de los números enteros Estructura de los números enteros Definición
Más detallesCOMPLEMENTO DEL TEÓRICO
ÁLGEBRA I PRIMER CUATRIMESTRE - AÑO 2016 COMPLEMENTO DEL TEÓRICO El material de estas notas fue dictado en las clases teóricas pero no se encuentra en el texto que seguimos en las mismas ( Álgebra I -
Más detallesCapítulo IV. Divisibilidad y Primalidad. Algoritmo de la División
Capítulo IV Divisibilidad y Primalidad IV.1. Algoritmo de la División (Aquí se enuncia con la posibilidad de divisor negativo y la prueba incluye el caso de dividendo negativo.) Teorema 1 Dados m, d Z,
Más detallesARITMÉTICA ENTERA LOS NÚMEROS ENTEROS. = {..., n,..., 3, 2, 1, 0, 1, 2, 3,..., n,...} (Zahlen, en alemán, números)
LOS NÚMEROS ENTEROS ARITMÉTICA ENTERA = {..., n,..., 3, 2, 1, 0, 1, 2, 3,..., n,...} (Zahlen, en alemán, números) Recordamos la estructura de sus propiedades aritméticas la relación de orden usual, compatible
Más detallesTipos 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 detallesGuía 1: Funciones, precedencia y tipado
Introducción a los Algoritmos - do. cuatrimestre 014 Guía 1: Funciones, precedencia y tipado Docentes: Walter Alini, Luciana Benotti El objetivo de los siguientes ejercicios es introducirnos en la programación
Más detallesTema 4: Definición de funciones
Programación declarativa (2009 10) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla Constantes como patrones Variables como
Más detalles