Introducción

En la presente práctica se desarrollan diversos ejercicios utilizando el lenguaje de programación R y la librería svDialogs, la cual permite crear ventanas emergentes para interactuar con el usuario. Los ejercicios planteados abarcan conversiones de temperatura y tiempo, cálculos matemáticos y financieros, ordenamiento de números y validación de propiedades numéricas como números primos, pares e impares. Estas actividades fortalecen el aprendizaje de estructuras de programación, validación de datos, operaciones aritméticas y lógica computacional en RStudio.

Objetivo General

Desarrollar programas en R que permitan resolver problemas matemáticos, financieros y lógicos mediante el uso de estructuras básicas de programación, ventanas emergentes y validación de datos, fortaleciendo las habilidades prácticas en el entorno RStudio.

Objetivos Específicos

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.

library(svDialogs)
## Warning: package 'svDialogs' was built under R version 4.5.2
temp <- as.numeric(dlgInput("Ingrese la temperatura:")$res)
tipo <- toupper(dlgInput("Ingrese la unidad (C/F):")$res)

if(tipo == "C"){
  resultado <- (temp * 9/5) + 32
  dlgMessage(paste("La temperatura en Fahrenheit es:", resultado))
  
} else if(tipo == "F"){
  resultado <- (temp - 32) * 5/9
  dlgMessage(paste("La temperatura en Celsius es:", resultado))
  
} else {
  dlgMessage("Debe ingresar C o F")
}

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(dlgInput("Ingrese las horas trabajadas:")$res)
costo <- as.numeric(dlgInput("Ingrese el costo por hora:")$res)

extras <- as.numeric(dlgInput("Ingrese las horas extras:")$res)
costoExtra <- as.numeric(dlgInput("Ingrese el costo por hora extra:")$res)

paga <- (horas * costo) + (extras * costoExtra)

dlgMessage(paste("La paga total es:", paga))

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. La suma de los n primeros enteros positivos puede ser calculada de la siguiente forma:

suma=(n(n+1))/2

#n <- as.numeric(dlgInput("Ingrese un número entero positivo:")$res)

#if(n > 0){suma <- (n * (n + 1)) / 2
#dlgMessage(paste("La suma de los enteros es:", suma))
  
#} else {dlgMessage("Debe ingresar un número positivo")}

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

peso <- as.numeric(dlgInput("Ingrese su peso en kg:")$res)
estatura <- as.numeric(dlgInput("Ingrese su estatura en metros:")$res)

imc <- peso / (estatura^2)

dlgMessage(paste("Tu índice de masa corporal es:", round(imc,2)))

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

capital <- as.numeric(dlgInput("Ingrese la cantidad a invertir:")$res)
interes <- as.numeric(dlgInput("Ingrese el interés anual (%):")$res)
anios <- as.numeric(dlgInput("Ingrese el número de años:")$res)

monto <- capital * (1 + interes/100)^anios

dlgMessage(paste("El capital obtenido es:", round(monto,2)))

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

tiempo <- as.numeric(dlgInput("Ingrese el tiempo:")$res)

origen <- tolower(dlgInput("Ingrese unidad origen (horas/minutos/segundos):")$res)

destino <- tolower(dlgInput("Ingrese unidad destino (horas/minutos/segundos):")$res)

# Convertir a segundos
if(origen == "horas"){
  segundos <- tiempo * 3600
  
} else if(origen == "minutos"){
  segundos <- tiempo * 60
  
} else {
  segundos <- tiempo
}

# Convertir al destino
if(destino == "horas"){
  resultado <- segundos / 3600
  
} else if(destino == "minutos"){
  resultado <- segundos / 60
  
} else {
  resultado <- segundos
}

dlgMessage(paste("El tiempo transformado es:", resultado, destino))

EJERCICIO 7:

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

datos <- dlgInput("Ingrese varios números separados por comas:")$res

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

ordenados <- sort(numeros)

dlgMessage(paste("Números ordenados:", 
                 paste(ordenados, collapse = ", ")))

EJERCICIO 8:

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

n <- as.numeric(dlgInput("Ingrese un número:")$res)

factorial_num <- factorial(n)

dlgMessage(paste("El factorial es:", factorial_num))

EJERCICIO 9:

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

num <- as.numeric(dlgInput("Ingrese un número entero:")$res)

primo <- TRUE

if(num <= 1){
  primo <- FALSE
} else {
  
  for(i in 2:(num-1)){
    if(num %% i == 0){
      primo <- FALSE
      break
    }
  }
}

if(primo){
  dlgMessage("El número es primo")
  
} else {
  dlgMessage("El número no es primo")
}

EJERCICIO 10:

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

num <- as.numeric(dlgInput("Ingrese un número:")$res)

if(num %% 2 == 0){
  dlgMessage("El número es par")
  
} else {
  dlgMessage("El número es impar")
}

Recomendaciones

Conclusión

Los ejercicios desarrollados permitieron aplicar diferentes conceptos fundamentales de programación en R, como estructuras condicionales, ciclos, operaciones matemáticas y validación de datos. Además, el uso de ventanas emergentes mediante la librería svDialogs facilitó la interacción con el usuario, haciendo los programas más dinámicos e intuitivos. En conjunto, estas prácticas fortalecen el razonamiento lógico y el manejo práctico de RStudio para resolver problemas matemáticos y cotidianos de manera eficiente.

Bibliografia