Herramientas de usuario

Herramientas del sitio


introalg:taller1

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
introalg:taller1 [2006/05/01 23:07] nicolaswintroalg:taller1 [2018/08/10 03:03] (actual) – editor externo 127.0.0.1
Línea 4: Línea 4:
  
   * Introducción al uso de Hugs   * Introducción al uso de Hugs
-  * Como escribir programas Haskell+  * Cómo escribir programas Haskell
   * Escribiendo los primeros programas   * Escribiendo los primeros programas
  
Línea 11: Línea 11:
  
 [[http://haskell.org/hugs/|Hugs]] es un intérprete del lenguaje funcional puro [[http://haskell.org/|Haskell]]. \\ [[http://haskell.org/hugs/|Hugs]] es un intérprete del lenguaje funcional puro [[http://haskell.org/|Haskell]]. \\
-Durante este taller vamos a utilizarlo para escribirprobar utilizar los programas funcionales que se dan en el teórico.+Durante este taller escribiremosprobaremos utilizaremos los programas funcionales que se dan en el teórico.
  
 A Hugs se lo invoca desde la //línea de comandos// o picando sobre el ícono en nuestro entorno gráfico. A Hugs se lo invoca desde la //línea de comandos// o picando sobre el ícono en nuestro entorno gráfico.
-Una vez que el intérprete esta activo, la pantalla se presenta con un //prompt// a la espera de expresiones a ser evaluadas o commandos.+Una vez que el intérprete está activo, la pantalla se presenta con un //prompt// a la espera de expresiones a ser evaluadas o comandos.
  
   [nicolasw@azul Taller]$ hugs   [nicolasw@azul Taller]$ hugs
Línea 29: Línea 29:
   Hugs.Base>   Hugs.Base>
  
-En este modo Hugs se convierte en una calculadora esperando que se introduzca una expresión para luego evaluarla e imprimir el resultado, para luego volver a pedir una expresión (lazo **leer-evaluar-imprimir**). \\+De este modo Hugs se convierte en una calculadoraesperando que se introduzca una expresión para evaluarla e imprimir el resultado, luego volver a pedir una expresión (lazo **leer-evaluar-imprimir**). \\
 Gracias al //preludio standard// tenemos muchas funciones ya definidas. Gracias al //preludio standard// tenemos muchas funciones ya definidas.
  
Línea 41: Línea 41:
   "daba le arroz al a zorra elabad"   "daba le arroz al a zorra elabad"
  
-Este ciclo continua indefinidamente hasta que pidamos la salida del intérprete con CTRL-D o con el comando+Este ciclo continúa indefinidamente hasta que pidamos la salida del intérprete con CTRL-D o con el comando
  
   Hugs.Base> :q   Hugs.Base> :q
Línea 50: Línea 50:
  
 Para poder dar nuevas definiciones y/o funciones necesitamos escribir un //programa funcional// o //script// Haskell. \\  Para poder dar nuevas definiciones y/o funciones necesitamos escribir un //programa funcional// o //script// Haskell. \\ 
-Un programa funcional es un [[http://es.wikipedia.org/wiki/Archivo_inform%C3%A1tico|archivo]] con terminación **.hs** donde se escriben en texto plano todas las definiciones que conforman el programa funcional.+Un programa funcional es un [[http://es.wikipedia.org/wiki/Archivo_inform%C3%A1tico|archivo]] con terminación **.hs** donde se escriben en //texto plano// todas las definiciones que conforman el programa funcional.
  
-A manera de ejemplo realicemos un ciclo de creación-carga-prueba-modificacion-recarga, con el Ejercicio 8.3 del apunte [[http://cs.famaf.unc.edu.ar/introalg/calculo_extracto.pdf|Extracto del Cálculo de Programas]].+A manera de ejemplo realicemos un ciclo de **creación-carga-prueba-modificación-recarga**, con el Ejercicio 8.3 del apunte [[http://cs.famaf.unc.edu.ar/introalg/calculo_extracto.pdf|Extracto del Cálculo de Programas]].
  
 Para crear un //script// basta con invocar el comando para editar un (nuevo) archivo '':e ejercicios8.hs''. Para crear un //script// basta con invocar el comando para editar un (nuevo) archivo '':e ejercicios8.hs''.
Línea 65: Línea 65:
  
   Hugs.Base> :e ejercicios8.hs   Hugs.Base> :e ejercicios8.hs
-  Hugs.Base> :l ej 
   Hugs.Base> :l ejercicios8.hs   Hugs.Base> :l ejercicios8.hs
   ERROR "ejercicios8.hs":4 - Syntax error in input (unexpected `=')   ERROR "ejercicios8.hs":4 - Syntax error in input (unexpected `=')
Línea 71: Línea 70:
 Las traducciones son más o menos directas, de todas formas preparamos una tabla de [[http://cs.famaf.unc.edu.ar/introalg/traduccion.pdf|Traducción de Cálculo de Programas a Haskell]]. Las traducciones son más o menos directas, de todas formas preparamos una tabla de [[http://cs.famaf.unc.edu.ar/introalg/traduccion.pdf|Traducción de Cálculo de Programas a Haskell]].
  
-Volvemos a editar el script con '':e'' (el nombre ya no lo necesitamos ya que tenemos cargado este script) y corregimos el ''x=0'' por ''x==0''.+Volvemos a editar el script con '':e'' (el nombre ya no lo necesitamos ya que tenemos cargado este script) y corregimos ''x=0'' por ''x==0''.
 Podemos probar la nueva función para ganar confianza en su **corrección**. Podemos probar la nueva función para ganar confianza en su **corrección**.
  
Línea 145: Línea 144:
   [1948,1952,1956,1960,1964,1968,1972,1976,1980,1984,1988,1992,1996,2000,2004]   [1948,1952,1956,1960,1964,1968,1972,1976,1980,1984,1988,1992,1996,2000,2004]
  
-Podemos comprobar que las tres funciones operan correctamente en el rango de números dados ((No queremos decir que sean correctas en su totalidad, solo decimos que en ese rango no tienen fallas)).+Vemos que las tres funciones operan correctamente en el rango de números dados ((No queremos decir que sean correctas en su totalidad, solo decimos que en ese rango no tienen fallas)).
  
 ===== Ejercicios ===== ===== Ejercicios =====
Línea 157: Línea 156:
 la siguiente definición del área del prisma: \\ la siguiente definición del área del prisma: \\
 //area.h.b.d = 2 ∗ frente + 2 ∗ lado + 2 ∗ arriba// \\ //area.h.b.d = 2 ∗ frente + 2 ∗ lado + 2 ∗ arriba// \\
-//|[   ...aca va la definicion...   ]// \\+//|[   ...aca va la definicion...   ]|// \\
 donde //frente//, //lado// y //arriba// son las caras frontal, lateral y superior del prisma respectivamente. donde //frente//, //lado// y //arriba// son las caras frontal, lateral y superior del prisma respectivamente.
  
introalg/taller1.1146524841.txt.gz · Última modificación: 2018/08/10 03:03 (editor externo)