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.