Aplicación de la Inducción Matemática Programación Funcional. Julio Ariel Hurtado Alegría Departamento de Sistemas Universidad del Cauca

Documentos relacionados
Tema 3: Características de la programación funcional. Sesión 5: El paradigma funcional (1)

GUÍA BÁSICA DE SCHEME v.4

Programación Funcional Lisp-DrScheme Primera Parte. Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad de Nacional

Tema 3.- Predicados y sentencias condicionales

4.7 Operaciones sobre Objetos en Scheme

Programación Funcional Lisp-Scheme

Contenido. Prefacio Orígenes de la programación orientada a objetos... 1

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

ANEXO XVII DE LA RESOLUCION N

Modelos de Desarrollo de Programas Y Programación Concurrente Clase N 3

Abstracción de Datos y

Algoritmos y programas. Algoritmos y Estructuras de Datos I

UNIVERSIDAD AUTONOMA DE QUERETARO Facultad de Informática

INTRODUCCION A LA PROGRAMACIÓN ORIENTADA A OBJETOS

Introducción a la programación

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Introducción a Python. Cecilia Manzino

Tema 8: Tipos de datos. Sesión 24: Tipos de datos (1)

DESCRIPCIÓN ESPECÍFICA NÚCLEO: COMERCIO Y SERVICIOS SUBSECTOR: INFORMÁTICA

Curso de Java Introducción a la Programación III

Inicio del programa. Entrada de datos. Proceso de datos. Salida de datos. Fin del programa

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Programación Orientada a Objetos

Procedimientos Definidos Localmente

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

Tema 1. Introducción a la Programación Orientada a Objetos

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes

Construcciones del Lenguaje Java

Manual de turbo pascal

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III

Introducción a la programación: Algoritmos

Tema 4: Definición de funciones

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

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

2.2 Nombres, Ligado y Ámbito

TÍTULO: MATEMÁTICA DISCRETA Y LÓGICA Disponibilidad

INDICE Prologo 1 Recorrido rápido de java 2 Clases y objetos 3 Extensión de clases

PHP: Lenguaje de programación

INDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación

INTRODUCCIÓN...9 CAPÍTULO 1. ELEMENTOS DE UN PROGRAMA INFORMÁTICO...11

Estructura de Datos y de la Información. Tema 1: Introducción a los tipos abstractos de datos

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.

1. Computadores y programación

Tema 1 Programación Funcional

TP 3: intérprete de C en LISP (alias máquina virtual de C en LISP )

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales

JavaScript: Lenguaje de programación

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

Tema 3. Patrones y Definiciones de Funciones

El lenguaje C. 1. Identificadores, constantes y variables

Introducción a PL/SQL

Programación n Orientada a Objetos Sentencias Java Parte I. Ing. Julio Ernesto Carreño o Vargas MsC.

INICIACIÓN A LA PROGRAMACIÓN 1ª parte

Es un conjunto de palabras y símbolos que permiten al usuario generar comandos e instrucciones para que la computadora los ejecute.

Tema 4: Procedimientos y estructuras recursivas

INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN. Métodos Numéricos Carlos Zotelo

GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo:

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos

Algoritmos. Diagramas de Flujo. Informática IV. L. S. C. Heriberto Sánchez Costeira

Semántica Denotacional

1 Software de una computadora 2 Sistemas operativos 3 Manejo avanzado y programación en ms-dos 4 Lenguajes de programación

Informática. JavaScript: Lenguaje de programación. Fco J. Martín Mateos Carmen Graciani

C.I.F.: B Inscrita en el Registro Mercantil de Madrid, Tomo Libro 0, Folio 135, Sección 8. Hoja M Inscripción 1ª

Manual de Lisp para IACS (Curso 91 92)

2 INTRODUCCIÓN A LISP

Planificaciones Algoritmos y Programación I. Docente responsable: CARDOZO MARTIN MIGUEL. 1 de 8

Fundamentos de Programación Visual Basic

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

PROGRAMA DE CURSO. Horas Docencia Horas de Trabajo Horas de Cátedra Docentes. Personal

Tipos paramétricos y recursivos

Introducción a Haskell. El lenguaje Haskell

C# para no Programadores

Lenguaje de programación con JAVA

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

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;)

ESCUELA SUPERIOR POLITECNICA DEL LITORAL PROGRAMA DE ESTUDIOS

PROGRAMA DE CURSO. Escuela de Ingeniería de Sistemas y Computación Universidad del Valle Santiago de Cali, Colombia. Febrero 2007

Guía 1: Funciones, precedencia y tipado

Semántica: principales usos. Semántica: principales enfoques. Semántica Operacional. Sintaxis abstracta de un lenguaje (sujeto) Semántica Operacional

Universidad de Managua

5. Sentencias selectivas o condicionales

Tema 5. Soporte lógico de computadoras.

AREA A LA QUE PERTENECE: 103 Matemática Básica 2 34 créditos POST REQUISITO: CATEGORIA: Obligatorio SEMESTRE: Primer Semestre 2015

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

INDICE Parte 1. Visual Basic Capitulo 1. Qué es Visual Basic? Capitulo 22. Mi Primera Aplicación Capitulo 3. Elementos del lenguaje

Procesadores de lenguaje Tema 5 Comprobación de tipos

Programación Básica. Martin Méndez Facultad de Ciencias Universidad Autónoma de San Luis Potosí

Tema 01: Algoritmia y diagramas de flujo. Estructuras de datos (Prof. Edgardo A. Franco)

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

POST REQUISITO: CATEGORIA: Obligatorio SEMESTRE: Primer Semestre 2015 HORAS POR SEMANA DEL LABORATORIO: DIAS QUE SE IMPARTE EL LABORATORIO:

Capítulo 16. Diagrama de Clases UML

Tema 3. Patrones y Definiciones de Funciones

Metodologías de Programación II Introducción

Desarrollo de aplicaciones con JAVA, JCreator, JDeveloper NetBeans

Programación con Visual C#

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

Módulo 8: Primitivas en Pascal

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

Introducción rápida a la programación (estructurada ) con C++

Representación de Conocimientos

Transcripción:

Aplicación de la Inducción Matemática Programación Funcional Julio Ariel Hurtado Alegría Departamento de Sistemas Universidad del Cauca

Motivación Programación Imperativa Declarativa Procedimental Ejemplo: C Orientada a Objetos Ejemplo: Smalltalk Lógica Ejemplo: Prolog Funcional Ejemplo: Lisp

Programación lógica y funcional: Antecedentes Históricos. 30 s Alan Turing, Alonzo Church, Stephen Kleene y Emil Post desarrollan por separado formalizaciones de la noción de algoritmo. Turing Máquina de Turing Church equivalencia entre lenguajes, Lambda Cálculo. Kleene y Post definiciones abstractas sin vinculación directa a la implementación de un lenguaje de programación.

Programación Funcional: Concepto. La programación funcional define las salidas de un programa como una función matemática de sus entradas, sin noción de estado interno, y, por tanto sin efectos de borde. Lisp lenguaje funcional original y el más utilizado. Algunos lenguajes funcionales: Scheme, Common Lisp, Ml, Miranda, Haskell, Sisal.

Programación Funcional: Características prácticas Valores de Funciones de Primer Orden y Funciones de Orden Superior. Polimorfismo. Tipo Lista y sus Operadores. Recursión. Retorno de datos estructurados. Constructores de objetos estructurados. Recolección de Basura.

Ventajas y Desventajas de los lenguajes funcionales. Ventajas: Más fáciles de escribir, depurar y mantener que los lenguajes imperativos gracias a la ausencia de efectos de borde. Desventajas: Se quedan cortos en portabilidad, riqueza de librerías, interfaces con otros lenguajes y herramientas de depuración.

Caso de Estudio: Scheme Procede de Lisp que es el lenguaje funcional más utilizado. Características adicionales de Lisp aplicables a Scheme: Homogeneidad de programas y datos. Autodefinición. Interacción con el usuario a través de un ciclo leerevaluar-imprimir.

Scheme: Características Notación Cambridge-Polish La utilización de paréntesis indican la aplicación de una función o el uso de un macro. El símbolo de quoting ( evita que el interpretador evalúe una expresión. El tipo de los elementos es determinado en tiempo de ejecución.

Scheme: Predicados A pesar de ser un lenguaje funcional Scheme ofrece entre otros los siguientes predicados: (boolean? x (char? x (string? x (symbol? x (member? x lst (pair? x (list? x #t #f

Scheme: Funciones Las funciones se definen a través de la palabra reservada lambda (lambda (x (* x x Lista de parámetros formales de la función Cuerpo de la función Expresiones condicionales pueden ser escritas utilizando un if. Ejemplo: (if (< 2 3 4 5 4

Scheme: Asociación (Binding Para asociar un nombre a una función se utilizan las expresiones let (localmente o define (globalmente. (let ((a 3 (b 4 (square (lambda (x (* x x (plus + (sqrt (plus (square a (square b Lista de pares nombre valor Aplicación de funciones definidas

Scheme: Listas y Números Los principales operadores definidos para la manipulación de listas son los siguientes: car retorna la cabeza de la lista. cdr retorna el resto de la lista. cons agrega un elemento a la cabecera de la lista. null? determina si u argumento es la lista vacía. Tipos Numéricos: integer, rational, real, complex, number.

Scheme: Flujo de Control y Asignaciones. Una secuencia de intrucciones al estilo ifelse puede implementarse con la función cond.

Listas: car, cdr, cons (car '(1 2 3 1 (cdr '(1 2 3 (2 3 (car '( o (cdr '( error (cons 0 '(1 2 3 (0 1 2 3 (car (cons x lst x (cdr (cons x lst l

Largo de una Lista (define largo (lambda (lst (if (null? lst 0 (+ (largo (cdr lst 1

Suma de los elementos de una Lista (define (sum l (cond ((null? l 0 (else (+ (car l (sum (cdr l

Map (define (map proc lst (cond ((null? lst '( (else (cons (proc (car lst (map proc (cdr lst Ejemplo : (map sqrt '(25 9 16 (5 3 4

Invertir una lista (define (rev l (rev2 l '( (define (rev2 l r (cond ((null? l r (else (rev2 (cdr l (cons (car l r

Recursión por la cola (define (largo l (cond ((null? l 0 (else (+ 1 (largo (cdr l (define (largo l (tail-len l 0 (define (tail-len l s (cond ((null? l s (else (tail-len (cdr l (+ s 1

Funciones de Orden Superior (define (generica f x y (f x y (generica > 5 2 (generica (lambda (a b (- b (* a 2 3 10 (generica append '(a b c '(x y z

Desarrollo P. Funcional Racket http://racket-lang.org/

Aplicación de la Inducción Matemática Programación Funcional Julio Ariel Hurtado Alegría Departamento de Sistemas Universidad del Cauca