Introducción a la programación funcional
|
|
|
- María Josefa Guzmán Macías
- hace 8 años
- Vistas:
Transcripción
1 Introducción a la programación funcional Salvador Lucas Alba Departamento de Sistemas Informáticos y Computación Universidad Politécnica de Valencia
2 Objetivos Relacionar la noción matemática de función y los lenguajes de programación funcionales Introducir los recursos expresivos básicos de los lenguajes funcionales Introducir el modelo computacional de los lenguajes funcionales
3 Desarrollo 1. Lenguajes funcionales como lenguajes de programación 2. Historia y evolución de los lenguajes funcionales 3. Ventajas e inconvenientes de los lenguajes funcionales 4. Aplicaciones
4 Desarrollo 1. Lenguajes funcionales como lenguajes de programación 2. Historia y evolución de los lenguajes funcionales 3. Ventajas e inconvenientes de los lenguajes funcionales 4. Aplicaciones
5 Concepto de función Concepto de función D E
6 Concepto de función Función parcial f D E
7 Concepto de función Función parcial f D Determinismo! E
8 Concepto de función Función total f D E
9 Concepto de función Función como transformación D f E
10 Descripción de una función Extensional - Intensional f D f E D E Grafo de la función Regla de transformación
11 Descripción de una función Extensional - Intensional Ejemplo: sign:int {neg,cero,pos}
12 Descripción de una función Extensional - Intensional Ejemplo: sign:int {neg,cero,pos} Descripción extensional: {...,(-2,neg),(-1,neg),(0,cero),(1,pos),(2,pos),...}
13 Descripción de una función Extensional - Intensional Ejemplo: sign:int {neg,cero,pos} Descripción extensional: {...,(-2,neg),(-1,neg),(0,cero),(1,pos),(2,pos),...} Descripción intensional: neg si x<0 sign(x) = cero si x=0 pos si x>0
14 Descripción de una función Propiedades de interés computacional Determinismo Dado un argumento de entrada, una función siempre devuelve el mismo resultado Dependencia de los argumentos El resultado devuelto por una función sólo depende de sus argumentos de entrada Extensionalidad Dos funciones son iguales si y sólo si responden igual ante los mismos argumentos
15 Descripción de una función Propiedades de interés computacional Llamada a una función: Función: f: D E Elemento: d D f(d) E Llamada a la función
16 Hacia un lenguaje funcional Hacia un lenguaje funcional Planteamiento básico Resolver problemas de cómputo empleando: definiciones de función para especificar problemas llamadas a función para expresar el proceso de cómputo que resuelve el problema planteado
17 Hacia un lenguaje funcional Hacia un lenguaje funcional Planteamiento básico Resolver problemas de cómputo empleando: definiciones de función para especificar problemas llamadas a función para expresar el proceso de cómputo que resuelve el problema planteado
18 Hacia un lenguaje funcional Hacia un lenguaje funcional Planteamiento básico f D E El dominio y el codominio...
19 Hacia un lenguaje funcional Hacia un lenguaje funcional Planteamiento básico f type D =... type E =... D E... se describen mediante tipos.
20 Hacia un lenguaje funcional Hacia un lenguaje funcional Planteamiento básico f type D =... type E =... D E El grafo de la función...
21 Hacia un lenguaje funcional Hacia un lenguaje funcional Planteamiento básico f type D =... type E =... D E... mediante ecuaciones. f x =...
22 Hacia un lenguaje funcional Hacia un lenguaje funcional Planteamiento básico Resolver problemas de cómputo empleando: definiciones de función para especificar problemas llamadas a función para expresar el proceso de cómputo que resuelve el problema planteado
23 Hacia un lenguaje funcional Hacia un lenguaje funcional Planteamiento básico f f(d) d D E Las llamadas a función requieren un mecanismo de cómputo
24 Hacia un lenguaje funcional Hacia un lenguaje funcional Planteamiento básico Funciones Dominios y codominios Descripción de una función Llamada a una función Lenguajes funcionales Tipos Ecuaciones de definición de funciones Expresiones sintácticas + Proceso de evaluación por reducción
25 Hacia un lenguaje funcional Hacia un lenguaje funcional Planteamiento básico Lenguajes funcionales Tipos Ecuaciones de definición de funciones Expresiones sintácticas + Proceso de evaluación por reducción
26 Desarrollo 1. Lenguajes funcionales como lenguajes de programación 2. Historia y evolución de los lenguajes funcionales 3. Ventajas e inconvenientes de los lenguajes funcionales 4. Aplicaciones
27 El cálculo lambda El cálculo lambda Motivación Introducido por A. Church entre 1930 y 1940 Modelado de las características computacionales fundamentales de las funciones: Una función tiene argumentos o parámetros formales (que determinan su resultado) Una función se aplica sobre sus parámetros reales (llamada a función) Al evaluar dicha llamada se obtiene el resultado
28 El cálculo lambda El cálculo lambda Ejemplo: x-y Sintaxis f(x)=x-y g(y)=x-y Notación λ λx.x-y λy.x-y Funciones con nombre Funciones sin nombre
29 El cálculo lambda El cálculo lambda Ejemplo: Sintaxis Notación λ se evalúan a: (λx.x-y) 5 (λx.x-y) 5 5-y (λy.x-y) 5 Aplicación (λy.x-y) 5 β-reducción x-5
30 El cálculo lambda El cálculo lambda El cálculo λ proporciona un lenguaje funcional elemental Lenguaje funcional = cálculo λ + `azúcar sintáctico
31 Lisp Motivación Introducido por J. McCarthy en 1960 Aportaciones (I): Programas como conjunto de definiciones de función Ejecución de un programa como evaluación de una expresión inicial respecto a las definiciones Utiliza la evaluación impaciente (eager) como mecanismo de cómputo
32 Aportaciones (II): Lisp Motivación Introdujo la expresión condicional (por contraposición a la sentencia condicional) fomentando su uso en definiciones recursivas Utilización de listas y operaciones de orden superior sobre listas (List Processing) Introducción del operador de construcción de listas cons para representar éstas en el ordenador
33 Lisp Sintaxis Nombre Argumentos Expresión (condicional) Ejemplo: (define mapcar (fun lst) (if (null lst) nil (cons (fun (car lst)) (mapcar fun (cdr lst)) ) ) ) Constructor de listas Recursividad
34 Iswim Motivación Introducido por P. Landin en 1966 (Iswim: If you see what Imean) Aportaciones (I): Abandono de la sintaxis prefija (para los operadores) a favor de la infija Introducción de una norma de estructuración textual de los programas (layout) para agrupar componentes mediante sangrado
35 Aportaciones (II): Iswim Motivación Introducción de las cláusulas let y where junto con una noción de recursividad mutua y simultánea de las definiciones de función que permiten controlar el alcance de los identificadores definidos Introducción de una máquina abstracta (la SECD) para compilar lenguajes funcionales
36 Iswim Sintaxis Ejemplo: e where f x = x a b = 1 o bien e where {f x = x; a b = 1} es distinto de e where f x = x a b = 1
37 Iswim Sintaxis Ejemplo: o bien let f x = x a b = 1 in e let {f x = x; a b = 1} in e
38 FP Motivación Introducido por P. Backus en 1978 (FP: Functional Programming) Aportaciones: Abogar por el estilo funcional como superador de las deficiencias del estilo imperativo Proporcionar un núcleo sintáctico reducido con gran capacidad combinatoria
39 FP Sintaxis Ejemplo: Def IP = (/ +) (α ) Trans es un programa FP que define el producto escalar de un vector. En el programa, /, y α son formas combinatorias (insert, compose y apply to all, respectivamente).
40 ML Motivación Introducido por R. Milner y otros autores en 1978 (ML: Meta Language) Aportaciones (I): Incorpora un sistema de tipos muy potente e incluye comprobación estática de tipos Utiliza inferencia de tipos para determinar el tipo de cada expresión, en lugar de requerir declaraciones de tipo explícitas
41 Aportaciones (II): ML Motivación Permite definir estructuras de datos y funciones polimórficas ML también utiliza la evaluación impaciente
42 ML Sintaxis Ejemplo: val pi = ; indicaría a un intérprete ML la intención de definir un valor pi. El intérprete acepta la acción y responde > val pi = : real indicando el tipo que le corresponde.
43 ML Sintaxis Ejemplo: (1) fun sum1to(n) = n*(n+1) div 2; > val sum1to = fn: int -> int (2) fun area r = pi*r*r; > val area = fn: real -> real
44 ML Sintaxis Ejemplo: (1) fun triple x = 3*x; > val triple = fn: int -> int (2) val triple = fn x => 3*x; > val triple = fn: int -> int
45 ML Sintaxis Ejemplo: (1) fun fst (x,y) = x; > val fst = fn: a * b -> a (2) fun snd (x,y) = y; > val snd = fn: a * b -> b
46 ML Ejemplo: reducción impaciente sum1to(3*3) sum1to(9) 9*(9+1) div 2 9*10 div 2 90 div 2 45 Sintaxis
47 Hope Motivación Introducido por R. Burstall y otros autores en 1980 Aportaciones (I): Permite la definición, por parte del usuario, de sus propios tipos y estructuras de datos
48 Aportaciones (II): Hope Motivación Utiliza ajuste de patrones para acceder a las estructuras de datos Utiliza ajuste de patrones para definir las funciones del programa
49 Hope Sintaxis Ejemplo: días laborables y colores data DiasL == lun++mar++mie++jue++vie ; data Colores == rojo++verde++azul ;
50 Hope Sintaxis Ejemplo: listas de enteros y listas de caracteres data NumList == nil++cons(num#numlist) ; data CharList == nil++cons(char#charlist) ;
51 Hope Sintaxis Ejemplo: listas de enteros y listas de caracteres data NumList == nil++cons(num#numlist) ; data CharList == nil++cons(char#charlist) ; Tipos predefinidos
52 Hope Sintaxis Ejemplo: listas de enteros y listas de caracteres data NumList == nil++cons(num#numlist) ; data CharList == nil++cons(char#charlist) ; Constructores de tipo
53 Hope Sintaxis Ejemplo: listas de enteros y listas de caracteres data NumList == nil++cons(num#numlist) ; data CharList == nil++cons(char#charlist) ; Constructores de datos
54 Hope Sintaxis Ejemplo: listas polimórficas typevar tipo ; data List(tipo) == nil++cons(tipo#list(tipo)) Variables de tipo
55 Hope Sintaxis Ejemplo: notación Hope para listas. Equivalente a: infix :: : 7 ; typevar tipo ; data List(tipo) == nil++tipo::list(tipo) ;
56 Hope Sintaxis Ejemplo: Las siguientes listas son válidas: 1::2::nil a :: b :: c ::nil lun::mie::nil pero no estas otras no: 1::2::3 a ::3:: c ::nil jue::rojo::nil
57 Hope Sintaxis Ejemplo: el ajuste de patrones permite acceder a subestructuras: el patrón 1::x representa las listas que empiezan con 1. Cuál de las siguientes listas se ajusta a él? 2::3::nil 2::1::3::nil 1::nil 1::2::nil
58 Hope Sintaxis Ejemplo: la variable x del patrón 1::x queda ligada a nil y 2::nil, respectivamente, al ajustar las expresiones 1::nil y 1::2::nil a dicho patrón
59 Hope Sintaxis Ejemplo: el ajuste de patrones puede emplearse para definir funciones: dec Join : list(tipo) # list(tipo) -> list(tipo) ; --- Join(nil,l) <= l ; --- Join(x::y,l) <= x::join(y,l) ;
60 Hope Sintaxis Ejemplo: [1,2] = 1::2::nil Join([1,2],[3]) 1::Join([2],[3]) 1::2::Join([],[3]) [1,2,3]
61 Hope Sintaxis Ejemplo: Join([1,2],[3]) 1::Join([2],[3]) 1::2::Join([],[3]) [1,2,3] Join([1,2],[3]) se ajusta a Join(x::y,l) con x:=1, y:=[2], l:=[3]
62 SASL - Miranda SASL - Miranda Motivación SASL y Miranda fueron introducidos por D. Turner en 1976 y 1985, respectivamente Aportaciones (I): Utilizan evaluación perezosa (lazy) Permiten definir funciones mediante ecuaciones con guardas Permite utilizar la currificación, lo cual facilita la definición de funciones de orden superior
63 Aportaciones (II): SASL - Miranda SASL - Miranda Motivación En Miranda se introducen facilidades para la definición de listas: listas ZF (comprehension lists) En Miranda se permite el uso de secciones
64 Ejemplo: SASL - Miranda SASL - Miranda Sintaxis sum1to::int -> int -> int sum1to n = n*(n+1) div 2
65 SASL - Miranda SASL - Miranda Sintaxis Ejemplo: reducción perezosa sum1to(3*3) (3*3)*((3*3) +1) div 2 9*((3*3) +1) div 2 9*(9+1) div 2 9*10 div 2 90 div 2 45
66 SASL - Miranda SASL - Miranda Sintaxis Ejemplo: utilización de guardas max:: num -> num -> num max a b = a, if a>b = b, otherwise
67 SASL - Miranda SASL - Miranda Sintaxis Ejemplo: currificación y orden superior map f [] = [] map f (x:xs) = (f x):map f xs
68 Ejemplo: listas ZF SASL - Miranda SASL - Miranda Sintaxis Lista de enteros y sus cuadrados: sqlist = [ (n,n*n) n<- [1..] ] Lista de enteros y sus cubos: cubes = [ (x*y) (x,y) <- sqlist ] Producto de enteros: [ (x,y) x,y<-[1..10] ]
69 SASL - Miranda SASL - Miranda Sintaxis Ejemplo: Secciones. Las declaraciones: doble x = 2*x doble = (2 *) doble = (* 2) definen la misma función
70 Haskell Haskell fue introducido por P. Hudak y P. Wadler en 1988 Es un lenguaje perezoso que recoge lo mejor de las propuestas anteriores
71 Otros lenguajes Otros lenguajes Erlang es un lenguaje funcional paralelo desarrollado por Ericsson Clean es otro lenguaje funcional paralelo desarrollado por investigadores de la Universidad de Nimega (Holanda)
72 Desarrollo 1. Lenguajes funcionales como lenguajes de programación 2. Historia y evolución de los lenguajes funcionales 3. Ventajas e inconvenientes de los lenguajes funcionales 4. Aplicaciones
73 Ventajas de los LF Ventajas de los LF Proporcionan muchos recursos expresivos ausentes en otros LP: 1. Funciones como ciudadanos de 1ª clase 2. Sistema de tipos: polimorfismo, inferencia 3. Ausencia de efectos laterales 4. Ajuste de patrones para acceder a datos 5. Evaluación perezosa
74 Ventajas de los LF Ventajas de los LF Los programas funcionales son pequeños y fáciles de mantener Los programas funcionales permiten utilizar técnicas de razonamiento formal La capacidad computacional de los lenguajes funcionales es equivalente a la de la máquina de Turing
75 Inconvenientes de los LF Inconvenientes de los LF Eficiencia: la arquitectura von Neumann no es la más indicada para implementar cómputos funcionales Algunos algoritmos son de carácter imperativo y no se ajustan bien al estilo funcional
76 Desarrollo 1. Lenguajes funcionales como lenguajes de programación 2. Historia y evolución de los lenguajes funcionales 3. Ventajas e inconvenientes de los lenguajes funcionales 4. Aplicaciones
77 Aplicaciones Prototipado en Haskell [HJ93] Erlang y la programación de sistemas de telecomunicaciones y telefonía Especialización de programas Haskell para la asignación de tripulaciones a vuelos [Aug97]
78 Bibliografía [Hud89] P. Hudak. Conception, Evolution, and Application of Functional Programming Languages. ACM Computing Surveys 21(3): , 1989 [PE93] R. Plasmeijer and M. van Eekelen. Functional Programming and Parallel Graph Rewriting. Addison- Wesley, Reading, MA, 1993 [Rea93] C. Reade. Elements of Functional Programming. Addison-Wesley, Reading, MA, 1993
79 λ :=
Tema 3: Características de la programación funcional. Sesión 5: El paradigma funcional (1)
Tema 3: Características de la programación funcional Sesión 5: El paradigma funcional (1) Referencias Capítulo 1.1.5 SICP: [[http://mitpress.mit.edu/sicp/full-text/book/book-z- H-10.html#%_sec_1.1.5][The
Algoritmos y programas. Algoritmos y Estructuras de Datos I
Algoritmos y programas Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2012 Departamento de Computación - FCEyN - UBA Programación funcional - clase 1 Funciones Simples - Recursión - Tipos de
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
Tema 3. Patrones y Definiciones de Funciones
Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 3. Patrones y Definiciones de Funciones 3.1 Comparación de Patrones Patrones constantes Patrones
Tema 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
Procesadores de lenguaje Tema 5 Comprobación de tipos
Procesadores de lenguaje Tema 5 Comprobación de tipos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Sistemas de tipos. Expresiones de tipo. Equivalencia de tipos. Sobrecarga,
Tema 9: Declaraciones de tipos y clases
Tema 9: Declaraciones de 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
Tipos de datos algebraicos
Tipos de datos algebraicos Taller de Álgebra I Segundo cuatrimestre de 2013 Programación funcional Recordemos que un tipo de datos es un conjunto dotado con una serie de operaciones sobre los elementos
Metodologías de Programación II Introducción
Metodologías de Programación II Introducción Dr. Alejandro Guerra-Hernández Departamento de Inteligencia Artificial Facultad de Física e Inteligencia Artificial [email protected] http://www.uv.mx/aguerra Maestría
Programación Funcional Lisp-DrScheme Primera Parte. Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad de Nacional
Programación Funcional Lisp-DrScheme Primera Parte Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad de Nacional Programación Funcional! La programación funcional es un paradigma de programación
Tema 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
GUÍA BÁSICA DE SCHEME v.4
Esta guía básica pretende ser una introducción elemental al lenguaje de programación Scheme. Se presenta como una guía de comienzo rápido de tal forma que permita conocer de una forma muy esquemática los
Tema 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
El sistema de clases de Haskell. Introducción
Capítulo 5. El sistema de clases de Haskell 56 El sistema de clases de Haskell Introducción Función monomórfica: sólo se puede usar para valores de un tipo concreto not :: Bool Bool not True = False not
Generación de Código Intermedio
Generación de Código Intermedio Programación II Margarita Álvarez Generación de código intermedio Con la generación de código intermedio se inicia la tarea de síntesis. Aunque un programa fuente se puede
La 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
Isabelle 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
Tema 4: Gramáticas independientes del contexto. Teoría de autómatas y lenguajes formales I
Tema 4: Gramáticas independientes del contexto Teoría de autómatas y lenguajes formales I Bibliografía Hopcroft, J. E., Motwani, R., y Ullman, J. D. Introducción a la Teoría de Autómatas, Lenguajes y Computación.
SISTEMAS 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
Un. VI. Generador de código intermedio.
Un. VI. Generador de código intermedio. La administración de la memoria se da en esta etapa. Se debe considerar tanto la memoria estática como dinámica, y en esta se utilizan generalmente pilas. Los lenguajes
Programación MODULAR: Subalgoritmos - funciones y procedimientos
Programación MODULAR: Subalgoritmos - funciones y procedimientos Uno de los métodos fundamentales para resolver un problema es dividirlo en problemas más pequeños, llamados subproblemas. Estos problemas
Programación Funcional Lisp-Scheme
Programación Funcional Lisp-Scheme Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad de Nacional Dónde bajar? Lisp (EdScheme): www.schemers.com com Ejemplo: => (+ (* 3(+ (* 24) (+ 35))) (+
Tema 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
Semántica: principales usos. Semántica: principales enfoques. Semántica Operacional. Sintaxis abstracta de un lenguaje (sujeto) Semántica Operacional
Semántica: principales enfoques Semántica Operacional Se define el significado mediante una máquina abstracta (con estados) y secuencias de cómputos sobre dicha máquina Semántica Denotacional El significado
Escribir programas a partir de un diagrama de flujo
Escribir programas a partir de un diagrama de flujo por Iván Cruz En esta lectura se revisará una estrategia específica para lograr implementar un programa computacional a partir de un diagrama de flujo,
EJERCICIOS 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
Tema 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
Tema 2: Introducción a la programación con Haskell
Tema 2: Introducción a la programación con Haskell 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
Introducción a Haskell. El lenguaje Haskell
Capítulo 2. Introducción a Haskell 9 Introducción a Haskell Un ejemplo de fichero Haskell El lenguaje Haskell Haskell es un lenguaje funcional puro, no estricto y fuertemente tipificado. Puro = transparencia
Guía práctica de estudio 05: Pseudocódigo
Guía práctica de estudio 05: Pseudocódigo Elaborado por: M.C. Edgar E. García Cano Ing. Jorge A. Solano Gálvez Revisado por: Ing. Laura Sandoval Montaño Autorizado por: M.C. Alejandro Velázquez Mena Guía
2007/ PROGRAMACIÓN. Tipo: TRO Curso: 1 Semestre: AB CREDITOS Totales TA TS AT AP PA OBJETIVOS. 1.-Introducción.
2007/2008 Tipo: TRO Curso: 1 Semestre: AB CREDITOS Totales TA TS AT AP PA OBJETIVOS 1.-Introducción. -Comprender cómo funciona un lenguaje de programación 2. Características del lenguaje C -Entender las
Análisis de Algoritmos
Análisis de Algoritmos Amalia Duch Barcelona, marzo de 2007 Índice 1. Costes en tiempo y en espacio 1 2. Coste en los casos mejor, promedio y peor 3 3. Notación asintótica 4 4. Coste de los algoritmos
INSTITUTO POLITECNICO NACIONAL SECRETARIA ACADEMICA DIRECCION DE ESTUDIOS PROFESIONALES EN INGENIERIA Y CIENCIAS FISICO MATEMATICAS
ESCUELA: UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS CARRERA: LICENCIATURA EN CIENCIAS DE LA INFORMÁTICA LÍNEA CURRICULAR: COORDINACIÓN: ACADEMIAS DE COMPUTACIÓN
1. Computadores y programación
1. Computadores y programación Informática y computadora (RAE) Informática (Ciencia de la computación) Conjunto de conocimientos científicos y técnicos que hacen posible el tratamiento automático de la
CONTENIDO. 1.- Introducción a la Inteligencia Artificial (IA) 2.- Lógica de predicados. 3.- Búsqueda de soluciones
CONTENIDO 1.- Introducción a la Inteligencia Artificial (IA) 2.- Lógica de predicados 3.- Búsqueda de soluciones 4.- Lenguajes de IA e Introducción a Sistemas Expertos 1.- Introducción a la Inteligencia
Tema 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
Tema 1 Programación Funcional
Tema 1 Programación Funcional Curso de Python Avanzado Juan Pedro Boĺıvar Puente Instituto de Astrofísica de Andalucía Mayo de 2011 Juan Pedro Boĺıvar Puente (Instituto de Astrofísica Tema de Andalucía)
TÍTULO: MATEMÁTICA DISCRETA Y LÓGICA Disponibilidad
TÍTULO: MATEMÁTICA DISCRETA Y LÓGICA Disponibilidad Calculo proposicional 1 Argumentos y proposiciones lógicas 1 Algunos argumentos lógicos importantes 2 Proposiciones 4 Conexiones lógicas 5 Negación (tabla)
Tema 6: Clases. Índice
Tema 6: Clases Antonio J. Sierra Índice 1. Fundamentos. 2. Declaración de objetos. 3. Asignación de objetos a variables referencia. 4. Métodos. 5. Constructores. 6. this. 7. Recogida de basura. 8. Modelado
Es un conjunto de palabras y símbolos que permiten al usuario generar comandos e instrucciones para que la computadora los ejecute.
Los problemas que se plantean en la vida diaria suelen ser resueltos mediante el uso de la capacidad intelectual y la habilidad manual del ser humano. La utilización de la computadora en la resolución
Coordinación de Ciencias Computacionales INAOE. Teoría de Autómatas y Lenguajes Formales. Temario detallado para examen de ingreso 2012
Coordinación de Ciencias Computacionales INAOE Teoría de Autómatas y Lenguajes Formales Temario detallado para examen de ingreso 2012 1. Autómatas 1.1. Por qué estudiar la teoría de autómatas? 1.1.1. Introducción
Unidad II: Análisis semántico
Unidad II: Análisis semántico Se compone de un conjunto de rutinas independientes, llamadas por los analizadores morfológico y sintáctico. El análisis semántico utiliza como entrada el árbol sintáctico
Ló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
Unidad 2. Introducción Lenguajes y Compiladores
Unidad 2 Introducción Lenguajes y Compiladores Principal material bibliográfico utilizado Compiladores Principios, técnicas y herramientas. Aho y Ullman. Addison Wesley. www.jorgesanchez.net www.iqcelaya.itc.mx/~vicente/programacion/tradcomp.pdf
El lenguaje Haskell 98
El lenguaje Haskell 98 Un lenguaje perezoso completamente Curry con sobrecarga. Juan Pedro Villa Introducción Las razones agudas son ronquidos para los oídos tontos. William
Contenido. Prefacio Orígenes de la programación orientada a objetos... 1
Prefacio... xv 1. Orígenes de la programación orientada a objetos... 1 1.1 La crisis del software... 1 1.2 Evolución del software... 3 1.3 Introducción a la programación orientada a procedimientos... 4
CARRERA DE CIECNIAS DE LA COMPUTACIÓN PROGRAMA DE ESTUDIO. Teóricos: 2 Práctico: 1 Total 3
ARQUITECTURA DE COMPUTADORES CÓDIGO Y CCO301 Total 3 Las matemática aplicada a la computación es el modelado, simulación y optimización de procesos o fenómenos, para procesos complejos, costosos, riesgosos,
Semántica Denotacional
Semántica Denotacional Idea: El significado de un programa es la función denotada por el programa Componentes del metalenguaje para la definición semántica denotacional de un L.P.: Dominios sintácticos
Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28
Componentes Básicos InCo InCo Componentes Básicos 1 / 28 Modelo de Computación Vemos al computador como un procesador de datos. +------------+ Entrada ===> Computador ===> Salida +------------+ InCo Componentes
Programación I Recursividad.
Programación I Recursividad http://proguno.unsl.edu.ar [email protected] Recursividad Técnica de resolución de problemas particulares. La definición de un concepto es recursiva si el concepto es definido
Solución al parcial 14
Solución al parcial 14 Marque V(erdadero) o F(also) según considere la proposición. 1. La lógica difusa es la emulación del razonamiento aproximado que realizan las máquinas. F: Las máquinas no realizan
Tema 5. Análisis semántico
Departamento de Tecnologías de la Información Tema 5 Análisis semántico Ciencias de la Computación e Inteligencia Artificial Índice 5.1 Características del análisis semántico 5.2 Gramáticas atribuidas
Tema 1. Introducción a la Programación Orientada a Objetos
Tema 1. Introducción a la Programación Orientada a Objetos Dpto. Lenguajes y Ciencias de la Computación. E.T.S.I. Informática. Universidad de Málaga Programación Orientada a Objetos Dpto. Lenguajes y Ciencias
Introducción. Algoritmos y Complejidad. Algoritmos y Algoritmia. Introducción. Problemas e instancias. Pablo R. Fillottrani
Introducción Introducción Pablo R. Fillottrani Depto. Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Algoritmos y Algoritmia Problemas e instancias Primer Cuatrimestre 2014 Algoritmos
Fundamentos de programación y Bases de Datos
Fundamentos de programación y Bases de Datos Duración: 25.00 horas Descripción En la actualidad la mayoría de nuestra vida esta basada en el uso de programas informáticos. Para desarrollar un programa
Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1
Prologo Agradecimientos Nota de los autores Índice general I III V VII 1 Problemas, algoritmos y programas 1 1.1 Programas y la actividad de la programación.................... 4 1.2 Lenguajes y modelos
Tema 3. Tipos de datos simples
Tema 3. Tipos de datos simples Contenido del tema: Concepto de tipo. Tipos simples. Operadores. Expresiones. Semántica. Tipos y expresiones en lenguaje C++ Francisco J. Veredas Dpto. Lenguajes y Ciencias
Apunte Laboratorio ALPI - El lenguaje de programación Pascal
Apunte Laboratorio ALPI - El lenguaje de programación Pascal 1 2 ÍNDICE GENERAL Índice 1. Estructura de un Programa en Pascal 3 2. Sintaxis de Pascal 4 2.1. Uso de mayúsculas.....................................
INTRODUCCION A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCION A LA PROGRAMACIÓN ORIENTADA A OBJETOS Introducción La programación orientada a objetos es un enfoque de programación de los más populares y viene teniendo gran aceptación en el desarrollo
PARADIGMAS DE PROGRAMACIÓN CALCULO LAMBDA CALCULO LAMBDA
PARADIGMAS DE PROGRAMACIÓN 2006 CALCULO LAMBDA CALCULO LAMBDA El cálculo lambda fue desarrollado por Alonso Church en la década del 30 con el objeto de dar una teoría general de las funciones. El cálculo
Universidad Autónoma del Estado de México Facultad de Medicina
Universidad Autónoma del Estado de México Facultad de Medicina Licenciatura en Bioingeniería Médica Unidad de Aprendizaje: Algoritmos y programación básica Unidad 3: Estructuras de control de flujo en
UNIVERSIDAD AUTONOMA DE QUERETARO Facultad de Informática
PROGRAMACIÓN ORIENTADA A OBJETOS(1602). ÁREA DE CONOCIMIENTO: PROGRAMACIÓN E INGENIERÍA DE SOFTWARE CRÉDITOS: 7 HORAS TEÓRICAS ASIGNADAS A LA SEMANA: 2 HORAS PRÁCTICAS ASIGNADAS A LA SEMANA: 2 PROGRAMAS
Tipos Recursivos de Datos
1/1 Tipos Recursivos de Datos Josefina Sierra Santibáñez 27 de noviembre de 2016 2/1 Introducción La recursividad no sólo se puede aplicar a la definición de procedimientos (i.e. funciones o acciones),
Introducción a Python. Cecilia Manzino
Características del lenguaje Es un lenguaje de programación multiparadigma, soporta la programación orientada a objetos, imperativa y, en menor medida, funcional. Es un lenguaje multiplataforma, puede
INDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación
INDICE Prologo XI Capitulo 1. Algoritmos y programas 1.1. Configuraciones de una computadora 1 1.2. Lenguajes de programación 2 1.3. Resolución de problemas 1.3.1. Fase de resolución del problema 3 1.3.1.1.
Estructuración del programa en partes más pequeñas y sencillas
Introducción Estructuración del programa en partes más pequeñas y sencillas Modularización Propósito único Identificable Reusable Mayor claridad: programación, depuración, etc. Construcción de librerías
Inteligencia artificial
Inteligencia artificial Proceso de Lenguaje Natural Qué es el Lenguaje? Qué es el Lenguaje Natural? Procesamiento del lenguaje Natural (PLN) Aplicaciones PLN Niveles del Lenguaje Arquitectura de un sistema
ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid. Indíce Algoritmo Elementos de un algoritmo: Variables, Constantes, Expresiones Datos: Definición y
ESCUELA 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
Guía práctica de estudio 05: Diagramas de flujo
Guía práctica de estudio 05: Diagramas de flujo Elaborado por: M.C. Edgar E. García Cano Ing. Jorge A. Solano Gálvez Revisado por: Ing. Laura Sandoval Montaño Guía práctica de estudio 05: Diagramas de
Programació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
Lambda-Cálculo. Mauro Jaskelioff 6/9/2011
Lambda-Cálculo Mauro Jaskelioff 6/9/2011 Origen del λ-cálculo El λ-cálculo fue inventado por Alonzo Church en la década de 1930. Originalmente fue inventado como parte de un sistema formal para modelar
INICIACIÓN A LA PROGRAMACIÓN 1ª parte
TEMA 4 INICIACIÓN A LA PROGRAMACIÓN 1ª parte Qué es la programación? La programación es el proceso de diseñar, codificar, depurar y mantener el código fuente de programas computacionales. En la actualidad,
Programa Oficial de Asignatura. Ficha Técnica. Presentación. Competencias y/o resultados del aprendizaje. Contenidos Didácticos
Ficha Técnica Titulación: Grado en Ingeniería Informática Plan BOE: BOE número 108 de 6 de mayo de 2015 Asignatura: Módulo: Programación y Estructura de Datos Curso: 1º Créditos ECTS: 6 Tipo de asignatura:
Programación Orientada a Objetos
Universidad de Carabobo Facultad Experimental de Ciencias y Tecnología Departamento de Computación Programación Orientada a Objetos Algoritmos y Programación II Junio, 2004 Las tecnologías de objetos hoy
Estructuras 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
Capítulo 4. Lógica matemática. Continuar
Capítulo 4. Lógica matemática Continuar Introducción La lógica estudia la forma del razonamiento, es una disciplina que por medio de reglas y técnicas determina si un teorema es falso o verdadero, además
Nociones Básicas de Sémantica: Semántica Denotacional
Nociones Básicas de Sémantica: Semántica Denotacional Análisis de Lenguajes de Programación Mauro Jaskelioff 21/08/2015 Acerca de la Semántica Operacional En la semántica operacional el significado de
Tema 7: Recursividad
Tema 7: Recursividad Objetivos: en este tema estudiaremos funciones recursivas; esto es, funciones que se invocan a sí mismas. Estas funciones son equivalentes a estructuras tipo bucle pero permiten especificar
Tema 2. Concepto de Algoritmo
Tema 2. Concepto de Algoritmo Objetivos Definir el concepto de algoritmo Resolver problemas sencillos mediante el diseño de un algoritmo Conocer los tipos de datos elementales y las operaciones sobre ellos
