PROGRAMAS - USO DE TIPO DE DATOS

1. INTRODUCCIÓN

Tiene como finalidad desarrollar diferentes ejercicios básicos de programación utilizando el lenguaje R. A través de estructuras secuenciales, condicionales y repetitivas. Se utiliza RMarkdown o Quarto para integrar en un solo documento tanto la explicación teórica como el código fuente.

2. FUNDAMENTO TEÓRICO

Lenguaje R:

R es un lenguaje de programación orientado al análisis estadístico, cálculo matemático y desarrollo de algoritmos.

Estructuras Condicionales:

Las estructuras condicionales permiten ejecutar diferentes acciones dependiendo de si una condición es verdadera o falsa.

if (x > 0) {
  print("Número positivo")
}

Estructuras Repetitivas:

Las estructuras repetitivas permiten ejecutar un bloque de código varias veces.

for(i in 1:5){
  print(i)
}

Variables:

Las variables almacenan datos que pueden ser utilizados posteriormente dentro de un programa.

nombre <- "Sebastián"
edad <- 20

3. OBJETIVO GENERAL

Desarrollar programas en lenguaje R utilizando estructuras secuenciales, condicionales y repetitivas para resolver problemas básicos de programación.

4. OBJETIVOS ESPECÍFICOS

5. METODOLOGIA

Para el desarrollo del presente trabajo se utilizó el lenguaje de programación R junto con herramientas como RMarkdown o Quarto, permitiendo integrar en un solo documento el código fuente, los resultados obtenidos y la explicación teórica correspondiente. La metodología aplicada consistió en las siguientes etapas:

6. DESARROLLO

EJERCICIO 1

Planteamiento del problema

Escribir un programa que solicite una temperatura y determine si se encuentra en grados Fahrenheit o Celsius, para posteriormente convertirla a la otra escala y mostrar el resultado en pantalla.

Código en R

cat("CONVERSOR DE TEMPERATURA\n")
## CONVERSOR DE TEMPERATURA
valor <- as.numeric(readline("Ingrese la temperatura: "))
## Ingrese la temperatura:
tipo <- readline("Ingrese C para Celsius o F para Fahrenheit: ")
## Ingrese C para Celsius o F para Fahrenheit:
if(tipo == "C" || tipo == "c"){
  fahrenheit <- (valor * 9/5) + 32
  cat("La temperatura en Fahrenheit es:", round(fahrenheit, 2), "°F\n")

} else if(tipo == "F" || tipo == "f"){
  celsius <- (valor - 32) * 5/9
  cat("La temperatura en Celsius es:", round(celsius, 2), "°C\n")

} else {
  cat("Opción inválida\n")
}
## Opción inválida

EJERCICIO 2

Planteamiento del problema

Escribir un programa que solicite al usuario el número de horas trabajadas y el costo por hora. Además, debe preguntar si existen horas extras con un valor diferente y calcular la paga total correspondiente.

Código en R

cat("CÁLCULO DE PAGO\n")
## CÁLCULO DE PAGO
horas <- as.numeric(readline("Ingrese horas trabajadas: "))
## Ingrese horas trabajadas:
costo <- as.numeric(readline("Ingrese costo por hora: "))
## Ingrese costo por hora:
pago_normal <- horas * costo

extras <- as.numeric(readline("Ingrese número de horas extras: "))
## Ingrese número de horas extras:
valor_extra <- as.numeric(readline("Ingrese valor por hora extra: "))
## Ingrese valor por hora extra:
pago_extras <- extras * valor_extra

pago_total <- pago_normal + pago_extras

cat("La paga total es:", round(pago_total, 2), "\n")
## La paga total es: NA

EJERCICIO 3

Planteamiento del problema

Escribir un programa que lea un número entero positivo n ingresado por el usuario y muestre en pantalla la suma de todos los enteros desde 1 hasta n.

La fórmula utilizada es:

S = n(n+1)/2

Código en R

cat("SUMA DE LOS N PRIMEROS ENTEROS\n")
## SUMA DE LOS N PRIMEROS ENTEROS
n <- 10

if(n > 0){

  suma <- (n * (n + 1)) / 2

  cat("La suma desde 1 hasta", n, "es:", suma, "\n")

} else {

  cat("Debe ingresar un número positivo\n")


}
## La suma desde 1 hasta 10 es: 55

EJERCICIO 4

Planteamiento del problema

Escribir un programa que solicite el peso del usuario en kilogramos y la estatura en metros, para calcular el Índice de Masa Corporal (IMC) y mostrar el resultado redondeado con dos decimales.

La fórmula utilizada es:

IMC = peso / estatura^2

Código en R

cat("CÁLCULO DEL IMC\n")
## CÁLCULO DEL IMC
peso <- as.numeric(readline("Ingrese su peso en kg: "))
## Ingrese su peso en kg:
estatura <- as.numeric(readline("Ingrese su estatura en metros: "))
## Ingrese su estatura en metros:
imc <- peso / (estatura^2)

cat("Tu índice de masa corporal es", round(imc, 2), "\n")
## Tu índice de masa corporal es NA

EJERCICIO 5

Planteamiento del problema

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.

Fórmula:

  • Capital = Inversión * (1 + interés)^años

Código en R

cat("CÁLCULO DE INVERSIÓN\n")
## CÁLCULO DE INVERSIÓN
inversion <- as.numeric(readline("Ingrese la cantidad a invertir: "))
## Ingrese la cantidad a invertir:
interes <- as.numeric(readline("Ingrese el interés anual (%): "))
## Ingrese el interés anual (%):
anios <- as.numeric(readline("Ingrese el número de años: "))
## Ingrese el número de años:
capital <- inversion * (1 + interes/100)^anios

cat("El capital obtenido es:", round(capital, 2), "\n")
## El capital obtenido es: NA

EJERCICIO 6

Planteamiento del problema

Escribir 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.

Código en R

cat("CONVERSOR DE TIEMPO\n")
## CONVERSOR DE TIEMPO
valor <- as.numeric(readline("Ingrese el valor del tiempo: "))
## Ingrese el valor del tiempo:
origen <- tolower(trimws(readline("Ingrese la unidad original (h/m/s): ")))
## Ingrese la unidad original (h/m/s):
destino <- tolower(trimws(readline("Ingrese la unidad a convertir (h/m/s): ")))
## Ingrese la unidad a convertir (h/m/s):
if(origen == "h" && destino == "m"){

  resultado <- valor * 60
  cat("Resultado:", resultado, "minutos\n")

} else if(origen == "h" && destino == "s"){

  resultado <- valor * 3600
  cat("Resultado:", resultado, "segundos\n")

} else if(origen == "m" && destino == "h"){

  resultado <- valor / 60
  cat("Resultado:", resultado, "horas\n")

} else if(origen == "m" && destino == "s"){

  resultado <- valor * 60
  cat("Resultado:", resultado, "segundos\n")

} else if(origen == "s" && destino == "m"){

  resultado <- valor / 60
  cat("Resultado:", resultado, "minutos\n")

} else if(origen == "s" && destino == "h"){

  resultado <- valor / 3600
  cat("Resultado:", resultado, "horas\n")

} else if(origen == destino){

  cat("Las unidades son iguales\n")

} else {

  cat("Conversión inválida\n")
}
## Las unidades son iguales

EJERCICIO 7

Planteamiento del problema

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

Código en R

cat("ORDENAR NÚMEROS\n")
## ORDENAR NÚMEROS
## ORDENAR NÚMEROS

numeros <- c(8, 3, 10, 1, 5)

cat("Números originales:\n")
## Números originales:
## Números originales:

print(numeros)
## [1]  8  3 10  1  5
## 8 3 10 1 5

ordenados <- sort(numeros)

cat("Números ordenados:\n")
## Números ordenados:
## Números ordenados:

print(ordenados)
## [1]  1  3  5  8 10

EJERCICIO 8

Planteamiento del problema

Escribir un programa que calcule el factorial de un número que ha sido digitado por el usuario. Código en R

Código en R

cat("CÁLCULO DE FACTORIAL\n")
## CÁLCULO DE FACTORIAL
num <- 5

factorial <- 1

if(num > 0){

  for(i in 1:num){
    factorial <- factorial * i
  }

  cat("El factorial de", num, "es:", factorial, "\n")

} else {

  cat("Debe ingresar un número positivo\n")
}
## El factorial de 5 es: 120

EJERCICIO 9

Planteamiento del problema

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

Código en R

cat("NÚMERO PRIMO\n")
## NÚMERO PRIMO
## NÚMERO PRIMO

num <- as.numeric(readline("Ingrese un número entero: "))
## Ingrese un número entero:
## Ingrese un número entero:

num <- 7

primo <- TRUE

if(num <= 1){
primo <- FALSE

} else {

for(i in 2:(num-1)){

if(num %% i == 0){
primo <- FALSE
}

}
}

if(primo){
cat("El número es primo\n")

} else {
cat("El número no es primo\n")
}
## El número es primo

EJERCICIO 10

Planteamiento del problema

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

Código en R

cat("NUMERO PAR O IMPAR\n")
## NUMERO PAR O IMPAR
num <- 8

if(num %% 2 == 0){

  cat("El número es par\n")

} else {

  cat("El número es impar\n")

}
## El número es par

7. CONCLUSIONES Y RECOMENDACIONES

CONCLUSIONES

  • El desarrollo de los ejercicios permitió fortalecer los conocimientos básicos de programación en lenguaje R mediante la aplicación de estructuras condicionales y repetitivas.

  • Se comprobó la utilidad de R para resolver problemas matemáticos y de conversión de manera rápida y eficiente.

  • La implementación de algoritmos facilitó la comprensión lógica de los procesos necesarios para obtener resultados correctos en distintos tipos de ejercicios.

  • El uso de RMarkdown o Quarto permitió integrar teoría, código y resultados en un mismo documento, mejorando la presentación y organización del informe.

  • La práctica realizada contribuyó al desarrollo de habilidades en programación orientadas al análisis y resolución de problemas computacionales.

RECOMENDACIONES

  • Utilizar estructuras condicionales y repetitivas en diferentes tipos de programas para mejorar la comprensión de algoritmos.

  • Implementar validaciones de datos ingresados por el usuario para evitar errores en la ejecución de los programas.

  • Emplear herramientas como RMarkdown o Quarto para elaborar informes más organizados y profesionales integrando código y resultados.

  • Investigar nuevas funciones y librerías de R que permitan optimizar procesos matemáticos, estadísticos y computacionales.

  • Realizar pruebas constantes a los programas desarrollados con el fin de verificar la exactitud de los resultados obtenidos.

BIBLIOGRAFÍAS:

1.- Jordanbs. (2022). Introducción a R. RPubs. https://rpubs.com/Jordanbs/982558

2.- Universidad Nacional de Educación a Distancia. (s.f.). Conceptos básicos de programación. UNED. https://portal.uned.es/Publicaciones/htdocs/pdf.jsp?articulo=0102086CT01L01

3.- R Coder. (s.f.). Tipos de datos en R. https://r-coder.com/tipos-datos-r/