Saltar a contenido

P1.2 · Primeros programas

Traduce algoritmos sencillos a código. Para cada ejercicio anota entradas, proceso y salidas antes de programar. Prueba con valores normales, cero y negativos cuando tenga sentido.

Ejercicio 1.2.1

Pide el nombre del usuario y salúdalo.

Escribe tu nombre: Juan
Hola, Juan.
Solución modelo (bloqueada)

🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:

fun main() {
    print("Escribe tu nombre: ")
    val nombre = readln()
    println("Hola, $nombre.")
}
// ... (resto de la solución bloqueado)

Ejercicio 1.2.2

Pide las horas trabajadas y el precio por hora y muestra el importe total del servicio.

Horas de trabajo: 6
Coste por hora: 10
Importe total: 60

Ejercicio 1.2.3

Suponiendo estas declaraciones:

val ancho = 17      // Int
val alto = 12.0     // Double

Antes de ejecutarlas, adivina el valor y el tipo de cada expresión y luego compruébalo con println(expresion::class.simpleName):

  1. ancho / 2
  2. ancho / 2.0
  3. alto / 3
  4. 1 + 2 * 5
Respuestas
  1. 8 → Int (Int / Int es división entera)
  2. 8.5 → Double
  3. 4.0 → Double
  4. 11 → Int (primero la multiplicación)

Ejercicio 1.2.4

Pide una temperatura en grados Celsius, conviértela a Fahrenheit y muéstrala.

Solución modelo (bloqueada)

🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:

fun main() {
    print("Grados Celsius: ")
    val celsius = readln().toDouble()
    val fahrenheit = celsius * 9 / 5 + 32
    println("$celsius °C = $fahrenheit °F")
// ... (resto de la solución bloqueado)

Ejercicio 1.2.5

Pide el importe de un artículo sin IVA y el tipo de IVA (por ejemplo, 21) y muestra el precio final.

Ejercicio 1.2.6

Pide el precio final de un artículo y, suponiendo un IVA del 10 %, muestra el IVA pagado y el importe sin IVA.

Ejercicio 1.2.7

Pide tres números y muestra su suma.

En Kotlin

Si el usuario escribe los tres números en una sola línea (4 5 6), puedes leerla entera y separarla con readln().split(" ").

Ejercicio 1.2.8

Pide una cantidad de segundos y muéstrala en horas, minutos y segundos. Por ejemplo, 3725 segundos son 1 h 2 min 5 s.

Ejercicio 1.2.9

Guarda dos valores en las variables a y b, pedidos por teclado. Intercambia sus valores (que a acabe con lo que tenía b y al revés) y muestra ambas variables antes y después del intercambio.

Ejercicio 1.2.10

Muestra por pantalla el resultado de esta operación: 3 + 5 · (2 + 4)² ÷ 6. Respeta la precedencia de los operadores y usa la potencia de tu lenguaje.

(El enunciado original es una imagen; aquí se sustituye por una operación equivalente.)

Ejercicio 1.2.11

Lee un entero positivo n y muestra la suma de los enteros de 1 a n. Hazlo de dos formas: con un bucle y con la fórmula n · (n + 1) / 2.

Ejercicio 1.2.12

Pide peso (kg) y estatura (m), calcula el índice de masa corporal (peso / estatura²) y muestra Tu índice de masa corporal es X, con X redondeado a 2 decimales.

En Kotlin

"%.2f".format(x) usa el idioma del equipo: en uno en español escribe 22,86 con coma. Si quieres siempre el punto, usa "%.2f".format(Locale.US, x).

Solución modelo (bloqueada)

🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:

fun main() {
    print("Peso (kg): ")
    val peso = readln().toDouble()
    print("Estatura (m): ")
    val estatura = readln().toDouble()
// ... (resto de la solución bloqueado)

Ejercicio 1.2.13

Pide dos enteros n y m y muestra la división de n entre m da un cociente c y un resto r. Controla también la división entre cero.

Solución modelo (bloqueada)

🔒 La solución completa está bloqueada. Esto es solo un ejemplo de cómo empieza:

fun main() {
    print("n: ")
    val n = readln().toInt()
    print("m: ")
    val m = readln().toInt()
// ... (resto de la solución bloqueado)

Ejercicio 1.2.14

Una juguetería envía payasos (112 g cada uno) y muñecas (75 g cada una). Lee cuántos de cada se han vendido y calcula el peso total del paquete.

Ejercicio 1.2.15

Una cuenta de ahorros da un 4 % de interés anual que se suma al saldo a final de año. Lee el dinero depositado y muestra el saldo tras el primer, segundo y tercer año, redondeado a 2 decimales. Fórmula de cada año: capital · (1 + interés).

En Kotlin

"%.2f".format(x) usa el idioma del equipo: en uno en español escribe 22,86 con coma. Si quieres siempre el punto, usa "%.2f".format(Locale.US, x).

Ejercicio 1.2.16

Una panadería vende barras a 3,49 € (defínelo como constante). Las que no son del día tienen un 60 % de descuento. Lee cuántas barras no frescas se venden y muestra el precio habitual, el descuento aplicado y el coste total.

Ejercicio 1.2.17

Pide un nombre y un entero n y muestra el nombre n veces, cada una en una línea.

Ejercicio 1.2.18

Pide el nombre completo y muéstralo tres veces: todo en minúsculas, todo en mayúsculas y con la inicial de cada palabra en mayúscula. El usuario puede escribirlo con cualquier combinación de mayúsculas y minúsculas.

En Kotlin

Separa las palabras con split(" ") y, en cada una, usa lowercase().replaceFirstChar { it.uppercase() }.

Ejercicio 1.2.19

Pide un nombre y muestra NOMBRE tiene n letras., con el nombre en mayúsculas.

Ejercicio 1.2.20

Los teléfonos de una empresa tienen el formato prefijo-número-extensión, por ejemplo +34-913724710-56. Pide uno y muestra solo el número, sin prefijo ni extensión.

Ejercicio 1.2.21

Pide una frase y muéstrala invertida.

Ejercicio 1.2.22

Pide una frase y una vocal, y muestra la frase con esa vocal en mayúscula.

Ejercicio 1.2.23

Pide un correo electrónico y muestra otro con el mismo nombre de usuario (lo que va antes de la @) pero con el dominio ceu.es.

Ejercicio 1.2.24

Pide el precio de un producto en euros con dos decimales y muestra cuántos euros y cuántos céntimos son.

En Kotlin

No obtengas los céntimos multiplicando el decimal por 100: 19.99 * 100 no da exactamente 1999 sino 1998.9999999999998, y al quedarte con la parte entera salen 1998. Separa el texto por el punto o redondea.

Ejercicio 1.2.25

Pide una fecha de nacimiento con formato dd/mm/aaaa y muestra día, mes y año. Después adáptalo para que funcione si el día o el mes se escriben con un solo dígito.

Ejercicio 1.2.26

Pide los productos de una cesta de la compra separados por comas y muestra cada producto en una línea.

Ejercicio 1.2.27

Pide el nombre de un producto, su precio y las unidades, y muestra una línea con el nombre, el precio unitario (6 dígitos enteros y 2 decimales), las unidades (3 dígitos) y el coste total (8 dígitos enteros y 2 decimales).

En Kotlin

Con "%9.2f".format(x), 9 posiciones con 2 decimales (y en un equipo en español pone coma; ver la nota del ejercicio 1.2.12).

Ejercicio 1.2.28

Calcula el área de un triángulo a partir de sus tres lados (fórmula de Herón). Indica qué ocurre si las longitudes no pueden formar un triángulo.

En Kotlin

sqrt de un número negativo no lanza ninguna excepción: devuelve NaN. Compruébalo antes de calcular.

Ejercicio 1.2.29

Genera un número aleatorio entre dos valores que introduce el usuario (ambos incluidos).

Ejercicio 1.2.30

Determina si un número es primo. Ten en cuenta el 0, el 1 y los negativos.

Ejercicio 1.2.31

Muestra todos los divisores de un número.

Ejercicio 1.2.32

Muestra la serie de Fibonacci hasta un número dado.

Herramientas útiles en Kotlin

Necesitas... Usa...
Leer una línea readln() (o readLine(), que puede devolver null)
Texto a número .toInt(), .toDouble(), .toIntOrNull()
Redondear al mostrar "%.2f".format(x)
Potencia y raíz Math.pow(x, 2.0), kotlin.math.sqrt(x)
Aleatorios (a..b).random()
Mayúsculas / minúsculas uppercase(), lowercase()
Cortar y unir texto split(","), substring(a, b), joinToString(", ")
Rellenar con ceros "7".padStart(3, '0')
Lanzar una excepción throw ...

Decimales con coma

format usa la configuración regional del sistema: en español mostrará 22,86. Para forzar el punto, usa "%.2f".format(Locale.US, x).

Para ejecutar cada ejercicio: crea un proyecto en IntelliJ IDEA o compila con kotlinc ejercicio.kt -include-runtime -d ejercicio.jar y ejecuta java -jar ejercicio.jar.