domingo, 31 de octubre de 2010

Lenguaje Lisp

Hola a todos, en esta entrada les pondré algunos ejemplos del lenguaje Lisp.

Empezaremos con algo básico que son las operaciones básicas las cuales en Lisp son un poco diferentes ya que primero se pone la operación deseada y después los números con los que se realizará dicha operación. Es muy importante pasar espacios después del operador y entre los números, en el ejemplo les mostraré lo que pasa si no hacen esto.






Como pueden ver en la primera operación marco un error ya que no pase espacio entre el + y el 2. Y también hice operaciones con números decimales para que vieran que si realiza operaciones con números flotantes.
 


En el siguiente ejemplo se muestra como declarar las funciones.




Se muestra una función que calcula el cuadrado de un número X y una función que calcula el cubo de un número X. Como pueden ver primero se declaro y luego se asignó el número que quieres elevar al cubo o al cuadrado.


En Lisp los valores lógicos Falso y Verdadero se representan como Nil y T respectivamente. De esto, les mostraré un ejemplo a continuación.










En estos ejemplos se muestran los valores de verdad o falso dependiendo de lo que le pongas en estos ejemplos puse varios predicados de Atomos, símbolos y números de los cuales te devuelve por ejemplo en símbolos te devuelve falso si lo que pusiste no es un símbolo, en caso contrario devuelve una T de verdadero.

En cuanto a los predicados de igualdad aquí unos ejemplos.


En el primero le puse que si CARMEN es igual  CARMEN y como esto es cierto me devolvió T. En caso contrario el siguiente compare HOJA con HOLA y me devolvió NIL. Esto también se puede usar con operaciones como se muestra en este ejemplo.


Lenguajes funcionales LISP y Scheme

LISP

Primero que nada, les hablaré acerca del lenguaje LISP el cual es uno de los lenguajes más antiguos de alto nivel. Este lenguaje se desarrolló alrededor de 1958 por John McCarthy, surgió a partir de un lenguaje lógico llamado lambda calculus. Existen diferentes dialectos del lenguaje LISP entre ellos Scheme, T, entre otros. LISP se utilizó en el campo de inteligencia artificial y aún se sigue utilizando.

En los 80's se trató de estandarizar este lenguaje y como resultado apareció el Common LISP el cual es el dialecto más difundido actualmente, así como la base para desarrollar diversas implementaciones.

El nombre de LISP se deriva de "List Processing" ya que las listas son una de las estructuras de datos importantes de LISP y el código fuente de LISP está compuesto de listas.

Características
- Posibilidad de que las funciones puedan ser datos también.
- Las funciones o programas pueden utilizarse como entrada a otros programas o subrutinas
- Maneja la memoria automáticamente liberando espacio de objetos que ya no se utilizan
- Procesamiento de listas
- Utiliza la misma estructura para datos y codigo
- + / * son nombres de funciones en LISP

En LISP los objetos se llaman S-expresions (symbolic expressions). Los objetos se clasifican en átomos que son números, simbolos y cadenas de caracteres y se clasifican también en listas. 

Los símbolos son cadenas de caracteres (que incluyan por lo menos un caracter no númerico) 
Por ejemplo.

HOLA, H2O, A1, DOS_PAL

Los números pueden ser enteros sobre 16 bits y números flotantes sobre 128 bits.


Por ejemplo.

2, -43, 76.90, -2.5
Las cadenas de caracteres es conjunto de caracteres con o sin espacios que comienza y termina con dobles comillas.

Por ejemplo.

"C N 26", "CARMEN"

Las listas es una sucesión ordenada de objetos que pueden estar vacios. Su estructura se conforma de paréntesis que abre, objetos separados por un espacio y un paréntesis que cierra.

Por ejemplo.

(2 c n), (), (x (y (z)))


Scheme

Scheme es un lenguaje funcional y un dialecto de Lisp. Se desarrolló por Guy L. Steele y Gerald Jay Sussman en los 70s. La filosofía de Scheme es reducida a lo escencial, osea minimalista. 

Al igual que en Lisp, en Scheme las listas son la estructura de datos básica del lenguaje, también están los arrays entre sus principales.

Características
- Tiene una sintaxis muy reducida
- Carece de operadores
- Los macros de Scheme se adaptan en cualquioer dominio
- Tiene un sistema de macros que  son más seguros y fáciles de utilizar
- Facilita la programación funcional
- Existe una multitud de implementaciones diferentes, en cada una de estas existen extenciones y bibliotecas propias que hace que no sean compatibles entre sí.
- Algunas funciones tienen nombres de uso común para variables
- Es imposible distinguir el uso de una macro del de una función

Nota. Una macro es una serie de instrucciones que son almacenadas para que se puedan ejecutar secuencialmente a través de una sola llamada.

Bueno esta fue mi entrada de Lisp y de Scheme espero que les haya ayudado en algo. Saludos a todos

martes, 26 de octubre de 2010

Manuales de lenguaje R y tarjeta de referencia

Les dejo el siguiente link que venía en las diapositivas de la Dra Schaeffer, vienen muchos manuales en inglés y español, a mi me sirvieron mucho. Espero que a ustedes también les sirva.


Aquí también les dejo una tarjeta de referencia del lenguaje R donde vienen muchas funciones incluyendo las que utilicé para hacer mi reporte.

Lenguaje R: Vectores y matrices

Siguiendo con lenguaje R, les mostraré mas ejemplos de este.



En este ejemplo se declaró un vector a1 y con la función order( ) se muestra el lugar que tiene cada uno de estos números, ya poniendo a1[order(a1)] se muestran los números ya acomodados en forma ascendente. También se indica el máximo y el minimo de estos números con las funciones min( ) y max ( ) respectivamente.



En el ejemplo de arriba se muestra la función pegar ( ) con la cual puedes unir caracteres con números como en este caso uní los caracteres "C" y  "N" con los números del 1 al 6. Después uní las cadenas "hola", "soy" y "carmen" y con substr, substraje los caracteres 1 y 2 de la palabra "casa".




Para declarar arreglos se declaran como en la imagen que aparece arriba, 1:10 son los números que van a ir en el arreglo las dimensiones son las que estan dentro del vector empezando por filas, después columnas y después cuantos arreglos irán. Como pueden ver primero cree uno que tuviera los números del 1 al 10 en un solo arreglo con 5 filas y 2 columnas y después uno del 1 al 20 igual 5 filas, 2 columnas pero en dos arreglos para que notaran la diferencia.




También se pueden declarar matrices de esta forma donde indicas que números van dentro de esta y en este caso el número de filas.

Lenguaje R también te dice la matriz transpuesta con la funcion t(nombrematriz) y también la diagonal principal con diag(nombrematriz) entre otras cosas.

Espero que les haya servido todo esto, si tienen alguna duda háganmela saber, gracias por tomarse tiempo de leer mis entradas :)

Lenguaje R: Operadores Lógicos y operaciones con conjuntos

En Lenguaje R también existen operadores lógicos como lo muestro en el siguiente ejemplo.


Declaramos un vector que se le asigno a calif, después puse una condición los números mayores a 70 y lo que hace es que aparece la palabra TRUE si el número es mayor a 70 o FALSE si es menor a 70 en el orden de los números como los declaraste al principio. Después con una función llamada rep le asigné a A los primeros 4 números del vector, a B los siguientes 3 números y a C el último número. En la siguiente linea calif[cortar==A] se muestran los números que quedaron en A e igualmente con B y C. Con la función split se muestran A, B y C con sus números correspondientes.


Se declaran a y b, a del numero 5 al 10 y b un vector. La función union sirve para unir dos conjuntos en este caso se junto un vector con numeros del 5 al 10. Intersect te dice los números que son iguales en el vector y en los números del 5 al 10. Al contrario, setdiff te dice los diferentes primero comparando los de a con los de b y después los de b con los de a.



En este ejemplo declaré un arreglo x y después un arreglo a donde puse que fuera del numero dos hasta (4*5) osea 20. Después hice una secuencia con la función seq desde 6 hasta 60 de tres en tres. También con la función rep pones el número que quieras que se repita y separado por una coma, el número de veces que quieres que se repita.

Lenguaje R: Introducción

Hola a todos, en esta entrada empezaré mi reporte 4 de lenguajes funcionales. 

Primero vamos con lo básico que son las operaciones básicas de suma, resta, multiplicación y división. Estas operaciones se hacen igual que como nos enseñaron en la escuela los signos son iguales.


en este ejemplo como pueden ver no necesitas poner que tipo de número estas poniendo, si es decimal o no, como quiera te hace la operación que colocaste.

De echo, también te puede decir que tipo de dato fue el que ingresaste.




en este ejemplo, declare x del numero 20 al 25 por eso tiene ":" porque significa de que numero a que numero le asignas, z con la cadena corazon y con la función typeof(nombre de variable) te indica que tipo de dato fue el que pusiste.


También hace operaciones como raiz cuadrada, potencia, funciones trigonometricas, reconoce pi, entre otras cosas como se muestra en la siguiente imagen.





jueves, 21 de octubre de 2010