martes, 8 de septiembre de 2009

R: Sentencia de Control While

En este apartado, estudiaremos la sentencia de control de repetición while, una sentencia clásica de control de flujo.

En las estructuras de repetición, un trozo de código se repite de forma consecutiva mientras se cumpla la condición definida.

La diferencia que existen entre la sentencia de control for y la while es que, mientras que en la for, se repite un trozo de código determinado un número de veces ya establecido de antemano, en el bucle while, se repiten mientras se cumpla la condición establecida.

La sintaxis de la sentencia de control while, es la siguiente:

while(condición)
{
expresión 1
expresión 2
···
expresión N
}

Para la condición, podemos emplear los siguientes parámetros binarios:
  • Menor que: Cuyo símbolo es: '<.'
  • Mayor que: Cuyo símbolo es: '>'
  • Igual que: Cuyo símbolo es: '='
  • Menor o igual que: Cuyo símbolo es: '<='
  • Mayor o igual que: Cuyo símbolo es: '>='
  • Distinto que: Cuyo símbolo es: '!='

Por ejemplo, empleamos la función while para que muestre por pantalla el valor de la variable x hasta que sea menor que 11:

> x <- 0
> while(x < 11){
+ print(x)
+ x <- x+1
+ }


Dando como resultado:

[1] 0
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10


Podemos comprobar, que la función da cómo salida lo que queríamos que hiciera.

En la condición, puede haber multíples parámetros de análisis, por ejemplo, vamos a usar el ejemplo anterior añadiéndole el parámetro de que también termine de ejecutar el bucle while si el número x es impar:

> while(x < 11 && x%%2 == 0){
+ print(x)
+ x <- x + 1
+ }


Comprobamos la función diseñada:

[1] 0

La función funciona tal y cómo esperábamos, sólo representa el número 0 ya que el siguiente, el 1, es un número impar.

R dispone en su ayuda un ilustrativo manual para que podamos aundar más la sentencia de control de repetición:

> ?"while"

En conclusión, las sentencias de control de repetición mediante el comando while, es de gran utilidad para complemento del diseño de nuestras funciones, y lo que es más importante, R dispone de forma fácil su comprensión y empleo.

1 comentarios:

Anónimo dijo...

Hola, tengo una duda sobre la sentencia while.

Tengo un vector x y otro z, cuando una comparación por ejemplo:

while(x[i]!=z[j])
{
print("Distinto")
i<-i+1
j<-j+1
}

while se encuentra dentro de un for con la longitud de lo vectores que debe ser igual.
Sale el siguiente error:

Error en while (aux1[i]!=aux[h]) { :
valor ausente donde TRUE/FALSE es necesario

La verdad que he probado varias opciones pero nada.
Un saludo y gracias.