Introducción

Se presentan diez ejercicios de programación resueltos en lenguaje R. Cada ejercicio aborda una situación problemática que requiere el uso de operaciones aritméticas, estructuras condicionales, ciclos y funciones propias de R para la manipulación de datos y la interacción con el usuario mediante la consola.

Los problemas planteados incluyen conversiones entre unidades de medida, cálculos financieros y operaciones matemáticas.

Objetivo General

Desarrollar diez programas en lenguaje R que resuelvan problemas matemáticos y lógicos, aplicando estructuras de control, operaciones aritméticas, conversiones de unidades y validaciones numéricas para fortalecer las competencias básicas en programación con R.

Objetivos Específicos

  1. Implementar programas en R que realicen conversiones entre diferentes sistemas de unidades y cálculos financieros, aplicando fórmulas matemáticas y estructuras condicionales.
  2. Diseñar algoritmos en R que permitan analizar propiedades numéricas, así como procesar conjuntos de datos, utilizando ciclos iterativos (forwhile, entre otros,...) y vectores.

Desarrollo

EJERCICIO 1:

Escribir un programa que pida la temperatura y si esta es en Fahrenheit o Celsius y presentar en pantalla su transformación en la otra medida.

#temperatura <- as.numeric(readline("Ingresa la temperatura: "))

#cat("\n¿Qué tipo de temperatura es?\n")
#cat("1. Celsius (°C)\n")
#cat("2. Fahrenheit (°F)\n")
#tipo <- as.integer(readline("Elige 1 o 2: "))

#if(tipo == 1){
#  # Celsius a Fahrenheit
#  resultado <- (temperatura * 9/5) + 32
#  cat("\n", temperatura, "°C equivalen a", resultado, "°F\n")
#  } else 
#    if(tipo == 2) {
#      # Fahrenheit a Celsius
#      resultado <- (temperatura - 32) * 5/9
#      cat("\n", temperatura, "°F equivalen a", resultado, "°C\n")
#      } else {
#        cat("\nOpción no válida\n")
#}

EJERCICIO 2:

Escribir un programa que pregunte al usuario por el número de horas trabajadas y el coste por hora. Después debe mostrar por pantalla la paga que le corresponde, además debe preguntar si existen horas extras que tienen un valor diferente y con estos valores se calcule la paga correspondiente.

#horas <- as.numeric(readline("Horas: "))
#pago <- as.numeric(readline("Costo/hora: "))

#extras <- readline("¿Horas extras? (s/n): ")

#if(extras == "s") {
#  horaex <- as.numeric(readline("Horas extras: "))
#  pago2 <- as.numeric(readline("Costo extra/hora: "))
#  total <- (horas * pago) + (horaex * pago2)
#} else {
#  total <- horas * pago
#}

#cat("\nPaga total:", total, "\n")

EJERCICIO 3:

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.

#n <- as.integer(readline(prompt="Ingrese un entero positivo: "))
#suma <- (n * (n + 1)) / 2
#print(suma)

EJERCICIO 4:

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 <imc>  donde <imc> es el índice de masa corporal calculado redondeado con dos decimales.

#peso <- as.numeric(readline(prompt="Ingrese su peso en kg: "))
#estatura <- as.numeric(readline(prompt="Ingrese su estatura en metros: "))
#imc <- round(peso / (estatura^2), 2)
#cat("Tu índice de masa corporal es", imc)

EJERCICIO 5:

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.

#cantidad <- readline("Introduce la cantidad a invertir: ")
#interes <- readline("Introduce el interés anual (%): ")
#anos <- readline("Introduce el número de años: ")

#cantidad <- as.numeric(cantidad)
#interes <- as.numeric(interes)
#anos <- as.numeric(anos)

#capital_final <- cantidad * (1 + interes / 100) ^ anos

#cat("El capital obtenido después de", anos, "años es:", capital_final, "\n")

EJERCICIO 6:

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.

#valor <- as.numeric(readline("Ingresa la cantidad de tiempo: "))

## Seleccionar unidad de origen
#cat("\n UNIDAD DE ORIGEN \n")
#cat("1. Horas\n")
#cat("2. Minutos\n")
#cat("3. Segundos\n")
#origen <- as.integer(readline("Elige 1, 2 o 3: "))

## Seleccionar unidad de destino
#cat("\n CONVERTIR A \n")
#cat("1. Horas\n")
#cat("2. Minutos\n")
#cat("3. Segundos\n")
#destino <- as.integer(readline("Elige 1, 2 o 3: "))

## Primero convertir todo a segundos (más fácil)
#if (origen == 1) {  # Horas a segundos
#  segundos <- valor * 3600
#} else 
#  if (origen == 2) {  # Minutos a segundos
#  segundos <- valor * 60
#} else 
#  if (origen == 3) {  # Segundos a segundos
#  segundos <- valor
#} else {
#  stop("Opción de origen no válida")
#}

## Luego convertir de segundos a la unidad deseada
#if (destino == 1) {  # Segundos a horas
#  resultado <- segundos / 3600
#  unidad_destino <- "horas"
#} else 
#  if (destino == 2) {  # Segundos a minutos
#  resultado <- segundos / 60
#  unidad_destino <- "minutos"
#} else 
#  if (destino == 3) {  # Segundos a segundos
#  resultado <- segundos
#  unidad_destino <- "segundos"
#} else {
#  stop("Opción de destino no válida")
#}

## Mostrar el resultado
#cat("\n", valor, "equivalen a", round(resultado, 4), unidad_destino, "\n")

EJERCICIO 7:

Escribir un programa en el que se digiten varios números y luego los números se presenten en pantalla ordenados.

#entrada <- readline("Ingresa varios números separados por espacios: ")

#numeros <- as.numeric(strsplit(entrada, " ")[[1]])

#numeros_ordenados <- sort(numeros)

#cat("Números ordenados: ")
#cat(numeros_ordenados)

EJERCICIO 8:

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

#num_factorial <- function() {
#  n <- as.numeric(readline("Numero: "))
#  cat("factorial:", factorial(n), "\n")
#}
#num_factorial()

EJERCICIO 9:

Escribir un programa que pida un número e indique si el número es primo o no.

#n_primo <- function() {
#  n <- as.integer(readline("Numero: "))
#  if (n < 2){
#    cat(n, "no es primo\n")
#  }else 
#    if (n == 2){
#    cat(n, "es primo\n")
#  }else{
#    limite <- floor(sqrt(n))
#    if (limite >= 2 && any(n %% 2:limite == 0)) {
#      cat(n, "no es primo\n")
#    }else{
#      cat(n, "es primo\n")
#    }
#  }
#}

#n_primo()

EJERCICIO 10:

Escribir un programa que pida un número e indique si el número es par o impar.

#par_impar <- function() {
#  n <- as.numeric(readline("Numero: "))
#  if (n %% 2 == 0){
#    cat(n, "es par\n") 
#    }else 
#      cat(n, "es impar\n")
#}
#par_impar()

Conclusión

A lo largo del desarrollo de los diez ejercicios planteados, se implemento en lenguaje R un conjunto de programas que abarcan desde conversiones de unidades, hasta cálculos matemáticos y situaciones prácticas del mundo real como el cálculo de paga laboral e índice de masa corporal.

La resolución de estos ejercicios ha permitido aplicar de manera práctica los conceptos básicos de programación en R, incluyendo la entrada y salida de datos mediante readline() y cat(), el uso de estructuras condicionales (if, else if, else), la implementación de bucles (while, for, repeat), la manipulación de vectores y listas, así como la creación de funciones personalizadas.

Recomendaciones

  1. Se recomienda estudiar a fondo las estructuras de datos propias del lenguaje, especialmente vectores, listas, data frames y matrices. La mayoría de los ejercicios resueltos trabajaron con valores individuales o vectores simples.
  2. Desarrollar la capacidad de encontrar y corregir errores de manera sistemática. Esto con ayuda de las funciones de depuración de R o a través de un análisis con la finalidad de evitar cualquier tipo de error antes de correr el código.
  3. Se recomienda a su vez el aprender a utilizar y crear funciones, ya que transforma tus ejercicios en herramientas reutilizables que se puede llamar cuantas veces sea necesario, combinarlas entre sí e incluso guardarlas para usarlas en proyectos futuros.