4 - Entrada de datos por teclado en la Consola

Cuando utilizamos la Consola para mostrar información por pantalla utilizamos las funciones print y println. Si necesitamos entrar datos por teclado podemos utilizar la función readln.

Problema 1

Realizar la carga de dos números enteros por teclado e imprimir su suma y su producto.

Proyecto5 - Main.kt

fun main(argumento: Array<String>) {
    print("Ingrese primer valor:")
    val valor1 = readln().toInt()
    print("Ingrese segundo valor:")
    val valor2 = readln().toInt()
    val suma = valor1 + valor2
    println("La suma de $valor1 y $valor2 es $suma")
    val producto = valor1 * valor2
    println("El producto de $valor1 y $valor2 es $producto")
}

Para entrada de datos por teclado disponemos una función llamada readln(). Esta función retorna un String con los caracteres escritos por el operador hasta que presiona la tecla "Entrada". Luego llamando al método toInt de la clase String se convierten los datos ingresados por teclado en un Int y se guarda en valor1.

El problema se presenta cuando el operador presiona la tecla "Entrada" sin cargar datos, en ese caso se genera una excepción que luego veremos como procesarla.

val valor1 = readln().toInt()

Continuando con el problema luego de cargar los dos enteros por tecla procedemos a sumarlos, multiplicarlos y mostrar los resultados:

    val suma = valor1 + valor2
    println("La suma de $valor1 y $valor2 es $suma")
    val producto = valor1 * valor2
    println("El producto de $valor1 y $valor2 es $producto")

Acotaciones

En versiones previas a la 1.6 de Kotlin, para la entrada de datos se emplea la función readLine:

fun main(argumento: Array<String>) {
    print("Ingrese primer valor:")
    val valor1 = readLine()!!.toInt()
    print("Ingrese segundo valor:")
    val valor2 = readLine()!!.toInt()
    val suma = valor1 + valor2
    println("La suma de $valor1 y $valor2 es $suma")
    val producto = valor1 * valor2
    println("El producto de $valor1 y $valor2 es $producto")
}

Debemos avisarle al compilador de Kotlin que confíe que la función readLine siempre retorna un String, esto lo hacemos agregando el operador !! en la llamada:

    val valor1 = readLine()!!.toInt()

Es una forma poco legible por lo que agregaron la función readln en las versiones nuevas de Kotlin (1.6 y siguientes)

Si tiene instalada una versión vieja de Kotlin debe utilizar esta sintaxis antigua en la entrada de datos.

Problema 2

Realizar la carga del lado de un cuadrado, mostrar por pantalla el perímetro del mismo (El perímetro de un cuadrado se calcula multiplicando el valor del lado por cuatro)

Proyecto6 - Main.kt

fun main(parametro: Array<String>) {
    print("Ingrese la medida del lado del cuadrado:")
    val lado = readln().toInt()
    val perimetro = lado * 4
    println("El perímetro del cuadrado es $perimetro")
}

La variable lado por inferencia se define de tipo Int:

    val lado = readln().toInt()

Recordemos que en forma extensa podemos escribir el código anterior con la siguiente sintaxis:

    val lado: Int
    lado = readln().toInt()

En Kolin recordemos que lo que se busca que el código sea lo más conciso posible.

Luego calculamos el perímetro y lo mostramos por la Consola:

    val perimetro = lado * 4
    println("El perímetro del cuadrado es $perimetro")

Problema 3

Se debe desarrollar un programa que pida el ingreso del precio de un artículo y la cantidad que lleva el cliente. Mostrar lo que debe abonar el comprador.

Proyecto7 - Main.kt


fun main(parametro: Array<String>) {
    print("Ingrese el precio del producto:")
    val precio = readln().toDouble()
    print("Ingrese la cantidad de productos:")
    val cantidad = readln().toInt()
    val total = precio * cantidad
    println("El total a pagar es $total")
}

Cargamos por teclado un valor de tipo Double y por inferencia se define la variable precio con dicho tipo:

    print("Ingrese el precio del producto:")
    val precio = readln().toDouble()

Seguidamente cargamos la cantidad de productos a llevar, el dato que debe ingresar el operador es un entero:

    print("Ingrese la cantidad de productos:")
    val cantidad = readln().toInt()

Finalmente multiplicamos la variable Double y la variable Int dando como resultado otro valor Double:

    val total = precio * cantidad
    println("El total a pagar es $total")

Problemas propuestos

  • Escribir un programa en el cual se ingresen cuatro números enteros, calcular e informar la suma de los dos primeros y el producto del tercero y el cuarto.
  • Realizar un programa que lea por teclado cuatro valores numéricos enteros e informar su suma y promedio.
Solución
Proyecto8

fun main(parametro: Array<String>) {
    print("Ingrese primer valor:")
    val v1 = readln().toInt()
    print("Ingrese segundo valor:")
    val v2 = readln().toInt()
    print("Ingrese tercer valor:")
    val v3 = readln().toInt()
    print("Ingrese cuarto valor:")
    val v4 = readln().toInt()
    val suma = v1 + v2
    println("La suma de $v1 y $v2 es $suma")
    val producto = v3 * v4
    println("El producto de $v3 y $v4 es $producto")
}




Proyecto9

fun main(parametro: Array<String>) {
    print("Ingrese primer valor:")
    val v1 = readln().toInt()
    print("Ingrese segundo valor:")
    val v2 = readln().toInt()
    print("Ingrese tercer valor:")
    val v3 = readln().toInt()
    print("Ingrese cuarto valor:")
    val v4 = readln().toInt()
    val suma = v1 + v2 + v3 + v4
    println("La suma de los cuatro valores es $suma")
    val prom = suma / 4
    println("El promedio de los cuatro valores es $prom")
}