miércoles, 27 de octubre de 2010

Reporte # 5 Problema Logico

Caballeros y bribones
Hay tres personas Alex, Brook y Cody; uno de los cuales es un caballero, un bribón , y un espía.El caballero siempre dice la verdad, el bribón siempre dice mentiras, y el espía puede mentir o decir la verdad.Alex dice: "Cody es un bribón."Brook ha dicho: "Alex es un caballero."Cody dice: "Yo soy el espía."¿Quién es el caballero, que el bribón, y que el espía?


Solución:


Alex dice que Cody es un bribon y Cody dice que el es el espía, por lo tanto uno de los dos miente. Además Brook afirma que Alex es el caballero y si afirma eso entonces Cody es el mentiroso y por lo tanto es el bribon. Brook seria el espía, ya que si fuera el caballero también lo seria Alex, pero eso no es posible.

Entonces la solución es que: 
Alex es el caballero, Brook es el espía y Cody es el bribón.





Aquí ya les agrego las pantalla del problema resuelto en Prolog y un ejemplo adicional.

Hay que ser muy claros en los enunciados que utilizamos para no tener errores ya que Prolog es un lenguaje casi puro.
 En algunos enunciados  me respondía que no por lo errores que cometía en la sintaxis del enunciado, ya que los escribí diferentes a como los había declarado en los predicados.


En este ejemplo adicional es uno que vi el semestre pasado en matemáticas discretas sobre automoviles y camionetas. Habla sobre la marca, el precio , el color y el kilómetraje del automovil o camioneta.Ademas de que le cambie el color de contorno y letra que es lo que tambien nos permite Prolog.


Aquí una pequeña información sobre Prolog:
Los programas en Prolog se componen de cláusulas de Horn que constituyen reglas del tipo "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").




http://es.wikipedia.org/wiki/Prolog


Saludos!

 


miércoles, 13 de octubre de 2010

Reporte # 4 Lenguajes Funcionales

La programación funcional es un paradigma de programación declarativa basado en la utilización de funciones aritméticas.
Los programas escritos en un lenguaje funcional están constituidos únicamente por definiciones de funciones, entendiendo éstas no como subprogramas clásicos de un lenguaje imperativo, sino como funciones puramente matemáticas, en las que se verifican ciertas propiedades como la transparencia referencial (el significado de una expresión depende únicamente del significado de sus subexpresiones), y por tanto, la carencia total de efectos lateraes.

Los lenguajes funcionales ofrecen al programador un buen número de recursos expresivos que permiten resolver problemas complejos mediante programas pequeños y robustos. Entre ellos cabe destacar: un sistema de tipos polimórficos que permite definir una amplia variedad de estructuras de datos de uso genérico, la posibilidad de definir funciones que aceptan otras funciones como argumentos y devuelven funciones como resultado, facilidades para definir y manipular estructuras de datos infinitas, un modelo computacional simple, claro y bien fundamentado, etc.

A continuacion les presento un ejemplo en  Scheme, realmente es demasiado sencillo ya que intente realizar  otros con un tanto mas  de dificultad pero no tuve exito para concluirlos, espero y les sirva de ejemplo el siguiente programa:

DrScheme


Lo que realiza el programa es encontrar el area de un circulo con diferentes radios que ingresa el usuario.


#lang scheme
(define (area radio)
  (* pi radio radio))



Welcome to DrScheme, version 4.1.3 [3m].
Language: Module; memory limit: 128 megabytes.
> (area 2)
12.566370614359172
> (area 5)
78.53981633974483
> (area 12)
452.3893421169302
> (area 54)
9160.884177867836
>

Agregue la codificacion y el resultado que muestra el programa ya que tuve problemas con mi tecla impr pant(:

Aqui ya les dejo otro lenguaje diferente que me faltaba

HASKELL

El entorno HUGS funciona siguiendo el modelo de una calculadora en el que se establece una sesión interactiva entre el ordenador y el usuario. Una vez arrancado, el sistema muestra un prompt "?" y espera a que el usuario introduzca una expresión (denominada expresión inicial y presione la tecla <RETURN>. Cuando la entrada se ha completado, el sistema evalúa la expresión e imprime su valor antes de volver a mostrar el prompt para esperar a que se introduzca la siguiente expresión.


Funcion factorial
1)
fac 0 = 1
fac n = n * fac (n-1)
 
main = print (fac 42)
 $ ghc -o fac fac.hs
    $ ./fac
    1405006117752879898543142606244511569936384000000000

 
fac 0 = 1
fac n = n * fac (n-1)  

main = print (fac 12)
$ ghc -o fac fac.hs    
$ ./fac    
479001600

2)
? sum [1..10]
55
La notación [1..10]representa la lista de enteros que van de 1 hasta 10, y sum es una función estándar que devuelve la suma de una lista de enteros. El resultado obtenido por el sistema es:
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55

Saludos!

miércoles, 1 de septiembre de 2010

REPORTE #3 Lenguajes Script

Aqui les presento mi reporte 3 sobre diferentes programas en distintos lenguajes script.


*Python                                               
  1. #!/usr/bin/env python3.2
  2. # declaracion de variables tipo caracter
  3. saludo="Buen dia!"
  4. nombre="Sofia"
  5. despedida="Suerte en tu clase!!"
  6. # comandos para imprimir variables
  7. print(saludo)
  8. Buen dia!
  9. print(nombre)
  10. Sofia
  11. print(despedida)
  12. Suerte en tu clase!!
La primera linea del codigo es indispensable para que se pueda ejecutar.
La segunda y sexta linea son comentarios.
La tercera, cuarta y quinta linea son las variables de tipo caracter.
La septima, novena y onceava linea son los comandos para mandar imprimir las variables, mientras que la octava, decima y doceava linea imprime la variable.

*Perl                                                 
  1. #!/usr/bin/perl
  2. print "Radio del circulo?\n";
  3. $r = <STDIN>;
  4. $area =3.1416*$r*$r;
  5. print "Area del circulo  = $area \n";
  6. exit(0);
Este codigo es para calcular el area de un circulo.
Como en el codigo anterior la primera linea es indispensable.
En la segunda linea le pedimos radio y lo guardamos como variable $r para despues crear la variable con la formula del area del circulo $area =3.1416*$r*$r; y finalmente nos de el resultado.





*Java Script                                     
<HTML>El código JAVA Script se incluye dentro del documento HTML mediante la etiqueta <Script> o <Script languaje= "Java Script">.

<HEAD>
<TITLE> Ejercico en Java Script </TITLE>
</HEAD>
<BODY>
<Script Languaje = "Java Script">
<!-- Ocultación a antiguos navegadores
document.write ( 'Buen dia Sofia!!' )
// Fin de la ocultación -->
</Script>
</BODY>
</HTML>






Para poder escribir la frase dentro de la pantalla se utiliz la función documment.write, cuya estructura es la siguiente: documment.write (' Texto deseado')
Este es un codigo sencillo que imprime un saludo.

Serie Fibonacci en Javascript

<html>
<head>
<title>fib3 </title>
</head>
<body>
<script language=javascript>
var var1;
var var2;
var var3;
var1=1;
var2=1;
document.write("<h4>");
var m=prompt(" Has ta qe numero desea que llegue la serie de fibonacci:", 0);
if(m==1)
{
document.write(var1 + "<br>");
}
if(m==2)
{
document.write(var1 + "<br>");
document.write(var2 + "<br>");
}
if(m>=3)
{
document.write(var1 + "<br>");
document.write(var2 + "<br>");
var3=var2+var1;
document.write(var3 + "<br>");
}
for(var i=3; i<=m-1; i++)
{
var1=var2;
var2=var3;
var3=var2+var1;
document.write(var3 + "<br>");
}
</script>
</body>
</html>






La verdad tuve un poco de dificultades ya que no se utilizar muy bien los lenguajes, pero los ejemplos que puse son los que se me hicieron mas sencillos.
*Realice una pequeñas modificaciones y agrege la serie fibonacci en javascript.


Saludos!

miércoles, 18 de agosto de 2010

Clase: Interprete



Reporte 2 : Visual FoxPro




Hola a todos, el lengueje de progremacion que elegi fue el Visual FoxPro y aqui les presento la informacion que obtuve, espero y les sirva para conocer mas sobre este lenguaje, aunque algunos ya lo conocen.

Visual FoxPro es un lenguaje de programación  centrada en los datos a objetos y escritos procesales presentados por Microsoft. Se deriva de FoxPro (originalmente conocido como FoxBase) que fue desarrollado por Fox a partir de software en 1984. Tecnologías de la Fox se fusionó con Microsoft en 1992, después de que el software adquirio otras caracteristicas y el prefijo "Visual". La versión actual de Visula FoxPro ésta basada en COM y Microsoft a declarado que no tiene la intencion de crear un entorno Microsoft.NET

FoxPro se originó como un miembro de la clase de los idiomas comúnmente como "xBASES" lenguas, que tienen una sintaxis basada en el lenguaje de programación dBASE.

Visual FoxPro, comúnmente abreviado como VFP, está estrechamente integrado con su propio motor  de base de datos relacional, que amplia las capacidades de  FoxPro xBASE
para apoyar la consulta SQL y la manipulacion de datos.

Entre sus caracteristicas se encuentran:
-Capacidades poderosas y muy veloces para el manejo de datos nativos y remotos
-Flexibilidad para crear todo tipo de soluciones de base de datos
-Lenguaje de programacion orientada a objetos
-Utilización de sentencias SQL en forma nativa
-Poderoso manejo de vistas, cursores, y control completo de estructuras relacionales
-Cuenta con un motor de generacion de informes renovado y muy flexible para soluciones 
más robustas
-Desde la version 9.0 amplio soporte de XML


Aunque tarde un poco en encontrar una pagina donde se pudiera bajar gratuitamente  la version de Visual FoxPro 9.0 encontre esta pagina y  la verdad no se tarda mucho en descargar e instalar, solo unos cuantos minutos:
Ademas de un manual para comprender mejor el funcionamiento de VFP:

Aqui un ejemplo:






miércoles, 11 de agosto de 2010

Reporte 1





Le adicione la informacion de los paradigmas y los ejemplos de los mismos.
Saludos!