UNIVERSIDAD CENTRAL DEL ECUADOR
FACULTAD DE CIENCIAS ECONÓMICAS
CARRERA DE ESTADÍSTICA

Autores:

Grupo 5

Ejercicios acerca de Estructuras de Control en R

EJERCICIO N°1

Crea una aplicación que pida un número y calcule su factorial (El factorial de un número es el producto de todos los enteros entre 1 y el propio número y se representa por el número seguido de un signo de exclamación. Por ejemplo 5! = 1x2x3x4x5=120)

Ejecución del ejercicio: `

function: una función es un objeto, por lo que el intérprete de R puede pasar el control a la función, junto con los argumentos que pueden ser necesarios para que la función realice las acciones. La función, a su vez, realiza su tarea y devuelve el control al intérprete, así como cualquier resultado que pueda estar almacenado en otros objetos.

Comenzaremos por asignar una variable para la funcion, seguido utilizaremos function() dentro del parentesis pondremos la variable a la que le vamos a aplicar la funcion. Para nuestra funcion utilizaremos un contador y un condicional for()

Utilizamos la library(svDialogs) para crear una ventana e ingresar opciones o valores

  • Sintaxis del ejercicio en cual pedimos al usuario que ingrese el número
library(svDialogs) 

fac1 <- function(n){
  factorial = 1
  for (i in 1:n){
    factorial <- factorial*i
  }
  return(print(paste("El factorial del valor", n,"!", "es =", factorial)))
}
fac1(n<-dlgInput(message="Por favor, ingrese un número para calcular el factorial: ")$res)
  • Sintaxis del ejercicio ingresando nostros el número, en este caso es 5
library(svDialogs) 
## Warning: package 'svDialogs' was built under R version 4.3.1
fac1 <- function(n){
  factorial = 1
  for (i in 1:n){
    factorial <- factorial*i
  }
  return(print(paste("El factorial del valor", n,"!", "es =", factorial)))
}
fac1(5)
## [1] "El factorial del valor 5 ! es = 120"

EJERCICIO N°2

Crea una aplicación que permita adivinar un número. La aplicación genera un número aleatorio del 1 al 100. A continuación va pidiendo números y va respondiendo si el número a adivinar es mayor o menor que el introducido,a demás de los intentos que te quedan (tienes 10 intentos para acertarlo). El programa termina cuando se acierta el número (además te dice en cuantos intentos lo has acertado), si se llega al limite de intentos te muestra el número que había generado.

Ejecución del ejercicio:

funciones a usar en el ejercicio:

  • print: imprime su argumento y lo devuelve de forma invisible

  • paste:es una función R incorporada que se utiliza para concatenar vectores convirtiéndolos en caracteres.

  • sample: muestras aleatorias y permutaciones

  • dlgInput:un cuadro de entrada simple

  • winDialog: cuadros de diálogo en Windows

numganador<-sample(1:100,1)

cont<-1

while (cont<11) 
{
  num1<- dlgInput(message="Ingrese un número ")$res
  if (num1==numganador)
  {
    resultado<-paste("Adivinaste el número ")
    winDialog(message=resultado)
    cont<-12
  } else
  {
    if (num1>numganador)
    {
      winDialog(message="El número es mas bajo")
    } else
    {
      if (num1<numganador)
      {
        winDialog(message="El número es muy alto")
      } 
    }
  }
  if (cont == 10)
  {
    x<-paste("Haz agotado los intentos. El número correcto es ",numganador)
    winDialog(message=x)
  }
  cont<-cont+1
}

EJERCICIO N°3

Algoritmo que pida números hasta que se introduzca un cero. Debe imprimir la suma y la media de todos los números introducidos.

Ejecución del ejercicio:

count <- 0
contador <- 0
suma_media <- function(num) {
  repeat {
    num <- as.numeric(dlgInput("Ingrese un número: ")$res)
    contador <- contador + 1
    count <- count + num
    suma <- sum(count)
    media <- (suma/contador)
    if(num == 0) {
      break }
    else {
      print(paste("LA SUMA ES:", suma));print(paste("LA MEDIA ES:", media))
    }
  }
}
suma_media()

EJERCICIO N°4

Realizar un algoritmo que pida números (se pedirá por teclado la cantidad de números a introducir). El programa debe informar de cuantos números introducidos son mayores que 0, menores que 0 e iguales a 0.

Ejecución del ejercicio:

numeros<-function(num1,num2){
  num1 <- as.numeric(readline("Ingrese la cantidad de números que desee ingresar: "))
  for (num1 in 1:num1){
    num2 <- as.numeric(readline("Ingrese un número: "))
    if(num2==0)
    {
      print(paste(num2,"ES IGUAL A 0"))
    }else
    {if(num2> 0)
    {
      print(paste(num2," ES MAYOR A 0")) }else
      {
        print(paste(num2," ES MENOR A 0")) 
      }}}}
numeros(num2<-scan(what= numeric()))

EJERCICIO N°5

Algoritmo que pida caracteres e imprima ‘VOCAL’ si son vocales y ‘NO VOCAL’ en caso contrario, el programa termina cuando se introduce un espacio.

Ejecución del ejercicio:

entrada<- ""
while(entrada !=  " ")
{
  entrada<- dlgInput(message="Ingrese una letra:")$res
  for(i in entrada) 
  {
    if(i== "a" | i== "e" | i== "i" | i== "o" | i== "u")
    {
      print(paste(i,"Es Vocal"))
    }else
    {
      print(paste(i,"No es Vocal")) 
    }
  }
}

EJERCICIO N°6

Escribir un programa que imprima todos los números pares entre dos números que se le pidan al usuario.

Ejecución del ejercicio:

pares<-function(x,y) 
{
  for(pares in x:y) 
    {
    if(pares%%2==0)
      print(pares)
  }
}

pares(1,20)
## [1] 2
## [1] 4
## [1] 6
## [1] 8
## [1] 10
## [1] 12
## [1] 14
## [1] 16
## [1] 18
## [1] 20

EJERCICIO N°7

Realizar un algoritmo que muestre la tabla de multiplicar de un número introducido por teclado.

Ejecución del ejercicio:

f1<-function(tabla, lim){
  for(i in 1:lim){
    mult<- tabla*i
    print(paste(i, "x", tabla, "=", mult))
  }
}
f1(tabla<-as.numeric(dlgInput(message="QUE TABLA DE MULTIPLICAR DESEA REALIZAR:")$res),
   lim<-as.numeric(dlgInput(message="HASTA QUE NUMERO QUIERE MULTIPLICAR:")$res))

EJERCICIO N°8

Escribe un programa que pida el limite inferior y superior de un intervalo. Si el límite inferior es mayor que el superior lo tiene que volver a pedir. A continuación se van introduciendo números hasta que introduzcamos el 0. Cuando termine el programa dará las siguientes informaciones:

  • La suma de los números que están dentro del intervalo (intervalo abierto).
  • Cuantos números están fuera del intervalo.
  • He informa si hemos introducido algún número igual a los límites del intervalo.

Ejecución del ejercicio:

suma <- 0
cont <- 0
for (k in 1:100000) {
  inf <- as.numeric(readline("INGRESE EL LIMITE INFERIOR:"))
  sup <- as.numeric(readline("INGRESE EL LIMITE SUPERIOR:"))
  while (inf>sup | inf==sup) {
    print("INGRESE UN LIMITE SUPERIOR MAYOR AL INFERIOR")
    inf <- as.numeric(readline("INGRESE EL LIMITE INFERIOR:"))
    sup <- as.numeric(readline("INGRESE EL LIMITE SUPERIOR:")) }
  num <- as.numeric(readline("INTRODUZCA UN NUMERO:"))
  if (num>inf & num<sup){
    suma <- suma+num}
  if (num<inf | num>sup){
    cont=cont+1}
  if (num==inf | num==sup){
    cat(num,"es igual a uno de los limites \n")}
  while (num!=0) {
    num <- as.numeric(readline("INTRODUZCA UN NUMERO:"))
    if (num>inf & num<sup){
      suma <- suma+num }
    if (num<inf | num>sup){
      cont=cont+1 }
    if (num==inf | num==sup){
      cat(num,"es igual a uno de los limites \n")}}
  cat("LA SUMA DE LOS NUMEROS ES:",suma,"\n")
  cat("LA CANTIDAD DE NUMEROS FUERA DE LOS LIMITES SON: ",cont,"\n")
  op <- tolower(readline("QUIERE CONTINUAR? s/n"))
  if (op=="s" | op=="si"){
    k <- 1
    suma=0
    cont=0
  }else{
    break
  }}

EJERCICIO N°9

Escribe un programa que dados dos números, uno real (base) y un entero positivo (exponente), saque por pantalla el resultado de la potencia. No se puede utilizar el operador de potencia.

Ejecución del ejercicio:

exp1 <- function(base, exponente){
  potencia <- 1
  for (i in 1:exponente)
  {
    potencia<- potencia*base
  }
  return(print(paste(base, "elevado a", exponente, "es =", potencia)))
}
exp1(base<-as.numeric(dlgInput(message="INGRESE LA BASE:")$res),
   exponente<-as.numeric(dlgInput(message="INGRESE EL EXPONENTE:")$res))

EJERCICIO N°10

Algoritmo que muestre la tabla de multiplicar de los números 1,2,3,4 y 5.

Ejecución del ejercicio:

tabla<- 1:5
for(k in 1:12)
{
  mult<- tabla * k
  print(paste(tabla, "x", k, "=", mult))
} 
## [1] "1 x 1 = 1" "2 x 1 = 2" "3 x 1 = 3" "4 x 1 = 4" "5 x 1 = 5"
## [1] "1 x 2 = 2"  "2 x 2 = 4"  "3 x 2 = 6"  "4 x 2 = 8"  "5 x 2 = 10"
## [1] "1 x 3 = 3"  "2 x 3 = 6"  "3 x 3 = 9"  "4 x 3 = 12" "5 x 3 = 15"
## [1] "1 x 4 = 4"  "2 x 4 = 8"  "3 x 4 = 12" "4 x 4 = 16" "5 x 4 = 20"
## [1] "1 x 5 = 5"  "2 x 5 = 10" "3 x 5 = 15" "4 x 5 = 20" "5 x 5 = 25"
## [1] "1 x 6 = 6"  "2 x 6 = 12" "3 x 6 = 18" "4 x 6 = 24" "5 x 6 = 30"
## [1] "1 x 7 = 7"  "2 x 7 = 14" "3 x 7 = 21" "4 x 7 = 28" "5 x 7 = 35"
## [1] "1 x 8 = 8"  "2 x 8 = 16" "3 x 8 = 24" "4 x 8 = 32" "5 x 8 = 40"
## [1] "1 x 9 = 9"  "2 x 9 = 18" "3 x 9 = 27" "4 x 9 = 36" "5 x 9 = 45"
## [1] "1 x 10 = 10" "2 x 10 = 20" "3 x 10 = 30" "4 x 10 = 40" "5 x 10 = 50"
## [1] "1 x 11 = 11" "2 x 11 = 22" "3 x 11 = 33" "4 x 11 = 44" "5 x 11 = 55"
## [1] "1 x 12 = 12" "2 x 12 = 24" "3 x 12 = 36" "4 x 12 = 48" "5 x 12 = 60"