Tu web de informática

atras

7. Funciones while y for

adelante

Por último, antes de meternos de lleno con el php específico para las bases de datos MySQL, vamos a ver otras dos funciones básicas del mismo tipo que if pero que nos permiten crear bucles. Para quien no lo sepa, un bucle es una repetición de comandos un número determinado de veces.

While

El comando while tiene la siguiente estructura:

while (condición) {comandos}

El observador verá que es la misma estructura que el if, aunque el funcionamiento no es el mismo. Este comando lo que hace es verificar la condición, si se cumple ejecuta los comandos, y una vez ejecutados vuelve a verificar la condición y si se cumple otra vez los comandos, y así hasta que no se cumpla la condición, que ya se sale del bucle (ya no se repite más y sigue con lo que haya después del while).

Ahora bien, ¿Qué pasaría si pongo una condición que siempre se cumple? Por ejemplo si pongo 1>0, que lógicamente siempre es verdad. En dicho caso habría un bucle infinito que nunca terminaría y entonces el código tampoco terminaría nunca. Hay que tener cuidado de poner condiciones que se dejen de cumplir alguna vez (ahora vereis cómo), porque si no el código entraría en dicho bucle infinito y no funcionaría.

Vamos a poner un ejemplo. Nosotros tenemos una variable $num con un número positivo, y queremos que nos aparezca en pantalla todos los números que haya entre 0 y ese número, un número por línea. Entonces ese código se haría así (ahora lo explico):

$cont=0;
while ($cont<=$num)
{echo $cont."<br />";
$cont=$cont+1;}

Supongamos que el número vale 5. Lo que hemos hecho es crear una variable que cuente y que se inicie en 0, llamada $cont. Después vemos si es menor o igual que el número $num, que en este caso lo es, y lo que hace es escribir en pantalla la variable $cont (escribe un 0 y un salto de línea) e incrementarla en 1. Después vuelve a verificar sin $cont es menor o igual que $num, y como lo es escribe un 1, luego un 2, luego un 3, luego un 4 y luego un 5. Cuando escribe un 5 al incrementar $cont éste pasa a valer 6, y por lo tanto se deja de cumplir la condición y ahí termina el while.

Os dejo como ejercicio para que penseis un programa que haga lo mismo que antes pero que sólo escriba los números pares menores que $num.

For

El comando for nos sirve también para crear un bucle, pero de una forma distinta al while. Su estructura es ésta:

for (cond1; cond2; cond3) {comandos}

El comando for ejecuta la condición cond1 justo antes de comenzar el bucle. Una vez ejecutada verifica cond2, y si se cumple ejecuta los comandos y si no se sale del bucle. Una vez ejecutados los comandos ejecuta cond3, y vuelve a verificar cond2, y si se cumple ejecuta los comandos y si no se sale del bucle. Después vuelve a ejecutar cond3 y a verificar cond2 y así hasta que salga del bucle. De esta forma cond1 sólo se ejecuta en el primer bucle antes de verificar cond2, y cond3 en el resto de bucles antes de verificar cond2. Para que lo entendais os pongo este ejemplo:

for ($a=0; $a<=5; $a=$a+1)
{echo $a."<br>"}

Este código le da un valor inicial a $a de 0, y lo que hace es ir ejecutando los comandos incrementando cada vez $a en 1 hasta llegar a 5. De esta forma ejecuta el comando para $a igual a 0, 1, 2, 3, 4 y 5.

Por último os dejo unos ejercicios por si quereis practicar (si teneis curiosidad y no los conseguís hacer podeis preguntar en el foro. Aunque no resulta necesario saber hacerlos siempre te puede dar un poco de práctica y sobre todo capacidad de pensar cómo resolver un problema, que en muchos casos la puedes necesitar cuando quieres un código php para tu web que haga algo en concreto):

  1. Tenemos un vector $nums de 6 componentes numéricas cuyos índices son numéricos empezando por 0 hasta llegar a 5 (en total suman 6 componentes). Queremos calcular el número de componentes nulas que tiene ese vector y guardarlo en una variable $ceros. Podeis hacer este ejecicio tanto usando un while como usando un for.
  2. La sucesión de Fibonnaci tiene de dos primeros términos el 0 y el 1, y las siguientes componentes son la suma de las dos anteriores (0,1,1,2,3,5,8,...). Tenemos una variable $a numérica positiva y mayor que 2 y queremos calcular los $a primeros términos de la sucesión de Fibonnaci. Para ello os doy como pista que vayais guardando las componentes en un vector, que metais las dos primeras componentes antes de empezar el bucle, y que hagais un bucle que recorra desde 3 hasta $a para conseguir el resto de términos.

  • Autor: Juanma (Administrador de Tu web de informática)

Si tienes alguna pregunta que hacernos tienes el foro a tu disposición.

atras
adelante

Volver a crear webs>>


Creada el 14/10/10 11:09
Copyright © - Todos los derechos reservados - Página creada por Juanma