En esta sección, aprenderemos sobre los mecanismos de control de flujo en Kotlin, que incluyen condicionales y bucles. Estos son fundamentales para tomar decisiones y repetir acciones en tu código.
Condicionales
If-Else
El bloque if-else se utiliza para ejecutar código basado en una condición booleana.
fun main() {
    val number = 10
    if (number > 0) {
        println("El número es positivo")
    } else {
        println("El número es negativo o cero")
    }
}If-Else If-Else
Puedes encadenar múltiples condiciones usando else if.
fun main() {
    val number = 0
    if (number > 0) {
        println("El número es positivo")
    } else if (number < 0) {
        println("El número es negativo")
    } else {
        println("El número es cero")
    }
}Expresión If
En Kotlin, if puede ser usado como una expresión que retorna un valor.
fun main() {
    val number = 10
    val result = if (number > 0) "Positivo" else "No positivo"
    println(result)
}When
El bloque when es una alternativa más poderosa y flexible al switch de otros lenguajes.
fun main() {
    val day = 3
    val dayName = when (day) {
        1 -> "Lunes"
        2 -> "Martes"
        3 -> "Miércoles"
        4 -> "Jueves"
        5 -> "Viernes"
        6 -> "Sábado"
        7 -> "Domingo"
        else -> "Día inválido"
    }
    println(dayName)
}Bucles
For
El bucle for se utiliza para iterar sobre rangos, matrices o colecciones.
Iterar sobre un rango
Iterar sobre una colección
fun main() {
    val items = listOf("manzana", "banana", "cereza")
    for (item in items) {
        println(item)
    }
}While y Do-While
While
El bucle while ejecuta el bloque de código mientras la condición sea verdadera.
Do-While
El bucle do-while es similar al while, pero garantiza que el bloque de código se ejecute al menos una vez.
Ejercicios Prácticos
Ejercicio 1: Número Par o Impar
Escribe un programa que determine si un número es par o impar.
fun main() {
    val number = 4
    if (number % 2 == 0) {
        println("$number es par")
    } else {
        println("$number es impar")
    }
}Ejercicio 2: Calificación de Estudiantes
Escribe un programa que asigne una calificación basada en la puntuación de un estudiante.
fun main() {
    val score = 85
    val grade = when {
        score >= 90 -> "A"
        score >= 80 -> "B"
        score >= 70 -> "C"
        score >= 60 -> "D"
        else -> "F"
    }
    println("La calificación es: $grade")
}Ejercicio 3: Suma de Números
Escribe un programa que sume los números del 1 al 100 usando un bucle for.
fun main() {
    var sum = 0
    for (i in 1..100) {
        sum += i
    }
    println("La suma de los números del 1 al 100 es: $sum")
}Conclusión
En esta sección, hemos cubierto los conceptos básicos de los condicionales y bucles en Kotlin. Estos mecanismos de control de flujo son esenciales para escribir programas que puedan tomar decisiones y repetir acciones de manera eficiente. En la próxima sección, exploraremos las funciones y lambdas, que nos permitirán modularizar y reutilizar el código de manera más efectiva.
Curso de Programación en Kotlin
Módulo 1: Introducción a Kotlin
- Introducción a Kotlin
 - Configuración del Entorno de Desarrollo
 - Conceptos Básicos de Kotlin: Variables y Tipos de Datos
 - Flujo de Control: Condicionales y Bucles
 - Funciones y Lambdas
 
Módulo 2: Programación Orientada a Objetos en Kotlin
- Clases y Objetos
 - Herencia e Interfaces
 - Modificadores de Visibilidad
 - Clases de Datos y Clases Selladas
 - Declaraciones de Objetos y Objetos Compañeros
 
Módulo 3: Características Avanzadas de Kotlin
- Colecciones y Genéricos
 - Funciones de Extensión
 - Funciones de Orden Superior y Programación Funcional
 - Corrutinas y Programación Asíncrona
 - DSL (Lenguaje Específico de Dominio) en Kotlin
 
Módulo 4: Kotlin para Desarrollo Android
- Introducción al Desarrollo Android con Kotlin
 - Construcción de Interfaces de Usuario
 - Manejo de Entrada del Usuario
 - Redes y Almacenamiento de Datos
 - Pruebas y Depuración
 
