bloque2:juegos
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| bloque2:juegos [2026/09/08 23:08] – fernando | bloque2:juegos [2026/09/11 12:30] (actual) – borrado fernando | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| - | ====== Fundamentos del lenguaje Kotlin ====== | ||
| - | ===== Introducción a Kotlin ===== | ||
| - | |||
| - | Kotlin es un lenguaje de programación moderno desarrollado por **JetBrains**. | ||
| - | |||
| - | Aunque puede utilizarse para diferentes tipos de aplicaciones, | ||
| - | |||
| - | Kotlin es compatible con Java y puede utilizar bibliotecas desarrolladas para Java. | ||
| - | |||
| - | En este tema aprenderemos los fundamentos necesarios para comenzar a programar en Kotlin y utilizarlos posteriormente en el desarrollo de aplicaciones Android. | ||
| - | |||
| - | ===== Contenidos ===== | ||
| - | |||
| - | Mediante esta guía se pretende alcanzar los conocimientos necesarios para: | ||
| - | |||
| - | * Crear y ejecutar un programa básico en Kotlin. | ||
| - | * Comprender la estructura de un programa Kotlin. | ||
| - | * Declarar variables y constantes. | ||
| - | * Diferenciar entre '' | ||
| - | * Utilizar los principales tipos de datos. | ||
| - | * Realizar conversiones entre tipos. | ||
| - | * Utilizar operadores. | ||
| - | * Trabajar con cadenas de texto. | ||
| - | * Tomar decisiones mediante '' | ||
| - | * Repetir instrucciones mediante '' | ||
| - | * Utilizar '' | ||
| - | * Crear y utilizar arrays. | ||
| - | * Trabajar con rangos. | ||
| - | * Crear funciones con y sin parámetros. | ||
| - | * Devolver valores desde una función. | ||
| - | * Utilizar parámetros con valores por defecto. | ||
| - | * Comprender la sintaxis abreviada de las funciones. | ||
| - | |||
| - | ===== Primer programa ===== | ||
| - | |||
| - | El programa más sencillo que podemos escribir en Kotlin es: | ||
| - | |||
| - | <code kotlin> | ||
| - | fun main() { | ||
| - | println(" | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Al ejecutarlo obtenemos: | ||
| - | |||
| - | < | ||
| - | Hola mundo | ||
| - | </ | ||
| - | |||
| - | ==== La función main ==== | ||
| - | |||
| - | La función '' | ||
| - | |||
| - | <code kotlin> | ||
| - | fun main() { | ||
| - | |||
| - | } </ | ||
| - | |||
| - | Todo lo que queramos ejecutar al comenzar el programa puede colocarse dentro de ella. | ||
| - | |||
| - | Por ejemplo: | ||
| - | |||
| - | <code kotlin> | ||
| - | fun main() { | ||
| - | println(" | ||
| - | |||
| - | ``` | ||
| - | println(" | ||
| - | ``` | ||
| - | |||
| - | } </ | ||
| - | |||
| - | ==== Las llaves ==== | ||
| - | |||
| - | Las llaves '' | ||
| - | |||
| - | <code kotlin> | ||
| - | fun main() { | ||
| - | println(" | ||
| - | println(" | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ==== Punto y coma ==== | ||
| - | |||
| - | En Kotlin no es necesario utilizar '';'' | ||
| - | |||
| - | Correcto: | ||
| - | |||
| - | <code kotlin> | ||
| - | println(" | ||
| - | println(" | ||
| - | </ | ||
| - | |||
| - | Aunque el lenguaje permite utilizar punto y coma, no es habitual hacerlo. | ||
| - | |||
| - | ==== Ejercicio 1 ==== | ||
| - | |||
| - | Crea un programa que muestre por pantalla: | ||
| - | |||
| - | < | ||
| - | Bienvenido a Kotlin | ||
| - | Estoy aprendiendo programación | ||
| - | Este es mi primer programa | ||
| - | </ | ||
| - | |||
| - | ===== Sintaxis básica ===== | ||
| - | |||
| - | Kotlin utiliza una sintaxis relativamente sencilla y concisa. | ||
| - | |||
| - | Por ejemplo: | ||
| - | |||
| - | <code kotlin> | ||
| - | val nombre = " | ||
| - | val edad = 20 | ||
| - | |||
| - | println(" | ||
| - | println(" | ||
| - | |||
| - | No es necesario indicar siempre explícitamente el tipo de una variable. | ||
| - | |||
| - | Kotlin puede deducirlo automáticamente. | ||
| - | |||
| - | ==== Mayúsculas y minúsculas ==== | ||
| - | |||
| - | Kotlin distingue entre mayúsculas y minúsculas. | ||
| - | |||
| - | Por ejemplo: | ||
| - | |||
| - | <code kotlin> | ||
| - | val nombre = " | ||
| - | val Nombre = " | ||
| - | </ | ||
| - | |||
| - | '' | ||
| - | |||
| - | Por convenio, debemos utilizar nombres descriptivos y seguir la nomenclatura habitual: | ||
| - | |||
| - | <code kotlin> | ||
| - | val nombreAlumno = " | ||
| - | val numeroDeAlumnos = 25 | ||
| - | </ | ||
| - | |||
| - | Se recomienda utilizar **camelCase** para variables y funciones. | ||
| - | |||
| - | ===== Comentarios ===== | ||
| - | |||
| - | Los comentarios permiten añadir explicaciones al código que no serán ejecutadas. | ||
| - | |||
| - | ==== Comentarios de una línea ==== | ||
| - | |||
| - | <code kotlin> | ||
| - | // Este es un comentario | ||
| - | |||
| - | val edad = 20 </ | ||
| - | |||
| - | También pueden colocarse al final de una instrucción: | ||
| - | |||
| - | <code kotlin> | ||
| - | val edad = 20 // Edad del alumno | ||
| - | </ | ||
| - | |||
| - | ==== Comentarios de varias líneas ==== | ||
| - | |||
| - | <code kotlin> | ||
| - | /* | ||
| - | Este comentario ocupa | ||
| - | varias líneas. | ||
| - | */ | ||
| - | </ | ||
| - | |||
| - | Los comentarios son útiles para documentar el código, pero debemos evitar comentarios innecesarios. | ||
| - | |||
| - | El código debería ser suficientemente claro por sí mismo. | ||
| - | |||
| - | ===== Mostrar información por pantalla ===== | ||
| - | |||
| - | Kotlin proporciona principalmente dos funciones para mostrar información: | ||
| - | |||
| - | * '' | ||
| - | * '' | ||
| - | |||
| - | ==== 6.1. println ==== | ||
| - | |||
| - | '' | ||
| - | |||
| - | <code kotlin> | ||
| - | println(" | ||
| - | println(" | ||
| - | </ | ||
| - | |||
| - | Resultado: | ||
| - | |||
| - | < | ||
| - | Hola | ||
| - | Mundo | ||
| - | </ | ||
| - | |||
| - | ==== print ==== | ||
| - | |||
| - | '' | ||
| - | |||
| - | <code kotlin> | ||
| - | print(" | ||
| - | print(" | ||
| - | </ | ||
| - | |||
| - | Resultado: | ||
| - | |||
| - | < | ||
| - | Hola Mundo | ||
| - | </ | ||
| - | |||
| - | ==== Mostrar variables ==== | ||
| - | |||
| - | <code kotlin> | ||
| - | val nombre = " | ||
| - | |||
| - | println(nombre) </ | ||
| - | |||
| - | También podemos combinar texto y variables. | ||
| - | |||
| - | <code kotlin> | ||
| - | val nombre = " | ||
| - | val edad = 20 | ||
| - | |||
| - | println(" | ||
| - | println(" | ||
| - | |||
| - | Esto se denomina **interpolación de cadenas**. | ||
| - | |||
| - | ===== Variables ===== | ||
| - | |||
| - | Una variable permite almacenar un valor en memoria. | ||
| - | |||
| - | En Kotlin utilizamos principalmente dos palabras clave: | ||
| - | |||
| - | * val | ||
| - | * var | ||
| - | |||
| - | |||
| - | ==== val ==== | ||
| - | |||
| - | Una variable declarada mediante '' | ||
| - | |||
| - | <code kotlin> | ||
| - | val nombre = " | ||
| - | </ | ||
| - | |||
| - | Esto produciría un error: | ||
| - | |||
| - | <code kotlin> | ||
| - | val nombre = " | ||
| - | |||
| - | nombre = " | ||
| - | |||
| - | Una vez asignado ''" | ||
| - | |||
| - | ==== var ==== | ||
| - | |||
| - | Una variable declarada mediante '' | ||
| - | |||
| - | <code kotlin> | ||
| - | var edad = 20 | ||
| - | |||
| - | edad = 21 | ||
| - | edad = 22 </ | ||
| - | |||
| - | ==== ¿Cuándo utilizamos val y cuándo var? ==== | ||
| - | |||
| - | Como regla general: | ||
| - | |||
| - | > **Utiliza '' | ||
| - | |||
| - | Ejemplo: | ||
| - | |||
| - | <code kotlin> | ||
| - | val nombre = " | ||
| - | val fechaNacimiento = 2005 | ||
| - | |||
| - | var edad = 20 | ||
| - | edad = 21 </ | ||
| - | |||
| - | '' | ||
| - | |||
| - | '' | ||
| - | |||
| - | ==== Inferencia de tipos ==== | ||
| - | |||
| - | Kotlin puede deducir el tipo de una variable a partir del valor que almacenamos. | ||
| - | |||
| - | <code kotlin> | ||
| - | val edad = 20 | ||
| - | val nombre = " | ||
| - | val altura = 1.75 | ||
| - | val activo = true | ||
| - | </ | ||
| - | |||
| - | Kotlin deduce: | ||
| - | |||
| - | < | ||
| - | edad → Int | ||
| - | nombre | ||
| - | altura | ||
| - | activo | ||
| - | </ | ||
| - | |||
| - | Esto se denomina **inferencia de tipos**. | ||
| - | |||
| - | ==== Declarar el tipo explícitamente ==== | ||
| - | |||
| - | También podemos indicar el tipo: | ||
| - | |||
| - | <code kotlin> | ||
| - | val edad: Int = 20 | ||
| - | val nombre: String = " | ||
| - | val altura: Double = 1.75 | ||
| - | val activo: Boolean = true | ||
| - | </ | ||
| - | |||
| - | La sintaxis es: | ||
| - | |||
| - | <code kotlin> | ||
| - | val nombreVariable: | ||
| - | </ | ||
| - | |||
| - | ó | ||
| - | |||
| - | <code kotlin> | ||
| - | var nombreVariable: | ||
| - | </ | ||
| - | |||
| - | ==== ¿Qué estilo debemos utilizar? ==== | ||
| - | |||
| - | Normalmente: | ||
| - | |||
| - | <code kotlin> | ||
| - | val edad = 20 | ||
| - | </ | ||
| - | |||
| - | es preferible a: | ||
| - | |||
| - | <code kotlin> | ||
| - | val edad: Int = 20 | ||
| - | </ | ||
| - | |||
| - | cuando el tipo resulta evidente. | ||
| - | |||
| - | Sin embargo, indicar explícitamente el tipo puede mejorar la claridad en determinadas situaciones. | ||
| - | |||
| - | ==== Error frecuente ==== | ||
| - | |||
| - | Confundir '' | ||
| - | |||
| - | <code kotlin> | ||
| - | val numeros = arrayOf(1, 2, 3) | ||
| - | |||
| - | numeros[0] = 10 </ | ||
| - | |||
| - | La referencia '' | ||
| - | |||
| - | La diferencia entre '' | ||
| - | |||
| - | ==== Ejercicios ==== | ||
| - | |||
| - | === Ejercicio 2 === | ||
| - | |||
| - | Declara las siguientes variables utilizando inferencia de tipos: | ||
| - | |||
| - | * Nombre: ''" | ||
| - | * Edad: '' | ||
| - | * Altura: '' | ||
| - | * Es estudiante: '' | ||
| - | |||
| - | === Ejercicio 3 === | ||
| - | |||
| - | Indica cuáles de estas variables deberían declararse como '' | ||
| - | |||
| - | * Nombre de una persona. | ||
| - | * Edad de una persona que va aumentando. | ||
| - | * Número de teléfono. | ||
| - | * Contador de un bucle. | ||
| - | * Precio de un producto. | ||
| - | |||
| - | ===== Tipos de datos ===== | ||
| - | |||
| - | Kotlin dispone de diferentes tipos de datos. | ||
| - | |||
| - | Los más importantes en esta primera etapa son: | ||
| - | |||
| - | ^ Tipo ^ Uso ^ | ||
| - | | Int | Números enteros | | ||
| - | | Long | Números enteros grandes | | ||
| - | | Double | Números decimales | | ||
| - | | Float | Números decimales | | ||
| - | | Boolean | Verdadero / falso | | ||
| - | | Char | Un carácter | | ||
| - | | String | Texto | | ||
| - | |||
| - | ===== Números enteros ===== | ||
| - | |||
| - | ==== Int ==== | ||
| - | |||
| - | '' | ||
| - | |||
| - | <code kotlin> | ||
| - | val edad = 20 | ||
| - | val numeroAlumnos = 25 | ||
| - | val temperatura = -5 | ||
| - | </ | ||
| - | |||
| - | También podemos indicarlo explícitamente: | ||
| - | |||
| - | <code kotlin> | ||
| - | val edad: Int = 20 | ||
| - | </ | ||
| - | |||
| - | ==== Long ==== | ||
| - | |||
| - | '' | ||
| - | |||
| - | <code kotlin> | ||
| - | val poblacion: Long = 48000000 | ||
| - | </ | ||
| - | |||
| - | Podemos utilizar '' | ||
| - | |||
| - | <code kotlin> | ||
| - | val numero = 48000000L | ||
| - | </ | ||
| - | |||
| - | ===== Números decimales ===== | ||
| - | |||
| - | ==== Double ==== | ||
| - | |||
| - | '' | ||
| - | |||
| - | <code kotlin> | ||
| - | val altura = 1.82 | ||
| - | val precio = 19.95 | ||
| - | </ | ||
| - | |||
| - | También podemos indicar el tipo: | ||
| - | |||
| - | <code kotlin> | ||
| - | val altura: Double = 1.82 | ||
| - | </ | ||
| - | |||
| - | ==== Float ==== | ||
| - | |||
| - | Para utilizar '' | ||
| - | |||
| - | <code kotlin> | ||
| - | val temperatura: | ||
| - | </ | ||
| - | |||
| - | En la mayoría de los programas utilizaremos '' | ||
| - | |||
| - | ===== 11. Boolean ===== | ||
| - | |||
| - | Un '' | ||
| - | |||
| - | < | ||
| - | true | ||
| - | false | ||
| - | </ | ||
| - | |||
| - | Ejemplo: | ||
| - | |||
| - | <code kotlin> | ||
| - | val mayorDeEdad = true | ||
| - | val tieneCarnet = false | ||
| - | </ | ||
| - | |||
| - | Los booleanos son especialmente importantes para las estructuras condicionales. | ||
| - | |||
| - | <code kotlin> | ||
| - | val edad = 20 | ||
| - | |||
| - | if (edad >= 18) { | ||
| - | println(" | ||
| - | } </ | ||
| - | |||
| - | ===== Char ===== | ||
| - | |||
| - | '' | ||
| - | |||
| - | <code kotlin> | ||
| - | val letra: Char = ' | ||
| - | </ | ||
| - | |||
| - | Los caracteres se escriben entre comillas simples. | ||
| - | |||
| - | <code kotlin> | ||
| - | ' | ||
| - | ' | ||
| - | '?' | ||
| - | </ | ||
| - | |||
| - | No debemos confundir: | ||
| - | |||
| - | <code kotlin> | ||
| - | val letra = ' | ||
| - | val texto = " | ||
| - | </ | ||
| - | |||
| - | '' | ||
| - | |||
| - | ===== String ===== | ||
| - | |||
| - | '' | ||
| - | |||
| - | <code kotlin> | ||
| - | val nombre = " | ||
| - | val ciudad = " | ||
| - | </ | ||
| - | |||
| - | Los textos se escriben entre comillas dobles. | ||
| - | |||
| - | ==== Interpolación ==== | ||
| - | |||
| - | Kotlin permite introducir variables directamente dentro de un '' | ||
| - | |||
| - | <code kotlin> | ||
| - | val nombre = " | ||
| - | val edad = 20 | ||
| - | |||
| - | println(" | ||
| - | |||
| - | También podemos utilizar expresiones: | ||
| - | |||
| - | <code kotlin> | ||
| - | println(" | ||
| - | </ | ||
| - | |||
| - | ==== Cadenas multilínea ==== | ||
| - | |||
| - | Podemos utilizar tres comillas dobles: | ||
| - | |||
| - | <code kotlin> | ||
| - | val texto = """ | ||
| - | Primera línea | ||
| - | Segunda línea | ||
| - | Tercera línea | ||
| - | """ | ||
| - | </ | ||
| - | |||
| - | ===== Conversión de tipos ===== | ||
| - | |||
| - | Kotlin no realiza automáticamente todas las conversiones numéricas. | ||
| - | |||
| - | Por ejemplo: | ||
| - | |||
| - | <code kotlin> | ||
| - | val numero: Int = 10 | ||
| - | val decimal: Double = numero | ||
| - | </ | ||
| - | |||
| - | No debemos asumir que esta conversión se realizará automáticamente. | ||
| - | |||
| - | Utilizaremos funciones como: | ||
| - | |||
| - | < | ||
| - | toByte() | ||
| - | toShort() | ||
| - | toInt() | ||
| - | toLong() | ||
| - | toFloat() | ||
| - | toDouble() | ||
| - | </ | ||
| - | |||
| - | Ejemplo: | ||
| - | |||
| - | <code kotlin> | ||
| - | val numero = 10 | ||
| - | |||
| - | val decimal = numero.toDouble() </ | ||
| - | |||
| - | Otro ejemplo: | ||
| - | |||
| - | <code kotlin> | ||
| - | val numero = 10.8 | ||
| - | |||
| - | val entero = numero.toInt() | ||
| - | |||
| - | println(entero) </ | ||
| - | |||
| - | Resultado: | ||
| - | |||
| - | < | ||
| - | 10 | ||
| - | </ | ||
| - | |||
| - | ==== Ejercicio 4 ==== | ||
| - | |||
| - | Crea un programa que: | ||
| - | |||
| - | * Declare un número entero. | ||
| - | * Lo convierta a '' | ||
| - | * Muestre ambos valores. | ||
| - | |||
| - | ===== Operadores ===== | ||
| - | |||
| - | Los operadores permiten realizar operaciones con datos. | ||
| - | |||
| - | ===== Operadores aritméticos ===== | ||
| - | |||
| - | ^ Operador ^ Significado ^ | ||
| - | | + | Suma | | ||
| - | | - | Resta | | ||
| - | | * | Multiplicación | | ||
| - | | / | División | | ||
| - | | % | Resto | | ||
| - | |||
| - | Ejemplo: | ||
| - | |||
| - | <code kotlin> | ||
| - | val a = 10 | ||
| - | val b = 3 | ||
| - | |||
| - | println(a + b) | ||
| - | println(a - b) | ||
| - | println(a * b) | ||
| - | println(a / b) | ||
| - | println(a % b) </ | ||
| - | |||
| - | ==== División entera ==== | ||
| - | |||
| - | Si dividimos dos '' | ||
| - | |||
| - | <code kotlin> | ||
| - | val resultado = 10 / 3 | ||
| - | |||
| - | println(resultado) </ | ||
| - | |||
| - | Resultado: | ||
| - | |||
| - | < | ||
| - | 3 | ||
| - | </ | ||
| - | |||
| - | Si queremos obtener un resultado decimal: | ||
| - | |||
| - | <code kotlin> | ||
| - | val resultado = 10.0 / 3.0 | ||
| - | |||
| - | println(resultado) </ | ||
| - | |||
| - | ==== Módulo ==== | ||
| - | |||
| - | El operador '' | ||
| - | |||
| - | <code kotlin> | ||
| - | println(10 % 3) | ||
| - | </ | ||
| - | |||
| - | Resultado: | ||
| - | |||
| - | < | ||
| - | 1 | ||
| - | </ | ||
| - | |||
| - | Es muy útil para determinar si un número es par: | ||
| - | |||
| - | <code kotlin> | ||
| - | val numero = 8 | ||
| - | |||
| - | if (numero % 2 == 0) { | ||
| - | println(" | ||
| - | } </ | ||
| - | |||
| - | ===== Operadores de asignación ===== | ||
| - | |||
| - | Asignación: | ||
| - | |||
| - | <code kotlin> | ||
| - | var puntos = 10 | ||
| - | |||
| - | puntos = 20 </ | ||
| - | |||
| - | También podemos utilizar operadores abreviados: | ||
| - | |||
| - | <code kotlin> | ||
| - | puntos += 5 | ||
| - | puntos -= 5 | ||
| - | puntos *= 2 | ||
| - | puntos /= 2 | ||
| - | puntos %= 2 | ||
| - | </ | ||
| - | |||
| - | Por ejemplo: | ||
| - | |||
| - | <code kotlin> | ||
| - | var puntos = 10 | ||
| - | |||
| - | puntos += 5 </ | ||
| - | |||
| - | equivale a: | ||
| - | |||
| - | <code kotlin> | ||
| - | puntos = puntos + 5 | ||
| - | </ | ||
| - | |||
| - | ===== Incremento y decremento ===== | ||
| - | |||
| - | Podemos incrementar una variable: | ||
| - | |||
| - | <code kotlin> | ||
| - | var contador = 0 | ||
| - | |||
| - | contador++ </ | ||
| - | |||
| - | También podemos utilizar: | ||
| - | |||
| - | <code kotlin> | ||
| - | contador-- | ||
| - | </ | ||
| - | |||
| - | Son especialmente habituales en bucles. | ||
| - | |||
| - | ===== Operadores de comparación ===== | ||
| - | |||
| - | Los principales operadores son: | ||
| - | |||
| - | ^ Operador ^ Significado ^ | ||
| - | | == | Igual | | ||
| - | | != | Distinto | | ||
| - | | > | Mayor | | ||
| - | | < | Menor | | ||
| - | | >= | Mayor o igual | | ||
| - | | <= | Menor o igual | | ||
| - | |||
| - | Ejemplo: | ||
| - | |||
| - | <code kotlin> | ||
| - | val edad = 20 | ||
| - | |||
| - | println(edad >= 18) </ | ||
| - | |||
| - | Resultado: | ||
| - | |||
| - | < | ||
| - | true | ||
| - | </ | ||
| - | |||
| - | ==== Importante: '' | ||
| - | |||
| - | '' | ||
| - | |||
| - | <code kotlin> | ||
| - | var edad = 20 | ||
| - | edad = 21 | ||
| - | </ | ||
| - | |||
| - | '' | ||
| - | |||
| - | <code kotlin> | ||
| - | if (edad == 21) { | ||
| - | println(" | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ===== Operadores lógicos ===== | ||
| - | |||
| - | ^ Operador ^ Significado ^ | ||
| - | | && | AND | | ||
| - | | || | OR | | ||
| - | | ! | NOT | | ||
| - | |||
| - | ==== 19.1. AND ==== | ||
| - | |||
| - | ''&&'' | ||
| - | |||
| - | <code kotlin> | ||
| - | val edad = 20 | ||
| - | val tieneCarnet = true | ||
| - | |||
| - | if (edad >= 18 && tieneCarnet) { | ||
| - | println(" | ||
| - | } </ | ||
| - | |||
| - | ==== OR ==== | ||
| - | |||
| - | '' | ||
| - | |||
| - | <code kotlin> | ||
| - | val esSabado = true | ||
| - | val esDomingo = false | ||
| - | |||
| - | if (esSabado || esDomingo) { | ||
| - | println(" | ||
| - | } </ | ||
| - | |||
| - | ==== NOT ==== | ||
| - | |||
| - | '' | ||
| - | |||
| - | <code kotlin> | ||
| - | val activo = true | ||
| - | |||
| - | println(!activo) </ | ||
| - | |||
| - | Resultado: | ||
| - | |||
| - | < | ||
| - | false | ||
| - | </ | ||
| - | |||
| - | ===== Strings ===== | ||
| - | |||
| - | Las cadenas de texto son uno de los tipos que más utilizaremos en una aplicación. | ||
| - | |||
| - | ==== 20.1. Concatenación ==== | ||
| - | |||
| - | Podemos utilizar '' | ||
| - | |||
| - | <code kotlin> | ||
| - | val nombre = " | ||
| - | val apellido = " | ||
| - | |||
| - | val nombreCompleto = nombre + " " + apellido </ | ||
| - | |||
| - | Sin embargo, normalmente resulta más cómodo utilizar interpolación: | ||
| - | |||
| - | <code kotlin> | ||
| - | val nombreCompleto = " | ||
| - | </ | ||
| - | |||
| - | ==== Longitud de una cadena ==== | ||
| - | |||
| - | Podemos obtener la longitud utilizando '' | ||
| - | |||
| - | <code kotlin> | ||
| - | val nombre = " | ||
| - | |||
| - | println(nombre.length) </ | ||
| - | |||
| - | Resultado: | ||
| - | |||
| - | < | ||
| - | 6 | ||
| - | </ | ||
| - | |||
| - | ==== Acceder a caracteres ==== | ||
| - | |||
| - | Podemos acceder a un carácter mediante su posición: | ||
| - | |||
| - | <code kotlin> | ||
| - | val nombre = " | ||
| - | |||
| - | println(nombre[0]) | ||
| - | println(nombre[1]) </ | ||
| - | |||
| - | Resultado: | ||
| - | |||
| - | < | ||
| - | K | ||
| - | o | ||
| - | </ | ||
| - | |||
| - | Como ocurre con los arrays, los índices comienzan en '' | ||
| - | |||
| - | ==== Ejercicio 5 ==== | ||
| - | |||
| - | Crea un programa que: | ||
| - | |||
| - | * Guarde tu nombre en una variable. | ||
| - | * Muestre el nombre. | ||
| - | * Muestre cuántos caracteres tiene. | ||
| - | * Muestre su primer carácter. | ||
| - | |||
| - | ===== 21. Estructuras condicionales ===== | ||
| - | |||
| - | Las estructuras condicionales permiten ejecutar diferentes instrucciones dependiendo de una condición. | ||
| - | |||
| - | ===== if ===== | ||
| - | |||
| - | Sintaxis: | ||
| - | |||
| - | <code kotlin> | ||
| - | if (condicion) { | ||
| - | // instrucciones | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Ejemplo: | ||
| - | |||
| - | <code kotlin> | ||
| - | val edad = 20 | ||
| - | |||
| - | if (edad >= 18) { | ||
| - | println(" | ||
| - | } </ | ||
| - | |||
| - | ===== if-else ===== | ||
| - | |||
| - | <code kotlin> | ||
| - | val edad = 16 | ||
| - | |||
| - | if (edad >= 18) { | ||
| - | println(" | ||
| - | } else { | ||
| - | println(" | ||
| - | } </ | ||
| - | |||
| - | ===== if-else if-else ===== | ||
| - | |||
| - | Podemos comprobar varias condiciones: | ||
| - | |||
| - | <code kotlin> | ||
| - | val nota = 7 | ||
| - | |||
| - | if (nota >= 9) { | ||
| - | println(" | ||
| - | } else if (nota >= 7) { | ||
| - | println(" | ||
| - | } else if (nota >= 5) { | ||
| - | println(" | ||
| - | } else { | ||
| - | println(" | ||
| - | } </ | ||
| - | |||
| - | ===== if como expresión ===== | ||
| - | |||
| - | Una característica importante de Kotlin es que '' | ||
| - | |||
| - | <code kotlin> | ||
| - | val edad = 20 | ||
| - | |||
| - | val mensaje = if (edad >= 18) { | ||
| - | "Mayor de edad" | ||
| - | } else { | ||
| - | "Menor de edad" | ||
| - | } | ||
| - | |||
| - | println(mensaje) </ | ||
| - | |||
| - | También podemos escribirlo de forma más compacta: | ||
| - | |||
| - | <code kotlin> | ||
| - | val mensaje = if (edad >= 18) "Mayor de edad" else "Menor de edad" | ||
| - | </ | ||
| - | |||
| - | En Kotlin no necesitamos utilizar el operador ternario que existe en otros lenguajes. | ||
| - | |||
| - | ===== Ejercicios de if ===== | ||
| - | |||
| - | === Ejercicio 6 === | ||
| - | |||
| - | Crea un programa que indique si un número es positivo, negativo o cero. | ||
| - | |||
| - | === Ejercicio 7 === | ||
| - | |||
| - | Crea un programa que reciba una edad y muestre: | ||
| - | |||
| - | *Menor de edad. | ||
| - | *Adulto. | ||
| - | *Mayor de 65 años. | ||
| - | |||
| - | === Ejercicio 8 === | ||
| - | |||
| - | Crea un programa que reciba una nota de 0 a 10 y muestre: | ||
| - | |||
| - | *Suspenso: < 5 | ||
| - | *Aprobado: 5–6 | ||
| - | *Notable: 7–8 | ||
| - | *Sobresaliente: | ||
| - | |||
| - | ===== when ===== | ||
| - | |||
| - | '' | ||
| - | |||
| - | Es conceptualmente parecido a '' | ||
| - | |||
| - | Sintaxis: | ||
| - | |||
| - | <code kotlin> | ||
| - | when (valor) { | ||
| - | valor1 -> instrucciones | ||
| - | valor2 -> instrucciones | ||
| - | else -> instrucciones | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Ejemplo: | ||
| - | |||
| - | <code kotlin> | ||
| - | val dia = 3 | ||
| - | |||
| - | when (dia) { | ||
| - | 1 -> println(" | ||
| - | 2 -> println(" | ||
| - | 3 -> println(" | ||
| - | 4 -> println(" | ||
| - | 5 -> println(" | ||
| - | 6 -> println(" | ||
| - | 7 -> println(" | ||
| - | else -> println(" | ||
| - | } </ | ||
| - | |||
| - | ==== Varias posibilidades ==== | ||
| - | |||
| - | Podemos agrupar varios valores: | ||
| - | |||
| - | <code kotlin> | ||
| - | val dia = 6 | ||
| - | |||
| - | when (dia) { | ||
| - | 1, 2, 3, 4, 5 -> println(" | ||
| - | 6, 7 -> println(" | ||
| - | else -> println(" | ||
| - | } </ | ||
| - | |||
| - | ==== when como expresión ==== | ||
| - | |||
| - | '' | ||
| - | |||
| - | <code kotlin> | ||
| - | val nota = 8 | ||
| - | |||
| - | val resultado = when (nota) { | ||
| - | 10 -> " | ||
| - | 9 -> " | ||
| - | 7, 8 -> " | ||
| - | 5, 6 -> " | ||
| - | else -> " | ||
| - | } | ||
| - | |||
| - | println(resultado) </ | ||
| - | |||
| - | ==== when sin argumento ==== | ||
| - | |||
| - | También podemos utilizar '' | ||
| - | |||
| - | <code kotlin> | ||
| - | val edad = 25 | ||
| - | |||
| - | when { | ||
| - | edad < 18 -> println(" | ||
| - | edad < 65 -> println(" | ||
| - | else -> println(" | ||
| - | } </ | ||
| - | |||
| - | ==== ¿Cuándo utilizar if y cuándo when? ==== | ||
| - | |||
| - | Como regla práctica: | ||
| - | |||
| - | * Utiliza '' | ||
| - | * Utiliza '' | ||
| - | |||
| - | ===== Ejercicios de when ===== | ||
| - | |||
| - | === Ejercicio 9 === | ||
| - | |||
| - | Crea un programa que reciba un número del 1 al 12 y muestre el mes correspondiente. | ||
| - | |||
| - | === Ejercicio 10 === | ||
| - | |||
| - | Crea un programa que reciba una opción de menú: | ||
| - | |||
| - | < | ||
| - | 1 → Alta | ||
| - | 2 → Baja | ||
| - | 3 → Modificar | ||
| - | 4 → Consultar | ||
| - | </ | ||
| - | |||
| - | Utiliza '' | ||
| - | |||
| - | ===== Bucle while ===== | ||
| - | |||
| - | Los bucles permiten repetir instrucciones. | ||
| - | |||
| - | '' | ||
| - | |||
| - | Sintaxis: | ||
| - | |||
| - | <code kotlin> | ||
| - | while (condicion) { | ||
| - | // instrucciones | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Ejemplo: | ||
| - | |||
| - | <code kotlin> | ||
| - | var contador = 1 | ||
| - | |||
| - | while (contador <= 5) { | ||
| - | println(contador) | ||
| - | contador++ | ||
| - | } </ | ||
| - | |||
| - | Resultado: | ||
| - | |||
| - | < | ||
| - | 1 | ||
| - | 2 | ||
| - | 3 | ||
| - | 4 | ||
| - | 5 | ||
| - | </ | ||
| - | |||
| - | =====Cuidado con los bucles infinitos ===== | ||
| - | |||
| - | Debemos asegurarnos de que la condición pueda llegar a ser falsa. | ||
| - | |||
| - | Incorrecto: | ||
| - | |||
| - | <code kotlin> | ||
| - | var contador = 1 | ||
| - | |||
| - | while (contador <= 5) { | ||
| - | println(contador) | ||
| - | } </ | ||
| - | |||
| - | '' | ||
| - | |||
| - | Correcto: | ||
| - | |||
| - | <code kotlin> | ||
| - | var contador = 1 | ||
| - | |||
| - | while (contador <= 5) { | ||
| - | println(contador) | ||
| - | contador++ | ||
| - | } </ | ||
| - | |||
| - | ===== do-while ===== | ||
| - | |||
| - | La estructura '' | ||
| - | |||
| - | <code kotlin> | ||
| - | var contador = 1 | ||
| - | |||
| - | do { | ||
| - | println(contador) | ||
| - | contador++ | ||
| - | } while (contador <= 5) </ | ||
| - | |||
| - | La principal diferencia es: | ||
| - | |||
| - | < | ||
| - | while | ||
| - | → comprueba primero | ||
| - | |||
| - | do...while | ||
| - | → ejecuta primero y comprueba después </ | ||
| - | |||
| - | Por tanto, un '' | ||
| - | |||
| - | ===== Ejercicio 11 ===== | ||
| - | |||
| - | Crea un programa que muestre los números del 10 al 1 utilizando '' | ||
| - | |||
| - | ===== break ===== | ||
| - | |||
| - | '' | ||
| - | |||
| - | <code kotlin> | ||
| - | var contador = 1 | ||
| - | |||
| - | while (contador <= 10) { | ||
| - | |||
| - | ``` | ||
| - | if (contador == 5) { | ||
| - | break | ||
| - | } | ||
| - | |||
| - | println(contador) | ||
| - | contador++ | ||
| - | ``` | ||
| - | |||
| - | } </ | ||
| - | |||
| - | Resultado: | ||
| - | |||
| - | < | ||
| - | 1 | ||
| - | 2 | ||
| - | 3 | ||
| - | 4 | ||
| - | </ | ||
| - | |||
| - | ===== continue ===== | ||
| - | |||
| - | '' | ||
| - | |||
| - | <code kotlin> | ||
| - | var contador = 0 | ||
| - | |||
| - | while (contador < 5) { | ||
| - | |||
| - | ``` | ||
| - | contador++ | ||
| - | |||
| - | if (contador == 3) { | ||
| - | continue | ||
| - | } | ||
| - | |||
| - | println(contador) | ||
| - | ``` | ||
| - | |||
| - | } </ | ||
| - | |||
| - | Resultado: | ||
| - | |||
| - | < | ||
| - | 1 | ||
| - | 2 | ||
| - | 4 | ||
| - | 5 | ||
| - | </ | ||
| - | |||
| - | ===== Ejercicio 12 ===== | ||
| - | |||
| - | Crea un programa que recorra los números del 1 al 20 y muestre solamente los números pares. | ||
| - | |||
| - | Hazlo utilizando '' | ||
| - | |||
| - | =====Arrays ===== | ||
| - | |||
| - | Un array permite almacenar varios elementos. | ||
| - | |||
| - | Se puede crear mediante '' | ||
| - | |||
| - | <code kotlin> | ||
| - | val numeros = arrayOf(10, 20, 30, 40, 50) | ||
| - | </ | ||
| - | |||
| - | Los elementos están indexados comenzando por '' | ||
| - | |||
| - | < | ||
| - | Índice: | ||
| - | Valor: | ||
| - | </ | ||
| - | |||
| - | ===== Acceder a elementos ===== | ||
| - | |||
| - | <code kotlin> | ||
| - | val numeros = arrayOf(10, 20, 30) | ||
| - | |||
| - | println(numeros[0]) | ||
| - | println(numeros[1]) | ||
| - | println(numeros[2]) </ | ||
| - | |||
| - | ===== Modificar elementos ===== | ||
| - | |||
| - | Podemos modificar un elemento: | ||
| - | |||
| - | <code kotlin> | ||
| - | val numeros = arrayOf(10, 20, 30) | ||
| - | |||
| - | numeros[0] = 100 </ | ||
| - | |||
| - | Ahora el array contiene: | ||
| - | |||
| - | < | ||
| - | 100, 20, 30 | ||
| - | </ | ||
| - | |||
| - | ===== Tamaño de un array ===== | ||
| - | |||
| - | Utilizamos '' | ||
| - | |||
| - | <code kotlin> | ||
| - | val numeros = arrayOf(10, 20, 30, 40) | ||
| - | |||
| - | println(numeros.size) </ | ||
| - | |||
| - | Resultado: | ||
| - | |||
| - | < | ||
| - | 4 | ||
| - | </ | ||
| - | |||
| - | ===== Arrays de Strings ===== | ||
| - | |||
| - | <code kotlin> | ||
| - | val nombres = arrayOf(" | ||
| - | </ | ||
| - | |||
| - | Podemos acceder a sus elementos: | ||
| - | |||
| - | <code kotlin> | ||
| - | println(nombres[0]) | ||
| - | </ | ||
| - | |||
| - | ===== Comprobar si existe un elemento ===== | ||
| - | |||
| - | Podemos utilizar '' | ||
| - | |||
| - | <code kotlin> | ||
| - | val nombres = arrayOf(" | ||
| - | |||
| - | if (" | ||
| - | println(" | ||
| - | } </ | ||
| - | |||
| - | ===== Error de índice ===== | ||
| - | |||
| - | No podemos acceder a una posición que no existe. | ||
| - | |||
| - | <code kotlin> | ||
| - | val numeros = arrayOf(10, 20, 30) | ||
| - | |||
| - | println(numeros[3]) </ | ||
| - | |||
| - | El último índice válido es '' | ||
| - | |||
| - | Los índices van de: | ||
| - | |||
| - | < | ||
| - | 0 hasta size - 1 | ||
| - | </ | ||
| - | |||
| - | ===== Ejercicio 13 ===== | ||
| - | |||
| - | Crea un array con cinco nombres. | ||
| - | |||
| - | Muestra: | ||
| - | |||
| - | *El primer nombre. | ||
| - | *El último nombre. | ||
| - | *El número de elementos. | ||
| - | |||
| - | ===== Bucle for ===== | ||
| - | |||
| - | '' | ||
| - | |||
| - | Ejemplo: | ||
| - | |||
| - | <code kotlin> | ||
| - | val nombres = arrayOf(" | ||
| - | |||
| - | for (nombre in nombres) { | ||
| - | println(nombre) | ||
| - | } </ | ||
| - | |||
| - | Resultado: | ||
| - | |||
| - | < | ||
| - | Ana | ||
| - | Luis | ||
| - | Marta | ||
| - | </ | ||
| - | |||
| - | ===== Recorrer números ===== | ||
| - | |||
| - | <code kotlin> | ||
| - | for (numero in 1..5) { | ||
| - | println(numero) | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ===== Recorrer un String ===== | ||
| - | |||
| - | Los caracteres de una cadena también pueden recorrerse: | ||
| - | |||
| - | <code kotlin> | ||
| - | val nombre = " | ||
| - | |||
| - | for (letra in nombre) { | ||
| - | println(letra) | ||
| - | } </ | ||
| - | |||
| - | ===== Índices de un array ===== | ||
| - | |||
| - | Podemos utilizar '' | ||
| - | |||
| - | <code kotlin> | ||
| - | val nombres = arrayOf(" | ||
| - | |||
| - | for (i in nombres.indices) { | ||
| - | println(nombres[i]) | ||
| - | } </ | ||
| - | |||
| - | También podemos obtener índice y valor mediante '' | ||
| - | |||
| - | <code kotlin> | ||
| - | for ((indice, nombre) in nombres.withIndex()) { | ||
| - | println(" | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ===== Ejercicio 14 ===== | ||
| - | |||
| - | Crea un array de cinco números y utiliza un '' | ||
| - | |||
| - | ===== Rangos ===== | ||
| - | |||
| - | Kotlin dispone de una sintaxis específica para crear rangos. | ||
| - | |||
| - | ===== Rango ascendente ===== | ||
| - | |||
| - | <code kotlin> | ||
| - | 1..5 | ||
| - | </ | ||
| - | |||
| - | Representa: | ||
| - | |||
| - | < | ||
| - | 1, 2, 3, 4, 5 | ||
| - | </ | ||
| - | |||
| - | Ejemplo: | ||
| - | |||
| - | <code kotlin> | ||
| - | for (i in 1..5) { | ||
| - | println(i) | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ===== Rango descendente ===== | ||
| - | |||
| - | Utilizamos '' | ||
| - | |||
| - | <code kotlin> | ||
| - | for (i in 5 downTo 1) { | ||
| - | println(i) | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Resultado: | ||
| - | |||
| - | < | ||
| - | 5 | ||
| - | 4 | ||
| - | 3 | ||
| - | 2 | ||
| - | 1 | ||
| - | </ | ||
| - | |||
| - | ===== Saltos mediante step ===== | ||
| - | |||
| - | <code kotlin> | ||
| - | for (i in 0..10 step 2) { | ||
| - | println(i) | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Resultado: | ||
| - | |||
| - | < | ||
| - | 0 | ||
| - | 2 | ||
| - | 4 | ||
| - | 6 | ||
| - | 8 | ||
| - | 10 | ||
| - | </ | ||
| - | |||
| - | ===== Rango sin incluir el límite superior ===== | ||
| - | |||
| - | Podemos utilizar '' | ||
| - | |||
| - | <code kotlin> | ||
| - | for (i in 1..<5) { | ||
| - | println(i) | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Resultado: | ||
| - | |||
| - | < | ||
| - | 1 | ||
| - | 2 | ||
| - | 3 | ||
| - | 4 | ||
| - | </ | ||
| - | |||
| - | Esto resulta especialmente útil para trabajar con índices. | ||
| - | |||
| - | ===== Ejercicio 15 ===== | ||
| - | |||
| - | Realiza los siguientes recorridos: | ||
| - | |||
| - | *Números del 1 al 10. | ||
| - | *Números del 10 al 1. | ||
| - | *Números pares del 0 al 20. | ||
| - | *Números impares del 1 al 19. | ||
| - | |||
| - | ===== Funciones ===== | ||
| - | |||
| - | Una función es un bloque de código que realiza una tarea concreta. | ||
| - | |||
| - | Las funciones se declaran mediante la palabra clave '' | ||
| - | |||
| - | ===== Crear una función ===== | ||
| - | |||
| - | <code kotlin> | ||
| - | fun saludar() { | ||
| - | println(" | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Para ejecutar la función: | ||
| - | |||
| - | <code kotlin> | ||
| - | saludar() | ||
| - | </ | ||
| - | |||
| - | Programa completo: | ||
| - | |||
| - | <code kotlin> | ||
| - | fun saludar() { | ||
| - | println(" | ||
| - | } | ||
| - | |||
| - | fun main() { | ||
| - | saludar() | ||
| - | } </ | ||
| - | |||
| - | ===== ¿Por qué utilizar funciones? ===== | ||
| - | |||
| - | Las funciones permiten: | ||
| - | |||
| - | *Dividir un programa grande en partes pequeñas. | ||
| - | *Evitar repetir código. | ||
| - | *Mejorar la legibilidad. | ||
| - | *Facilitar el mantenimiento. | ||
| - | *Reutilizar código. | ||
| - | *Separar responsabilidades. | ||
| - | |||
| - | Por ejemplo, en lugar de: | ||
| - | |||
| - | <code kotlin> | ||
| - | println(" | ||
| - | println(" | ||
| - | println(" | ||
| - | </ | ||
| - | |||
| - | podemos crear: | ||
| - | |||
| - | <code kotlin> | ||
| - | fun mostrarBienvenida() { | ||
| - | println(" | ||
| - | } | ||
| - | |||
| - | fun main() { | ||
| - | mostrarBienvenida() | ||
| - | mostrarBienvenida() | ||
| - | mostrarBienvenida() | ||
| - | } </ | ||
| - | |||
| - | ===== Parámetros ===== | ||
| - | |||
| - | Una función puede recibir información mediante parámetros. | ||
| - | |||
| - | <code kotlin> | ||
| - | fun saludar(nombre: | ||
| - | println(" | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Podemos llamarla: | ||
| - | |||
| - | <code kotlin> | ||
| - | saludar(" | ||
| - | saludar(" | ||
| - | </ | ||
| - | |||
| - | Resultado: | ||
| - | |||
| - | < | ||
| - | Hola Ana | ||
| - | Hola Luis | ||
| - | </ | ||
| - | |||
| - | ===== Varios parámetros ===== | ||
| - | |||
| - | <code kotlin> | ||
| - | fun presentar(nombre: | ||
| - | println(" | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Llamada: | ||
| - | |||
| - | <code kotlin> | ||
| - | presentar(" | ||
| - | </ | ||
| - | |||
| - | Cada parámetro tiene: | ||
| - | |||
| - | < | ||
| - | nombre: Tipo | ||
| - | </ | ||
| - | |||
| - | Por ejemplo: | ||
| - | |||
| - | <code kotlin> | ||
| - | nombre: String | ||
| - | edad: Int | ||
| - | altura: Double | ||
| - | </ | ||
| - | |||
| - | ===== Valor de retorno ===== | ||
| - | |||
| - | Una función puede devolver un valor. | ||
| - | |||
| - | <code kotlin> | ||
| - | fun sumar(a: Int, b: Int): Int { | ||
| - | return a + b | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | La parte: | ||
| - | |||
| - | < | ||
| - | : Int | ||
| - | </ | ||
| - | |||
| - | indica que la función devuelve un '' | ||
| - | |||
| - | Podemos guardar el resultado: | ||
| - | |||
| - | <code kotlin> | ||
| - | val resultado = sumar(10, 20) | ||
| - | |||
| - | println(resultado) </ | ||
| - | |||
| - | Resultado: | ||
| - | |||
| - | < | ||
| - | 30 | ||
| - | </ | ||
| - | |||
| - | ===== return ===== | ||
| - | |||
| - | La palabra '' | ||
| - | |||
| - | <code kotlin> | ||
| - | fun multiplicar(a: | ||
| - | return a * b | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ===== Funciones sin retorno útil ===== | ||
| - | |||
| - | Una función que no devuelve un valor útil puede escribirse: | ||
| - | |||
| - | <code kotlin> | ||
| - | fun mostrarMensaje() { | ||
| - | println(" | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Internamente su retorno es '' | ||
| - | |||
| - | También podríamos escribir: | ||
| - | |||
| - | <code kotlin> | ||
| - | fun mostrarMensaje(): | ||
| - | println(" | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | pero la primera forma es la habitual. | ||
| - | |||
| - | ===== Funciones de una sola expresión ===== | ||
| - | |||
| - | Cuando una función solamente tiene una expresión podemos utilizar una sintaxis abreviada. | ||
| - | |||
| - | En lugar de: | ||
| - | |||
| - | <code kotlin> | ||
| - | fun sumar(a: Int, b: Int): Int { | ||
| - | return a + b | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | podemos escribir: | ||
| - | |||
| - | <code kotlin> | ||
| - | fun sumar(a: Int, b: Int): Int = a + b | ||
| - | </ | ||
| - | |||
| - | Incluso podemos dejar que Kotlin deduzca el tipo de retorno: | ||
| - | |||
| - | <code kotlin> | ||
| - | fun sumar(a: Int, b: Int) = a + b | ||
| - | </ | ||
| - | |||
| - | Otro ejemplo: | ||
| - | |||
| - | <code kotlin> | ||
| - | fun cuadrado(numero: | ||
| - | </ | ||
| - | |||
| - | Esta sintaxis es habitual en Kotlin. | ||
| - | |||
| - | ===== Parámetros con valores por defecto ===== | ||
| - | |||
| - | Podemos proporcionar un valor por defecto a un parámetro. | ||
| - | |||
| - | <code kotlin> | ||
| - | fun saludar(nombre: | ||
| - | println(" | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Ahora podemos hacer: | ||
| - | |||
| - | <code kotlin> | ||
| - | saludar() | ||
| - | </ | ||
| - | |||
| - | Resultado: | ||
| - | |||
| - | < | ||
| - | Hola usuario | ||
| - | </ | ||
| - | |||
| - | También podemos proporcionar nuestro propio valor: | ||
| - | |||
| - | <code kotlin> | ||
| - | saludar(" | ||
| - | </ | ||
| - | |||
| - | Resultado: | ||
| - | |||
| - | < | ||
| - | Hola Ana | ||
| - | </ | ||
| - | |||
| - | ===== Argumentos con nombre ===== | ||
| - | |||
| - | Podemos indicar explícitamente qué parámetro estamos proporcionando: | ||
| - | |||
| - | <code kotlin> | ||
| - | fun presentar(nombre: | ||
| - | println(" | ||
| - | } | ||
| - | |||
| - | presentar(nombre = " | ||
| - | |||
| - | También podemos cambiar el orden: | ||
| - | |||
| - | <code kotlin> | ||
| - | presentar(edad = 20, nombre = " | ||
| - | </ | ||
| - | |||
| - | Esto puede hacer que las llamadas a funciones sean más fáciles de leer. | ||
| - | |||
| - | ===== Ejercicios de funciones ===== | ||
| - | |||
| - | === Ejercicio 16 === | ||
| - | |||
| - | Crea una función: | ||
| - | |||
| - | < | ||
| - | saludar() | ||
| - | </ | ||
| - | |||
| - | que muestre un saludo. | ||
| - | |||
| - | === Ejercicio 17 === | ||
| - | |||
| - | Crea una función: | ||
| - | |||
| - | < | ||
| - | saludar(nombre) | ||
| - | </ | ||
| - | |||
| - | que reciba un nombre y muestre: | ||
| - | |||
| - | < | ||
| - | Hola, nombre | ||
| - | </ | ||
| - | |||
| - | === Ejercicio 18 === | ||
| - | |||
| - | Crea una función '' | ||
| - | |||
| - | === Ejercicio 19 === | ||
| - | |||
| - | Crea las siguientes funciones: | ||
| - | |||
| - | < | ||
| - | restar() | ||
| - | multiplicar() | ||
| - | dividir() | ||
| - | </ | ||
| - | |||
| - | Cada función debe recibir dos números y devolver el resultado correspondiente. | ||
| - | |||
| - | === Ejercicio 20 === | ||
| - | |||
| - | Crea una función que reciba una edad y devuelva '' | ||
| - | |||
| - | ===== Buenas prácticas ===== | ||
| - | |||
| - | Desde el principio debemos acostumbrarnos a escribir código claro. | ||
| - | |||
| - | ==== Utilizar nombres descriptivos ==== | ||
| - | |||
| - | Evitar: | ||
| - | |||
| - | <code kotlin> | ||
| - | val x = 20 | ||
| - | val y = " | ||
| - | </ | ||
| - | |||
| - | Preferir: | ||
| - | |||
| - | <code kotlin> | ||
| - | val edad = 20 | ||
| - | val nombre = " | ||
| - | </ | ||
| - | |||
| - | ==== Utilizar val cuando sea posible ==== | ||
| - | |||
| - | Preferir: | ||
| - | |||
| - | <code kotlin> | ||
| - | val nombre = " | ||
| - | </ | ||
| - | |||
| - | frente a: | ||
| - | |||
| - | <code kotlin> | ||
| - | var nombre = " | ||
| - | </ | ||
| - | |||
| - | si no necesitamos modificar la variable. | ||
| - | |||
| - | ==== Funciones pequeñas ==== | ||
| - | |||
| - | Una función debería realizar una tarea concreta. | ||
| - | |||
| - | Evitar funciones enormes que hagan muchas cosas diferentes. | ||
| - | |||
| - | Por ejemplo: | ||
| - | |||
| - | <code kotlin> | ||
| - | fun calcularMedia(...) | ||
| - | </ | ||
| - | |||
| - | debería encargarse de calcular una media. | ||
| - | |||
| - | Otra función: | ||
| - | |||
| - | <code kotlin> | ||
| - | fun mostrarResultado(...) | ||
| - | </ | ||
| - | |||
| - | puede encargarse de mostrar el resultado. | ||
| - | |||
| - | ==== Evitar repetir código ==== | ||
| - | |||
| - | Si escribimos varias veces el mismo código, probablemente podamos convertirlo en una función. | ||
| - | |||
| - | ===== Ejemplo integrador 1 ===== | ||
| - | |||
| - | El siguiente programa combina variables, tipos, operadores y condicionales. | ||
| - | |||
| - | <code kotlin> | ||
| - | fun main() { | ||
| - | |||
| - | ``` | ||
| - | val nombre = " | ||
| - | val nota1 = 7.0 | ||
| - | val nota2 = 8.0 | ||
| - | val nota3 = 6.0 | ||
| - | |||
| - | val media = (nota1 + nota2 + nota3) / 3 | ||
| - | |||
| - | println(" | ||
| - | println(" | ||
| - | if (media >= 5) { | ||
| - | println(" | ||
| - | } else { | ||
| - | println(" | ||
| - | } | ||
| - | ``` | ||
| - | |||
| - | } </ | ||
| - | |||
| - | ===== Ejemplo integrador 2 — Funciones ===== | ||
| - | |||
| - | Podemos mejorar el programa anterior separando responsabilidades. | ||
| - | |||
| - | <code kotlin> | ||
| - | fun calcularMedia(nota1: | ||
| - | return (nota1 + nota2 + nota3) / 3 | ||
| - | } | ||
| - | |||
| - | fun obtenerResultado(media: | ||
| - | |||
| - | ``` | ||
| - | return if (media >= 5) { | ||
| - | " | ||
| - | } else { | ||
| - | " | ||
| - | } | ||
| - | ``` | ||
| - | |||
| - | } | ||
| - | |||
| - | fun main() { | ||
| - | |||
| - | ``` | ||
| - | val nombre = " | ||
| - | |||
| - | val media = calcularMedia( | ||
| - | 7.0, | ||
| - | 8.0, | ||
| - | 6.0 | ||
| - | ) | ||
| - | |||
| - | val resultado = obtenerResultado(media) | ||
| - | |||
| - | println(" | ||
| - | println(" | ||
| - | println(" | ||
| - | ``` | ||
| - | |||
| - | } </ | ||
| - | |||
| - | Aquí estamos utilizando: | ||
| - | |||
| - | *Variables. | ||
| - | *'' | ||
| - | *'' | ||
| - | *Operadores aritméticos. | ||
| - | *'' | ||
| - | *'' | ||
| - | *Interpolación. | ||
| - | *Funciones. | ||
| - | *Parámetros. | ||
| - | *Valores de retorno. | ||
| - | *'' | ||
| - | |||
| - | ===== Ejemplo integrador 3 — Arrays y bucles ===== | ||
| - | |||
| - | <code kotlin> | ||
| - | fun calcularMedia(notas: | ||
| - | |||
| - | ``` | ||
| - | var suma = 0 | ||
| - | |||
| - | for (nota in notas) { | ||
| - | suma += nota | ||
| - | } | ||
| - | |||
| - | return suma.toDouble() / notas.size | ||
| - | ``` | ||
| - | |||
| - | } | ||
| - | |||
| - | fun main() { | ||
| - | |||
| - | ``` | ||
| - | val notas = arrayOf(7, 8, 6, 9) | ||
| - | |||
| - | val media = calcularMedia(notas) | ||
| - | |||
| - | println(" | ||
| - | |||
| - | for (nota in notas) { | ||
| - | println(nota) | ||
| - | } | ||
| - | |||
| - | println(" | ||
| - | ``` | ||
| - | |||
| - | } </ | ||
| - | |||
| - | Este ejemplo introduce una idea muy importante: | ||
| - | |||
| - | > Las funciones permiten encapsular una operación para poder utilizarla desde diferentes lugares del programa. | ||
| - | |||
| - | ===== Práctica final ===== | ||
| - | |||
| - | Crear un programa para gestionar las notas de un alumno. | ||
| - | |||
| - | El programa debe: | ||
| - | |||
| - | *Guardar el nombre del alumno. | ||
| - | *Guardar sus notas en un array. | ||
| - | *Mostrar todas las notas. | ||
| - | *Calcular la suma de las notas. | ||
| - | *Calcular la media. | ||
| - | *Indicar si está aprobado o suspenso. | ||
| - | |||
| - | El programa debe utilizar obligatoriamente: | ||
| - | |||
| - | *'' | ||
| - | *'' | ||
| - | *'' | ||
| - | *'' | ||
| - | *funciones | ||
| - | *'' | ||
| - | *operadores aritméticos | ||
| - | *interpolación de Strings | ||
| - | |||
| - | ==== Ampliación ==== | ||
| - | |||
| - | Modificar el programa para mostrar además: | ||
| - | |||
| - | *Nota máxima. | ||
| - | *Nota mínima. | ||
| - | *Número de aprobados. | ||
| - | *Número de suspensos. | ||
| - | |||
| - | ===== Ejercicios de repaso ===== | ||
| - | |||
| - | === Ejercicio 21 — Número positivo === | ||
| - | |||
| - | Pide un número y determina si es positivo, negativo o cero. | ||
| - | |||
| - | === Ejercicio 22 — Par o impar === | ||
| - | |||
| - | Pide un número y determina si es par o impar. | ||
| - | |||
| - | === Ejercicio 23 — Mayor de tres números === | ||
| - | |||
| - | Pide tres números y muestra cuál es el mayor. | ||
| - | |||
| - | === Ejercicio 24 — Calculadora === | ||
| - | |||
| - | Crea una calculadora sencilla. | ||
| - | |||
| - | Debe recibir: | ||
| - | |||
| - | *Dos números. | ||
| - | *Una operación ('' | ||
| - | |||
| - | Utiliza '' | ||
| - | |||
| - | === Ejercicio 25 — Tabla de multiplicar === | ||
| - | |||
| - | Pide un número y muestra su tabla de multiplicar del 1 al 10. | ||
| - | |||
| - | === Ejercicio 26 — Contador === | ||
| - | |||
| - | Muestra los números del 1 al 100. | ||
| - | |||
| - | Después modifica el programa para mostrar solamente los múltiplos de 5. | ||
| - | |||
| - | === Ejercicio 27 — Array de notas === | ||
| - | |||
| - | Crea un array con 10 notas. | ||
| - | |||
| - | Calcula: | ||
| - | |||
| - | *La media. | ||
| - | *La nota máxima. | ||
| - | *La nota mínima. | ||
| - | *Cuántas notas están aprobadas. | ||
| - | |||
| - | === Ejercicio 28 — Funciones matemáticas === | ||
| - | |||
| - | Crea las siguientes funciones: | ||
| - | |||
| - | < | ||
| - | esPar(numero) | ||
| - | esPositivo(numero) | ||
| - | calcularMedia(notas) | ||
| - | obtenerMaximo(notas) | ||
| - | obtenerMinimo(notas) | ||
| - | </ | ||
| - | |||
| - | Utiliza estas funciones desde '' | ||
| - | |||
| - | ===== Práctica final del tema ===== | ||
| - | |||
| - | Crear un programa de gestión básica de alumnos. | ||
| - | |||
| - | El programa debe almacenar información de varios alumnos utilizando arrays. | ||
| - | |||
| - | Para cada alumno se debe disponer de: | ||
| - | |||
| - | < | ||
| - | nombre | ||
| - | edad | ||
| - | nota | ||
| - | </ | ||
| - | |||
| - | El programa debe mostrar un menú: | ||
| - | |||
| - | < | ||
| - | 1. Mostrar alumnos | ||
| - | 2. Mostrar aprobados | ||
| - | 3. Mostrar suspensos | ||
| - | 4. Calcular nota media | ||
| - | 5. Salir | ||
| - | </ | ||
| - | |||
| - | Utilizar '' | ||
| - | |||
| - | El programa debe utilizar: | ||
| - | |||
| - | *Variables. | ||
| - | *Tipos básicos. | ||
| - | *Arrays. | ||
| - | *'' | ||
| - | *'' | ||
| - | *'' | ||
| - | *'' | ||
| - | *Funciones. | ||
| - | *Operadores. | ||
| - | *Strings. | ||
| - | *Rangos cuando sean necesarios. | ||
| - | |||
| - | ===== Resumen de sintaxis ===== | ||
| - | |||
| - | ==== Variables ==== | ||
| - | |||
| - | <code kotlin> | ||
| - | val nombre = " | ||
| - | var edad = 20 | ||
| - | </ | ||
| - | |||
| - | ==== Tipos explícitos ==== | ||
| - | |||
| - | <code kotlin> | ||
| - | val edad: Int = 20 | ||
| - | val nombre: String = " | ||
| - | val altura: Double = 1.80 | ||
| - | val activo: Boolean = true | ||
| - | val letra: Char = ' | ||
| - | </ | ||
| - | |||
| - | ==== Salida ==== | ||
| - | |||
| - | <code kotlin> | ||
| - | print(" | ||
| - | println(" | ||
| - | </ | ||
| - | |||
| - | ==== Interpolación ==== | ||
| - | |||
| - | <code kotlin> | ||
| - | println(" | ||
| - | println(" | ||
| - | </ | ||
| - | |||
| - | ==== Conversión ==== | ||
| - | |||
| - | <code kotlin> | ||
| - | numero.toInt() | ||
| - | numero.toDouble() | ||
| - | numero.toLong() | ||
| - | numero.toFloat() | ||
| - | </ | ||
| - | |||
| - | ==== Condicional ==== | ||
| - | |||
| - | <code kotlin> | ||
| - | if (condicion) { | ||
| - | // ... | ||
| - | } else { | ||
| - | // ... | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ==== when ==== | ||
| - | |||
| - | <code kotlin> | ||
| - | when (valor) { | ||
| - | 1 -> println(" | ||
| - | 2 -> println(" | ||
| - | else -> println(" | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ==== while ==== | ||
| - | |||
| - | <code kotlin> | ||
| - | while (condicion) { | ||
| - | // ... | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ==== do-while ==== | ||
| - | |||
| - | <code kotlin> | ||
| - | do { | ||
| - | // ... | ||
| - | } while (condicion) | ||
| - | </ | ||
| - | |||
| - | ==== for ==== | ||
| - | |||
| - | <code kotlin> | ||
| - | for (elemento in elementos) { | ||
| - | // ... | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ==== Rangos ==== | ||
| - | |||
| - | <code kotlin> | ||
| - | 1..10 | ||
| - | 10 downTo 1 | ||
| - | 1..10 step 2 | ||
| - | 1..<10 | ||
| - | </ | ||
| - | |||
| - | ==== Arrays ==== | ||
| - | |||
| - | <code kotlin> | ||
| - | val numeros = arrayOf(10, 20, 30) | ||
| - | |||
| - | println(numeros[0]) | ||
| - | |||
| - | numeros[0] = 100 | ||
| - | |||
| - | println(numeros.size) </ | ||
| - | |||
| - | ==== Función ==== | ||
| - | |||
| - | <code kotlin> | ||
| - | fun saludar() { | ||
| - | println(" | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ==== Función con parámetros ==== | ||
| - | |||
| - | <code kotlin> | ||
| - | fun saludar(nombre: | ||
| - | println(" | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ==== Función con retorno ==== | ||
| - | |||
| - | <code kotlin> | ||
| - | fun sumar(a: Int, b: Int): Int { | ||
| - | return a + b | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ==== Función de expresión única ==== | ||
| - | |||
| - | <code kotlin> | ||
| - | fun sumar(a: Int, b: Int) = a + b | ||
| - | </ | ||
| - | |||
| - | ===== Conclusiones ===== | ||
| - | |||
| - | Antes de pasar a las siguientes características de Kotlin deberías poder escribir, sin consultar continuamente la sintaxis: | ||
| - | |||
| - | * Un programa con '' | ||
| - | * Variables con '' | ||
| - | * Variables con tipos explícitos. | ||
| - | * Strings e interpolación. | ||
| - | * Operaciones aritméticas. | ||
| - | * Comparaciones. | ||
| - | * Condiciones mediante '' | ||
| - | * Selecciones mediante '' | ||
| - | * Bucles '' | ||
| - | * Bucles '' | ||
| - | * Bucles '' | ||
| - | * '' | ||
| - | * Arrays. | ||
| - | * Rangos. | ||
| - | * Funciones con parámetros. | ||
| - | * Funciones con valores de retorno. | ||
| - | |||
| - | El objetivo no es memorizar toda la sintaxis, sino **ser capaz de resolver problemas sencillos utilizando estas herramientas**. | ||
| - | |||
| - | ===== Mapa conceptual ===== | ||
| - | |||
| - | < | ||
| - | KOTLIN | ||
| - | │ | ||
| - | ├── PROGRAMA | ||
| - | │ | ||
| - | │ | ||
| - | ├── VARIABLES | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | ├── TIPOS | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | ├── OPERADORES | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | ├── CONTROL DE FLUJO | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | ├── ARRAYS | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | ├── BUCLES | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | └── FUNCIONES | ||
| - | ├── crear | ||
| - | ├── llamar | ||
| - | ├── parámetros | ||
| - | ├── retorno | ||
| - | ├── return | ||
| - | ├── valores por defecto | ||
| - | ├── argumentos con nombre | ||
| - | └── expresión única | ||
| - | </ | ||
bloque2/juegos.1788901726.txt.gz · Última modificación: por fernando
