jueves, 21 de octubre de 2010

Reporte 5

Problema Lógico

Shirt Friends ( Camisa de los amigos)

En un restaurante del centro, el Sr. Rojo, Sr. Azul, el Sr. Blanco se reunieron durante el almuerzo. Bajo los abrigos
que están usando ya sea una camisa roja, azul o blanco.

Sr. Azul dice: "Oye, ¿te diste cuenta que estamos todos con camisas de colores diferentes de nuestros nombres?" El hombre
con la camiseta blanca, dice, "Wow, Sr. Azul, es cierto!"

¿Se puede saber quién está usando qué color de camisa?

RESPUESTA:
Sr. Azul - Camisa Roja
Sr. Roja - Camisa blanca
Sr. Blanco - Camisa Azul

Solución.
cuando el señor Azul nota que todos traian camisas diferentes a sus nombres, y por lo que el señor Blanco le contesta que era verdad lo que habia notado. Asi que usando la logica como nadie tiene la camisa del color de su nombre entonces el Sr. Azul no puede tener ni la azul ni la blanca porque porque azul asi se llama y blanca porque el que traia camisa blanca le contesto por lo que queda la roja que es la que trae puesta y el Sr. Rojo y Sr. Blanco ya los sacamos por logica como nos queda la camisa blanca y la azul entonces el Sr. Blanco no puede traer la camisa blanca asi que trae la azul y el Sr. Rojo trae la camisa blanca que es la que quedo.


Aqui les dejo un pequeño programa de prolog hecho en turbo prolog.
domains
marca,talla,color=symbol
precio=real
(esta primera parte del programa es en donde como conocemos en otros lenguajes declarar las variables con el domains, el symbol representa todo lo que sean como simbolos como las letras u objetos, y real significa algun valor numerico real que en este caso seria el de precio.)

predicates
ropa(marca,talla,color,precio)
tenis(marca,talla,color,precio)
playera(marca,talla,color,precio)
tachones(marca,talla,color,precio)
(en esta segunda parte indicamos mas que nada como las predicciones osea es donde nosotros declaramos como una regla de como vamos a querer que prolog nos lea el programa cuando quieramos hacer una consulta.)

clauses
ropa(M,T,C,P):-
tenis(M,T,C,P);
playera(M,T,C,P);
tachones(M,T,C,P).
(En la tercera parte de nuestro programa viene lo que son clauses que es la parte logica en la cual ropa(M,T,C,P):- nos indica que estamos utilizando un if el cual nos indica que hay mas de un tipo de ropa, depues las variables ya declaradas en esta parte las pusismos solo con su inicial pero en mayuscula para que para poder llamar a la variable sin la necesidad de escribirla toda. Despues tenis(M,T,C,P); y playera(M,T,C,P); serian los siguientes caminos pero el (;) es el que te manda al siguiente camino y tachones(M,T,C,P). que si notamos en este camino tenemos un punto que es el que despues de realizar la consulta nos indica el final del if.)

playera(nike,mediana,azul,600).
playera(adidas,chica,roja,750).
playera(nike,chica,naranja,550).
tenis(puma,medianos,verdes,900).
tenis(nike,grandes,rojos,1100).
tenis(adidas,medianos,negros,1000).
tachones(puma,chicos,rojos,400).
tachones(nike,medianos,negros,1250).
tachones(adidas,chicos,morados,980).
(esta es nuestra ultima parte del programa que despues de terminar la parte clauses que es la parte logica continuamos con esta que es donde llenamos los datos los cuales son (marca,talla,color,precio) que vamos a registrar para cuando quieramos hacer nuestra consulta, al final de cada sentencia debe llevar un punto que le indica a prolog que hasta ahi termina el dato.)

Ahora les mostrare una impresion de la pantalla donde pedi los datos para una consulta.


Como podemos observar en esta imagen yo pedi haber si habia ropa de que talla, que marca y que colores y me los desplego todos pero si observan un detalle es una rayita que quiere decir esa rayita es el espacio de precio que cuando nosotros no queramos saber el precio u otra opcion de las que nos dan tenemos que dejar el espacio con una rayita y no saltarnolo porque en este lenguaje es muy importante la sintaxis al hacer el programa y al correrlo también si no ponemos esa rayita nos marca error.


Esta es otra ves lo mismo de arriba pedimos lo mismo pero si se dan cuenta ahora pusismos toda la palabra de lo que queriamos consultar, pero aguas hay que tener cuidado con la sintaxis las palabras que van dentro del parentesis tienen que llevar la primera letra mayuscula si no de lo contrario nos marcaria error y no nos despliegaria lo que queriamos consultar y como ven es una cosa minima pero muy importante, que quiere decir el goal pues eso es mas que nada lo que nos indica donde empezamos a teclear nuestra peticion y al terminar nos vuelve aparecer para hacer de nuevo otra consulta.



En esta imagen es para mostrarles las consultas ya buscando, que playeras tienen, tenis y tachones es mas que nada un ejemplo.


Por ultimo en esta imagen lo que yo estoy consultando o preguntando a prolog es primero que si hay ropa nike y me dijo que si, despues le pregunte que si habia ropa mediana y tambien dijo que si, luego le pregunto que si tiene ropa rosa y me dijo que no por lo que no hay y de igual forma me dijo que no habia ropa de 1500, por ultimo le pregunte que si tenia ropa adidas negra y me dijo que si.

Bueno eso es todo espero les sirva de algo y puedan entenerle de lo contrario alguna duda pues diganme y hare lo posible por respondersela =)

Reporte 4

Lenguajes Funcionales









Scheme

Aqui les dejo un pequeño programa en scheme muy basico pero para que entiendan mas o menos de que se trata este lenguaje.

#lang scheme //en esta linea la tenemos que ingresar para poderlo compilar en el DrScheme.//

(define (fibonacci n) //aqui es donde mas que nada definimos la variable que vamos a buscar que es n.//

(if (or ((= n 0)0) ((= n 1)1)) //aqui abrimos la condicion principal que es if que nos sirve para validar al ingresar un numero si es 0 o 1 va tomar el valor de 1.//

1// es el valor que retornamos en caso de ser 0 o 1.//

(+(fibonacci (- n 1)) (fibonacci ( - n 2))))) // en cambio si los valores no son 0 ni 1 va hacer esta operacion que sumara los 2 valores que estan antes del numero que ingresamos.//



Lenguaje Funcional R
Este lenguaje es interpretado y solo tienes que meter el comando y ya te da el resultado sin tener que hacer el ejecutable y mas que nada es nombrado lenguaje funcional porque tiene muchas funcionalidades que les dare ejemplos de algunas de estas.

Les ire explicando algunas funciones de R

Primero tenemos que abrir R para despues empezarlo a usar.

un ejemplo muy sencillo y basico es el de suma y resta

Suma
> 3+5
[1] 8

Resta
> 5-3
[1] 2

Multiplicacion
>2*2
[1] 4

Para elevar a algun numero es de la siguiente manera.
> 4^2
[1] 16

Raiz Cuadrada en este ya usamos como un comando que es llamado sqrt.
> sqrt (4)
[1] 2

Para sacar el exponencial de un numero en este usamos el comando que es exp.
> exp (2)

Tambien podemos sacar el logaritmo de un numero y su comando es el log.
> log (3)
[1] 0.47712

Pero tambien podemos juntar las operaciones que necesitemos y realizarla pero para esto necesitaremos de parentesis para que realize cada una de las operaciones y no se brinque ninguna.
por ejemplo:
>(3+3)*(log (2)) +4
[1] 5.80617

En R tiene muchas funcionalidades mas como tambien puede crear vectores y hacer cualquier operacion.
por ejemplo
> x <- c (2,3,4) // en este creamos el vector x de 3 valores.//
> x // nos esta pidiendo que ingresemos el nombre del vector.//
[1] 2 3 4 //ahora si nos imprime el vector //
> y <- c (1,2,3) // ahora creamos otro vector que es y de 3 valores.//
> y
[1] 1 2 3
> x + y // va sumar los 2 vectores que anteriormente habiamos declarado.//
[1] 3 5 7 // se suma el primer valor con el primero, el segundo con el segundo y el tercero con el tercero y asi susesivamente si tenemos mas valores.//

>x*y // podemos multiplicar tambien //
[1] 2 6 12 // es la misma sucesion de la suma.//
asi podemos tambien restar dividir entre otras operaciones pero tambien podemos usar otros comandos para otras cosas como son los siguientes.

>suma (x) // va sumar todos los valores del vector x//
[1] 9 // es el resultado//

>max (y) // es para saber cual es el numero mayor en el vector de y.
[1] 3 // que claro es el tres//

>min (x) // es para saber cual es el valor minimo del vector x.
[1] 2 //resultado//


Tambien podemos hacer matrices en este lenguaje.
Vamos a utilizar los mismos 2 vectores de arriba y crearemos la matriz.
> x
[1] 2 3 4
>y
[1] 1 2 3
> m <- cbind (x,y); m // m va ser el nombre de la matriz y cbind es el comando para poder hacer la matriz con las 2 vectores que tenemos//
Nos quedaria de esta forma la matriz

x y
[1] 1 2
[2] 2 3
[3] 3 4

Esto fue mas que nada como un pequeño tutorial mas que nada para que vieran como sirve R en que lo podemos utilizar y tiene mas utilidades como tambien la suma de los vectores de una matriz, puede hacer graficas entre mas cosas pero lo que puse es mas que nada lo mas basico y para darles una idea de este lenguaje y que en teoria no es tan dificil porque ya como sabemos es interpretado, lo unico es aprender los comandos y como utilizarlos pero de ahi en adelante todo esta facil nomas es de hecharle un vistazo.