Aprender Kotlin Sintaxis

Módulo del curso de Kotlin

Kotlin
Kotlin
Módulo del curso
5 lecciones
10 ejercicios
Actualizado: 14/02/2025

Módulo: Sintaxis

Este módulo forma parte del curso de Kotlin. Incluye 5 lecciones y 10 ejercicios de programación .

Kotlin es un lenguaje de programación moderno que ha ganado popularidad gracias a su concisión y seguridad. En esta guía, exploraremos en detalle la sintaxis de Kotlin, proporcionando una base sólida para desarrollar aplicaciones eficientes y robustas.

Declaración de variables

En Kotlin, las variables se declaran utilizando val o var:

  • val: declara una variable inmutable (constante).
  • var: declara una variable mutable.

Ejemplo:

val nombre: String = "Ana"
var edad: Int = 30

Si el tipo puede ser inferido, se puede omitir:

val nombre = "Ana"
var edad = 30

Tipos de datos básicos

Kotlin proporciona varios tipos de datos integrados:

  • Números enteros: Byte, Short, Int, Long
  • Números de coma flotante: Float, Double
  • Caracteres: Char
  • Cadenas de texto: String
  • Booleanos: Boolean

Ejemplo:

val numeroEntero: Int = 100
val numeroDecimal: Double = 123.45
val caracter: Char = 'A'
val cadena: String = "Hola, Kotlin"
val booleano: Boolean = true

Cadenas de texto

Las cadenas se pueden declarar con comillas dobles. Para cadenas multilínea, se utilizan comillas triples (""").

Interpolación de cadenas:

val nombre = "Ana"
val saludo = "Hola, $nombre"

Cadenas multilínea:

val texto = """
    |Primera línea
    |Segunda línea
""".trimMargin()

Funciones

Las funciones en Kotlin se declaran utilizando la palabra clave fun.

Ejemplo básico:

fun sumar(a: Int, b: Int): Int {
    return a + b
}

Funciones de expresión única:

fun multiplicar(a: Int, b: Int) = a * b

Estructuras de control

Condicionales

If como expresión:

val max = if (a > b) a else b

When

El bloque when es similar a switch en otros lenguajes.

Ejemplo:

when (x) {
    1 -> print("Uno")
    2 -> print("Dos")
    in 3..5 -> print("De tres a cinco")
    else -> print("Otro número")
}

Bucles

For:

for (item in coleccion) {
    println(item)
}

While y do-while:

while (x > 0) {
    x--
}

do {
    val y = obtenerValor()
} while (y != null)

Clases y objetos

Declaración de clases

class Persona(val nombre: String, var edad: Int)

Instanciación

val persona = Persona("Ana", 30)

Propiedades y métodos

class Rectangulo(val ancho: Double, val alto: Double) {
    val area get() = ancho * alto

    fun perimetro() = 2 * (ancho + alto)
}

Herencia

Las clases en Kotlin son finales por defecto. Para permitir la herencia, se utiliza la palabra clave open.

Clase base:

open class Forma

Clase derivada:

class Circulo(val radio: Double) : Forma()

Interfaces

Las interfaces pueden contener definiciones de métodos abstractos y sus implementaciones.

interface Dibujable {
    fun dibujar()
}

class Cuadrado : Dibujable {
    override fun dibujar() {
        // Implementación
    }
}

Funciones Lambda

Las funciones lambda son funciones anónimas.

Ejemplo:

val suma = { a: Int, b: Int -> a + b }
println(suma(3, 4)) // Imprime 7

Uso con colecciones:

val numeros = listOf(1, 2, 3, 4, 5)
val pares = numeros.filter { it % 2 == 0 }

Funciones de orden superior

Las funciones de orden superior aceptan otras funciones como parámetros o retornan funciones.

Ejemplo:

fun operar(a: Int, b: Int, operacion: (Int, Int) -> Int): Int {
    return operacion(a, b)
}

val resultado = operar(5, 3) { x, y -> x * y }
println(resultado) // Imprime 15

Extensiones

Las funciones de extensión permiten agregar funcionalidades a clases existentes sin herencia.

Ejemplo:

fun String.saludar() = "Hola, $this"

println("Mundo".saludar()) // Imprime "Hola, Mundo"

Data Classes

Las data classes son útiles para almacenar datos y proporcionan implementaciones automáticas de métodos comunes.

Declaración:

data class Usuario(val nombre: String, val email: String)

Uso:

val usuario1 = Usuario("Ana", "ana@example.com")
val usuario2 = usuario1.copy(email = "ana.nueva@example.com")

Null Safety

Kotlin incorpora seguridad contra nulls en el sistema de tipos.

Variables que pueden ser null:

var nombre: String? = null

Operador Elvis (?:):

val longitud = nombre?.length ?: 0

Casting seguro (as?):

val objeto: Any = "Kotlin"
val cadena: String? = objeto as? String

Operador Let

El operador let es útil para ejecutar un bloque de código en el contexto de un objeto.

Ejemplo:

nombre?.let {
    println("El nombre tiene ${it.length} caracteres")
}

Coroutines

Las coroutines permiten escribir código asíncrono de manera secuencial.

Ejemplo básico:

import kotlinx.coroutines.*

fun main() = runBlocking {
    launch {
        delay(1000L)
        println("Coroutines en Kotlin")
    }
    println("Comenzando")
}

Parámetros por defecto y nombrados

Las funciones pueden tener parámetros con valores por defecto.

Ejemplo:

fun saludar(nombre: String, mensaje: String = "Hola") {
    println("$mensaje, $nombre")
}

saludar("Ana") // Imprime "Hola, Ana"

Parámetros nombrados:

saludar(mensaje = "Buenos días", nombre = "Luis")

Operador Infix

Permite definir funciones que pueden ser llamadas sin paréntesis ni puntos.

Ejemplo:

infix fun Int.sumar(valor: Int): Int = this + valor

val resultado = 5 sumar 10
println(resultado) // Imprime 15

Sobrecarga de operadores

Kotlin permite sobrecargar operadores para clases.

Ejemplo:

data class Punto(val x: Int, val y: Int) {
    operator fun plus(otro: Punto) = Punto(x + otro.x, y + otro.y)
}

val punto1 = Punto(2, 3)
val punto2 = Punto(4, 5)
val suma = punto1 + punto2
println(suma) // Imprime Punto(x=6, y=8)

Explora más sobre Kotlin

Descubre más recursos de Kotlin

Alan Sastre - Autor del curso

Alan Sastre

Ingeniero de Software y formador, CEO en CertiDevs

Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, Kotlin es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.