UNIVERSIDAD CENTRAL DEL ECUADOR

FACULTAD DE CIENCIAS ECONÓMICAS

INGENIERIA EN ESTADÍSTICA

APLICANDO CONOCIMIENTOS ADQUIRIDOS ACERCA DE CICLOS REPETITIVOS

En este documento se presentan 10 ejercicios de aprendizaje sobre ciclos repetitivos, para la comunidad de RStudio.

AUTORES

COLABORACIÓN

EJERCICIOS

EJERCICIO 1

- Escribe un programa que diga si un número introducido por teclado es o no primo. Un número primo es aquel que sólo es divisible entre él mismo y la unidad. Nota: Es suficiente probar hasta la raíz cuadrada del número para ver si es divisible por algún otro número.

num_primos <- function(num5) {
  num5<-as.integer(readline("Ingrese el numero a verificar: "))
  residuo<-(sum(num5/1:num5==num5%/%1:num5))
  if(residuo==2)
  {
    cat("El número", num5, "es primo")
  }else
  {
    cat("El número",num5, "no es primo")
  }
}
num_primos()
## El número 6 no es primo

EJERCICIO 2

- Realizar un algoritmo para determinar cuánto ahorrará una persona en un año, si al final de cada mes deposita cantidades variables de dinero; además, se quiere saber cuánto lleva ahorrado cada mes.

ahorro_persona <- function(cantidad) {
  cantidad <- scan()
  cat("Las cantidades a ahorrar son:","\n", cantidad)
  sumaa <- sum(cantidad)
  cat("\n","El total a ahorrar en un año es de:", sumaa, "dólares")
}
ahorro_persona()
## Las cantidades a ahorrar son: 
##  15 25 30 150 200 98 23 147 258 369 123 456
##  El total a ahorrar en un año es de: 1894 dólares

EJERCICIO 3

- Una empresa tiene el registro de las horas que trabaja diariamente un empleado durante la semana (seis días) y requiere determinar el total de éstas, así como el sueldo que recibirá por las horas trabajadas.

sueldo_empleado <- function(sueldo, horas) {
  sueldo <- as.numeric(readline("Ingrese el sueldo que gana por horas:"))
  horas <- as.numeric(readline("Ingrese las horas trabajadas por día:"))
  sueldo_diario <- (sueldo * horas)*6
  cat("El sueldo a recibir es de:", sueldo_diario)
}
sueldo_empleado()
## El sueldo a recibir es de: 150

EJERCICIO 4

- Una persona se encuentra en el kilómetro 70 de una carretera, otra se encuentra en el km 150, los coches tienen sentido opuesto y tienen la misma velocidad. Realizar un programa para determinar en qué kilómetro de esa carretera se encontrarán.

kilometro <- function() {
  km1 <- 70
  km2 <- 150
  kim_encuentro <- km1 + (km2 - km1)/2
  cat("El kilómetro en el cual se encuentran es:", kim_encuentro, "kilómetros")
}
kilometro()
## El kilómetro en el cual se encuentran es: 110 kilómetros

EJERCICIO 5

- Una persona adquirió un producto para pagar en 20 meses. El primer mes pagó 10 €, el segundo 20 €, el tercero 40 € y así sucesivamente. Realizar un algoritmo para determinar cuánto debe pagar mensualmente y el total de lo que pagó después de los 20 meses.

producto <- function(pago, contador) {
  contador <- 5
  for (pago in 1:20) {
    contador <- (contador * 2)
    cat("El pago del mes", pago, "es:", contador, "\n")
  }
}
producto()
## El pago del mes 1 es: 10 
## El pago del mes 2 es: 20 
## El pago del mes 3 es: 40 
## El pago del mes 4 es: 80 
## El pago del mes 5 es: 160 
## El pago del mes 6 es: 320 
## El pago del mes 7 es: 640 
## El pago del mes 8 es: 1280 
## El pago del mes 9 es: 2560 
## El pago del mes 10 es: 5120 
## El pago del mes 11 es: 10240 
## El pago del mes 12 es: 20480 
## El pago del mes 13 es: 40960 
## El pago del mes 14 es: 81920 
## El pago del mes 15 es: 163840 
## El pago del mes 16 es: 327680 
## El pago del mes 17 es: 655360 
## El pago del mes 18 es: 1310720 
## El pago del mes 19 es: 2621440 
## El pago del mes 20 es: 5242880

EJERCICIO 6

- Una empresa les paga a sus empleados con base en las horas trabajadas en la semana. Realice un algoritmo para determinar el sueldo semanal de N trabajadores y, además, calcule cuánto pagó la empresa por los N empleados.

contador <- 0
empresa <- function(num1, x1, x2) {
  num1 <- as.numeric(readline("Ingrese el número de trabajadores: "))
  for (num1 in 1:num1) {
    x1 <- as.numeric(readline("Ingresa el valor de horas trabajadas:"))
    x2 <- as.numeric(readline("ingresa el valor de pago por hora:"))
    sueldosem <- x1*x2
    contador <- contador + sueldosem
    cat("El sueldo a recibir es:", sueldosem )
  }
  cat("\n","Por lo tanto","\n","La empresa pagó un total de:", contador, " dólares")
}
empresa()
## El sueldo a recibir es de 375 dólares
##  Por lo tanto 
##  La empresa pagó un total de 1800 dólares

EJERCICIO 7

- Una empresa les paga a sus empleados con base en las horas trabajadas en la semana. Para esto, se registran los días que trabajó y las horas de cada día. Realice un algoritmo para determinar el sueldo semanal de N trabajadores y además calcule cuánto pagó la empresa por los N empleados.

contador <- 0
dias_horas <- function(trabajadores, dias, horas, valor) {
  trabajadores <- as.numeric(readline("Ingrese el número de trabajadores: "))
  for (trabajadores in 1:trabajadores) {
    dias <- as.numeric(readline("Ingresa el número de días trabajados:"))
    horas <- as.numeric(readline("Ingresa las horas trabajadas al día:"))
    valor <- as.numeric(readline("Ingresa el valor de pago por hora:"))
    horas_trabajo <- dias*horas
    sueldosem <- horas_trabajo * valor
    contador <- contador + sueldosem
    cat("El sueldo a recibir es:", sueldosem )
  }
  cat("\n","Por lo tanto","\n","La empresa pagó un total de:", contador, " dólares")
}
dias_horas()
## El sueldo a recibir es: 700
##  Por lo tanto 
##  La empresa pagó un total de: 700  dólares

EJERCICIO 8

- Hacer un programa que muestre un cronometro, indicando las horas, minutos y segundos.

hora <- 0
minuto <- 0
segundo <- 0
cronometro <- function(hora, minuto, segundo) {
  for (hora in 0:23) {
    for (minuto in 0:59) {
      for (segundo in 0:59) {
        Sys.sleep(1)
        print(paste("HORA :",hora))
        print(paste("MINUTO :",minuto))
        print(paste("SEGUNDO :",segundo))
      }
    }
  }
}

EJERCICIO 9

- Realizar un ejemplo de menú, donde podemos escoger las distintas opciones hasta que seleccionamos la opción de “Salir”.

# library(svDialogs)
menu<-function(){ 
  opc1<-as.numeric(dlgInput(message="MENÚ PRINCIPAL 
               
               1.- Opción 1
               2.- Opción 2       
               3.- Opción 3 
               4.- Opción 4 
               5.- Salir 
               
               ---SELECCIONE UNA OPCIÓN:---")$res)
  if(opc1==1){
    opc1 <- dlgInput(message="Opción 1:         
               1.- Regresar al menú
               2.- Salir
               
               ---SELECCIONE UNA OPCIÓN:---")$res  
    opc1<-as.character(opc1)
    if(opc1==1){menu()}
    
  }else if(opc1==2){
    
    opc1 <- dlgInput(message="Opción 2:         
               1.- Regresar al menú
               2.- Salir
               
               ---SELECCIONE UNA OPCIÓN:---")$res
    opc1<-as.numeric(opc1)
    if(opc1==1){menu()}
    
  }else if(opc1==3){
    opc1 <- as.numeric(dlgInput(message="Opción 3:
               1.- Regresar al menú
               2.- Salir
               
               ---SELECCIONE UNA OPCIÓN:---")$res)
    if(opc1==1){menu()}
    
  }else if(opc1==4){
    opc1 <- as.numeric(dlgInput(message="Opción 4: 
               1.- Regresar al menú
               2.- Salir
               ---SELECCIONE UNA OPCIÓN:---")$res)
    if(opc1==1){menu()}
    
  }
}

EJERCICIO 10

- Mostrar en pantalla los N primero número primos. Se pide por teclado la cantidad de números primos que queremos mostrar.

numeros_primos <- function(num) {
  num<-as.numeric(readline("Ingrese la cantidad de números que desea observar: "))
  primo <- numeric()
  noprimo <- numeric()
  for (k in 1:num)
  {
    if (sum(k/1:k==k%/%1:k)==2)
    {
      noprimo <- c(noprimo,k)
    } else
    {
      primo <- c(primo,k)
    }
  }
  primo
  noprimo
}
numeros_primos()
## [1]  2  3  5  7 11 13

EL CONOCIMIENTO ES LA GUÍA PARA FORJAR UN FUTURO MEJOR