Entradas

Mostrando las entradas etiquetadas como ejemplos

Ejemplo: JavaScript desde Kotlin

Imagen
Página web desarrollada con KotlinJS con ejemplos de: Cómo utilizar botones HTML para producir acciones (abrir ventanas de alerta, cambios de estilo, actualizar variables). Insertar código JavaScript con la función js("..."). Declarar de forma segura API de JavaScript con la palabra reservada external .

Ejemplo de Kotlin JS para desarollo web

Imagen
Un ejemplo simple, similar al código que vimos en la entrada Ejemplo: Html Builder (KotlinJS) , sobre cómo usar Kotlin en el desarrollo web en lugar de Javascript. Adaptación del código Kotlin JS for Web development disponible en el repositorio kotlinjs-example .

Ejemplo: Html Builder (KotlinJS)

Imagen
Ejemplo para crear una web html con Kotlin ilustrando y ampliando el contenido expuesto en la entrada Introducción a KotlinJS: Desarrollo web con Kotlin .

Ejercicio: Diccionario (Map) con valor por defecto

Imagen
En esta entrada vamos a ver cómo Kotlin maneja un valor predeterminado en un diccionario ( Map ), y vamos a practicar con soluciones alternativas que llegan al mismo resultado, intentando escribir un código cada vez más simple y conciso. Para ello supongamos que queremos escribir una función genérica que toma una colección como argumento y devuelve un diccionario que contiene los elementos de la colección (claves) asociados a su número de ocurrencias (valores): fun < T > contarFrecuencia ( valores : Collection < T >): Map < T , Int > Vamos a ver distintas maneras de hacerlo. En la primera, usamos un MutableMap y al iterar sobre cada elemento de la lista comprobamos si ese valor aparece en el diccionario: si no es así ( null ), le asignamos un conteo inicial de 1; de lo contrario incrementamos el contador: fun main () {     val letras = listOf ( "a" , "b" , "a" , "d" , "c" )     println ( contarElem...

Juego del Ahorcado para consola

Imagen
En esta entrada publicamos una versión muy básica pero funcional del clásico juego de lápiz y papel El Ahorcado para consola. Este código fue escrito hace unos cuantos meses como mero entretenimiento y para familiarizarnos con Kotlin, y quizá este pequeño programa fue el germen de la app para Android que recientemente hemos publicado en F-Droid , aunque más que otra cosa sirvió como idea de proyecto. Posiblemente el código es muy mejorable, pero quiero igualmente compartir aquí esta versión comentada por si a alguien que está empezando con Kotlin le parece de interés. Además puede servir para repasar conceptos vistos en entradas anteriores. La dinámica del juego consiste en que un jugador escribe la palabra secreta y otro jugador intenta descubrirla antes de morir en la horca (al tercer error). Para que la palabra secreta no se visualice en pantalla cuando se escribe se utiliza System.console().readPassword("Introduce la palabra secreta: ") lo que obliga a ejecutar e...

Juego de Las Siete y media en consola

Imagen
En esta entrada se publica una versión simple pero funcional del juego de cartas Las Siete y media para jugar en consola (es posible que más adelante publiquemos la versión gráfica y más completa para Android). El usuario juega contra el ordenador, que siempre es la banca, con una baraja española de 40 cartas. Primero el jugador va pidiendo carta hasta que se planta con la puntuación al descubierto (o se pasa y entonces pierde); después la banca empezará a sacar cartas intentando mejorar o igualar la puntuación del jugador (se ha establecido un modo agresivo de juego para que la banca siempre intente igualar o superar la puntuación del jugador). Este ejemplo sirve para ilustrar y repasar varios conceptos vistos en entradas previas relativos, entre otros, a las estructuras condicionales y de repetición , las clases , las funciones , las colecciones y la entrada y salida de datos en consola. Además, como veremos más adelante cuando hablemos de las corrutinas en Kotlin ( kotlin...

Ejemplo de interface para calcular área y perímetro de polígonos

Imagen
Para apoyar el contenido expuesto en la entrada Introducción a las interfaces en Kotlin , el siguiente programa expone un ejemplo sencillo del uso de interface aplicado al cálculo del perímetro y del área en distintos tipos de figuras geométricas. En el código siguiente vemos que a partir de una interface ('Poligono') con una propiedad y métodos abstractos además de un método concreto (implementado), se crean dos clases ('Cuadrado' y 'Rectangulo') que implementan la interfaz, y por tanto ambas deben implementar la propiedad y métodos abstractos de esa interfaz. Una vez que se crean instancias de esas clases ('cuadrado1' y 'rectangulo1'), ambos objetos llaman a una función ('mostrarDatos') que recibe como parámetros la interface y un número variable de argumentos (ya vimos el modificador vararg en Introducción a las funciones en Kotlin ). Desde esta función el objeto llama tanto a las propiedades y métodos sobrescritos por cada cl...

Ejemplo: Bucles sobre rangos de caracteres

Imagen
En relación a los rangos , el objetivo de este programa es imprimir el alfabeto combinando letras en mayúsculas y minúsculas, y para ello se utilizan distintas variantes para recorrer rangos de caracteres e iterar sobre sus elementos.

Ejemplo: Métodos para concatenar Arrays

Imagen
En relación a los arrays (ver Arrays en Kotlin ), este ejemplo muestra varias técnicas distintas que pueden servir para concatenar dos arrays en un nuevo array .

Ejemplo de función de extensión aplicado a fechas

Imagen
El siguiente programa ilustra el uso de una función de extensión utilizada para diseñar un método aplicable a la clase Calendar para que nos indique si un objeto de la clase (una fecha) sobre el que se aplica cae en fin de semana. Además se repasan otros conceptos vistos en entradas anteriores, como el bucle do...while y la lectura de datos en consola . Por otra parte, también se utilizan cuestiones que se tratarán más adelante, como la importación de paquetes y la clase base abstracta Calendar para manejar fechas . /* * Kotlin Doc * Programa para verificar si una fecha cae en fin de semana */ import java . util . Locale import java . util . Calendar import java . util . Calendar . DAY_OF_WEEK import java . util . Calendar . MONTH import java . util . Calendar . LONG // función que extiende la clase Calendar fun Calendar . esFinDeSemana (): Boolean {     val diaSemana = this . get ( Calendar . DAY_OF_WEEK )     return diaSem...

Programa para intercambiar los valores de dos variables

Imagen
Este ejemplo muestra dos técnicas distintas que pueden servir para intercambiar el valor de dos números. La primera técnica utiliza una tercera variable temporal para almacenar el valor de una de las variables y se podría usar también para otro tipo de datos, como por ejemplo un String . La segunda técnica es aplicable únicamente a números puesto que se basa en operaciones aritméticas simples y a diferencia de la primera no utiliza una variable temporal. Este código repasa varios conceptos comentados en entradas previas, como tipos de números Float ( Tipos básicos de datos ), distinción entre variables mutables y de solo lectura ( Variables en Kotlin ), condicional when ( Instrucciones condicionales II: when ) y funciones ( Introducción a las funciones en Kotlin ). fun main ( args : Array < String >) {                      // valores iniciales en variables mutables   ...

Ejemplos de función anónima y lambda para crear un Array

Imagen
Vamos a ver un ejemplo sencillo para ilustrar la entrada Funciones de orden superior, anónimas y lambdas y concretamente el uso de una función anónima y una lambda . Con este pequeño ejemplo vamos a intentar demostrar que realmente las expresiones lambda son una forma simplificada de pasar una funcionalidad como parámetro sin la necesidad de crear funciones anónimas, lo cual es una ventaja al requerir menos código, lo que facilita su legibilidad. El objetivo del ejercicio es crear un array de los diez primeros números pares. Una primera aproximación podría ser: fun main ( args : Array < String >) {                val arrayPares = IntArray ( 10 ) // también: arrayOfNulls<Int>(10)            for ( i in arrayPares . indices ) {         arrayPares [ i ] = ( i + 1 ) * 2     }     ...

Programa para obtener los números primos en un intervalo

Imagen
El siguiente programa ilustra los contenidos expuestos en las entradas referentes a las estructuras de repetición (bucles con for y while ), a las funciones y al uso de break para escapar de un bucle. Objetivo: Obtener y mostrar todos los números primos existentes entre dos números enteros. Solución: fun main ( args : Array < String >) { var menor = 20 // observa la diferencia entre var y val val mayor = 50 print ( "Números primos entre $menor y $mayor : " ) while ( menor < mayor ) { // bucle para revisar el intervalo entre los números if ( checkPrimo ( menor )) // evalúa el retorno de la función con cada valor print ( menor . toString () + " " ) ++ menor // actualiza el valor } } fun checkPrimo ( num : Int ): Boolean { // función que retorna un booleano var primo = true for ( i in 2 .. num / 2 ) { // bucle sobre un rango if ( num % ...

Programa para obtener los factores de un número

Imagen
Para apoyar el contenido de la entrada Bucles o estructuras de repetición I: for , se expone como ejemplo un programa que utiliza for para iterar sobre un rango y sobre una lista. Objetivo: Obtener y mostrar todos los factores de un número positivo determinado. Recuerda que los factores de un número son aquellos números cuyo producto dan como resultado ese número, o dicho de otro modo, son los términos en que se puede descomponer multiplicativamente ese número; y que podemos obtener los factores de un número comprobando si ese número es divisible por todos y cada uno de los números que hay desde el 1 hasta ese número. Solución: fun main ( args : Array < String >) { val numero = 72 val listaFactores : MutableList < Int > = mutableListOf () // lista para guardar los factores print ( "Los factores de $numero son: " ) for ( i in 1 .. numero ) { // bucle sobre un rango if ( numero % i == 0 ) { // si se c...