Suma de dígitos con Kotlin
Este es un pequeño programa que toma un número entero ingresado por el usuario, extrae sus dígitos uno por uno y los suma. A continuación se expone el código del programa que tan solo tiene 16 líneas.
fun main(Args: Array<String>) { var sumDigit = 0L var numEntero: Long var extNum: Long print("Ingrese un numero entero: ") numEntero = readLine()!!.toLong() while (numEntero != 0L) { extNum = numEntero % 10 numEntero /= 10 sumDigit += extNum } println("La suma de los digitos es: $sumDigit") }
Kotlin es un lenguaje que forma parte de la familia de lenguajes que trabajan sobre la JVM, eso quiere decir que es 100% interoperable con Java y sus APIs. Su sintaxis reduce demasiado la cantidad de código que debemos escribir para lograr incluso un Hola Mundo.
Declarando variables
var sumDigit = 0L var numEntero: Long var extNum: Long
La declaración de variables en Kotlin es un caso peculiar, ya que no podemos declarar varias variables en una misma línea de código, hay que hacerlo en diferentes líneas. En este fragmento declaramos 3 variables, la primera se crea usando la inferencia de tipos de Kotlin al inicializar la variable con un valor de 0L que indica que es de tipo Long; mientras que las otras dos variables son creadas indicando sus tipos de datos, que tambien son de tipo Long.
Solicitando y leyendo numero ingresado por el usuario
print("Ingrese un numero entero: ") numEntero = readLine()!!.toLong()
Con la primera línea mostramos un mensaje en pantalla usando la función print() para no generar un salto de línea, indicando al usuario que ingrese un número entero. En la segunda línea leemos la información usando la función readLine(), pero hay que convertir dicha información en tipo Long usando a .toLong().
En la segunda línea, además de readLine() y .toLong(), aparecen los símbolos “!!”. Estos símbolos le indican al compilador de Kotlin que ningún valor ingresado por teclado será null (nulo); si desea saber más sobre cómo leer datos por teclado, lo invitamos a leer la publicación readLine(): leer datos por teclado en Kotlin.
Bucle while(), sumando dígitos
while (numEntero != 0L) { extNum = numEntero % 10 numEntero /= 10 sumDigit += extNum }
El bucle while va a iterar mientras que el valor de numEntero sea diferente a cero, en su interior se realizan 3 operaciones matemáticas diferentes que se explican a continuación:
* extNum = numEntero % 10
: con esta operación obtenemos el último dígito de numEntero; por ejemplo, 2018 % 10 da como resultado 8 y lo almacena en la variable extNum. Esta operación se lee, módulo 10 de N.
* numEntero /= 10
: esta operación es equivalente a decir numEntero = numEntero / 10
y básicamente divide el valor de numEntero entre 10, el número resultante pierde su último dígito; por ejemplo, 2018 / 10 da como resultado 201. El resultado se almacena en la variable numEntero.
* sumDigit += extNum
: esta operación es equivalente a decir sumDigit = sumDigit + extNum
, suma el valor en la variable sumDigit con el valor en extNum y luego lo asigna de nuevo a la variable sumDigit.
Imprimiendo resultado
println("La suma de los digitos es: $sumDigit")
Por último imprimimos el resultado con la función println(), esta función genera un salto de línea al final.
Ejecutando el programa:
[fixedtorres@linuxero]$ kotlin SumaDeDigitos.jar Ingrese un numero entero: 1589177 La suma de los digitos es: 38 [fixedtorres@linuxero]$
Al ejecutar el programa veremos algo como esto, un mensaje solicitando un número entero y el resultado de la suma de los dígitos. Para este ejemplo he ingresado el número 1589177, que al sumar sus dígitos da 38.
Si desea saber más sobre cómo compilar y ejecutar archivos Kotlin desde la terminal, ingrese a este link.