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.
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.
Implementar programas interactivos utilizando la librería svDialogs.
Aplicar fórmulas matemáticas y conversiones de unidades mediante programación en R.
Utilizar estructuras condicionales y ciclos para resolver problemas lógicos.
Validar datos ingresados por el usuario para evitar errores en la ejecución.
Presentar resultados claros mediante ventanas emergentes.
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
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")
}
Utilizar nombres de variables claros y fáciles de comprender.
Validar los datos ingresados para evitar errores en el programa.
Colocar comentarios en cada ejercicio para mejorar la lectura del código.
Probar diferentes valores de entrada para verificar el correcto funcionamiento de los programas.
Mantener una buena organización del código utilizando títulos y subtítulos.
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.