DEV Community

Maximiliano Burgos
Maximiliano Burgos

Posted on

Curso Kotlin | #14. Rangos

Bienvenido/a a otro capítulo del Curso de Kotlin! Podés consultar el curso completo desde este link que te dejo acá. Podés seguirme por LinkedIn o Twitter si querés estar al tanto de las próximas publicaciones.

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")
}
Enter fullscreen mode Exit fullscreen mode

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")
}
Enter fullscreen mode Exit fullscreen mode

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")
}
Enter fullscreen mode Exit fullscreen mode

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++
}
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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

for(counter in 0..5){
    println("Valor counter: $counter")
}
Enter fullscreen mode Exit fullscreen mode

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")
}
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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!

Top comments (0)