lunes, 20 de septiembre de 2010

~Lenguajes Funcionales

Hola a todos, en esta entrada les hablaré un poco acerca de los lenguajes funcionales.

La programación funcional está basada en el uso de funciones aritméticas. Los programas escritos en lenguaje funcional se caracterizan por definiciones de funciones. En estos lenguajes no existe la declaración de variables, como tampoco la iteración y la secuencia (esto hace que cuando tengan que repetirse algunas instrucciones se haga por medio de recursión), se trabaja con memoria dinámica y en algunos lenguajes solo se puede escribir en una sola línea lo cual dificulta mucho al leer el programa. Estos lenguajes se usan sobre todo para la Inteligencia Artificial.

Algunos ejemplos de lenguajes funcionales destaca Haskell y Miranda. Otros lenguajes que son más conocidos son Scala, Scheme, SAP, Standar ML, entre otros. Erlang también es un lenguaje funcional de programación concurrente y R es un lenguaje que esta dedicado a estadística.


Lenguaje Funcional R

Este lenguaje funcional fue creado por Ross Ihaka  y Robert Gentleman está diseñado para análisis estadísticos y gráficos. Es un lenguaje de distibución gratuita con los términos de GNU General Public Licence.

El código fuente de R está escrito la mayor parte en C y algunas partes en Fortran, es principalmente para el sistema operativo Unix y Linux, también para Windows pero como archivos binarios precompilados, así como para Linux, Macintosh, Alpha Unix, entre otros.

R tiene muchas funciones con fines de estadística y gráficos, los cuales se pueden guardar en diferentes formatos entre ellos jpg, png, bmp, ps, pdf, entre otros, esto depende del sistema operativo. En cuanto a lo estadístico, estos se muestran en pantalla y algunos resultados intermedios se pueden guardar o exportar a un archivo para ser utilizados después.

Este lenguaje está orientado a objetos, también es un lenguaje interpretados como el caso de java, lo que significa que son ejecutados sin necesidad de hacer archivos ejecutables.

Les dejo en los links importantes un manual de este lenguaje, les puede ayudar para la tarea que tenemos y también para conocer más cosas de este lenguaje. Esta completo y tiene mucha información.


Cálculo Lambda

Alonso Church fue el desarrollador del cálculo lambda  en los años de 1030s con el fin de conocer la definición de funciones.

En los lenguajes de programación el cálculo lambda proporciona una sintaxis, semántica y una forma para definir primitivas de programación.

Sintaxis



Ejemplos.

(λ x. x + 2) 3 -->
(λ f. f 3) (λ x. x + 2) --> (λ x. x + 2) 3 --> 3 + 2 --> 5



Referencia
http://exa.unne.edu.ar/informatica/programacion3/public_html/apuntes/Calculo_Lambda.pdf

~Recursión


Materia: Laboratorio de Lenguajes de Programación
Hora: Jueves V1

Hola a todos, en esta entrada les hablaré un poco hacerca de recursión. En términos de programación, la recursión se refiere a llamar a una función a través de esa misma función.

Un algoritmo recursivo es un algoritmo que obtiene la solución mediante la llamada de una función a si misma. Este procedimiento de llamarse a si mismo se llama recursión.

Una forma de simplificar un problema de recursión es dividirlo en problemas más chiquitos, o bien en subproblemas. Este método en programación se llama "Divide y vencerás", de esta técnica hable un poco en la entrada anterior de la presentación de Ordenamiento por mezcla.

Al dividir el problema principal en subproblemas, estos subproblemas tienen que reducirse hasta llegar al caso base.

Algunos ejemplos de recursión son: quicksort, ordenamiento por mezcla, torres de hanoi, búsqueda binaria, factorial, etc.


FACTORIAL


n!=
\begin{cases} 
\mbox{si }n=0 & \Rightarrow 1 \\ 
\mbox{si }n \geqslant 1 & \Rightarrow (n-1)! \cdot n
\end{cases}

Les dejo el código de factorial en c.

#include  


int main(void){
int numero;

printf("Dime un numero: ");
scanf("%d", &numero);
printf("El factorial de %d es: %d", numero, fact(numero));
}

int fact(numero) {
if (numero == 0) {
        return 1;
        }
/*Regresa el factorial del numero que introduciste*/
        else {
        return numero * fact(numero - 1);
        }
}

Este programa lo que hace es que mediante la recursividad te calcula el factorial del número que tu introduces.


Bueno para terminar busqué videos acerca del tema para que les ayudaran por si no entienden recursión y me encontré con un video que representan los algoritmos recursivos de una manera muy clara y entendible. Aquí les dejo el video por si les interesa verlo, es un ejemplo sencillo.



Referencia

lunes, 6 de septiembre de 2010

Presentación Ordenamiento por Mezcla

Hola a todos, aquí les dejo mi parte del tema de recursión, me tocó dar ordenamiento por mezcla junto con mi compañera Lizbeth Treviño y mi compañero Jorge Molano.



Bueno les explicaré un poco acerca de este tema. El ordenamiento por mezcla lo desarrolló un matemático húngaro John Von Neumann en 1945.

Este ordenamiento por mezcla utiliza el algoritmo Divide y Vencerás, la cual tiene tres pasos.
  1. Divide. Divide el problema en cierto numero de subproblemas
  2. Vence. Soluciona este problema de forma recursiva.
  3. Combina. Mezcla el resultado de los subproblemas para obtener la solución.

En el ordenamiento por mezcla estos pasos se siguen de la siguiente manera:
  1. Divide la cantidad de números n entre 2 subsecuencias. Éstas subsecuencias se pueden dividir cada vez más de tal manera que quede de un número por subsecuencia.
  2. Ordena las subsecuencias de manera recursiva.
  3. Mezcla las dos últimas subsecuencias para lograr la solución al problema. 
Espero les haya ayudado en algo. Saludos :)

Descargar:
Presentacion.pptx
Presentación.ppt
Presentación.pdf