+54 911 66509220

Blog

Blog
26 Jan 2015

Tutorial de Ruby – Parte 10 – Retomando ejemplos

/
Creado por
/
Comentarios0

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?

Leave a Reply

Your email address will not be published.

* Copy This Password *

* Type Or Paste Password Here *

20,661 Spam Comments Blocked so far by Spam Free Wordpress

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

This site uses Akismet to reduce spam. Learn how your comment data is processed.