sábado, 20 de noviembre de 2010

REPORTE 7






Hola aqui les dejo mi reporte 7

Bueno aqui una pequeña descripción de los programas que pondree que seriann en Java y en C++.

















C++ es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el extender al exitoso lenguaje de programación C con mecanismos que permitan la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido.

Posteriormente se añadieron facilidades de programación genérica, que se sumó a los otros dos paradigmas que ya estaban admitidos (programación estructurada y la programación orientada a objetos). Por esto se suele decir que el C++ es un lenguaje de programación multiparadigma.











Aqui esta la imagen del codigo









Aqui esta la imagen de la corrida










Java es un lenguaje de programación orientado a objetos, desarrollado por Sun Microsystems a principios de los años 90. El lenguaje en sí mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulación directa de punteros o memoria.

Las aplicaciones Java están típicamente compiladas en un bytecode, aunque la compilación en código máquina nativo también es posible. En el tiempo de ejecución, el bytecode es normalmente interpretado o compilado a código nativo para la ejecución, aunque la ejecución directa por hardware del bytecode por un procesador Java también es posible.




Aqui esta la imagen del codigo del programa que realice




¿De que trata mi programa?




Mi programa trata hacerca de la serie fibonacci, seguramente ustedes ya la conocen aqui les dejo una pequeña información acerca de esta.

En matemáticas, la sucesión de Fibonacci es la siguiente sucesión infinita de números naturales:


La sucesión inicia con 0 y 1, y a partir de ahí cada elemento es la suma de los dos anteriores.

A cada elemento de esta sucesión se le llama número de Fibonacci. Esta sucesión fue descrita en Europa por Leonardo de Pisa, matemático italiano del siglo XIII también conocido como Fibonacci. Tiene numerosas aplicaciones en ciencias de la computación, matemáticas y teoría de juegos. También aparece en configuraciones biológicas, como por ejemplo en las ramas de los árboles, en la disposición de las hojas en el tallo, en la flora de la alcachofa y en el arreglo de un cono.

Imagen del codigo









Corrida


NUMEROS PRIMOS EN JAVA


codigo


Corrida




REFERENCIAS






Pagina1






Pagina2






Pagina3

jueves, 18 de noviembre de 2010

REPORTE 6

LENGUAJES IMPERATIVOS


La programación imperativa, en contraposición a la programación declarativa es un paradigma de programación que describe la programación en términos del estado del programa y sentencias que cambian dicho estado. Los programas imperativos son un conjunto de instrucciones que le indican al computador cómo realizar una tarea.

Hola aqui les dejo mi reporte espero que les guste los lenguajes que pondre son C, Pascal, Fortran, Cobol.


C


Lo siguiente es el codigo





Bueno este programa se trata de lo siguiente lo subi como presentación ojala les guste.

Imagen de la corrida del programa



Como ya se dieron cuenta este programa saca el numero de catalan ya explicado en la presentación pero en este caso se saca recursivamente.


otro en C
Aqui les dejo el de numeros primos en C





CORRIDA





PASCAL

Pascal es un lenguaje de programación desarrollado por el profesor suizo Niklaus Wirth entre los años 1968/9 y publicado en 1970. Su objetivo era crear un lenguaje que facilitara el aprendizaje de programación a sus alumnos, utilizando la programación estructurada y estructuración de datos. Sin embargo con el tiempo su utilización excedió el ámbito académico para convertirse en una herramienta para la creación de aplicaciones de todo tipo.

Pascal se caracteriza por ser un lenguaje de programación estructurado fuertemente tipificado. Esto implica que:

1.El código está dividido en porciones fácilmente legibles llamadas funciones o procedimientos. De esta forma Pascal facilita la utilización de la programación estructurada en oposición al antiguo estilo de programación monolítica.
2.El tipo de dato de todas las variables debe ser declarado previamente para que su uso quede habilitado.








Aqui les dejo la imagen del codigo de mi programa se trata otraves de lso numeros de catalan pero en este caso iterativamente en el lenguaje Pascal.








Aqui les dejo la imagen de la corrida







FORTRAN







El Fortran es un lenguaje de programación alto nivel de propósito general, e imperativo, que está especialmente adaptado al cálculo numérico y a la computación científica. Desarrollado originalmente por IBM en 1957 para el equipo IBM 704, y usado para aplicaciones científicas y de ingeniería, el FORTRAN vino a dominar esta área de la programación desde el principio y ha estado en uso continuo por más de medio siglo en áreas de cómputo intensivo tales como la predicción numérica del tiempo, análisis de elementos finitos, dinámica de fluidos computacional (CFD), física computacional, y química computacional. Es una de los lenguajes más populares en el área de la computación de alto rendimiento y es el lenguaje usado para programas que evalúan el desempeño (benchmark) y el ranking de los supercomputadores más rápidos del mundo.









Aqui les dejo el codigo
c------Programa que determina la cantidad de raices de una función cuadratica

write(6,*) 'Coeficiente de la variable que esta al cuadrado: '
read(5,*) a
write(6,*) 'Coeficiente de la variable lineal: '
read(5,*) b

write(6,*) 'valor independiente: '
read(5,*) c

discriminante= (b*b)-(4*a*c)

if discriminante.LT.0 then
write(6,*) 'No tiene una raiz real '

else
if discriminante.EQ.0 then
res=(-1*b)/(2*a)res=(-1*b)/(2*a)
write(6,*) 'Tiene una raiz real es: ' res
else
res=((-1*b)-(sqrt(descriminante)))/(2*a)
res2=((-1*b)+(sqrt(descriminante)))/(2*a)


write(6,*) 'Tiene 2 raices reales son: '

endif
endif

stop
endif



Aqui les dejo otros programas hechos en Fortran



Serie Fibonacci





PROGRAMA FIBONACCI
REAL A,B,C
INTEGER N
WRITE(*,*)'CUANTOS NUMEROS DE FIBONASSI QUIERES:'
READ (*,*) N
A = 1
DO I = 1, n
READ (*,*)SUMA
SUMA = SUMA + SUMA
END DO
PROM = SUMA/N
WRITE(*,*)'EL PROMEDIO ES DE:',PROM
END

NUMEROS PRIMOS
PROGRAM FIBONASSI
REAL A,B,C
INTEGER N
WRITE(*,*)'QUE NUMERO QUIERES SABER SI ES PRIMO'
READ (*,*) N
A = 1
B = 0
C = 0
DO I = 1, n
C = A + B
B = A
A = C
WRITE(*,*)'NUMERO DE FIBONASI NUMERO:',I
WRITE(*,*)C
END DO

END


referencias

Pagina1

Pagina2

martes, 16 de noviembre de 2010

REPORTE 8





Hola compañeros aqui les dejo una información acerca de GO espero que les guste:

GO proviene de la fusión de varios lenguajes de familias de donde desciende, entre ellos el afamado lenguaje C. Aún asi incorpora elementos de Python (recordemos que es lenguaje preferido de Google, además que el creador de este lenguaje,, trabaja también alli), así como de la familia de Pascal/Modula/Oberon entre otros programas dinámicos.

Dado que han pasado 10 años en los que no se ha creado un nuevo leguaje de programación, Google considera que es el momento de dar el gran salto pues, según ellos mismos afirmaron en una conferencia de presentación, el mundo de la web y la computación ha cambiado dramáticamente en esos últimos años, pero los lenguajes deprogramación no han evolucionado al mismo ritmo.

Sin embargo Google no solamente pretende el diseñar un lenguaje de programación que sea bastante eficiente, sino que desea que este lenguaje sea usado masivamente por miles de desarrolladores en la creación de aplicación web y de software a nivel mundial. A continuación el video donde Google da a conocer el lenguaje GO.
Aqui les dejo mi programa que realice se trata del ordenamiento burbuja creo que ya todos saben de que se trata pero como quiera pondre una pequeña información acerca de ello:



ORDENAMIENTO BURBUJA

El Ordenamiento de burbuja (Bubble Sort en inglés) es un sencillo algoritmo de ordenamiento. Funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente, intercambiándolos de posición si están en el orden equivocado. Es necesario revisar varias veces toda la lista hasta que no se necesiten más intercambios, lo cual significa que la lista está ordenada. Este algoritmo obtiene su nombre de la forma con la que suben por la lista los elementos durante los intercambios, como si fueran pequeñas "burbujas". También es conocido como el método del intercambio directo. Dado que solo usa comparaciones para operar elementos, se lo considera un algoritmo de comparación, siendo el más sencillo de implementar.
Bueno ya que saben de que se trata mi programa aqui les dejo la imagen de codigo:




Aqui una imagen de la pagina donde se puso y se corrio



Si la imagen no se ve bien aqui les dejo el codigo jejeje:












Ahora que ya puse el codigo les dejo la imagen donde lo corri desde su pagina:




Aqui una explicación del codigo:

1. Declaramos el evctor con los datos a ordenar.

2. Declaramos las variables que vamos a utilizar que son dos contadores i, j y una variable auxiliar aux.

3.Después empieza a recorrer todo el vetor comparando cada elemento el valor de la posición con el de la posición anterior preguntando si la posición actual es menor a la posición anterior, si es verdad agrega el valor que tiene la posición actual a la variable aux, el valor de la posición anterior lo agrega a la posición actual y por ultimo agrega lo que se pus en la variable aux a la posición anterior.

4. Termina todos los recorridos e mprime todos los valores de lo que contiene el vector.



Bueno por mi es todo espero que les haya gustado.

REFERENCIAS

Pagina1
Pagina2

miércoles, 10 de noviembre de 2010

REPORTE 4

Aqui les dejo mi reporte 4


Realize dos programas en Haskell, espero y les sean utiles:

SERIE FIBONACCI

Los programas los realize en ubuntu ya que se me hace mas facil.
Asi se ve la terminal cuando podemos emp
Añadir imagenezar aprogramar en Haskell



Este primer programa nos calcula los numeros de la serie fibonacci en recursivo.

1. Lo primero que tenemos que hacer es crear la función en un archivo con la extensión .hs y dar las instrucciones para realizar las operaciones.
2. Ponemos el nombre de la función y después lso tipos de datos que va a manejar la función.
3. Después ponemos el nombre de la variable que se le va a asignar el valor ingresado a la función.
4. Después encontramos un if con la condición de que si x es mayor a 2 se va a detener la recursión y si es falso se va a estar llamando a si misma.


Este es el codigo


Corrida del programa


Mínimo común divisor

Es un programa que calcula el minimo común divisor de dos números recursivamente.

1. Lo primero que tenemos que hacer es crear la función en un archivo con la extensión .hs y dar las instrucciones para realizar las operaciones.
2. Ponemos el nombre de la función y después los tipos de datos que va a smanejar la función.
3. Después ponemos el nombre de la variable que se le va a asignar el valor ingresado a la función.
4. Después encontramos un if con la condición de que si y es igual a 0 se va a detener la recursión y si es falso se va a estar llamando a si misma.


Codigo del programa


Corrida del programa








El otro programa del que realize el reporte fue de R

Es uan grafica que genere iportando un archivo.

(SI LAS IMAGENES NO SE VEN BIEN DARLE CLIC PARA VERLAS EN GRANDE)


Este es la grafica que se genero

Ahora vamos a realizar un histograma con los mismos datos.

Con la función hist(Mujeres)
Aparece el histograma de las mujeres


Y ahora un histograma de hombres
Con la misma función hist(Hombres)




LENGUAJES FUNCIONALES
Aqui dejo alguna información acerca de los lenguajes funcionales


La Programación funcional es un paradigma de programación declarativa basado en la utilización de funciones matemáticas..
Características
No como subprogramas clásicos de un lenguaje imperativo, sino como funciones puramente matemáticas.
Otras características propias de estos lenguajes son la no existencia de asignaciones de variables y la falta de construcciones estructuradas como la secuencia o la iteración.
Tipos de Lenguajes
Existen dos grandes categorías de lenguajes funcionales:
• los funcionales puros
• los híbridos
Lenguajes Puros
En contraste, los lenguajes funcionales puros tienen una mayor potencia expresiva, conservando a la vez su transparencia referencial, algo que no se cumple siempre con un lenguaje funcional híbrido.
Entre los lenguajes funcionales puros, cabe destacar a aHaskell y Miranda
Lenguajes Hibridos
Los lenguajes funcionales híbridos
son menos dogmáticos que los puros, al admitir conceptos tomados de los lenguajes imperativos , como las secuencias de instrucciones o la asignación de variables.
Los lenguajes funcionales híbridos más conocidos son
• Scala
• Lisp
• Scheme
• Ocaml
• SAP
• Standard ML

Aqui les dejo la definici[on de algunos lenguajes funcionales y algunos tutoriales

El Lisp (o LISP) es una familia de lenguajes de programación de computadora de tipo funcional con una larga historia y una sintaxis completamente entre paréntesis. Especificado originalmente en 1958 por John McCarthy y sus colaboradores en el Instituto Tecnológico de Massachusetts.
El Lisp fue creado originalmente como una notación matemática práctica para los programas de computadora, basada en el cálculo lambda de Alonzo Church. Se convirtió rápidamente en el lenguaje de programación favorito en la investigación de la inteligencia artificial (AI). Como uno de los primeros lenguajes de programación, el Lisp fue pionero en muchas ideas en ciencias de la computación, incluyendo las estructuras de datos de árbol, el manejo de almacenamiento automático, tipos dinámicos, y el compilador auto contenido.
El nombre LISP deriva del "LISt Processing" (Proceso de LIStas). Las listas encadenadas son una de las estructuras de datos importantes del Lisp, y el código fuente del Lisp en sí mismo está compuesto de listas. Como resultado, los programas de Lisp pueden manipular el código fuente como una estructura de datos, dando lugar a los macro sistemas que permiten a los programadores crear una nueva sintaxis de lenguajes de programación de dominio específico empotrados en el Lisp.
TUROTIALLISP




R es un lenguaje y entorno de programación para análisis estadístico y gráfico.
Se trata de un proyecto de software libre, resultado de la implementación GNU del premiado lenguaje S. R y S-Plus -versión comercial de S- son, probablemente, los dos lenguajes más utilizados en investigación por la comunidad estadística, siendo además muy populares en el campo de la investigación biomédica, la bioinformática y las matemáticas financieras. A esto contribuye la posibilidad de cargar diferentes librerías o paquetes con finalidades específicas de cálculo o gráfico.
R proporciona un amplio abanico de herramientas estadísticas (modelos lineales y no lineales, tests estadísticos, análisis de series temporales, algoritmos de clasificación y agrupamiento, etc.) y gráficas.
Al igual que S, se trata de un lenguaje de programación, lo que permite que los usuarios lo extiendan definiendo sus propias funciones. De hecho, gran parte de las funciones de R están escritas en el mismo R, aunque para algoritmos computacionalmente exigentes es posible desarrollar librerías en C, C++o Fortran que se cargan dinámicamente. Los usuarios más avanzados pueden también manipular los objetos de R directamente desde código desarrollado en C. R también puede extenderse a través de paquetes desarrollados por su comunidad de usuarios.
TUTORIALR


Haskell es un lenguaje de programación puramente funcional de propósito general y fuertemente tipado. Su nombre proviene del lógico Haskell Curry.
Las características más interesantes de Haskell incluyen el soporte para tipos de datos y funciones recursivas, listas, tuplas, guardas y calce de patrones. La combinación de las mismas pueden resultar en algunas funciones casi triviales cuya versión en lenguajes imperativos pueden llegar a resultar extremadamente tediosas de programar.
TUTORIALHASKELL Aqui podran encontrar varios tutoriales...





Pagina1
Pagina2
Pagina3 Pagina4

REPORTE 5

Este es mi reporte 5 escogi algunos problemas logicos que se vieron en mate discretas. Espero que les guste.




¿Cómo lo haremos?

Primero que nada el problema lo vamos a resolver por medio de logica proposicional.



Subi esta presentación donde puse mi problema.



PROBLEMA LÓGICO 2

Aqui esta mi presentación donde esta el problema y como lo resuelvo.

PROGRAMA EN PROLOG




Aqui alfunos otros problemitas de prolog que realize en la clase de Matematicas Discretas



Prolog
View more documents from blankardz.


Estan con su imagen de prolog, bueno si la quieren ver mejor veanla en grande asi se ve mejor





1






miércoles, 27 de octubre de 2010

Presentación 3

Esta es la presentación que le toco a nuestro equipo espero qu les guste.


Levenshtein (2)
View more presentations from blankardz.

AQUI ESTA EL CONTENIDO DE MI PRESENTACIÓN

La distancia de Leveinshtein o también conocida como distancia de edición , es un algoritmo tal que dadas dos cadenas, devuelve un entero que da una idea de la distancia (o parecido) entre ellas.
La definición de distancia es el mínimo número de operaciones que hay que realizar para transformar una cadena en la otra.
Debe su nombre al matemático ruso Vladimir levenshtein .

Este entero se calcula contando las transformaciones que es necesario hacer sobre una de estas cadenas para obtener la otra.

Estas posibles transformaciones son:

  • Borrado de un carácter
  • Inserción de un carácter
  • Substitución de un carácter por otro


APLICACIONES

Algunas aplicaciones en la que se puede usar la distancia de edición son:

  • Sistemas para la revisión de faltas ortográficas automatizada en textos.
  • Sistemas de reconocimiento de voz
  • Sistemas para el análisis de ADN.
  • Sistemas para la detección de plagios.

ALGORITMO CON UNA IMPLEMETACIÓN

1.-Pide la primer palabra y la ingresa a una variable llamada palabra



2.-Pide la segunda palabra y la ingresa a una variable llamada palabra2



3.-calcula la longitud de cada una de las palabras con la función len() y las agrega ala variable correspondiente long long2

por ejemplo len(palabra)

la longitud de la palabra perro es de 5




4.-crea la matriz donde se realizara las operaciones necesarias para obtener la distancia

matriz= [[0 for x in xrange(long+1)] for y in xrange(long2+1)]

esto crea eje “x” y asigna el valor de 0 con un rango de long + 1 y

crea el eje “y” y asigna el valor de 0 con un rango de long2+1



5.- se enumeraran las letras de cada palabra, para eso se utilizo lo siguiente

i=1

while i<=long:

matriz[0][i]=i

i=i+1

i=1

while i<=long2:

matriz[i][0]=i

i=i+1



6.- Comienza hacer las operaciones necesarias para obtener la distancia, para recorrer toda la tabla se utilizaron 2 ciclos anidados como que fue el while, al entrar al ciclo se compara letra por letra de las 2 palabras, y se van comparando de 1 en 1, esto lo hace con el siguiente

if(palabra[j-1]==palabra2[i-1]): (se pone “-1” ya que como lo mencione anteriormente la palabra empieza desde la posición 0 )

en el cual si las letras son iguales, busca el número menor en la matriz, una posición menos en “x”, una posición menos en “y”, y una posición menos en “x” y “y”, Esto se realiza con una función que es min(), que esta te regresa el valor menor.

matriz[i][j]=min(matriz[i-1][j-1],matriz[i][j-1],matriz[i-1][j])

si las letras no son iguales hace lo mismo que el paso anterior , nada mas que al número menor le suma un 1

matriz[i][j]=min(matriz[i-1][j-1],matriz[i][j-1],matriz[i-1][j]) + 1



7.- Cuando termina de recorrer toda la tabla y de comparar todas las letras el resultado que buscamos se guardara en la última posición de “x” y “y” .





print "distancia: " +str(matriz[long2][long])

Aquí les dejo un ejemplo de la distancia de edición de dos palabras


¿Cómo lo haremos?
Se le asignan costos a cada una de las transacciones.
Al borrado: 1 costo
Ala insercci
ón: 1 costo
A la sustituci
ón:1 costo

Pero esto solo aplica si son las letras son diferentes




Aqui les dejo la imagen del código


Aqui les dejo un ejemplo de dos palabras en donde calculo su distancia de edición: