21 Octubre 2009
Aquí está nuestra joyita. El bucle for.
No tiene nada del otro mundo. No se necesitan conocimientos avanzados ni una mente privilegiada para entenderlo, pero lo curioso es que a la gente le cuesta pillarlo. Tengo compañeros de clase que tardaron semanas, mientras que otros lo entendimos en días. Yo creo que es cuestión de práctica. Hacer muchos programitas que usen for, hacer cambios en los programas y ver qué resultados cambian. De esta forma, sacais vuestras propias conclusiones.
Supongo que la dificultad está en que en la vida real no estamos acostumbrados a pensar en bucles, de ahí que al principio nos cueste. La clave está en practicar. Una vez se domina el for, ya no hay nada mucho más difícil, pues ye la has pillado la lógica al php, y cualquier cosa nueva que veas, la aprendes al instante.
El bucle for no se diferencia demasiado del buble while. Es más, con el bucle while se puede hacer lo mismo que con el bucle for, pero con más lineas.
El bucle FOR: Su forma.
for(inicializamos, condición del bucle, actualizamos){
instrucciones del bucle;
}
El bucle for se suele iniciar una variable contador, luego se pone la condición sobre esa variable, y luego se actualiza esa variable.
Por ejemplo, vamos a utilizar el bucle for para hacer la tabla de multiplicar del 2.
Explicación:
for($i=0... -> Mientras que los bucles while suelen utilizarse para hacer repeticiones que terminan a causa de un cambio en la condición, los bucles for se usan más a modo contador, es decir, las condiciones, aunque pueden ser las mismas que en un while, suelen ser más para saber el número de repeteciones del bucle y limitar este número. Así pues, iniciamos una variable contador a cero, para empezar con la repetición cero.
Nota: En programación, es muy frecuente empezar a contar desde cero y no desde uno, debido, en parte, a que la primera posición de los vectores (arrays) es la cero.
Así pues, inicializamos el bucle, con una variable que funciona como contador, la cual hemos llamado $i (lo normal es usar $i, pero puedes poner cualquier nombre que te de la gana). Esta variable irá incrementando con cada iteración del bucle, por lo que llevará la cuenta de las repeticiones del bucle, y la utilizaremos para condicionar el número de repeticiones del bucle for. Ahí es donde entra la segunda parte.
for($i=0;$i<=10;...
El segundo elemento del bucle for (hay 3 elementos, separados por un punto y coma (;) cada uno) es el que condiciona el bucle for, es decir, es la condición que ha de cumplirse (ha de ser cierta) para que el código de dentro del bucle se ejecute.
Esta es la parte donde más errores puede haber al principio, por no saber qué condición poner. No hay ningún truco para aprender qué condición poner en cada caso. La única forma es hacer bucles y más bucles y ver si se repiten el número de veces que esperábais. Si no lo hace, cambiar la condición hasta averiguar por vosotros mismos la condición necesaria.
Siempre ayuda hacer una traza del bucle, la cual ya comentamos en la entrada anterior Bucles WHILE.
En nuestro caso, queremos hacer una tabla que multiplique desde el cero hasta el 10. Si contais con las manitas, vereis que de cero a diez no hay diez, si no once números, por tanto, necesitamos once iteraciones.
Haciendo la traza (solo al principio, luego de cabeza ya sabreis hacerlo de forma directa) podemos deducir cual debe ser la condición para que el bucle se repita las veces necesarias para completar la tabla de multiplicar.
| Traza del bucle FOR |
| Iteración | $i | operación |
| 1 | 0 | 2*0 |
| 2 | 1 | 2*1 |
| 3 | 2 | 2*2 |
| 4 | 3 | 2*3 |
| 5 | 4 | 2*4 |
| 6 | 5 | 2*5 |
| 7 | 6 | 2*6 |
| 8 | 7 | 2*7 |
| 9 | 8 | 2*8 |
| 10 | 9 | 2*9 |
| 11 | 10 | 2*10 |
Sabemos que necesitamos once iteraciones, ahora vamos a ver cómo se logran.
El bucle for primero comprueba la condición y luego ejecuta el código, caso de ser cierta la condición. Por tanto, si ponemos como condión $i menor que 10 ($i<10) cuando $i valga 10, no se cumple la condición (pues $i no sería menor, sería igual), así que el bucle se repite hasta que $i sea igual a nueve. De cero a nueve hay diez números, diez iteraciones, pero nosotros queremos once. Hay dos formas de lograrlas:
- Cambiamos $i<10 por $i<11, es decir, aumentando uno el valor máximo de la condición, aumentamos en uno el número de repeticiones del bucle.
- Cambiamos $i<10 por $i<=10. Esta es la que hemos usado. La expresión "<=" quiere decir "menor o igual", es decir, mientras sea menor y también mientras sea igual, por tanto, el bucle no termina cuando $i vale diez, si no cuando vale once, por tanto, el número de repeticiones es de once.
Como ya he mencionado antes, esto puede resultar un poco lioso. Es lo normal y haciendo unos cuantos bucles se le pilla el truquillo. No es difícil, pero es distinto a nuestra forma de pensar. Nosotros no pensamos en bucles y además contamos a partir del uno. Hay que cambiar esa mentalidad, eso es todo.
Los bucles for se utilizan mucho para recorrer vectores, los cuales veremos más adelante.
Otro ejemplo de bucle for:
Esta vez, queremos que muestre los naturales, por tanto, el cero no debe mostrarse, así que $i la inicializamos en uno y no en cero, como el caso anterior. Hay que tener esto claro: $i será nuestro contador y lo podemos inicializar como nos de la gana, como si queremos empezar con 5.
Al igual que $i++ le suma uno al valor que hay en $i, $i-- se lo resta. Un ejemplo de esto con un bucle for:
Como ya hemos dicho, el bucle for consta de tres partes: inicialización|condición|actualización y esto lo hemos visto hasta ahora con una única variable, pero realmente puedes inicializar y actualizar cuantas variables quieras. Para inicializar o actualizar más de una variable, estas deben ir separadas por una coma (,).
Muy buena la ayuda, me gusta la maner...
Espero que no les parezca dificil, pu...
nose
He intentado usar wordpress para el b...