1. Antes de comenzar
En este curso, compilarás aplicaciones mediante la escritura de código en el lenguaje de programación Kotlin, que es el lenguaje recomendado por Google para crear nuevas apps para Android.
Kotlin es un lenguaje de programación moderno que ayuda a los desarrolladores a aumentar su productividad. Por ejemplo, te permite ser más conciso y escribir menos líneas de código para la misma funcionalidad en comparación con otros lenguajes de programación. Las apps compiladas con Kotlin tienen menos probabilidades de fallar, lo que genera una app más estable y sólida para los usuarios. Básicamente, con Kotlin, puedes escribir mejores apps para Android en menos tiempo. Como resultado, Kotlin se está imponiendo en la industria y es el lenguaje que usa la mayoría de los desarrolladores profesionales de Android.
A fin de comenzar a compilar apps para Android en Kotlin, es importante establecer primero una base sólida de conceptos de programación en Kotlin. Con los codelabs de esta ruta de aprendizaje, aprenderás sobre los conceptos básicos de programación de Kotlin antes de profundizar en la creación de apps.
Qué compilarás
- Programas cortos en Kotlin que muestran mensajes cuando los ejecutas
Qué aprenderás
- Cómo escribir y ejecutar un programa simple de Kotlin
- Cómo modificar un programa simple para cambiar el resultado
Requisitos
- Una computadora con acceso a Internet y un navegador web
2. Cómo comenzar
En este codelab, explorarás y modificarás programas simples en Kotlin. Se puede entender un programa como una serie de instrucciones para que una computadora o un dispositivo móvil realicen una acción, como mostrar un mensaje a un usuario o calcular el costo de los artículos en un carrito de compras. Las instrucciones paso a paso para lo que la computadora debe hacer se llama código. Cuando modificas el código en un programa, el resultado puede cambiar.
Para escribir y editar tu código, debes usar una herramienta llamada editor de código. Es similar a un editor de texto en el que puedes escribir y editar texto, pero este además proporciona funcionalidades para ayudarte a escribir código con mayor precisión. Por ejemplo, un editor de código muestra sugerencias de autocompletado mientras escribes y mensajes de error cuando el código es incorrecto.
Para practicar los conceptos básicos del lenguaje Kotlin, usarás un editor de código interactivo llamado Playground de Kotlin. Puedes acceder a él desde un navegador web, por lo que no necesitas instalar ningún software en tu computadora. Puedes editar y ejecutar código Kotlin directamente en el Playground de Kotlin y ver el resultado.
Ten en cuenta que no puedes compilar apps para Android dentro del Playground de Kotlin. En rutas posteriores, instalarás y usarás una herramienta llamada Android Studio para escribir y editar el código de tu app para Android.
Ahora que tienes contexto sobre Kotlin, mira el primer programa.
3. Como abrir Playground de Kotlin
En un navegador web de tu computadora, abre Playground de Kotlin.
Deberías ver una página web similar a esta imagen:
Ya existe un código predeterminado propagado en el editor de código. Estas tres líneas de código conforman un programa simple:
fun main() {
println("Hello, world!")
}
Incluso si nunca antes programaste, ¿puedes adivinar qué hace el programa?
En la siguiente sección, verás si tu respuesta es correcta.
4. Cómo ejecutar tu primer programa
Haz clic en para ejecutar el programa.
Cuando haces clic en el botón Ejecutar, suceden muchas cosas. El objetivo del código en el lenguaje de programación Kotlin es que los humanos lo entiendan, de modo que las personas puedan leer, escribir y colaborar más fácilmente en programas de Kotlin. Sin embargo, la computadora no comprende este idioma de inmediato.
Necesitas algo llamado el compilador de Kotlin, que toma el código Kotlin que escribiste, lo analiza línea por línea y lo traduce a algo que la computadora puede comprender. Este proceso se denomina compilación de código.
Si tu código se compila correctamente, el programa se ejecutará. Cuando la computadora ejecuta tu programa, realiza cada una de tus instrucciones. Si alguna vez seguiste una receta de cocina, se podría considerar que realizar cada paso de la receta es equivalente a la ejecución de cada instrucción.
Esta es una captura de pantalla de lo que deberías ver cuando ejecutes tu programa.
En la parte inferior del editor de código, deberías ver un panel en el que se muestra la salida o el resultado de tu programa:
Hello, world!
Genial. El objetivo de este programa es imprimir o mostrar un mensaje que diga Hello, world!
.
¿Cómo funciona? Es necesario que un programa de Kotlin tenga una función principal, que es el lugar específico en tu código donde comienza el compilador Kotlin. La función principal es el punto de entrada, o punto de partida, del programa.
Es posible que te preguntes qué es una función.
5. Partes de una función
Una función es una sección del programa que realiza una tarea específica. Puedes tener muchas funciones en tu programa o solo una.
Cómo definir una función o cómo llamarla
Primero, debes definir una función en tu código. Esto significa que debes especificar todas las instrucciones necesarias para realizar esa tarea.
Una vez definida la función, puedes llamar a esa función para que se puedan realizar o ejecutar las instrucciones dentro de ella.
Esta es una analogía: Escribes instrucciones paso a paso para preparar un pastel de chocolate. Este conjunto de instrucciones puede tener un nombre: bakeChocolateCake
. Cada vez que quieras hornear un pastel, puedes ejecutar las instrucciones de bakeChocolateCake
. Si quieres 3 pasteles, debes ejecutar las instrucciones de bakeChocolateCake
3 veces. Lo primero es definir los pasos y asignarle un nombre, lo que se considera definir la función. Luego, puedes consultar los pasos cada vez que desees que se ejecuten, lo que se considera llamar a la función.
Cómo definir una función
Estas son las partes clave necesarias para definir una función:
- La función necesita un nombre para que puedas llamarla más tarde.
- También puede requerir algunas entradas o información que se debe proporcionar cuando se la llama. La función usa estas entradas para lograr su propósito. Requerir entradas es opcional, algunas funciones no las necesitan.
- La función también tiene un cuerpo que contiene las instrucciones para realizar la tarea.
Para traducir el diagrama anterior al código Kotlin, usa la siguiente sintaxis, o formato, para definir una función. El orden de estos elementos es importante. La palabra "fun" debe ir primero, seguida del nombre de la función, seguida de las entradas entre paréntesis y, luego, llaves.
Observa las partes clave de una función dentro del ejemplo de función principal que viste en el Playground de Kotlin:
- La definición de la función comienza con la palabra
fun
. - Luego, el nombre de la función es
main
. - No hay entradas para la función, por lo que los paréntesis están vacíos.
- Hay una línea de código en el cuerpo de la función,
println("Hello, world!")
, que se encuentra entre las llaves de apertura y cierre de la función.
A continuación, se explica con más detalle cada parte de la función.
Palabra clave de función
Para indicar que estás a punto de definir una función en Kotlin, usa la palabra especial fun
(abreviatura de función) en una línea nueva. Debes escribir fun
exactamente como se muestra, con letras minúsculas. No puedes usar func, función ni otras opciones similares de ortografía porque el compilador de Kotlin no reconocerá lo que quieres decir.
Estas palabras especiales se denominan palabras clave en Kotlin y están reservadas para un propósito específico, como crear una función nueva en Kotlin.
Nombre de la función
Las funciones tienen nombres para que puedan distinguirse unas de otras, de manera similar a la forma en que las personas tienen nombres para identificarse. El nombre de la función se encuentra después de la palabra clave fun
.
Elige un nombre adecuado para la función según su propósito. Por lo general, el nombre es un verbo o una frase verbal. Te recomendamos que evites usar una palabra clave de Kotlin como nombre de la función.
Los nombres de las funciones deben seguir la convención de mayúsculas y minúsculas, en la que la primera palabra del nombre de la función es minúscula. Si el nombre contiene varias palabras, no se escriben espacios entre ellas y todas las demás palabras deben comenzar con mayúscula.
Ejemplos de nombres de funciones:
calculateTip
displayErrorMessage
takePhoto
Entradas de funciones
Observa que el nombre de la función siempre va seguido de paréntesis. Entre estos paréntesis, se enumeran las entradas de la función.
Una entrada es un dato que necesita una función para cumplir su propósito. Cuando defines una función, puedes solicitar que se pasen ciertas entradas en el momento en que se la llama. Si una función no tiene entradas, los paréntesis aparecen vacíos en ()
.
Estos son algunos ejemplos de funciones con una cantidad diferente de entradas:
El siguiente diagrama muestra una función llamada addOne
. El propósito de la función es sumar 1 a un número determinado. Hay una entrada, que es el número específico. Dentro del cuerpo de la función, hay código que agrega 1 al número que se pasó a la función.
En el siguiente ejemplo, hay una función llamada printFullName
. Se requieren dos entradas para la función, una para el nombre y otra para el apellido. El cuerpo de la función imprime el nombre y el apellido en el resultado para mostrar el nombre completo de la persona.
En el último ejemplo, se muestra una función que no requiere que se pasen entradas cuando se la llama. Cuando llamas a la función displayHello()
, se muestra un mensaje de bienvenida en el resultado.
Cuerpo de la función
El cuerpo de la función contiene las instrucciones necesarias para lograr el propósito de la función. Para buscar el cuerpo de la función, busca las líneas de código encerradas entre llaves de apertura y cierre.
Explicación de un programa sencillo
Observa el programa sencillo que viste antes en el codelab.
El programa contiene una función: la función principal. "main" es un nombre de función especial en Kotlin. Cuando escribes tu código en el Playground de Kotlin, debes escribirlo dentro de la función main()
o llamarlo desde la función main()
.
Solo hay una línea de código en el cuerpo de esta función main()
:
println("Hello, world!")
Esta línea de código es una sentencia porque realiza una acción específica, que consiste en imprimir el texto Hello, world!
en el panel de resultados. En concreto, se llama a la función println()
en esta línea de código. println()
es una función que ya está definida en el lenguaje Kotlin. Esto significa que el equipo de ingenieros que creó el lenguaje Kotlin ya escribió la declaración de función println()
. La función requiere una entrada, que es el mensaje que se debe imprimir.
Cuando llames a la función println()
, coloca el texto del mensaje entre paréntesis después del nombre de la función. Asegúrate de encerrar el texto entre comillas, como "Hello, world!"
.
Cuando se ejecuta el programa, el mensaje que se pasó a la función println()
se imprime en el resultado:
Hello, world!
Pruébalo
Ahora, revisa el código original del programa. ¿Puedes modificar el código en el Playground de Kotlin de modo que el resultado muestre este mensaje?
Hello, Android!
6. Cómo modificar tu programa
- Para cambiar el mensaje que se muestra en el resultado, modifica la llamada a función
println()
en la segunda línea del programa. Reemplazaworld
porAndroid
en la funciónprintln()
. Asegúrate de que"Hello, Android!"
aún esté entre comillas y entre paréntesis.
fun main() {
println("Hello, Android!")
}
- Ejecuta el programa.
- El resultado debería mostrar este mensaje:
Hello, Android!
Buen trabajo. Modificaste tu primer programa.
Ahora, ¿puedes cambiar tu código para que el mensaje se imprima dos veces? Consulte el resultado deseado:
Hello, Android! Hello, Android!
Cómo imprimir más de un mensaje
Puedes colocar tantas líneas de instrucciones dentro de una función como necesites para realizar una tarea. Sin embargo, ten en cuenta que solo debe haber una declaración por línea en Kotlin. Si deseas escribir otra declaración, colócala en una línea nueva de la función.
Si quieres cambiar el programa para imprimir varias líneas de texto, haz lo siguiente:
- Copia la sentencia inicial
println()
y pega la segunda en el cuerpo de la función. Las dos sentenciasprintln()
deben estar incluidas en las llaves de la función principal. Ahora, tienes dos declaraciones en el cuerpo de la función.
fun main() {
println("Hello, Android!")
println("Hello, Android!")
}
- Ejecuta el programa.
- Cuando ejecutes el programa, el resultado debería ser el siguiente:
Hello, Android! Hello, Android!
Puedes ver cómo los cambios en el código afectan el resultado.
- Cámbialo para que diga
Hello,
YOUR_NAME
!
.
7. Guía de estilo de Kotlin
A lo largo de este curso, aprenderás sobre las prácticas recomendadas de codificación que debes seguir como desarrollador de Android. Una de estas prácticas es seguir los estándares de codificación de Android creados por Google para el código escrito en Kotlin. La guía completa se denomina guía de estilo y explica cómo se debe dar formato al código en términos de apariencia visual y las convenciones que se deben seguir cuando se escribe el código. Por ejemplo, la guía de estilo incluye recomendaciones sobre el uso de espacios en blanco, las sangrías, los nombres y mucho más.
El objetivo de seguir la guía de estilo es hacer que tu código sea más fácil de leer y más coherente con la manera en que otros desarrolladores de Android escriben su código. Esta coherencia es importante cuando se colabora en proyectos grandes, para que el estilo de código sea el mismo en todos los archivos del proyecto.
A continuación, se incluyen algunas de las recomendaciones de la guía de estilo para lo que aprendiste en Kotlin hasta el momento:
- Los nombres de las funciones deben seguir la convención de mayúsculas y minúsculas, y deben ser verbos o frases verbales.
- Cada sentencia debe estar en su propia línea.
- La llave de apertura debe aparecer al final de la línea donde comienza la función.
- Debe haber un espacio antes de la llave de apertura.
- El cuerpo de la función debe tener una sangría de 4 espacios. No uses caracteres de tabulación para aplicar sangría al código. Escribe 4 espacios.
- La llave de cierre se encuentra en su propia línea después de la última línea de código del cuerpo de la función. La llave de cierre debe alinearse con la palabra clave
fun
al comienzo de la función.
Aprenderás más convenciones de codificación de Android a medida que aprendas más sobre Kotlin. Puedes encontrar la guía de estilo completa aquí. No te preocupes, porque abarca otros temas de Kotlin que todavía no aprendiste.
8. Cómo corregir los errores de tu código
Cuando aprendes un lenguaje humano, existen reglas de sintaxis y gramática para usar correctamente las palabras y formar oraciones. Del mismo modo, para los lenguajes de programación, hay reglas específicas que determinan lo que hace que un código sea válido, es decir, que el código se compile correctamente.
Una parte normal del proceso de codificación implica cometer errores y escribir código no válido por accidente. Como principiante, esta experiencia puede resultarte confusa o abrumadora. Pero no te preocupes, es lógico que ocurra. El código rara vez funciona a la perfección la primera vez que lo escribes. Así como escribir un documento requiere muchos borradores, escribir código puede tomar muchas iteraciones hasta que funcione como se espera.
Si el código no se puede compilar correctamente, se generará un error. Por ejemplo, si hay un error tipográfico, como una comilla o un paréntesis faltantes, el compilador no comprenderá tu código y no podrá traducirlo a pasos para que la computadora lo ejecute. Si tu código no funciona como se espera o ves un mensaje de error en el editor de código, debes volver al código y corregirlo. El proceso de resolver estos errores se denomina solución de problemas.
- Copia y pega el siguiente fragmento de código en el Playground de Kotlin y ejecuta el programa. ¿Qué ves?
fun main() {
println("Today is sunny!)
}
Lo ideal es que se aparezca el mensaje Today is sunny!
. En cambio, en el panel del resultado, verás íconos de signos de exclamación con mensajes de error.
Mensaje de error del Playground de Kotlin
Los mensajes de error comienzan con la palabra "Expecting" porque el compilador de Kotlin "espera" algo, pero no lo encuentra en el código. En este caso, el compilador espera una comilla de cierre y un paréntesis de cierre para el código en la segunda línea de tu programa.
En la sentencia println()
, observa que el mensaje que se mostrará tiene comillas de apertura, pero no de cierre. Si bien el código tiene un paréntesis de cierre, el compilador cree que es parte del texto que se imprimirá porque no hay comillas de cierre antes.
- Agrega la comilla de cierre después del signo de exclamación, antes del paréntesis de cierre.
fun main() {
println("Today is sunny!")
}
La función principal contiene una línea de código, que es una sentencia println()
, donde el texto se encierra entre comillas y se coloca entre paréntesis:"Today is sunny!"
.
- Vuelve a ejecutar el programa.
No debería haber ningún error y el panel de resultados debería mostrar este texto:
Today is sunny!
¡Buen trabajo, corregiste el error! Una vez que obtengas más experiencia para escribir código y solucionar problemas, te darás cuenta de lo importante que es prestar atención al uso de mayúsculas, la ortografía, el espaciado, los símbolos y los nombres al momento de escribir código.
En la siguiente sección, trabajarás en una serie de ejercicios para practicar lo que aprendiste. Las soluciones se proporcionan al final del codelab, pero primero intenta encontrar la respuesta por tu cuenta.
9. Ejercicios
- ¿Puedes leer el código en este programa y adivinar el resultado (sin ejecutarlo en el Playground de Kotlin)?
fun main() {
println("1")
println("2")
println("3")
}
Una vez que adivines, copia y pega este código en el Playground de Kotlin a fin de verificar la respuesta.
- Usa el Playground de Kotlin para crear un programa que genere los siguientes mensajes:
I'm learning Kotlin!
- Copia y pega este programa en el Playground de Kotlin.
fun main() {
println("Tuesday")
println("Thursday")
println("Wednesday")
println("Friday")
println("Monday")
}
Corrige el programa para que imprima este resultado:
Monday Tuesday Wednesday Thursday Friday
A modo de práctica anticipada sobre la solución de problemas, corrige los errores en los siguientes ejercicios. En cada ejercicio, copia el código en el Playground de Kotlin en tu navegador. Intenta ejecutar el programa. Aparecerá un mensaje de error.
- Corrige el error de este programa para que produzca el resultado deseado.
fun main() {
println("Tomorrow is rainy")
Resultado deseado:
Tomorrow is rainy
- Corrige el error de este programa para que produzca el resultado deseado.
fun main() {
printLine("There is a chance of snow")
}
Resultado deseado:
There is a chance of snow
- Corrige el error de este programa para que produzca el resultado deseado.
fun main() {
println("Cloudy") println("Partly Cloudy") println("Windy")
}
Resultado deseado:
Cloudy Partly Cloudy Windy
- Corrige el error de este programa para que produzca el resultado deseado.
fun main() (
println("How's the weather today?")
)
Resultado deseado:
How's the weather today?
Después de completar estos ejercicios, compara tus respuestas con las soluciones de la siguiente sección.
10. Soluciones
- Este es el resultado del programa:
1 2 3
- El código del programa debería verse de la siguiente manera:
fun main() {
println("I'm")
println("learning")
println("Kotlin!")
}
- Este es el código correcto del programa:
fun main() {
println("Monday")
println("Tuesday")
println("Wednesday")
println("Thursday")
println("Friday")
}
- La llave de cierre que indica el final del cuerpo de la función de la función
main
no está en la tercera línea del programa.
Código correcto:
fun main() {
println("Tomorrow is rainy")
}
Resultado:
Tomorrow is rainy
- Cuando ejecutes el programa, verás un error
Unresolved reference: printLine
. Esto se debe a queprintLine()
no es una función reconocida en Kotlin. También puedes ver la parte del código que hace que el error se destaque en rojo en el Playground de Kotlin. Cambia el nombre de la función aprintln
para imprimir una línea de texto en el resultado, lo que corrige el error.
Código correcto:
fun main() {
println("There is a chance of snow")
}
Resultado:
There is a chance of snow
- Cuando ejecutes el programa, verás un error
Unresolved reference: println
. En este mensaje, no se indica directamente cómo solucionar el problema. A veces, esto puede suceder cuando solucionas un error y es necesario que observes el código con más detalle para resolver el comportamiento inesperado.
Después de observar más de cerca, la segunda llamada a la función println()
en el código es roja, lo que indica dónde está el problema. Kotlin espera una sola sentencia en cada línea. En este caso, puedes mover la segunda y tercera llamada a la función println()
en líneas nuevas separadas para resolver el problema.
Código correcto:
fun main() {
println("Cloudy")
println("Partly Cloudy")
println("Windy")
}
Resultado:
Cloudy Partly Cloudy Windy
- Si ejecutas el programa, verás el error
Function 'main' must have a body
. El cuerpo de una función debe encerrarse entre una llave de apertura y una llave de cierre { }, no paréntesis de apertura y cierre ( ).
Código correcto:
fun main() {
println("How's the weather today?")
}
Resultado:
How's the weather today?
11. Conclusión
¡Felicitaciones por completar esta introducción a Kotlin!
Trabajaste con programas simples en Kotlin y los ejecutaste para ver el texto impreso en la salida. Modificaste los programas de diferentes maneras y observaste cómo esos cambios afectaron el resultado. Cuando programas, es normal cometer algunos errores. Es por eso que hoy también aprendiste a solucionar problemas en el código, que es una habilidad importante que te ayudará en el futuro.
Continúa con el siguiente codelab para aprender a usar variables en Kotlin a fin de que puedas crear programas más interesantes.
Resumen
- Un programa de Kotlin requiere una función principal como punto de entrada del programa.
- Para definir una función en Kotlin, usa la palabra clave
fun
seguida del nombre de la función, cualquier entrada encerrada entre paréntesis, seguida del cuerpo de la función entre llaves. - El nombre de una función debe seguir la convención de mayúsculas y minúsculas, y comenzar con una letra minúscula.
- Usa la llamada a la función
println()
para imprimir texto en el resultado. - Consulta la guía de estilo de Kotlin para conocer las convenciones de código y formato que debes seguir cuando codifiques en Kotlin.
- La solución de problemas es el proceso de resolver errores en tu código.