Skip to content

Bucles y Ruby

3 min.

Siguiendo con el curso de Ruby de Codecademy, me dispongo a tomar la tercera lección. En este bloque se tratan las estructuras iterativas del lenguaje. He descubierto que hay más variedad que en muchos de los lenguajes que conocía hasta ahora para crear bucles: toca aprender más sintaxis, pero a cambio conseguiremos programas más naturales y que se leen con mayor facilidad.

Lección 5: Ciclos e iteradores

Empezamos esta parte viendo bucles while, que en otros lenguajes como Java o C son los más simples. Nos encontramos con algún ejemplo, seguido de un ejercicio para aprender a evitar bucles infinitos – nos avisan con la frase “Si haces clic en Guardar, el ciclo infinito va a empezar y vas a tener que volver a cargar la página”. Es cierto.

La siguiente estructura, until, resulta ser el análogo al unless para if, pero para el while en este caso. Me parece genial a nivel semántico. Con la de veces que te estás varios minutos pensando la lógica de un bucle, se agradecen estas ayudas.

Más sintaxis: for, each, loop y times. Los dos primeros nos permiten recorrer listas, los dos siguientes repiten una acción, simplificando el típico código:

Por cierto, este tipo de bucles no existe en Ruby, ni tampoco la abreviación i++. En la misma lección nos explican las abreviaciones matemáticas como +=, *= y /=.

Finalmente, veremos una introducción a las listas de números consecutivos. Las hay de dos tipos: las que incluyen el último elemento, y las que no. La forma de expresar estas listas es muy compacta, pero hay tan poca diferencia entre las dos modalidades de lista que puede pasar tiempo hasta que tengamos bien claro cuál es cuál.

Lección 6: ¡CONFIDENCIAL!

Como de costumbre, en la segunda parte del bloque practicaremos lo visto en la primera parte. En este caso, nos toca crear un programa usando bucles. El objetivo es sustituir todas las palabras de un texto que coincidan con un patrón por la cadena "CONFIDENCIAL".

Un detalle que no había comentado hasta ahora de Codecademy: en las lecciones en que hay que crear un pequeño programa, vemos un ejemplo de cómo debe quedar antes de hacer nada. Es bueno leerse el código propuesto para hacernos una idea de qué nos pedirá el ejercicio. Si consideras que eso es “hacer trampa” no pasa nada, puedes saltar sin mirarlo: en las sucesivas etapas hay instrucciones suficientes para acabar la tarea.

Por ejemplo, a mitad de la lección te recuerdan la sintaxis lista.each do |x|, que resulta muy útil si hiciste la primera parte sobre Ciclos e iteradores unos días atrás y ya no te acordabas.

En esta lección se introduce el método split, importante en muchos lenguajes de programación de alto nivel. Hacer split significa dividir una cadena de caracteres, cortándola por un patrón definido (por ejemplo un espacio o el caracter coma ‘,’) y poniendo las partes en una lista.

Me ha gustado este ejercicio porque la guía ha sido fácil de seguir. Asimismo, se enseña una estructura de programa que sirve como base para muchas aplicaciones reales: recorrer una lista generada a partir de la entrada del usuario, y procesar los elementos de dicha lista según una lógica determinada.

Valoración

La primera lección de este bloque incluye mucho contenido ya que en Ruby hay hasta seis tipos de bucles, cada uno con su sintaxis particular. Distintas maneras de recorrer listas y ejecutar una misma acción repetidas veces que empiezan a mostrarnos todo el potencial de este lenguaje. Con esta lección le he cogido bastante el gusto al lenguaje, la aparente complejidad creada por la multiplicidad de elementos disponibles acaba siendo útil para modelar situaciones con sutilezas distintas.

El ejercicio final es relativamente rápido de hacer. Aún así, no es un programa trivial y, como he dicho, empieza a dar una idea de cómo puede ser un algoritmo simple.

Published inAprender a programarSin categoría
Copyright © 2017 Enric Florit
efz1005(at)gmail(dot)com

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR