+54 911 66509220

Noticias

Noticias
26 Ene 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?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

* Copy This Password *

* Type Or Paste Password Here *

11.773 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>