Curso Kotlin | #14. Rangos

Cuando hablamos de rangos, nos referimos a un intervalo de números en el sentido matemático. Podemos generar, por ejemplo, un rango que comprenda los números del 1 al 10. Hoy veremos como aplicarlo a los conceptos anteriormente aprendidos.

Condicionales

Imaginemos que queremos preguntar la versión de un programa, y actualizar en caso que sea necesario:

val version = 1

if(version == 1) {
    println("Necesita actualizar!")
} else if(version == 2) {
    println("Version experimental activada")
} else if(version == 3) {
    println("Version produccion activa")
}

Supongamos que la versión 1 es una alpha, la 2 es beta y la 3 ya sería la final. Con tres números no tenemos muchos problemas, pero imaginemos que necesitamos un grupo de versiones:

  • 1 al 5: versiones alpha
  • 6 al 9: versiones beta
  • 10: version final

Por lo cual, tenemos un rango numérico de versiones. Podríamos resolverlo de la siguiente manera:

if(version >= 1 && version <= 5) {
    println("Necesita actualizar!")
} else if(version >= 6 && version <= 9) {
    println("Version experimental activada")
} else {
    println("Version produccion activa")
}

Quité el último else if, porque si las condiciones anteriores no se cumplen, entonces la version es superior a la 9, por lo tanto en nuestro ejemplo sería la 10. Ahora bien, quizá estas expresiones te resulten complejas, pero te las explico rápidamente: cuando determinamos que un número sea menor a un valor y luego utilizamos el operador AND (&&) para evaluar si ese mismo número es menor a otro valor, estamos estableciendo un rango.

En otros lenguajes de programación esto es muy común, pero por suerte en Kotlin tenemos un método mas acotado para definir rangos:

if(version in 1..5) {
    println("Necesita actualizar!")
} else if(version in 6..9) {
    println("Version experimental activada")
} else {
    println("Version produccion activa")
}

Como ven, es mucho más limpio y comprensible. En una traducción más “humana”, sería como decir: Si version está entre (in) 1 y 5, entonces la condición es verdadera.

Bucles

También podemos aplicar rangos a los bucles. Vamos a crear un contador sencillo con While:

var counter = 0

while (counter in 0..5){
    println("Valor counter: $counter")
    counter++
}

Creo que lo expliqué en clases anteriores, pero el operador “++” es de tipo incremental. Nos permite sumar 1 al valor de nuestra variable entera. Entonces nuestro while se encarga de validar que el valor de counter comprenda el rango de 0 a 5. Por lo tanto, esto es lo que se imprime en consola:

Valor counter: 0
Valor counter: 1
Valor counter: 2
Valor counter: 3
Valor counter: 4
Valor counter: 5

En cuanto al bucle For, el funcionamiento es muy similar:

for(counter in 0..5){
    println("Valor counter: $counter")
}

En este caso no necesitaremos declarar una variable counter, porque el mismo For genera una de manera implícita. La salida es la misma que la anterior. También podemos cambiar la iteración para contar solo los pares. Vamos a cambiar el rango de 0 a 10:

for(counter in 0..10 step 2){
    println("Valor counter: $counter")
}

Step nos permite cambiar el valor por defecto de la iteración, el cual es uno, por el que queramos. Entonces si le decimos que sea 2, vamos a generar la siguiente salida:

Valor counter: 0
Valor counter: 2
Valor counter: 4
Valor counter: 6
Valor counter: 8
Valor counter: 10

Por supuesto, podemos aplicarlo también cuando recorremos arrays o listas, no solo cuando tratemos con rangos.

Conclusiones

Existen otros usos interesantes de los rangos en la documentación oficial de Kotlin, la cual recomiendo que consultes para reforzar lo que te acabo de enseñar. ¡Nos vemos en el siguiente episodio de la serie!

¡Deja un comentario!

Artículos relacionados

Curso Kotlin | #19. Pair

A veces necesitamos relacionar dos valores y almacenarlos en una variable única, y para ello tenemos a Pair.

Curso Kotlin | #17. Proyecto: The Hero Legacy

Si empezaste esta serie desde cero y ya leíste 16 capítulos, ¡Felicidades! Empezaste a dominar los primeros conceptos fundamentales en Kotlin. Este es el primer paso de tu senda como desarrollador/a. Estamos en una instancia en donde podemos poner en práctica todo lo que aprendiste hasta ahora. Bienvenido/a al primer proyecto de la serie.

Curso Kotlin | #16. Funciones

Las funciones son procedimientos que se pueden reutilizar y nos permiten encapsular comportamientos y mejorar la lectura del código.

Curso Kotlin | #15. Excepciones

Las excepciones en Kotlin nos permiten evitar comportamientos no deseados ante problemas que se presentan en tiempo de ejecución. Por ejemplo cuando se intenta dividir por cero, castear un tipo por otro no válido, intentar agregar un valor a una lista nula, entre otros casos. Hoy vamos a ver su implementación en el código.

Curso Kotlin | #13. Bucle For

El bucle For es uno de los más utilizados por todos los lenguajes de programación. Nos permite recorrer arrays y listas, como también generar iteraciones con un límite contabilizado. Vamos a verlo en detalle.