Laboratorio Análisis Lógico Práctica 1
|
|
- Estefania Alvarado Miranda
- hace 5 años
- Vistas:
Transcripción
1 Laboratorio Análisis Lógico Práctica 1 Pedro Arturo Góngora Luna 1 1 Introducción 1.1 Haskell y la programación funcional En la década de los 30 s, Alonzo Church desarrolló un lenguaje formal llamado cálculo λ con la finalidad de analizar las propiedades del concepto de función en matemáticas. Con la continua investigación de Church, Curry 2, Kleene y otros, se sabe ahora que el cálculo λ es un modelo completo de computación, equivalente a otros modelos más conocidos como las máquinas de Turing. El paradigma de programación funcional tiene su base en el concepto de función, con sólidos fundamentos teóricos en el cálculo λ, la lógica combinatoria y las ecuaciones recursivas. A diferencia de los lenguajes imperativos, que no se deslindan del todo de las características del hardware, los lenguajes funcionales brindan un mayor nivel de abstracción. Por ejemplo, una oración como x = 5, significa que definimos a x como 5, mas no que asignamos el valor 5 a alguna celda de memoria de la computadora. Haskell es un lenguaje de programación perteneciente a este paradigma. La primera versión apareció al rededor de los 90 s. Desde entonces, el desarrollo ha sido continuo y ahora tenemos un estándar, Haskell 98. Ya el ejemplo de un párrafo anterior nos muestra una de las mayores diferencias (y de mayor confusión para los novatos) con los lenguajes imperativos, en Haskell no existe el concepto de asignación. La ausencia de la asignación en un lenguaje, implica que no tenemos a la mano estructuras como for ó while que aparecen en la mayoría de los lenguajes populares. Lo anterior puede parecer difícil, sin embargo, en Haskell podemos hacer uso de conceptos de más alto nivel como las definiciones recursivas, tipos de datos inductivos, etc. Aunque existen otros lenguajes funcionales más conocidos, como Lisp y Scheme, Haskell es un lenguaje funcional moderno. Es es un lenguaje funcional puro, es decir, no posee ninguna característica imperativa. Es un lenguaje no estricto y de orden superior. Además, tiene características únicas como las mónadas y tipos de datos algebraicos. En definitiva, Haskell provee de características interesantes para los matemáticos, computólogos y entusiastas de la programación funcional en general. 1.2 Implementaciones Existen varias implementaciones de Haskell, sin embargo, las más populares son Hugs y GHC (Glasgow Haskell Compiler). Hugs es un itérprete escrito en C. Es altamente portable y existen versiones para los sistemas operativos más comunes. GHC es un compilador, está escrito en Haskell y permite generar programas ejecutables binarios bastante eficientes. GHC también puede ser usado en modo interactivo (GHCi) de forma similar a Hugs. Ambos ambientes, y otros más, pueden descargarse del sitio oficial de Haskell 2 Desarrollo 2.1 Manejando el entorno Para iniciar el entorno de Haskell, ingresamos la instrucción $ hugs 1 pedro.gongora@gmail.com 2 Haskell Curry ( ) es uno de los fundadores de la lógica combinatoria, sobre la cual se basa el cálculo λ 1
2 en la línea de comandos, o la instrucción $ ghci para la versión interactiva de GHC. Como resultado, despues de unas líneas de presentación del programa, obtenemos un prompt como el siguiente Prelude> _ El significado del prompt es que se ha cargado la librería Prelude, la cual contiene definiciones básicas para nuestros programas. Intentemos ahora algunas pruebás sencillas Prelude> Prelude> 10+5*2 20 Prelude> max Prelude> max 25 (30 + 1) 31 Para cargar nuestros programas desde un archivo de texto, podemos usar los siguientes comandos del intérprete: :load <MiPrograma.hs> Compila y carga en el intérprete el código Haskell contenido en el archivo de texto MiPrograma.hs (podemos usar la abreviatura :l). :load Sin argumentos, el intérprete retirará de la memoria los módulos cargados anteriormente, dejando sólo Prelude. :reload Repite la última operación :load (esta instrucción puede abreviarse como :r). Por ejemplo, ejecuta un editor de textos (notepad, emacs, vi, etc.) y captura lo siguiente: -- Módulo: Prueba -- En Haskell los módulos empiezan con una letra mayúscula y los -- comentarios de una linea con -- module Prueba where {- Definimos la función cuad Las funciones y variables comienzan con una letra minúscula También tenemos comentarios de varias lineas -} cuad x = x * x -- esta función calcula el cuadrado identidad x = x -- esta es la función identidad y = 0 -- definimos la variable y como 0 Después de guardar el archivo bajo el nombre Prueba.hs, lo cargamos en el intérprete: Prelude> :l Prueba.hs Compiling Prueba ( Prueba.hs, interpreted ) Ok, modules loaded: Prueba. *Prueba> _ 2
3 Vemos que el prompt cambia para indicarnos que el módulo prueba ha sido cargado exitosamente. Podemos hacer las pruebas correspondientes: *Prueba> cuad 2 4 *Prueba> cuad (cuad 2) 16 *Prueba> identidad 5 5 *Prueba> identidad "hola" "hola" *Prueba> y 0 *Prueba> y Vamos resaltar algunos puntos del programa anterior: Utilizamos los identificadores cuad, identidad e y. En Haskell un identificador comienza con una letra minúscula, y puede seguirse de cualquier letra, mayúscula o minúscula, dígitos, y los caracteres _ y. Por ejemplo, todos los siguientes son identificadores válidos en Haskell: a, x1, x_1 y x. Utilizamos un identificador para nombrar a las variables y a las funciones. Usamos el símbolo = para definir el valor de una variable o el código de una función. Es importante entender la diferencia entre definición y asignación destructiva. En Haskell no existen las asignaciones destructivas (como en Java o C), pues éstas destruyen el valor anterior y lo cambian por uno nuevo. Por el contrario, una definición es inmutable. Esto quiere decir que cuando nos preguntemos por el valor de un identificador, siempre vamos a obtener el mismo resultado. Que en Haskell sólo existan definiciones, nos garantiza que podemos razonar ecuacionalmente sobre nuestros programas. Cuando escribimos en el intérprete: *Prueba> cuad 2 4 lo que estamos preguntando es: cuál es el resultado de aplicar la función cuad a 2? Para resolver esta pregunta, el intérprete simplemente sustituye cuad por el lado derecho de la definición: x * x, y sustituye cada ocurrencia de x por 2. Esto es, resolvemos la siguiente ecuación: 2.2 Funciones y recursión cuad 2 = (x x) {x:=2} = 2 2 = 4 Podríamos empezar con el ya gastado hola mundo, pero como estamos estudiando un lenguaje funcional, mejor pasemos a ejemplos más interesantes. Consideremos la siguiente definición de la función de factorial { 1 si n = 0 fac(n) = n fac(n 1) si n > 0 Podríamos ingresar entonces lo siguiente en nuestro archivo Prueba.hs 3
4 fac n = if n==0 then 1 else n * fac (n-1) lo cual funciona perfectamente, pero veamos otras definiciones alternativas: fac n n==0 = 1 n>0 = n * fac (n-1) También ésta otra opción fac 0 = 1 fac (n+1) = (n+1) * fac n Esta última versión muestra la característica de pattern matching de Haskell. Para ejecutar las funciones anteriores, las agregamos a nuestro archivo Prueba.hs y lo volvemos a cargar en el intérprete con la instrucción :r. Algunas pruebas: *Prueba> :r [1 of 1] Compiling Prueba ( Prueba.hs, interpreted ) Ok, modules loaded: Prueba. *Prueba> fac 4 24 *Prueba> fac 4 24 *Prueba> fac Listas Uno de los tipos de datos más usados son las listas. Haskell incorpora a las listas dentro de sus definiciones por defecto. Creamos una lista con la siguiente sintaxis *Prueba> [1,2,3,4,5] [1,2,3,4,5] Otra manera de definir las listas es con el operador : *Prueba> 1:2:3:4:5:[] [1,2,3,4,5] donde [] es la lista vacía (o fin de lista). En realidad, la notación con corchetes ([ ]) es una abreviatura para la notación con :. Por ejemplo (el operador == compara dos expresiones y devuelve True si dan el mismo resultado): *Prueba> [1,2,3] == 1:2:3:[] True El operador : puede razonarse como una función que recibe un elemento x, y una lista xs, y nos construye una nueva lista con x al inicio de la lista xs. Por ejemplo: *Prueba> 1:[2,3,4] [1,2,3,4] 4
5 Lo único que tenemos que cuidar es el hecho de que las listas son homogeneas, es decir, todos los elementos de una lista deben ser del mismo tipo. Lo siguiente es un error: *Prueba> [1, a ] <interactive>:1:1: No instance for (Num Char) arising from the literal 1 at <interactive>:1:1 Probable fix: add an instance declaration for (Num Char) In the list element: 1 In the definition of it : it = [1, a ] El operador : no será útil para definir funciones sobre listas, sin embargo, Haskell provee de otras alternativas para crear listas. Con el operador.. podemos crear listas por rangos. Por ejemplo: *Prueba> [1..5] [1,2,3,4,5] Otro ejemplo: *Prueba> [ a.. z ] "abcdefghijklmnopqrstuvwxyz" nos muestra el rango de caracteres de la a a la z. El ejemplo anterior también ilustra el hecho de que, en Haskell, las cadenas (o strings) son listas de caracteres. Podemos concatenar dos listas (y por lo tanto cadenas) con el operador ++ *Prueba> [1..5] ++ [6..10] [1,2,3,4,5,6,7,8,9,10] 3 Funciones sobre listas Podemos usar la notación : y la característica de pattern matching de Haskell para definir funciones recursivas sobre listas. Por ejemplo, la función: tamano [] = 0 tamano (x:xs) = 1 + tamano xs nos calcula el tamaño de una lista: *Prueba> tamano [ ] 102 Otro ejemplo, la función: sumlist [] = 0 sumlist (x:xs) = x + sumlist xs 5
6 calcula la suma de los elementos de una lista. Aquí ya podemos observar el patrón. Recordemos que el conjunto de (todas) las listas de elementos de tipo A es un conjunto generado inductiva y libremente. Esto es, el conjunto de las listas de elementos en A es la cerradura inductiva de la lista vacía con la función :. Listas de a A = ({[]}) + Entonces, para definir funciones recursivas sobre las listas tenemos que hacerlo por partes: primero la definimos para el caso base (la lista vacía) y después para las siguientes listas, es decir las que se forman con la función constructora :. Una función interesante es map que aplica una función dada a todos los elementos de una lista. Por ejemplo: *Prueba> map succ [1..10] [2,3,4,5,6,7,8,9,10,11] aplica la función succ (sucesor) a todos los elementos de la lista. Aunque la función map ya viene predefinida en Haskell, no es difícil definir nuestra propia versión map usando el patrón que ya vimos: map f [] = [] map f (x:xs) = f x : (map f xs) Y obtenemos el mismo resultado: *Prueba> map succ [1..10] [2,3,4,5,6,7,8,9,10,11] Una lista se compone de dos partes: una cabeza y una cola. Para cualquier lista de tipo: x 1 : x 2 : : [] x 1 es la cabeza, y la lista x 2 : : [] es la cola. Las funciones head y tail nos regresan la cabeza y la cola de una lista, respectivamente: *Prueba> head [1..10] 1 *Prueba> tail [1..10] [2,3,4,5,6,7,8,9,10] 4 Ejercicios 1. Escribe tu propia versión de las funciones head y tail (puedes nombrarlas head y tail ). 2. Traduce la función concat vista en clase a la sintaxis de Haskell. 3. Verifica (haz un esbozo) que la demostración vista en clase, también aplica para su versión en Haskell: (sumlist l1) + (sumlist l2) = sumlist (concat l1 l2) 6
Laboratorio de Lenguajes de Programación Introducción al lenguaje ML
Laboratorio de Lenguajes de Programación Introducción al lenguaje ML Pedro A. Góngora Luna 1 1. Tipos de datos básicos Para iniciar el intérprete utilizamos el comando sml en el shell de windows o unix:
Más detallesTipos de datos algebraicos
Tipos de datos algebraicos Taller de Álgebra I Segundo cuatrimestre de 2013 Programación funcional Recordemos que un tipo de datos es un conjunto dotado con una serie de operaciones sobre los elementos
Más detallesIntroducción a Haskell. Cecilia Manzino
Paradigmas de programación Un paradigma de programación representa un estilo particular o filosofía para la construcción del software. Los más comunes dan lugar a los siguientes tipos de programación:
Más detallesCAPÍTULO IV: 4.1 Introducción a la. Programación Funcional
CAPÍTULO IV: Programación Funcional 4.1 Introducción a la Programación Funcional 1 Programación Funcional Paradigma diferente a los imperativos, que se aleja de la máquina de von Neumann Basado en funciones
Más detallesTema 2: Introducción a la programación con Haskell
Tema 2: Introducción a la programación con Haskell Informática (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 2
Más detallesTipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos
Algoritmos y Estructuras de Datos I 1 cuatrimestre de 009 Departamento de Computación - FCEyN - UBA Programación funcional - clase Tipos algebraicos Tipos algebraicos y abstractos ya vimos los tipos básicos
Más detallesTema 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
Más detallesTema 2: Introducción a la programación con Haskell
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 2. 4. 2 / 26 El sistema GHC El sistema GHC
Más detallesn! = 1 2 n 0! = 1 (n+1)! = (n + 1) n!
Capítulo 3 Recursión La recursión es un estilo autoreferencial de definición usado tanto en matemática como en informática. Es una herramienta de programación fundamental, particularmente importante para
Más detallesPráctica 1. Programación Funcional Introducción a Helium
Práctica 1. Programación Funcional Introducción a Helium Who? Lenguajes y Paradigmas de Programación Objetivo de la práctica Presentar las facilidades básicas del entorno de programación Helium Presentar
Más detallesTema 2: Introducción a la programación con Haskell
Tema 2: Introducción a la programación con Haskell Informática (2017 18) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla 2
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 detallesLaboratorio Análisis Lógico Práctica 2: Tipos de datos en Haskell
Laboratorio Análisis Lógico Práctica 2: Tipos de datos en Haskell Pedro A. Góngora Luna 1 1. Operadores La figura 1 muestra la lista de algunos de los operadores básicos definidos en el preludio. La lista
Más detallesLenguajes de Programación Programación funcional
Lenguajes de Programación Programación funcional Roberto Bonvallet Departamento de Informática Universidad Técnica Federico Santa María Concepto de función En el paradigma imperativo: Una función es una
Más detallesIntroducció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
Más detallesTema 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
Más detallesApunte 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.....................................
Más detallesAplicación de la Inducción Matemática Programación Funcional. Julio Ariel Hurtado Alegría Departamento de Sistemas Universidad del Cauca
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:
Más detallesProgramación Funcional
Alberto Pardo Marcos Viera Instituto de Computación, Facultad de Ingeniería Universidad de la República, Uruguay Objetivo del curso Este es un curso introductorio de programación funcional (PF) Veremos
Más detallesPara entender la recursividad primero tenemos que entender la recursividad
Para entender la recursividad primero tenemos que entender la recursividad Funcional Clase 1 Matias Reparaz, Agustín Nieto Departamento de Computación, FCEyN,Universidad de Buenos Aires. 20 de Septiembre
Más detallesLENGUAJES Y COMPILADORES
LENGUAJES Y COMPILADORES Repaso. La clase pasada presentamos el lenguaje imperativo simple y dimos las ecuaciones para casi todas las construcciones del lenguaje. En efecto, teníamos que [ ] Σ
Más detallesLenguajes funcionales: λ-cálculo
Lenguajes funcionales: λ-cálculo λ-cálculo (Church 1933) Cálculo para el estudio formal del comportamiento de las funciones Sintaxis: λ expresiones Reglas de reducción de λ expresiones Método matemático
Más detallesComponentes 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
Más detallesProgramación Funcional Haskell Clase 19
Programación Funcional Haskell Clase 19 José Raymundo Marcial Romero rmarcial@fi.uaemex.mx BUAP c José Raymundo Marcial Romero. Clase Número 19 p.1/23 Temas de la clase Lenguajes Funcionales Haskell y
Más detallesListas y Recursión. Taller de Álgebra I. Primer Cuatrimestre de 2015
Listas y Recursión Taller de Álgebra I Primer Cuatrimestre de 2015 Un nuevo tipo: Listas Tipo Lista Las listas pueden contener elementos de cualquier tipo (incluso listas) [1] :: [Integer] [1, 2] :: [Integer]
Más detallesUNIDAD 2 Descripción de un programa
Descripción de un programa Estructura general de un programa. Elementos básicos. Tipos de datos simples: enteros, reales y carácter. Representación de datos en memoria. Operaciones sobre tipos de datos
Más detallesIntroducción a la programación. Cecilia Manzino
Paradigmas Un paradigma es un modelo o patrón en cualquier disciplina científica. Un paradigma de programación representa un estilo de programación en cual se escriben soluciones a problemas en términos
Más detallesGuía 2: Listas, recursión e inducción
Introducción a los Algoritmos - 2do cuatrimestre 2014 Guía 2: Listas, recursión e inducción Docentes: Walter Alini, Luciana Benotti En esta guía comenzaremos a trabajar con listas Para familiarizarnos
Más detallesProgramación Declarativa Haskell Informática Sistemas Curso Pepe Gallardo Universidad de Málaga. Tema 8. Listas
Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 8. Listas 8.1 Secuencias aritméticas 8.2 Algunas funciones predefinidas 8.3 Listas por comprensión
Más detallesParadigma Funcional Caso de estudio: ML. Lenguajes de Programación 2017
Paradigma Funcional Caso de estudio: ML Lenguajes de Programación 2017 Paradigma Funcional FUNCIÓN: Mapeo de un dominio en un rango El mapeo se puede describir por medio de una EXPRESIÓN f(1) = 2 f(2)
Más detallesTema II: Introducción al Lenguaje Funcional
Tema II: Introducción al Lenguaje Funcional Características de Haskell Lenguaje funcional de o. superior fuertemente tipificado. Clasifica los entes de un programa en: objetos (constantes y funciones)
Más detallesParadigma Funcional Caso de estudio: ML. Lenguajes de Programación 2018
Paradigma Funcional Caso de estudio: ML Lenguajes de Programación 2018 FUNCIÓN: Mapeo de un dominio en un rango El mapeo se puede describir por medio de una EXPRESIÓN f(1) = 2 f(2) = 3 Enumeración f(x)
Más detallesParadigmas de lenguajes de programación. Introducción a la programación imperativa. Lenguaje C. Programación imperativa
Paradigmas de lenguajes de programación Introducción a la programación imperativa Algoritmos y Estructuras de Datos I Paradigma: Definición del modo en el que se especifica el cómputo (que luego es implementado
Más detallesroducción a la programación con el lenguaje C usando el entorno de trabajo Dev-C. Nociones básicas de programación
There are no translations available. Introducción a la programación con el lenguaje C usando el entorno de trabajo Dev-C. roducción a la programación con el lenguaje C usando el entorno de trabajo Dev-C.
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 detallesFundamentos de la POO 1
Fundamentos de la POO 1 La correcta aplicación de los conocimientos de clases y objetos nos permitirán llegar a los objetivos planteados y a generar programas que puedan ser fáciles de comprender para
Más detallesEs un lenguaje estructurado, tiene una abundante cantidad de operadores y tipos de datos.
Lenguaje C Un poco de historia C es un lenguaje de propósito general, es decir, se pueden desarrollar aplicaciones de diversas áreas. Dentro de sus principales características podemos mencionar que: Es
Más detallesFunciones Segunda parte
Expresiones condicionales Matemática Discreta usando el computador 2011 Funciones Segunda parte Una expresión condicional utiliza una expresión de tipo Bool para decidir entre dos opciones Estructura if...then...
Más detallesProgramació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
Más detallesResolución de Problemas y Algoritmos
RESOLUCIÓN DE PROBLEMAS Y ALGORITMOS CLASE 3 Definición y compatibilidad de tipos de datos. Sentencia condicional CASE. Luciano H. Tamargo http://cs.uns.edu.ar/~lt Depto. de Ciencias e Ingeniería de la
Más detallesTipos de datos y clases de tipos
Tipos de datos y clases de tipos Taller de Álgebra I Verano 2017 Tipos de datos Tipo de dato Un conjunto de valores a los que se les puede aplicar un conjunto de funciones. Ejemplos 1 Integer = (Z, {+,,,
Más detallesClase 02/10/2013 Tomado y editado de los apuntes de Pedro Sánchez Terraf
Clase 02/10/2013 Tomado y editado de los apuntes de Pedro Sánchez Terraf Escenas de episodios anteriores objetivo: estudiar formalmente el concepto de demostración matemática. caso de estudio: lenguaje
Más detallesabril de 2017 Desarrollo de aplicaciones en Java Tipos de datos primitivos Tipos de datos Elementos de aplicaciones simples
Desarrollo de aplicaciones en Java Generación de código fuente Compilación Ejecución Elementos de aplicaciones simples EII147-01-02 Introducción a las tecnologías de información Escuela de Ingeniería Industrial
Más detalles1.1 Define un operador ( ) que devuelva True si y solo si tan solo uno de sus argumentos es True. Por ejemplo:? (3 > 2) (2 > 5)
1 Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Práctica 1 1.1 Define un operador ( ) que devuelva True si y solo si tan solo uno de sus argumentos es True. Por ejemplo:?
Más detallesPre-Laboratorio 1 MA-33A : Introducción a Matlab
Pre-Laboratorio 1 MA-33A 2007-1: Introducción a Matlab Gonzalo Hernández - Gonzalo Rios UChile - Departamento de Ingeniería Matemática 1 Interfaz de Matlab Al ejecutar el programa Matlab, se abrirá una
Más detallesProgramación declarativa ( )
Programación declarativa (2008 09) Tema 1: Programación funcional básica José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla 1
Más detallesTema: Entorno a C# y Estructuras Secuenciales.
Tema: Entorno a C# y Estructuras Secuenciales. Programación I, Guía 3 1 Facultad: Ingeniería Escuela: Ingeniería en Computación Asignatura: Programación I Objetivos Utilizar el entorno de programación
Más detallesIntroducción a los Algoritmos Tipos, Funciones y Patrones
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.
Más detallesLenguajes de programación. Algoritmos y Estructuras de Datos I. Lenguajes compilados. Lenguajes compilados
Lenguajes de programación Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Teórica - clase 3 Introducción a la programación imperativa Las computadoras
Más detallesLenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III
República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III Lenguaje C 1 Puntos previos Los códigos fuentes generados en C requieren ser compilados
Más detallesDra. Jessica Andrea Carballido
Dra. Jessica Andrea Carballido jac@cs.uns.edu.ar Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR Problemas, Algoritmos y Programas PROBLEMA Solución ALGORITMO PROGRAMA Problemas,
Más detallesClase 2: El Lenguaje Python
Agosto 2012 Clase 2 Temario Consideraciones generales Operadores y expresiones Variables y Tipos Funciones Las Estructuras de Control Guía práctica Primer curso de programación usando robots y Python Objetivos
Más detallesIntroducción a la programación Introducción al entorno Haskell
Introducción a la programación Introducción al entorno Haskell Taller de Álgebra I Segundo cuatrimestre de 2015 Taller de Álgebra I De qué se trata el taller de Álgebra I? 1 Dar una introducción a la computación
Más detallesIntroducció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
Más detallesGuía Introductoria. 1 Sistemas Expertos e Inteligencia Artificial / Guía I / Ciclo / Ing. Herson Serrano. Introducción. Objetivos Específicos
1 Sistemas Expertos e Inteligencia Artificial / Guía I / Ciclo 01 2018 / Ing. Herson Serrano Guía Introductoria Facultad: Ingeniería Escuela: Ingeniería en Computación Asignatura: Sistemas Expertos e Inteligencia
Más detallesGuía 2: Funciones, listas, recursión e inducción
Introducción a los Algoritmos - 1er cuatrimestre 2013 Guía 2: Funciones, listas, recursión e inducción El objetivo de los siguientes ejercicios es introducirnos en la programación funcional, es decir,
Más detallesTema 2: Introducción a la programación con Haskell
Tema 2: Introducción a la programación con Haskell 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
Más detallesTema: Entorno a C# y Estructuras Secuenciales.
2 Programación I Programación I. Guía 3 3 Facultad: Ingeniería Escuela: Ingeniería en Computación Asignatura: Programación I Tema: Entorno a C# y Estructuras Secuenciales. Objetivos Utilizar el entorno
Más detallesDra. Jessica Andrea Carballido
Dra. Jessica Andrea Carballido jac@cs.uns.edu.ar Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR Problemas, Algoritmos y Programas PROBLEMA Solución ALGORITMO PROGRAMA Problemas,
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 detallesPresentación del Curso Presencial. Programación en Java Nivel Básico
Presentación del Curso Presencial Programación en Java Nivel Básico Tabla de contenido Presentación del curso... 3 Objetivos de aprendizaje... 6 Contenidos del curso... 7 Competencias previas... 9 Recursos...
Más detallesDatos Elementales y formato de un programa en Java
Datos Elementales y formato de un programa en Java PROGRAMACION I Grado en Matematicas Informática Programación I - 2015/2016 Datos, variables y mi primer programa 1 Introducción a la programación o Programa:
Más detallesEntendiendo expresiones lambda en C# con Mono
Entendiendo expresiones lambda en C# con Mono Martín O. Márquez Introducción La programación imperativa es uno de los paradigmas de computación más ampliamente utilizados por la mayoría
Más detallesTipos en Haskell. Cecilia Manzino
Tipos Tipo: conjunto de valores asociados a operaciones. Ejemplos: enteros, caracteres, booleanos, funciones de enteros a enteros. Sirven para: detectar errores antes de la evaluación especificar programas
Más detallesTUTORIAL PROLOG. Lenguajes de programación Universidad Nacional de Colombia Santiago Carvajal Castañeda Mario Andrés Moreno Norato
TUTORIAL PROLOG Lenguajes de programación Universidad Nacional de Colombia Santiago Carvajal Castañeda Mario Andrés Moreno Norato Prolog es un lenguaje de programación lógica de propósito general que se
Más detallesInformática Haskell Matemáticas Curso Pepe Gallardo Universidad de Málaga. Tema 8. Listas
Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Tema 8. Listas 8.1 Secuencias aritméticas 8.2 Algunas funciones predefinidas 8.3 Listas por comprensión Ejemplo: QuickSort
Más detallesGUÍ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
Más detallesUn calculadora avanzada... y algo más!
INFORMÁTICA, GRUPO D Un calculadora avanzada... y algo más! Vamos a familiarizarnos con el entorno interactivo de Python. Vamos a construir expresiones aritméticas y a guardar los resultados en variables
Más detallesCOLEGIO DE ESTUDIOS DE POSGRADO DE LA CIUDAD DE MÉXICO
COLEGIO DE ESTUDIOS DE POSGRADO DE LA CIUDAD DE MÉXICO ELABORO: ALEJANDRA FUERTES FRANCISCO TEMA: LENGUAJES DE PROGRAMACIÓN INTRODUCCIÓN Un lenguaje de programación es un conjunto de instrucciones que
Más detallesFundamentos 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 (;)
Tags Fundamentos PHP La Sintaxis de PHP se deriva de muchos lenguajes de programación principalmente de C pero Perl también ha tenido mucha influencia en esta sintaxis Con las últimas incorporaciones agregadas,
Más detallesProgramación Funcional Haskell Clase 22
Programación Funcional Haskell Clase 22 José Raymundo Marcial Romero rmarcial@fi.uaemex.mx BUAP c José Raymundo Marcial Romero. Clase Número 22 p.1/?? Temas de la clase Tipos Numéricos de Haskell Tipos
Más detallesTema 3. Patrones y Definiciones de Funciones
Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 3. Patrones y Definiciones de Funciones 3.1 Comparación de Patrones Patrones constantes Patrones
Más detallesTema 4: Definición de funciones
Programación declarativa (2009 10) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla Constantes como patrones Variables como
Más detallesConcepto de compilador Intérprete Fases de un Compilador Herramientas de construcción de Compiladores
18:55 1 2 Temas Concepto de compilador Intérprete Fases de un Compilador Herramientas de construcción de Compiladores Objetivo Que el estudiante logre conocer, comprender y manejar conceptos y técnicas
Más detallesTema 4: Definición de funciones
Tema 4: Definición de funciones Informática (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 2 / 30 Tema 4: Definición
Más detallesTema 3. Patrones y Definiciones de Funciones
Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Tema 3. Patrones y Definiciones de Funciones 3.1 Comparación de Patrones Patrones constantes Patrones para listas Patrones
Más 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 detallesIntroducción a la programación
Introducción a la programación PROGRAMACION I Grado en Matematicas Informática Programación I - 2015/2016 Introducción 1 Introducción a la programación Computador: aparato electrónico capaz de interpretar
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 detallesIntroducción al Análisis Sintáctico
Introducción al Análisis Sintáctico El Parsing como Algoritmo Universidad de Cantabria Outline Introducción 1 Introducción 2 3 4 El Problema de la Parsing El problema de parsing está muy relacionado con
Más detalles14/03/2018. Problemas, Algoritmos y Programas. Problemas, Algoritmos y Programas. Programas y Lenguajes. Programas y Lenguajes. Programas y Lenguajes
Problemas, Algoritmos y Programas PROBLEMA Solución Dra. Jessica Andrea Carballido jac@cs.uns.edu.ar ALGORITMO Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR PROGRAMA Problemas,
Más detallesTipos paramétricos y recursivos
Tipos paramétricos y recursivos Taller de Álgebra I Verano 2017 Tipos paramétricos Tipos paramétricos Podemos hacer que los constructores de un tipo de datos reciban parámetros. A los tipos construidos
Más detallesTaller de programación shell
Taller de programación shell 3 de Abril de 2004 revisión 1 Asociación de Usuarios de Software Libre de Elche http://www.kleenux.org/ Introducción: Qué es un shell? Es una parte fundamental de todo sistema
Más detallesJava Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.
Java Avanzado. Guía 1 Java Avanzado Facultad de Ingeniería. Escuela de computación. Java Avanzado. Guía 2 Introducción Este manual ha sido elaborado para orientar al estudiante de Java Avanzado en el desarrollo
Más detallesModelos de Desarrollo de Programas Y Programación Concurrente Clase N 3
PROGRAMACION FUNCIONAL - Un lenguaje de programación funcional tiene gran flexibilidad, es conciso en su notación y su semántica es sencilla. El inconveniente principal de estos lenguajes ha sido la ineficiencia
Más detallesPROGRAMACIÓN LÓGICA. David Felipe Rico Hernandez Gabriel Esteban Bejarano Delgado
PROGRAMACIÓN LÓGICA David Felipe Rico Hernandez Gabriel Esteban Bejarano Delgado Introducción Programación Lógica Conceptos clave Lenguajes de programación Ejemplos Ventajas y desventajas Aplicaciones
Más detalles1. 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
Más detallesAlgoritmo, Estructuras y Programación I Ing. Marglorie Colina
Unidad II: Fundamentos de la Programación Estructurada Algoritmo, Estructuras y Programación I Ing. Marglorie Colina Estructura General de un Programa Zona de ficheros de cabecera de las librerías Zona
Más detallesUnidad III: Introducción a la Programación
Unidad III: Introducción a la Programación 3.1 Características del lenguaje de programación Un lenguaje de programación es un idioma artificial diseñado para expresar procesos que pueden ser llevadas a
Más detallesTutorial Haskell David Julián Guzmán Cárdenas Cristian Alexanther Rojas Cárdenas Luis Ernesto Gil Castellanos
Tutorial Haskell David Julián Guzmán Cárdenas Cristian Alexanther Rojas Cárdenas Luis Ernesto Gil Castellanos Agenda 1. 2. 3. 4. 5. 6. Introducción Aspectos básicos del lenguaje Tipos y clases de tipos
Más detallesMetodologías de Programación II Introducción a OCaml
Metodologías de Programación II Introducción a OCaml Dr. Alejandro Guerra-Hernández Departamento de Inteligencia Artificial Facultad de Física e Inteligencia Artificial aguerra@uv.mx http://www.uv.mx/aguerra
Más detallesTema 8: Funciones de orden superior
Tema 8: Funciones de orden superior 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 2 /
Más detallesTema 8: Funciones de orden superior
Tema 8: Funciones de orden superior 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
Más detallesConceptos de Programación Intérprete PYTHON
Introducción a la Computación Conceptos de Programación Intérprete PYTHON M. E. Buemi (mebuemi@dc.uba.ar) Facultad de Ciencias Exactas y Naturales, 23/03/2016 Outline Programar Python Programación imperativa
Más detallesIntroducción a PL/SQL
Introducción a PL/SQL Grupo de Ingeniería del Software y Bases de Datos Departamento de Lenguajes y Sistemas Informáticos Universidad de Sevilla noviembre 2011 Objetivos de este tema Conocer PL/SQL. PL/SQL
Más detallesCódigo de ética. Herramientas. Instalar emacs. Entrar en ubuntu. Abrimos el terminal (desde el menú) Editamos la lista de fuentes de instalación
Código de ética Herramientas Nadie va a copiar partes de trabajo de otros estudiantes, de libros, de sitios web ni de ningún otro lado, con o sin permiso, sin definir claramente la referencia bibliográfica
Más detallesIntroducción a c++ Introducción a la programación EIS Informática III
Introducción a c++ Un lenguaje de programación es un lenguaje formal diseñado para realizar procesos que pueden ser llevados a cabo por máquinas como las computadoras. Pueden usarse para crear programas
Más detalles