Tutorial de Ruby – Parte 10 – Retomando ejemplos

ruby-mini-logoCapítulo 8. Retomando los ejemplos sencillos

 

Vamos ahora a desmontar el código de nuestros anteriores programas ejemplo. Para que sirva de referencia vamos a numerar las líneas de todos los guiones.

 

8.1. Factoriales

 

El siguiente guión aparece en el capítulo Ejemplos sencillos.

 

01 def fact(n)

02 if n == 0

03 1

04 else

05 n * fact(n-1)

06 end

07 end

08 print fact(ARGV[0].to_i), «\n»

 

Debido a que es la primera explicación de un código, vamos a ir línea por línea.

 

01 def fact(n)

 

En la primera línea, def es la sentencia que define una función (o con mayor precisión, un método; trataremos con más detalle los métodos en un capítulo posterior). Aquí se indica que la función fact toma un único argumento, que se llama n.

 

02 if n == 0

 

Con if comprobamos una condición. Si la condición es cierta, se evalúa la siguiente línea; si no independientemente de lo que siga se evalúa el else

 

03 1

 

Si la condición es cierta el valor del if es 1.

 

04 else

 

Si la condición no es cierta, se evalúa el código desde esta línea hasta el end.

 

05 n * fact(n – 1)

 

Si no se satisface la condición el valor de if es el resultado de multiplicar fact(n-1) por n.

 

06 end

 

El primer end cierra la sentencia if.

 

07 end

 

El segundo end cierra la sentencia def.

 

08 print fact(ARGV[0].to_i), «\n»

 

Llama a la función fact() con el argumento especificado en la línea de comandos, e imprime el resultado.

 

ARGV es un array que contiene los argumentos de la línea de comandos. Los miembros de ARGV son cadenas por lo que hay que convertirlos a números enteros con to_i. Ruby no convierte automáticamente las cadenas a números como hace Perl.

 

Hmmm… ¿Qué pasa si alimentamos este programa con un número negativo? ¿Se ve cuál es el problema? ¿Cómo se podría solucionar?

Deja una respuesta