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)
Ejercicios de programación
Otros módulos de este curso
Lecciones de este módulo
Explora todas las lecciones disponibles en Sintaxis
Todos los módulos del curso
Navega entre los módulos de Kotlin
Explora más sobre Kotlin
Descubre más recursos de Kotlin

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.