Páginas

sábado, 20 de noviembre de 2010

PROGRAMA EN PROLOG

Bueno aquí les dejo este problema su solución manual y el problema en prolog:




Subi esta presentación donde puse mi problema.




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

PROGRAMA EN PROLOG



Programa en prolog

PROLOG

Software desarrollado para el Area de Inteligencia Artificial se desarrollo en 1970 por Alain Colmeraurer.

En un lenguaje declarativo se deben explicar las siguientes secciones del programa:


a)Domains: (dominios).

b)Predicates: (predicados).

c)Clause: (clausulas).

d)Goals: (objetivos o metas).

Inicialmente se trataba de un lenguaje totalmente interpretado hasta que, en 1983, David H.D. Warren desarrolló un compilador capaz de traducir Prolog en un conjunto de instrucciones de una máquina abstracta denominada Warren Abstract Machine, o abreviadamente, WAM. Desde entonces Prolog es un lenguaje semi-interpretado.

Los programas en Prolog se componen de cláusulas de Horn que constituyen reglas del tipo "modus ponendo ponens", es decir, "Si es verdad el antecedente, entonces es verdad el consecuente". No obstante, la forma de escribir las cláusulas de Horn es al contrario de lo habitual. Primero se escribe el consecuente y luego el antecedente. El antecedente puede ser una conjunción de condiciones que se denomina secuencia de objetivos. Cada objetivo se separa con una coma y puede considerarse similar a una instrucción o llamada a procedimiento de los lenguajes imperativos. En Prolog no existen instrucciones de control. Su ejecución se basa en dos conceptos: la unificación y el backtracking.

Gracias a la unificación, cada objetivo determina un subconjunto de cláusulas susceptibles de ser ejecutadas. Cada una de ellas se denomina punto de elección. Prolog selecciona el primer punto de elección y sigue ejecutando el programa hasta determinar si el objetivo es verdadero o falso.

En caso de ser falso entra en juego el backtracking, que consiste en deshacer todo lo ejecutado situando el programa en el mismo estado en el que estaba justo antes de llegar al punto de elección. Entonces se toma el siguiente punto de elección que estaba pendiente y se repite de nuevo el proceso. Todos los objetivos terminan su ejecución bien en éxito ("verdadero"), bien en fracaso ("falso").

Para realizar los programas, se debe pensar declarativamente.




Para definir un hecho en Prolog, deberá tomar en cuenta que nuestra oración(hecho) debe llevar el formato predicado(sujeto).


HECHOS


marco es maestro
genizes un programador


Notación en Prolog


maestro (marco).
programador(geniz).







SINTAXIS

Las variables deben escribirse con Mayúsculas
Las constantes se escriben con Minúsculas
Las afirmaciones se terminan con.(punto)
No se pueden dejar espacios entre los nombres de las constantes, para el lo utilice el guion bajo(_).
Los comentarios empiezan con %

Operadores

Conjunción -->, (coma)
Disyunción -->;
Regla o Condición -->:-
Fin de la condición -->.



Paginas consultadas











PROGRAMACIÓN LÓGICA




La programación lógica consiste en la aplicación del corpus de conocimiento sobre lógica para el diseño de lenguajes de programación; no debe confundirse con la disciplina de la lógica computacional.

La programación lógica es un tipo de paradigmas de programación dentro del paradigma de programación declarativa. El resto de los subparadigmas de programación dentro de la programación declarativa son: programación funcional, programación basada en restricciones, programas DSL (de dominio específico) e híbridos. La programación lógica gira en torno al concepto de predicado, o relación entre elementos. La programación funcional se basa en el concepto de función (que no es más que una evolución de los predicados), de corte más matemático.


¿Qué es ?
Propuesta por Kowalski en 1974 facilita la tarea de programación liberando al programador haciendo una optimización de las dos componentes básicas de un algoritmo, Lógica y Control.

La programación lógica consiste en la aplicación del corpus de conocimiento sobre lógica para el diseño de lenguajes de programación. Se ha convertido en el pilar de una nueva generación de lenguajes de programación.

Junto con la programación funcional forma parte de lo que se conoce como programación declarativa, Como se irá explicando mas adelante en los lenguajes tradicionales se intenta resolver un problema mediante sentencias, en la programación lógica se trabaja de forma descriptiva, estableciendo relaciones, y no indicando un cómo sino un qué hacer.

Es decir el algoritmo que se quiera diseñar se construye especificando un conocimiento en un lenguaje formal y para resolverlo se uso la inferencia o control que actúa sobre aquel.

¿ Cómo nació ?
Los ordenadores siempre se han programado usando lenguajes con propiedades de la propia maquina: aritmética simple, instrucciones de acceso…Un programa de estas características puede ocultar su propósito a los ojos de un ser humano, incluso uno que maneje dichos lenguajes o técnicas de programación. Estos lenguajes pertenecientes a la la programación imperativa han evolucionado de manera que ya no son tan difíciles de entender.

La lógica matemática es la manera mas sencilla, para el ser humano, de expresar problemas y resolverlos con la aplicación de reglas, hipótesis y teoremas. De ahí el éxito de la programación lógica en campos donde la programación “de siempre” es un fracaso.

¿ Para qué se usa ?
Su principal uso se basa en las aplicaciones de inteligencia artificial o similares.

Sistemas expertos.
Demostración automática.
Reconocimiento de lenguaje natural.


Fundamentos de la Programación Lógica
Se basan principalmente en la teoría Lógica de Primer Orden, y en algunos de nivel superior. Destacamos los lenguajes funcionales como teoría lógica de orden superior que es demostradamente computable.

No se basa en la veracidad o falsedad de expresiones o sentencias sino de las relaciones que se generan entre ellas. Así se basan en un mecanismo de inferencia.

Éste requerirá de un lenguaje que exprese en una forma sencilla y sin ambigüedad las expresiones que representen las afirmaciones y conclusiones. Así nos basamos en expresiones y relaciones de la forma que:

Juan es hijo de Pedro.
Dos es mayor que uno.
Así los programas se establecen como conjuntos de axiomas (base de conocimiento), expresados mediante cláusulas de Horn, para la definición de predicados entre objetos.


REFERENCIAS


Pagina1


Pagina2



PROGRAMA 2 EN HASKELL

Aquí les dejo este programa acerca del minimo común divisor.

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



Ya que checaron mi programa les enseñare como sacarlo manualmente es muy facil.

La imagen muestra como sacarlo comprobaremos que el programa esta correcto al hacerlo con los siguientes números que se checaron en la corrida del programa 34 y 6.

Al 34 y 6 se le realiza una división.


Como vemos ya escogido el numero mas ppequeño que divide a estos dos es la misma respuesta que nos dio el programa la cual es el número 2.

REFERENCIAS

Pagina1

PROGRAMA EN HASKELL

Hola aquí les traigo un programa hecho en haskell, espero que les guste.

Mi programa se trata de la serie fibonacci aqui les dejo una información acerca de esto:

SUSECIÓN FIBONACCI

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.



Aqui les dejo mi programa

SERIE FIBONACCI

Los programas los realize en ubuntu ya que se me hace mas facil.
Asi se ve la terminal cuando podemos emp
ezar 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


Espero que les haya Gustado

Paginas que consulte

Pagina1

PROGRAMA EN GO

Aqui les dejo este programa que realice en el lenguaje GO


¿Cual es el programa?
Mi programa es el ordenamiento burbuja creo que la mayoria ya sabe de que hablo, como quiera aqui les dejo alguna información aerca de esto.
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

GO

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:

AQUI PUEDEN ENCONTRAR UN VIDEO DONDE GOOGLE EXPONE ALGUNAS CARACTERISTICAS DE ESTE NUEVO ELNGUAJE GO:

VIDEO



Este video es el que se menciona arriba tomado de la siguiente pagian de youtube:

pagina



Tutorial que han preparado en la página oficial


Enlace oficial de la página de GO

Fue donde puse el codigo y lo corri


otra mas

Go es un lenguaje de programación concurrente y compilado inspirado en la sintaxis de C. Ha sido desarrollado por Google y sus diseñadores iniciales son Robert Griesemer, Rob Pike y Ken Thompson. Actualmente sólo está disponible para los sistemas operativos GNU/Linux y Mac OS X.


Bueno por mi es todo espero que les haya gustado.

REFERENCIAS

Pagina1
Pagina2


Seguidores