domingo, 19 de septiembre de 2010

Lenguajes funcionales

Esta entrada es para la clase de lenguajes de programación
Los lenguajes funcionales son lenguajes de programación en donde estos se utilizan para un fin especifico.
Para demostrar lo aprendido, hablare acerca de dos lenguajes funcionales.


Lenguaje R 
Lenguaje script que se utiliza principalmente para la estadística científica.
En ejemplo es para sacar determinantes de una matriz, de una forma muy sencilla.
Como recordaran, en matemáticas 1 vimos diferentes formas de obtener un determinante en base a una matriz, con lenguaje R es muy fácil obtenerlo.


Para empezar después de bajar R con el comando.
sudo apt-get install r-base
obtendrás algo como esto:
Cuando termine, habrás descargado el paquete de lenguaje R, inicia en el terminal con una "R" y obtendrás algo así.

Ahora sacar la determinante de la matriz, simplemente vas a escribir.

M <-matrix(c(3,2,1,2,-2,1,3,-1,1,-3,-1,2,-1,1,2,1),nrow=4, ncol=4)

Observamos si capturamos bien, escribiendo M

     [,1] [,2] [,3] [,4]
[1,]    3   -2    1   -1
[2,]    2    1   -3    1
[3,]    1    3   -1    2
[4,]    2   -1    2    1

Obtenemos la determinante usando la función det(M), en donde M es la matriz capturada.
y obtenemos como resultado 48, para comprobar hice el calculo de la determinante como lo vimos en matemáticas 1.

Haz clic para agrandar!
Y obtenemos el mismo resultado.


LISP
Lenguaje funcional que su principal objetivo es utilizar listas, sin embargo, es util para ya sea para orientacion objetos y declarativo, ya que es multiparadigma
Para iniciar debemos de instalar el clisp para utilizarlo en el terminal.
sudo apt-get install clisp
Después ya podemos empezar a escribir, en este caso  hice una función condicional que sirve para saber si un alumno aprobo o reprobo la materia.
[1]> (defun materia(x)
(cond ((>= x 70) (print "Aprobaste"))
((<= x 70) (print "Reprobaste"))) )
MATERIA
[2]> (materia 70)
"Aprobaste" 
"Aprobaste"
[3]> (materia 60)
"Reprobaste" 
"Reprobaste"
[4]> (materia 50)
"Reprobaste" 
"Reprobaste"
[5]> (materia 80)
"Aprobaste" 
"Aprobaste"

En este otro ejemplo hacemos funciones sencillas para determinar el cuadrado y el cubo de numeros.


[1]> (defun cubo(x) (* x x x)) 
CUBO
[2]> (cubo 3)
27
[3]> (cubo 2)
8


[4]> (defun cuadrado(x) (* x x))
CUADRADO
[5]> (cuadrado 2)
4
[6]> (cuadrado 3)
9

Espero que mi explicación les sirva, si tienen algún comentario acerca de esta entrada, espero me digan ya que estoy abierto a cualquier error.


viernes, 10 de septiembre de 2010

Torres de hanoi en python

Esta entrada es para laboratorio de lenguajes de programación, hice un script en python que utiliza la recursividad usando el tema dado en la clase.

#!/usr/bin/python

def hanoi(N, inc='1', temp='2', fin='3'):

    if N > 0: 
        hanoi(N-1, inc, fin, temp)
        print 'se mueve de torre', inc, 'a torre', fin
        hanoi(N-1, temp, inc, fin) 

discos = int(input("Ingresa el numero de discos:"))
hanoi(discos)

Recurden que para que entre al if y a la funcion hanoi se necesitan los 4 espacios, ya que es requisito en este lenguaje de programación.

¿Como funciona el programa? pueden checar las diapositivas de la entrada anterior, solamente imprime la solución de movimientos minimos.

Ejemplo.
primero asignamos los permisos para poder leer el programa con
chmod u+x otro.py
Despues ponemos en el terminal
./otro.py
Nos mostrará esto.
podemos decir que esta correcto ya que el numero de pasos minimo se calcula con esta formula.
pasos = 2^N - 1
donde N son el numero de discos
Entonces, si queremos verlo aplicado podemos ver en este gif, los movimientos.



pueden descargar el codigo aqui.

Espero que mi explicación les sirva, si tienen algún comentario acerca de esta entrada, espero me digan ya que estoy abierto a cualquier error.

lunes, 6 de septiembre de 2010

Presentación: Torres de Hanoi

Hola compañeros, esta entrada es para ponerles el link de las presentaciones de la clase de 7 de septiembre, nos tocó la recursividad de las torres de hanoi con mis compañeros Cecilia Urbina, Ramon Esteban y Juan Carlos, en donde tienen sus presentaciones.




mi parte es de la instancia de 4 discos.
descargarla en formato odp AQUI.
descargarla en formato pdf AQUI.