FACULTAD NACIONAL DE INGENIERIA INGENIERIA DE SISTEMAS E INGENIERIA INFORMATICA LABORATORIO DE COMPUTACION LABORATORIO No 8 SIS2330 - METODOLOGIA DE LA PROGRAMACION III Nombre: Cáceres Colque Mahylee Priscilla Paralelo: “C” Tema: HASKELL y WINHUGS OBJETIVOS. • Los estudiantes comprenderán los elementos esenciales de la programación Funcional. • Que el alumno conozca la programación funcional así como que se habitúe con dicho lenguaje. • Conocer el entorno de la herramienta WinHugs. • Emplear el intérprete WinHugs para la elaboración y evaluación funciones del paradigma de Programación Funcional. FUNDAMENTO TEORICO. Conceptos Básicos Haskell es un lenguaje funcional puro, de propósito general, que incluye muchas de las últimas innovaciones en el desarrollo de los lenguajes de programación funcional, como son las funciones de orden superior, evaluación perezosa, tipos polimórficos estáticos. El Modelo de Programación Funcional El modelo funcional, tiene como objetivo la utilización de funciones matemáticas puras sin efectos laterales y, por tanto, sin asignaciones destructivas. Lenguaje Haskell En Haskell toda función tiene un tipo que especifica la naturaleza de sus argumentos y resultados. • Los tipos permiten que muchos problemas se detecten antes de la ejecución. • Existe un sistema interactivo llamado Hugs para ejecutar programas en Haskell. • Asimismo hay un compilador popular llamado Glasgow Haskell Compiler. • Al inicializar el sistema Hugs el primero carga una librera llamada Prelude.hs. Página 1 ACTIVIDADES DE CLASE. Aquí tenemos algo de aritmética simple, elabore pruebas semejantes a las que se muestran: Prelude> 2 + 15 17 Prelude> 49 * 100 4900 Prelude> 1892 - 1472 420 Prelude> 5 / 2 2.5 Se explica por si solo. También podemos utilizar varias operaciones en una misma línea de forma que se sigan todas las reglas de precedencia que todos conocemos. Podemos usar paréntesis para utilizar una precedencia explícita. Prelude> (50 * 100) - 4999 1 Página 2 PROBLEMAS PROPUESTOS. Sin usar el computador, evalúe las siguientes expresiones, y para cada una de ellas indique el resultado y su tipo (si la expresión es válida) o qué error ocurre (si no lo es): 1) >>> 2 + 3 # Respuesta: tipo int, valor 5 2) >>> 4 / 0 # Respuesta: error de división por cero 3) >>> 5 + 3 * 2 #Respuesta: tipo int, valor 11 4) >>> '5' + '3' * 2 #Respuesta: tipo str, valor 533 5) >>> 2 ** 10 == 1000 or 2 ** 7 == 100 #Respuesta: tipo bool, valor False. 6) >>> int(“cuarenta”) #Respuesta: error, porque 40 no es un numero valido 7) >>> 70/16 + 100/24 #Respuesta: tipo: float, valor 8.5417. 8) >>> 200 + 19% #Respuesta: error de sintaxis. 9) >>> 3 < (1024 % 10) < 6 #Respuesta: tipo bool, valor True. 10) >>> 'six' + 'eight' #Respuesta: tipo str, valor sixeight. 11) >>> 'six' * 'eight' #Respuesta: TypeError. 12)>>> float(-int('5') + int('10')) #Respuesta: tipo float, valor 5.0 13)>>> abs(len('ocho') - len('cinco')) #Respuesta: tipo int, valor 1 14)>>> bool(14) or bool(-20) #Respuesta: tipo bool, valor true 15)>>> float(str(int('5' * 4) / 3)[2] #Respuesta: error de entrada Página 3 Página 4