martes, 17 de abril de 2007

Prolog - viaje

Aqui se encuentra el codigo para realizar viajes dependeindo de la variables seleccionadas.

uno puede seleccionar alta o baja, dependiendo de la temporada de vaciones, no se gasta mucho por lo que los precios ban de 500 a 12000; dependiendo del sitio al que se decida ir puede ser un lugar turistico unas albercas, cascada o grutas.

todo se realizo mediante reglas de seleccion, ya que dependeindo del valor de las variables se tiene un resultado

jueves, 5 de abril de 2007

Programa de Prolog

como manejar las variables atraves de la programacion en prolog.

se realizo un programa en el cual se especifica la forma de definir quien es mortal atraves de una interfas de prolog, realizado preguntas.

main:- busca([socrates,mike,platon], N, M), write('existen '), write(N), write(' mortales.'), nl, write('existen '), write(M), write(' que no son mortales.'), nl.

busca([],0,0).
busca([HT], N1, M1):-
mortal(H), # si se encuantra dentro de la lista es verdadero y continua la busqueda.
write(H),
write(' es mortal.'), nl,
busca(T, N2, M2),
N1 is N2 + 1, M1 is M2 + 0. # en esta linea se esta especificando el valor de las variables
acumulativa
busca([HT], N1, M1):- #como existen dos clases de humanos los que son y los que no son
mortales es necesario agregar las busqueda de los no mortales.
write(H),
write(' no es mortal.'), nl,
busca(T, N2, M2),
N1 is N2 + 0,
M1 is M2 + 1.
mortal(X):- humano(X). #se definen a los humanos como mortles
humano(platon). #especificas quien es mortal en este caso platon y socrates.
humano(socrates).

este programa al mandar el main principal, regresa las busquedas indicadas y especifica quien es mortal y cuantos mortales y no mortales hay en la busqueda.

martes, 27 de febrero de 2007

L15-DECL

Integrantes:

Miguel Solis A00739496
Mario Figueroa A00739420
Gerardo Velo A00746849

Como programar Prolog en Ruby.

Para poder interpretar lineas de codigo con estructura de Prolog en un archivo Ruby es necesario contar con los siguientes archivos.

http://mipagina.chi.itesm.mx/.a00739496/tiny_prolog_ext.rb
http://mipagina.chi.itesm.mx/.a00739496/tiny_prolog.rb

Estos dos archivos funcionan como interpretes de la estructura realizada en una programacion en prolog , cada vez que se realize un algoritmo es necesario requerir uno de estos archivos.


Por ejemplo, en la primera linea del algoritmo cuida de poner:

require 'tiny_prolog_ext'

Para llamar al "interprete". Los archivos que ejecutes tienen que estar grabados dentro de la misma direccion donde tienes estos archivos.

require 'tiny_prolog_ext'

# rules
# read as "X and Y are siblings if Z is the parent of both"
sibling[:X,:Y] <<= [ parent[:Z,:X],
parent[:Z,:Y], noteq[:X,:Y] ]
parent[:X,:Y] <<= father[:X,:Y]parent[:X,:Y] <<= mother[:X,:Y]

# facts: rules with "no preconditions"
father["matz", "Ruby"].fact
mother["Trude", "Sally"].fact
father["Tom", "Sally"].fact
father["Tom", "Erica"].fact
father["Mike", "Tom"].fact

query sibling[:X, "Sally"]

# >> 1 sibling["Erica", "Sally"], este es el resultado de la ejecucion.


Otro ejemplo son las torres de Hanoi.

http://mipagina.chi.itesm.mx/.a00739496/hanoi.rb


lo importante es la primera linea de codigo, no lo olvides......

L14-PHP

las modificaciones que se realizaron para el funcionamiento de clases en php:

class Lada {
public $data = Array();

//como ya se definio como publica cada vez que se mencione dentro de la clase es necesario agragarle el this para hacer referencia a la variable.

function __construct(){ foreach(file("LADA_Nac.txt") as $line): if (preg_match("/^(.+)\s+(\d{1,4})$/",trim($line),$r)): list(,$cd,$cve) = $r; $cve = intval($cve); if ($this->data[$cve]) $this->data[$cve] .= "\n$cd"; else $this->data[$cve] = $cd; endif; endforeach;}

function get_ciudad($clave)
{
if ( $this->data[$clave] ) echo implode("
",explode("\n",$this->data[$clave])); else echo "Clave LADA inválida";
}
function get_lada($ciudad)
{
foreach ( $this->data as $key=>$value ) if ( strstr(strtolower($value),$ciudad) !== FALSE ) echo "
  • $key
  • ";
    }
    }



    para hacer llamar a la clase se necesita de las siguentes lineas:


    $var = new Lada();
    if ( $ciudad ) $var->get_lada($ciudad);
    if ( $clave ) $var->get_ciudad($clave);

    para llamar a los diferentes metodos que existen dentro de la clase.

    el archivo biene en la siguiente direccion lada.php

    http://mipagina.chi.itesm.mx/.a00739496/

    es necesario descargar el archivo LADA_Nac.txt, para hacer funcionar el codigo.

    jueves, 22 de febrero de 2007

    L13-LADA

    Listo el codigo alfin funka, lo puedes encontrar en la pagina:

    http://mipagina.chi.itesm.mx/.a00739496/

    tienes que descargar los archivos de lada.rb y el de LADA_Nac.txt

    el programa tiene el boton para poder cerrar la aplicacion, y te proporciona los nombres de las ciudades con el mismo codigo

    viernes, 16 de febrero de 2007

    L12-BOOKS

    En la bliblioteca de nuestro Campus puedes encontrar

    Libros de lenguajes de DataFlow, como son:

    Autor
    Joyanes Aguilar, Luis.
    Titulo
    Programación en C : metodología, algoritmos y estructura de datos / Luis Joyanes Aguilar, Ignacio Zahonero Martínez.
    Programación en C : metodología, estructura de datos y objetos
    Pie impren
    Madrid : McGraw-Hill, c2001.
    Ubicación
    CHI GENERAL
    QA76.73 .C1 .J6P7 2001

    Bibliografia
    Incluye referencias bibliográficas (p. 542) e índice.
    Materia
    C (Lenguaje de programación para computadora).
    Programación orientada a objetos (Computación).
    C++ (Lenguaje de programación para computadora)..
    Autor alt
    Zahonero Martínez, Ignacio
    ISBN
    8448130138


    Lamentablemente de DataFlow no pude encontrar otros libros que no fueran el languaje tipico de C, mas existen otros lenguajes como son: Prograph, Cantata, Bioera, VEE, Simulink, ID, Mindscript, BMDFM.

    Para más información de los lenguajes, http://en.wikipedia.org/wiki/Dataflow_language


    Concurrent Languages

    Dentro de esta clasificación podemos encontrar a los lenguajes de Smalltalk, Ada, C# y Java.
    En la biblioteca puedes tener acceso a libros como:

    C#

    Autor
    Petzold, Charles.
    Titulo
    Programación en Microsoft Windows con C# / Charles Petzold ; tr. José Joaquín Cañadas Martínez, Franscisco Gabriel Gil Reyes, Carmen Martínez Cruz.
    Pie impren
    Madrid : McGraw-Hill, 2002.
    Ubicación
    CHI GENERAL
    QA76.76 .O63P533 2002
    Descrip.
    1022 p. : il ; 24 cm + 1 CD-ROM (4 3/4 plg.)
    Notas
    Incluye índice.
    Traducción de: Programming microsoft windows with C#.
    Materia
    C# (Lenguaje de programación para computadora).
    Programación (Computadoras)
    Autor alt
    Cañadas Martínez, José Joaquín, tr.
    Gil Reyes, Francisco Gabriel, r.
    Martínez Cruz, Carmen, tr.
    ISBN
    8448136985
    Ada

    Autor
    Mayoh, B. H
    Titulo
    Resolución de problemas con ADA / Brian Mayoh
    Pie impren
    Barcelona : G. Gili, c1987

    Ubicación
    CHI GENERAL
    QA 76.8 .A15 .M35 1987
    Descrip.
    235 p. : il. ; 24 cm
    Series
    Colección Ciencia Informática
    Notas
    Traducción de: Problem solving with ADA
    Materia
    ADA (Lenguaje de programación)
    PROGRAMACION ESTRUCTURADA
    ISBN
    8425213347
    Java

    Autor
    Lea, Doug.
    Titulo
    Concurrent programming in Java : design principles and patterns / Doug Lea
    Pie impren
    Reading, Mass. : Addison-Wesley, c2000

    Ubicación
    CHI GENERAL
    QA76.73 .J3 .L4C6 2000
    Prestado hasta 19-02-07
    Edicion
    2nd ed
    Descrip.
    ix, 411 p. : il. ; 24 cm
    Series
    The Java series
    Notas
    Incluye índice
    Materia
    Java (Lenguaje de programación para computadora).
    Programación paralela (computadoras)
    Java (Computer program language)
    Parallel programming (Computer science)
    ISBN
    0201310090
    Ademas para darse una idea de lo que biene siendo la programación Concurrente puedes consultar el siguiente libro, el cual te describe como se debe de llevar a cabo la programación cocurrente en los diferentes problemas que se puedan presentar.

    Autor
    Andrews, Gregory R
    Titulo
    Concurrent programming : principles and practice / Gregory R. Andrews
    Pie impren
    Redwood City, Calif. : Benjamin/Cummings Pub. Co., c1991

    Ubicación
    CHI GENERAL
    QA 76.642 .A53 1991
    Descrip.
    xvii, 637 p. : ill. ; 25 cm
    Bibliografia
    Includes bibliographical references (p. 607-626) and index
    Incluye referencias bibliográficas e índice
    Materia
    Programación paralela -- Computadoras.
    Procesamiento paralelo (Computadoras electrónicas).
    ISBN
    0805300864

    L11-RVG



    Dibujar en el lenguaje Ruby.






    Para poder realizar modificaciones y realizar imagenes en Ruby por medio de RMagick.






    1.- Necesitas tener instalado el lenguaje de Ruby






    2.- Bajar el programa que biene en un zip del RMagick.






    2.1.- El cual se encuentra en la siguiente pagina, bajo el nombre de (RMagick-1.14.1_IM-6.3.0-7-Q8.zip)












    3.- Descomprime y ejecuta el archivo de intalación.






    4.- Dentro de la carpeta de intalación biene un archivo .gem el cual debes de copiar en la carpeta donde tienes guardado RUBY.






    5.- Abre el Command Prompt y accesa a la carpeta que de ruby, donde ya debes de tener el archivo .gem






    6.- Activa el instalador de la gema de la siguiente forma






    7.- Se llavaran una serie de pasos que volveran loca la pantalla, no pasa nada, solo se esta instalando la gema.


    8.- Para identificar que se llevo con exito se puede ejecutar el comando de gem list. El cual te mostrara la lista de gemas que tienes instaladas.



    9.- Ahora si podemos checar los ejemplos que puedes encontrar en la siguiente liga.

    http://rmagick.rubyforge.org/portfolio.html




    miércoles, 14 de febrero de 2007

    L10-TOP10

    En lo que se refiere a la comparación de lenguajes de programación, encontre estas ligas:

    http://www.tufuncion.com/diferentes-lenguajes-programacion

    En la cual encuentras un mapa del lado derecho el cual muestra los 10 programas con más auje en el momento.

    http://www.rubyinside.com/ruby-enters-top-10-programming-languages-at-tiobe-353.html

    En esta pagina bienen estadisticas de la forma en que aumento ruby y la posicion que posee.

    http://blog.intentionalsoftware.com/intentional_software/2005/04/the_long_tail_o.html

    Esta ultima liga muestra una grafica de como se encontraban los lenguajes el 18 de Abril del 2005, ademas se encuentra una liga de Toibe la cual te direcciona a una de las paginas que vimos en clase para ver información actualizada.

    La mayoria de las paginas encontradas que trataran el tema se basan en las estadisticas y graficos propuestos por Toibe al igual que la siguiente. La pongo como ejemplo, ya que nomas trai comentarios sobre Ruby propuesto como el lenguaje del 2006.

    http://www.lacaraoscura.com/2007/01/06/tiobe-declaro-a-ruby-como-el-lenguaje-de-programacion-del-2006/

    martes, 30 de enero de 2007

    L04-RUBY

    como crear objetos en ruby.

    Siempre que Ruby crea un objeto nuevo, busca un método llamado initialize y lo ejecuta. Luego lo más sencillo que se puede hacer es utilizar este método para dar valores a las variables instancia, así el método inspect no tiene nada por lo que quejarse.

    ruby> class Fruta
    ruby| def initialize
    ruby| @kind = "manzana"
    ruby| @condition = "madura"
    ruby| end
    ruby| end
    nil
    ruby> f4 = Fruta.new
    una manzana madura

    Un objeto procedimiento nuevo se obtiene utilizando proc:

    ruby> quux = proc {
    ruby| print "QUUXQUUXQUUX!!!\n"
    ruby| }
    #

    Ahora quux referencia a un objeto y como las mayoría de los objetos, tiene un comportamiento que se puede invocar. Concretamente, podemos pedir que se ejecute a través de su método call
    ruby> quux.call
    QUUXQUUXQUUX!!!


    condicionales y ciclos:

    Ruby proporciona medios adecuados para la construcción de bucles, aunque veremos en el siguiente capítulo que si se aprende a utilizar los iteradores a menudo hace innecesario su utilización explícita.

    Un while es un if repetido. Se ha utilizado en nuestros programas acertijo adivina-palabra y en las expresiones regulares (ver el capítulo anterior); allí tomaba la forma while condición ... end que rodeaba el código a repetir mientras la condición fuera cierta. Pero while e if se pueden aplicar fácilmente a sentencias individuales:

    ruby> i = 0
    0
    ruby> print "Es cero.\n" if i == 0
    Es cero.
    nil
    ruby> print "Es negativo\n" if i <> print "#{i+=1}\n" while i <>

    Algunas veces se necesita la condición de comprobación negada. Un unless es un if negado y un until es un while negado. Dejamos estas sentencias para que se experimente con ellas.

    Array

    Se pueden crear un array listando elementos entre corchetes ([ ]) y separándolos por comas. Los arrays en Ruby pueden almacenar objetos de diferentes tipos.

    ruby> ary = [1, 2, "3"]
    [1, 2, "3"]

    Los arrays se pueden concatenar y repetir, igual que las cadenas.
    ruby> ary + ["foo", "bar"]
    [1, 2, "3", "foo", "bar"]
    ruby> ary * 2
    [1, 2, "3", 1, 2, "3"]

    Se pueden utilizar índices numéricos para acceder a cualquier parte del array.
    ruby> ary[0]
    1
    ruby> ary[0,2]
    [1, 2]
    ruby> ary[-2]
    2
    ruby> ary[-2,2]
    [2, "3"]
    ruby> ary[-2..-1]


    [2, "3"]

    A continuación examinaremos el programa acertijo del capítulo sobre las cadenas

    01 words = ['foobar', 'baz', 'quux']
    02 secret = words[rand(3)]
    03
    04 print "adivina? "
    05 while guess = STDIN.gets
    06 guess.chop!
    07 if guess == secret
    08 print "¡Ganas!\n"
    09 break
    10 else
    11 print "Lo siento. Pierdes\n"
    12 end
    13 print "adivina? "
    14 end
    15 print "La palabra era ", secret, ".\n"

    En este programa se utiliza una nueva estructura de control, while. El código entre el while y su correspondiente end se ejecutará repetidamente mientras la condición especificada se mantenga cierta.

    rand(3) de la línea número 2 devuelve un número aleatorio dentro del rango de 0 a 2. Este número se utiliza para extraer uno de los elementos del array words.

    En la línea 5 se lee una línea de la entrada estándar con el método STDIN.gets. Si aparece el fin del fichero (EOF - End Of File), gets devuelve nil. Por lo tanto el código asociado con el while se repetirá hasta encontrar un ^D (o ^Z bajo DOS), que representa el fin de fichero

    En la línea 6 guess.chop! elimina el último carácter de guess; en este caso siempre el carácter de línea nueva.

    En la línea 15 se imprime la palabra secreta. Se ha escrito como una sentencia print con tres argumentos (que se imprimen uno detrás del otro), pero hubiera tenido la misma efectividad el hacerlo con un único argumento escribiendo secret como #{secret} para resaltar que la variable se debe evaluar y no imprimir la palabra literal:

    Metodos:

    En Ruby, se llama a un método con la notación punto (como en C++ o Java). El objeto con el que nos comunicamos se nombra a la izquierda del punto.

    ruby> "abcdef".length
    6

    Intuitivamente, a este objeto cadena se le está pidiendo que diga la longitud que tiene. Técnicamente, se está llamando al método length del objeto "abcdef".

    Otros objetos pueden hacer una interpretación un poco diferente de length. La decisión sobre cómo responder a un mensaje se hace al vuelo, durante la ejecución del programa, y la acción a tomar puede cambiar dependiendo de la variable a que se haga referencia.

    ruby> foo = "abc"
    "abc"
    ruby> foo.length
    3
    ruby> foo = ["abcde","fghij"]
    ["abcde", "fghij"]
    ruby> foo.length
    2

    martes, 23 de enero de 2007

    L03-SMALLTALK

    Encontre un pagina en la cual contiene minitutoriales que ayudan en poder entender formas basicas de programación para smalltalk, aparecen varias ligas en la parte inferioir de color azul las cuales te conducen a sus respectivos tutoriales.

    http://members.aol.com/M206ou/m206/

    pagina que te manda a un pdf.

    http://aebcweb.iespana.es/poo/pub2/smalltalk.pdf

    Forma de generar un objeto:

    Por lo general los objetos tiene un constructor defaul llamado new, por lo que se necesitaria la siguiente linea.

    nombre := objeto new.

    Expresiones condicionales:

    para realizar un comdicional, primero se pone el la expresion logica con los diferentes simbolos, como =,<,>,<=,>=, etc. Despues se realiza la condicion dependiendo del resultado de la expresion logica.

    5<6

    ifTrue[ todo lo que deseas realizar si es verdadero]
    ifFalse[ todo lo que deseas realizar si es falso]

    Ciclo for:

    z := 0.
    1 to: 10 do:[:a z := z + a. ].

    de donde a donde :a variable a incfrementarse y lo que se desea que se repita
    z.

    Manejo de Array:

    #(numeros separados por espacios)
    #(string entre comilla simple y con espacio)

    Los espacios determinan el numero de arrays.

    cadenas:

    una cadena de caracteres se pone estre comillas simples y puede se asignado a una variable

    Z := 'zaz'.

    Para llamar a un metodo:

    objeto(o identificador del objeto) Nombre del metodo.

    miércoles, 17 de enero de 2007

    L02-SMALLTALK

    Es el lenguaje orientado a objetos mas puro, del cual se puede encontrar una buena historia.

    http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html#4

    Donde se encuentra un paper escrito por Alan Kay en 1993 para describir las nuevas funciones del lenguaje OO.

    De este lenguaje parten muchas de las ideas modernas en las interfas de usuarios como el uso de gráficos, el uso del ratón, ventanas y menús. En la siguiente pagina encontraras implementaciones que se realizaron con smalltalk; lo único para profundizar en cada uno de ellos hay que realizar un clic sobre la palabra subrayada que lo dirigira a la pagina que le describirá el sistema. En algunas paginas viene la opción de descargas y tutoriales.

    http://www.rodoval.com/paginalen.php?len=Smalltalk

    En esta misma pagina encontraras un link a la pagina principal de smalltalk.com

    UNA DE LAS MEJORES PAGINAS que encontré es:

    http://squeak.educarex.es/Squeakpolis/39

    en la cual, bueno la pagina habla por si misma. Contiene varios links interesantes sobre smalltalk lo único a realizar es hacer clic en cada una de las palabras subrayadas para poder dirigirse a la pagina que describe el enunciado.

    viernes, 12 de enero de 2007

    C++

    http://cpp.progzoo.net/

    Con esta liga podemos encontrar las mismas caracteristicas que las de Java, solo hay que dar un clic en cualquier liga del lado izquierdo, esto es por que lo malo de esto es que no todos los ejemplos tienen codigos por defaul que nos puedan explicar claramente como realizar lo que biene en el tutorial, lo bueno es que de la misma forma:

    Se puede agregar codigo para provar algunas dudas que tengamos sobre lo que podriamos realizar con el lenguaje en cualquier de las areas de texto. No necesariamente tiene que ser lo del tutorial, podemos agregar nuestro propio codigo.

    Java tutorial

    http://java.progzoo.net/

    En esta liga se puede encontrar herramientas para poder probar varias opsiones que se pueden utilizar en este lenguaje. Lo que se tiene que hacer es ver las ligas que se encuentran en el lado izquierda, para ver algunos ejemplos ejecutables que se pueden modificar y consultar sin instalación alguna. Para empezar a correr el mini programa que se realice lo unico que se debe hacer es presionar run, que se encuentra a un lado del area de texto; si alguien tiene duda de como hacer un ejemplo existe otro boton que tiene la opción de presentar un codigo por defaul.

    Se puede agregar codigo para provar algunas dudas que tengamos sobre lo que podriamos realizar con el lenguaje en cualquier de las areas de texto. No necesariamente tiene que ser lo del tutorial, podemos agregar nuestro propio codigo.

    Principal

    En este blog se mostraran las investigaciones que se llevaran a cabo, con el fin de indagar en los diferentes lenguajes de programación, así como presentar tareas y comentraios.