sábado, 23 de julio de 2011

while

En programación existen ciertas herramientas fundamentales y universales denominadas colectivamente Estructuras de Control. En esta categoría se encuentran los "loops" (lazos, ciclos) y "condicionales".
En esta entrada se va a mostrar el uso del "while" en R

## Estructura básica:
while(condición) comando
## Se ejecuta el "comando" repetidamente, siempre que la "condición" sea TRUE
 
#############################################
## Paréntesis: sobre operadores lógicos
## La "condición" es el resultado de una operación lógica, así que debe ser
## TRUE o FALSE
## Algunas operaciones lógicas sencillas:
3 > 2  # TRUE  (¿tres es mayor que dos?)
3 < 2  # FALSE (¿tres es menor que dos?)
3 == 2 # FALSE (¿tres es igual a dos?)
## Con el ! se cambia un TRUE por FALSE y viceversa (equivale a multiplicar
## por -1):
!(3 > 2)
!(3 == 2)
 
## Se pueden juntar varias condiciones con los operadores AND y OR
 
## AND:
condición1 && condición2 ## ¿Se cumplen ambas condiciones?
## Da TRUE sí y sólo sí condición1 es TRUE y condición2 es TRUE
## Ej.:
3 > 2 && 4/5 < 7/8  ## TRUE
3 > 2 && 4/5 == 7/8 ## FALSE
 
## OR:
condición1 || condición2 ## ¿Se cumple al menos una condición?
## Da TRUE si al menos una de las dos condiciones es TRUE
3 > 2 || 4/5 < 7/8  ## TRUE
3 > 2 || 4/5 == 7/8 ## TRUE
1 > 2 || 4/5 == 7/8 ## FALSE
## Final del paréntesis.
#############################################
 
## Retomando el uso de while, veamos un ejemplo:
x <- 1 ## valor inicial...
while(x < 11) { ## La condición es que x sea menor a 11
  print(x)
  x <- x + 1 ## Aumento el valor de x de a 1 por iteración
}
## imprime los enteros del 1 al 10
## En este caso es igual a un
for(i in 1:10) print(i)
## pero es más útil si no sabemos de antemano cuántas iteraciones
## necesitamos realizar...
 
## Ejemplo:
## Esta serie tiende a cero cuando n tiende a infinito
## f( n ) = f(n - 1) / n
## f( 0 ) = 5
## Va a tomar los valores:
## f(0)=5, f(1)=5, f(2)=5/2, f(3)=(5/2)/3, f(4)=((5/2)/3)/4, ...= 5
## Para calcular los sucesivos valores de la serie, llegando hasta un valor
## menor a 0.001 (o sea: f( n ) < 0.001)
f <- 5 ## Valor inicial
n <- 0
while(f > 0.001) {
  n <- n + 1
  f <- f / n
  print(f)
}
f ## ¿A qué número llegó? (¿qué tan cerca del cero?)
n ## ¿Cuántas iteraciones fueron necesarias?
## La cantidad de iteraciones depende del valor inicial de f
## (probar con 100, 1000)

Created by Pretty R at inside-R.org

2 comentarios:

  1. Muy buen tutorial!!
    Justamente tengo algunos problemas con los ciclos en R

    :D Saludos

    ResponderEliminar
  2. Cómo podría hallar los números primos del 1 al 20 con el comando WHILE?

    ResponderEliminar