UNIVERSIDAD CENTRAL DEL ECUADOR

Facultad de Ciencias Económicas

Carrera de Ingeniería en Estadística

Materia: Programación


Introducción

El presente taller tiene como propósito fundamental reforzar los conocimientos en programación básica en R, con énfasis en el uso de estructuras como condicionales (if, else), bucles (for, while), y funciones de entrada/salida de datos (readline(), cat(), print(), etc.). Este taller representa una herramienta didáctica que permite aplicar la teoría vista en clase mediante ejercicios prácticos, incentivando el pensamiento lógico y el razonamiento algorítmico. Asimismo, refuerza la capacidad de los estudiantes para interactuar con el usuario, procesar datos ingresados y generar salidas ordenadas y comprensibles. Además, se promueve el uso de buenas prácticas de programación, como la organización del código, la validación de entradas, y la interpretación adecuada de los resultados generados por el script.


Objetivos del Taller

  • Aplicar estructuras de control para resolver problemas lógicos y matemáticos.
  • Desarrollar scripts en R que soliciten datos al usuario y generen salidas ordenadas.
  • Interpretar resultados y validar el funcionamiento de los algoritmos desarrollados.

Contenido

Cada sección del taller incluye:

  • Un enunciado claro del ejercicio propuesto.

  • El script en R que resuelve el problema.

  • Una imagen ilustrativa que muestra la ejecución del programa.


Desarrollo:


1. Ejercicio

Escribir un programa que lea un entero positivo, n, introducido por el usuario y después muestre en pantalla la suma de todos los enteros desde 1 hasta n. La suma de los n primeros enteros positivos puede ser calculada de la siguiente forma:suma = (n(n + 1)) / 2.

Script

n <- as.numeric(readline("Ingrese un número entero positivo: "))
## Ingrese un número entero positivo:
if (!is.na(n) && n > 0 && floor(n) == n) {
  suma <- (n * (n + 1)) / 2
  cat("La suma de los enteros desde 1 hasta", n, "es:", suma, "\n")
} else {
  cat("Error: Debe ingresar un número entero positivo.\n")
}
## Error: Debe ingresar un número entero positivo.

Imagen

2. Ejercicio

Calcular el área del triángulo rectángulo dadas su base y altura.

Script

# Solicitar la base y la altura al usuario
base <- as.numeric(readline(prompt = "Ingrese la base del triángulo: "))
## Ingrese la base del triángulo:
altura <- as.numeric(readline(prompt = "Ingrese la altura del triángulo: "))
## Ingrese la altura del triángulo:
# Calcular el área
area <- (base * altura) / 2

# Mostrar el resultado
cat("El área del triángulo rectángulo es:", area, "\n")
## El área del triángulo rectángulo es: NA

Imagen

3. Ejercicio

Escribe un programa que solicite los catetos de un triángulo rectángulo y muestre su hipotenusa

Script

# Solicitar los catetos al usuario
cateto1 <- as.numeric(readline(prompt = "Ingrese el valor del primer cateto: "))
## Ingrese el valor del primer cateto:
cateto2 <- as.numeric(readline(prompt = "Ingrese el valor del segundo cateto: "))
## Ingrese el valor del segundo cateto:
# Calcular la hipotenusa
hipotenusa <- sqrt(cateto1^2 + cateto2^2)

# Mostrar el resultado
cat("La hipotenusa del triángulo es:", hipotenusa, "\n")
## La hipotenusa del triángulo es: NA

Imagen

4. Ejercicio

Escribir un programa que pida al usuario su peso (en kg) y estatura (en metros), calcule el índice de masa corporal y lo almacene en una variable, y muestre por pantalla la frase Tu índice de masa corporal es donde es el índice de masa corporal calculado redondeado con dos decimales

Script

# Pedir al usuario su peso en kg
peso <- as.numeric(readline(prompt = "Ingrese su peso en kg: "))
## Ingrese su peso en kg:
# Pedir al usuario su estatura en metros
estatura <- as.numeric(readline(prompt = "Ingrese su estatura en metros: "))
## Ingrese su estatura en metros:
# Calcular el índice de masa corporal (IMC)
imc <- peso / (estatura^2)
# Redondear el IMC a dos decimales
imc_redondeado <- round(imc, 2)
# Mostrar el resultado por pantalla
cat("Tu índice de masa corporal es", imc_redondeado, "\n")
## Tu índice de masa corporal es NA

Imagen

Imagen 1

5. Ejercicio

Escribir un programa que pregunte al usuario una cantidad a invertir, el interés anual y el número de años, y muestre por pantalla el capital obtenido en la inversión

Script

# Preguntar al usuario la cantidad a invertir
cantidad_invertir <- as.numeric(readline(prompt = "Ingrese la cantidad a invertir: "))
## Ingrese la cantidad a invertir:
# Preguntar al usuario el interés anual (en porcentaje)
interes_anual_porcentaje <- as.numeric(readline(prompt = "Ingrese el interés anual (en porcentaje): "))
## Ingrese el interés anual (en porcentaje):
# Convertir el interés anual a decimal
interes_anual_decimal <- interes_anual_porcentaje / 100
# Preguntar al usuario el número de años
num_anios <- as.integer(readline(prompt = "Ingrese el número de años: "))
## Ingrese el número de años:
# Calcular el capital obtenido (interés compuesto anual)
capital_obtenido <- cantidad_invertir * (1 + interes_anual_decimal)^num_anios
# Mostrar el capital obtenido redondeado a dos decimales
capital_redondeado <- round(capital_obtenido, 2)
cat("El capital obtenido en la inversión después de", num_anios, "años es:", capital_redondeado, "\n")
## El capital obtenido en la inversión después de NA años es: NA

Imagen

Imagen 2

6. Ejercicio

Realizar un programa que pida el tiempo ya sea en horas, minutos o segundos, luego indicar en qué tipo de tiempo desea transformar y luego presentar el resultado

Script

# Preguntar el tiempo y la unidad inicial
tiempo_str <- readline(prompt = "Ingrese el tiempo (ej: 5 horas): ")
## Ingrese el tiempo (ej: 5 horas):
# Separar el número y la unidad
partes <- strsplit(trimws(tiempo_str), "\\s+")[[1]] # trimws elimina espacios al inicio/final, \\s+ divide por uno o más espacios

if (length(partes) != 2 || is.na(as.numeric(partes[1]))) {
  cat("Formato de entrada incorrecto. Por favor, ingrese el tiempo como 'cantidad unidad' (ej: 5 horas).\n")
} else {
  cantidad <- as.numeric(partes[1])
  unidad_inicial <- tolower(partes[2]) # Convertir a minúsculas para comparar

  # Preguntar la unidad de destino
  unidad_destino <- tolower(readline(prompt = "Ingrese la unidad a la que desea convertir (horas, minutos, segundos): "))

  # Realizar la conversión
  if (unidad_inicial %in% c("hora", "horas") && unidad_destino %in% c("minuto", "minutos")) {
    resultado <- cantidad * 60
    mensaje <- paste(cantidad, "hora(s) son", resultado, "minuto(s).")
  } else if (unidad_inicial %in% c("hora", "horas") && unidad_destino %in% c("segundo", "segundos")) {
    resultado <- cantidad * 3600
    mensaje <- paste(cantidad, "hora(s) son", resultado, "segundo(s).")
  } else if (unidad_inicial %in% c("minuto", "minutos") && unidad_destino %in% c("hora", "horas")) {
    resultado <- cantidad / 60
    mensaje <- paste(cantidad, "minuto(s) son", resultado, "hora(s).")
  } else if (unidad_inicial %in% c("minuto", "minutos") && unidad_destino %in% c("segundo", "segundos")) {
    resultado <- cantidad * 60
    mensaje <- paste(cantidad, "minuto(s) son", resultado, "segundo(s).")
  } else if (unidad_inicial %in% c("segundo", "segundos") && unidad_destino %in% c("hora", "horas")) {
    resultado <- cantidad / 3600
    mensaje <- paste(cantidad, "segundo(s) son", resultado, "hora(s).")
  } else if (unidad_inicial %in% c("segundo", "segundos") && unidad_destino %in% c("minuto", "minutos")) {
    resultado <- cantidad / 60
    mensaje <- paste(cantidad, "segundo(s) son", resultado, "minuto(s).")
  } else if (unidad_inicial %in% c("hora", "horas") && unidad_destino %in% c("hora", "horas")) {
    mensaje <- paste(cantidad, "hora(s) son", cantidad, "hora(s).")
  } else if (unidad_inicial %in% c("minuto", "minutos") && unidad_destino %in% c("minuto", "minutos")) {
    mensaje <- paste(cantidad, "minuto(s) son", cantidad, "minuto(s).")
  } else if (unidad_inicial %in% c("segundo", "segundos") && unidad_destino %in% c("segundo", "segundos")) {
    mensaje <- paste(cantidad, "segundo(s) son", cantidad, "segundo(s).")
  } else if (!unidad_destino %in% c("hora", "horas", "minuto", "minutos", "segundo", "segundos")) {
    mensaje <- "Unidad de destino no válida. Por favor, ingrese horas, minutos o segundos."
  } else {
    mensaje <- "Unidad de tiempo inicial no válida. Por favor, ingrese horas, minutos o segundos después de la cantidad."
  }

  # Mostrar el resultado
  cat(mensaje, "\n")
}
## Formato de entrada incorrecto. Por favor, ingrese el tiempo como 'cantidad unidad' (ej: 5 horas).

Imagen


7. Ejercicio

Calcule el área y perímetro de un trapecio dados su base mayor, base menor y altura.

Script

#Solicitar entradas al usuario
base_mayor <- as.numeric(readline(prompt = "Ingresa la base mayor: "))
base_menor <- as.numeric(readline(prompt = "Ingresa la base menor: "))
altura <- as.numeric(readline(prompt = "Ingresa la altura: "))
# Calcular el área
area <- (base_mayor + base_menor) * altura / 2
Página 11 de 16
# Calcular el lado oblicuo (asumiendo trapecio isósceles)
lado_oblicuo <- sqrt(((base_mayor - base_menor) / 2)^2 + altura^2)
# Calcular el perímetro
perimetro <- base_mayor + base_menor + 2 * lado_oblicuo
# Mostrar resultados
cat("Área del trapecio:", area, "\n")
cat("Perímetro del trapecio:", perimetro, "\n")

Imagen

Imagen 3

8. Ejercicio

Escribir un programa que calcule el factorial de un número que ha sido digitado por el usuario

Script

Pedir al usuario que ingrese un número
numero <- as.integer(readline(prompt = "Ingrese un número: "))
#Verificar si el número es válido
if (is.na(numero)) {
cat("Error: No ingresaste un número válido.\n")
} else if (numero < 0) {
cat("No se puede calcular el factorial de un número negativo.\n")
} else {
#Calcular el factorial
factorial <- 1
for (i in 1:numero) {
factorial <- factorial * i
}
#Mostrar el resultado
cat("El factorial de", numero, "es:", factorial, "\n")
}

Imagen

9. Ejercicio

Escribe un programa que lea dos números y muestre su suma, resta, multiplicación y división.

Script

# Leer los dos números
num1 <- as.numeric(readline(prompt = "Ingresa el primer número: "))
num2 <- as.numeric(readline(prompt = "Ingresa el segundo número: "))
# Operaciones
suma <- num1 + num2
resta <- num1 - num2
multiplicacion <- num1 * num2
# División con verificación para evitar dividir por 0
if (num2 != 0) {
division <- num1 / num2
cat("División:", division, "\n")
} else {
cat("No se puede dividir entre cero.\n")
}
# Mostrar resultados
cat("Suma:", suma, "\n")
cat("Resta:", resta, "\n")
cat("Multiplicación:", multiplicacion, "\n")

Imagen

10. Ejercicio

Realice un programa que pida una cantidad en dólares y muestre el IVA (12%) y el valor total a pagar.

Script

# Leer la cantidad en dólares
cantidad <- as.numeric(readline(prompt = "Ingresa la cantidad en dólares: "))
# Calcular el IVA (12%)
iva <- cantidad * 0.12
# Calcular el total a pagar
total <- cantidad + iva
# Mostrar los resultados
cat("IVA (12%): $", round(iva, 2), "\n")
cat("Total a pagar: $", round(total, 2), "\n")

Imagen

getwd()