lunes, 27 de septiembre de 2010

Tarea 4

 Lenguaje R
Este es mi primer ejemplo sobre lenguajes funcionales, en este caso escogí el lenguaje R, me pareció un buen lenguaje para empezar esta tarea, ya que se ve muy sencillo, algunas de las caracteristicas que vi de este lenguajes, es que tiene la posibilidad de hacer graficas, hay varios tipos de graficas , una de ellas es la de puntos, tambien hay otra que es con lineas, historigramas entre otras, las cuales se pueden personalizar, bueno otra caracteristica es el uso de archivos, en este lenguaje para obtener los datos se necesita abrir primero un archivo para luego poder acceder a sus datos, y otra más fue que el lenguaje utiliza algo asi como arreglos, muy faciles de usar, inclusive pasar los datos de un archivo a una lista.


Este es mi ejemplo del Lenguaje R, es muy sencillo, tan solo muestra como graficar en R un arreglo, en este caso estoy graficando distancia contra tiempo, y una grafica de velocidad y el historigrama de la misma, es solo para mostrar como funciona la graficación.



Codigo



 Grafica Distancia contra tiempo

Grafica de Velocidad


 Historigrama

Se que no tiene muy que ver con relación al anterior pero es solo para que vean que en R se puede graficar un historigrama.


 Operaciones con vectores en R

Bueno aqui les dejo el ejemplo



Espero que entiendan como se realizan operadores con vectores(o un arreglo unidimensional como en C) , solo usamos dos vectores, el a y el b, para definir vectores se utiliza lo siguiente:

nombrevector = c ( 20, 30 , 40, 50)

o también

nombrevector <- c (20, 30 , 40 ,50)

la letra c , creo que significa concatenación, segun un tutorial que vi.





Erlang

Este es mi segundo programa de lenguajes funcionales hecho con Erlang, creo que significa Lenguaje Ericcson  (ERiccson LANGuage)  o algo asi que leí. Bueno aqui está mi ejemplo.

Este programa es un conversor de unidades de temperatura:


  • Centigrados a Farenheit
  • Centigrados a Kelvin
  • Farenheit a Centigrados
  • Farenheit a Kelvin
  • Kelvin a Centigrados
  • Kelvin a Farenheit

Para hacer una conversion, primero abres erlang, luego el archivo, c(temperatura.erl).


Ya habierto , para hacer una conversion tienes que escribir lo siguiente:

temperatura:convertir_tipo( X , tipo).

En donde

- El primer tipo puede ser cen (centigrados) , far (farenheit) o kel (kelvin).

- En  X es la cantidad de esa unidad.

- En el segundo tipo es la cantidad a la que vas a convertir.

por ejemplo , convertir 30 grados centigrados a farenheit

temperatura:convertir_cen(30, far).

tal y como está, no olvides el punto final, es muy importante en erlang.


Codigo Fuente


 Ejecución



1.¿Como funciona mi programa?
R= primero creamos el modulo llamado temperatura, luego sigue lo que es el nombre de la funcion , en este caso son 3, si notan en el codigo , todas tienen esto /2  , eso significa que la funcion va a recibir 2 parametros , el primero es la cantidad que se va a convertir y la segunda es para introducir un átomo (Atom), el cual puede ser cen, far, kel.  luego ya siguen las funciones,son 3, una para convertir centigrados , otra para farenheit y otra para kelvin. y pues ya lo demás es codigo,  si ven puntos al final de cada  linea es porque erlang termina cada sen tencia en un punto ".".


2.¿De que manual me apoyé?
R= De éste, está en inglés pero es un manual basico para que le entiendas.

Manual en PDF


Se los dejo por si les interesa.


Bueno es todo.


Descargar 
temperatura.erl





lunes, 13 de septiembre de 2010

Temas de Ayuda y Tutoriales de Lenguajes Script

Bueno, esta entrada es por parte mia , aqui voy a poner los enlaces de algunas paginas que me sirvieron para hacer mis programas en AWK , Shell o Bash de linux y en Phyton



AWK

Enlace 1 - Es una guia de AWK, tiene informacion introductoria acerca del lenguaje, tiene un ejemplo pero el problema es que está en inglés.


Enlace 2 - Es un manual de AWK está en español , pero como su autor dice, es el resumen que hizo el, de un libro, por lo que pueden encontrar explicaciones moderadas sobre el lenguaje, inclusive maneja un ejemplo en el cual trabaja para enseñar awk.  Esta en formato TXT.

Enlace 3 - Es un manual en PDF sobre AWK, lo encontre mientras buscaba por internet, no recuerdo de donde lo saqué pero lo guarde en mi computadora para leerlo, no es mio , tiene autor en la portada dice quien es el autor y de donde es , yo solo lo resubiré , tiene 119 paginas y está en español.



Shell

Enlace 1 - Es una pagina en donde puedes encontrar informacion sobre shell, está en español por ejemplo en este enlace viene como declarar variables en bash ,entre mediados o a finales de la pagina, me sirvió para mi programa que hice.

Enlace 2 - Es una pagina que contiene informacion sobre shell al parecer es un manual rapido de bash, aunque está en inglés , lo util de esta pagina fue que me enseñó como se usan los operadores logicos en bash , por ejemplo si recuerdan en C para decir que un numero es mayor que otro usabamos el simbolo  > , pero en bash no es asi, en bash se utiliza una palabra llamada -gt que significa en ingles ( Greater Than )  osea "Mayor que" asi que no intenten utilizar los signos > < = etc.. consultenlos en esa pagina vienen casi al final , o mas o menos a media pagina, nadamas de que la chequen, también tiene informacion de como declarar strings y mostrarlos. No recuerdo en donde encontre lo del if pero pongan en google "if en bash" y ahi vienen ejemplos , por el momento no podre la pagina de donde saque lo del if pero si la encuentro la pongo.


Phyton

Enlace 1 - Aqui hay buena información en Español (Mexicano) de Phyton , aqui tome lo que es "como se declaran las variables", tiene buena información muy entendible, no creo que batallen con phyton.

Enlace 2 - Aqui encontre información del modulo math(equivalente a libreria en C math.h), es de la pagina oficial de Phyton, viene que funciones tiene el modulo math y como se usan, está en ingles pero creo que es entendible (al menos para mí)

Enlace 3 - Se llama "Phyton Instantaneo", como lo dice su nombre es un manual instantaneo, puede servirles de algo. En español

Enlace 4 - Aqui encontre informacion sobre control de flujo (Para los if , while , for etc.. ) en phyton, en español.

Enlace 5 - Es una pagina que contiene informacion sobre como llamar a los "modulos" en phyton, ya sea a todo el modulo completo o parte de el , por ejemplo para llamar a la funcion pi de math en phyton es from math import pi  , esto significa en español "del modulo math importa el valor de pi" espero que sea entendible, tomen en cuenta que phyton tiene muchos modulos , con diferentes funciones, inclusive phyton soporta numeros complejos ( numeros imaginarios "i" ) eso chequenlo en los modulos, tambien tiene potencia, seno, coseno etc.. (el modulo math pero hay mas). En español

Enlace 6 - Podría decir que es un manual de phyton, solo lo estoy re-subiendo , no recuerdo  donde lo encontre pero me parecio interesante y lo pondré , aunque como les digo ,no es mio y tiene autor en su portada. se llama "Phyton para todos". En español


Bueno es todo lo que les pudo ofrecer, estas son algunas de las paginas y/o manuales que consulte para realizar mis programas.

Información adicional:  
Los scripts de shell de linux son muy estrictos en algunas cosas por ejemplo para declarar variables tienes que declararlas asi variable=5   pero cuidado! , si haces esto variable = 5 , ya no lo toma como variable, por haber dejado un espacio entre la palaba variable y el signo de igualdad , hay otras cosas que vi tambien pero no recuerdo.

Otra nota es que Phyton es un lenguaje script muy bueno para aprender ofrece sintaxis clara y entendible.


PROGRAMAS UTILIZADOS

Dado que no uso linux (aún) para hacer mis programas utilicé varios programas para compilar:

Mis herramientas fueron 3:

1.Cygwin: Lo que hace este programa es algo asi como imitar la terminal de linux en windows, ahi fue en donde trabaje con AWK y Shell , por si lo quieren bajar aqui dejo el link

Si quieren el sitio oficial (en inglés): Aquí está http://www.cygwin.com/


2.Emacs: El editor de linux que usamos en clase, no pondre un link directo para bajarlo porque la manera de instalarlo es un poco "extraña" a comparacion de cuando instalamos un programa en windows , aqui les dejo un manual de como instalar emacs en windows, sigan el tutorial al pie de la letra :


3.Phyton: Phyton ofrece un interprete para windows 
Aqui esta la pagina para descargarlo Phyton - Descarga 
Ahi verán varios link , yo usé este Python 2.7 Windows installer , luego de que lo descargan lo ejecutan y lo instalan, ya teniendo ese ustedes van a inicio / todos los programas / phyton y verán dos programas uno que se llama Phyton (Command Line ) ese es el interprete o si les gusta mas ( el que yo usé ) el Phyton IDLE , en ese tambien pueden ejecutar los comandos que ustedes introduzcan y si quieren hacer un programa , vayan a donde dice "file" y luego "new window" les abre una ventana blanca y ahi pueden escribir su codigocuando ya quieran compilarlo presionen F5 y va a mandar el codigo al IDLE de phyton  , asegurense de guarda su código en .py o el formato que viene ahi , para que puedan ver los colores que les indican las funciones que usan mientras escriben.

Antes de acabar, si usan el primer programa (Cygwin) para ejecutar awk necesitan introducir el comando así:

awk -f nombrearchivo.awk texto.txt 

en el caso de que awk ocupe un archivo , 

ahora en Shell es asi

bash nombrearchivo.sh 

y ejecutara el codigo.

Nota: Para ejecutar esos codigos tienen que meterlos en la carpeta siguiente (en el caso de que usen Cygwin), la direccion es asi mas o menos 


C:\cygwin\home\tuusuario

En este caso en lugar de tuusuario será su nombre, ahi los meten y pueden ejecutarlos o sino , pueden usar los comandos como si fuera linux , por ejemplo cd .. ( para regresar a la carpea anterior) ,los devolveria a C:\cygwin\home\ (como si fuera linux). 




Bueno es todo, es una entrada un poco larga pero se las dejo por si ustedes ocupan algo de lo anterior.
 
Es todo.




Factorial de un número y Serie de Fibonacci Recursivo

Bien, pues aqui pondré lo que son los codigos de dos programas ya conocidos , el del factorial de un numero y el de la serie de Fibonacci, estos los estuvimos desarollando antes de la seguna presentación, y después de la primera, no habia subido mi trabajo a causa de problemas con el tiempo y otras tareas, pero finalmente aqui lo pongo, ambos codigos están diseñados para resolver el problema recursivamente,  por medio de la llamada a una función que se llama a si misma.

Bien aqui los pongo:

Serie de Fibonacci 
Codigo en C
Ejecución del programa




Factorial de un numero
Codigo en C


Ejecución del programa



Bueno ahi está el ejemplo arriba, ahora pondré los codigos aqui abajo:

Fibonacci


Factorial

Click en la carpeta para descargar.

Información Adicional:

¿Como funciona la serie de fibonacci de manera recursiva? 
El programa simplemente envia un numero a la funcion recursiva, si es 1 o 0  devuelve el numero sin hacer cambios, sino entonces llama la funcion de fibonacci en la cual se realiza la multiplicación del numero -1 +  vuelve a repetir el proceso de la multiplicacion pero ahora con el numero-2 y es lo que muestra por resultado al llamar a la funcion desde la función main, esto lo hacer hasta llegar al caso base.

¿Como funciona el factorial de un numero de manera recursiva?
Funciona de manera similiar al programa anterior solo que este en la funcion recursiva pone la condicion de que si el numero es menor o igual a 1 devuelve el numero, osea si es 1 nos devuelve un uno, sino entonces nos regresa lo que es la multiplicacion del numero * el resultado de llamar a la funcion factorial introduciendo o tomando como argumento el numero-1 y al final muestra el producto de el numero * funcion de factorial.

En conclusión lo unico que hacen es llamar a su propia función para resolver el problema ,como lo vimos en clase y en alguna clase del semestre anterior (en el caso de que hayan visto algo de recursividad).

domingo, 12 de septiembre de 2010

Tarea 3 - Programas en Lenguaje Script

Aqui están los programas de tarea sobre los lenguajes script, realice estos programas en 3 lenguajes script , el primero en AWK, el segundo en SHELL de Linux , y el tercero en Python.

No fué resulto facil hacerlos , sobre todo el de shell que es muy estricto con respecto a la declaración de variables y algunas otras cosas.

Bueno aqui los expongo:



Programa 1 - (En AWK

Ejecución del programa


Para hacerlo ocupé un archivo de texto, aqui lo pongo como texto al final lo pondre como enlace por si lo quieren checar exactamente como lo tengo.

ENERO            50000
FEBRERO        54320
MARZO            60234
ABRIL              52345
MAYO              35634
JUNIO              40345
JULIO               34532
AGOSTO          70340
SEPTIEMBRE  45302
OCTUBRE        65304
NOVIEMBRE    88045
DICIEMBRE     45350

El codigo aqui está, es una imagen al final también pondre los codigos.




1.¿Que hace este programa?
Simplemente muestra los meses y las ventas que tuvo un negocio y al final muestra cual fue la venta total y cual fue el promedio de venta mensual de un negocio.

2.¿Como funciona el código? 
Primero se define una variable en el bloque begin, luego en el bloque del medio muestra los meses y las ventas y va sumando la segunda columna (las ventas) , y al final se muestran los resultados, y se hace un promedio al dividir la sumatoria entre "NR" . NR es el número de registros en el archivo de entrada es decír, cuantas filas tiene el archivo en total son 12, por lo cual dividide la suma entre 12 y saca el promedio.



Programa 2 (En Shell de Linux)
Ejecución del Programa


Código del Programa



1.¿Que hace el programa? 
El Usuario introduce 3 numeros, de esos tres numeros compara cual de los 3 es mayor, muestra la suma , la resta y la multiplicacion de los 3.Es un programa sencillo pero en este quiero demostrar algunas de las funciones de Shell.

2.¿Cómo funciona el programa?
Primero el programa pide al usuario 3 numeros usando read seguido de el nombre de la variable 3 veces para la variable NUMERO1, NUMERO2,NUMERO3 , después comprar NUMERO1 con NUMERO2 y NUMERO1 con NUMERO3, si se cumple la condicion entonces el numero mayor es NUMERO1, sino entonces se compara NUMERO2 con NUMERO3 si NUMERO2 es mayor entonces el numero mayor es NUMERO2, si no se cumple entonces NUMERO3 es el mayor, en este como se puede ver , se usa 2 if anidados, al final de eso muestra quien es mayor , luego hace una suma de los 3 numeros , luego una resta del primero numero introducido hasta el tercer número y luego hace una multiplicación y al final muestra los resultados.




Programa 3 ( En Python

Ejecución del Programa
Caso 1 - 3

Caso 4 - 5



Código del Programa

1.¿Que hace el programa? 
El programa calcula el area de figuras geometricas, el usuario introduce que figura quiere y el programa calcula el area, y si es rectangulo o cuadrado también calcula el perimetro

2.¿Como funciona el programa?
Primero el programa imprime las opciones, luego pide al usuario introducir una opción, luego segun la opcion que escoja pide los datos para al final calcular lo que el usuario pide.

Nota: En este programa al principio se ve una nota en rojo , es para que a la hora de compilar el codigo ese me muestre los acentos de las palabras, luego hay otra cosa que se llama from math import pi , lo que hace es importar el valor de pi del "modulo" math , equivalente a lo que es libreria en C.
ya lo demás es codigo del lenguaje.
Descargas:

 Codigo AWK

Documento de Texto

Codigo Shell


Codigo Python


Nota: Si es posible agregaré una entrada (o editaré ésta) con notas sobre los comandos que use y las paginas que consulte por si desean saber mas.

lunes, 6 de septiembre de 2010

Segunda Presentación

Bueno pues aqui voy a poner el material que utilizaré para dar mi clase sobre recursividad el tema que me tocó fue el de: Recursividad Aplicada al Juego de Buscaminas

El juego que todos conocemos llamado buscaminas, al parecer es simple pero aunque no lo crean tambien utiliza lo que es "recursividad", no podemos apreciarlo a simplevista, pero la recursividad ocurre en el momento de dar click a una casilla y si esta es vacía hace llamadas a las otras casillas para comprobar si son vacias, en el caso de que sean vacias esas llaman a otras utilizando una mismafunción, al final solo se descubren las que están vacías y las que tienen numeros, algo asi como un limite.

Bueno aqui lo que expondre yo, no hay informacion , solo imagenes pues durante el transcurso de la
presentación explicare lo que significan.

El tema me tocó junto con Jurguen Martínez y Oscar Silva.



 Bueno pues lo anterior es mi presentación, aqui una breve explicacion de cada diapositiva:

1. En la primera es solamente como se representaria un arreglo como un tablero, en este caso seria un tablero de 8 x 8 en el cual se utilizaria lo que es una funcion de recursividad para poder llamar a los elementos entre si, esto es lo que seria la programacion del tablero del buscaminas apartir de ahi se puede usar la funcion recursiva.

2. La segunda y tercer diapositiva muestran un breve ejemplo de buscaminas, viene que sucederia al dar click en los puntos rojos, eso lo explicaré.

3. En la cuarta diapositiva pongo el funcionamiento de la recursividad del buscaminas, quien llama a quien , desde donde se repite la funcion etc..

Bueno es todo el link de descarga queda pendiente.

En PPT
Presentación - Parte Mia
Presentación - Completa

En PDF

 Presentación - Parte Mía
Presentación - Completa