Introducción a los Algoritmos Tipos, Funciones y Patrones

Documentos relacionados
Introducción a los Algoritmos Validez, Satisfactibilidad, Tipos y Funciones

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

Tema 3: Tipos y clases

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Tema 3: Tipos y clases

Principios de Computadoras II

Objetivos 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)

Programación Funcional Haskell Clase 21

El lenguaje C. 1. Identificadores, constantes y variables

Introducción a C++ y Code::Blocks

Tema 7. El sistema de clases

Es toda la información que utiliza el computador. Según sea la información que guardemos en los datos, se clasifican en los siguientes tipos:

Ficha de Aprendizaje N 13

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

Constantes. Las constantes no cambian durante la ejecucion de un programa en C++, en C++ existen 4 tipos de constantes:

Guía 2: Funciones, listas, recursión e inducción

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

Programación 1 Tema 3. Información, datos, operaciones y expresiones

Programación Funcional en Haskell

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

OPERADORES Y EXPRESIONES

Tipos de Datos de python (1ª parte):

Tutorial para saber cómo crear una cuenta de correo electrónico

Tema 2: Introducción a la programación con Haskell

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Vamos a profundizar un poco sobre los distintos tipos de datos que podemos introducir en las celdas de una hoja de cálculo

Programación. Test Autoevaluación Tema 3

Preliminares. Tipos de variables y Expresiones

FÓRMULAS Y FUNCIONES

Fundamentos de JAVA. Angel Kuri Enero, /2/2006

Introducción a la Programación 11 O. Humberto Cervantes Maceda

Introducción al lenguaje de programación java

Capítulo 7 OPERADORES Y EXPRESIONES. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

Tema 11. Listas infinitas

Guía del uso de de los Foros en la Aula Virtual del ICAES

TIPOS DE VARIABLES EN PHP. DECLARACIÓN Y ASIGNACIÓN. LA INSTRUCCIÓN ECHO PARA INSERTAR TEXTO O CÓDIGO. (CU00816B)

Datos y tipos de datos

Descripción y Contenido del Curso. Programación C++ Capacity Academy.

Programación en java. Estructuras algorítmicas

FACULTAD DE INGENIERÍA

Tipos primitivos y clases de interés

Tema 3.- Predicados y sentencias condicionales

Un identificador le da nombre único a un elemento en un programa (Variables, procedimientos, etc.). No puede contener operadores como + - * /

2. EXPRESIONES 3. OPERADORES Y OPERANDOS 4. INDENTIFICADORES COMO LOCALIDADES DE MEMORIA

Sintaxis básica, variables y 7pos

Fundamentos de Programación 2017-I

Estatutos de Control C# Estatutos de Decisión (Selección)

Tema 13: Aplicaciones de programación funcional

FUNDAMENTOS DE INFORMÁTICA

GUÍA BÁSICA DE SCHEME v.4

TEMA 7: Ficheros. TEMA 7: Ficheros Concepto de fichero

Fundamentos de la programación

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Lógica y Programación

Lección 2 Introducción al lenguaje C

Tema 3. Tipos de datos simples

Computación III. Objetivo de aprendizaje del tema

Expresiones Aritméticas. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

Objetivo de la práctica: crear una cuenta de correo que se utilizará durante el curso.

TUTORIAL SOBRE EXPRESIONES REGULARES EN JAVASCRIPT PARA VALIDACIÓN DE CAMPOS EN FORMULARIOS HTML:

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos

CONCEPTOS BASICOS DEL LENGUAJE JAVA

Instituto Tecnológico de Celaya

Introducción a Java III. Prof. MSc. Pedro Shiguihara

EJERCICIOS DE LENGUAJES Y PARADIGMAS DE PROGRAMACIÓN (CUESTIONES DE EXAMEN) PROGRAMACIÓN FUNCIONAL

FUNDAMENTOS DE PROGRAMACIÓN. Practica 2. Manejo de datos

Expresiones y sentencias

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Manual de Usuario Webmail Horde

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

Curso de iniciación a las TIC en Educación Permanente CEP de Castilleja (Sevilla) (octubre/noviembre 2009) Calc. Eva Sánchez-Barbudo Vargas

TUTORIAL PSEINT. Ing. Ronald Rentería Ayquipa. Fundamentos de Programación

CONSEJOS SOBRE WORD 2012

FUNCIONES Y FÓRMULAS FUNCIONES

Instrucciones para descargar el archivo de la prueba de diagnóstico.

Procesos e Hilos en C

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática

Elementos de un programa en C

Configuración de Contactos para administradores

Servicios de Internet

Programación en Visual Basic Ricardo Rodríguez García

Antes de crear el aula, les indicamos unas pautas para que puedan copiar los datos de la sala que no está operativa.

Lección 2: Creando una Aplicación en Java. 1. Estructura del archivo de una clase. 3. Definiendo clases fundamentos

Representación de la información

TI 89. Cómo sobrevivir en Precálculo

Curso de Programación Avanzada en C

Validación de datos y reglas de validación

RESUMEN DE LA PAGINA BLACKBOARD

MIA RICARDO GONZALEZ LOZANO APLICACIONES EN LENGUAJE C

TIPO DE DATO ABSTRACTO (TDA)

Combinación de correspondencia en Microsoft Office Word 2003

12 símbolos (13 si se incluye el espacio en blanco)

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Funciones mas importantes para el manejo de Caracteres

Transcripción:

Introducción a los Algoritmos Tipos, Funciones y Patrones Pedro Sánchez Terraf CIEM-FaMAF Universidad Nacional de Córdoba FaMAF UNC 22 de marzo de 2017

Antes de empezar... 1 Entramos en la sesión de invitado. 2 Aula Virtual: http://www.famaf.proed.unc.edu.ar/course/view.php?id=317. 3 Material viejo y extras (esta charla por ejemplo: http://cs.famaf.unc.edu.ar/ pedro/introalg. (forma fácil: buscar Pedro Sanchez Terraf en Google, y en mi página hay un link de la materia). 4 Intro a Linux: datos básicos para utilizar este sistema operativo. P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 2 / 13

Contenido 1 Tipos Básicos y Derivados Listas 2 Funciones Cómo definirlas Patrones Funciones que comen listas 3 Haskell: ghci P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 3 / 13

Tipos Básicos y Derivados Trabajamos en la Compu 1 Abrir Terminal. 2 Abrir el intérprete de Haskell ghci. P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 4 / 13

Tipos Básicos Introdujimos los siguientes tipos básicos y otros (derivados) que podemos fabricar con ellos. Una expresión tiene tipo 1 Num: si su valor es un número (real). 10 5 + 7, x 2, length [x, y, z]. 2 Bool: si su valor es verdadero (True) o falso (False). 10 5 + 7 = x 2, 3 7 < 1, p q, 3 Char: si su valor es una caracter (letras, etc.). a, 1, (espacio). P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 5 / 13

Tipos Básicos Introdujimos los siguientes tipos básicos y otros (derivados) que podemos fabricar con ellos. Una expresión tiene tipo 1 Num: si su valor es un número (real). 10 5 + 7, x 2, length [x, y, z]. 2 Bool: si su valor es verdadero (True) o falso (False). 10 5 + 7 = x 2, 3 7 < 1, p q, 3 Char: si su valor es una caracter (letras, etc.). a, 1, (espacio). P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 5 / 13

Tipos Básicos Introdujimos los siguientes tipos básicos y otros (derivados) que podemos fabricar con ellos. Una expresión tiene tipo 1 Num: si su valor es un número (real). 10 5 + 7, x 2, length [x, y, z]. 2 Bool: si su valor es verdadero (True) o falso (False). 10 5 + 7 = x 2, 3 7 < 1, p q, 3 Char: si su valor es una caracter (letras, etc.). a, 1, (espacio). P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 5 / 13

Tipos en Haskell Podemos averiguar tipos con ghci usando :t. La compu no entiende Num No se pueden representar todos los números reales en la compu, pero podemos usar enteros (tipo Int), números con una cantidad fija de decimales (tipo Float) y hay más. Todos los demás tipos sí están definidos en Haskell. P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 6 / 13

Tipos en Haskell Podemos averiguar tipos con ghci usando :t. La compu no entiende Num No se pueden representar todos los números reales en la compu, pero podemos usar enteros (tipo Int), números con una cantidad fija de decimales (tipo Float) y hay más. Todos los demás tipos sí están definidos en Haskell. P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 6 / 13

Tipos en Haskell Podemos averiguar tipos con ghci usando :t. La compu no entiende Num No se pueden representar todos los números reales en la compu, pero podemos usar enteros (tipo Int), números con una cantidad fija de decimales (tipo Float) y hay más. Todos los demás tipos sí están definidos en Haskell. P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 6 / 13

Tipos Derivados Con los tipos básicos podemos hacer listas y tuplas. Las tuplas (pares, ternas, etc.) se escriben entre paréntesis y tienen tamaño fijo. 1 Listas. 1 [x,y + z] (de tipo [Num]), 2 [True, p] (de tipo [Bool]), 3 [ "hola", "chau"] (de tipo [String]) 2 Tuplas. 1 (3, 10,x 2) (de tipo (Num,Num,Num)), 2 (x 5,True) (de tipo (Num,Bool)). 3 ("Juan", 1.75) (de tipo (String, Num)), Comparar los tipos que obtenemos para ambos ejemplos (3) en Haskell. Se pueden combinar, por ejemplo, listas de listas [[1,2],[5],[8,9,10]] (de tipo [[Num]]), listas de pares [("Juan",1.75),("Jose",1.83)], pares de listas ([1,2,4],[ b, 1 ]) etcétera. P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 7 / 13

Tipos Derivados Con los tipos básicos podemos hacer listas y tuplas. Las tuplas (pares, ternas, etc.) se escriben entre paréntesis y tienen tamaño fijo. 1 Listas. 1 [x,y + z] (de tipo [Num]), 2 [True, p] (de tipo [Bool]), 3 [ "hola", "chau"] (de tipo [String]) 2 Tuplas. 1 (3, 10,x 2) (de tipo (Num,Num,Num)), 2 (x 5,True) (de tipo (Num,Bool)). 3 ("Juan", 1.75) (de tipo (String, Num)), Comparar los tipos que obtenemos para ambos ejemplos (3) en Haskell. Se pueden combinar, por ejemplo, listas de listas [[1,2],[5],[8,9,10]] (de tipo [[Num]]), listas de pares [("Juan",1.75),("Jose",1.83)], pares de listas ([1,2,4],[ b, 1 ]) etcétera. P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 7 / 13

Tipos Derivados Con los tipos básicos podemos hacer listas y tuplas. Las tuplas (pares, ternas, etc.) se escriben entre paréntesis y tienen tamaño fijo. 1 Listas. 1 [x,y + z] (de tipo [Num]), 2 [True, p] (de tipo [Bool]), 3 [ "hola", "chau"] (de tipo [String]) 2 Tuplas. 1 (3, 10,x 2) (de tipo (Num,Num,Num)), 2 (x 5,True) (de tipo (Num,Bool)). 3 ("Juan", 1.75) (de tipo (String, Num)), Comparar los tipos que obtenemos para ambos ejemplos (3) en Haskell. Se pueden combinar, por ejemplo, listas de listas [[1,2],[5],[8,9,10]] (de tipo [[Num]]), listas de pares [("Juan",1.75),("Jose",1.83)], pares de listas ([1,2,4],[ b, 1 ]) etcétera. P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 7 / 13

Tipos Derivados Con los tipos básicos podemos hacer listas y tuplas. Las tuplas (pares, ternas, etc.) se escriben entre paréntesis y tienen tamaño fijo. 1 Listas. 1 [x,y + z] (de tipo [Num]), 2 [True, p] (de tipo [Bool]), 3 [ "hola", "chau"] (de tipo [String]) 2 Tuplas. 1 (3, 10,x 2) (de tipo (Num,Num,Num)), 2 (x 5,True) (de tipo (Num,Bool)). 3 ("Juan", 1.75) (de tipo (String, Num)), Comparar los tipos que obtenemos para ambos ejemplos (3) en Haskell. Se pueden combinar, por ejemplo, listas de listas [[1,2],[5],[8,9,10]] (de tipo [[Num]]), listas de pares [("Juan",1.75),("Jose",1.83)], pares de listas ([1,2,4],[ b, 1 ]) etcétera. P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 7 / 13

Tipos Derivados Con los tipos básicos podemos hacer listas y tuplas. Las tuplas (pares, ternas, etc.) se escriben entre paréntesis y tienen tamaño fijo. 1 Listas. 1 [x,y + z] (de tipo [Num]), 2 [True, p] (de tipo [Bool]), 3 [ "hola", "chau"] (de tipo [String]) 2 Tuplas. 1 (3, 10,x 2) (de tipo (Num,Num,Num)), 2 (x 5,True) (de tipo (Num,Bool)). 3 ("Juan", 1.75) (de tipo (String, Num)), Comparar los tipos que obtenemos para ambos ejemplos (3) en Haskell. Se pueden combinar, por ejemplo, listas de listas [[1,2],[5],[8,9,10]] (de tipo [[Num]]), listas de pares [("Juan",1.75),("Jose",1.83)], pares de listas ([1,2,4],[ b, 1 ]) etcétera. P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 7 / 13

Más sobre Listas Las listas se construyen a partir de [] (lista vacía) y de (agregar elementos) En el Teórico [2,3] = 2 [3] = 2 (3 []) En Haskell [2,3] = 2 : [3] = 2 : (3 : [ ]) P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 8 / 13

Funciones ( operadores ) de Listas Pongo una lista de funciones que usaremos. En el Teórico head, tail, ++,!,,, # En Haskell head tail ++!! take drop length Ejemplo head [1,2,4] tail [1,2,4] [1] ++ [1,2] [3,4,5,6]!! 2 take 2 [3,4,5] drop 2 [3,4,5] Ejercicio Probar más ejemplos y descubrir que hacen estas funciones. Describir su comportamiento y tipo por escrito P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 9 / 13

Funciones ( operadores ) de Listas Pongo una lista de funciones que usaremos. En el Teórico head, tail, ++,!,,, # En Haskell head tail ++!! take drop length Ejemplo head [1,2,4] tail [1,2,4] [1] ++ [1,2] [3,4,5,6]!! 2 take 2 [3,4,5] drop 2 [3,4,5] Ejercicio Probar más ejemplos y descubrir que hacen estas funciones. Describir su comportamiento y tipo por escrito P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 9 / 13

Funciones ( operadores ) de Listas Pongo una lista de funciones que usaremos. En el Teórico head, tail, ++,!,,, # En Haskell head tail ++!! take drop length Ejemplo head [1,2,4] tail [1,2,4] [1] ++ [1,2] [3,4,5,6]!! 2 take 2 [3,4,5] drop 2 [3,4,5] Ejercicio Probar más ejemplos y descubrir que hacen estas funciones. Describir su comportamiento y tipo por escrito P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 9 / 13

Definiciones de Funciones (I) Para definir una función en el Teórico usamos el signo =.. Definición de S S.x =. x + 1 Decidamos si S.(1 + 1) = S.1 + S.1 P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 10 / 13

Definiciones de Funciones (I) Para definir una función en el Teórico usamos el signo. =. Definición de S S.x. = x + 1 S.(1 + 1) = S.1 + S.1 { Definición de S } 1 + 1 + 1 = S.1 + S.1 { Definición de S x2 } 1 + 1 + 1 = 1 + 1 + 1 + 1 { Aritmética } 3 = 4 { Aritmética } False P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 10 / 13

Definiciones de Funciones (I) Para definir una función en el Teórico usamos el signo. =. Definición de S S.x. = x + 1 S.(1 + 1) = S.1 + S.1 { Definición de S } 1 + 1 + 1 = S.1 + S.1 { Definición de S x2 } 1 + 1 + 1 = 1 + 1 + 1 + 1 { Aritmética } 3 = 4 { Aritmética } False P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 10 / 13

Definiciones de Funciones (I) Para definir una función en el Teórico usamos el signo. =. Definición de S S.x. = x + 1 S.(1 + 1) = S.1 + S.1 { Definición de S } 1 + 1 + 1 = S.1 + S.1 { Definición de S x2 } 1 + 1 + 1 = 1 + 1 + 1 + 1 { Aritmética } 3 = 4 { Aritmética } False P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 10 / 13

Definiciones de Funciones (I) Para definir una función en el Teórico usamos el signo. =. Definición de S S.x. = x + 1 S.(1 + 1) = S.1 + S.1 { Definición de S } 1 + 1 + 1 = S.1 + S.1 { Definición de S x2 } 1 + 1 + 1 = 1 + 1 + 1 + 1 { Aritmética } 3 = 4 { Aritmética } False P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 10 / 13

Definiciones de Funciones (II) Los argumentos de las funciones no necesariamente son variables, sino pueden ser patrones. En el Teórico g.(x + 2). = x 3 Ejemplo g.8 = { Escribo 8 según patrón x + 2 } g.(6 + 2) = { Definición de g } 6 3 = { Aritmética } 18 Ejercicio Aplicar g a 10 y a y + 4. P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 11 / 13

Definiciones de Funciones (II) Los argumentos de las funciones no necesariamente son variables, sino pueden ser patrones. En el Teórico g.(x + 2). = x 3 Ejemplo g.8 = { Escribo 8 según patrón x + 2 } g.(6 + 2) = { Definición de g } 6 3 = { Aritmética } 18 Ejercicio Aplicar g a 10 y a y + 4. P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 11 / 13

Definiciones de Funciones (II) Los argumentos de las funciones no necesariamente son variables, sino pueden ser patrones. En el Teórico g.(x + 2). = x 3 Ejemplo g.8 = { Escribo 8 según patrón x + 2 } g.(6 + 2) = { Definición de g } 6 3 = { Aritmética } 18 Ejercicio Aplicar g a 10 y a y + 4. P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 11 / 13

Definiciones de Funciones (II) Los argumentos de las funciones no necesariamente son variables, sino pueden ser patrones. En el Teórico g.(x + 2). = x 3 Ejemplo g.8 = { Escribo 8 según patrón x + 2 } g.(6 + 2) = { Definición de g } 6 3 = { Aritmética } 18 Ejercicio Aplicar g a 10 y a y + 4. P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 11 / 13

Definiciones de Funciones (II) Los argumentos de las funciones no necesariamente son variables, sino pueden ser patrones. En el Teórico g.(x + 2). = x 3 Ejemplo g.8 = { Escribo 8 según patrón x + 2 } g.(6 + 2) = { Definición de g } 6 3 = { Aritmética } 18 Ejercicio Aplicar g a 10 y a y + 4. P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 11 / 13

Definiciones de Funciones (II) Los argumentos de las funciones no necesariamente son variables, sino pueden ser patrones. En el Teórico g.(x + 2). = x 3 Ejemplo g.8 = { Escribo 8 según patrón x + 2 } g.(6 + 2) = { Definición de g } 6 3 = { Aritmética } 18 Ejercicio Aplicar g a 10 y a y + 4. P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 11 / 13

Definiciones de Funciones (III) Un ejemplo de función que tiene una lista como argumento. En el Teórico head.(x xs). = x En Haskell head (x : xs) = x Notar el patrón (x xs). Ejercicio Aplicarla a [1,2,3], a [ "hola", "chau"] y a [[],[1,2]]. P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 12 / 13

Definiciones de Funciones (III) Un ejemplo de función que tiene una lista como argumento. En el Teórico head.(x xs). = x En Haskell head (x : xs) = x Notar el patrón (x xs). Ejercicio Aplicarla a [1,2,3], a [ "hola", "chau"] y a [[],[1,2]]. P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 12 / 13

Definiciones de Funciones (III) Un ejemplo de función que tiene una lista como argumento. En el Teórico head.(x xs). = x En Haskell head (x : xs) = x Notar el patrón (x xs). Ejercicio Aplicarla a [1,2,3], a [ "hola", "chau"] y a [[],[1,2]]. P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 12 / 13

Tarea 1 Escribir la función signo de la clase del lunes y la del ejercicio 16(a) de la Guía 1. 2 Guardar el archivo con el nombre apellido nombre.hs, todo minúsculas, sin números (ejemplo: sanchezterraf pedro.hs), uno por alumno. 3 Enviarlo a mi email (pedrost arroba gmail punto com). 4 Entregar por escrito la descripción de las funciones, sus tipos, los dos ejemplos de g y los dos primeros de head (evaluar head.[1,2,3], head.["hola", "chau"]). Una vez creado el archivo, se puede abrir con ghci. 1 En ghci, cargamos nuestro archivo con :l (dos puntos ele). :l apellido nombre.hs Si no anda corregirlo antes de enviar. 2 Podemos ahora probar ejemplos. P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 13 / 13

Tarea 1 Escribir la función signo de la clase del lunes y la del ejercicio 16(a) de la Guía 1. 2 Guardar el archivo con el nombre apellido nombre.hs, todo minúsculas, sin números (ejemplo: sanchezterraf pedro.hs), uno por alumno. 3 Enviarlo a mi email (pedrost arroba gmail punto com). 4 Entregar por escrito la descripción de las funciones, sus tipos, los dos ejemplos de g y los dos primeros de head (evaluar head.[1,2,3], head.["hola", "chau"]). Una vez creado el archivo, se puede abrir con ghci. 1 En ghci, cargamos nuestro archivo con :l (dos puntos ele). :l apellido nombre.hs Si no anda corregirlo antes de enviar. 2 Podemos ahora probar ejemplos. P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 13 / 13

Tarea 1 Escribir la función signo de la clase del lunes y la del ejercicio 16(a) de la Guía 1. 2 Guardar el archivo con el nombre apellido nombre.hs, todo minúsculas, sin números (ejemplo: sanchezterraf pedro.hs), uno por alumno. 3 Enviarlo a mi email (pedrost arroba gmail punto com). 4 Entregar por escrito la descripción de las funciones, sus tipos, los dos ejemplos de g y los dos primeros de head (evaluar head.[1,2,3], head.["hola", "chau"]). Una vez creado el archivo, se puede abrir con ghci. 1 En ghci, cargamos nuestro archivo con :l (dos puntos ele). :l apellido nombre.hs Si no anda corregirlo antes de enviar. 2 Podemos ahora probar ejemplos. P. Sánchez Terraf (CIEM-FaMAF UNC) Tipos, Funciones, Patrones IntroAlg, 22/03/2017 13 / 13