Escolar Documentos
Profissional Documentos
Cultura Documentos
Antecedentes
El lenguaje fue creado por Yukihiro "Matz" Matsumoto, quien empez a trabajar
en Ruby el 24 de febrero de 1993, y lo present al pblico en el ao 1995. En el crculo
de amigos de Matsumoto se le puso el nombre de "Ruby" (en espaol rub) como broma
aludiendo al lenguaje de programacin "Perl" (perla). La ltima versin estable es la
1.8.6, publicada en diciembre de 2007. El 26 de ese mismo mes sali Ruby 1.9.0, una
versin en desarrollo que incorpora mejoras sustanciales en el rendimiento del lenguaje,
que se espera queden reflejadas en la prxima versin estable de produccin del
lenguaje, Ruby 1.9.0.1 Diferencias en rendimiento entre la actual implementacin de
Ruby (1.8.6) y otros lenguajes de programacin ms arraigados han llevado al
desarrollo de varias mquinas virtuales para Ruby.
Entre sas se encuentra JRuby, un intento de llevar Ruby a la plataforma Java, y
Rubinius, un intrprete modelado basado en las mquinas virtuales de Smalltalk. Los
principales desarrolladores han apoyado la mquina virtual proporcionada por el
proyecto YARV, que se fusion en el rbol de cdigo fuente de Ruby el 31 de diciembre
de 2006, y se dar a conocer como Ruby 1.9.0.1.
Descripcin
Soporta
alteracin
de
objetos
en
tiempo
de
ejecucin
continuaciones y generadores.
obtener
el
directorio
actual.
Archivos
Una vez entendamos cmo manipular los directorios nos vamos a la gestin de archivos
Como crear un archivo:
Para abrir un archivo simplemente debemos crear un objeto de la
clase File (File.new()) o utilizar el mtodo esttico open (File.open()) y esto nos
devolver un objeto de tipo File al que podremos manipular.
Para acceder a los archivos debemos pasarle un segundo valor por parmetros que nos
indica cmo vamos abrir el archivo. Veamos los parmetros para abrir y crear un
archivo:
w: (slo escritura) Borra el contenido del archivo o crea un nuevo archivo para
escritura.
w+: (lectura y escritura) Borra el contenido del archivo o crea un nuevo archivo
para lectura y escritura.
a+: (lectura y escritura) permite leer y escribir ubicando el cursor al final del
archivo si ste existe y si no crea uno nuevo.
Ejemplo:
#consultamos el directorio donde estamos trabajando
>> Dir.glob "*"
["test"]
#creamos y obtenemos un archivo nuevo
>> archivo =File.new("pruebaCodeHero.txt","w")
File:pruebaCodeHero.txt
#intentamos crear un archivo pasndole por parmetro solo lectura
>> archivo =File.new("pruebaCodeHeroError.txt","r")
Errno::ENOENT: No such file or directory - pruebaCodeHeroError.txt
# consultamos nuevamente la carpeta
>> Dir.glob "*"
["pruebaCodeHero.txt", "test"]
Strings;
Para las cadenas de caracteres, su uso es bastante similar al de cualquier lenguaje
orientado a objetos, con la clase String, sin embargo cabe mencionar algunas
caracteristicas mas emocionantes de ruby, por ejemplo, puedes multiplicar cadenas!
Hola * 5 => Hola Hola Hola Hola Hola
Para una vista ms completa referirse al capitulo de Strings
Date/Time
Ruby ya trae libreras para manejar los tipos date y time, sin embargo para usarlos,
debemos llamar a la librera correspondiente, esto con la palabra reservada require.
require date
Operadores
1. Aritmticos:
Los operadores aritmticos permiten realizar operaciones matemticas, entre dos
variables y/o constantes. Todas las expresiones entre parntesis se evalan primero. Las
expresiones con parntesis anidados se evalan de adentro hacia afuera, el parntesis
ms interno se evala primero. Dentro de una misma expresin los operadores se
evalan en el siguiente orden:
Operador Descripcin
**
Exponencial
*, /, %
+,
Suma y resta
Ejemplo:
Exponencial
5 ** 2 (el resultado sera 25) 5 ** 3 (el resultado sera 125).
Divisin
5 / 3 = 1 (la operacin nos da como resultado 1, que sera el cociente de una divisin)
Modulo
5 % 3 = 2 (la operacin nos da como resultado 2, que es el resto o residuo de una
divisin)
Los operadores en una misma expresin con igual nivel de prioridad se evalan de
izquierda a derecha.
Ejemplo:
5 * 5 / 6 = 4 (Primero se opera 5 * 5 que seria 25 y despus se divide por 6 y nos dara
4)
6 / 5 * 5 = 5 (Primero se opera 6 / 5 que seria 1 y despus se multiplica por 5 y nos dara
5)
En los dos ejemplos mostrados como los dos operadores tienen el mismo nivel
de prioridad se evalan de izquierda a derecha dndonos diferente resultado en dos
operaciones aparentemente iguales.
2. Relacionales:
Los operadores relacionales comparan valores entre s, el resultado es verdadero
o false (uno o cero).
Operador
Descripcin
==
igual que
!=
diferente de
<
menor que
>
mayor que
<=
>=
==
(el
resultado
sera
falso,
porque,
16
no
es
igual
que
61)
Descripcin
&&, and
||, or
No
En Ruby no hay una declaracin explcita del tipo de dato de una variable. El
mismo se determina en tiempo de ejecucin a partir del valor que se le ha asignado.
Esto significa que las variables pueden tomar diferentes tipos de datos en diferentes
partes del programa. Para determinar si un nombre hace referencia a una variable o a un
mtodo, Ruby utiliza heurstica, en la cual a medida que va leyendo el cdigo fuente va
llevando control de los smbolos que ha ledo, asumiendo que los mismos son variables.
Cuando se encuentra con un smbolo que puede ser una variable o un mtodo, revisa si
ya se le ha asignado algo anteriormente. Si es as, entonces lo trata como variable; si no,
lo trata como un mtodo.
Ejemplo:
vida = 100
continues = 3
if vida == 0
puts "El Personaje ha muerto"
puts "Tu personaje va a revivir"
continues = continues - 1
else
puts "El juego continua con normalidad"
end
if numero > 5
puts "#{numero} es mayor que 5"
elsif numero == 3
puts "#{numero} es igual a 3"
else
puts "#{numero} es menor que 5 pero no es igual a 3"
end
numero = 1
unless numero == 1
puts "El nmero no es el 1"
else
puts "El nmero es el 1"
end
La respuesta en este caso sera:
ruby ~/Desktop/prueba_unless.rb
El nmero es el 1
CASE: En caso de tener una variable que necesitamos comprobar muchos casos,
en vez de usar muchos if con elsif, seria mas natural usar la expresion case
case variable
when [condicion]
# code
when [condicion]
# code
else
# code
End
edad = 5
case edad
when 0 .. 2
puts "Bebe"
when 3 .. 12
puts "Nio"
when 13 .. 18
puts "Adolescente"
else
puts "Adulto"
end
numero = 0
begin
puts("el nmero es: i = #{numero}" )
numero +=1
end while numero < 5
Ejecutamos el Script obteniendo lo siguiente como resultado:
>> ruby Desktop/conditionalCodehero.rb
el nmero es: i = 0
el nmero es: i = 1
el nmero es: i = 2
el nmero es: i = 3
el nmero es: i = 4
UNTIL LOOP: Este tipo de loop se ejecuta hasta que la condicin de parada
sea falsa, la sintaxis se define de la siguiente manera:
until Condicin [do]
cdigo
end
Lo demostramos con el siguiente ejemplo, en donde el bloque de cdigo interno al
bucles se ejecuta mientras el nmero no sea mayor que cinco:
#!/usr/bin/ruby
numero = 0
until numero > 5 do
puts("El nmero es #{numero}" )
numero +=1
end
El resultado de este Scripts es:
ruby Desktop/conditionalCodehero.rb
El nmero es 0
El nmero es 1
El nmero es 2
El nmero es 3
El nmero es 4
El nmero es 5
FOR: Estos bucles se ejecutan una vez por cada elemento. stos tienen
configurado un rango de valores que indican cuantas veces se va a ejecutar.
Primero les definimos la sintaxis para posteriormente ir con el ejemplo y
comprender mejor esto:
for variable [, variable ...] in expresin [do]
Cdigo
end
En el ejemplo vamos a poder ver como la variable simplemente incrementa sola, hasta
cumplir con la expresin que en este caso es un objeto de tipo Rango con valores desde
el 0 hasta el 3:
#!/usr/bin/ruby
for i in 0..3
puts "El valor de la variable es: #{i}"
end
Dando como resultado lo siguiente:
$ ruby Desktop/conditionalCodehero.rb
el valor de la variable es: 0
# Hola Pepe