Ejercicios Acerca de Ciclos Repetitivos

En el presente informe presentaremos ejercicios que requieren la utilizacion de ciclos repetitivos como son el if, while, for y demás.

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.

Paso 1: Requeriremos usar el comando function() que permite definir una función dentro de otra función, es decir, se puede utilizar como argumento para otras funciones o se pueden ejecutar desde otras funciones.

Paso 2: El comando if (si) lo usaremos cuando deseamos que una operación se ejecute únicamente cuando una condición se cumple.

Paso 3: El comando else (de otro modo) es usado para indicarle a R qué hacer en caso de la condición de un if no se cumpla.

primo <- function()
{
  num4<-as.integer(dlgInput(message="INGRESE UN NUMERO ")$res)
  if(sum(num4/1:num4==num4%/%1:num4)==2){
    (m <- paste0("EL NUMERO ", num4 , " ES PRIMO "))
  }else{(m <- paste0("EL NUMERO ", num4, " NO ES PRIMO"))}
  }
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.

Paso 1: Requeriremos usar el comando function() que permite definir una función dentro de otra función, es decir, se puede utilizar como argumento para otras funciones o se pueden ejecutar desde otras funciones.

Paso 2: La función data.frame()usaremos para crea marcos de datos, colecciones de variables.

Paso 3: La función cat() convierte sus argumentos en cadenas de caracteres, los concatena, separándolos y luego los imprime.

ahorros<-function(a){
  print("DEPOSITO ANUAL")
  MESES<-c("ENERO","FEBRERO","MARZO","ABRIL","MAYO","JUNEO",
           "JULIO","AGOSTO","SEPTIEMBRE","OCTUBRE","NOVIEMBRE","DICIEMBRE")
  DEPOSITOS_M<-round(runif(12,min = 250,max = 500),2)
  DATOS<-data.frame(MESES,DEPOSITOS_M)
  print(DATOS)
  cat("TOTAL DE DEPOSITO ANUAL : ",sum(DEPOSITOS_M))
}
depositosA<-ahorros(a)
## [1] "DEPOSITO ANUAL"
##         MESES DEPOSITOS_M
## 1       ENERO      463.69
## 2     FEBRERO      446.56
## 3       MARZO      441.50
## 4       ABRIL      472.11
## 5        MAYO      300.90
## 6       JUNEO      285.47
## 7       JULIO      363.57
## 8      AGOSTO      332.29
## 9  SEPTIEMBRE      469.93
## 10    OCTUBRE      303.54
## 11  NOVIEMBRE      495.55
## 12  DICIEMBRE      459.61
## TOTAL DE DEPOSITO ANUAL :  4834.72

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.

Paso 1: Requeriremos usar el comando function() que permite definir una función dentro de otra función, es decir, se puede utilizar como argumento para otras funciones o se pueden ejecutar desde otras funciones.

Paso 2: La función data.frame()usaremos para crea marcos de datos, colecciones de variables.

Paso 3: La función cat() convierte sus argumentos en cadenas de caracteres, los concatena, separándolos y luego los imprime.

horas<-function(h){
  DIAS<-c("lunes","martes","miercoles","jueves","viernes","sabado")
  print("Horas durante la semana")
  HORAS<-round(runif(6,min = 8,max = 9),0)
  print("Sueldos por hora")
  SUELDO<-round(runif(6,min = 20,max = 25),2)
  REGISTRO<-data.frame(DIAS,HORAS,SUELDO)
  print(REGISTRO)
  
  cat("TOTAL DE SUELDO POR EL TRABAJO EN LA SEMANA : ",sum(SUELDO))
  
}
total<-horas(h)
## [1] "Horas durante la semana"
## [1] "Sueldos por hora"
##        DIAS HORAS SUELDO
## 1     lunes     9  23.79
## 2    martes     8  21.47
## 3 miercoles     8  24.62
## 4    jueves     8  22.32
## 5   viernes     8  20.75
## 6    sabado     8  22.82
## TOTAL DE SUELDO POR EL TRABAJO EN LA SEMANA :  135.77

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.

Paso 1: Para la resolución de este ejercicio utilizaremos el comando función y en el cuerpo de ella colocamos lo que queremos que se realice, además de que inicializamos dos variables las cuales ya nos da el valor de cada una en el enunciado.

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

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.

Paso 1: Inicializamos dos variables

Paso 2:Utilizamos el ciclo for para que al finalizar los 20 meses se termine el bucle y nos imprima la solución del ejercicio.

pago <-  5
total <- 0
total_a_pagar<-function(n){
  for(n in 1:20){
    pago<- pago*2
    total<- total + pago
    print(paste("En el mes", n, "pagaras: $", pago))
  }
  print(paste("El total que tendrás que pagar finalizado los 20 meses será de:", total, "$"))
}
total_a_pagar()

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.

Paso 1: Inicializamos un contadores que nos serviran para realizar el ejercicio.

Paso 2:Utilizamos el comando función y dentro de ella el bucle for con las respectivas operaciones para que al cumplir con el número de trabajadores que el usuario haya ingresado se termine el bucle e imprima el resultado.

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

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.

Paso 1: Creamos un contador

Paso 2: Utilizamos el comando función, asignamos variables y con readline se podrá leer lo que el usuario ingrese. Dentro de ella también usamos el bucle for, el que contiene todas las operaciones respectivas y para que cuando se termine de evaluar a todo el número de trabajadores ingresados nos imprima el resultado.

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","La empresa pagó un total de:", contador, " dólares")
}
dias_horas()

PROGRAMA 8

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

Paso 1: Utilizamos el comando “print” para imprimir texto en pantalla, creamos tres variables “i”,“j”,“k” que nos indicaran las horas,minutos y segundos, también utilizamos los bucles “for”.

print("CRON?METRO")
i<-0
j<-0
k<-0
for (i in 0:23) {
  for (j in 0:59) {
    for (k in 0:59) {
      Sys.sleep(1)
      print(paste(i,":",j,":",k))
    }
  }
}

PROGRAMA 9

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

Paso 1: Utilizamos “while” el cual ejecuta un bucle mientras sea verdadera una condición, también utilizamos “if else” este comando nos permite decidir si se ejecuta o no un fragmento de código en función de condición.

Opcion<-""

while(Opcion!="Salir"){
  Opcion <- readline(prompt="Elija entre estas opciones:\n-Opc1\n-Opc2\n-Opc3\n-Salir: ")
  if (Opcion=="Opc1"){
    print("Escogi? opci?n 1")
  }else{
    if (Opcion=="Opc2"){
      print("Escogi? opci?n 2")
    }else{
      if (Opcion=="Opc3"){
        print("Escogi? opci?n 3")
      }else{
        if (Opcion=="Salir"){
          print("Sali? del men?")
          break
        }else{
          print("Opci?n incorrecta")
        }
      }
    }
  }
}

PROGRAMA 10

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

Paso 1: Creamos la varible N, utilizamos la función “readline” que sirve para escribir un mensaje en la consola, creamos la variable (i,j,k,l,m).

N <- readline(prompt="INGRESE LOS NUMEROS PRIMOS QUE DESEE ")
N  <- as.integer(N)
i<-0
j<-0
k<-0
l<-0
m<-0
while(j < N) {
  k<-k+1
  m<-0
  for (i in 1:k) {
    l<-k%%i
    if (l==0){
      m<-m+1
    }
  }
  if (m==2){
    print(paste(k))
    j<-j+1
  }
}