Tag Archive for operador

Hashes en Ruby.

Un diccionario es muy parecido a un arreglo, con la diferencia más clara es que tú defines en qué posición se guarda el arreglo. Una aproximación clara de lo que es un hash se da con los diccionarios (por eso puedes llamarlo de las 2 maneras), cuando buscas algo en un diccionario no lo haces a través de números, ni el diccionario está ordenado de manera aleatoria, existe una relación entre el contenido y la posición en la que está guardado.

Si lo anterior no te queda aún muy claro veamos cómo definir un hash:

lenguajes = Hash.new
lenguajes["ruby"] = "Creado por Matz"
lenguajes["python"] = "No puntos y coma ni llaves"
lenguajes["java"] =" Lenguaje compilado"

Considero que el ejemplo anterior es bastante explícito, es una de las formas de declarar un hash, como instancia de la clase Hash. Vemos cómo asignamos una cadena a un index, cada index es el nombre de un lenguaje y el valor es una característica del lenguaje, si quisiéramos saber algo sobre JAVA, haríamos:

puts lenguajes["java"]

Mucho más claro y sencillo, además de más rápido que un arreglo, ahora bien, veamos una forma más de declarar un Hash:

lenguajes = {'ruby' => 'Creado por Matz', 'python' => 'Lenguaje interpretado'}

Como puedes ver el index, va seguido del operador => que signa el valor. Al ser igual al ejemplo anterior considero que no hay mucha dificultad para relacionar ambos ejemplos.

Ahora bien, eso es lo que por ahora necesitas saber sobre los Hashes, sin embargo hay algo muy interesante en Ruby que se conoce como símbolos, los símbolos son los objetos más sencillos, sólo tienen un nombre y un id, éste id los identifica, no pueden haber dos símbolos del mismo nombre, ésto es muy interesante porque tú por ejemplo puedes tener dos cadenas así:

"Hola mundo"
"Hola mundo"

Pero no dos símbolos así:

:hola_mundo
:hola_mundo

En el primer ejemplo, ambas cadenas son distintas, en el segundo amos símbolos son el mismo. Esto es útil con los hashes porque aumenta la velocidad de los mismos, puesto que Ruby no tiene que estarlos declarando constantemente, con una vez basta, veamos cómo usar símbolos con hashes:

lenguajes = Hash.new
lenguajes[:ruby] = "Creado por Matz"
lenguajes[:python] = "No puntos y coma ni llaves"
lenguajes[:java] =" Lenguaje compilado"

Muy sencillo, nota como cada símbolo se identifica porque su nombre inicia con :.

Con esto terminamos lo que corresponde a hashes, seguramente los usaremos más adelante, así que haz varias pruebas con ellos, de ahora en adelante nos adentraremos en la programación orientada a objetos con Ruby.

Ciclo While en Ruby

Una vez nos hemos adentrado en los ciclos no podemos olvidarnos de uno de los más utilizados, el ciclo While, de nuevo, si no has programado antes, necesitas saber que ésta es una especie de ciclo que se repite mientras una condición se cumple.

La sintaxis del ciclo while en Ruby es bastante parecida a la de otros lenguajes, veamos el ejemplo:

it = 1
while i < 10
   puts it
   it += 1
end

El ciclo anterior irá de 1 a 9, cómo verás, entra al ciclo siempre y cuando la condición que se encuentra al lado de la palabra while se cumple, en este caso i<10.

Bastante sencillo ¿no? Lo interesante será combinarlo con valores que el usuario ingrese, ya que generalmente, éste ciclo se utiliza cuando no sabemos cuántas veces se necesitará repetir un bloque de código.

Cabe recalcar que las palabras que modifican un ciclo for también aplican para el ciclo while, éstas son redobreaknext, si necesitas saber más al respecto revisa el artículo anterior de éste curso.

Por ahora todo ha sido muy común, cosa extraña pensando que Ruby es uno de los lenguajes con sintaxis más peculiar, éste artículo también presenta una variante interesante del ciclo while, peculiar de Ruby, y es el ciclo until.

Until, se trata del inverso de while, es decir, un ciclo que se ejecuta siempre y cuando la condición sea FALSA, veamos el ejemplo anterior pero usando ahora until:

it = 1
until i > 9
   puts it
   it += 1
end

De nuevo el ciclo iterará de 1 a 9, nota cómo cambiamos el operador < por el >, es decir el inverso, de modo que el ciclo se itera siempre y cuando i no sea mayor que 9.

Algunos conocedores se estarán preguntando, qué pasa con la variante do… while, en Ruby no hay algo como tal, pero bien se puede hacer uno basado en el poder de los bloques, veamos el ejemplo:

it = 1
begin
   puts it
   it += 1
end while i < 10

En el caso anterior, el bloque encerrado por las palabras reservadas begin end, se ejecuta una vez, posteriormente evalúa la condición y decide si debe repetirse de nuevo.

Bien, con esto terminamos el análisis de los ciclos, en el siguiente artículo veremos entrada y salida de datos con Ruby.

If – Unless en Ruby.

Definitivamente si has programado en otros lenguajes estarás familiarizado con la sentencia if, sin embargo, la instrucción unless probablemente te parezca interesante así que te invito a seguir leyendo el artículo.

La instrucción if permite evaluar una operación lógica y en base al resultado ejecutar ciertas instrucciones u otras, en la vida real es como tomar una decisión y elegir entre dos caminos.

La estructura de la sentencia if es la siguiente:

 if condicion
   #Conjunto de instrucciones a realizar
 end

Donde como sabes, “condicion” será reemplazado con una operación lógica, y el comentario “#Conjunto de instr…” se reemplazará con las sentencias de código que quieras que se ejecuten si se cumple la condición.

Los lenguajes de programación dan la facilidad de también ejecutar algo si la condición no se cumple, esto a través de la instrucción else. Veamos la estructura:

if condicion
   #Se cumplio la condicion
else
   #No se cumplio la condicion
end

Como verás, en este caso sustituyes el comentario “No se cumplio…” por las instrucciones de código a ejecutar si no se cumple la condición.

Unless.

En programación como en matemáticas existe el operador ! o NOT, que básicamente invierte la respuesta de una operación lógica, es decir, si la operación es verdadera la vuelve falsa y si es falsa la vuelve verdadera, este operador se utiliza mucho cuando queremos que se ejecuten instrucciones cuando NO se cumpla una condición, ejemplo:

if not div == 0
 puts 5/div
end

En el ejemplo anterior evaluamos que el valor entre el que dividimos no sea 0, para que no mande un error, y para ello utilizamos el operador NOT. Todo esto se menciona porque en Ruby existe la instrucción UNLESS, que literalmente cumple la función del operador NOT, veamos el mismo ejemplo anterior.

unless div == 0
 puts 5/div
end

Unless ejecuta las instrucciones si la condición es falsa, literalmente dice ejecuta esto A MENOS QUE esta condición sea verdadera, a mi parecer bastante práctico y más claro.

Con esto concluimos este artículo, en el siguiente hablaremos de la sentencia case.