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.

miércoles, 8 de septiembre de 2010

Presentacion 2

QUICK SORT

Definición:
El ordenamiento rápido (Quicksort en inglés) es un algoritmo basado en la técnica de divide y vencerás, no solo nos sirve para organizar una lista de datos desorganizados, si no también, para optimizar el tiempo que se ocupa en realizar esta labor, ya que permite ordenar "n" elementos en un tiempo proporcional de O(n log n), lo cual es muy eficiente.

Funcionamiento:
Primero tenemos que elegir un elemento al azar al que llamaremos pivote.
Después de elegir el pivote analizaremos y empezaremos acomodarlos de tal manera que los elementos menores al pivote van del lado izquierdo y los mayores del derecho :

elemento < pivote ="">
elemento > pivote = Derecha
De esta forma obtendremos la posición del pivote elegido y a partir de ahí ordenaremos los demás elementos que del pivote se dividen en 2 sublistas las cual de igual manera elegimos un pivote y lo ordenamos como la primera ves y así sucesivamente se irán dividiendo en 2 sublistas pero cada ves menores lo haremos siempre que tenga mas de un elemento y después ya nos queda ordenada.






Mejor y Peor Caso:
En el mejor caso, el pivote termina en el centro de la lista, dividiéndola en dos sublistas de igual tamaño. En este caso, el orden de complejidad del algoritmo es O(n·log n).
En el peor caso, el pivote termina en un extremo de la lista. El orden de complejidad del algoritmo es entonces de O(n²). El peor caso ocurre en listas que se encuentran ordenadas, o casi ordenadas. Pero principalmente depende del pivote, si por ejemplo el algoritmo implementado toma como pivote siempre el primer elemento del arreglo, y el arreglo que le pasamos está ordenado, siempre va a generar a su izquierda un arreglo vacío, lo que es ineficiente.
Pseudocódigo:

funcion quicksort(arreglo)

variables lista, menor, mayor, elemento

if longitud(arreglo) ≤ 1

return arreglo

else

//seleccionar un valor pivote en el arreglo

for each elemento en arreglo

if elemento < pivote entonces añadir “elemento” a menor

else añadir “elemento” a mayor

return concadenar_lista(quicksort(menor), pivot, quicksort(mayor))




martes, 31 de agosto de 2010

Reporte # 3 Corregido


Lenguajes Script


Python

Este lenguaje es muy sencillo en este caso yo use un interprete para realizarlo y es muy facil de aprender aunque si tiene algunos codigos con los que tenemos que poner atención.



>>> #! usr/bin/env python 2.7 *// esta linea es como una libreria para poder correrlo en windows*//
... # vamos a sacar algunas areas *// este es un comentario//*
... print ("Area de un cuadrado") *// en esta linea vamos a poner lo que queremos imprimir//*
Area de un cuadrado *//en esta linea despliega lo que imprimimos//*>>> lado=5 *//aqui estamos declarando una variable //*
>>> lado*lado *// en esta linea ingresamos una formula que en este caso nos pidio la del cuadrado//*
25 *//es el resultado final de la operacion en el cual sacamos el area del cuadrado//*
>>> print "area de un triangulo"*// en esta imprimimos tambien pero sin poner los parentesis y nos da el mismo resultado*//
area de un triangulo
>>> base= 15
>>> altura= 20 *// declaramos variables//*
>>> (base*altura)/2 *// esta es otra formula en la cual primero va a realizar lo de los parentesis y despues la division//*
150
>>>
Esta es la pantalla del python.
en general es muy sencillo de utilizar claro tiene varios codigos dificiles pero pues si es facil.

Referencias:
Tutorial
Descarga

JavaScript




Este tipo de lenguaje es muy utilizado en los navegadores de internet en muchisimas paginas se utilizan para diferentes cosas como darle formato movimiento entre otras cosas tambien es un poco sencillo solo que aqui el problema es aprenderte los codigos.



(html)*//Esta linea es el inicio del lenguaje con el cual nos permitira abrirla en el navegador//*
(script) *// es el inicio del script//*

(document.write) ("Este es un ejemplo") *//es un codigo para poder escribir algun texto//*

(window.alert) ("JavaScript") *// es un codigo para imprimir algo en una ventanita emergente//*
(/script) *// en esta linea se cierra el script//*

(/html) *// esta linea es la que cierra el archivo para poderlo
ejecutar en el navegador//*

NOTA. Cambie los simbolos <> por parentesis () porque si lo dejaba no me iba a aparecer en el blog.

Eso es lo que me esta imprimiendo el archivo

En general este lenguaje es muy utilizado para muchas cosas si vemos aqui de diferente es los signos de mayor o menor que los utilizamos en ves de parentesis el cual al terminar cerramos poniendo una barrita inclinada para poder probarlo y es facil de usar ya que tambien no necesitamos bajar ningun compilador ni interprete si no solo necesitamos por decir en el windows XP del bloc de notas y lo guardamos como archivo html y para correrlo seria en cualquier navegador que tengas.

Referencias:

Tutorial


JavaScript

Es un ejemplo en javascript
(html) // es el inicio del lenguaje el cual con el es con el que lo podremos abrir en el navegador//

(head) // en esta contenemos lo que es el titulo del programa//

(title)Series de Fibonacci (/title) // en esta linea estamos defininiendo el titulo//

(/head) // cerramos el head //

(BODY) // aqui es donde empieza y se pone todo el codigo que vallamos a utilizar//

(script) // abre el script//

document.writeln("(center)Serie de Fibonacci (/center)"); //estamos escribiendo como un subtitulo que aparesca centrado.//

(/script) // se cierra el script.//

(SCRIPT LANGUAGE= "JavaScript") // aqui estamos mandando llamar el lenguaje script //

(!-- begin // comienza lo que es el procedimiento de nuestro programa//

function fib(n) { //define primero la funcion fibonacci//

var pri=0; // en esta linea esta declarando las variables//

if( n == 0) return(pri); //en esta liniea estamos utilizando un if para aplicar la condicion nesesaria//

if(n == 1){

pri+=1; //esta liniea nos dice ke el pri que aumenta es igual a 1//

return(pri); //regresa el pri//

} //cerramos la condicion //

else{ // aqui si no ocurre lo anterior se pasa a lo siguiente//

return (fib(n - 1) + fib (n - 2)); //es la operacion que estara haciendo nuestro programa para sacar la susecion //

}

}

function calcula(n) { //estamos declarando la funcion calcula (n)//

var i;

for (i=0; i<=n; i++){ // aqui estamos usando la condicion con un for//

fib1.pri.value += " " + fib(i);

}

}

//End --> //termina el cuerpo del programa //

(/script) // se cierra el script//

(/head)

(BODY)

(form name=fib1)

Longitud de la serie: (input type= text size=4 name= "n") // en esta liniea lo que hago es como un cuadrito donde voy a ingresar el numero //

(input type=button value="calcular" onclick="calcula(fib1.n.value);") // en este lo que hacemos es un boton que diga calcular al momento de ingresar el numero que queremos de la serie//

(input type=reset value= "Borrar")(br) //en este otro se hace como un borrar que al darle click borra el numero que ingresamos y el resultado//

(br)

Resultado: (input type=text name="pri") // en esta liniea te marca el resultado final y pues al igual que como el primer cuadro este es lo mismo pero lo hicimos mas largo por la sucesion.//

(/form)

(/html) // cerramos el codigo html y es el fin de nustro programa//





martes, 17 de agosto de 2010

Reporte # 2

Lenguaje de Programación Pascal

Pascal es un lenguaje de programación desarrollado por el profesor suizo Nicklaus 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.
Este a diferencia de lenguajes de programación desendientes de C, Pascal utiliza el símbolo ":=" para la asignación en vez de "=". Otra diferencia importante es que en Pascal, el tipo de una variable se fija en su definición; la asignación a variables de valores de tipo incompatible no están autorizadas (en C, en cambio, el compilador hace el mejor esfuerzo para dar una interpretación a casi todo tipo de asignaciones).

Ejemplo:
program suma; uses crt;                                                      
var x,s:integer;

begin
clrscr;
x:=1;
s:=0;
repeat
s:=s+x;
x:=x+1;
until x=50;

writeln('la suma es ',s);
readln;
end.

Este es un ejemplo de un programa que suma en el compilador pascal si se dan cuenta la
escructura es parecida al compilador en
C solo que en este lenguaje cambian algunos codigos
por ejemplo aqui no
utilizamos el int para declarar variables si no el var que en definicion seria
variable es el que se utiliza y otra cosa que note
que es diferente al compilador en C es el
printf
que en Pascal se escribe writeln que es escribe terminando cn ln, al igual que en ves de
scanf que escanea es readln que es leer y pues termina con un end que es fin osea en
general los codigos que se usan es depente la
definición y lo que le vayas ir pidiendo al programa
ya de ahi todo
lo demas es la misma estructura que en C o muy parecida.


Bueno aqui les dejo este link de un manual o tutorial sobre Pascal que es mas que nada como se usa
este lenguaje.
Manual Pascal : bueno vienen varios que pueden descargar
Curso de Pascal: este es un curso que encontre tambien y puede servir.
este es otro enlace es como un libro donde puedes aprender a usar Pascal aunque aun no esta terminado.
Programacion Pascal
en este mismo link podemos descargar el compilador de pascal.

Esta es una imagen en la que podemos apreciar la estructura del compilador pascal que es
llamado Free Pascal.

Acontinuación les mostrare unos ejemplos de Pascal:
Escribir un programa en Pascal que determine si un número
leído desde el teclado es par o impar


PROGRAM EJER34;
USES CRT;

VAR num:INTEGER;

BEGIN
ClrScr;

WRITE ('Introduzca un numero entero: '); READLN (num);

IF num = 0 THEN
WRITE ('El numero introducido no es par ni impar, es 0')
ELSE IF ((num mod 2 = 0)) THEN
WRITE ('El numero introducido es par')
ELSE
WRITE ('El numero introducido es impar')

END.


PROGRAM EJER34;
USES CRT;
VAR num:INTEGER;
BEGIN

ClrScr;

WRITE('Introduzca un numero: ');
READLN(num);

IF (num mod 2 = 0) THEN
WRITE('NUMERO PAR')
ELSE
WRITE('NUMERO IMPAR');
END.

Escribir un programa en Pascal que dado un número del 1 a 7
escriba el correspondiente nombre del día de la semana.


PROGRAM EJER36;
USES CRT;

VAR num:INTEGER;

BEGIN

ClrScr;

WRITE ('Escriba un numero para ver con que dia corresponde: ');
READLN (num);

IF num=1 THEN
WRITE ('Lunes');
IF num=2 THEN
WRITE ('Martes');
IF num=3 THEN
WRITE ('Miercoles');
IF num=4 THEN
WRITE ('Jueves');
IF num=5 THEN
WRITE ('Viernes');
IF num=6 THEN
WRITE ('Sabado');
IF num=7 THEN
WRITE ('Domingo');

END.


PROGRAM EJER36;
USES CRT;
VAR num_dia_sem:INTEGER;
BEGIN
ClrScr;

WRITE('Dia de la semana (numero) -> '); READLN(num_dia_sem);

CASE num_dia_sem OF
1: WRITELN('Lunes');
2: WRITELN('Martes');
3: WRITELN('Miercoles');
4: WRITELN('Jueves');
5: WRITELN('Viernes');
6: WRITELN('Sabado');
7: WRITELN('Domingo');
ELSE
WRITELN('No es un dia de la semana');
END;
END.

estos son algunos ejemplos de este lenguaje de programación y si se dan cuenta como
ya se los habia mencionado anteriormente tiene una estructura similar a la del
compiladr en C++ (Dev-C) les dejo este link en el cual encontraran mas ejemplos :
http://www.lawebdelprogramador.com/temas/e_pascal/pag004.php

espero y le entiendan a este lenguaje en caso de que tengan alguna duda o vean un
error porfavor me lo hacen saber en un comentario y asi para poder checarlo o
ayudarlos en lo que pueda.