Tag Archive for en ruby

Sentencia Case en Ruby.

La instrucción case en Ruby es una que me gusta mucho, sería el similar de la instrucción switch en otros lenguajes, pero a mi parecer está estructurada de una forma más legible.

Supongamos que queremos evaluar si una persona puede o no entrar a una película basándonos en su edad, bien, según Wikipedia si la película es clasificación G todos pueden entrar, PG-13 menores de 13 años con padres, R menores de 17 años con padres y NC-17 sólo mayores de edad, ¿cómo podríamos escribir un programa así en Ruby?

Si dominas la instrucción if bien podrías pensar en algo como lo siguiente.

if c == "G"
      print "Todos entran"
elsif c == "PG-13"
      print "Si eres menor de 13 años necesitas un adulto" 
elsif c == "R"
      print "Si eres menor de 17 años necesitas un adulto" 
elsif c == "NC-17"
      print "Solo mayores de 17 entran." 
end

Lo anterior solucionaría el problema, suponiendo que la variable c almacena la categoría de la película a la que se quieren entrar, la solución la enfrentamos haciendo uso de if’s anidados esto significa que si el primer if no es verdadero evaluará el siguiente elsif y así sucesivamente.

Ahora bien, aunque solucionamos el problema, queda claro que no es la mejor forma de enfrentarlo, dada la cantidad de código que hemos repetido. En estos casos, podríamos implementar un case, como en el siguiente ejemplo:

clasificacion = "G"

disponibilidad = case car
   when "G" then "Todos pueden entrar"
   when "PG-13" then "Menores de 13 con un adulto"
   when "R" then "Menores de 17 con adulto"
   when "NC-17" then "Solo mayores de edad"
   else "Error en la clasificacion"
end
print disponibilidad

Como mencionaba antes, a mi parecer, la instrucción es clara por sí sola, almacenas en una variable el resultado del case y evalúas cada posibilidad con un when, la palabra reservada then define que valor se guardará en la variable en caso de que se haya cumplido la condición.

Ahora bien, en el caso anterior vimos un ejemplo evaluando cadenas, sin embargo, la instrucción case también evalúa números y rangos, veámoslo en un ejemplo:

calificacion = 9

resultado = case calificacion
   when 0..5 then "Reprobaste"
   when 6..7 then "Apenas pasaste"
   when 8..9 then "Buen trabajo!"
   when 10 then "Excelente"
   else "Error en la calificacion recibida"
end

puts resultado

Y así de sencillo es como acomodamos la instrucción a números.

Con esto terminamos el análisis de la instrucción case y pasaremos en los siguientes artículos a ver cosas relacionadas con los ciclos.

Strings en Ruby.

El manejo de Cadenas o Strings es primordial en cualquier lenguaje, es por eso que este post esta dedicado a la clase String de Ruby y algunos métodos que te servirán para manipular cadenas.

Como sabemos, la clase String es utilizada para definir una cadena de texto, un conjunto de caracteres. Sobre este conjunto se pueden aplicar distintas operaciones, empecemos con una básica, la concatenación.

Concatenar significa unir 2 cadenas, en el caso de programación pueden unirse enteros o reales a un cadena, incluso objetos complejos que pueden representarse en una cadena pueden concatenarse, pudiera decirse que el operador de concatenación en Ruby es el siguiente : #{} para ver el cómo funciona veamos código de ejemplo:

#Concatenar cadenas.
resultado = 2+3
print "La suma de 2 + 3 = #{resultado}"

Como verás incluimos una variable dentro de la cadena a encerrándola en el operador que antes mencionábamos, bastante bien. En este caso se concatena el valor de una variable al String, si quisiéramos unir dos conjuntos de caracteres lo haríamos usando el operador <<.

cadena = "Hola"
cadena << "Mundo" #Agregar cadena a una existente.

En el ejemplo anterior concatenamos “Mundo” a “Hola”.

Ahora bien, pasemos a otro aspecto, en algunos lenguajes los operadores aritméticos están sobrecargados para ejercer otras funciones cuando se ejecuten sobre cadenas, veamos el ejemplo de la multiplicación.

cadena = "ja"*4 #retorna la cadena repetida 4 veces

Como el comentario en la instrucción indica, la operación anterior daría como resultado en cadena el valor “jajajaja” por multiplicar la cadena 4 veces.

Existen, además, métodos específicos de la clase String que permiten ejecutar operciones interesantes con las cadenas, por ejemplo:

nombre = "uriel"
print nombre.capitalize

En el ejemplo anterior mi nombre se imprimirá con la primera letra en mayúscula.

Y bueno, con eso dejamos la clase String para que en el siguiente artículo veamos cosas más avanzadas.