APLICANDO CONOCIMIENTOS ADQUIRIDOS ACERCA DE ESTRUCTURAS DE CONTROL
En este documento se presentan 10 ejercicios de aprendizaje sobre las estructuras de contol, para la comunidad de RStudio.
AUTORES
COLABORACIÓN
EJERCICIO 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).
ffactorial <- function(num1) {
num1 <- as.numeric(readline("Ingrese el numero que desee calcular el factorial: "))
nfact <- (1:num1)
resp <- prod(nfact)
cat("El factorial de",num1,"es:",resp)
}
ffactorial()
## El factorial de 5 es: 120
EJERCICIO 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.
# library(svDialogs)
aleatorio <-sample(1:100,1)
contador <- 1
while (contador < 11)
{
num<- dlgInput(message="Inserte un número:")$res
if (num==aleatorio)
{
resul<-paste("Excelente acertaste, el número era", num)
winDialog(message=resul)
contador<-12
} else
{
if (aleatorio>num)
{
winDialog(message="El número es demasiado bajo")
} else
{
if (aleatorio<num)
{
winDialog(message="El número es demasiado alto")
}
}
}
if (contador == 10)
{
x<-paste("oh, oh se terminaron tus oportudidades, el número era:",aleatorio)
winDialog(message=x)
}
contador<-contador+1
}
EJERCICIO 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.
count <- 0
contador <- 0
suma_media <- function(num2) {
repeat {
num2 <- as.numeric(readline("Ingrese un número: "))
contador <- contador + 1
count <- count + num2
sumaa1 <- sum(count)
media1 <- (sumaa1/contador)
if(num2 == 0) {
break }
else {
cat("La suma es de los números ingresados es:", sumaa1 ,"y la media es:", media1)
}
}
}
suma_media()
## La suma es de los números ingresados es: 30 y la media es: 10
EJERCICIO 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.
count_mayor <- 0
count_menor <- 0
count_igual <- 0
alg_numeros <- function(num3, num4) {
num3 <- as.numeric(readline("Ingrese la cantidad de números que desee ingresar: "))
for (num3 in 1:num3) {
num4 <- as.numeric(readline("Ingrese un número: "))
if(num4 > 0) {
count_mayor <- count_mayor + 1
cat("La cantidad de números ingresados mayores a cero es:", count_mayor)
}
else
{
if (num4 < 0) {count_menor <- count_menor + 1
cat("La cantidad de números ingresados menores a cero es:", count_menor)
}
else {
count_igual <- count_igual + 1
cat("La cantidad de números ingresados iguales a cero es:", count_igual)
}
}
}
}
alg_numeros()
## La cantidad de números ingresados mayores a cero es: 3
## La cantidad de números ingresados menores a cero es: 4
## La cantidad de números ingresados iguales a cero es: 2
EJERCICIO 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.
vocales <- function(caracter1) {
repeat {
caracter1 <- as.character(readline("Ingrese una letra: "))
if(caracter1 == "a" | caracter1 == "e" | caracter1 == "i" | caracter1 == "o" | caracter1 == "u" & caracter1 != " "){
cat(caracter1, "es una vocal")
} else {
if(caracter1 == 0) {
break }
else {
cat(caracter1, "no es una vocal")
}
}
}
}
vocales()
## a es una vocal
EJERCICIO 6
- Escribir un programa que imprima todos los números pares entre dos números que se le pidan al usuario.
# library(svDialogs)
num_pares<-function(n1, n2)
{
for(k in n1:n2)
{if(k%%2 ==0)
{
print(paste(k,"Número par"))
}else
{
" "
}
}
}
num_pares(n1<-as.numeric(dlgInput(message="Ingrese el número de inicio:")$res),
n2<-as.numeric(dlgInput(message="Ingrese el número final:")$res))
num_pares()
## [1] "6 Número par"
## [1] "8 Número par"
## [1] "10 Número par"
## [1] "12 Número par"
## [1] "14 Número par"
EJERCICIO 7
- Realizar una algoritmo que muestre la tabla de multiplicar de un número introducido por teclado.
tab_multiplicar <-function(tabla,lim)
{
for(j in 1:lim)
{
mult<- j * tabla
print(paste(tabla, "x", j, "=", mult))
}
}
tab_multiplicar(tabla<-as.numeric(dlgInput(message="La tabla a multiplicar es:")$res),
lim<-as.numeric(dlgInput(message="Hasta que número desea multiplicar:")$res))
tab_multiplicar()
## [1] "6 x 1 = 6"
## [1] "6 x 2 = 12"
## [1] "6 x 3 = 18"
## [1] "6 x 4 = 24"
## [1] "6 x 5 = 30"
## [1] "6 x 6 = 36"
## [1] "6 x 7 = 42"
## [1] "6 x 8 = 48"
## [1] "6 x 9 = 54"
## [1] "6 x 10 = 60"
## [1] "6 x 11 = 66"
## [1] "6 x 12 = 72"
EJERCICIO 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.
numeros <- 1
suma <- 0
contador3 <- 0
lim_inferior <- as.numeric(dlgInput(message="Inserte el límite inferior")$res);
lim_superior <- as.numeric(dlgInput(message="Inserte el límite superior")$res)
while(numeros != 0)
{
if (lim_inferior > lim_superior) {
lim_superior <- as.numeric(dlgInput(message="Inserte el límite superior")$res)
} else {
numeros<-as.numeric(dlgInput(message="Inserte un número")$res)
suma<- suma + numeros
contador3<- contador3 +1
}
}
print(paste("La suma de las cantidades del intevalo es:", suma));
print(paste("Se ingresaron:", contador3, "números fuera del intervalo"))
## [1] "La suma de las cantidades del intevalo es: 127"
## [1] "Se ingresaron: 6 números fuera del intervalo"
EJERCICIO 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.
# library(svDialogs)
funcion_exponente <- function(base,exp) {
pot <- 1
for (h in 1:exp)
{
pot <- pot * base
}
return(print(paste(base, "elevado a:", exp, "es = ", pot)))
}
funcion_exponente(base<-as.numeric(dlgInput(message="La base es:")$res),
exp<-as.numeric(dlgInput(message="El exponente es:")$res))
funcion_exponente()
## [1] "2 elevado a 5 es = 32"
EJERCICIO 10
- Algoritmo que muestre la tabla de multiplicar de los números 1,2,3,4 y 5.
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"