Curso Kotlin | #14. Rangos
Tags: spanish, kotlin, beginners, programming
Published: 2022-12-15 12:42:40

Bienvenido/a a otro capítulo del Curso de Kotlin! Podés consultar el curso completo desde [este link](https://github.com/maxwellnewage/kotlin-course) que te dejo acá. Podés seguirme por [LinkedIn](https://www.linkedin.com/in/maximilianoburgos/) o [Twitter](https://twitter.com/maxwellnewage) 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:

```kotlin
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:

```kotlin
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:

```kotlin
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:

```kotlin
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:

```kotlin
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:

```kotlin
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](https://kotlinlang.org/docs/ranges.html) 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!