Para entender la recursividad primero tenemos que entender la recursividad
|
|
- Juan Antonio Fernández Sosa
- hace 6 años
- Vistas:
Transcripción
1 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
2 Funcional - Matemática Menú de esta tarde Vamos a hacer una introducción a la sintaxis de Haskell y a como hacer nuestros propios tipos de datos. Vamos a mostrar el Hugs. Vamos a implementar funciones recursivas simples sobre tipos y listas.
3 Funcional - Matemática Paralelismo Funcional - Matemática En matemática... func1 : Z Z 6 si x == 1 func1(x) = x + 2 si x == 5 ó x == 6 0 si x == 8 En funcional... Una forma: func1 :: Int -> Int func1 1 = 6 func1 5 = 7 func1 6 = 8 func1 8 = 0
4 Funcional - Matemática Paralelismo Funcional - Matemática En matemática... func1 : Z Z 6 si x == 1 func1(x) = x + 2 si x == 5 ó x == 6 0 si x == 8 En funcional... Otra forma: func1 :: Int -> Int func1 x (x==1) = 6 (x==5 x==6) = x + 2 (x==8) = 0
5 Sintaxis Tipos Funciones parciales y totales Reducciones Tipos Enumerados Hugs Un poco de sintaxis Cada expresión que define el comportamiento de una función se denomina ecuación. Cada función puede tener más de una ecuación. Una función puede recibir muchos parámetros, pero solo devolver uno ( es una función!) a esto se le llama aridad. No es necesario indicarle a Haskell el tipo de parámetros, pero nosotros lo vamos a hacer siempre. Por Ej.: multiplicar :: Int -> Int -> Int multiplicar x y = x * y prm :: (Int,Int) -> Int prm (a,b) = a
6 Sintaxis Tipos Funciones parciales y totales Reducciones Tipos Enumerados Hugs Un poco de sintaxis (Cont.) El nombre de las funciones empieza con letra minúscula y los tipos de datos con mayúscula. Cuando la forma de calcular el resultado depende de algún predicado (con respecto a los parámetros), solemos usar guardas... func :: Param1 -> Param2 ->... -> ParamN -> Res func p1 p2... pn (p1 > p2) =... (p1 < p2) =... otherwise =...
7 Sintaxis Tipos Funciones parciales y totales Reducciones Tipos Enumerados Hugs Un poco de sintaxis (Cont.) Se analizan de arriba hacia abajo y cuando una de las condiciones se satisface, se determina qué ecuación debe utilizarse. Si no hay guarda que se haga verdadera, la expresión que se trata de evaluar se indefine. otherwise se utiliza para indicar que, si no se cumple la condición de ninguna de las guardas anteriores, se debe ingresar en esa guarda.
8 Sintaxis Tipos Funciones parciales y totales Reducciones Tipos Enumerados Hugs Pattern matching Cuando la forma de calcular el resultado depende de que es el parámetro, solemos usar pattern matching... algunoescero :: Int -> Int -> Bool algunoescero 0 _ = True algunoescero _ 0 = True algunoescero = False
9 Sintaxis Tipos Funciones parciales y totales Reducciones Tipos Enumerados Hugs Tipos en Haskell, vienen gratis con el preludio Int (==,/=,>,<,+,-,*,mod,rem,div) Integer (más grande) Float (==,/=,>,<,+,-,*,/) Bool (==,/=,not,&&,,true,false) Char (==,/=,>,<) También podemos usar listas de cualquiera de estos tipos.
10 Sintaxis Tipos Funciones parciales y totales Reducciones Tipos Enumerados Hugs Funciones parciales y totales Una función se dice total si, para cualquier instancia de parámetros, es capaz de indicar un resultado. doble :: Int -> Int doble x = x + x En caso contrario se dice que la función es parcial. chartoint :: Char -> Int chartoint x (x== a ) = 0 (x== b ) = 1 (x== c ) = 2
11 Sintaxis Tipos Funciones parciales y totales Reducciones Tipos Enumerados Hugs Evaluación y reducción de una expresión Una vez que se definen las funciones uno puede querer saber cuánto vale, por ejemplo: doble 2 Para obtener el resultado se procede a reducir la expresión. Esto se hace reemplazando el nombre de la función y sus parámetros según la ecuación que corresponda. Si no se encuentra ecuación alguna, la evaluación se indefine. doble Forma de evaluar una expresión: siempre se hace desde la función más externa que aparece y los parámetros de izquierda a derecha. Por ejemplo con doble (doble 5) tenemos la siguiente reducción.
12 Sintaxis Tipos Funciones parciales y totales Reducciones Tipos Enumerados Hugs Evaluación y reducción de una expresión doble (doble 5) (doble 5) + (doble 5) (5 + 5) + (doble 5) 10 + (doble 5) 10 + (5 + 5)
13 Sintaxis Tipos Funciones parciales y totales Reducciones Tipos Enumerados Hugs Ejercicios Implementar la función suma que satisface la siguiente especificación. problema suma (x, y:z) = result : Z { asegura result == x + y ; } suma :: Int -> Int -> Int suma x y = x + y
14 Sintaxis Tipos Funciones parciales y totales Reducciones Tipos Enumerados Hugs Implementar la función espar que satisface la siguiente especificación. problema espar (n:z) = result : Bool { asegura res == (n mod 2 == 0) ; } espar :: Int -> Bool espar x = (mod x 2) == 0 La función mod se puede usar en notación infija con el uso de acento francés. Esto se puede hacer con todas las funciones binarias (las que tienen dos parámetros). espar :: Int -> Bool espar x = (x mod 2) == 0
15 Sintaxis Tipos Funciones parciales y totales Reducciones Tipos Enumerados Hugs Bueno, ahora a implementar nuestros tipos A lo largo de la materia aprenderemos cómo hacer nuestros propios tipos de datos. En esta ocasión veremos los tipos enumerados. Para estos se debe declarar cuáles son los valores posibles del tipo. Esto se hace de la siguiente forma: data NombreTipo = Valor1 Valor2... ValorN Cuando uno declara un tipo enumerado es importante notar que no hay ninguna función definida para este. Ni siquiera ==. Por tal motivo las funciones que utilicen como entrada valores de este tipo van a tener, por lo general, una ecuación por cada valor del tipo.
16 Sintaxis Tipos Funciones parciales y totales Reducciones Tipos Enumerados Hugs Como ejemplo definiremos el tipo DiaSemana, que representa los dias de la semana, y algunas funciones que lo utilizan. data DiaSemana = Lunes Martes Miercoles Jueves Viernes Sabado Domingo cursoalgo1 :: DiaSemana -> Bool cursoalgo1 Lunes = True cursoalgo1 Miercoles = True cursoalgo1 Viernes = True cursoalgo1 _ = False Si quisieramos definir esta función utilizando el ==, necesitamos definir la igualdad. Podemos construirla nosotros, o podemos usar la igualdad que Haskell provee por defecto. Para hacer esto último, debemos agregar deriving Eq a la definición del tipo
17 Sintaxis Tipos Funciones parciales y totales Reducciones Tipos Enumerados Hugs data DiaSemana = Lunes Martes Miercoles Jueves Viernes Sabado Domingo deriving (Eq) cursoalgo1 :: DiaSemana -> Bool cursoalgo1 d (d == Lunes d == Miercoles d == Viernes ) = True otherwise = False cursoalgo1 :: DiaSemana -> Bool cursoalgo1 d = (d == Lunes d == Miercoles d == Viernes )
18 Sintaxis Tipos Funciones parciales y totales Reducciones Tipos Enumerados Hugs De la misma forma que se puede utilizar la igualdad provista por Haskell podemos hacer lo mismo con la relación de orden (Ord). También vamos a necesitar que Haskell muestre por pantalla estos tipos. Para eso, utilizamos Show. data DiaSemana = Lunes Martes Miercoles Jueves Viernes Sabado Domingo deriving (Ord, Eq, Show) Cuándo es la próxima clase de algo1? proximaclase :: DiaSemana -> DiaSemana proximaclase d d <= Lunes = Lunes d <= Miercoles = Miercoles d <= Viernes = Viernes otherwise = Lunes
19 Sintaxis Tipos Funciones parciales y totales Reducciones Tipos Enumerados Hugs Hugs Es un programa que entiende Haskell, no es el único pero es el que vamos a usar en la materia. Los que usan Window$ se lo pueden bajar de la página. Los que usan GNU/Linux usen su gestor de paquetes favorito. Los que usan Mac OS X (no nos olvidamos de ustedes =) ) tienen que instalarse las macports. Cualquier cosa google. Ahora vamos a mostrar como se usa.
20 Funciones Recursivas La definición de una función también puede ser recursiva. Esto quiere decir que alguna ecuación de la función necesita evaluar la misma función (pero para otra instancia). La idea es pensar que la función que definimos sabe resolver el problema para una instancia más chica de la entrada. De esa forma puedo usarlo para resolver una instancia más grande. No hay que olvidarse el (o los) caso base, piensen cual es la instancia mas chica de la entrada que va a aceptar su función. Por ejemplo, para hacer un programa que compute n! tenemos la siguiente posibilidad.
21 problema factorial (n: Z) = result : Z { requiere n 0 ; asegura result == [1..n] ; } factorial :: Int -> Int factorial n n == 0 = 1 n > 0 = n * (factorial (n-1))
22 Qué pasa cuando hacemos recursión? factorial(3) - Programa factorial :: Int -> Int factorial n n == 0 = 1 n > 0 = n * (factorial (n-1))
23 Qué pasa cuando hacemos recursión? factorial(3) - Programa factorial :: Int -> Int factorial n n == 0 = 1 n > 0 = n * (factorial (n-1))
24 Qué pasa cuando hacemos recursión? 3 * (factorial (2)) - Programa factorial :: Int -> Int factorial n n == 0 = 1 n > 0 = n * (factorial (n-1))
25 Qué pasa cuando hacemos recursión? 3 * (factorial (2)) - Programa factorial :: Int -> Int factorial n n == 0 = 1 n > 0 = n * (factorial (n-1))
26 Qué pasa cuando hacemos recursión? 3 * (2 * factorial(1)) - Programa factorial :: Int -> Int factorial n n == 0 = 1 n > 0 = n * (factorial (n-1))
27 Qué pasa cuando hacemos recursión? 3 * (2 * factorial(1)) - Programa factorial :: Int -> Int factorial n n == 0 = 1 n > 0 = n * (factorial (n-1))
28 Qué pasa cuando hacemos recursión? 3 * (2 * (1 * factorial (0))) - Programa factorial :: Int -> Int factorial n n == 0 = 1 n > 0 = n * (factorial (n-1))
29 Qué pasa cuando hacemos recursión? 3 * (2 * (1 * factorial (0))) - Programa factorial :: Int -> Int factorial n n == 0 = 1 n > 0 = n * (factorial (n-1))
30 Qué pasa cuando hacemos recursión? 3 * (2 * (1 * 1)) - Programa factorial :: Int -> Int factorial n n == 0 = 1 n > 0 = n * (factorial (n-1))
31 Qué pasa cuando hacemos recursión? 6 - Programa factorial :: Int -> Int factorial n n == 0 = 1 n > 0 = n * (factorial (n-1))
32 Para que la función pueda calcular el resultado de una instancia dada es necesario que el caso recursivo vaya acercando el problema hacia el caso base. En este ejemplo es claro que para calcular factorial n, con n >= 0, en algún momento se llegará a necesitar factorial 0 y el programa va a terminar de forma correcta. Bueno, ahora hagamos de nuevo espar con lo que sabemos.
33 problema espar (n:z) = result : Bool { asegura res == (n mod 2 == 0) ; } espar :: Int -> Bool espar n n == 0 = True (abs n) == 1 = False (abs n) >= 2 = espar( (abs n) -2) Otra opción espar :: Int -> Bool espar 0 = True espar n = not (espar ( (abs n) -1)) El aux abs les queda de ejercicio ;)
34 EL ejemplo clásico de recursividad Implementar una función que dado un natural n, calcule el n-ésimo número de Fibonacci. fibonacci :: Int -> Int fibonacci n n == 0 = 1 n == 1 = 1 n >= 2 = (fibonacci (n-1)) + (fibonacci (n-2))
35 En algunos casos es necesario definir una función auxiliar para resolver un problema. En el caso de factorial no era necesario saber qué instancia del problema se está tratando de resolver para el usuario. Cuando sí es necesario, se suele recurrir a una función auxiliar recursiva en donde algunos parámetros representan el problema que se trata de resolver.
36 Escribir una función que dado un número natural distinto de cero, diga si es primo o no. problema esprimo (n: Z) = result : Bool { requiere n > 0 ; asegura result == (n 1) ( d [2..n))(n mod d 0) ; } esprimo :: Int -> Bool esprimo n n == 1 = False n >= 2 = not (haydivisorhasta (n-1) n) haydivisorhasta :: Int -> Int -> Bool haydivisorhasta i n i == 1 = False n mod i == 0 = True otherwise = haydivisorhasta (i-1) n
37 Escribir una función que dado un número natural distinto de cero, nos devuelva la suma de sus divisores. problema sumadivisores (n: Z) = result : Z { requiere n > 0 ; asegura result == [d d [1..n], n mod d == 0] ; } sumadivisores :: Int -> Int sumadivisores n = sumadivisoreshasta n n sumadivisoreshasta :: Int -> Int -> Int sumadivisoreshasta h n h == 1 = 1 h > 1 && n mod h == 0 = h + (sumadivisoreshasta (h-1) n) otherwise = sumadivisoreshasta (h-1) n
38 Pattern Matching con Listas Dada una lista de caracteres... Exijo la cabeza de esa lista! cabeza:: [Char] -> Char cabeza [] = error"no pierdas la cabeza" cabeza (x:xs) = x Y si lo hacemos con una lista de tipo paramétrico? cabeza:: [a] -> a
39 Dada una lista... quiero averiguar su longitud. longitud:: [a] -> Int longitud [] = 0 longitud (x:xs) = 1 + longitud xs
40 Dada una lista de enteros... quiero averiguar su máximo. maximo:: Int -> [Int] -> Int maximo [] = error"no hay maximo" maximo [x] = x maximo (x:xs) x < maximo xs = maximo xs x >= maximo xs = x
41 Cómo es que esta cosa funciona? max [2,3,1] (2 < max[3, 1]) max [3,1] (3 < 1) FALSE (3 >= max[1]) max [1] 1 Caso Base max [1] = 1
42 Cómo es que esta cosa funciona? max [2,3,1] (2 < max[3, 1]) max [3,1] (3 < 1) FALSE (3 >= 1) TRUE max [3,1] = 3
43 Cómo es que esta cosa funciona? max [2,3,1] (2 < 3) TRUE max[2,3,1] = max [3,1] max [3,1] (3 < 1) FALSE (3 >= max[1]) max [1] 1 Caso Base max [1] = 1
44 Cómo es que esta cosa funciona? max [2,3,1] (2 < 3) TRUE max[2,3,1] = max [3,1] max [3,1] (3 < 1) FALSE (3 >= 1) TRUE max [3,1] = 3
45 Cómo es que esta cosa funciona? max [2,3,1] (2 < 3) TRUE max[2,3,1] = 3
46 Otras formas maximo [] = error"no hay maximo" maximo [x] = x maximo (x:xs) = if (x < maximo xs) then (maximo xs) else x maximo [] = error"no hay maximo" maximo [x] = x maximo (x:xs) x < max = max x >= max = x where max= maximo xs
47 Dada un entero... quiero conseguir una lista de sus divisores. divisores:: Int -> [Int] divisores n = divisoresdesde n 1 divisoresdesde:: Int -> Int -> [Int] divisoresdesde n m n == m = [n] n > m && (n mod m == 0) = m:(divisoresdesde n (m+1)) n > m && (n mod m /= 0) = divisoresdesde n (m+1)
48 Ahora, teniendo esta función... podemos hacer de otra forma sumadivisores? sumadivisores:: Int -> Int sumadivisores n = sumalista (divisores n) sumalista::[int] -> Int sumalista [] = 0 sumalista (x:xs) = x + sumalista xs
49 Notas importantes NUNCA pueden usar funciones del lado del Pattern Matching. Ej. FuncionAlocada :: Int -> Bool FuncionAlocada n-1 =... NO se pueden usar listas por comprensión para resolver los ejercicios.
50 Hacer cualquiera de estas cosas implica un NO APROBADO (Fatality), sin miramientos, en cualquier instancia de evaluación de Algo 1 (y el repudio por parte de todo el plantel docente). En los TP s también se evalua legibilidad y claridad al escribir código, esto va a quedar más claro en las siguientes clases.
51 Consultas?
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 detallesTema 7. El sistema de clases
Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 7. El sistema de clases 7.1 Funciones Sobrecargadas Clases e Instancias 7.2 Algunas Clases
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 detallesProgramación Funcional en Haskell
Programación Funcional en Haskell Paradigmas de Lenguajes de Programación 1 cuatrimestre 2006 1. Expresiones, valores y tipos Un programa en lenguaje funcional consiste en definir expresiones que computan
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 detallesIntroducción a C++ y Code::Blocks
Introducción a C++ y Práctica Imperativo Clase 1 Luis Agustín Nieto Departamento de Computación, FCEyN,Universidad de Buenos Aires. 28 de mayo de 2010 Menu de esta Tarde Funcional Vs. Imperativo (Intérprete
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 detallesCALENDARIO AÑO 2016 PICO Y PLACA AUTOMOVILES SERVICIO ESPECIAL PICO Y PLACA TAXIS
JULIO VIERNES 1 9 7-8 7-8 5-6 1-3-5-7-9 SABADO 2 8 9-0 9-0 7-8 NO APLICA DOMINGO 3 NO APLICA NO APLICA NO APLICA NO APLICA NO APLICA LUNES 4 FESTIVO FESTIVO FESTIVO FESTIVO FESTIVO MARTES 5 1 3-4 3-4 1-2
Más detallesEL LENGUAJE ALGEBRAICO
LENGUAJE ALGEBRAICO Guillermo Ruiz Varela - PT EL LENGUAJE ALGEBRAICO Hasta ahora siempre hemos trabajado en matemáticas con números y signos, es lo que se llama lenguaje numérico. A partir de ahora, vamos
Más detallesCALENDARIO AÑO 2016 PICO Y PLACA AUTOMOVILES SERVICIO ESPECIAL PICO Y PLACA TAXIS
ENERO VIERNES 1 FESTIVO FESTIVO FESTIVO FESTIVO FESTIVO SABADO 2 3 7-8 7-8 5-6 NO APLICA DOMINGO 3 NO APLICA NO APLICA NO APLICA NO APLICA NO APLICA LUNES 4 4 9-0 9-0 7-8 NO APLICA MARTES 5 5 1-2 1-2 9-0
Más detallesEstatutos de Control C# Estatutos de Decisión (Selección)
SELECCIÓN Estatutos de Control C# Estatutos de Decisión (Selección) IF Condición THEN Estatuto1 ELSE Estatuto2 Estatuto1 Statement Condición... Antes de ver esta presentación: Lee el Capítulo correspondiente
Más detallesEl lenguaje C. 1. Identificadores, constantes y variables
Principios de Programación El lenguaje C 1. Identificadores, constantes y variables 1.1. Conceptos de memoria Los nombres de variable como x, y, suma corresponden a localizaciones o posiciones en la memoria
Más detallesProgramación Funcional Haskell Clase 21
Programación Funcional Haskell Clase 21 José Raymundo Marcial Romero rmarcial@fi.uaemex.mx BUAP c José Raymundo Marcial Romero. Clase Número 21 p.1/12 Temas de la clase Clase Anterior En Haskell cada expresión
Más detallesPROBLEMAS DEL TEMA 7: Subprogramas y Modularidad
PROBLEMAS DEL TEMA 7: Subprogramas y Modularidad EJERCICIOS RESUELTOS 1. Escribe una función que calcule el factorial de un número, dado como parámetro. A continuación realiza un programa que lea por teclado
Más detalles1 Conjuntos y propiedades de los números naturales
Programa Inmersión, Verano 2016 Notas escritas por Dr. M Notas del cursos. Basadas en los prontuarios de MATE 3001 y MATE 3023 Clase #1: martes, 31 de mayo de 2016. 1 Conjuntos y propiedades de los números
Más detallesPHP: Lenguaje de programación
Francisco J. Martín Mateos Carmen Graciani Diaz Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Tipos de datos Enteros Con base decimal: 45, -43 Con base octal: 043, -054
Más detallesTaller de Resolución de Problemas Computacionales
Taller de Resolución de Problemas Computacionales Clase1: 27/9 Presentación: Equipo de Trabajo Encuentros Certificación del Taller: Por Asistencia Por Aprobación Sitio Web. Etapas en la Resolución de Problemas
Más detallesTema Árboles generales. 9.2 Árboles binarios 9.3 Árboles de búsqueda
Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Tema 9. Árboles 9.1 Árboles generales 9.2 Árboles binarios 9.3 Árboles de búsqueda 9.1 Árboles generales Un árbol es
Más detallesECUACIONES EN Q (NÚMEROS RACIONALES)
Echa un vistazo a esta situación. ECUACIONES EN Q (NÚMEROS RACIONALES) El domingo, Leonardo caminó 4 unidades. El lunes, Leonardo caminó un tercio de lo que caminó el martes. El caminó un total de 12 unidades
Más detallesLógica y Programación
Lógica y Programación Programación funcional con Haskell Antonia M. Chávez, Carmen Graciani, Agustín Riscos Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Programación
Más detallesLección 8: Suma y resta de en teros
LECCIÓN 8 bajo el nivel del mar, y el buzo B baja a 81 metros bajo el nivel del mar. Cuál de los dos está más cerca de la superficie? d) El saldo de la empresa Caluro, S.A. es de $12 807 en números rojos,
Más detallesTrabajo Práctico Nro. 1
Trabajo Práctico Nro. 1 INSTITUTO de TECNOLOGÍA O. R. T. Diagramar algoritmos para resolver los problemas planteados. Objetivos de esta práctica: Pretendemos que al finalizar esta ejercitación el alumno
Más detallesDefinición 1 Un semigrupo es un conjunto E provisto de una operación binaria asociativa sobre E, se denota por (E, ).
ALGEBRA La primera parte del presente libro está dedicada a las estructuras algebraicas. En esta parte vamos a iniciar agregándole a los conjuntos operaciones. Cuando las operaciones tienen determinadas
Más detallesProblemas de Recursividad
Problemas de Recursividad Problema 1. El factorial de un número entero n 0, denotado como n!, se define! como!!! i = 1 2 n cuando n > 0, y 0! = 1. Por ejemplo 6! = 1 2 3 4 5 6 = 720 Diseñad una método
Más detallesUNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.
UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO. TRUJILLO Recursividad: La recursividad es una técnica de programación
Más detalles1.- Para cada uno de los siguientes problemas escribir el diagrama de flujo y el pseudocódigo de un programa que lo resuelva:
1.- Para cada uno de los siguientes problemas escribir el diagrama de flujo y el a) Problema: pedir la base y la altura de un triángulo y escribir su superficie. b) Problema: pedir cuatro números enteros
Más detallesEjercicios de programación funcional con Haskell
Ejercicios de programación funcional con Haskell José A. Alonso Jiménez Grupo de Lógica Computacional Dpto. de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Sevilla, 8 de
Más detallesTEMA 7: Ficheros. TEMA 7: Ficheros. 7.1.-Concepto de fichero
TEMA 7: Ficheros 7.1.-Concepto de fichero Todas las estructuras de datos que hemos visto hasta ahora utilizan memoria principal. Esto tiene dos limitaciones importantes: 1. Los datos desaparecen cuando
Más detallesESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF
ESCUELA POLITÉCNICA SUPERIOR GRADO EN DISEÑO IND. INFORMÁTICA CURSO 2012-13 PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF HASTA AHORA... En prácticas anteriores se ha aprendido: La estructura principal de un
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 detallesTI 89. Cómo sobrevivir en Precálculo
TI 89 Cómo sobrevivir en Precálculo TI-89 Menús que más utilizaremos: Operaciones Numéricas Simplificar: 3 + 1 5 ( 4)2 9 3 4 Notar la diferencia entre el símbolo de resta y el signo negativo. Notar el
Más detallesTaller de Informática I Dpto. Computación F.C.E. y N. - UBA 2010
FUNCIONES Definición: Una función es un subprograma que recibe cero o más valores de entrada y retorna un único objeto de salida. Es una tarea independiente que puede o no depender de variables externas.
Más detallesdata Tree a = Tip Node a (Tree a) (Tree a) deriving Show
Preguntas seleccionadas de pruebas de evaluación Pregunta 1 Dadas las siguientes definiciones: data Tree a = Tip Node a (Tree a) (Tree a) deriving Show cambiar :: [Int] -> Tree [Int] -> Tree [Int] cambiar
Más detallesFunciones. Parámetros por valor
Funciones I Parámetros por valor Fundamentos de Programación Fundamentos de Programación I Llamada a la función definición subprograma Subprogramas en C++ Funciones 1 Una función es un subprograma que
Más detallesNuestro primer ejemplo nos dice: Escribe la ecuación de una línea que es perpendicular a la grafica de Y= ½x + 4 y pasa por los puntos (0,-1).
CGT.5.G.3-Pam Beach-Write the equation of a line perpendicular to a line through a point. La lección de hoy es sobre escribir una ecuación de una línea perpendicular a una línea dado un punto. El cuál
Más detallesIsabelle como un lenguaje funcional
Capítulo 1 Isabelle como un lenguaje funcional 1.1 Introducción Nota 1.1.1. Esta notas son una introducción a la demostración asistida utilizando el sistema Isabelle/HOL/Isar. La versión de Isabelle utilizada
Más detalles3 Polinomios y funciones racionales
Programa Inmersión, Verano 2016 Notas escritas por Dr. M Notas del cursos. Basadas en los prontuarios de MATE 3001 y MATE 3023 Clase #19: viernes, 24 de junio de 2016. 3 Polinomios y funciones racionales
Más detallesSISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos
TEMA 2 Diseño de Algoritmos 7 2. DISEÑO DE ALGORITMOS 2.1. Concepto de Algoritmo En matemáticas, ciencias de la computación y disciplinas relacionadas, un algoritmo (del griego y latín, dixit algorithmus
Más detallesFUNCIONES PHP: DECLARACIÓN Y LLAMADAS. PARÁMETROS, RETURN. EJERCICIOS EJEMPLOS RESUELTOS. (CU00827B)
APRENDERAPROGRAMARCOM FUNCIONES PHP: DECLARACIÓN Y LLAMADAS PARÁMETROS, RETURN EJERCICIOS EJEMPLOS RESUELTOS (CU00827B) Sección: Cursos Categoría: Tutorial básico del programador web: PHP desde cero Fecha
Más detallesCurso de sistemas GNU/Linux Bash scripting Construcciones case
Curso de sistemas GNU/Linux Bash scripting Construcciones case Por Jorge Fuertes http://jorgefuertes.com c 2009 Jorge Fuertes Alfranca Revisado a 15 de mayo de 2009 1 Índice 1. Introducción 3 1.1. Qué
Más detallesProgramación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática
Programación de Computadores 4 Iteraciones y Decisiones Prof. Javier Cañas Universidad Técnica Federico Santa María Departamento de Informática Contenido 1 Introducción 2 Operadores Relacionales y Lógicos
Más detallesMétodos que devuelven valor Dado el siguiente triángulo rectángulo:
Métodos que devuelven valor Dado el siguiente triángulo rectángulo: hipotenusa altura base Para dibujar este triángulo necesitamos los siguientes datos: base y altura La base y la altura, se utilizarán
Más detallesEJERCICIOS DE LENGUAJES Y PARADIGMAS DE PROGRAMACIÓN (CUESTIONES DE EXAMEN) PROGRAMACIÓN FUNCIONAL
EJERCICIOS DE LENGUAJES Y PARADIGMAS DE PROGRAMACIÓN (CUESTIONES DE EXAMEN) PROGRAMACIÓN FUNCIONAL María Alpuente y María José Ramírez 1 LENGUAJES Y PARADIGMAS: INTRODUCCIÓN 1. Indica cuál de las siguientes
Más detallesFecha Segundo Cuarto Sexto Octavo
PRIMER ORDINARIO Lunes 23 de Martes 24 de BASE DE Miércoles 25 de Jueves 26 de Viernes 27 de SEGUNDO ORDINARIO Lunes 23 de Martes 24 de BASE DE Miércoles 25 de Jueves 26 de Viernes 27 de TERCER ORDINARIO
Más detallesCOMPARAR CADENAS CON PHP STRCMP, == Ó ===? NO DISTINGUIR MAYÚSCULAS O MINÚSCULAS: STRCASECMP. RELLENAR CON STR_PAD. (CU00829B)
APRENDERAPROGRAMAR.COM COMPARAR CADENAS CON PHP STRCMP, == Ó ===? NO DISTINGUIR MAYÚSCULAS O MINÚSCULAS: STRCASECMP. RELLENAR CON STR_PAD. (CU00829B) Sección: Cursos Categoría: Tutorial básico del programador
Más detallesEstructuras de Datos. Dr. Pablo E. Fidel Martínez López Lic. en Ciencias de la Computación UNR
Estructuras de Datos Dr. Pablo E. Fidel Martínez López Lic. en Ciencias de la Computación UNR ...but note that an implementation need not be actualized as code a concrete design is sufficient. Chris Okasaki
Más detallesTema: Clases y Objetos en C#. Parte II.
Programación II. Guía No. 5 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Clases y Objetos en C#. Parte II. Objetivos Implementar clases, objetos, propiedades, métodos y
Más detalles1.3.- V A L O R A B S O L U T O
1.3.- V A L O R A B S O L U T O OBJETIVO.- Que el alumno conozca el concepto de Valor Absoluto y sepa emplearlo en la resolución de desigualdades. 1.3.1.- Definición de Valor Absoluto. El valor absoluto
Más detallesMateria: Matemática de 5to Tema: Ecuación de la Recta. Marco Teórico
Materia: Matemática de 5to Tema: Ecuación de la Recta Marco Teórico Simplemente comenzar con la ecuación general de la forma pendiente-intersección de una línea, y luego conecte los valores dados de y
Más detallesFicha de Aprendizaje N 13
Ficha de Aprendizaje N 13 Curso: Lógica y lenguaje de programación Tema: Fundamentos de programación Duración: 2 horas pedagógicas Logros de aprendizaje Identifica los diferentes tipos de operadores que
Más detallesIntroducción a los Algoritmos Validez, Satisfactibilidad, Tipos y Funciones
Introducción a los Algoritmos Validez, Satisfactibilidad, Tipos y Funciones Pedro Sánchez Terraf CIEM-FaMAF Universidad Nacional de Córdoba FaMAF UNC 17 de marzo de 2014 Contenido 1 Demostraciones: Cómo
Más detallesObjetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)
Objetivos de la sesión Entender el tipo de programas que se pueden realizar con aplicaciones de consola. Conocer el concepto de variable, la forma en que se declaran y su utilización. Conocer la forma
Más detallesMateria: Matemática de Tercer Año Tema: Pendiente
Materia: Matemática de Tercer Año Tema: Pendiente Suponga que tiene un avión de juguete sobre el despegue, que se eleva 5 pies por cada 6 metros que recorre a lo largo de la horizontal. Cuál sería la pendiente
Más detallesElementos de un programa en C
Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución
Más detallesPráctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros
Práctica 3. Paso de parámetros entre subrutinas 1. Objetivo de la práctica El objetivo de esta práctica es que el estudiante se familiarice con la programación en ensamblador y el convenio de paso de parámetros
Más detallesTipos de Datos de python (1ª parte):
Tipos de Datos de python (1ª parte): Cuando almacenamos datos en una variable, lo que podemos hacer con ellos depende del tipo de datos que sean. Si tengo los datos 1 y 2 y hago 1+2 obtendré como resultado
Más detallesMateria: Matemática de Octavo Tema: Raíces de un polinomio. Marco teórico
Materia: Matemática de Octavo Tema: Raíces de un polinomio Y si tuvieras una ecuación polinómica como? Cómo podrías factorizar el polinomio para resolver la ecuación? Después de completar esta lección
Más detallesINTRODUCCIÓN DE DATOS EN LA HOJA DE CÁLCULO
UNIDAD DIDÁCTICA INTRODUCCIÓN DE DATOS EN LA HOJA DE CÁLCULO Los objetivos de este tema son: 1. Aprender a introducir datos en la hoja de cálculo. 2. Diferenciar los tipos de datos con los que se puede
Más detallesEsta expresión polinómica puede expresarse como una expresión matricial de la forma; a 11 a 12 a 1n x 1 x 2 q(x 1, x 2,, x n ) = (x 1, x 2,, x n )
Tema 3 Formas cuadráticas. 3.1. Definición y expresión matricial Definición 3.1.1. Una forma cuadrática sobre R es una aplicación q : R n R que a cada vector x = (x 1, x 2,, x n ) R n le hace corresponder
Más detallesA continuación estudiaremos a qué se refiere el término «programación», qué es un lenguaje de programación y veremos alguna terminología propia de
A continuación estudiaremos a qué se refiere el término «programación», qué es un lenguaje de programación y veremos alguna terminología propia de programación y cómo se utiliza. 1 Por sí sólo, un equipo
Más detalles8. Diseña una función que muestre el calendario para un mes en el siguiente formato: Lunes Martes Miércoles Jueves Viernes Sábado Domingo
8. Diseña una función que muestre el calendario para un mes en el siguiente formato: Lunes Martes Miércoles Jueves Viernes Sábado Domingo 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
Más detalles$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos
PROGRAMACIÓN DE SHELL SCRIPTS EN LINUX El shell es un intérprete de órdenes, pero el shell no es solamente eso; los intérpretes de órdenes de Linux son auténticos lenguajes de programación. Como tales,
Más detallesTeoría de Conjuntos y Conjuntos Numéricos
Teoría de Conjuntos y Conjuntos Numéricos U N I V E R S I D A D D E P U E R T O R I C O E N A R E C I B O D E P A R T A M E N T O DE M A T E M Á T I C A S P R O F A. Y U I T Z A T. H U M A R Á N M A R
Más detallesMATRICES. Se simboliza tal matriz por y se le llamará una matriz x o matriz de orden x (que se lee por ).
1 MATRICES 1 Una matriz es una disposición rectangular de números (Reales); la forma general de una matriz con filas y columnas es Se simboliza tal matriz por y se le llamará una matriz x o matriz de orden
Más detallesAlgoritmos. Medios de expresión de un algoritmo. Diagrama de flujo
Algoritmos En general, no hay una definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten
Más detallesEcuaciones del plano. Cajón de Ciencias
Ecuaciones del plano Cajón de Ciencias Un plano tiene sus propias ecuaciones que lo definen, al igual que ocurría con la recta. Algunas de ellas son bastante parecidas, y de hecho verás que el plano tiene
Más detallesTécnico Superior en Producción y Administración Rural - 1er Año
Marzo Lunes Martes Miercoles Jueves Viernes Sabado 1 2 3 4 5 12 14 15 16 1 1 1 25 26 2 2 30 Economía de la Prod. 31 Economía de la Prod. Abril 1 2 4 5 6 Economía de la Prod. Economía de la Prod. Práctica
Más detallesLección 5: Ecuaciones con números naturales
GUÍA DE MATEMÁTICAS I Lección 5: Ecuaciones con números naturales Observe la siguiente tabla y diga cuáles son los números que faltan. 1 2 3 4 5 6 7 8 9 10 11 12 3 6 9 12 Es sencillo encontrar la regla
Más detallesTema 13: Programas interactivos
Tema 13: Programas interactivos Informática (2015 16) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla 2 / 38 Tema 13: Programas
Más detalles1. Cuántas sentencias hay en la secuencia principal del siguiente programa?
1. Cuántas sentencias hay en la secuencia principal del siguiente programa? public class PruebaSwitch { System.out.print ("Opcion: "); case 3: System.out.println ("miércoles "); A. 1. B. 4. C. Más de 10.
Más detallesGUIA DE APRENDIZAJE No.01 Actividades Ejercicio No.1 Ingrese a Microsoft Excel y guarde el archivo con el nombre de EVIDENCIA 1.
GUIA DE APRENDIZAJE No.01 Actividades Ejercicio No.1 Ingrese a Microsoft Excel y guarde el archivo con el nombre de EVIDENCIA 1. - Cuando usted abre una hoja de cálculo electrónica encuentra Filas (Vienen
Más detallesCiclos. Recordando Estructuras de Control Básicas: SELECCIÓN (condición) SECUENCIAL
Ciclos Fundamentos de Programación Recordando Estructuras de Control Básicas: Una secuencia es una serie de estatutos que se ejecutan uno después de otro. Selección (condición) ejecuta diferentes estatutos
Más detallesTema 4. Operadores y Expresiones
Tema 4 Operadores y Expresiones Contenidos 1. Conceptos Básicos. 2. Operadores Aritméticos. 3. Operadores de Relación, de Igualdad y Lógicos. 4. Operadores de Incremento y Decremento. 5. Operadores y Expresiones
Más detallesEscribir un número en letras
Ana María Beirão Escribir un número en letras NIVEL: AVANZADO Ver archivo de ejemplo. En este truco veremos cómo podemos hacer en Excel para que, dado un número, nos muestre su valor pero en letras. Antes
Más detallesRecursividad. Introducción a la programación
Recursividad Introducción a la programación I semestre, 2016 Concepto general Un concepto que está definido utilizando para este propósito el propio concepto que se está definiendo. Es un proceso de repetición
Más detallesFUNDAMENTOS MATEMÁTICOS (Grado en Ingeniería Informática) Práctica 4. DERIVACIÓN
FUNDAMENTOS MATEMÁTICOS (Grado en Ingeniería Informática) Práctica 4. DERIVACIÓN 1.- Derivada de una función en un punto. El estudio de la derivada de una función en un punto surge con el problema geométrico
Más detalles= RETURN =3 7-. ELSE K
11-. Pida Al Usuario Dos Números Enteros (Que Se Guardaran En Las Variables Num 1 Y Num2). Si Num2 Es Cero, Deberá Mostrar Un Mensaje De Error, Y En Caso Contrario Mostrara En Pantalla El Resto De La División
Más detallesSemana de las Matemáticas e Ingeniería. Desarrollo de algoritmos recursivos empleando la aplicación PseInt
Semana de las Matemáticas e Ingeniería Desarrollo de algoritmos recursivos empleando la aplicación PseInt 21 de Noviembre de 2013 Agenda Desarrollo de algoritmos recursivos empleando la aplicación PSeInt
Más detallesCoordinación de Matemática I (MAT021) 1 er Semestre de 2013 Semana 1: Lunes 11 Viernes 16 de Marzo. Contenidos
Coordinación de Matemática I (MAT021) 1 er Semestre de 2013 Semana 1: Lunes 11 Viernes 16 de Marzo Complementos Contenidos Clase 1: Elementos de lógica: Conectivos, tablas de verdad, tautologías y contingencias.
Más detallesProgramación Declarativa UNIVERSIDAD DE MÁLAGA
Programación Declarativa UNIVERSIDAD DE MÁLAGA (3 o de Ingeniería Técnica en Informática) E.T.S.I. INFORMÁTICA Septiembre de 2006 mbre: Especialidad: Prolog Grupo: Ejercicio 1.1 (1 punto) Realizad el árbol
Más detallesProgramación Funcional
Programación Funcional Jeroen Fokker 1996 Universidad de Utrecht Departamento de Informática Traducci on: Programa MEMI Universidad Mayor de San Simón Hielko R. Ophoff & Bernardo Sánchez J. Revisión: Universidad
Más detallesPrincipios de Computadoras II
Departamento de Ingeniería Electrónica y Computadoras Operadores y Expresiones rcoppo@uns.edu.ar Primer programa en Java 2 Comentarios en Java Comentario tradicional (multi-línea) Comentario de línea Comentario
Más detallesObjetivo General: Plantean y resuelven problemas que involucran desigualdades.
Liceo Polivalente Juan Antonio Ríos Quinta Normal NIVEL : TERCERO MEDIO Guía de aprendizaje Nº 4 Unidad Temática: Desigualdades e Inecuaciones Objetivo General: Plantean y resuelven problemas que involucran
Más detallesMódulo 8: Primitivas en Pascal
Módulo 8: Primitivas en Pascal Tecnologías en la Educación Matemática Dr. Carlos Gonzalía DCIC - UNS Técnologías en la educación matemática Dr. Carlos Gonzalía 1 de Copyright Copyright 2010, 2012 M. Capobianco,
Más detallesProcesos e Hilos en C
Procesos e Hilos en C 6 de febrero de 2012 En esta sesión vamos a escribir programas en lenguaje C que utilicen hilos y procesos para comparar el rendimiento del sistema ante la gestión de unos y otros.
Más detallesCuando se enumeran todos los elementos que componen el conjunto. A = { 1, 2, 3, 4, 5 }
LOS NÚMEROS REALES TEMA 1 IDEAS SOBRE CONJUNTOS Partiremos de la idea natural de conjunto y del conocimiento de si un elemento pertenece (* ) o no pertenece (* ) a un conjunto. Los conjuntos se pueden
Más detallesMATEMATICA GRADO 9 II PERIODO PROF. LIC. ESP. BLANCA NIEVES CASTILLO R. CORREO: cel
GUIA DE TEORIA NO. 1 LO QUE DEBO SABER Regla de Cramer Un sistema de ecuaciones lineales se dice de Cramer cuando cumple las siguientes condiciones: Es un sistema cuadrado, con igual número de ecuaciones
Más detallesAproximaciones Sucesivas.
Aproximaciones Sucesivas. La Raíz Cuadrada. Te has preguntado cómo es que una calculadora hace sus cálculos? Por ejemplo, calcular la raíz cuadrada de un número dado, en las calculadoras científicas siempre
Más detallesEstructuras de control
Estructuras de control Condicionales Ejemplo: Resolución de la ecuación de primer grado In [1]: # Solución de la ecuación ax+b=0 def solucion1grado(a, b): return -float(b) / a In [2]: solucion1grado(2,4)
Más detallesTEMA 8: Gestión dinámica de memoria
TEMA 8: Gestión dinámica de memoria 8.1.-Tipo de datos puntero Hasta ahora, los tipos de datos que hemos visto (a excepción de strings y ficheros) eran estructuras de datos estáticas, es decir, estructuras
Más detallesTema 3. Análisis de costes
Tema 3. Análisis de costes http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz}@icc.uji.es Estructuras de datos y de la información
Más detallesConstantes. Las constantes no cambian durante la ejecucion de un programa en C++, en C++ existen 4 tipos de constantes:
Constantes Las constantes se pueden declarar con la palabra reservada const y se le asigna un valor en el momento de la declaracion, este valor no se puede modificar durante el programa y cualquier intento
Más detallesAlguna vez has tratado de servir pedazos de torta iguales aún cuando se cortaron de manera diferente?
Materia: Matemática de séptimo Tema: Fracciones Equivalentes Alguna vez has tratado de servir pedazos de torta iguales aún cuando se cortaron de manera diferente? En la reunión de sexto grado, una de las
Más detallesMANUAL BÁSICO DE MYSQL
MANUAL BÁSICO DE MYSQL ESCUELA COLOMBIANA DE INGENIERÍA JULIO GARAVITO LABORATORIO DE INFORMÁTICA BOGOTÁ D. C. 2007-2 TABLA DE CONTENIDO MANUAL BÁSICO DE MYSQL... 1 INTRODUCCIÓN... 3 1. CONECTARSE CON
Más detallesResolución de Problemas y Algoritmos Clase 6: Repetición (continuación)
Resolución de Problemas y Algoritmos Clase 6: Repetición (continuación) Dr. http://cs.uns.edu.ar/~sag Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Bahía Blanca,
Más detallesFUNCIONES EXPONENCIAL Y LOGARÍTMICA
FUNCIONES EXPONENCIAL Y LOGARÍTMICA 1. Crecimiento exponencial. La función exponencial. 1.1 La Función Exponencial. Una función exponencial es una expresión de la forma siguiente:,,. Donde es una constante
Más detallesTUTORIAL PSEINT. Ing. Ronald Rentería Ayquipa. Fundamentos de Programación
TUTORIAL PSEINT Ing. Ronald Rentería Ayquipa Fundamentos de Programación PSEINT Página Oficial: http://pseint.sourceforge.net/ Es un software que interpreta pseudocódigo. Permite la generación de diagramas
Más detallesFunciones Tipos de funciones y Recursividad
Funciones Tipos de funciones y Recursividad SESION 4 Definición Una función es una subrutina o subprograma que forman un programa que realiza tareas bien definidas. Todo programa en C consta de una o más
Más detallesCarlos A. Rivera-Morales. Precálculo 2
y Carlos A. Rivera-Morales Precálculo 2 Introducción a y Notación d Tabla de Contenido 1 Definición Sumas Parciales Introducción a y Notación d Tabla de Contenido 1 Definición Sumas Parciales 2 Introducción
Más detallesTodo programa en 'C' consta de una o más funciones, una de las cuales se llama main.
LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan
Más detalles